diff --git a/.vscode/settings.json b/.vscode/settings.json index 54dc05c7f..c27d01a76 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,7 +2,13 @@ { // Carácter predeterminado de final de línea. "files.eol": "\n", - "editor.codeActionsOnSave": { - "source.fixAll.eslint": true - } + "editor.bracketPairColorization.enabled": true, + "editor.guides.bracketPairs": true, + "editor.formatOnSave": true, + "editor.defaultFormatter": "dbaeumer.vscode-eslint", + "editor.codeActionsOnSave": ["source.fixAll.eslint"], + "eslint.validate": [ + "javascript", + "json" + ] } \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index b42249099..a59725f77 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,32 +1,43 @@ -FROM debian:stretch-slim +FROM debian:bullseye-slim ENV TZ Europe/Madrid ARG DEBIAN_FRONTEND=noninteractive + +# NodeJs + RUN apt-get update \ && apt-get install -y --no-install-recommends \ curl \ ca-certificates \ gnupg2 \ - libfontconfig \ - && apt-get -y install xvfb gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 \ - libdbus-1-3 libexpat1 libfontconfig1 libgbm1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 \ - libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 \ - libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 \ - libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget \ - && curl -sL https://deb.nodesource.com/setup_12.x | bash - \ + && curl -fsSL https://deb.nodesource.com/setup_14.x | bash - \ + && apt-get install -y --no-install-recommends nodejs \ + && npm install -g npm@8.19.2 + +# Puppeteer + +RUN apt-get update \ && apt-get install -y --no-install-recommends \ - nodejs \ - && apt-get purge -y --auto-remove \ - gnupg2 \ + libfontconfig lftp xvfb gconf-service libasound2 libatk1.0-0 libc6 \ + libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgbm1 \ + libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 \ + libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 \ + libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 \ + libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 \ + fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget \ && rm -rf /var/lib/apt/lists/* \ && npm -g install pm2 +# Salix + WORKDIR /salix + +COPY print/package.json print/package-lock.json print/ +RUN npm --prefix ./print install --omit=dev ./print + COPY package.json package-lock.json ./ COPY loopback/package.json loopback/ -COPY print/package.json print/ -RUN npm install --only=prod -RUN npm --prefix ./print install --only=prod ./print +RUN npm install --omit=dev COPY loopback loopback COPY back back diff --git a/Jenkinsfile b/Jenkinsfile index 03ac84de3..5a8ff39c5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -62,13 +62,13 @@ pipeline { } } } - // stage('Backend') { - // steps { - // nodejs('node-v14') { - // sh 'gulp launchBackTest --ci' - // } - // } - // } + // stage('Backend') { + // steps { + // nodejs('node-v14') { + // sh 'npm run test:back:ci' + // } + // } + // } } } stage('Build') { diff --git a/README.md b/README.md index 1e3ad5e9e..f73a8551b 100644 --- a/README.md +++ b/README.md @@ -54,17 +54,17 @@ $ gulp docker For client-side unit tests run from project's root. ``` -$ jest +$ npm run test:front ``` For server-side unit tests run from project's root. ``` -$ gulp backTest +$ npm run test:back ``` For end-to-end tests run from project's root. ``` -$ gulp e2e +$ npm run test:e2e ``` ## Visual Studio Code extensions diff --git a/back/helpers.spec.js b/back/helpers.spec.js new file mode 100644 index 000000000..ba8936d41 --- /dev/null +++ b/back/helpers.spec.js @@ -0,0 +1,5 @@ +const baseTime = null; // new Date(2022, 0, 19, 8, 0, 0, 0); +if (baseTime) { + jasmine.clock().install(); + jasmine.clock().mockDate(baseTime); +} diff --git a/back/methods/account/acl.js b/back/methods/account/acl.js index c1dcdc11b..bc1990e1d 100644 --- a/back/methods/account/acl.js +++ b/back/methods/account/acl.js @@ -23,7 +23,13 @@ module.exports = Self => { let models = Self.app.models; let user = await models.Account.findById(userId, { - fields: ['id', 'name', 'nickname', 'email'] + fields: ['id', 'name', 'nickname', 'email', 'lang'], + include: { + relation: 'userConfig', + scope: { + fields: ['darkMode'] + } + } }); let roles = await models.RoleMapping.find({ diff --git a/back/methods/account/change-password.js b/back/methods/account/change-password.js index 25b63b9a8..c0956b193 100644 --- a/back/methods/account/change-password.js +++ b/back/methods/account/change-password.js @@ -5,17 +5,17 @@ module.exports = Self => { accepts: [ { arg: 'id', - type: 'Number', + type: 'number', description: 'The user id', http: {source: 'path'} }, { arg: 'oldPassword', - type: 'String', + type: 'string', description: 'The old password', required: true }, { arg: 'newPassword', - type: 'String', + type: 'string', description: 'The new password', required: true } diff --git a/back/methods/account/privileges.js b/back/methods/account/privileges.js new file mode 100644 index 000000000..5c5e7409d --- /dev/null +++ b/back/methods/account/privileges.js @@ -0,0 +1,78 @@ +const UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.remoteMethodCtx('privileges', { + description: 'Change role and hasGrant if user has privileges', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The user id', + http: {source: 'path'} + }, + { + arg: 'roleFk', + type: 'number', + description: 'The new role for user', + }, + { + arg: 'hasGrant', + type: 'boolean', + description: 'Whether to has grant' + } + ], + http: { + path: `/:id/privileges`, + verb: 'POST' + } + }); + + Self.privileges = async function(ctx, id, roleFk, hasGrant, options) { + if (!(hasGrant != null || roleFk)) return; + + const models = Self.app.models; + const userId = ctx.req.accessToken.userId; + + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const user = await models.Account.findById(userId, {fields: ['hasGrant']}, myOptions); + + const userToUpdate = await models.Account.findById(id, { + fields: ['id', 'name', 'hasGrant', 'roleFk', 'password'], + include: { + relation: 'role', + scope: { + fields: ['name'] + } + } + }, myOptions); + + if (!user.hasGrant) + throw new UserError(`You don't have grant privilege`); + + const hasRoleFromUser = await models.Account.hasRole(userId, userToUpdate.role().name, myOptions); + + if (!hasRoleFromUser) + throw new UserError(`You don't own the role and you can't assign it to another user`); + + if (hasGrant != null) + userToUpdate.hasGrant = hasGrant; + + if (roleFk) { + const role = await models.Role.findById(roleFk, {fields: ['name']}, myOptions); + const hasRole = await models.Account.hasRole(userId, role.name, myOptions); + + if (!hasRole) + throw new UserError(`You don't own the role and you can't assign it to another user`); + + userToUpdate.roleFk = roleFk; + } + + await userToUpdate.save(userToUpdate); + await models.UserAccount.sync(userToUpdate.name); + }; +}; diff --git a/back/methods/account/set-password.js b/back/methods/account/set-password.js index fc54b5abe..ab4d3b3fe 100644 --- a/back/methods/account/set-password.js +++ b/back/methods/account/set-password.js @@ -1,16 +1,15 @@ - module.exports = Self => { Self.remoteMethod('setPassword', { description: 'Sets the user password', accepts: [ { arg: 'id', - type: 'Number', + type: 'number', description: 'The user id', http: {source: 'path'} }, { arg: 'newPassword', - type: 'String', + type: 'string', description: 'The new password', required: true } diff --git a/back/methods/account/specs/change-password.spec.js b/back/methods/account/specs/change-password.spec.js index 9f1130df5..17fadb3c6 100644 --- a/back/methods/account/specs/change-password.spec.js +++ b/back/methods/account/specs/change-password.spec.js @@ -1,9 +1,12 @@ -const app = require('vn-loopback/server/server'); +const {models} = require('vn-loopback/server/server'); describe('account changePassword()', () => { it('should throw an error when old password is wrong', async() => { - let req = app.models.Account.changePassword(null, 1, 'wrongOldPass', 'newPass'); + let err; + await models.Account.changePassword(1, 'wrongPassword', 'nightmare.9999') + .catch(error => err = error.sqlMessage); - await expectAsync(req).toBeRejected(); + expect(err).toBeDefined(); + expect(err).toEqual('Invalid password'); }); }); diff --git a/back/methods/account/specs/privileges.spec.js b/back/methods/account/specs/privileges.spec.js new file mode 100644 index 000000000..edfe0f03f --- /dev/null +++ b/back/methods/account/specs/privileges.spec.js @@ -0,0 +1,115 @@ +const models = require('vn-loopback/server/server').models; + +describe('account privileges()', () => { + const employeeId = 1; + const developerId = 9; + const sysadminId = 66; + const itBossId = 104; + const rootId = 100; + const clarkKent = 1103; + + it('should throw an error when user not has privileges', async() => { + const ctx = {req: {accessToken: {userId: developerId}}}; + const tx = await models.Account.beginTransaction({}); + + let error; + try { + const options = {transaction: tx}; + + await models.Account.privileges(ctx, employeeId, null, true, options); + + await tx.rollback(); + } catch (e) { + error = e; + await tx.rollback(); + } + + expect(error.message).toContain(`You don't have grant privilege`); + }); + + it('should throw an error when user has privileges but not has the role', async() => { + const ctx = {req: {accessToken: {userId: sysadminId}}}; + const tx = await models.Account.beginTransaction({}); + + let error; + try { + const options = {transaction: tx}; + + await models.Account.privileges(ctx, employeeId, rootId, null, options); + + await tx.rollback(); + } catch (e) { + error = e; + await tx.rollback(); + } + + expect(error.message).toContain(`You don't own the role and you can't assign it to another user`); + }); + + it('should throw an error when user has privileges but not has the role from user', async() => { + const ctx = {req: {accessToken: {userId: sysadminId}}}; + const tx = await models.Account.beginTransaction({}); + + let error; + try { + const options = {transaction: tx}; + + await models.Account.privileges(ctx, itBossId, developerId, null, options); + + await tx.rollback(); + } catch (e) { + error = e; + await tx.rollback(); + } + + expect(error.message).toContain(`You don't own the role and you can't assign it to another user`); + }); + + it('should change role', async() => { + const ctx = {req: {accessToken: {userId: sysadminId}}}; + const tx = await models.Account.beginTransaction({}); + + const options = {transaction: tx}; + const agency = await models.Role.findOne({ + where: { + name: 'agency' + } + }, options); + + let error; + let result; + try { + await models.Account.privileges(ctx, clarkKent, agency.id, null, options); + result = await models.Account.findById(clarkKent, null, options); + + await tx.rollback(); + } catch (e) { + error = e; + await tx.rollback(); + } + + expect(error).not.toBeDefined(); + expect(result.roleFk).toEqual(agency.id); + }); + + it('should change hasGrant', async() => { + const ctx = {req: {accessToken: {userId: sysadminId}}}; + const tx = await models.Account.beginTransaction({}); + + let error; + let result; + try { + const options = {transaction: tx}; + await models.Account.privileges(ctx, clarkKent, null, true, options); + result = await models.Account.findById(clarkKent, null, options); + + await tx.rollback(); + } catch (e) { + error = e; + await tx.rollback(); + } + + expect(error).not.toBeDefined(); + expect(result.hasGrant).toBeTruthy(); + }); +}); diff --git a/back/methods/chat/getServiceAuth.js b/back/methods/chat/getServiceAuth.js new file mode 100644 index 000000000..827092109 --- /dev/null +++ b/back/methods/chat/getServiceAuth.js @@ -0,0 +1,55 @@ +const axios = require('axios'); +const tokenLifespan = 10; +module.exports = Self => { + Self.remoteMethodCtx('getServiceAuth', { + description: 'Authenticates with the service and request a new token', + accessType: 'READ', + accepts: [], + returns: { + type: 'object', + root: true + }, + http: { + path: `/getServiceAuth`, + verb: 'GET' + } + }); + + Self.getServiceAuth = async() => { + if (!this.login) + this.login = await requestToken(); + + if (!this.login) return; + + if (Date.now() > this.login.expires) + this.login = await requestToken(); + + return this.login; + }; + + /** + * Requests a new Rocketchat token + */ + async function requestToken() { + const models = Self.app.models; + const chatConfig = await models.ChatConfig.findOne(); + + const {data} = await axios.post(`${chatConfig.api}/login`, { + user: chatConfig.user, + password: chatConfig.password + }); + + const requestData = data.data; + if (requestData) { + return { + host: chatConfig.host, + api: chatConfig.api, + auth: { + userId: requestData.userId, + token: requestData.authToken + }, + expires: Date.now() + (1000 * 60 * tokenLifespan) + }; + } + } +}; diff --git a/back/methods/chat/notifyIssues.js b/back/methods/chat/notifyIssues.js index b0a42b7be..902ee59cd 100644 --- a/back/methods/chat/notifyIssues.js +++ b/back/methods/chat/notifyIssues.js @@ -8,7 +8,7 @@ module.exports = Self => { }, http: { path: `/notifyIssues`, - verb: 'GET' + verb: 'POST' } }); diff --git a/back/methods/chat/send.js b/back/methods/chat/send.js index 209dfb035..c5c8feead 100644 --- a/back/methods/chat/send.js +++ b/back/methods/chat/send.js @@ -1,7 +1,6 @@ -const got = require('got'); module.exports = Self => { Self.remoteMethodCtx('send', { - description: 'Send a RocketChat message', + description: 'Creates a direct message in the chat model for a user or a channel', accessType: 'WRITE', accepts: [{ arg: 'to', @@ -31,121 +30,19 @@ module.exports = Self => { const recipient = to.replace('@', ''); if (sender.name != recipient) { - let {body} = await sendMessage(sender, to, message); - if (body) - body = JSON.parse(body); - else - body = false; + await models.Chat.create({ + senderFk: sender.id, + recipient: to, + dated: new Date(), + checkUserStatus: 0, + message: message, + status: 0, + attempts: 0 + }); - return body; + return true; } return false; }; - - async function sendMessage(sender, channel, message) { - const config = await getConfig(); - const avatar = `${config.host}/avatar/${sender.name}`; - const uri = `${config.api}/chat.postMessage`; - - return sendAuth(uri, { - 'channel': channel, - 'avatar': avatar, - 'alias': sender.nickname, - 'text': message - }).catch(async error => { - if (error.statusCode === 401) { - this.auth = null; - - return sendMessage(sender, channel, message); - } - - throw new Error(error.message); - }); - } - - /** - * Returns a rocketchat token - * @return {Object} userId and authToken - */ - async function getAuthToken() { - if (!this.auth || this.auth && !this.auth.authToken) { - const config = await getConfig(); - const uri = `${config.api}/login`; - let {body} = await send(uri, { - user: config.user, - password: config.password - }); - - if (body) { - body = JSON.parse(body); - this.auth = body.data; - } - } - - return this.auth; - } - - /** - * Returns a rocketchat config - * @return {Object} Auth config - */ - async function getConfig() { - if (!this.chatConfig) { - const models = Self.app.models; - - this.chatConfig = await models.ChatConfig.findOne(); - } - - return this.chatConfig; - } - - /** - * Send unauthenticated request - * @param {*} uri - Request uri - * @param {*} params - Request params - * @param {*} options - Request options - * - * @return {Object} Request response - */ - async function send(uri, params, options = {}) { - if (process.env.NODE_ENV !== 'production') { - return new Promise(resolve => { - return resolve({ - body: JSON.stringify( - {statusCode: 200, message: 'Fake notification sent'} - ) - }); - }); - } - - const defaultOptions = { - form: params - }; - - if (options) Object.assign(defaultOptions, options); - - return got.post(uri, defaultOptions); - } - - /** - * Send authenticated request - * @param {*} uri - Request uri - * @param {*} body - Request params - * - * @return {Object} Request response - */ - async function sendAuth(uri, body) { - const login = await getAuthToken(); - const options = { - headers: {} - }; - - if (login) { - options.headers['X-Auth-Token'] = login.authToken; - options.headers['X-User-Id'] = login.userId; - } - - return send(uri, body, options); - } }; diff --git a/back/methods/chat/sendCheckingPresence.js b/back/methods/chat/sendCheckingPresence.js index fcde20130..3bc022429 100644 --- a/back/methods/chat/sendCheckingPresence.js +++ b/back/methods/chat/sendCheckingPresence.js @@ -1,21 +1,21 @@ module.exports = Self => { Self.remoteMethodCtx('sendCheckingPresence', { - description: 'Sends a RocketChat message to a working worker or department channel', + description: 'Creates a message in the chat model checking the user status', accessType: 'WRITE', accepts: [{ arg: 'workerId', - type: 'Number', + type: 'number', required: true, - description: 'The worker id of the destinatary' + description: 'The recipient user id' }, { arg: 'message', - type: 'String', + type: 'string', required: true, description: 'The message' }], returns: { - type: 'Object', + type: 'object', root: true }, http: { @@ -33,30 +33,26 @@ module.exports = Self => { Object.assign(myOptions, options); const models = Self.app.models; - const account = await models.Account.findById(recipientId, null, myOptions); const userId = ctx.req.accessToken.userId; + const sender = await models.Account.findById(userId); + const recipient = await models.Account.findById(recipientId, null, myOptions); + // Prevent sending messages to yourself if (recipientId == userId) return false; - if (!account) + if (!recipient) throw new Error(`Could not send message "${message}" to worker id ${recipientId} from user ${userId}`); - const query = `SELECT worker_isWorking(?) isWorking`; - const [result] = await Self.rawSql(query, [recipientId], myOptions); + await models.Chat.create({ + senderFk: sender.id, + recipient: `@${recipient.name}`, + dated: new Date(), + checkUserStatus: 1, + message: message, + status: 0, + attempts: 0 + }); - if (!result.isWorking) { - const workerDepartment = await models.WorkerDepartment.findById(recipientId, { - include: { - relation: 'department' - } - }, myOptions); - const department = workerDepartment && workerDepartment.department(); - const channelName = department && department.chatName; - - if (channelName) - return Self.send(ctx, `#${channelName}`, `@${account.name} ➔ ${message}`); - } - - return Self.send(ctx, `@${account.name}`, message); + return true; }; }; diff --git a/back/methods/chat/sendQueued.js b/back/methods/chat/sendQueued.js new file mode 100644 index 000000000..66fbfcdc5 --- /dev/null +++ b/back/methods/chat/sendQueued.js @@ -0,0 +1,170 @@ +const axios = require('axios'); +module.exports = Self => { + Self.remoteMethodCtx('sendQueued', { + description: 'Send a RocketChat message', + accessType: 'WRITE', + accepts: [], + returns: { + type: 'object', + root: true + }, + http: { + path: `/sendQueued`, + verb: 'POST' + } + }); + + Self.sendQueued = async() => { + const models = Self.app.models; + const maxAttempts = 3; + const sentStatus = 1; + const errorStatus = 2; + + const chats = await models.Chat.find({ + where: { + status: {neq: sentStatus}, + attempts: {lt: maxAttempts} + } + }); + + for (let chat of chats) { + if (chat.checkUserStatus) { + try { + await Self.sendCheckingUserStatus(chat); + await updateChat(chat, sentStatus); + } catch (error) { + await updateChat(chat, errorStatus, error); + } + } else { + try { + await Self.sendMessage(chat.senderFk, chat.recipient, chat.message); + await updateChat(chat, sentStatus); + } catch (error) { + await updateChat(chat, errorStatus, error); + } + } + } + }; + + /** + * Check user status in Rocket + * + * @param {object} chat - The sender id + * @return {Promise} - The request promise + */ + Self.sendCheckingUserStatus = async function sendCheckingUserStatus(chat) { + const models = Self.app.models; + + const recipientName = chat.recipient.slice(1); + const recipient = await models.Account.findOne({ + where: { + name: recipientName + } + }); + + const {data} = await Self.getUserStatus(recipient.name); + if (data) { + if (data.status === 'offline' || data.status === 'busy') { + // Send message to department room + const workerDepartment = await models.WorkerDepartment.findById(recipient.id, { + include: { + relation: 'department' + } + }); + const department = workerDepartment && workerDepartment.department(); + const channelName = department && department.chatName; + + if (channelName) + return Self.sendMessage(chat.senderFk, `#${channelName}`, `@${recipient.name} ➔ ${chat.message}`); + else + return Self.sendMessage(chat.senderFk, `@${recipient.name}`, chat.message); + } else + return Self.sendMessage(chat.senderFk, `@${recipient.name}`, chat.message); + } + }; + + /** + * Send a rocket message + * + * @param {object} senderFk - The sender id + * @param {string} recipient - The user (@) or channel (#) to send the message + * @param {string} message - The message to send + * @return {Promise} - The request promise + */ + Self.sendMessage = async function sendMessage(senderFk, recipient, message) { + if (process.env.NODE_ENV !== 'production') { + return new Promise(resolve => { + return resolve({ + statusCode: 200, + message: 'Fake notification sent' + }); + }); + } + + const models = Self.app.models; + const sender = await models.Account.findById(senderFk); + + const login = await Self.getServiceAuth(); + const avatar = `${login.host}/avatar/${sender.name}`; + + const options = { + headers: { + 'X-Auth-Token': login.auth.token, + 'X-User-Id': login.auth.userId + }, + }; + + return axios.post(`${login.api}/chat.postMessage`, { + 'channel': recipient, + 'avatar': avatar, + 'alias': sender.nickname, + 'text': message + }, options); + }; + + /** + * Update status and attempts of a chat + * + * @param {object} chat - The chat + * @param {string} status - The new status + * @param {string} error - The error + * @return {Promise} - The request promise + */ + async function updateChat(chat, status, error) { + return chat.updateAttributes({ + status: status, + attempts: ++chat.attempts, + error: error + }); + } + + /** + * Returns the current user status on Rocketchat + * + * @param {string} username - The recipient user name + * @return {Promise} - The request promise + */ + Self.getUserStatus = async function getUserStatus(username) { + if (process.env.NODE_ENV !== 'production') { + return new Promise(resolve => { + return resolve({ + data: { + status: 'online' + } + }); + }); + } + + const login = await Self.getServiceAuth(); + + const options = { + params: {username}, + headers: { + 'X-Auth-Token': login.auth.token, + 'X-User-Id': login.auth.userId + }, + }; + + return axios.get(`${login.api}/users.getStatus`, options); + }; +}; diff --git a/back/methods/chat/spec/notifyIssue.spec.js b/back/methods/chat/spec/notifyIssue.spec.js index 96117c2c0..e20d43142 100644 --- a/back/methods/chat/spec/notifyIssue.spec.js +++ b/back/methods/chat/spec/notifyIssue.spec.js @@ -13,10 +13,9 @@ describe('Chat notifyIssue()', () => { spyOn(chatModel, 'send').and.callThrough(); spyOn(osTicketModel, 'rawSql').and.returnValue([]); - const response = await chatModel.notifyIssues(ctx); + await chatModel.notifyIssues(ctx); expect(chatModel.send).not.toHaveBeenCalled(); - expect(response).toBeUndefined(); }); it(`should return a response calling the send() method`, async() => { @@ -27,16 +26,15 @@ describe('Chat notifyIssue()', () => { username: 'batman', subject: 'Issue title'} ]); + // eslint-disable-next-line max-len const expectedMessage = `@all ➔ There's a new urgent ticket:\r\n[ID: *00001* - Issue title (@batman)](https://cau.verdnatura.es/scp/tickets.php?id=1)`; const department = await app.models.Department.findById(departmentId); let orgChatName = department.chatName; await department.updateAttribute('chatName', 'IT'); - const response = await chatModel.notifyIssues(ctx); + await chatModel.notifyIssues(ctx); - expect(response.statusCode).toEqual(200); - expect(response.message).toEqual('Fake notification sent'); expect(chatModel.send).toHaveBeenCalledWith(ctx, '#IT', expectedMessage); // restores diff --git a/back/methods/chat/spec/send.spec.js b/back/methods/chat/spec/send.spec.js index 2c23bb591..dd07a1342 100644 --- a/back/methods/chat/spec/send.spec.js +++ b/back/methods/chat/spec/send.spec.js @@ -1,18 +1,17 @@ const app = require('vn-loopback/server/server'); describe('Chat send()', () => { - it('should return a "Fake notification sent" as response', async() => { + it('should return true as response', async() => { let ctx = {req: {accessToken: {userId: 1}}}; let response = await app.models.Chat.send(ctx, '@salesPerson', 'I changed something'); - expect(response.statusCode).toEqual(200); - expect(response.message).toEqual('Fake notification sent'); + expect(response).toEqual(true); }); - it('should retrun false as response', async() => { + it('should return false as response', async() => { let ctx = {req: {accessToken: {userId: 18}}}; let response = await app.models.Chat.send(ctx, '@salesPerson', 'I changed something'); - expect(response).toBeFalsy(); + expect(response).toEqual(false); }); }); diff --git a/back/methods/chat/spec/sendCheckingPresence.spec.js b/back/methods/chat/spec/sendCheckingPresence.spec.js index e9c61fd21..5d1a1b3dd 100644 --- a/back/methods/chat/spec/sendCheckingPresence.spec.js +++ b/back/methods/chat/spec/sendCheckingPresence.spec.js @@ -1,46 +1,21 @@ -const app = require('vn-loopback/server/server'); +const models = require('vn-loopback/server/server').models; describe('Chat sendCheckingPresence()', () => { - const today = new Date(); - today.setHours(6, 0); - const ctx = {req: {accessToken: {userId: 1}}}; - const chatModel = app.models.Chat; - const departmentId = 23; - const workerId = 1107; + it('should return true as response', async() => { + const workerId = 1107; - it(`should call send() method with the worker name if he's currently working then return a response`, async() => { - spyOn(chatModel, 'send').and.callThrough(); + let ctx = {req: {accessToken: {userId: 1}}}; + let response = await models.Chat.sendCheckingPresence(ctx, workerId, 'I changed something'); - const timeEntry = await app.models.WorkerTimeControl.create({ - userFk: workerId, - timed: today, - manual: false, - direction: 'in' - }); - - const response = await chatModel.sendCheckingPresence(ctx, workerId, 'I changed something'); - - expect(response.statusCode).toEqual(200); - expect(response.message).toEqual('Fake notification sent'); - expect(chatModel.send).toHaveBeenCalledWith(ctx, '@HankPym', 'I changed something'); - - // restores - await app.models.WorkerTimeControl.destroyById(timeEntry.id); + expect(response).toEqual(true); }); - it(`should call to send() method with the worker department channel if he's not currently working then return a response`, async() => { - spyOn(chatModel, 'send').and.callThrough(); + it('should return false as response', async() => { + const salesPersonId = 18; - const department = await app.models.Department.findById(departmentId); - await department.updateAttribute('chatName', 'cooler'); + let ctx = {req: {accessToken: {userId: 18}}}; + let response = await models.Chat.sendCheckingPresence(ctx, salesPersonId, 'I changed something'); - const response = await chatModel.sendCheckingPresence(ctx, workerId, 'I changed something'); - - expect(response.statusCode).toEqual(200); - expect(response.message).toEqual('Fake notification sent'); - expect(chatModel.send).toHaveBeenCalledWith(ctx, '#cooler', '@HankPym ➔ I changed something'); - - // restores - await department.updateAttribute('chatName', null); + expect(response).toEqual(false); }); }); diff --git a/back/methods/chat/spec/sendQueued.spec.js b/back/methods/chat/spec/sendQueued.spec.js new file mode 100644 index 000000000..bbf5a73c7 --- /dev/null +++ b/back/methods/chat/spec/sendQueued.spec.js @@ -0,0 +1,41 @@ +const models = require('vn-loopback/server/server').models; + +describe('Chat sendCheckingPresence()', () => { + const today = new Date(); + today.setHours(6, 0); + const chatModel = models.Chat; + + it(`should call to sendCheckingUserStatus()`, async() => { + spyOn(chatModel, 'sendCheckingUserStatus').and.callThrough(); + + const chat = { + checkUserStatus: 1, + status: 0, + attempts: 0 + }; + + await chatModel.destroyAll(); + await chatModel.create(chat); + + await chatModel.sendQueued(); + + expect(chatModel.sendCheckingUserStatus).toHaveBeenCalled(); + }); + + it(`should call to sendMessage() method`, async() => { + spyOn(chatModel, 'sendMessage').and.callThrough(); + + const chat = { + checkUserStatus: 0, + status: 0, + attempts: 0 + }; + + await chatModel.destroyAll(); + await chatModel.create(chat); + + await chatModel.sendQueued(); + + expect(chatModel.sendMessage).toHaveBeenCalled(); + }); +}); diff --git a/back/methods/collection/collectionFaults.js b/back/methods/collection/collectionFaults.js deleted file mode 100644 index 395c7e581..000000000 --- a/back/methods/collection/collectionFaults.js +++ /dev/null @@ -1,35 +0,0 @@ -module.exports = Self => { - Self.remoteMethod('collectionFaults', { - description: 'Update sale of a collection', - accessType: 'WRITE', - accepts: [{ - arg: 'shelvingFk', - type: 'String', - required: true, - description: 'The shalving id' - }, { - arg: 'quantity', - type: 'Number', - required: true, - description: 'The quantity to sale' - }, { - arg: 'itemFk', - type: 'Number', - required: true, - description: 'The ticket id' - }], - returns: { - type: 'Object', - root: true - }, - http: { - path: `/collectionFaults`, - verb: 'POST' - } - }); - - Self.collectionFaults = async(shelvingFk, quantity, itemFk) => { - query = `CALL vn.collection_faults(?,?,?)`; - return await Self.rawSql(query, [shelvingFk, quantity, itemFk]); - }; -}; diff --git a/back/methods/collection/setSaleQuantity.js b/back/methods/collection/setSaleQuantity.js new file mode 100644 index 000000000..644c44a60 --- /dev/null +++ b/back/methods/collection/setSaleQuantity.js @@ -0,0 +1,36 @@ +module.exports = Self => { + Self.remoteMethod('setSaleQuantity', { + description: 'Update sale quantity', + accessType: 'WRITE', + accepts: [{ + arg: 'saleId', + type: 'number', + required: true, + description: 'The sale id' + }, + { + arg: 'quantity', + type: 'number', + required: true, + description: 'The quantity to picked' + }], + returns: { + type: 'object', + root: true + }, + http: { + path: `/setSaleQuantity`, + verb: 'POST' + } + }); + + Self.setSaleQuantity = async(saleId, quantity) => { + const models = Self.app.models; + + const sale = await models.Sale.findById(saleId); + return await sale.updateAttributes({ + originalQuantity: sale.quantity, + quantity: quantity + }); + }; +}; diff --git a/back/methods/collection/spec/collectionFauls.spec.js b/back/methods/collection/spec/collectionFauls.spec.js deleted file mode 100644 index 210dcdf63..000000000 --- a/back/methods/collection/spec/collectionFauls.spec.js +++ /dev/null @@ -1,9 +0,0 @@ -const app = require('vn-loopback/server/server'); -describe('collectionFaults()', () => { - it('return shelving afected', async() => { - let response = await app.models.Collection.collectionFaults('UXN', 0, 1); - - expect(response.length).toBeGreaterThan(0); - expect(response[0][0].shelvingFk).toEqual('UXN'); - }); -}); diff --git a/back/methods/collection/spec/getCollection.spec.js b/back/methods/collection/spec/getCollection.spec.js index 5ea042f9d..e87efb4a0 100644 --- a/back/methods/collection/spec/getCollection.spec.js +++ b/back/methods/collection/spec/getCollection.spec.js @@ -2,10 +2,10 @@ const models = require('vn-loopback/server/server').models; describe('ticket getCollection()', () => { it('should return a list of collections', async() => { - let ctx = {req: {accessToken: {userId: 1106}}}; + let ctx = {req: {accessToken: {userId: 1107}}}; let response = await models.Collection.getCollection(ctx); expect(response.length).toBeGreaterThan(0); - expect(response[0].collectionFk).toEqual(1); + expect(response[0].collectionFk).toEqual(3); }); }); diff --git a/back/methods/collection/spec/newCollection.spec.js b/back/methods/collection/spec/newCollection.spec.js index 88d105b4b..6abe73f8e 100644 --- a/back/methods/collection/spec/newCollection.spec.js +++ b/back/methods/collection/spec/newCollection.spec.js @@ -1,8 +1,8 @@ const app = require('vn-loopback/server/server'); -// #3400 analizar que hacer con rutas de back colletion -xdescribe('newCollection()', () => { - it('return a new collection', async() => { +describe('newCollection()', () => { + it('should return a new collection', async() => { + pending('#3400 analizar que hacer con rutas de back collection'); let ctx = {req: {accessToken: {userId: 1106}}}; let response = await app.models.Collection.newCollection(ctx, 1, 1, 1); diff --git a/back/methods/collection/spec/setSaleQuantity.spec.js b/back/methods/collection/spec/setSaleQuantity.spec.js new file mode 100644 index 000000000..5d06a4383 --- /dev/null +++ b/back/methods/collection/spec/setSaleQuantity.spec.js @@ -0,0 +1,16 @@ +const models = require('vn-loopback/server/server').models; + +describe('setSaleQuantity()', () => { + it('should change quantity sale', async() => { + const saleId = 30; + const newQuantity = 10; + + const originalSale = await models.Sale.findById(saleId); + + await models.Collection.setSaleQuantity(saleId, newQuantity); + const updateSale = await models.Sale.findById(saleId); + + expect(updateSale.originalQuantity).toEqual(originalSale.quantity); + expect(updateSale.quantity).toEqual(newQuantity); + }); +}); diff --git a/back/methods/collection/spec/updateCollectionSale.spec.js b/back/methods/collection/spec/updateCollectionSale.spec.js deleted file mode 100644 index 951115e54..000000000 --- a/back/methods/collection/spec/updateCollectionSale.spec.js +++ /dev/null @@ -1,62 +0,0 @@ -const app = require('vn-loopback/server/server'); - -describe('updateCollectionSale()', () => { - it('should return a new collection', async() => { - const sectorOneWarehouseID = 1; - let ctx = {req: {accessToken: {userId: 1106}}}; - ctx.args = { - sale: 1, - originalQuantity: 5, - quantity: 5, - quantityPicked: 5, - ticketFk: 1, - stateFk: 4, - isNicho: false, - shelvingFk: 'UXN', - itemFk: 1, - sectorFk: 1 - }; - let originalSaleTracking = await app.models.SaleTracking.findOne({ - where: { - saleFk: ctx.args.sale, - stateFk: ctx.args.stateFk - } - }); - let itemPlacement = await app.models.ItemPlacement.findOne({ - where: { - itemFk: ctx.args.itemFk, - warehouseFk: sectorOneWarehouseID - } - }); - const originalSale = await app.models.Sale.findById(ctx.args.sale); - const originalItemShelving = await app.models.ItemShelving.findOne({where: {shelvingFk: ctx.args.shelvingFk, itemFk: ctx.args.itemFk}}); - const originalTicketLastState = await app.models.TicketLastState.findById(ctx.args.ticketFk); - - let response = await app.models.Collection.updateCollectionSale(ctx); - - expect(response.length).toBeGreaterThan(0); - expect(response[0][0].id).toEqual(1); - expect(response[0][0].quantity).toEqual(5); - - // restores - if (originalSaleTracking) - await originalSaleTracking.save(); - else { - originalSaleTracking = await app.models.SaleTracking.findOne({ - where: { - saleFk: ctx.args.sale, - stateFk: ctx.args.stateFk - } - }); - await originalSaleTracking.destroy(); - } - await originalSale.save(); - const itemShelvingsToDestroy = await app.models.ItemShelving.find({where: {shelvingFk: ctx.args.shelvingFk, itemFk: ctx.args.itemFk}}); - for (itemShelving of itemShelvingsToDestroy) - await itemShelving.destroy(); - - await originalItemShelving.save(); - await originalTicketLastState.save(); - await itemPlacement.save(); - }); -}); diff --git a/back/methods/collection/updateCollectionSale.js b/back/methods/collection/updateCollectionSale.js deleted file mode 100644 index 608250d18..000000000 --- a/back/methods/collection/updateCollectionSale.js +++ /dev/null @@ -1,90 +0,0 @@ -module.exports = Self => { - Self.remoteMethodCtx('updateCollectionSale', { - description: 'Update sale of a collection', - accessType: 'WRITE', - accepts: [{ - arg: 'sale', - type: 'Number', - required: true, - description: 'The sale id' - }, { - arg: 'originalQuantity', - type: 'Number', - required: true, - description: 'The quantity to sale' - }, - { - arg: 'quantity', - type: 'Number', - required: true, - description: 'The quantity to picked' - }, - { - arg: 'quantityPicked', - type: 'Number', - required: true, - description: 'The quantity to picked' - }, { - arg: 'ticketFk', - type: 'Number', - required: true, - description: 'The ticket id' - }, { - arg: 'stateFk', - type: 'Number', - required: true, - description: 'The state id' - }, { - arg: 'isNicho', - type: 'Boolean', - required: true, - description: 'Determine if sale is picked from nicho or not' - }, { - arg: 'shelvingFk', - type: 'String', - required: false, - description: 'The shelving id' - }, { - arg: 'itemFk', - type: 'Number', - required: true, - description: 'The item id' - }, { - arg: 'sectorFk', - type: 'Number', - required: true, - description: 'The sector id' - }], - returns: { - type: 'Object', - root: true - }, - http: { - path: `/updateCollectionSale`, - verb: 'POST' - } - }); - - Self.updateCollectionSale = async ctx => { - const userId = ctx.req.accessToken.userId; - const args = ctx.args; - - if (args.originalQuantity == args.quantity) { - query = `CALL vn.collection_updateSale(?,?,?,?,?)`; - await Self.rawSql(query, [args.sale, args.originalQuantity, userId, args.stateFk, args.ticketFk]); - } - - if (!args.isNicho) { - query = `CALL vn.collection_faults(?,?,?)`; - await Self.rawSql(query, [args.shelvingFk, args.quantityPicked, args.itemFk]); - } else { - query = `CALL vn.sector_getWarehouse(?)`; - const [result] = await Self.rawSql(query, [args.sectorFk]); - - query = `CALL vn.itemPlacementSave(?,?,?)`; - await Self.rawSql(query, [args.shelvingFk, args.quantityPicked, result[0]['warehouseFk']]); - } - query = `CALL vn.sale_updateOriginalQuantity(?,?)`; - return await Self.rawSql(query, [args.sale, args.quantity]); - }; -}; diff --git a/back/methods/dms/deleteTrashFiles.js b/back/methods/dms/deleteTrashFiles.js new file mode 100644 index 000000000..63d7021c5 --- /dev/null +++ b/back/methods/dms/deleteTrashFiles.js @@ -0,0 +1,68 @@ +const UserError = require('vn-loopback/util/user-error'); +const fs = require('fs-extra'); +const path = require('path'); + +module.exports = Self => { + Self.remoteMethod('deleteTrashFiles', { + description: 'Deletes files that have trash type', + accessType: 'WRITE', + returns: { + type: 'object', + root: true + }, + http: { + path: `/deleteTrashFiles`, + verb: 'POST' + } + }); + + Self.deleteTrashFiles = async options => { + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (process.env.NODE_ENV == 'test') + throw new UserError(`Action not allowed on the test environment`); + + const models = Self.app.models; + const DmsContainer = models.DmsContainer; + + const trashDmsType = await models.DmsType.findOne({ + where: {code: 'trash'} + }, myOptions); + + const date = new Date(); + date.setMonth(date.getMonth() - 4); + + const dmsToDelete = await models.Dms.find({ + where: { + and: [ + {dmsTypeFk: trashDmsType.id}, + {created: {lt: date}} + ] + } + }, myOptions); + + for (let dms of dmsToDelete) { + const pathHash = DmsContainer.getHash(dms.id); + const dmsContainer = await DmsContainer.container(pathHash); + try { + const dstFile = path.join(dmsContainer.client.root, pathHash, dms.file); + await fs.unlink(dstFile); + } catch (err) { + if (err.code != 'ENOENT') + throw err; + } + + await dms.destroy(myOptions); + + const dstFolder = path.join(dmsContainer.client.root, pathHash); + try { + await fs.rmdir(dstFolder); + } catch (err) { + continue; + } + } + }; +}; diff --git a/back/methods/dms/uploadFile.js b/back/methods/dms/uploadFile.js index fb4b2e5b8..a4212b804 100644 --- a/back/methods/dms/uploadFile.js +++ b/back/methods/dms/uploadFile.js @@ -9,35 +9,35 @@ module.exports = Self => { accepts: [ { arg: 'warehouseId', - type: 'Number', + type: 'number', description: 'The warehouse id', required: true }, { arg: 'companyId', - type: 'Number', + type: 'number', description: 'The company id', required: true }, { arg: 'dmsTypeId', - type: 'Number', + type: 'number', description: 'The dms type id', required: true }, { arg: 'reference', - type: 'String', + type: 'string', required: true }, { arg: 'description', - type: 'String', + type: 'string', required: true }, { arg: 'hasFile', - type: 'Boolean', + type: 'boolean', description: 'True if has an attached file', required: true }], returns: { - type: 'Object', + type: 'object', root: true }, http: { diff --git a/back/methods/docuware/checkFile.js b/back/methods/docuware/checkFile.js new file mode 100644 index 000000000..c6712bb65 --- /dev/null +++ b/back/methods/docuware/checkFile.js @@ -0,0 +1,93 @@ +const got = require('got'); + +module.exports = Self => { + Self.remoteMethodCtx('checkFile', { + description: 'Check if exist docuware file', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + description: 'The id', + http: {source: 'path'} + }, + { + arg: 'fileCabinet', + type: 'string', + required: true, + description: 'The fileCabinet name' + }, + { + arg: 'dialog', + type: 'string', + required: true, + description: 'The dialog name' + } + ], + returns: { + type: 'boolean', + root: true + }, + http: { + path: `/:id/checkFile`, + verb: 'POST' + } + }); + + Self.checkFile = async function(ctx, id, fileCabinet, dialog) { + const myUserId = ctx.req.accessToken.userId; + if (!myUserId) + return false; + + const models = Self.app.models; + const docuwareConfig = await models.DocuwareConfig.findOne(); + const docuwareInfo = await models.Docuware.findOne({ + where: { + code: fileCabinet, + dialogName: dialog + } + }); + + const docuwareUrl = docuwareConfig.url; + const cookie = docuwareConfig.token; + const fileCabinetName = docuwareInfo.fileCabinetName; + const find = docuwareInfo.find; + const options = { + 'headers': { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Cookie': cookie + } + }; + const searchFilter = { + condition: [ + { + DBName: find, + Value: [id] + } + ] + }; + + try { + // get fileCabinetId + const fileCabinetResponse = await got.get(`${docuwareUrl}/FileCabinets`, options); + const fileCabinetJson = JSON.parse(fileCabinetResponse.body).FileCabinet; + const fileCabinetId = fileCabinetJson.find(dialogs => dialogs.Name === fileCabinetName).Id; + + // get dialog + const dialogResponse = await got.get(`${docuwareUrl}/FileCabinets/${fileCabinetId}/dialogs`, options); + const dialogJson = JSON.parse(dialogResponse.body).Dialog; + const dialogId = dialogJson.find(dialogs => dialogs.DisplayName === 'find').Id; + + // get docuwareID + Object.assign(options, {'body': JSON.stringify(searchFilter)}); + const response = await got.post( + `${docuwareUrl}/FileCabinets/${fileCabinetId}/Query/DialogExpression?dialogId=${dialogId}`, options); + JSON.parse(response.body).Items[0].Id; + + return true; + } catch (error) { + return false; + } + }; +}; diff --git a/back/methods/docuware/download.js b/back/methods/docuware/download.js new file mode 100644 index 000000000..489a07e34 --- /dev/null +++ b/back/methods/docuware/download.js @@ -0,0 +1,120 @@ +/* eslint max-len: ["error", { "code": 180 }]*/ +const got = require('got'); +const UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.remoteMethodCtx('download', { + description: 'Download an docuware PDF', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + description: 'The id', + http: {source: 'path'} + }, + { + arg: 'fileCabinet', + type: 'string', + description: 'The id', + http: {source: 'path'} + }, + { + arg: 'dialog', + type: 'string', + description: 'The id', + http: {source: 'path'} + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'string', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'string', + http: {target: 'header'} + } + ], + http: { + path: `/:id/download/:fileCabinet/:dialog`, + verb: 'GET' + } + }); + + Self.download = async function(ctx, id, fileCabinet, dialog) { + const myUserId = ctx.req.accessToken.userId; + if (!myUserId) + throw new UserError(`You don't have enough privileges`); + + const models = Self.app.models; + const docuwareConfig = await models.DocuwareConfig.findOne(); + const docuwareInfo = await models.Docuware.findOne({ + where: { + code: fileCabinet, + dialogName: dialog + } + }); + + const docuwareUrl = docuwareConfig.url; + const cookie = docuwareConfig.token; + const fileCabinetName = docuwareInfo.fileCabinetName; + const find = docuwareInfo.find; + const options = { + 'headers': { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Cookie': cookie + } + }; + const searchFilter = { + condition: [ + { + DBName: find, + Value: [id] + } + ] + }; + + try { + // get fileCabinetId + const fileCabinetResponse = await got.get(`${docuwareUrl}/FileCabinets`, options); + const fileCabinetJson = JSON.parse(fileCabinetResponse.body).FileCabinet; + const fileCabinetId = fileCabinetJson.find(dialogs => dialogs.Name === fileCabinetName).Id; + + // get dialog + const dialogResponse = await got.get(`${docuwareUrl}/FileCabinets/${fileCabinetId}/dialogs`, options); + const dialogJson = JSON.parse(dialogResponse.body).Dialog; + const dialogId = dialogJson.find(dialogs => dialogs.DisplayName === 'find').Id; + + // get docuwareID + Object.assign(options, {'body': JSON.stringify(searchFilter)}); + const response = await got.post(`${docuwareUrl}/FileCabinets/${fileCabinetId}/Query/DialogExpression?dialogId=${dialogId}`, options); + const docuwareId = JSON.parse(response.body).Items[0].Id; + + // download & save file + const fileName = `filename="${id}.pdf"`; + const contentType = 'application/pdf'; + const downloadUri = `${docuwareUrl}/FileCabinets/${fileCabinetId}/Documents/${docuwareId}/FileDownload?targetFileType=Auto&keepAnnotations=false`; + const downloadOptions = { + 'headers': { + 'Cookie': cookie + } + }; + + const stream = got.stream(downloadUri, downloadOptions); + + return [stream, contentType, fileName]; + } catch (error) { + if (error.code === 'ENOENT') + throw new UserError('The DOCUWARE PDF document does not exists'); + + throw error; + } + }; +}; diff --git a/back/methods/docuware/specs/checkFile.spec.js b/back/methods/docuware/specs/checkFile.spec.js new file mode 100644 index 000000000..0d0e4d71a --- /dev/null +++ b/back/methods/docuware/specs/checkFile.spec.js @@ -0,0 +1,64 @@ +const models = require('vn-loopback/server/server').models; +const got = require('got'); + +describe('docuware download()', () => { + const ticketId = 1; + const userId = 9; + const ctx = { + req: { + + accessToken: {userId: userId}, + headers: {origin: 'http://localhost:5000'}, + } + }; + + const fileCabinetName = 'deliveryClient'; + const dialogDisplayName = 'find'; + const dialogName = 'findTicket'; + + const gotGetResponse = { + body: JSON.stringify( + { + FileCabinet: [ + {Id: 12, Name: fileCabinetName} + ], + Dialog: [ + {Id: 34, DisplayName: dialogDisplayName} + ] + }) + }; + + it('should return exist file in docuware', async() => { + const gotPostResponse = { + body: JSON.stringify( + { + Items: [ + {Id: 56} + ], + }) + }; + + spyOn(got, 'get').and.returnValue(new Promise(resolve => resolve(gotGetResponse))); + spyOn(got, 'post').and.returnValue(new Promise(resolve => resolve(gotPostResponse))); + + const result = await models.Docuware.checkFile(ctx, ticketId, fileCabinetName, dialogName); + + expect(result).toEqual(true); + }); + + it('should return not exist file in docuware', async() => { + const gotPostResponse = { + body: JSON.stringify( + { + Items: [], + }) + }; + + spyOn(got, 'get').and.returnValue(new Promise(resolve => resolve(gotGetResponse))); + spyOn(got, 'post').and.returnValue(new Promise(resolve => resolve(gotPostResponse))); + + const result = await models.Docuware.checkFile(ctx, ticketId, fileCabinetName, dialogName); + + expect(result).toEqual(false); + }); +}); diff --git a/back/methods/docuware/specs/download.spec.js b/back/methods/docuware/specs/download.spec.js new file mode 100644 index 000000000..dc80c67d8 --- /dev/null +++ b/back/methods/docuware/specs/download.spec.js @@ -0,0 +1,50 @@ +const models = require('vn-loopback/server/server').models; +const got = require('got'); +const stream = require('stream'); + +describe('docuware download()', () => { + const userId = 9; + const ticketId = 1; + const ctx = { + req: { + + accessToken: {userId: userId}, + headers: {origin: 'http://localhost:5000'}, + } + }; + + it('should return the downloaded file name', async() => { + const fileCabinetName = 'deliveryClient'; + const dialogDisplayName = 'find'; + const dialogName = 'findTicket'; + const gotGetResponse = { + body: JSON.stringify( + { + FileCabinet: [ + {Id: 12, Name: fileCabinetName} + ], + Dialog: [ + {Id: 34, DisplayName: dialogDisplayName} + ] + }) + }; + + const gotPostResponse = { + body: JSON.stringify( + { + Items: [ + {Id: 56} + ], + }) + }; + + spyOn(got, 'get').and.returnValue(new Promise(resolve => resolve(gotGetResponse))); + spyOn(got, 'post').and.returnValue(new Promise(resolve => resolve(gotPostResponse))); + spyOn(got, 'stream').and.returnValue(new stream.PassThrough({objectMode: true})); + + const result = await models.Docuware.download(ctx, ticketId, fileCabinetName, dialogName); + + expect(result[1]).toEqual('application/pdf'); + expect(result[2]).toEqual(`filename="${ticketId}.pdf"`); + }); +}); diff --git a/back/methods/edi/sql/bucket.sql b/back/methods/edi/sql/bucket.sql new file mode 100644 index 000000000..33dca6796 --- /dev/null +++ b/back/methods/edi/sql/bucket.sql @@ -0,0 +1,14 @@ +LOAD DATA LOCAL INFILE ? + INTO TABLE `edi`.`bucket` + FIELDS TERMINATED BY ';' + LINES TERMINATED BY '\n' (@col1, @col2, @col3, @col4, @col5, @col6, @col7, @col8, @col9, @col10, @col11, @col12) + SET + bucket_id = @col2, + bucket_type_id = @col4, + description = @col5, + x_size = @col6, + y_size = @col7, + z_size = @col8, + entry_date = STR_TO_DATE(@col10, '%Y%m%d'), + expiry_date = IFNULL(NULL,STR_TO_DATE(@col11, '%Y%m%d')), + change_date_time = STR_TO_DATE(@col12, '%Y%m%d%H%i') diff --git a/back/methods/edi/sql/bucket_type.sql b/back/methods/edi/sql/bucket_type.sql new file mode 100644 index 000000000..f748fac84 --- /dev/null +++ b/back/methods/edi/sql/bucket_type.sql @@ -0,0 +1,10 @@ +LOAD DATA LOCAL INFILE ? + INTO TABLE `edi`.`bucket_type` + FIELDS TERMINATED BY ';' + LINES TERMINATED BY '\n' (@col1, @col2, @col3, @col4, @col5, @col6) + SET + bucket_type_id = @col2, + description = @col3, + entry_date = STR_TO_DATE(@col4, '%Y%m%d'), + expiry_date = IFNULL(NULL,STR_TO_DATE(@col5, '%Y%m%d')), + change_date_time = STR_TO_DATE(@col6, '%Y%m%d%H%i') diff --git a/back/methods/edi/sql/feature.sql b/back/methods/edi/sql/feature.sql new file mode 100644 index 000000000..7486a5bd3 --- /dev/null +++ b/back/methods/edi/sql/feature.sql @@ -0,0 +1,11 @@ +LOAD DATA LOCAL INFILE ? + INTO TABLE `edi`.`feature` + FIELDS TERMINATED BY ';' + LINES TERMINATED BY '\n' (@col1, @col2, @col3, @col4, @col5, @col6, @col7) + SET + item_id = @col2, + feature_type_id = @col3, + feature_value = @col4, + entry_date = STR_TO_DATE(@col5, '%Y%m%d'), + expiry_date = IFNULL(NULL,STR_TO_DATE(@col6, '%Y%m%d')), + change_date_time = STR_TO_DATE(@col7, '%Y%m%d%H%i') diff --git a/back/methods/edi/sql/genus.sql b/back/methods/edi/sql/genus.sql new file mode 100644 index 000000000..52b85f020 --- /dev/null +++ b/back/methods/edi/sql/genus.sql @@ -0,0 +1,10 @@ +LOAD DATA LOCAL INFILE ? + INTO TABLE `edi`.`genus` + FIELDS TERMINATED BY ';' + LINES TERMINATED BY '\n' (@col1, @col2, @col3, @col4, @col5, @col6) + SET + genus_id = @col2, + latin_genus_name = @col3, + entry_date = STR_TO_DATE(@col4, '%Y%m%d'), + expiry_date = IFNULL(NULL,STR_TO_DATE(@col5, '%Y%m%d')), + change_date_time = STR_TO_DATE(@col6, '%Y%m%d%H%i') diff --git a/back/methods/edi/sql/item.sql b/back/methods/edi/sql/item.sql new file mode 100644 index 000000000..8d794c7cf --- /dev/null +++ b/back/methods/edi/sql/item.sql @@ -0,0 +1,13 @@ +LOAD DATA LOCAL INFILE ? + INTO TABLE `edi`.`item` + FIELDS TERMINATED BY ';' + LINES TERMINATED BY '\n' (@col1, @col2, @col3, @col4, @col5, @col6, @col7, @col8, @col9, @col10, @col11, @col12) + SET + id = @col2, + product_name = @col4, + name = @col5, + plant_id = @col7, + group_id = @col9, + entry_date = STR_TO_DATE(@col10, '%Y%m%d'), + expiry_date = IFNULL(NULL,STR_TO_DATE(@col11, '%Y%m%d')), + change_date_time = STR_TO_DATE(@col12, '%Y%m%d%H%i') diff --git a/back/methods/edi/sql/item_feature.sql b/back/methods/edi/sql/item_feature.sql new file mode 100644 index 000000000..f16da6ed0 --- /dev/null +++ b/back/methods/edi/sql/item_feature.sql @@ -0,0 +1,12 @@ +LOAD DATA LOCAL INFILE ? + INTO TABLE `edi`.`item_feature` + FIELDS TERMINATED BY ';' + LINES TERMINATED BY '\n' (@col1, @col2, @col3, @col4, @col5, @col6, @col7, @col8) + SET + item_id = @col2, + feature = @col3, + regulation_type = @col4, + presentation_order = @col5, + entry_date = STR_TO_DATE(@col6, '%Y%m%d'), + expiry_date = IFNULL(NULL,STR_TO_DATE(@col7, '%Y%m%d')), + change_date_time = STR_TO_DATE(@col8, '%Y%m%d%H%i') diff --git a/back/methods/edi/sql/item_group.sql b/back/methods/edi/sql/item_group.sql new file mode 100644 index 000000000..1a57d7727 --- /dev/null +++ b/back/methods/edi/sql/item_group.sql @@ -0,0 +1,10 @@ +LOAD DATA LOCAL INFILE ? + INTO TABLE `edi`.`item_group` + FIELDS TERMINATED BY ';' + LINES TERMINATED BY '\n' (@col1, @col2, @col3, @col4, @col5, @col6) + SET + group_code = @col2, + dutch_group_description = @col3, + entry_date = STR_TO_DATE(@col4, '%Y%m%d'), + expiry_date = IFNULL(NULL,STR_TO_DATE(@col5, '%Y%m%d')), + change_date_time = STR_TO_DATE(@col6, '%Y%m%d%H%i') diff --git a/back/methods/edi/sql/plant.sql b/back/methods/edi/sql/plant.sql new file mode 100644 index 000000000..8d6f90b78 --- /dev/null +++ b/back/methods/edi/sql/plant.sql @@ -0,0 +1,11 @@ +LOAD DATA LOCAL INFILE ? + INTO TABLE `edi`.`plant` + FIELDS TERMINATED BY ';' + LINES TERMINATED BY '\n' (@col1, @col2, @col3, @col4, @col5, @col6, @col7, @col8, @col9) + SET + plant_id = @col3, + genus_id = @col4, + specie_id = @col5, + entry_date = STR_TO_DATE(@col7, '%Y%m%d'), + expiry_date = IFNULL(NULL,STR_TO_DATE(@col8, '%Y%m%d')), + change_date_time = STR_TO_DATE(@col9, '%Y%m%d%H%i') diff --git a/back/methods/edi/sql/specie.sql b/back/methods/edi/sql/specie.sql new file mode 100644 index 000000000..956ec2b69 --- /dev/null +++ b/back/methods/edi/sql/specie.sql @@ -0,0 +1,11 @@ +LOAD DATA LOCAL INFILE ? + INTO TABLE `edi`.`specie` + FIELDS TERMINATED BY ';' + LINES TERMINATED BY '\n' (@col1, @col2, @col3, @col4, @col5, @col6, @col7) + SET + specie_id = @col2, + genus_id = @col3, + latin_species_name = @col4, + entry_date = STR_TO_DATE(@col5, '%Y%m%d'), + expiry_date = IFNULL(NULL,STR_TO_DATE(@col6, '%Y%m%d')), + change_date_time = STR_TO_DATE(@col7, '%Y%m%d%H%i') diff --git a/back/methods/edi/sql/supplier.sql b/back/methods/edi/sql/supplier.sql new file mode 100644 index 000000000..aa2ddc4d8 --- /dev/null +++ b/back/methods/edi/sql/supplier.sql @@ -0,0 +1,11 @@ +LOAD DATA LOCAL INFILE ? + INTO TABLE `edi`.`supplier` + FIELDS TERMINATED BY ';' + LINES TERMINATED BY '\n' (@col1, @col2, @col3, @col4, @col5, @col6, @col7, @col8, @col9, @col10, @col11, @col12, @col13, @col14, @col15, @col16, @col17, @col18, @col19, @col20) + SET + GLNAddressCode = @col2, + supplier_id = @col4, + company_name = @col3, + entry_date = STR_TO_DATE(@col9, '%Y%m%d'), + expiry_date = IFNULL(NULL,STR_TO_DATE(@col10, '%Y%m%d')), + change_date_time = STR_TO_DATE(@col11, '%Y%m%d%H%i') diff --git a/back/methods/edi/sql/type.sql b/back/methods/edi/sql/type.sql new file mode 100644 index 000000000..1ff60fb0b --- /dev/null +++ b/back/methods/edi/sql/type.sql @@ -0,0 +1,11 @@ +LOAD DATA LOCAL INFILE ? + INTO TABLE `edi`.`type` + FIELDS TERMINATED BY ';' + LINES TERMINATED BY '\n' (@col1, @col2, @col3, @col4, @col5, @col6, @col7) + SET + type_id = @col2, + type_group_id = @col3, + description = @col4, + entry_date = STR_TO_DATE(@col5, '%Y%m%d'), + expiry_date = IFNULL(NULL,STR_TO_DATE(@col6, '%Y%m%d')), + change_date_time = STR_TO_DATE(@col7, '%Y%m%d%H%i') diff --git a/back/methods/edi/sql/value.sql b/back/methods/edi/sql/value.sql new file mode 100644 index 000000000..2a469f201 --- /dev/null +++ b/back/methods/edi/sql/value.sql @@ -0,0 +1,11 @@ +LOAD DATA LOCAL INFILE ? + INTO TABLE `edi`.`value` + FIELDS TERMINATED BY ';' + LINES TERMINATED BY '\n' (@col1, @col2, @col3, @col4, @col5, @col6, @col7) + SET + type_id = @col2, + type_value = @col3, + type_description = @col4, + entry_date = STR_TO_DATE(@col5, '%Y%m%d'), + expiry_date = IFNULL(NULL,STR_TO_DATE(@col6, '%Y%m%d')), + change_date_time = STR_TO_DATE(@col7, '%Y%m%d%H%i') diff --git a/back/methods/edi/updateData.js b/back/methods/edi/updateData.js new file mode 100644 index 000000000..c5705513f --- /dev/null +++ b/back/methods/edi/updateData.js @@ -0,0 +1,238 @@ +/* eslint no-console: "off" */ +const path = require('path'); +const fs = require('fs-extra'); + +module.exports = Self => { + Self.remoteMethodCtx('updateData', { + description: 'Updates schema data from external provider', + accessType: 'WRITE', + returns: { + type: 'object', + root: true + }, + http: { + path: `/updateData`, + verb: 'POST' + } + }); + + Self.updateData = async() => { + const models = Self.app.models; + + // Get files checksum + const tx = await Self.beginTransaction({}); + + try { + const options = {transaction: tx}; + const files = await Self.rawSql('SELECT name, checksum, keyValue FROM edi.fileConfig', null, options); + + const updatableFiles = []; + for (const file of files) { + const fileChecksum = await getChecksum(file); + + if (file.checksum != fileChecksum) { + updatableFiles.push({ + name: file.name, + checksum: fileChecksum + }); + } else + console.debug(`File already updated, skipping...`); + } + + if (updatableFiles.length === 0) + return false; + + // Download files + const container = await models.TempContainer.container('edi'); + const tempPath = path.join(container.client.root, container.name); + + let remoteFile; + let tempDir; + let tempFile; + + const fileNames = updatableFiles.map(file => file.name); + + const tables = await Self.rawSql(` + SELECT fileName, toTable, file + FROM edi.tableConfig + WHERE file IN (?)`, [fileNames], options); + + for (const table of tables) { + const fileName = table.file; + + remoteFile = `codes/${fileName}.ZIP`; + tempDir = `${tempPath}/${fileName}`; + tempFile = `${tempPath}/${fileName}.zip`; + + try { + await fs.readFile(tempFile); + } catch (error) { + if (error.code === 'ENOENT') { + console.debug(`Downloading file ${fileName}...`); + const downloadOutput = await downloadFile(remoteFile, tempFile); + if (downloadOutput.error) + continue; + } + } + + await extractFile(fileName, tempFile, tempDir); + + console.debug(`Updating table ${table.toTable}...`); + await dumpData(tempDir, table, options); + } + + // Update files checksum + for (const file of updatableFiles) { + console.log(`Updating file ${file.name} checksum...`); + await Self.rawSql(` + UPDATE edi.fileConfig + SET checksum = ? + WHERE name = ?`, + [file.checksum, file.name], options); + } + + await tx.commit(); + + // Clean files + try { + console.debug(`Cleaning files...`); + await fs.remove(tempPath); + } catch (error) { + if (error.code !== 'ENOENT') + throw e; + } + + return true; + } catch (error) { + await tx.rollback(); + throw error; + } + }; + + let ftpClient; + async function getFtpClient() { + if (!ftpClient) { + const [ftpConfig] = await Self.rawSql('SELECT host, user, password FROM edi.ftpConfig'); + console.debug(`Openning FTP connection to ${ftpConfig.host}...\n`); + + const FtpClient = require('ftps'); + + ftpClient = new FtpClient({ + host: ftpConfig.host, + username: ftpConfig.user, + password: ftpConfig.password, + procotol: 'ftp' + }); + } + + return ftpClient; + } + + async function getChecksum(file) { + const ftpClient = await getFtpClient(); + console.debug(`Checking checksum for file ${file.name}...`); + + ftpClient.cat(`codes/${file.name}.txt`); + + const response = await new Promise((resolve, reject) => { + ftpClient.exec((err, response) => { + if (err || response.error) { + console.debug(`Error downloading checksum file... ${response.error}`); + return reject(err); + } + + resolve(response); + }); + }); + + if (response && response.data) { + const fileContents = response.data; + const rows = fileContents.split('\n'); + const row = rows[4]; + const columns = row.split(/\s+/); + + let fileChecksum; + if (file.keyValue) + fileChecksum = columns[1]; + + if (!file.keyValue) + fileChecksum = columns[0]; + + return fileChecksum; + } + } + + async function downloadFile(remoteFile, tempFile) { + const ftpClient = await getFtpClient(); + + ftpClient.get(remoteFile, tempFile); + + return new Promise((resolve, reject) => { + ftpClient.exec((err, response) => { + if (err || response.error) { + console.debug(`Error downloading file... ${response.error}`); + return reject(err); + } + + resolve(response); + }); + }); + } + + async function extractFile(fileName, tempFile, tempDir) { + const JSZip = require('jszip'); + + try { + await fs.mkdir(tempDir); + console.debug(`Extracting file ${fileName}...`); + } catch (error) { + if (error.code !== 'EEXIST') + throw e; + } + + const fileStream = await fs.readFile(tempFile); + if (fileStream) { + const zip = new JSZip(); + const zipContents = await zip.loadAsync(fileStream); + + if (!zipContents) return; + + const fileNames = Object.keys(zipContents.files); + + for (const fileName of fileNames) { + const fileContent = await zip.file(fileName).async('nodebuffer'); + const dest = path.join(tempDir, fileName); + await fs.writeFile(dest, fileContent); + } + } + } + + async function dumpData(tempDir, table, options) { + const toTable = table.toTable; + const baseName = table.fileName; + + console.log(`Emptying table ${toTable}...`); + const tableName = `edi.${toTable}`; + await Self.rawSql(`DELETE FROM ??`, [tableName]); + + const dirFiles = await fs.readdir(tempDir); + const files = dirFiles.filter(file => file.startsWith(baseName)); + + for (const file of files) { + console.log(`Dumping data from file ${file}...`); + + const templatePath = path.join(__dirname, `./sql/${toTable}.sql`); + const sqlTemplate = await fs.readFile(templatePath, 'utf8'); + const filePath = path.join(tempDir, file); + + await Self.rawSql(sqlTemplate, [filePath], options); + await Self.rawSql(` + UPDATE edi.tableConfig + SET updated = ? + WHERE fileName = ? + `, [new Date(), baseName], options); + } + + console.log(`Updated table ${toTable}\n`); + } +}; diff --git a/back/methods/notification/clean.js b/back/methods/notification/clean.js new file mode 100644 index 000000000..e6da58af8 --- /dev/null +++ b/back/methods/notification/clean.js @@ -0,0 +1,46 @@ +module.exports = Self => { + Self.remoteMethod('clean', { + description: 'clean notifications from queue', + accessType: 'WRITE', + returns: { + type: 'object', + root: true + }, + http: { + path: `/clean`, + verb: 'POST' + } + }); + + Self.clean = async options => { + const models = Self.app.models; + const status = ['sent', 'error']; + + const myOptions = {}; + let tx; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + const config = await models.NotificationConfig.findOne({}, myOptions); + const cleanDate = new Date(); + cleanDate.setDate(cleanDate.getDate() - config.cleanDays); + + await models.NotificationQueue.destroyAll({ + where: {status: {inq: status}}, + created: {lt: cleanDate} + }, myOptions); + + if (tx) await tx.commit(); + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/back/methods/notification/send.js b/back/methods/notification/send.js new file mode 100644 index 000000000..80faf0305 --- /dev/null +++ b/back/methods/notification/send.js @@ -0,0 +1,81 @@ +const {Email} = require('vn-print'); +const UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.remoteMethod('send', { + description: 'Send notifications from queue', + accessType: 'WRITE', + returns: { + type: 'object', + root: true + }, + http: { + path: `/send`, + verb: 'POST' + } + }); + + Self.send = async options => { + const models = Self.app.models; + const findStatus = 'pending'; + + const myOptions = {}; + if (typeof options == 'object') + Object.assign(myOptions, options); + + const notificationQueue = await models.NotificationQueue.find({ + where: {status: findStatus}, + include: [ + { + relation: 'notification', + scope: { + include: { + relation: 'subscription', + scope: { + include: { + relation: 'user', + scope: { + fields: ['name', 'email', 'lang'] + } + } + } + } + } + + } + ] + }, myOptions); + + const statusSent = 'sent'; + const statusError = 'error'; + + for (const queue of notificationQueue) { + const queueName = queue.notification().name; + const queueParams = JSON.parse(queue.params); + + for (const notificationUser of queue.notification().subscription()) { + try { + const sendParams = { + recipient: notificationUser.user().email, + lang: notificationUser.user().lang + }; + + if (notificationUser.userFk == queue.authorFk) { + await queue.updateAttribute('status', statusSent); + continue; + } + + const newParams = Object.assign({}, queueParams, sendParams); + const email = new Email(queueName, newParams); + + if (process.env.NODE_ENV != 'test') + await email.send(); + + await queue.updateAttribute('status', statusSent); + } catch (error) { + await queue.updateAttribute('status', statusError); + } + } + } + }; +}; diff --git a/back/methods/notification/specs/clean.spec.js b/back/methods/notification/specs/clean.spec.js new file mode 100644 index 000000000..4c9dc563d --- /dev/null +++ b/back/methods/notification/specs/clean.spec.js @@ -0,0 +1,42 @@ +const models = require('vn-loopback/server/server').models; + +describe('Notification Clean()', () => { + it('should delete old rows with error', async() => { + const userId = 9; + const status = 'error'; + const tx = await models.NotificationQueue.beginTransaction({}); + const options = {transaction: tx}; + + const notification = await models.Notification.findOne({}, options); + const notificationConfig = await models.NotificationConfig.findOne({}); + + const cleanDate = new Date(); + cleanDate.setDate(cleanDate.getDate() - (notificationConfig.cleanDays + 1)); + + let before; + let after; + + try { + const notificationDelete = await models.NotificationQueue.create({ + notificationFk: notification.name, + authorFk: userId, + status: status, + created: cleanDate + }, options); + + before = await models.NotificationQueue.findById(notificationDelete.id, null, options); + + await models.Notification.clean(options); + + after = await models.NotificationQueue.findById(notificationDelete.id, null, options); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + + expect(before.notificationFk).toEqual(notification.name); + expect(after).toBe(null); + }); +}); diff --git a/back/methods/notification/specs/send.spec.js b/back/methods/notification/specs/send.spec.js new file mode 100644 index 000000000..f0b186e06 --- /dev/null +++ b/back/methods/notification/specs/send.spec.js @@ -0,0 +1,33 @@ +const models = require('vn-loopback/server/server').models; + +describe('Notification Send()', () => { + it('should send notification', async() => { + const statusPending = 'pending'; + const tx = await models.NotificationQueue.beginTransaction({}); + const options = {transaction: tx}; + const filter = { + where: { + status: statusPending + } + }; + + let before; + let after; + + try { + before = await models.NotificationQueue.find(filter, options); + + await models.Notification.send(options); + + after = await models.NotificationQueue.find(filter, options); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + + expect(before.length).toEqual(3); + expect(after.length).toEqual(0); + }); +}); diff --git a/back/methods/osticket/closeTicket.js b/back/methods/osticket/closeTicket.js new file mode 100644 index 000000000..33fe5958b --- /dev/null +++ b/back/methods/osticket/closeTicket.js @@ -0,0 +1,140 @@ +const jsdom = require('jsdom'); +const mysql = require('mysql'); +const FormData = require('form-data'); + +module.exports = Self => { + Self.remoteMethodCtx('closeTicket', { + description: 'Close tickets without response from the user', + accessType: 'READ', + returns: { + type: 'object', + root: true + }, + http: { + path: `/closeTicket`, + verb: 'POST' + } + }); + + Self.closeTicket = async ctx => { + const models = Self.app.models; + const config = await models.OsTicketConfig.findOne(); + const ostUri = `${config.host}/login.php`; + + if (!config.user || !config.password || !config.userDb || !config.passwordDb) + return false; + + const con = mysql.createConnection({ + host: `${config.hostDb}`, + user: `${config.userDb}`, + password: `${config.passwordDb}`, + port: `${config.portDb}` + }); + + const sql = `SELECT ot.ticket_id, ot.number + FROM osticket.ost_ticket ot + JOIN osticket.ost_ticket_status ots ON ots.id = ot.status_id + JOIN osticket.ost_thread ot2 ON ot2.object_id = ot.ticket_id AND ot2.object_type = 'T' + JOIN ( + SELECT ote.thread_id, MAX(ote.created) created, MAX(ote.updated) updated + FROM osticket.ost_thread_entry ote + WHERE ote.staff_id != 0 AND ote.type = 'R' + GROUP BY ote.thread_id + ) sub ON sub.thread_id = ot2.id + WHERE ot.isanswered = 1 + AND ots.state = '${config.oldStatus}' + AND IF(sub.updated > sub.created, sub.updated, sub.created) < DATE_SUB(CURDATE(), INTERVAL ${config.day} DAY)`; + + let ticketsId = []; + con.connect(err => { + if (err) throw err; + con.query(sql, (err, results) => { + if (err) throw err; + for (const result of results) + ticketsId.push(result.ticket_id); + }); + }); + + await getRequestToken(); + + async function getRequestToken() { + const response = await fetch(ostUri); + + const result = response.headers.get('set-cookie'); + const [firtHeader] = result.split(' '); + const firtCookie = firtHeader.substring(0, firtHeader.length - 1); + const body = await response.text(); + const dom = new jsdom.JSDOM(body); + const token = dom.window.document.querySelector('[name="__CSRFToken__"]').value; + + await login(token, firtCookie); + } + + async function login(token, firtCookie) { + const data = { + __CSRFToken__: token, + do: 'scplogin', + userid: config.user, + passwd: config.password, + ajax: 1 + }; + const params = { + method: 'POST', + body: new URLSearchParams(data), + headers: { + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'Cookie': firtCookie + } + }; + const response = await fetch(ostUri, params); + const result = response.headers.get('set-cookie'); + const [firtHeader] = result.split(' '); + const secondCookie = firtHeader.substring(0, firtHeader.length - 1); + + await close(token, secondCookie); + } + + async function getLockCode(token, secondCookie, ticketId) { + const ostUri = `${config.host}/ajax.php/lock/ticket/${ticketId}`; + const params = { + method: 'POST', + headers: { + 'X-CSRFToken': token, + 'Cookie': secondCookie + } + }; + const response = await fetch(ostUri, params); + const body = await response.text(); + const json = JSON.parse(body); + + return json.code; + } + + async function close(token, secondCookie) { + for (const ticketId of ticketsId) { + const lockCode = await getLockCode(token, secondCookie, ticketId); + let form = new FormData(); + form.append('__CSRFToken__', token); + form.append('id', ticketId); + form.append('a', config.responseType); + form.append('lockCode', lockCode); + form.append('from_email_id', config.fromEmailId); + form.append('reply-to', config.replyTo); + form.append('cannedResp', 0); + form.append('response', config.comment); + form.append('signature', 'none'); + form.append('reply_status_id', config.newStatusId); + + const ostUri = `${config.host}/tickets.php?id=${ticketId}`; + const params = { + method: 'POST', + body: form, + headers: { + 'Cookie': secondCookie + } + }; + return fetch(ostUri, params); + } + } + }; +}; diff --git a/back/methods/osticket/osTicketReportEmail.js b/back/methods/osticket/osTicketReportEmail.js new file mode 100644 index 000000000..ebb74c385 --- /dev/null +++ b/back/methods/osticket/osTicketReportEmail.js @@ -0,0 +1,29 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('osTicketReportEmail', { + description: 'Sends the buyer waste email', + accessType: 'WRITE', + accepts: [], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/osticket-report-email', + verb: 'POST' + } + }); + + Self.osTicketReportEmail = async ctx => { + const models = Self.app.models; + const printConfig = await models.PrintConfig.findOne(); + + const email = new Email('osticket-report', { + recipient: printConfig.itRecipient, + lang: ctx.req.getLocale() + }); + + return email.send(); + }; +}; diff --git a/back/model-config.json b/back/model-config.json index 8ad15a16a..29676e979 100644 --- a/back/model-config.json +++ b/back/model-config.json @@ -44,6 +44,12 @@ "DmsType": { "dataSource": "vn" }, + "Docuware": { + "dataSource": "vn" + }, + "DocuwareConfig": { + "dataSource": "vn" + }, "EmailUser": { "dataSource": "vn" }, @@ -62,9 +68,30 @@ "Language": { "dataSource": "vn" }, + "MachineWorker": { + "dataSource": "vn" + }, + "MobileAppVersionControl": { + "dataSource": "vn" + }, "Module": { "dataSource": "vn" }, + "Notification": { + "dataSource": "vn" + }, + "NotificationAcl": { + "dataSource": "vn" + }, + "NotificationConfig": { + "dataSource": "vn" + }, + "NotificationQueue": { + "dataSource": "vn" + }, + "NotificationSubscription": { + "dataSource": "vn" + }, "Province": { "dataSource": "vn" }, @@ -89,6 +116,9 @@ "Town": { "dataSource": "vn" }, + "Url": { + "dataSource": "vn" + }, "UserConfig": { "dataSource": "vn" }, @@ -103,6 +133,15 @@ }, "OsTicket": { "dataSource": "osticket" + }, + "OsTicketConfig": { + "dataSource": "vn" + }, + "Edi": { + "dataSource": "vn" + }, + "PrintConfig": { + "dataSource": "vn" } } diff --git a/back/models/account.js b/back/models/account.js index ba703c68d..f74052b5c 100644 --- a/back/models/account.js +++ b/back/models/account.js @@ -7,6 +7,7 @@ module.exports = Self => { require('../methods/account/change-password')(Self); require('../methods/account/set-password')(Self); require('../methods/account/validate-token')(Self); + require('../methods/account/privileges')(Self); // Validations @@ -77,7 +78,7 @@ module.exports = Self => { `SELECT r.name FROM account.user u JOIN account.roleRole rr ON rr.role = u.role - JOIN account.role r ON r.id = rr.inheritsFrom + JOIN account.role r ON r.id = rr.inheritsFrom WHERE u.id = ?`, [userId], options); let roles = []; diff --git a/back/models/account.json b/back/models/account.json index b59cf39c2..d0c17e70f 100644 --- a/back/models/account.json +++ b/back/models/account.json @@ -47,7 +47,10 @@ "type": "date" }, "image": { - "type": "String" + "type": "string" + }, + "hasGrant": { + "type": "boolean" } }, "relations": { @@ -71,6 +74,11 @@ "type": "hasOne", "model": "Worker", "foreignKey": "userFk" + }, + "userConfig": { + "type": "hasOne", + "model": "UserConfig", + "foreignKey": "userFk" } }, "acls": [ @@ -94,6 +102,13 @@ "principalType": "ROLE", "principalId": "$authenticated", "permission": "ALLOW" + }, + { + "property": "privileges", + "accessType": "*", + "principalType": "ROLE", + "principalId": "$authenticated", + "permission": "ALLOW" } ] } diff --git a/back/models/accounting-type.json b/back/models/accounting-type.json index be08ac533..086be9d13 100644 --- a/back/models/accounting-type.json +++ b/back/models/accounting-type.json @@ -28,6 +28,9 @@ }, "maxAmount": { "type": "number" + }, + "daysInFuture": { + "type": "number" } }, "acls": [{ diff --git a/back/models/app-version-control.json b/back/models/app-version-control.json new file mode 100644 index 000000000..46c53be3c --- /dev/null +++ b/back/models/app-version-control.json @@ -0,0 +1,24 @@ +{ + "name": "MobileAppVersionControl", + "base": "VnModel", + "options": { + "mysql": { + "table": "vn.mobileAppVersionControl" + } + }, + "properties": { + "id": { + "type": "number", + "id": true + }, + "appName": { + "type": "string" + }, + "version": { + "type": "string" + }, + "isVersionCritical": { + "type": "boolean" + } + } +} diff --git a/back/models/autonomy.json b/back/models/autonomy.json index ce9ac0bc6..8c9d82936 100644 --- a/back/models/autonomy.json +++ b/back/models/autonomy.json @@ -9,7 +9,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, diff --git a/back/models/bank-entity.json b/back/models/bank-entity.json index c45cd4336..35d1116bd 100644 --- a/back/models/bank-entity.json +++ b/back/models/bank-entity.json @@ -8,15 +8,15 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "bic": { - "type": "String" + "type": "string" }, "name": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/back/models/bank.json b/back/models/bank.json index 33a2637d6..da73b1141 100644 --- a/back/models/bank.json +++ b/back/models/bank.json @@ -8,35 +8,35 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "bank": { - "type": "String", + "type": "string", "required": true }, "account": { - "type": "String", + "type": "string", "required": true }, "accountingTypeFk": { - "type": "Number", + "type": "number", "required": true, "mysql": { "columnName": "cash" } }, "entityFk": { - "type": "Number", + "type": "number", "required": true }, "isActive": { - "type": "Boolean", + "type": "boolean", "required": true }, "currencyFk": { - "type": "Number", + "type": "number", "required": true } }, diff --git a/back/models/chat-config.json b/back/models/chat-config.json index d4f708b7a..bdfbeb60d 100644 --- a/back/models/chat-config.json +++ b/back/models/chat-config.json @@ -10,20 +10,20 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "host": { - "type": "String" + "type": "string" }, "api": { - "type": "String" + "type": "string" }, "user": { - "type": "String" + "type": "string" }, "password": { - "type": "String" + "type": "string" } }, "acls": [{ diff --git a/back/models/chat.js b/back/models/chat.js index 5487569c1..95a1e2c29 100644 --- a/back/models/chat.js +++ b/back/models/chat.js @@ -1,5 +1,7 @@ module.exports = Self => { + require('../methods/chat/getServiceAuth')(Self); require('../methods/chat/send')(Self); require('../methods/chat/sendCheckingPresence')(Self); require('../methods/chat/notifyIssues')(Self); + require('../methods/chat/sendQueued')(Self); }; diff --git a/back/models/chat.json b/back/models/chat.json index 697d8c181..0d6328544 100644 --- a/back/models/chat.json +++ b/back/models/chat.json @@ -1,6 +1,42 @@ { "name": "Chat", "base": "VnModel", + "options": { + "mysql": { + "table": "chat" + } + }, + "properties": { + "id": { + "id": true, + "type": "number", + "description": "Identifier" + }, + "senderFk": { + "type": "number" + }, + "recipient": { + "type": "string" + }, + "dated": { + "type": "date" + }, + "checkUserStatus": { + "type": "boolean" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + }, + "attempts": { + "type": "number" + }, + "error": { + "type": "string" + } + }, "acls": [{ "property": "validations", "accessType": "EXECUTE", diff --git a/back/models/collection.js b/back/models/collection.js index d3670d56b..436414f62 100644 --- a/back/models/collection.js +++ b/back/models/collection.js @@ -2,6 +2,5 @@ module.exports = Self => { require('../methods/collection/getCollection')(Self); require('../methods/collection/newCollection')(Self); require('../methods/collection/getSectors')(Self); - require('../methods/collection/updateCollectionSale')(Self); - require('../methods/collection/collectionFaults')(Self); + require('../methods/collection/setSaleQuantity')(Self); }; diff --git a/back/models/company.json b/back/models/company.json index 80ad026e4..a36b43b69 100644 --- a/back/models/company.json +++ b/back/models/company.json @@ -10,17 +10,14 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "code": { - "type": "String" + "type": "string" }, "expired": { "type": "date" - }, - "isOfficial": { - "type": "boolean" } }, diff --git a/back/models/country.json b/back/models/country.json index 8364636fc..8fa25b88e 100644 --- a/back/models/country.json +++ b/back/models/country.json @@ -9,7 +9,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, @@ -21,7 +21,7 @@ "type": "string" }, "isUeeMember": { - "type": "Boolean" + "type": "boolean" } }, "relations": { diff --git a/back/models/delivery.json b/back/models/delivery.json index 7c3c5c621..65a0eef1b 100644 --- a/back/models/delivery.json +++ b/back/models/delivery.json @@ -9,17 +9,17 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "forceId": false }, "date": { - "type": "Date" + "type": "date" }, "m3":{ - "type": "Number" + "type": "number" }, "warehouseFk":{ - "type": "Number" + "type": "number" } } } diff --git a/back/models/dms-type.json b/back/models/dms-type.json index b51c810ac..c7a1815fe 100644 --- a/back/models/dms-type.json +++ b/back/models/dms-type.json @@ -9,7 +9,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, diff --git a/back/models/dms.js b/back/models/dms.js index 91291a0c2..24c072f56 100644 --- a/back/models/dms.js +++ b/back/models/dms.js @@ -5,6 +5,7 @@ module.exports = Self => { require('../methods/dms/uploadFile')(Self); require('../methods/dms/removeFile')(Self); require('../methods/dms/updateFile')(Self); + require('../methods/dms/deleteTrashFiles')(Self); Self.checkRole = async function(ctx, id) { const models = Self.app.models; diff --git a/back/models/dms.json b/back/models/dms.json index f517a23ff..0259e5487 100644 --- a/back/models/dms.json +++ b/back/models/dms.json @@ -13,7 +13,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, @@ -36,7 +36,7 @@ "type": "boolean" }, "created": { - "type": "Date" + "type": "date" } }, "relations": { diff --git a/back/models/docuware-config.json b/back/models/docuware-config.json new file mode 100644 index 000000000..8ca76d8ba --- /dev/null +++ b/back/models/docuware-config.json @@ -0,0 +1,32 @@ +{ + "name": "DocuwareConfig", + "description": "Docuware config", + "base": "VnModel", + "options": { + "mysql": { + "table": "docuwareConfig" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "url": { + "type": "string" + }, + "token": { + "type": "string" + } + }, + "acls": [ + { + "property": "*", + "accessType": "*", + "principalType": "ROLE", + "principalId": "$everyone", + "permission": "ALLOW" + } + ] +} \ No newline at end of file diff --git a/back/models/docuware.js b/back/models/docuware.js new file mode 100644 index 000000000..8fd8065ed --- /dev/null +++ b/back/models/docuware.js @@ -0,0 +1,4 @@ +module.exports = Self => { + require('../methods/docuware/download')(Self); + require('../methods/docuware/checkFile')(Self); +}; diff --git a/back/models/docuware.json b/back/models/docuware.json new file mode 100644 index 000000000..fb2ed919e --- /dev/null +++ b/back/models/docuware.json @@ -0,0 +1,38 @@ +{ + "name": "Docuware", + "description": "Docuware sections", + "base": "VnModel", + "options": { + "mysql": { + "table": "docuware" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "code": { + "type": "string" + }, + "fileCabinetName": { + "type": "string" + }, + "dialogName": { + "type": "string" + }, + "find": { + "type": "string" + } + }, + "acls": [ + { + "property": "*", + "accessType": "*", + "principalType": "ROLE", + "principalId": "$everyone", + "permission": "ALLOW" + } + ] +} \ No newline at end of file diff --git a/back/models/edi.js b/back/models/edi.js new file mode 100644 index 000000000..bfddf2746 --- /dev/null +++ b/back/models/edi.js @@ -0,0 +1,3 @@ +module.exports = Self => { + require('../methods/edi/updateData')(Self); +}; diff --git a/back/models/edi.json b/back/models/edi.json new file mode 100644 index 000000000..d436e53ff --- /dev/null +++ b/back/models/edi.json @@ -0,0 +1,5 @@ +{ + "name": "Edi", + "base": "VnModel" +} + \ No newline at end of file diff --git a/back/models/email-user.json b/back/models/email-user.json index e983635ce..81c01ab0c 100644 --- a/back/models/email-user.json +++ b/back/models/email-user.json @@ -9,7 +9,7 @@ "properties": { "userFk": { "id": true, - "type": "Number", + "type": "number", "required": true }, "email": { diff --git a/back/models/image-collection-size.json b/back/models/image-collection-size.json index adb92d16b..9452456ee 100644 --- a/back/models/image-collection-size.json +++ b/back/models/image-collection-size.json @@ -8,20 +8,20 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "width": { - "type": "Number", + "type": "number", "required": true }, "height": { - "type": "Number", + "type": "number", "required": true }, "crop": { - "type": "Boolean", + "type": "boolean", "required": true } }, diff --git a/back/models/image-collection.json b/back/models/image-collection.json index fd019ecc3..186ab0208 100644 --- a/back/models/image-collection.json +++ b/back/models/image-collection.json @@ -8,32 +8,32 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "name": { - "type": "String", + "type": "string", "required": true }, "desc": { - "type": "String", + "type": "string", "required": true }, "maxWidth": { - "type": "Number", + "type": "number", "required": true }, "maxHeight": { - "type": "Number", + "type": "number", "required": true }, "model": { - "type": "String", + "type": "string", "required": true }, "property": { - "type": "String", + "type": "string", "required": true } }, diff --git a/back/models/machine-worker.json b/back/models/machine-worker.json new file mode 100644 index 000000000..2244a533f --- /dev/null +++ b/back/models/machine-worker.json @@ -0,0 +1,33 @@ +{ + "name": "MachineWorker", + "base": "VnModel", + "options": { + "mysql": { + "table": "vn.machineWorker" + } + }, + "properties": { + "id": { + "type": "number", + "id": true + }, + "workerFk": { + "type": "number" + }, + "machineFk": { + "type": "number" + }, + "inTime": { + "type": "date", + "mysql": { + "columnName": "inTimed" + } + }, + "outTime": { + "type": "date", + "mysql": { + "columnName": "outTimed" + } + } + } +} diff --git a/back/models/notification.js b/back/models/notification.js new file mode 100644 index 000000000..65e82e3c7 --- /dev/null +++ b/back/models/notification.js @@ -0,0 +1,4 @@ +module.exports = Self => { + require('../methods/notification/send')(Self); + require('../methods/notification/clean')(Self); +}; diff --git a/back/models/notification.json b/back/models/notification.json new file mode 100644 index 000000000..56f66bf1d --- /dev/null +++ b/back/models/notification.json @@ -0,0 +1,30 @@ +{ + "name": "Notification", + "base": "VnModel", + "options": { + "mysql": { + "table": "util.notification" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "name": { + "type": "string", + "required": true + }, + "description": { + "type": "string" + } + }, + "relations": { + "subscription": { + "type": "hasMany", + "model": "NotificationSubscription", + "foreignKey": "notificationFk" + } + } +} \ No newline at end of file diff --git a/back/models/notificationAcl.json b/back/models/notificationAcl.json new file mode 100644 index 000000000..e3e97f52d --- /dev/null +++ b/back/models/notificationAcl.json @@ -0,0 +1,21 @@ +{ + "name": "NotificationAcl", + "base": "VnModel", + "options": { + "mysql": { + "table": "util.notificationAcl" + } + }, + "relations": { + "notification": { + "type": "belongsTo", + "model": "Notification", + "foreignKey": "notificationFk" + }, + "role": { + "type": "belongsTo", + "model": "Role", + "foreignKey": "roleFk" + } + } +} \ No newline at end of file diff --git a/back/models/notificationConfig.json b/back/models/notificationConfig.json new file mode 100644 index 000000000..b00ed3675 --- /dev/null +++ b/back/models/notificationConfig.json @@ -0,0 +1,19 @@ +{ + "name": "NotificationConfig", + "base": "VnModel", + "options": { + "mysql": { + "table": "util.notificationConfig" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "cleanDays": { + "type": "number" + } + } +} \ No newline at end of file diff --git a/back/models/notificationQueue.json b/back/models/notificationQueue.json new file mode 100644 index 000000000..9790ea595 --- /dev/null +++ b/back/models/notificationQueue.json @@ -0,0 +1,38 @@ +{ + "name": "NotificationQueue", + "base": "VnModel", + "options": { + "mysql": { + "table": "util.notificationQueue" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "params": { + "type": "string" + }, + "status": { + "type": "string" + }, + "created": { + "type": "date" + } + }, + "relations": { + "notification": { + "type": "belongsTo", + "model": "Notification", + "foreignKey": "notificationFk", + "primaryKey": "name" + }, + "author": { + "type": "belongsTo", + "model": "Account", + "foreignKey": "authorFk" + } + } +} \ No newline at end of file diff --git a/back/models/notificationSubscription.json b/back/models/notificationSubscription.json new file mode 100644 index 000000000..43fa6db27 --- /dev/null +++ b/back/models/notificationSubscription.json @@ -0,0 +1,33 @@ +{ + "name": "NotificationSubscription", + "base": "VnModel", + "options": { + "mysql": { + "table": "util.notificationSubscription" + } + }, + "properties": { + "notificationFk": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "userFk": { + "type": "number", + "id": true, + "description": "Identifier" + } + }, + "relations": { + "notification": { + "type": "belongsTo", + "model": "Notification", + "foreignKey": "notificationFk" + }, + "user": { + "type": "belongsTo", + "model": "Account", + "foreignKey": "userFk" + } + } +} \ No newline at end of file diff --git a/back/models/osticket-config.json b/back/models/osticket-config.json new file mode 100644 index 000000000..5a863e7bc --- /dev/null +++ b/back/models/osticket-config.json @@ -0,0 +1,58 @@ +{ + "name": "OsTicketConfig", + "base": "VnModel", + "options": { + "mysql": { + "table": "osTicketConfig" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "host": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "oldStatus": { + "type": "string" + }, + "newStatusId": { + "type": "number" + }, + "day": { + "type": "number" + }, + "comment": { + "type": "string" + }, + "hostDb": { + "type": "string" + }, + "userDb": { + "type": "string" + }, + "passwordDb": { + "type": "string" + }, + "portDb": { + "type": "number" + }, + "responseType": { + "type": "string" + }, + "fromEmailId": { + "type": "number" + }, + "replyTo": { + "type": "string" + } + } +} \ No newline at end of file diff --git a/back/models/osticket.js b/back/models/osticket.js new file mode 100644 index 000000000..50e429160 --- /dev/null +++ b/back/models/osticket.js @@ -0,0 +1,4 @@ +module.exports = Self => { + require('../methods/osticket/osTicketReportEmail')(Self); + require('../methods/osticket/closeTicket')(Self); +}; diff --git a/back/models/osticket.json b/back/models/osticket.json index 0c673d004..6ba80b30e 100644 --- a/back/models/osticket.json +++ b/back/models/osticket.json @@ -1,12 +1,5 @@ { "name": "OsTicket", - "base": "VnModel", - "acls": [{ - "property": "validations", - "accessType": "EXECUTE", - "principalType": "ROLE", - "principalId": "$everyone", - "permission": "ALLOW" - }] + "base": "VnModel" } \ No newline at end of file diff --git a/back/models/postcode.json b/back/models/postcode.json index e28a77dc4..eadc2c86c 100644 --- a/back/models/postcode.json +++ b/back/models/postcode.json @@ -9,7 +9,7 @@ "properties": { "code": { "id": true, - "type": "String" + "type": "string" } }, "relations": { diff --git a/back/models/print-config.json b/back/models/print-config.json new file mode 100644 index 000000000..badb57083 --- /dev/null +++ b/back/models/print-config.json @@ -0,0 +1,29 @@ +{ + "name": "PrintConfig", + "description": "Print config", + "base": "VnModel", + "options": { + "mysql": { + "table": "salix.printConfig" + } + }, + "properties": { + "id": { + "id": true, + "type": "number", + "description": "Identifier" + }, + "itRecipient": { + "type": "string" + }, + "incidencesEmail": { + "type": "string" + } + }, + "acls": [{ + "accessType": "READ", + "principalType": "ROLE", + "principalId": "$everyone", + "permission": "ALLOW" + }] +} \ No newline at end of file diff --git a/back/models/sage-withholding.json b/back/models/sage-withholding.json index dddbcfd74..87f00a01c 100644 --- a/back/models/sage-withholding.json +++ b/back/models/sage-withholding.json @@ -11,7 +11,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier", "mysql": { diff --git a/back/models/town.json b/back/models/town.json index 41633fe0a..4ad729791 100644 --- a/back/models/town.json +++ b/back/models/town.json @@ -9,10 +9,10 @@ "properties": { "id": { "id": true, - "type": "Number" + "type": "number" }, "name": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/back/models/url.json b/back/models/url.json new file mode 100644 index 000000000..8610ff28b --- /dev/null +++ b/back/models/url.json @@ -0,0 +1,25 @@ +{ + "name": "Url", + "base": "VnModel", + "options": { + "mysql": { + "table": "salix.url" + } + }, + "properties": { + "appName": { + "type": "string", + "required": true, + "id": 1 + }, + "environment": { + "type": "string", + "required": true, + "id": 2 + }, + "url": { + "type": "string", + "required": true + } + } +} diff --git a/back/models/user-config-view.json b/back/models/user-config-view.json index 8ffbc6f48..f9235725c 100644 --- a/back/models/user-config-view.json +++ b/back/models/user-config-view.json @@ -9,18 +9,18 @@ "properties": { "id": { "id": true, - "type": "Number" + "type": "number" }, "userFk": { - "type": "String", + "type": "string", "required": true }, "tableCode": { - "type": "String", + "type": "string", "required": true }, "configuration": { - "type": "Object" + "type": "object" } }, "relations": { diff --git a/back/models/user-config.json b/back/models/user-config.json index 336f26f63..8e4684713 100644 --- a/back/models/user-config.json +++ b/back/models/user-config.json @@ -9,20 +9,23 @@ "properties": { "userFk": { "id": true, - "type": "Number", + "type": "number", "required": true }, "warehouseFk": { - "type": "Number" + "type": "number" }, "companyFk": { - "type": "Number" + "type": "number" }, "created": { - "type": "Date" + "type": "date" }, "updated": { - "type": "Date" + "type": "date" + }, + "darkMode": { + "type": "boolean" } }, "relations": { diff --git a/back/models/user-log.json b/back/models/user-log.json index e3e3a6752..43ccbfa43 100644 --- a/back/models/user-log.json +++ b/back/models/user-log.json @@ -9,40 +9,40 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "forceId": false }, "originFk": { - "type": "Number", + "type": "number", "required": true }, "userFk": { - "type": "Number" + "type": "number" }, "action": { - "type": "String", + "type": "string", "required": true }, "changedModel": { - "type": "String" + "type": "string" }, "oldInstance": { - "type": "Object" + "type": "object" }, "newInstance": { - "type": "Object" + "type": "object" }, "creationDate": { - "type": "Date" + "type": "date" }, "changedModelId": { - "type": "Number" + "type": "number" }, "changedModelValue": { - "type": "String" + "type": "string" }, "description": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/back/models/user.json b/back/models/user.json index 1d8f8f3a5..921362e0e 100644 --- a/back/models/user.json +++ b/back/models/user.json @@ -9,7 +9,7 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "forceId": false }, "username":{ diff --git a/back/models/warehouse.json b/back/models/warehouse.json index 1d8ca44e3..dcbf7f2d2 100644 --- a/back/models/warehouse.json +++ b/back/models/warehouse.json @@ -10,23 +10,20 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "forceId": false }, "name": { - "type": "String" + "type": "string" }, "code": { - "type": "String" + "type": "string" }, "isInventory": { - "type": "Number" + "type": "number" }, "isManaged":{ "type": "boolean" - }, - "hasStowaway":{ - "type": "boolean" } }, "acls": [ diff --git a/back/nodemonConfig.json b/back/nodemonConfig.json new file mode 100644 index 000000000..5138bc30e --- /dev/null +++ b/back/nodemonConfig.json @@ -0,0 +1,25 @@ +{ + "verbose": true, + "watch": [ + "back/**/*.js", + "modules/**/*.js" + ], + "ignore": [ + "modules/account/front/**/*", + "modules/claim/front/**/*", + "modules/client/front/**/*", + "modules/entry/front/**/*", + "modules/invoiceIn/front/**/*", + "modules/invoiceOut/front/**/*", + "modules/item/front/**/*", + "modules/monitor/front/**/*", + "modules/order/front/**/*", + "modules/route/front/**/*", + "modules/supplier/front/**/*", + "modules/ticket/front/**/*", + "modules/travel/front/**/*", + "modules/shelving/front/**/*", + "modules/worker/front/**/*", + "modules/zone/front/**/*" + ] +} \ No newline at end of file diff --git a/back/tests.js b/back/tests.js index c715c96bf..ab6893791 100644 --- a/back/tests.js +++ b/back/tests.js @@ -1,4 +1,5 @@ -require('require-yaml'); +const Docker = require('../db/docker.js'); +let dataSources = require('../loopback/server/datasources.json'); process.on('warning', warning => { console.log(warning.name); @@ -6,34 +7,69 @@ process.on('warning', warning => { console.log(warning.stack); }); -let verbose = false; - -if (process.argv[2] === '--v') - verbose = true; - -let Jasmine = require('jasmine'); -let jasmine = new Jasmine(); -let SpecReporter = require('jasmine-spec-reporter').SpecReporter; - -let serviceSpecs = [ - `${__dirname}/**/*[sS]pec.js`, - `${__dirname}/../loopback/**/*[sS]pec.js`, - `${__dirname}/../modules/*/back/**/*.[sS]pec.js` -]; - -jasmine.loadConfig({ - spec_dir: '.', - spec_files: serviceSpecs, - helpers: [] +process.on('exit', async function() { + if (container) await container.rm(); }); -jasmine.addReporter(new SpecReporter({ - spec: { - // displayStacktrace: 'summary', - displaySuccessful: verbose, - displayFailedSpec: true, - displaySpecDuration: true - } -})); +let container; +async function test() { + let isCI = false; -jasmine.execute(); + if (process.argv[2] === 'ci') + isCI = true; + + container = new Docker(); + + await container.run(isCI); + dataSources = JSON.parse(JSON.stringify(dataSources)); + + Object.assign(dataSources.vn, { + host: container.dbConf.host, + port: container.dbConf.port + }); + + const bootOptions = {dataSources}; + const app = require('vn-loopback/server/server'); + app.boot(bootOptions); + + const Jasmine = require('jasmine'); + const jasmine = new Jasmine(); + + const SpecReporter = require('jasmine-spec-reporter').SpecReporter; + jasmine.addReporter(new SpecReporter({ + spec: { + displaySuccessful: isCI, + displayPending: isCI + }, + summary: { + displayPending: false, + } + })); + + if (isCI) { + const JunitReporter = require('jasmine-reporters'); + jasmine.addReporter(new JunitReporter.JUnitXmlReporter()); + + jasmine.jasmine.DEFAULT_TIMEOUT_INTERVAL = 30000; + jasmine.exitOnCompletion = true; + } + + const backSpecs = [ + './back/**/*[sS]pec.js', + './loopback/**/*[sS]pec.js', + './modules/*/back/**/*.[sS]pec.js' + ]; + + jasmine.loadConfig({ + spec_dir: '.', + spec_files: backSpecs, + helpers: [], + }); + + await jasmine.execute(); + if (app) await app.disconnect(); + if (container) await container.rm(); + console.log('App disconnected & container removed'); +} + +test(); diff --git a/db/Dockerfile b/db/Dockerfile index 8980c34f4..cb3aa741c 100644 --- a/db/Dockerfile +++ b/db/Dockerfile @@ -1,4 +1,4 @@ -FROM mariadb:10.4.13 +FROM mariadb:10.7.3 ENV MYSQL_ROOT_PASSWORD root ENV TZ Europe/Madrid @@ -31,11 +31,13 @@ COPY \ import-changes.sh \ config.ini \ dump/mysqlPlugins.sql \ + dump/mockDate.sql \ dump/structure.sql \ dump/dumpedFixtures.sql \ ./ RUN gosu mysql docker-init.sh \ && docker-dump.sh mysqlPlugins \ + && docker-dump.sh mockDate \ && docker-dump.sh structure \ && docker-dump.sh dumpedFixtures \ && gosu mysql docker-temp-stop.sh diff --git a/db/changes/10390-constitution/00-absenceType.sql b/db/changes/10390-constitution/00-absenceType.sql deleted file mode 100644 index 7de22807c..000000000 --- a/db/changes/10390-constitution/00-absenceType.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE vn.absenceType - SET code='halfPaidLeave' - WHERE id=15 AND name='Permiso retribuido 1/2 día' AND rgb='#5151c0' AND code IS NULL AND permissionRate=NULL AND holidayEntitlementRate=0.50 AND discountRate=0.00; diff --git a/db/changes/10390-constitution/00-acl.sql b/db/changes/10390-constitution/00-acl.sql deleted file mode 100644 index f887a57f0..000000000 --- a/db/changes/10390-constitution/00-acl.sql +++ /dev/null @@ -1,27 +0,0 @@ -INSERT INTO `salix`.`ACL` - (model, property, accessType, permission, principalType, principalId) - VALUES - ('EntryObservation', '*', '*', 'ALLOW', 'ROLE', 'buyer'), - ('LdapConfig', '*', '*', 'ALLOW', 'ROLE', 'sysadmin'), - ('SambaConfig', '*', '*', 'ALLOW', 'ROLE', 'sysadmin'), - ('ACL', '*', '*', 'ALLOW', 'ROLE', 'developer'), - ('AccessToken', '*', '*', 'ALLOW', 'ROLE', 'developer'), - ('MailAliasAccount', '*', '*', 'ALLOW', 'ROLE', 'marketing'), - ('MailAliasAccount', '*', '*', 'ALLOW', 'ROLE', 'hr'), - ('MailAlias', '*', '*', 'ALLOW', 'ROLE', 'hr'), - ('MailForward', '*', '*', 'ALLOW', 'ROLE', 'marketing'), - ('MailForward', '*', '*', 'ALLOW', 'ROLE', 'hr'), - ('RoleInherit', '*', '*', 'ALLOW', 'ROLE', 'it'), - ('RoleRole', '*', '*', 'ALLOW', 'ROLE', 'it'), - ('AccountConfig', '*', '*', 'ALLOW', 'ROLE', 'sysadmin'); - -UPDATE `salix`.`ACL` - SET accessType='*', principalId='it' - WHERE model = 'Role'; - -DELETE FROM `salix`.`ACL` - WHERE id IN (280, 281); - -UPDATE `salix`.`ACL` - SET accessType='*', principalId='marketing' - WHERE id=279; diff --git a/db/changes/10390-constitution/00-defaultViewConfig.sql b/db/changes/10390-constitution/00-defaultViewConfig.sql deleted file mode 100644 index c67b6fed0..000000000 --- a/db/changes/10390-constitution/00-defaultViewConfig.sql +++ /dev/null @@ -1,5 +0,0 @@ -UPDATE `salix`.`defaultViewConfig` - SET `columns` = '{"intrastat":false,"description":false,"density":false,"isActive":false, - "freightValue":false,"packageValue":false,"isIgnored":false,"price2":false,"ektFk":false,"weight":false, - "size":false,"comissionValue":false,"landing":false}' - WHERE tableCode = 'latestBuys' \ No newline at end of file diff --git a/db/changes/10390-constitution/00-department.sql b/db/changes/10390-constitution/00-department.sql deleted file mode 100644 index e882296ad..000000000 --- a/db/changes/10390-constitution/00-department.sql +++ /dev/null @@ -1,33 +0,0 @@ -UPDATE vn.department - SET notificationEmail='direccioncomercial@verdnatura.es' - WHERE id=96; -UPDATE vn.department - SET notificationEmail='direccioncomercial@verdnatura.es' - WHERE id=95; -UPDATE vn.department - SET notificationEmail='direccioncomercial@verdnatura.es' - WHERE id=115; -UPDATE vn.department - SET notificationEmail='direccioncomercial@verdnatura.es' - WHERE id=123; -UPDATE vn.department - SET notificationEmail='direccioncomercial@verdnatura.es' - WHERE id=94; -UPDATE vn.department - SET notificationEmail='direccioncomercial@verdnatura.es' - WHERE id=101; -UPDATE vn.department - SET notificationEmail='direccioncomercial@verdnatura.es' - WHERE id=80; -UPDATE vn.department - SET notificationEmail='direccioncomercial@verdnatura.es' - WHERE id=125; -UPDATE vn.department - SET notificationEmail='direccioncomercial@verdnatura.es' - WHERE id=98; -UPDATE vn.department - SET notificationEmail='direccioncomercial@verdnatura.es' - WHERE id=92; -UPDATE vn.department - SET notificationEmail='' - WHERE id=43; \ No newline at end of file diff --git a/db/changes/10390-constitution/00-item_getBalance.sql b/db/changes/10390-constitution/00-item_getBalance.sql deleted file mode 100644 index f0c4d1c41..000000000 --- a/db/changes/10390-constitution/00-item_getBalance.sql +++ /dev/null @@ -1,142 +0,0 @@ -DROP PROCEDURE IF EXISTS `vn`.`item_getBalance`; - -DELIMITER $$ -$$ -CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`item_getBalance`(IN vItemId int, IN vWarehouse int) -BEGIN - DECLARE vDateInventory DATETIME; - DECLARE vCurdate DATE DEFAULT CURDATE(); - DECLARE vDayEnd DATETIME DEFAULT util.dayEnd(vCurdate); - - SELECT inventoried INTO vDateInventory FROM config; - SET @a = 0; - SET @currentLineFk = 0; - SET @shipped = ''; - - SELECT DATE(@shipped:= shipped) shipped, - alertLevel, - stateName, - origin, - reference, - clientFk, - name, - `in` AS invalue, - `out`, - @a := @a + IFNULL(`in`,0) - IFNULL(`out`,0) as balance, - @currentLineFk := IF (@shipped < CURDATE() - OR (@shipped = CURDATE() AND (isPicked OR alertLevel >= 2)), - lineFk,@currentLineFk) lastPreparedLineFk, - isTicket, - lineFk, - isPicked, - clientType, - claimFk - FROM - ( SELECT tr.landed AS shipped, - b.quantity AS `in`, - NULL AS `out`, - al.id AS alertLevel, - st.name AS stateName, - s.name AS name, - e.ref AS reference, - e.id AS origin, - s.id AS clientFk, - IF(al.id = 3, TRUE, FALSE) isPicked, - FALSE AS isTicket, - b.id lineFk, - NULL `order`, - NULL AS clientType, - NULL AS claimFk - FROM buy b - JOIN entry e ON e.id = b.entryFk - JOIN travel tr ON tr.id = e.travelFk - JOIN supplier s ON s.id = e.supplierFk - JOIN alertLevel al ON al.id = - CASE - WHEN tr.shipped < CURDATE() THEN 3 - WHEN tr.shipped = CURDATE() AND tr.isReceived = TRUE THEN 3 - ELSE 0 - END - JOIN state st ON st.code = al.code - WHERE tr.landed >= vDateInventory - AND vWarehouse = tr.warehouseInFk - AND b.itemFk = vItemId - AND e.isInventory = FALSE - AND e.isRaid = FALSE - UNION ALL - - SELECT tr.shipped, - NULL, - b.quantity, - al.id, - st.name, - s.name, - e.ref, - e.id, - s.id, - IF(al.id = 3, TRUE, FALSE), - FALSE, - b.id, - NULL, - NULL, - NULL - FROM buy b - JOIN entry e ON e.id = b.entryFk - JOIN travel tr ON tr.id = e.travelFk - JOIN warehouse w ON w.id = tr.warehouseOutFk - JOIN supplier s ON s.id = e.supplierFk - JOIN alertLevel al ON al.id = - CASE - WHEN tr.shipped < CURDATE() THEN 3 - WHEN tr.shipped = CURDATE() AND tr.isReceived = TRUE THEN 3 - ELSE 0 - END - JOIN state st ON st.code = al.code - WHERE tr.shipped >= vDateInventory - AND vWarehouse =tr.warehouseOutFk - AND s.id <> 4 - AND b.itemFk = vItemId - AND e.isInventory = FALSE - AND w.isFeedStock = FALSE - AND e.isRaid = FALSE - UNION ALL - - SELECT DATE(t.shipped), - NULL, - s.quantity, - al.id, - st.name, - t.nickname, - t.refFk, - t.id, - t.clientFk, - stk.id, - TRUE, - s.id, - st.`order`, - ct.code, - cb.claimFk - FROM sale s - JOIN ticket t ON t.id = s.ticketFk - LEFT JOIN ticketState ts ON ts.ticket = t.id - LEFT JOIN state st ON st.code = ts.code - JOIN client c ON c.id = t.clientFk - JOIN clientType ct ON ct.id = c.clientTypeFk - JOIN alertLevel al ON al.id = - CASE - WHEN t.shipped < curdate() THEN 3 - WHEN t.shipped > util.dayEnd(curdate()) THEN 0 - ELSE IFNULL(ts.alertLevel, 0) - END - LEFT JOIN state stPrep ON stPrep.`code` = 'PREPARED' - LEFT JOIN saleTracking stk ON stk.saleFk = s.id AND stk.stateFk = stPrep.id - LEFT JOIN claimBeginning cb ON s.id = cb.saleFk - WHERE t.shipped >= vDateInventory - AND s.itemFk = vItemId - AND vWarehouse =t.warehouseFk - ORDER BY shipped, alertLevel DESC, isTicket, `order` DESC, isPicked DESC, `in` DESC, `out` DESC - ) AS itemDiary; - -END; -$$ -DELIMITER ; diff --git a/db/changes/10390-constitution/00-payMethod.sql b/db/changes/10390-constitution/00-payMethod.sql deleted file mode 100644 index 6e196af95..000000000 --- a/db/changes/10390-constitution/00-payMethod.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE vn.payMethod CHANGE ibanRequiredForClients isIbanRequiredForClients tinyint(3) DEFAULT 0 NULL; -ALTER TABLE vn.payMethod CHANGE ibanRequiredForSuppliers isIbanRequiredForSuppliers tinyint(3) DEFAULT 0 NULL; diff --git a/db/changes/10390-constitution/00-sale_recalcComponent.sql b/db/changes/10390-constitution/00-sale_recalcComponent.sql deleted file mode 100644 index c28115470..000000000 --- a/db/changes/10390-constitution/00-sale_recalcComponent.sql +++ /dev/null @@ -1,120 +0,0 @@ -DROP PROCEDURE IF EXISTS `vn`.`sale_recalcComponent`; - -DELIMITER $$ -$$ -CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`sale_recalcComponent`(vOption INT) -proc: BEGIN -/** - * Actualiza los componentes - * - * @table tmp.recalculateSales - */ - DECLARE vShipped DATE; - DECLARE vWarehouseFk SMALLINT; - DECLARE vAgencyModeFk INT; - DECLARE vAddressFk INT; - DECLARE vTicketFk BIGINT; - DECLARE vItemFk BIGINT; - DECLARE vLanded DATE; - DECLARE vIsEditable BOOLEAN; - DECLARE vZoneFk INTEGER; - DECLARE vOption INTEGER; - - DECLARE vSale INTEGER; - DECLARE vDone BOOL DEFAULT FALSE; - - DECLARE vCur CURSOR FOR - SELECT id from tmp.recalculateSales; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - OPEN vCur; - - l: LOOP - SET vDone = FALSE; - FETCH vCur INTO vSale; - - IF vDone THEN - LEAVE l; - END IF; - - SELECT t.refFk IS NULL AND (IFNULL(ts.alertLevel, 0) = 0 OR s.price = 0), - s.ticketFk, - s.itemFk , - t.zoneFk, - t.warehouseFk, - t.shipped, - t.addressFk, - t.agencyModeFk, - t.landed - INTO vIsEditable, - vTicketFk, - vItemFk, - vZoneFk, - vWarehouseFk, - vShipped, - vAddressFk, - vAgencyModeFk, - vLanded - FROM ticket t - JOIN sale s ON s.ticketFk = t.id - LEFT JOIN ticketState ts ON ts.ticketFk = t.id - WHERE s.id = vSale; - - CALL zone_getLanded(vShipped, vAddressFk, vAgencyModeFk, vWarehouseFk, TRUE); - - IF (SELECT COUNT(*) FROM tmp.zoneGetLanded LIMIT 1) = 0 THEN - CALL util.throw('There is no zone for these parameters'); - END IF; - - IF vLanded IS NULL OR vZoneFk IS NULL THEN - - UPDATE ticket t - SET t.landed = (SELECT landed FROM tmp.zoneGetLanded LIMIT 1) - WHERE t.id = vTicketFk AND t.landed IS NULL; - - IF vZoneFk IS NULL THEN - SELECT zoneFk INTO vZoneFk FROM tmp.zoneGetLanded LIMIT 1; - UPDATE ticket t - SET t.zoneFk = vZoneFk - WHERE t.id = vTicketFk AND t.zoneFk IS NULL; - END IF; - - END IF; - - DROP TEMPORARY TABLE tmp.zoneGetLanded; - - -- rellena la tabla buyUltimate con la ultima compra - CALL buyUltimate (vWarehouseFk, vShipped); - - DELETE FROM tmp.buyUltimate WHERE itemFk != vItemFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot - SELECT vWarehouseFk warehouseFk, NULL available, vItemFk itemFk, buyFk, vZoneFk zoneFk - FROM tmp.buyUltimate - WHERE itemFk = vItemFk; - - CALL catalog_componentPrepare(); - CALL catalog_componentCalculate(vZoneFk, vAddressFk, vShipped, vWarehouseFk); - - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT vSale saleFk,vWarehouseFk warehouseFk; - - IF vOption IS NULL THEN - SET vOption = IF(vIsEditable, 1, 6); - END IF; - - CALL ticketComponentUpdateSale(vOption); - CALL catalog_componentPurge(); - - DROP TEMPORARY TABLE tmp.buyUltimate; - DROP TEMPORARY TABLE tmp.sale; - - END LOOP; - CLOSE vCur; - -END$$ -DELIMITER ; diff --git a/db/changes/10390-constitution/01-sale_calculateComponent.sql b/db/changes/10390-constitution/01-sale_calculateComponent.sql deleted file mode 100644 index 97a154362..000000000 --- a/db/changes/10390-constitution/01-sale_calculateComponent.sql +++ /dev/null @@ -1,23 +0,0 @@ -DROP PROCEDURE IF EXISTS `vn`.`sale_calculateComponent`; - -DELIMITER $$ -$$ -CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`sale_calculateComponent`(vSale INT, vOption INT) -proc: BEGIN -/** - * Crea tabla temporal para vn.sale_recalcComponent() para recalcular los componentes - * - * @param vSale Id de la venta - * @param vOption indica en que componente pone el descuadre, NULL en casos habituales - */ - DROP TEMPORARY TABLE IF EXISTS tmp.recalculateSales; - CREATE TEMPORARY TABLE tmp.recalculateSales - SELECT s.id - FROM sale s - WHERE s.id = vSale; - - CALL vn.sale_recalcComponent(vOption); - - DROP TEMPORARY TABLE tmp.recalculateSales; -END$$ -DELIMITER ; \ No newline at end of file diff --git a/db/changes/10400-christmas/00-ACL.sql b/db/changes/10400-christmas/00-ACL.sql deleted file mode 100644 index 4f87cb708..000000000 --- a/db/changes/10400-christmas/00-ACL.sql +++ /dev/null @@ -1,2 +0,0 @@ -INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) - VALUES ('Sale','payBack','WRITE','ALLOW','ROLE','employee'); diff --git a/db/changes/10400-christmas/00-payMethod_hasVerified.sql b/db/changes/10400-christmas/00-payMethod_hasVerified.sql deleted file mode 100644 index 280a9e097..000000000 --- a/db/changes/10400-christmas/00-payMethod_hasVerified.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE `vn`.`payMethod` ADD hasVerified TINYINT(1) DEFAULT 0 NULL; \ No newline at end of file diff --git a/db/changes/10400-christmas/00-ticket_doRefund.sql b/db/changes/10400-christmas/00-ticket_doRefund.sql deleted file mode 100644 index 1c1faf315..000000000 --- a/db/changes/10400-christmas/00-ticket_doRefund.sql +++ /dev/null @@ -1,90 +0,0 @@ -DROP PROCEDURE IF EXISTS `vn`.`ticket_doRefund`; - -DELIMITER $$ -$$ -CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_doRefund`(IN vOriginTicket INT, OUT vNewTicket INT) -BEGIN - - DECLARE vDone BIT DEFAULT 0; - DECLARE vCustomer MEDIUMINT; - DECLARE vWarehouse TINYINT; - DECLARE vCompany MEDIUMINT; - DECLARE vAddress MEDIUMINT; - DECLARE vRefundAgencyMode INT; - DECLARE vItemFk INT; - DECLARE vQuantity DECIMAL (10,2); - DECLARE vConcept VARCHAR(50); - DECLARE vPrice DECIMAL (10,2); - DECLARE vDiscount TINYINT; - DECLARE vSaleNew INT; - DECLARE vSaleMain INT; - DECLARE vZoneFk INT; - - DECLARE vRsMainTicket CURSOR FOR - SELECT * - FROM tmp.sale; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = 1; - - SELECT id INTO vRefundAgencyMode - FROM agencyMode WHERE `name` = 'ABONO'; - - SELECT clientFk, warehouseFk, companyFk, addressFk - INTO vCustomer, vWarehouse, vCompany, vAddress - FROM ticket - WHERE id = vOriginTicket; - - SELECT id INTO vZoneFk - FROM zone WHERE agencyModeFk = vRefundAgencyMode - LIMIT 1; - - INSERT INTO vn.ticket ( - clientFk, - shipped, - addressFk, - agencyModeFk, - nickname, - warehouseFk, - companyFk, - landed, - zoneFk - ) - SELECT - vCustomer, - CURDATE(), - vAddress, - vRefundAgencyMode, - a.nickname, - vWarehouse, - vCompany, - CURDATE(), - vZoneFk - FROM address a - WHERE a.id = vAddress; - - SET vNewTicket = LAST_INSERT_ID(); - - SET vDone := 0; - OPEN vRsMainTicket ; - FETCH vRsMainTicket INTO vSaleMain, vItemFk, vQuantity, vConcept, vPrice, vDiscount; - - WHILE NOT vDone DO - - INSERT INTO vn.sale(ticketFk, itemFk, quantity, concept, price, discount) - VALUES( vNewTicket, vItemFk, vQuantity, vConcept, vPrice, vDiscount ); - - SET vSaleNew = LAST_INSERT_ID(); - - INSERT INTO vn.saleComponent(saleFk,componentFk,`value`) - SELECT vSaleNew,componentFk,`value` - FROM vn.saleComponent - WHERE saleFk = vSaleMain; - - FETCH vRsMainTicket INTO vSaleMain, vItemFk, vQuantity, vConcept, vPrice, vDiscount; - - END WHILE; - CLOSE vRsMainTicket; - -END; -$$ -DELIMITER ; \ No newline at end of file diff --git a/db/changes/10400-christmas/00-updateDepartment.sql b/db/changes/10400-christmas/00-updateDepartment.sql deleted file mode 100644 index ce46220ca..000000000 --- a/db/changes/10400-christmas/00-updateDepartment.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE `vn`.`department` - SET `notificationEmail` = 'finanzas@verdnatura.es' - WHERE `name` = 'FINANZAS'; \ No newline at end of file diff --git a/db/changes/10400-christmas/00-updateSupplier.sql b/db/changes/10400-christmas/00-updateSupplier.sql deleted file mode 100644 index 49fa2eb15..000000000 --- a/db/changes/10400-christmas/00-updateSupplier.sql +++ /dev/null @@ -1,2 +0,0 @@ -UPDATE `vn`.`supplier` - SET isPayMethodChecked = TRUE; \ No newline at end of file diff --git a/db/changes/10400-christmas/01-payment_afterInsert.sql b/db/changes/10400-christmas/01-payment_afterInsert.sql deleted file mode 100644 index f422ebce2..000000000 --- a/db/changes/10400-christmas/01-payment_afterInsert.sql +++ /dev/null @@ -1,33 +0,0 @@ -DELIMITER $$ -$$ -CREATE DEFINER=`root`@`%` TRIGGER `vn`.`payment_afterInsert` AFTER INSERT ON `payment` FOR EACH ROW -BEGIN - DECLARE vIsPayMethodChecked BOOLEAN; - DECLARE vEmail VARCHAR(150); - - SELECT isPayMethodChecked INTO vIsPayMethodChecked - FROM supplier - WHERE id = NEW.supplierFk; - - - IF vIsPayMethodChecked = FALSE THEN - - SELECT notificationEmail INTO vEmail - FROM department - WHERE name = 'FINANZAS'; - - CALL mail_insert( - vEmail, - NULL, - 'Pago con método sin verificar', - CONCAT( - 'Se ha realizado el pago ', - NEW.id, - ' al proveedor ', - NEW.supplierFk, - ' con el método de pago sin verificar.' - ) - ); - END IF; -END$$ -DELIMITER ; diff --git a/db/changes/10400-christmas/01-supplier_beforeUpdate.sql b/db/changes/10400-christmas/01-supplier_beforeUpdate.sql deleted file mode 100644 index b3ffccf9c..000000000 --- a/db/changes/10400-christmas/01-supplier_beforeUpdate.sql +++ /dev/null @@ -1,26 +0,0 @@ -DROP TRIGGER IF EXISTS `vn`.`supplier_beforeUpdate`; - -DELIMITER $$ -$$ -CREATE DEFINER=`root`@`%` TRIGGER `vn`.`supplier_beforeUpdate` - BEFORE UPDATE ON `vn`.`supplier` FOR EACH ROW -BEGIN - DECLARE vHasChange BOOL DEFAULT FALSE; - DECLARE vPayMethodHasVerified BOOL; - - SELECT hasVerified INTO vPayMethodHasVerified - FROM payMethod - WHERE id = NEW.payMethodFk; - - SET vHasChange = (NEW.payDemFk <> OLD.payDemFk) OR (NEW.payDay <> OLD.payDay); - - IF vPayMethodHasVerified AND !vHasChange THEN - SET vHasChange = (NEW.payMethodFk <> OLD.payMethodFk); - END IF; - - IF vHasChange THEN - SET NEW.isPayMethodChecked = FALSE; - END IF; - -END$$ -DELIMITER ; diff --git a/db/changes/10411-january/00-booking.sql b/db/changes/10411-january/00-booking.sql deleted file mode 100644 index b89234139..000000000 --- a/db/changes/10411-january/00-booking.sql +++ /dev/null @@ -1,248 +0,0 @@ -DROP PROCEDURE IF EXISTS vn.invoiceInBookingMain; - -DELIMITER $$ -$$ -CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`invoiceInBookingMain`(vInvoiceInId INT) -BEGIN - DECLARE vTotalAmount,vTotalAmountDivisa DECIMAL(10,2); - DECLARE vBookNumber,vSerialNumber INT; - DECLARE vRate DECIMAL(10,4); - - CALL invoiceInBookingCommon(vInvoiceInId,vSerialNumber); - - SELECT SUM(iit.taxableBase * IF( i.serial= 'R' AND ti.Iva <> 'HP DEVENGADO 21 ISP', 1 +(ti.PorcentajeIva/100),1)), - SUM(iit.foreignValue * IF( i.serial= 'R', 1 + (ti.PorcentajeIva/100),1)), - iit.taxableBase/iit.foreignValue - INTO vTotalAmount, vTotalAmountDivisa, vRate - FROM newInvoiceIn i - JOIN invoiceInTax iit ON iit.invoiceInFk = i.id - LEFT JOIN sage.TiposIva ti ON ti.CodigoIva = iit.taxTypeSageFk; - - CALL vn.ledger_next(vBookNumber); - - -- Apunte del proveedor - - INSERT INTO XDiario(ASIEN, - FECHA, - SUBCTA, - EUROHABER, - CONCEPTO, - CAMBIO, - HABERME, - NFACTICK, - CLAVE, - empresa_id - ) - SELECT - vBookNumber, - n.bookEntried, - s.supplierAccount, - vTotalAmount EUROHABER, - n.conceptWithSupplier, - vRate, - vTotalAmountDivisa, - n.invoicesCount, - vInvoiceInId, - n.companyFk - FROM newInvoiceIn n - JOIN newSupplier s; - - -- Línea de Gastos - INSERT INTO XDiario ( ASIEN, - FECHA, - SUBCTA, - CONTRA, - EURODEBE, - EUROHABER, - CONCEPTO, - CAMBIO, - DEBEME, - HABERME, - NFACTICK, - empresa_id - ) - SELECT vBookNumber ASIEN, - n.bookEntried FECHA, - IF(e.isWithheld , LPAD(RIGHT(s.supplierAccount,5),10,iit.expenceFk),iit.expenceFk) SUBCTA, - s.supplierAccount CONTRA, - IF(e.isWithheld AND iit.taxableBase < 0, NULL, ROUND(SUM(iit.taxableBase),2)) EURODEBE, - IF(e.isWithheld AND iit.taxableBase < 0,ROUND(SUM(-iit.taxableBase),2),NULL) EUROHABER, - n.conceptWithSupplier CONCEPTO, - vRate, - IF(e.isWithheld,NULL,ABS(ROUND(SUM(iit.foreignValue),2))) DEBEME, - IF(e.isWithheld,ABS(ROUND(SUM(iit.foreignValue),2)),NULL) HABERME, - n.invoicesCount NFACTICK, - n.companyFk empresa_id - FROM newInvoiceIn n - JOIN newSupplier s - JOIN invoiceInTax iit ON iit.invoiceInFk = n.id - JOIN (SELECT * FROM expence e GROUP BY e.id)e ON e.id = iit.expenceFk - WHERE e.name != 'Suplidos Transitarios nacionales' - GROUP BY iit.expenceFk; - - -- Líneas de IVA - - INSERT INTO XDiario( ASIEN, - FECHA, - SUBCTA, - CONTRA, - EURODEBE, - BASEEURO, - CONCEPTO, - FACTURA, - IVA, - AUXILIAR, - SERIE, - TIPOOPE, - FECHA_EX, - FECHA_OP, - NFACTICK, - FACTURAEX, - L340, - LRECT349, - TIPOCLAVE, - TIPOEXENCI, - TIPONOSUJE, - TIPOFACT, - TIPORECTIF, - TERIDNIF, - TERNIF, - TERNOM, - FECREGCON, - empresa_id - ) - SELECT vBookNumber ASIEN, - n.bookEntried FECHA, - IF(n.expenceFkDeductible>0, n.expenceFkDeductible, ti.CuentaIvaSoportado) SUBCTA, - s.supplierAccount CONTRA, - SUM(ROUND(ti.PorcentajeIva * it.taxableBase / 100 /* + 0.0001*/ , 2)) EURODEBE, - SUM(it.taxableBase) BASEEURO, - GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, - vSerialNumber FACTURA, - ti.PorcentajeIva IVA, - IF(isUeeMember AND eWithheld.id IS NULL,'','*') AUXILIAR, - n.serial SERIE, - ttr.ClaveOperacionDefecto, - n.issued FECHA_EX, - n.operated FECHA_OP, - n.invoicesCount NFACTICK, - n.supplierRef FACTURAEX, - TRUE L340, - (isSameCountry OR NOT isUeeMember) LRECT349, - n.cplusTrascendency472Fk TIPOCLAVE, - n.cplusTaxBreakFk TIPOEXENCI, - n.cplusSubjectOpFk TIPONOSUJE, - n.cplusInvoiceType472Fk TIPOFACT, - n.cplusRectificationTypeFk TIPORECTIF, - iis.cplusTerIdNifFk TERIDNIF, - s.nif AS TERNIF, - s.name AS TERNOM, - n.booked FECREGCON, - n.companyFk - FROM newInvoiceIn n - JOIN newSupplier s - JOIN invoiceInTax it ON n.id = it.invoiceInFk - JOIN sage.TiposIva ti ON ti.CodigoIva = it.taxTypeSageFk - JOIN sage.TiposTransacciones ttr ON ttr.CodigoTransaccion = it.transactionTypeSageFk - JOIN invoiceInSerial iis ON iis.code = n.serial - JOIN (SELECT * FROM expence e GROUP BY e.id)e ON e.id = it.expenceFk - LEFT JOIN ( - SELECT eWithheld.id - FROM invoiceInTax hold - JOIN expence eWithheld ON eWithheld.id = hold.expenceFk AND eWithheld.isWithheld - WHERE hold.invoiceInFk = vInvoiceInId LIMIT 1 - ) eWithheld ON TRUE - WHERE it.taxTypeSageFk IS NOT NULL - AND it.taxTypeSageFk NOT IN (22, 90) - GROUP BY ti.PorcentajeIva, e.id; - - -- Línea iva inversor sujeto pasivo - - INSERT INTO XDiario( ASIEN, - FECHA, - SUBCTA, - CONTRA, - EUROHABER, - BASEEURO, - CONCEPTO, - FACTURA, - IVA, - AUXILIAR, - SERIE, - TIPOOPE, - FECHA_EX, - FECHA_OP, - NFACTICK, - FACTURAEX, - L340, - LRECT349, - TIPOCLAVE, - TIPOEXENCI, - TIPONOSUJE, - TIPOFACT, - TIPORECTIF, - TERIDNIF, - TERNIF, - TERNOM, - empresa_id - ) - SELECT vBookNumber ASIEN, - n.bookEntried FECHA, - ti.CuentaIvaRepercutido SUBCTA, - s.supplierAccount CONTRA, - SUM(ROUND(ti.PorcentajeIva * it.taxableBase / 100,2)) EUROHABER, - ROUND(SUM(it.taxableBase),2) BASEEURO, - GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, - vSerialNumber FACTURA, - ti.PorcentajeIva IVA, - '*' AUXILIAR, - n.serial SERIE, - ttr.ClaveOperacionDefecto, - n.issued FECHA_EX, - n.operated FECHA_OP, - n.invoicesCount NFACTICK, - n.supplierRef FACTURAEX, - FALSE L340, - (isSameCountry OR NOT isUeeMember) LRECT349, - 1 TIPOCLAVE, - n.cplusTaxBreakFk TIPOEXENCI, - n.cplusSubjectOpFk TIPONOSUJE, - n.cplusInvoiceType472Fk TIPOFACT, - n.cplusRectificationTypeFk TIPORECTIF, - iis.cplusTerIdNifFk TERIDNIF, - s.nif AS TERNIF, - s.name AS TERNOM, - n.companyFk - FROM newInvoiceIn n - JOIN newSupplier s - JOIN invoiceInTax it ON n.id = it.invoiceInFk - JOIN sage.TiposIva ti ON ti.CodigoIva = it.taxTypeSageFk - JOIN sage.TiposTransacciones ttr ON ttr.CodigoTransaccion = it.transactionTypeSageFk - JOIN invoiceInSerial iis ON iis.code = n.serial - JOIN (SELECT * FROM expence e GROUP BY e.id)e ON e.id = it.expenceFk - WHERE ti.Iva = 'HP DEVENGADO 21 ISP' OR MID(s.account, 4, 1) = '1' - GROUP BY ti.PorcentajeIva, e.id; - - -- Actualización del registro original - UPDATE invoiceIn ii - JOIN newInvoiceIn ni ON ii.id = ni.id - SET ii.serialNumber = vSerialNumber, - ii.isBooked = TRUE; - - -- Problemas derivados de la precisión en los decimales al calcular los impuestos - UPDATE XDiario - SET EURODEBE = EURODEBE - - (SELECT IF(ABS(sub.difference) = 0.01, sub.difference, 0) - FROM( - SELECT SUM(IFNULL(ROUND(EURODEBE, 2),0)) - SUM(IFNULL(ROUND(EUROHABER, 2), 0)) difference - FROM XDiario - WHERE ASIEN = vBookNumber - )sub - ) - WHERE ASIEN = vBookNumber - AND EURODEBE <> 0 - ORDER BY id DESC - LIMIT 1; - -END$$ -DELIMITER ; diff --git a/db/changes/10411-january/00-companyGroup.sql b/db/changes/10411-january/00-companyGroup.sql deleted file mode 100644 index 2c5477e63..000000000 --- a/db/changes/10411-january/00-companyGroup.sql +++ /dev/null @@ -1,12 +0,0 @@ -UPDATE `vn`.`companyGroup` - SET `code`='verdnatura' - WHERE `id`=1; -UPDATE `vn`.`companyGroup` - SET `code`='ornamental' - WHERE `id`=2; -UPDATE `vn`.`companyGroup` - SET `code`='other' - WHERE `id`=3; -UPDATE `vn`.`companyGroup` - SET `code`='provisional' - WHERE `id`=4; diff --git a/db/changes/10411-january/00-saleVolume.sql b/db/changes/10411-january/00-saleVolume.sql deleted file mode 100644 index e8a5e3433..000000000 --- a/db/changes/10411-january/00-saleVolume.sql +++ /dev/null @@ -1,38 +0,0 @@ -USE vn; -DELIMITER $$ -$$ -CREATE OR REPLACE -ALGORITHM = UNDEFINED VIEW `vn`.`saleVolume` AS -select - `s`.`ticketFk` AS `ticketFk`, - `s`.`id` AS `saleFk`, - round(`ic`.`cm3delivery` * `s`.`quantity` / 1000, 0) AS `litros`, - `t`.`routeFk` AS `routeFk`, - `t`.`shipped` AS `shipped`, - `t`.`landed` AS `landed`, - `s`.`quantity` * `ic`.`cm3delivery` / 1000000 AS `volume`, - `s`.`quantity` * `ic`.`grams` / 1000 AS `physicalWeight`, - `s`.`quantity` * `ic`.`cm3delivery` * greatest(`i`.`density`, 167) / 1000000 AS `weight`, - `s`.`quantity` * `ic`.`cm3delivery` / 1000000 AS `physicalVolume`, - `s`.`quantity` * `ic`.`cm3delivery` * ifnull(`t`.`zonePrice`, `z`.`price`) / (`vc`.`standardFlowerBox` * 1000) AS `freight`, - `t`.`zoneFk` AS `zoneFk`, - `t`.`clientFk` AS `clientFk`, - `s`.`isPicked` AS `isPicked`, - `s`.`quantity` * `s`.`price` * (100 - `s`.`discount`) / 100 AS `eurosValue`, - `i`.`itemPackingTypeFk` AS `itemPackingTypeFk` -from - (((((`sale` `s` -join `item` `i` on - (`i`.`id` = `s`.`itemFk`)) -join `ticket` `t` on - (`t`.`id` = `s`.`ticketFk`)) -join `zone` `z` on - (`z`.`id` = `t`.`zoneFk`)) -join `volumeConfig` `vc`) -join `itemCost` `ic` on - (`ic`.`itemFk` = `s`.`itemFk` - and `ic`.`warehouseFk` = `t`.`warehouseFk`)) -where - `s`.`quantity` > 0; -$$ -DELIMITER ; diff --git a/db/changes/10411-january/00-ticket_getMovable.sql b/db/changes/10411-january/00-ticket_getMovable.sql deleted file mode 100644 index 5f5b0a93a..000000000 --- a/db/changes/10411-january/00-ticket_getMovable.sql +++ /dev/null @@ -1,43 +0,0 @@ -DROP PROCEDURE IF EXISTS `vn`.`ticket_getMovable`; - -DELIMITER $$ -$$ -CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`ticket_getMovable`(vTicketFk INT, vDatedNew DATETIME, vWarehouseFk INT) -BEGIN -/** - * Cálcula el stock movible para los artículos de un ticket - * - * @param vTicketFk -> Ticket - * @param vDatedNew -> Nueva fecha - * @return Sales con Movible -*/ - DECLARE vDatedOld DATETIME; - - SELECT t.shipped INTO vDatedOld - FROM ticket t - WHERE t.id = vTicketFk; - - CALL itemStock(vWarehouseFk, DATE_SUB(vDatedNew, INTERVAL 1 DAY), NULL); - CALL item_getMinacum(vWarehouseFk, vDatedNew, DATEDIFF(vDatedOld, vDatedNew), NULL); - - SELECT s.id, - s.itemFk, - s.quantity, - s.concept, - s.price, - s.reserved, - s.discount, - i.image, - i.subName, - il.stock + IFNULL(im.amount, 0) AS movable - FROM ticket t - JOIN sale s ON s.ticketFk = t.id - JOIN item i ON i.id = s.itemFk - LEFT JOIN tmp.itemMinacum im ON im.itemFk = s.itemFk AND im.warehouseFk = vWarehouseFk - LEFT JOIN tmp.itemList il ON il.itemFk = s.itemFk - WHERE t.id = vTicketFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.itemList; - DROP TEMPORARY TABLE IF EXISTS tmp.itemMinacum; -END$$ -DELIMITER ; diff --git a/db/changes/10411-january/00-workerLabour.sql b/db/changes/10411-january/00-workerLabour.sql deleted file mode 100644 index 8630eee22..000000000 --- a/db/changes/10411-january/00-workerLabour.sql +++ /dev/null @@ -1,25 +0,0 @@ -ALTER TABLE `postgresql`.`business` ADD payedHolidays INT NULL; -ALTER TABLE `postgresql`.`business` CHANGE payedHolidays payedHolidays INT NULL AFTER reasonEndFk; - -CREATE OR REPLACE -ALGORITHM = UNDEFINED VIEW `vn`.`workerLabour` AS -select -`b`.`business_id` AS `businessFk`, -`p`.`id_trabajador` AS `workerFk`, -`bl`.`workcenter_id` AS `workCenterFk`, -`b`.`date_start` AS `started`, -`b`.`date_end` AS `ended`, -`d`.`id` AS `departmentFk`, -`b`.`payedHolidays` AS `payedHolidays` -from -((((`postgresql`.`person` `p` -join `postgresql`.`profile` `pr` on -((`pr`.`person_id` = `p`.`person_id`))) -join `postgresql`.`business` `b` on -((`b`.`client_id` = `pr`.`profile_id`))) -join `postgresql`.`business_labour` `bl` on -((`b`.`business_id` = `bl`.`business_id`))) -join `vn`.`department` `d` on -((`d`.`id` = `bl`.`department_id`))) -order by -`b`.`date_start` desc \ No newline at end of file diff --git a/db/changes/10420-valentines/00-defaultViewConfig.sql b/db/changes/10420-valentines/00-defaultViewConfig.sql deleted file mode 100644 index c65c1f403..000000000 --- a/db/changes/10420-valentines/00-defaultViewConfig.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE salix.defaultViewConfig - SET `columns`='{"intrastat":false,"stemMultiplier":false,"landed":false,"producer":false}' - WHERE tableCode ='itemsIndex'; diff --git a/db/changes/10420-valentines/00-state.sql b/db/changes/10420-valentines/00-state.sql deleted file mode 100644 index 590be6964..000000000 --- a/db/changes/10420-valentines/00-state.sql +++ /dev/null @@ -1,26 +0,0 @@ -ALTER TABLE `vn`.`state` ADD classColor varchar(12) NULL; - -UPDATE `vn`.`state` s - SET s.classColor = 'warning' - WHERE s.alertLevel = 1; - -UPDATE `vn`.`state` s - SET s.classColor = 'alert' - WHERE s.alertLevel = 0; - -UPDATE `vn`.`state` s - SET s.classColor = 'success' - WHERE s.code LIKE 'OK'; - -UPDATE `vn`.`state` s - SET s.classColor = 'notice' - WHERE s.code LIKE 'FREE'; - -UPDATE `vn`.`state` s - SET s.classColor = 'success' - WHERE s.order >= 4 - AND (s.alertLevel = 0 OR s.alertLevel = 1); - -UPDATE `vn`.`state` s - SET s.classColor = 'warning' - WHERE s.code IN ('PREVIOUS_PREPARATION', 'PREPARED', 'ON_PREPARATION', 'ON_CHECKING', 'CHECKED'); diff --git a/db/changes/10470-family/00-accountingType.sql b/db/changes/10470-family/00-accountingType.sql new file mode 100644 index 000000000..964027e3a --- /dev/null +++ b/db/changes/10470-family/00-accountingType.sql @@ -0,0 +1,3 @@ +ALTER TABLE `vn`.`accountingType` ADD daysInFuture INT NULL; +ALTER TABLE `vn`.`accountingType` MODIFY COLUMN daysInFuture int(11) DEFAULT 0 NULL; +UPDATE `vn`.`accountingType` SET daysInFuture=1 WHERE id=8; \ No newline at end of file diff --git a/db/changes/10470-family/00-aclItemType.sql b/db/changes/10470-family/00-aclItemType.sql new file mode 100644 index 000000000..836a69dfd --- /dev/null +++ b/db/changes/10470-family/00-aclItemType.sql @@ -0,0 +1,4 @@ +INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('ItemType', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('ItemType', '*', 'WRITE', 'ALLOW', 'ROLE', 'buyer'); \ No newline at end of file diff --git a/db/changes/10470-family/00-aclMdb.sql b/db/changes/10470-family/00-aclMdb.sql new file mode 100644 index 000000000..b02ddc451 --- /dev/null +++ b/db/changes/10470-family/00-aclMdb.sql @@ -0,0 +1,14 @@ +CREATE TABLE IF NOT EXISTS `vn`.`mdbBranch` ( + `name` VARCHAR(255), + PRIMARY KEY(`name`) +); + +CREATE TABLE IF NOT EXISTS `vn`.`mdbVersion` ( + `app` VARCHAR(255) NOT NULL, + `branchFk` VARCHAR(255) NOT NULL, + `version` INT, + CONSTRAINT `mdbVersion_branchFk` FOREIGN KEY (`branchFk`) REFERENCES `vn`.`mdbBranch` (`name`) ON DELETE CASCADE ON UPDATE CASCADE +); + +INSERT IGNORE INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES(318, 'MdbVersion', '*', '*', 'ALLOW', 'ROLE', 'developer'); diff --git a/db/changes/10470-family/00-chat.sql b/db/changes/10470-family/00-chat.sql new file mode 100644 index 000000000..d4a8f068a --- /dev/null +++ b/db/changes/10470-family/00-chat.sql @@ -0,0 +1,13 @@ +CREATE TABLE `vn`.`chat` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `senderFk` int(10) unsigned DEFAULT NULL, + `recipient` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `dated` date DEFAULT NULL, + `checkUserStatus` tinyint(1) DEFAULT NULL, + `message` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL, + `status` tinyint(1) DEFAULT NULL, + `attempts` int(1) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `chat_FK` (`senderFk`), + CONSTRAINT `chat_FK` FOREIGN KEY (`senderFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; \ No newline at end of file diff --git a/db/changes/10470-family/00-creditInsurance.sql b/db/changes/10470-family/00-creditInsurance.sql new file mode 100644 index 000000000..9d4db470b --- /dev/null +++ b/db/changes/10470-family/00-creditInsurance.sql @@ -0,0 +1,8 @@ +ALTER TABLE `vn`.`creditInsurance` ADD creditClassificationFk int(11) NULL; + +UPDATE `vn`.`creditInsurance` AS `destiny` + SET `destiny`.`creditClassificationFk`= (SELECT creditClassification FROM `vn`.`creditInsurance` AS `origin` WHERE `origin`.id = `destiny`.id); + +ALTER TABLE `vn`.`creditInsurance` + ADD CONSTRAINT `creditInsurance_creditClassificationFk` FOREIGN KEY (`creditClassificationFk`) + REFERENCES `vn`.`creditClassification` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; \ No newline at end of file diff --git a/db/changes/10470-family/00-defaultViewConfig.sql b/db/changes/10470-family/00-defaultViewConfig.sql new file mode 100644 index 000000000..d423599b1 --- /dev/null +++ b/db/changes/10470-family/00-defaultViewConfig.sql @@ -0,0 +1,3 @@ +INSERT INTO `salix`.`defaultViewConfig` (tableCode, columns) +VALUES ('clientsDetail', '{"id":true,"phone":true,"city":true,"socialName":true,"salesPersonFk":true,"email":true,"name":false,"fi":false,"credit":false,"creditInsurance":false,"mobile":false,"street":false,"countryFk":false,"provinceFk":false,"postcode":false,"created":false,"businessTypeFk":false,"payMethodFk":false,"sageTaxTypeFk":false,"sageTransactionTypeFk":false,"isActive":false,"isVies":false,"isTaxDataChecked":false,"isEqualizated":false,"isFreezed":false,"hasToInvoice":false,"hasToInvoiceByAddress":false,"isToBeMailed":false,"hasLcr":false,"hasCoreVnl":false,"hasSepaVnl":false}'); + diff --git a/db/changes/10470-family/00-ticket_doRefund.sql b/db/changes/10470-family/00-ticket_doRefund.sql new file mode 100644 index 000000000..f4ecf29d7 --- /dev/null +++ b/db/changes/10470-family/00-ticket_doRefund.sql @@ -0,0 +1,127 @@ +DROP PROCEDURE IF EXISTS `vn`.`ticket_doRefund`; + +DELIMITER $$ +$$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_doRefund`(OUT vNewTicket INT) +BEGIN +/** + * Crea un ticket de abono a partir de tmp.sale y/o tmp.ticketService + * + * @return vNewTicket + */ + DECLARE vDone BIT DEFAULT 0; + DECLARE vClientFk MEDIUMINT; + DECLARE vWarehouse TINYINT; + DECLARE vCompany MEDIUMINT; + DECLARE vAddress MEDIUMINT; + DECLARE vRefundAgencyMode INT; + DECLARE vItemFk INT; + DECLARE vQuantity DECIMAL (10,2); + DECLARE vConcept VARCHAR(50); + DECLARE vPrice DECIMAL (10,2); + DECLARE vDiscount TINYINT; + DECLARE vSaleNew INT; + DECLARE vSaleMain INT; + DECLARE vZoneFk INT; + DECLARE vDescription VARCHAR(50); + DECLARE vTaxClassFk INT; + DECLARE vTicketServiceTypeFk INT; + DECLARE vOriginTicket INT; + + DECLARE cSales CURSOR FOR + SELECT s.id, s.itemFk, - s.quantity, s.concept, s.price, s.discount + FROM tmp.sale s; + + DECLARE cTicketServices CURSOR FOR + SELECT ts.description, - ts.quantity, ts.price, ts.taxClassFk, ts.ticketServiceTypeFk + FROM tmp.ticketService ts; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + SELECT sub.ticketFk INTO vOriginTicket + FROM ( + SELECT s.ticketFk + FROM tmp.sale s + UNION ALL + SELECT ts.ticketFk + FROM tmp.ticketService ts + ) sub + LIMIT 1; + + SELECT id INTO vRefundAgencyMode + FROM agencyMode WHERE `name` = 'ABONO'; + + SELECT clientFk, warehouseFk, companyFk, addressFk + INTO vClientFk, vWarehouse, vCompany, vAddress + FROM ticket + WHERE id = vOriginTicket; + + SELECT id INTO vZoneFk + FROM zone WHERE agencyModeFk = vRefundAgencyMode + LIMIT 1; + + INSERT INTO vn.ticket ( + clientFk, + shipped, + addressFk, + agencyModeFk, + nickname, + warehouseFk, + companyFk, + landed, + zoneFk + ) + SELECT + vClientFk, + CURDATE(), + vAddress, + vRefundAgencyMode, + a.nickname, + vWarehouse, + vCompany, + CURDATE(), + vZoneFk + FROM address a + WHERE a.id = vAddress; + + SET vNewTicket = LAST_INSERT_ID(); + + SET vDone := FALSE; + OPEN cSales; + FETCH cSales INTO vSaleMain, vItemFk, vQuantity, vConcept, vPrice, vDiscount; + + WHILE NOT vDone DO + + INSERT INTO vn.sale(ticketFk, itemFk, quantity, concept, price, discount) + VALUES( vNewTicket, vItemFk, vQuantity, vConcept, vPrice, vDiscount ); + + SET vSaleNew = LAST_INSERT_ID(); + + INSERT INTO vn.saleComponent(saleFk,componentFk,`value`) + SELECT vSaleNew,componentFk,`value` + FROM vn.saleComponent + WHERE saleFk = vSaleMain; + + FETCH cSales INTO vSaleMain, vItemFk, vQuantity, vConcept, vPrice, vDiscount; + + END WHILE; + CLOSE cSales; + + SET vDone := FALSE; + OPEN cTicketServices; + FETCH cTicketServices INTO vDescription, vQuantity, vPrice, vTaxClassFk, vTicketServiceTypeFk; + + WHILE NOT vDone DO + + INSERT INTO vn.ticketService(description, quantity, price, taxClassFk, ticketFk, ticketServiceTypeFk) + VALUES(vDescription, vQuantity, vPrice, vTaxClassFk, vNewTicket, vTicketServiceTypeFk); + + FETCH cTicketServices INTO vDescription, vQuantity, vPrice, vTaxClassFk, vTicketServiceTypeFk; + + END WHILE; + CLOSE cTicketServices; + + INSERT INTO vn.ticketRefund(refundTicketFk, originalTicketFk) + VALUES(vNewTicket, vOriginTicket); +END$$ +DELIMITER ; diff --git a/db/changes/10470-family/01-creditInsuranceTriggers.sql b/db/changes/10470-family/01-creditInsuranceTriggers.sql new file mode 100644 index 000000000..53ba3ba11 --- /dev/null +++ b/db/changes/10470-family/01-creditInsuranceTriggers.sql @@ -0,0 +1,11 @@ +DELIMITER $$ +$$ +CREATE DEFINER=`root`@`localhost` TRIGGER `vn`.`creditInsurance_beforeInsert` + BEFORE INSERT ON `creditInsurance` + FOR EACH ROW +BEGIN + IF NEW.creditClassificationFk THEN + SET NEW.creditClassification = NEW.creditClassificationFk; + END IF; +END$$ +DELIMITER ; \ No newline at end of file diff --git a/db/changes/10470-family/01-tableConfig.sql b/db/changes/10470-family/01-tableConfig.sql new file mode 100644 index 000000000..685981d90 --- /dev/null +++ b/db/changes/10470-family/01-tableConfig.sql @@ -0,0 +1 @@ +RENAME TABLE `edi`.`fileConfig` to `edi`.`tableConfig`; \ No newline at end of file diff --git a/db/changes/10470-family/02-fileConfig.sql b/db/changes/10470-family/02-fileConfig.sql new file mode 100644 index 000000000..3109a4616 --- /dev/null +++ b/db/changes/10470-family/02-fileConfig.sql @@ -0,0 +1,22 @@ +CREATE TABLE `edi`.`fileConfig` +( + name varchar(25) NOT NULL, + checksum text NULL, + keyValue tinyint(1) default true NOT NULL, + constraint fileConfig_pk + primary key (name) +); + +create unique index fileConfig_name_uindex + on `edi`.`fileConfig` (name); + + +INSERT INTO `edi`.`fileConfig` (name, checksum, keyValue) +VALUES ('FEC010104', null, 0); + +INSERT INTO `edi`.`fileConfig` (name, checksum, keyValue) +VALUES ('VBN020101', null, 1); + +INSERT INTO `edi`.`fileConfig` (name, checksum, keyValue) +VALUES ('florecompc2', null, 1); + diff --git a/db/changes/10471-family/00-chat.sql b/db/changes/10471-family/00-chat.sql new file mode 100644 index 000000000..6f3c9d437 --- /dev/null +++ b/db/changes/10471-family/00-chat.sql @@ -0,0 +1,3 @@ +ALTER TABLE `vn`.`chat` MODIFY COLUMN message TEXT CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL NULL; +ALTER TABLE `vn`.`chat` MODIFY COLUMN dated DATETIME DEFAULT NULL NULL; +ALTER TABLE `vn`.`chat` ADD error TEXT NULL; diff --git a/db/changes/10472-family/00-creditInsurance.sql b/db/changes/10472-family/00-creditInsurance.sql new file mode 100644 index 000000000..4731cfb2a --- /dev/null +++ b/db/changes/10472-family/00-creditInsurance.sql @@ -0,0 +1,3 @@ +ALTER TABLE `vn`.`creditInsurance` + ADD CONSTRAINT `creditInsurance_creditClassificationFk` FOREIGN KEY (`creditClassificationFk`) + REFERENCES `vn`.`creditClassification` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; \ No newline at end of file diff --git a/db/changes/10480-june/00-ACL.sql b/db/changes/10480-june/00-ACL.sql new file mode 100644 index 000000000..b13e56e21 --- /dev/null +++ b/db/changes/10480-june/00-ACL.sql @@ -0,0 +1,21 @@ +INSERT INTO `salix`.`ACL` (model,property,accessType,permission,principalType,principalId) + VALUES + ('InvoiceOut','refund','WRITE','ALLOW','ROLE','invoicing'), + ('InvoiceOut','refund','WRITE','ALLOW','ROLE','salesAssistant'), + ('InvoiceOut','refund','WRITE','ALLOW','ROLE','claimManager'), + ('Ticket','refund','WRITE','ALLOW','ROLE','invoicing'), + ('Ticket','refund','WRITE','ALLOW','ROLE','salesAssistant'), + ('Ticket','refund','WRITE','ALLOW','ROLE','claimManager'), + ('Sale','refund','WRITE','ALLOW','ROLE','salesAssistant'), + ('Sale','refund','WRITE','ALLOW','ROLE','claimManager'), + ('TicketRefund','*','WRITE','ALLOW','ROLE','invoicing'), + ('ClaimObservation','*','WRITE','ALLOW','ROLE','salesPerson'), + ('ClaimObservation','*','READ','ALLOW','ROLE','salesPerson'), + ('Client','setPassword','WRITE','ALLOW','ROLE','salesPerson'), + ('Client','updateUser','WRITE','ALLOW','ROLE','salesPerson'); + +DELETE FROM `salix`.`ACL` WHERE id=313; + +UPDATE `salix`.`ACL` + SET principalId='invoicing' + WHERE id=297; \ No newline at end of file diff --git a/db/changes/10480-june/00-aclShelvingLog.sql b/db/changes/10480-june/00-aclShelvingLog.sql new file mode 100644 index 000000000..dc75142d1 --- /dev/null +++ b/db/changes/10480-june/00-aclShelvingLog.sql @@ -0,0 +1,3 @@ +INSERT INTO `salix`.`ACL` (model,property,accessType,permission,principalType,principalId) + VALUES + ('ShelvingLog','*','READ','ALLOW','ROLE','employee'); \ No newline at end of file diff --git a/db/changes/10480-june/00-aclZoneExclusionGeos.sql b/db/changes/10480-june/00-aclZoneExclusionGeos.sql new file mode 100644 index 000000000..4c0f6c991 --- /dev/null +++ b/db/changes/10480-june/00-aclZoneExclusionGeos.sql @@ -0,0 +1,4 @@ +INSERT INTO `salix`.`ACL`(`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('ZoneExclusionGeo', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('ZoneExclusionGeo', '*', 'WRITE', 'ALLOW', 'ROLE', 'deliveryBoss'); \ No newline at end of file diff --git a/db/changes/10480-june/00-albaran_gestdoc.sql b/db/changes/10480-june/00-albaran_gestdoc.sql new file mode 100644 index 000000000..a0ba93bd3 --- /dev/null +++ b/db/changes/10480-june/00-albaran_gestdoc.sql @@ -0,0 +1,2 @@ +ALTER TABLE `vn2008`.`albaran_gestdoc` DROP FOREIGN KEY fk_albaran_gestdoc_gestdoc1; +ALTER TABLE `vn2008`.`albaran_gestdoc` ADD CONSTRAINT albaran_gestdoc_FK FOREIGN KEY (gestdoc_id) REFERENCES `vn`.`dms`(id) ON DELETE CASCADE ON UPDATE CASCADE; \ No newline at end of file diff --git a/db/changes/10480-june/00-client.sql b/db/changes/10480-june/00-client.sql new file mode 100644 index 000000000..4a39bbdf9 --- /dev/null +++ b/db/changes/10480-june/00-client.sql @@ -0,0 +1,3 @@ +alter table `vn`.`client` + add hasIncoterms tinyint(1) default 0 not null comment 'Received incoterms authorization from client'; + diff --git a/db/changes/10480-june/00-deprecations.sql b/db/changes/10480-june/00-deprecations.sql new file mode 100644 index 000000000..68becd13e --- /dev/null +++ b/db/changes/10480-june/00-deprecations.sql @@ -0,0 +1,13 @@ +DROP FUNCTION `account`.`userGetId`; +DROP FUNCTION `account`.`myUserGetName`; +DROP FUNCTION `account`.`myUserGetId`; +DROP FUNCTION `account`.`myUserHasRole`; +DROP FUNCTION `account`.`myUserHasRoleId`; +DROP FUNCTION `account`.`userGetName`; +DROP FUNCTION `account`.`userHasRole`; +DROP FUNCTION `account`.`userHasRoleId`; +DROP PROCEDURE `account`.`myUserLogout`; +DROP PROCEDURE `account`.`userLogin`; +DROP PROCEDURE `account`.`userLoginWithKey`; +DROP PROCEDURE `account`.`userLoginWithName`; +DROP PROCEDURE `account`.`userSetPassword`; \ No newline at end of file diff --git a/db/changes/10480-june/00-item.sql b/db/changes/10480-june/00-item.sql new file mode 100644 index 000000000..a08d3f4c1 --- /dev/null +++ b/db/changes/10480-june/00-item.sql @@ -0,0 +1 @@ +ALTER TABLE `vn`.`item` MODIFY COLUMN description TEXT CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL NULL; diff --git a/db/changes/10480-june/00-route.sql b/db/changes/10480-june/00-route.sql new file mode 100644 index 000000000..beb7d5e41 --- /dev/null +++ b/db/changes/10480-june/00-route.sql @@ -0,0 +1,10 @@ +UPDATE `vn`.`route` r + JOIN(SELECT r.id, wl.workcenterFk + FROM `vn`.`route` r + JOIN `vn`.`routeLog` rl ON rl.originFk = r.id + JOIN `vn`.`workerLabour` wl ON wl.workerFk = rl.userFk + AND r.created BETWEEN wl.started AND IFNULL(wl.ended, r.created) + WHERE r.created BETWEEN '2021-12-01' AND CURDATE() + AND rl.action = 'insert' + )sub ON sub.id = r.id + SET r.commissionWorkCenterFk = sub.workcenterFk; \ No newline at end of file diff --git a/db/changes/10480-june/00-sample.sql b/db/changes/10480-june/00-sample.sql new file mode 100644 index 000000000..18beb736d --- /dev/null +++ b/db/changes/10480-june/00-sample.sql @@ -0,0 +1,2 @@ +INSERT INTO `vn`.`sample` (code, description, isVisible, hasCompany, hasPreview, datepickerEnabled) +VALUES ('incoterms-authorization', 'Autorización de incoterms', 1, 1, 1, 0); \ No newline at end of file diff --git a/db/changes/10480-june/00-shelving.sql b/db/changes/10480-june/00-shelving.sql new file mode 100644 index 000000000..c66d164c4 --- /dev/null +++ b/db/changes/10480-june/00-shelving.sql @@ -0,0 +1,18 @@ +ALTER TABLE `vn`.`itemShelving` DROP FOREIGN KEY itemShelving_fk2; +ALTER TABLE `vn`.`shelvingLog` DROP FOREIGN KEY shelvingLog_FK_ibfk_1; +ALTER TABLE `vn`.`smartTag` DROP FOREIGN KEY smartTag_shelving_fk; +ALTER TABLE `vn`.`workerShelving` DROP FOREIGN KEY workerShelving_shelving_fk; + +ALTER TABLE `vn`.`shelving` DROP PRIMARY KEY; +ALTER TABLE `vn`.`shelving` ADD id INT auto_increment PRIMARY KEY NULL; +ALTER TABLE `vn`.`shelving` CHANGE id id int(11) auto_increment NOT NULL FIRST; +ALTER TABLE `vn`.`shelving` ADD CONSTRAINT shelving_UN UNIQUE KEY (code); + +ALTER TABLE `vn`.`itemShelving` ADD CONSTRAINT itemShelving_fk2 FOREIGN KEY (shelvingFk) REFERENCES `vn`.`shelving`(code) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `vn`.`shelvingLog` ADD CONSTRAINT shelvingLog_FK_ibfk_1 FOREIGN KEY (originFk) REFERENCES `vn`.`shelving`(code) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `vn`.`smartTag` ADD CONSTRAINT smartTag_FK FOREIGN KEY (shelvingFk) REFERENCES `vn`.`shelving`(code) ON DELETE RESTRICT ON UPDATE CASCADE; +ALTER TABLE `vn`.`workerShelving` ADD CONSTRAINT workerShelving_FK_1 FOREIGN KEY (shelvingFk) REFERENCES `vn`.`shelving`(code) ON DELETE RESTRICT ON UPDATE CASCADE; + +ALTER TABLE vn.shelvingLog DROP FOREIGN KEY shelvingLog_FK_ibfk_1; +ALTER TABLE vn.shelvingLog MODIFY COLUMN originFk INT NOT NULL; +ALTER TABLE vn.shelvingLog ADD CONSTRAINT shelvingLog_FK FOREIGN KEY (originFk) REFERENCES vn.shelving(id) ON DELETE CASCADE ON UPDATE CASCADE; \ No newline at end of file diff --git a/db/changes/10480-june/00-ticketRefund_beforeUpsert.sql b/db/changes/10480-june/00-ticketRefund_beforeUpsert.sql new file mode 100644 index 000000000..e6506c5d7 --- /dev/null +++ b/db/changes/10480-june/00-ticketRefund_beforeUpsert.sql @@ -0,0 +1,21 @@ +DROP PROCEDURE IF EXISTS `vn`.`ticketRefund_beforeUpsert`; + +DELIMITER $$ +$$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticketRefund_beforeUpsert`(vRefundTicketFk INT, vOriginalTicketFk INT) +BEGIN + DECLARE vAlreadyExists BOOLEAN DEFAULT FALSE; + + IF vRefundTicketFk = vOriginalTicketFk THEN + CALL util.throw('Original ticket and refund ticket has same id'); + END IF; + + SELECT COUNT(*) INTO vAlreadyExists + FROM ticketRefund + WHERE originalTicketFk = vOriginalTicketFk; + + IF vAlreadyExists > 0 THEN + CALL util.throw('This ticket is already a refund'); + END IF; +END$$ +DELIMITER ; diff --git a/db/changes/10480-june/01-claimObservation.sql b/db/changes/10480-june/01-claimObservation.sql new file mode 100644 index 000000000..8dc126a9e --- /dev/null +++ b/db/changes/10480-june/01-claimObservation.sql @@ -0,0 +1,13 @@ +CREATE TABLE `vn`.`claimObservation` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `claimFk` int(10) unsigned NOT NULL, + `workerFk` int(10) unsigned DEFAULT NULL, + `text` text COLLATE utf8_unicode_ci NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `worker_key` (`workerFk`), + KEY `claim_key` (`claimFk`), + KEY `claimObservation_created_IDX` (`created`) USING BTREE, + CONSTRAINT `claimObservation_ibfk_1` FOREIGN KEY (`claimFk`) REFERENCES `vn`.`claim` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `claimObservation_ibfk_2` FOREIGN KEY (`workerFk`) REFERENCES `vn`.`worker` (`id`) ON UPDATE CASCADE +) COMMENT='Todas las observaciones referentes a una reclamación' \ No newline at end of file diff --git a/db/changes/10480-june/02-claimTextMigration.sql b/db/changes/10480-june/02-claimTextMigration.sql new file mode 100644 index 000000000..fa5f6fe83 --- /dev/null +++ b/db/changes/10480-june/02-claimTextMigration.sql @@ -0,0 +1,2 @@ +INSERT INTO `vn`.`claimObservation` (`claimFk`, `text`, `created`) +SELECT `id`, `observation`, `created` FROM `vn`.`claim` \ No newline at end of file diff --git a/db/changes/10480-june/04-aclParking.sql b/db/changes/10480-june/04-aclParking.sql new file mode 100644 index 000000000..05acd68b1 --- /dev/null +++ b/db/changes/10480-june/04-aclParking.sql @@ -0,0 +1,2 @@ +INSERT INTO `salix`.`ACL` (model,property,accessType,permission,principalType,principalId) + VALUES ('Parking','*','*','ALLOW','ROLE','employee') \ No newline at end of file diff --git a/db/changes/10480-june/04-aclShelving.sql b/db/changes/10480-june/04-aclShelving.sql new file mode 100644 index 000000000..b237dfe0d --- /dev/null +++ b/db/changes/10480-june/04-aclShelving.sql @@ -0,0 +1,2 @@ +INSERT INTO `salix`.`ACL` (model,property,accessType,permission,principalType,principalId) + VALUES ('Shelving','*','*','ALLOW','ROLE','employee') \ No newline at end of file diff --git a/db/changes/10481-june/00-aclOsTicket.sql b/db/changes/10481-june/00-aclOsTicket.sql new file mode 100644 index 000000000..ae2a121f5 --- /dev/null +++ b/db/changes/10481-june/00-aclOsTicket.sql @@ -0,0 +1,3 @@ +INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('OsTicket', '*', '*', 'ALLOW', 'ROLE', 'employee'); \ No newline at end of file diff --git a/db/changes/10481-june/00-aclOsTicketConfig.sql b/db/changes/10481-june/00-aclOsTicketConfig.sql new file mode 100644 index 000000000..ad53ea6ae --- /dev/null +++ b/db/changes/10481-june/00-aclOsTicketConfig.sql @@ -0,0 +1,3 @@ +INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('OsTicketConfig', '*', '*', 'ALLOW', 'ROLE', 'it'); \ No newline at end of file diff --git a/db/changes/10481-june/00-osTicketConfig.sql b/db/changes/10481-june/00-osTicketConfig.sql new file mode 100644 index 000000000..8727c816d --- /dev/null +++ b/db/changes/10481-june/00-osTicketConfig.sql @@ -0,0 +1,16 @@ +CREATE TABLE `vn`.`osTicketConfig` ( + `id` int(11) NOT NULL, + `host` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `user` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `password` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `oldStatus` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `newStatusId` int(11) DEFAULT NULL, + `action` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `day` int(11) DEFAULT NULL, + `comment` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `hostDb` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `userDb` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `passwordDb` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `portDb` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; \ No newline at end of file diff --git a/db/changes/10490-august/00-ACL.sql b/db/changes/10490-august/00-ACL.sql new file mode 100644 index 000000000..2cce197b2 --- /dev/null +++ b/db/changes/10490-august/00-ACL.sql @@ -0,0 +1,49 @@ +INSERT INTO `salix`.`ACL` (model, property, accessType, permission, principalType, principalId) + VALUES + ('ClientConsumptionQueue', '*', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Ticket', 'deliveryNotePdf', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Ticket', 'deliveryNoteEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Ticket', 'deliveryNoteCsvPdf', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Ticket', 'deliveryNoteCsvEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'campaignMetricsPdf', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'campaignMetricsEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'clientWelcomeHtml', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'clientWelcomeEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'creditRequestPdf', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'creditRequestHtml', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'creditRequestEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'printerSetupHtml', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'printerSetupEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'sepaCoreEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'letterDebtorPdf', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'letterDebtorStHtml', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'letterDebtorStEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'letterDebtorNdHtml', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'letterDebtorNdEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'clientDebtStatementPdf', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'clientDebtStatementHtml', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'clientDebtStatementEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'incotermsAuthorizationPdf', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'incotermsAuthorizationHtml', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'incotermsAuthorizationEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'consumptionSendQueued', 'WRITE', 'ALLOW', 'ROLE', 'system'), + ('InvoiceOut', 'invoiceEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('InvoiceOut', 'exportationPdf', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('InvoiceOut', 'sendQueued', 'WRITE', 'ALLOW', 'ROLE', 'system'), + ('Ticket', 'invoiceCsvPdf', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Ticket', 'invoiceCsvEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Supplier', 'campaignMetricsPdf', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Supplier', 'campaignMetricsEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Travel', 'extraCommunityPdf', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Travel', 'extraCommunityEmail', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Entry', 'entryOrderPdf', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('OsTicket', 'osTicketReportEmail', 'WRITE', 'ALLOW', 'ROLE', 'system'), + ('Item', 'buyerWasteEmail', 'WRITE', 'ALLOW', 'ROLE', 'system'), + ('Claim', 'claimPickupPdf', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Claim', 'claimPickupEmail', 'WRITE', 'ALLOW', 'ROLE', 'claimManager'), + ('Item', 'labelPdf', 'READ', 'ALLOW', 'ROLE', 'employee'); + +INSERT INTO `salix`.`ACL` (model,property,accessType,permission,principalType,principalId) + VALUES ('Sector','*','READ','ALLOW','ROLE','employee'); +INSERT INTO `salix`.`ACL` (model,property,accessType,permission,principalType,principalId) + VALUES ('Sector','*','WRITE','ALLOW','ROLE','employee'); diff --git a/db/changes/10490-august/00-acl_receiptPdf.sql b/db/changes/10490-august/00-acl_receiptPdf.sql new file mode 100644 index 000000000..42f84b87d --- /dev/null +++ b/db/changes/10490-august/00-acl_receiptPdf.sql @@ -0,0 +1,3 @@ +INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('Receipt', 'receiptPdf', '*', 'ALLOW', 'ROLE', 'salesAssistant'); diff --git a/db/changes/10490-august/00-clientConsumptionQueue.sql b/db/changes/10490-august/00-clientConsumptionQueue.sql new file mode 100644 index 000000000..2734d32cc --- /dev/null +++ b/db/changes/10490-august/00-clientConsumptionQueue.sql @@ -0,0 +1,9 @@ +create table `vn`.`clientConsumptionQueue` +( + id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, + params json not null, + queued datetime default current_timestamp() not null, + printed datetime null, + status varchar(50) default '' null +) + comment 'Queue for client consumption PDF mailing'; diff --git a/db/changes/10490-august/00-invoiceOutQueue.sql b/db/changes/10490-august/00-invoiceOutQueue.sql new file mode 100644 index 000000000..52ed4a113 --- /dev/null +++ b/db/changes/10490-august/00-invoiceOutQueue.sql @@ -0,0 +1 @@ +rename table `vn`.`invoiceOut_queue` to `vn`.`invoiceOutQueue`; diff --git a/db/changes/10490-august/00-itemConfig.sql b/db/changes/10490-august/00-itemConfig.sql new file mode 100644 index 000000000..b148aa094 --- /dev/null +++ b/db/changes/10490-august/00-itemConfig.sql @@ -0,0 +1,5 @@ +ALTER TABLE `vn`.`itemConfig` + ADD id int null PRIMARY KEY first; + +ALTER TABLE `vn`.`itemConfig` + ADD wasteRecipients VARCHAR(50) NOT NULL comment 'Weekly waste report schedule recipients'; diff --git a/db/changes/10490-august/00-printConfig.sql b/db/changes/10490-august/00-printConfig.sql new file mode 100644 index 000000000..c5af09ac9 --- /dev/null +++ b/db/changes/10490-august/00-printConfig.sql @@ -0,0 +1,10 @@ +create table `salix`.`printConfig` +( + id int auto_increment, + itRecipient varchar(50) null comment 'IT recipients for report mailing', + incidencesEmail varchar(50) null comment 'CAU destinatary email', + constraint printConfig_pk + primary key (id) +) + comment 'Print service config'; + diff --git a/db/changes/10490-august/00-sale_afterUpdate.sql b/db/changes/10490-august/00-sale_afterUpdate.sql new file mode 100644 index 000000000..407fb52c9 --- /dev/null +++ b/db/changes/10490-august/00-sale_afterUpdate.sql @@ -0,0 +1,100 @@ +DROP TRIGGER IF EXISTS vn.sale_afterUpdate; +USE vn; + +DELIMITER $$ +$$ +CREATE DEFINER=`root`@`localhost` TRIGGER `vn`.`sale_afterUpdate` + AFTER UPDATE ON `sale` + FOR EACH ROW +BEGIN + DECLARE vIsToSendMail BOOL; + DECLARE vPickedLines INT; + DECLARE vCollectionFk INT; + DECLARE vUserRole VARCHAR(255); + + IF !(NEW.id <=> OLD.id) + OR !(NEW.ticketFk <=> OLD.ticketFk) + OR !(NEW.itemFk <=> OLD.itemFk) + OR !(NEW.quantity <=> OLD.quantity) + OR !(NEW.created <=> OLD.created) + OR !(NEW.isPicked <=> OLD.isPicked) THEN + CALL stock.log_add('sale', NEW.id, OLD.id); + END IF; + + IF !(NEW.price <=> OLD.price) + OR !(NEW.ticketFk <=> OLD.ticketFk) + OR !(NEW.itemFk <=> OLD.itemFk) + OR !(NEW.quantity <=> OLD.quantity) + OR !(NEW.discount <=> OLD.discount) THEN + CALL ticket_requestRecalc(NEW.ticketFk); + CALL ticket_requestRecalc(OLD.ticketFk); + END IF; + + IF !(OLD.ticketFk <=> NEW.ticketFk) THEN + UPDATE ticketRequest SET ticketFk = NEW.ticketFk + WHERE saleFk = NEW.id; + END IF; + + SELECT account.myUser_getName() INTO vUserRole; + SELECT account.user_getMysqlRole(vUserRole) INTO vUserRole; + + IF !(OLD.quantity <=> NEW.quantity) THEN + SELECT COUNT(*) INTO vIsToSendMail + FROM vncontrol.inter i + JOIN vn.state s ON s.id = i.state_id + WHERE s.code='PACKED' + AND i.Id_Ticket = OLD.ticketFk + AND vUserRole IN ('salesPerson', 'salesTeamBoss') + LIMIT 1; + + IF vIsToSendMail THEN + CALL vn.mail_insert('jefesventas@verdnatura.es', + 'noreply@verdnatura.es', + CONCAT('Ticket ', OLD.ticketFk ,' modificada cantidad tras encajado'), + CONCAT('Ticket ', OLD.ticketFk ,'.
', + 'Modificada la catidad de ', OLD.quantity, ' a ' , NEW.quantity, + ' del artículo ', OLD.itemFk, ' tras estado encajado del ticket.
', + 'Este email se ha generado automáticamente' ) + ); + END IF; + IF (OLD.quantity > NEW.quantity) THEN + INSERT INTO saleComponent(saleFk, componentFk, value) + SELECT NEW.id, cm.id, sc.value + FROM saleComponent sc + JOIN component cd ON cd.id = sc.componentFk + JOIN component cm ON cm.code = 'mana' + WHERE saleFk = NEW.id AND cd.code = 'lastUnitsDiscount' + ON DUPLICATE KEY UPDATE value = sc.value + VALUES(value); + + DELETE sc.* + FROM vn.saleComponent sc + JOIN component c ON c.id = sc.componentFk + WHERE saleFk = NEW.id AND c.code = 'lastUnitsDiscount'; + END IF; + INSERT IGNORE INTO `vn`.`routeRecalc` (`routeFk`) + SELECT r.id + FROM vn.sale s + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.route r ON r.id = t.routeFk + WHERE r.isOk = FALSE + AND s.id = NEW.id + AND r.created >= CURDATE() + GROUP BY r.id; + END IF; + + IF !(ABS(NEW.isPicked) <=> ABS(OLD.isPicked)) AND NEW.quantity > 0 THEN + + UPDATE vn.collection c + JOIN vn.ticketCollection tc ON tc.collectionFk = c.id AND tc.ticketFk = NEW.ticketFk + SET c.salePickedCount = c.salePickedCount + IF(NEW.isPicked != 0, 1, -1); + + END IF; + + IF !(NEW.quantity <=> OLD.quantity) AND (NEW.quantity = 0 OR OLD.quantity = 0) THEN + + UPDATE vn.collection c + JOIN vn.ticketCollection tc ON tc.collectionFk = c.id AND tc.ticketFk = NEW.ticketFk + SET c.saleTotalCount = c.saleTotalCount + IF(OLD.quantity = 0, 1, -1); + END IF; +END$$ +DELIMITER ; diff --git a/db/changes/10490-august/00-sample.sql b/db/changes/10490-august/00-sample.sql new file mode 100644 index 000000000..f84cd723e --- /dev/null +++ b/db/changes/10490-august/00-sample.sql @@ -0,0 +1,6 @@ +alter table `vn`.`sample` + add model VARCHAR(25) null comment 'Model name in plural'; + +UPDATE vn.sample t + SET t.model = 'Clients' + WHERE t.id IN(12, 13, 14, 15, 16, 18, 19, 20); \ No newline at end of file diff --git a/db/changes/10490-august/00-user_hasGrant.sql b/db/changes/10490-august/00-user_hasGrant.sql new file mode 100644 index 000000000..60d1273d8 --- /dev/null +++ b/db/changes/10490-august/00-user_hasGrant.sql @@ -0,0 +1 @@ +ALTER TABLE `account`.`user` ADD hasGrant TINYINT(1) NOT NULL; diff --git a/db/changes/10491-august/00-ACL_workerDisableExcluded.sql b/db/changes/10491-august/00-ACL_workerDisableExcluded.sql new file mode 100644 index 000000000..2fd9e8b12 --- /dev/null +++ b/db/changes/10491-august/00-ACL_workerDisableExcluded.sql @@ -0,0 +1,2 @@ +INSERT INTO `salix`.`ACL` (model,property,accessType,permission,principalId) + VALUES ('WorkerDisableExcluded','*','*','ALLOW','hr'); \ No newline at end of file diff --git a/db/changes/10491-august/00-aclBusiness.sql b/db/changes/10491-august/00-aclBusiness.sql new file mode 100644 index 000000000..8ea2c6d83 --- /dev/null +++ b/db/changes/10491-august/00-aclBusiness.sql @@ -0,0 +1,3 @@ +INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('Business', '*', '*', 'ALLOW', 'ROLE', 'hr'); \ No newline at end of file diff --git a/db/changes/10491-august/00-aclUsesMana.sql b/db/changes/10491-august/00-aclUsesMana.sql new file mode 100644 index 000000000..5bb7178dd --- /dev/null +++ b/db/changes/10491-august/00-aclUsesMana.sql @@ -0,0 +1,3 @@ +INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('Sale', 'usesMana', '*', 'ALLOW', 'ROLE', 'employee'); \ No newline at end of file diff --git a/db/changes/10491-august/00-defaultPayDem_sameAs_production.sql b/db/changes/10491-august/00-defaultPayDem_sameAs_production.sql new file mode 100644 index 000000000..294247338 --- /dev/null +++ b/db/changes/10491-august/00-defaultPayDem_sameAs_production.sql @@ -0,0 +1,2 @@ +INSERT INTO `vn`.`payDem` (id,payDem) + VALUES (7,'0'); diff --git a/db/changes/10491-august/00-invoiceInPdf.sql b/db/changes/10491-august/00-invoiceInPdf.sql new file mode 100644 index 000000000..bce256c05 --- /dev/null +++ b/db/changes/10491-august/00-invoiceInPdf.sql @@ -0,0 +1,4 @@ +INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('InvoiceIn', 'invoiceInPdf', 'READ', 'ALLOW', 'ROLE', 'administrative'), + ('InvoiceIn', 'invoiceInEmail', 'WRITE', 'ALLOW', 'ROLE', 'administrative'); diff --git a/db/changes/10491-august/00-newSupplier_ACL.sql b/db/changes/10491-august/00-newSupplier_ACL.sql new file mode 100644 index 000000000..c88f3de3f --- /dev/null +++ b/db/changes/10491-august/00-newSupplier_ACL.sql @@ -0,0 +1,2 @@ +INSERT INTO `salix`.`ACL` (model,property,accessType,principalId) + VALUES ('Supplier','newSupplier','WRITE','administrative'); diff --git a/db/changes/10491-august/00-notificationProc.sql b/db/changes/10491-august/00-notificationProc.sql new file mode 100644 index 000000000..475b2e389 --- /dev/null +++ b/db/changes/10491-august/00-notificationProc.sql @@ -0,0 +1,28 @@ +DROP FUNCTION IF EXISTS `util`.`notification_send`; +DELIMITER $$ +CREATE DEFINER=`root`@`localhost` FUNCTION `util`.`notification_send`(vNotificationName VARCHAR(255), vParams TEXT, vAuthorFk INT) + RETURNS INT + MODIFIES SQL DATA +BEGIN +/** + * Sends a notification. + * + * @param vNotificationName The notification name + * @param vParams The notification parameters formatted as JSON + * @param vAuthorFk The notification author or %NULL if there is no author + * @return The notification id + */ + DECLARE vNotificationFk INT; + + SELECT id INTO vNotificationFk + FROM `notification` + WHERE `name` = vNotificationName; + + INSERT INTO notificationQueue + SET notificationFk = vNotificationFk, + params = vParams, + authorFk = vAuthorFk; + + RETURN LAST_INSERT_ID(); +END$$ +DELIMITER ; diff --git a/db/changes/10491-august/00-notificationTables.sql b/db/changes/10491-august/00-notificationTables.sql new file mode 100644 index 000000000..2db7d9874 --- /dev/null +++ b/db/changes/10491-august/00-notificationTables.sql @@ -0,0 +1,63 @@ +USE util; + +CREATE TABLE notification( + id INT PRIMARY KEY, + `name` VARCHAR(255) UNIQUE, + `description` VARCHAR(255) +); + +CREATE TABLE notificationAcl( + notificationFk INT, + roleFk INT(10) unsigned, + PRIMARY KEY(notificationFk, roleFk) +); + +ALTER TABLE `util`.`notificationAcl` ADD CONSTRAINT `notificationAcl_ibfk_1` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification` (`id`) + ON DELETE CASCADE + ON UPDATE CASCADE; + +ALTER TABLE `util`.`notificationAcl` ADD CONSTRAINT `notificationAcl_ibfk_2` FOREIGN KEY (`roleFk`) REFERENCES `account`.`role`(`id`) + ON DELETE RESTRICT + ON UPDATE CASCADE; + +CREATE TABLE notificationSubscription( + notificationFk INT, + userFk INT(10) unsigned, + PRIMARY KEY(notificationFk, userFk) +); + +ALTER TABLE `util`.`notificationSubscription` ADD CONSTRAINT `notificationSubscription_ibfk_1` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification` (`id`) + ON DELETE CASCADE + ON UPDATE CASCADE; + +ALTER TABLE `util`.`notificationSubscription` ADD CONSTRAINT `notificationSubscription_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user`(`id`) + ON DELETE CASCADE + ON UPDATE CASCADE; + +CREATE TABLE notificationQueue( + id INT PRIMARY KEY AUTO_INCREMENT, + notificationFk VARCHAR(255), + params JSON, + authorFk INT(10) unsigned NULL, + `status` ENUM('pending', 'sent', 'error') NOT NULL DEFAULT 'pending', + created DATETIME DEFAULT CURRENT_TIMESTAMP, + INDEX(notificationFk), + INDEX(authorFk), + INDEX(status) +); + +ALTER TABLE `util`.`notificationQueue` ADD CONSTRAINT `nnotificationQueue_ibfk_1` FOREIGN KEY (`notificationFk`) REFERENCES `util`.`notification` (`name`) + ON DELETE CASCADE + ON UPDATE CASCADE; + +ALTER TABLE `util`.`notificationQueue` ADD CONSTRAINT `notificationQueue_ibfk_2` FOREIGN KEY (`authorFk`) REFERENCES `account`.`user`(`id`) + ON DELETE CASCADE + ON UPDATE CASCADE; + +CREATE TABLE notificationConfig( + id INT PRIMARY KEY AUTO_INCREMENT, + cleanDays MEDIUMINT +); + +INSERT INTO notificationConfig + SET cleanDays = 90; diff --git a/db/changes/10491-august/00-osTicketConfig.sql b/db/changes/10491-august/00-osTicketConfig.sql new file mode 100644 index 000000000..10a58b6c8 --- /dev/null +++ b/db/changes/10491-august/00-osTicketConfig.sql @@ -0,0 +1,8 @@ +ALTER TABLE `vn`.`osTicketConfig` DROP COLUMN `action`; +ALTER TABLE `vn`.`osTicketConfig` ADD responseType varchar(100) NULL; +ALTER TABLE `vn`.`osTicketConfig` ADD fromEmailId INT NULL; +ALTER TABLE `vn`.`osTicketConfig` ADD replyTo varchar(100) NULL; + +UPDATE `vn`.`osTicketConfig` + SET responseType='reply', fromEmailId=5, replyTo='all' +WHERE id=0; \ No newline at end of file diff --git a/db/changes/10491-august/00-payMethodFk_Allow_Null.sql b/db/changes/10491-august/00-payMethodFk_Allow_Null.sql new file mode 100644 index 000000000..6d9931d3c --- /dev/null +++ b/db/changes/10491-august/00-payMethodFk_Allow_Null.sql @@ -0,0 +1 @@ +ALTER TABLE `vn`.`supplier` MODIFY COLUMN payMethodFk tinyint(3) unsigned NULL; \ No newline at end of file diff --git a/db/changes/10491-august/00-supplierActivityFk_Allow_Null.sql b/db/changes/10491-august/00-supplierActivityFk_Allow_Null.sql new file mode 100644 index 000000000..62aac0556 --- /dev/null +++ b/db/changes/10491-august/00-supplierActivityFk_Allow_Null.sql @@ -0,0 +1 @@ +ALTER TABLE `vn`.`supplier` MODIFY COLUMN supplierActivityFk varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL NULL; \ No newline at end of file diff --git a/db/changes/10491-august/00-ticket_closeByTicket.sql b/db/changes/10491-august/00-ticket_closeByTicket.sql new file mode 100644 index 000000000..f378b1146 --- /dev/null +++ b/db/changes/10491-august/00-ticket_closeByTicket.sql @@ -0,0 +1,35 @@ +drop procedure `vn`.`ticket_closeByTicket`; + +DELIMITER $$ +$$ +create + definer = `root`@`localhost` procedure `vn`.`ticket_closeByTicket`(IN vTicketFk int) +BEGIN + +/** + * Inserta el ticket en la tabla temporal + * para ser cerrado. + * + * @param vTicketFk Id del ticket + */ + + DROP TEMPORARY TABLE IF EXISTS tmp.ticket_close; + CREATE TEMPORARY TABLE tmp.ticket_close ENGINE = MEMORY ( + SELECT + t.id AS ticketFk + FROM ticket t + JOIN agencyMode am ON am.id = t.agencyModeFk + LEFT JOIN ticketState ts ON ts.ticketFk = t.id + JOIN alertLevel al ON al.id = ts.alertLevel + WHERE al.code = 'PACKED' OR (am.code = 'refund' AND al.code != 'delivered') + AND t.id = vTicketFk + AND t.refFk IS NULL + GROUP BY t.id); + + CALL ticket_close(); + + DROP TEMPORARY TABLE tmp.ticket_close; +END$$ +DELIMITER ; + + diff --git a/db/changes/10491-august/00-zipConfig.sql b/db/changes/10491-august/00-zipConfig.sql new file mode 100644 index 000000000..134ce7770 --- /dev/null +++ b/db/changes/10491-august/00-zipConfig.sql @@ -0,0 +1,9 @@ +CREATE TABLE `vn`.`zipConfig` ( + `id` double(10,2) NOT NULL, + `maxSize` int(11) DEFAULT NULL COMMENT 'in MegaBytes', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; + +INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('ZipConfig', '*', '*', 'ALLOW', 'ROLE', 'employee'); \ No newline at end of file diff --git a/db/changes/10500-november/00-ACL.sql b/db/changes/10500-november/00-ACL.sql new file mode 100644 index 000000000..0b726538c --- /dev/null +++ b/db/changes/10500-november/00-ACL.sql @@ -0,0 +1,5 @@ +INSERT INTO `salix`.`ACL` (model, property, accessType, permission, principalType, principalId) +VALUES + ('ClaimRma', '*', 'READ', 'ALLOW', 'ROLE', 'claimManager'), + ('ClaimRma', '*', 'WRITE', 'ALLOW', 'ROLE', 'claimManager'); + diff --git a/db/changes/10500-november/00-claim.sql b/db/changes/10500-november/00-claim.sql new file mode 100644 index 000000000..0b9879878 --- /dev/null +++ b/db/changes/10500-november/00-claim.sql @@ -0,0 +1 @@ +ALTER TABLE `vn`.`claim` ADD rma varchar(100) NULL ; \ No newline at end of file diff --git a/db/changes/10500-november/00-claimRma.sql b/db/changes/10500-november/00-claimRma.sql new file mode 100644 index 000000000..91e1ebaba --- /dev/null +++ b/db/changes/10500-november/00-claimRma.sql @@ -0,0 +1,7 @@ +CREATE TABLE `vn`.`claimRma` ( + id INT UNSIGNED auto_increment NOT NULL PRIMARY KEY, + code varchar(100) NOT NULL, + created timestamp DEFAULT current_timestamp() NOT NULL, + workerFk INTEGER UNSIGNED NOT NULL +) +ENGINE=InnoDB; diff --git a/db/changes/10501-november/00-aclNotification.sql b/db/changes/10501-november/00-aclNotification.sql new file mode 100644 index 000000000..51d6b2471 --- /dev/null +++ b/db/changes/10501-november/00-aclNotification.sql @@ -0,0 +1,3 @@ +INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('Notification', '*', 'WRITE', 'ALLOW', 'ROLE', 'developer'); diff --git a/db/changes/10501-november/00-packingSiteConfig.sql b/db/changes/10501-november/00-packingSiteConfig.sql new file mode 100644 index 000000000..945b5a54c --- /dev/null +++ b/db/changes/10501-november/00-packingSiteConfig.sql @@ -0,0 +1,12 @@ +CREATE TABLE `vn`.`packingSiteConfig` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `shinobiUrl` varchar(255) NOT NULL, + `shinobiToken` varchar(255) NOT NULL, + `shinobiGroupKey` varchar(255) NOT NULL, + `avgBoxingTime` INT(3) NULL, + PRIMARY KEY (`id`) + ); + +INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('Boxing', '*', '*', 'ALLOW', 'ROLE', 'employee'); diff --git a/db/changes/10501-november/00-packingSiteUpdate.sql b/db/changes/10501-november/00-packingSiteUpdate.sql new file mode 100644 index 000000000..14313fd52 --- /dev/null +++ b/db/changes/10501-november/00-packingSiteUpdate.sql @@ -0,0 +1,56 @@ +ALTER TABLE `vn`.`packingSite` ADD monitorId varchar(255) NULL; + +UPDATE `vn`.`packingSite` + SET monitorId = 'VbiUcajdaT' + WHERE code = 'h1'; +UPDATE `vn`.`packingSite` + SET monitorId = 'qKMPn9aaVe' + WHERE code = 'h2'; +UPDATE `vn`.`packingSite` + SET monitorId = '3CtdIAGPAv' + WHERE code = 'h3'; +UPDATE `vn`.`packingSite` + SET monitorId = 'Xme2hiqz1f' + WHERE code = 'h4'; +UPDATE `vn`.`packingSite` + SET monitorId = 'aulxefgfJU' + WHERE code = 'h5'; +UPDATE `vn`.`packingSite` + SET monitorId = '6Ou0D1bhBw' + WHERE code = 'h6'; +UPDATE `vn`.`packingSite` + SET monitorId = 'eVUvnE6pNw' + WHERE code = 'h7'; +UPDATE `vn`.`packingSite` + SET monitorId = '0wsmSvqmrs' + WHERE code = 'h8'; +UPDATE `vn`.`packingSite` + SET monitorId = 'r2l2RyyF4I' + WHERE code = 'h9'; +UPDATE `vn`.`packingSite` + SET monitorId = 'EdjHLIiDVD' + WHERE code = 'h10'; +UPDATE `vn`.`packingSite` + SET monitorId = 'czC45kmwqI' + WHERE code = 'h11'; +UPDATE `vn`.`packingSite` + SET monitorId = 'PNsmxPaCwQ' + WHERE code = 'h12'; +UPDATE `vn`.`packingSite` + SET monitorId = 'agVssO0FDC' + WHERE code = 'h13'; +UPDATE `vn`.`packingSite` + SET monitorId = 'f2SPNENHPo' + WHERE code = 'h14'; +UPDATE `vn`.`packingSite` + SET monitorId = '6UR7gUZxks' + WHERE code = 'h15'; +UPDATE `vn`.`packingSite` + SET monitorId = 'bOB0f8WZ2V' + WHERE code = 'h16'; +UPDATE `vn`.`packingSite` + SET monitorId = 'MIR1nXaL0n' + WHERE code = 'h17'; +UPDATE `vn`.`packingSite` + SET monitorId = '0Oj9SgGTXR' + WHERE code = 'h18'; diff --git a/db/changes/10501-november/00-salix_url.sql b/db/changes/10501-november/00-salix_url.sql new file mode 100644 index 000000000..ea5c3b606 --- /dev/null +++ b/db/changes/10501-november/00-salix_url.sql @@ -0,0 +1,33 @@ +CREATE TABLE `salix`.`url` ( + `appName` varchar(100) NOT NULL, + `environment` varchar(100) NOT NULL, + `url` varchar(255) NOT NULL, + PRIMARY KEY (`appName`,`environment`) +); + +INSERT INTO `salix`.`url` (`appName`, `environment`, `url`) + VALUES + ('salix', 'production', 'https://salix.verdnatura.es/#!/'); +INSERT INTO `salix`.`url` (`appName`, `environment`, `url`) + VALUES + ('salix', 'test', 'https://test-salix.verdnatura.es/#!/'); +INSERT INTO `salix`.`url` (`appName`, `environment`, `url`) + VALUES + ('salix', 'dev', 'http://localhost:5000/#!/'); +INSERT INTO `salix`.`url` (`appName`, `environment`, `url`) + VALUES + ('lilium', 'production', 'https://lilium.verdnatura.es/#/'); +INSERT INTO `salix`.`url` (`appName`, `environment`, `url`) + VALUES + ('lilium', 'test', 'https://test-lilium.verdnatura.es/#/'); +INSERT INTO `salix`.`url` (`appName`, `environment`, `url`) + VALUES + ('lilium', 'dev', 'http://localhost:8080/#/'); + +INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('Url', '*', 'READ', 'ALLOW', 'ROLE', 'employee'); + +INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('Url', '*', 'WRITE', 'ALLOW', 'ROLE', 'it'); diff --git a/db/changes/10502-november/00-deletePickupContact.sql b/db/changes/10502-november/00-deletePickupContact.sql new file mode 100644 index 000000000..6bfa662c5 --- /dev/null +++ b/db/changes/10502-november/00-deletePickupContact.sql @@ -0,0 +1 @@ +ALTER TABLE `vn`.`claimConfig` DROP COLUMN `pickupContact`; diff --git a/db/changes/10502-november/00-itemShelvingACL.sql b/db/changes/10502-november/00-itemShelvingACL.sql new file mode 100644 index 000000000..fc32fe1ed --- /dev/null +++ b/db/changes/10502-november/00-itemShelvingACL.sql @@ -0,0 +1,4 @@ +INSERT INTO `salix`.`ACL` (model, property, accessType, permission, principalType, principalId) +VALUES + ('ItemShelving', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('ItemShelving', '*', 'WRITE', 'ALLOW', 'ROLE', 'production'); \ No newline at end of file diff --git a/db/changes/10411-january/00-acl.sql b/db/changes/10502-november/00-itemShelvingPlacementSupplyStockACL.sql similarity index 50% rename from db/changes/10411-january/00-acl.sql rename to db/changes/10502-november/00-itemShelvingPlacementSupplyStockACL.sql index fad50d15d..25eac8d51 100644 --- a/db/changes/10411-january/00-acl.sql +++ b/db/changes/10502-november/00-itemShelvingPlacementSupplyStockACL.sql @@ -1,2 +1,4 @@ INSERT INTO `salix`.`ACL` (model, property, accessType, permission, principalType, principalId) - VALUES('InvoiceInDueDay', '*', '*', 'ALLOW', 'ROLE', 'administrative'); \ No newline at end of file +VALUES + ('ItemShelvingPlacementSupplyStock', '*', 'READ', 'ALLOW', 'ROLE', 'employee'); + diff --git a/db/changes/10502-november/00-workerTimeControlMail.sql b/db/changes/10502-november/00-workerTimeControlMail.sql new file mode 100644 index 000000000..e3d169a83 --- /dev/null +++ b/db/changes/10502-november/00-workerTimeControlMail.sql @@ -0,0 +1 @@ +ALTER TABLE `vn`.`workerTimeControlMail` CHANGE emailResponse reason text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL NULL; \ No newline at end of file diff --git a/db/changes/10502-november/00-zone_getPostalCode.sql b/db/changes/10502-november/00-zone_getPostalCode.sql new file mode 100644 index 000000000..58a281cb2 --- /dev/null +++ b/db/changes/10502-november/00-zone_getPostalCode.sql @@ -0,0 +1,54 @@ +DROP PROCEDURE IF EXISTS `vn`.`zone_getPostalCode`; + +DELIMITER $$ +$$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`zone_getPostalCode`(vSelf INT) +BEGIN +/** + * Devuelve los códigos postales incluidos en una zona + */ + DECLARE vGeoFk INT DEFAULT NULL; + + DROP TEMPORARY TABLE IF EXISTS tmp.zoneNodes; + CREATE TEMPORARY TABLE tmp.zoneNodes ( + geoFk INT, + name VARCHAR(100), + parentFk INT, + sons INT, + isChecked BOOL DEFAULT 0, + zoneFk INT, + PRIMARY KEY zoneNodesPk (zoneFk, geoFk), + INDEX(geoFk)) + ENGINE = MEMORY; + + CALL zone_getLeaves2(vSelf, NULL , NULL); + + UPDATE tmp.zoneNodes zn + SET isChecked = 0 + WHERE parentFk IS NULL; + + myLoop: LOOP + SET vGeoFk = NULL; + SELECT geoFk INTO vGeoFk + FROM tmp.zoneNodes zn + WHERE NOT isChecked + LIMIT 1; + + CALL zone_getLeaves2(vSelf, vGeoFk, NULL); + UPDATE tmp.zoneNodes + SET isChecked = TRUE + WHERE geoFk = vGeoFk; + + IF vGeoFk IS NULL THEN + LEAVE myLoop; + END IF; + END LOOP; + + DELETE FROM tmp.zoneNodes + WHERE sons > 0; + + SELECT zn.geoFk, zn.name + FROM tmp.zoneNodes zn + JOIN zone z ON z.id = zn.zoneFk; +END$$ +DELIMITER ; diff --git a/db/changes/10503-november/delete.keep b/db/changes/10503-november/delete.keep new file mode 100644 index 000000000..e69de29bb diff --git a/db/docker.js b/db/docker.js index ea9fe8ed1..05217d659 100644 --- a/db/docker.js +++ b/db/docker.js @@ -19,12 +19,16 @@ module.exports = class Docker { * to avoid a bug with OverlayFS driver on MacOS. * * @param {Boolean} ci continuous integration environment argument + * @param {String} networkName Name of the container network */ - async run(ci) { + async run(ci, networkName = 'jenkins') { let d = new Date(); let pad = v => v < 10 ? '0' + v : v; let stamp = `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`; + + log('Building container image...'); await this.execP(`docker build --build-arg STAMP=${stamp} -t salix-db ./db`); + log('Image built.'); let dockerArgs; @@ -39,7 +43,12 @@ module.exports = class Docker { let runChown = process.platform != 'linux'; - const container = await this.execP(`docker run --env RUN_CHOWN=${runChown} -d ${dockerArgs} salix-db`); + let network = ''; + if (ci) network = `--network="${networkName}"`; + + log('Starting container...'); + const container = await this.execP( + `docker run ${network} --env RUN_CHOWN=${runChown} -d ${dockerArgs} salix-db`); this.id = container.stdout.trim(); try { @@ -47,10 +56,11 @@ module.exports = class Docker { let inspect = await this.execP(`docker inspect -f "{{json .NetworkSettings}}" ${this.id}`); let netSettings = JSON.parse(inspect.stdout); - if (ci) - this.dbConf.host = netSettings.Gateway; - - this.dbConf.port = netSettings.Ports['3306/tcp'][0]['HostPort']; + if (ci) { + this.dbConf.host = netSettings.Networks[networkName].IPAddress; + this.dbConf.port = 3306; + } else + this.dbConf.port = netSettings.Ports['3306/tcp'][0]['HostPort']; } await this.wait(); @@ -158,6 +168,7 @@ module.exports = class Docker { return reject(new Error('Docker exited, please see the docker logs for more info')); let conn = mysql.createConnection(myConf); + conn.on('error', () => {}); conn.connect(err => { conn.destroy(); diff --git a/db/dump/dumpedFixtures.sql b/db/dump/dumpedFixtures.sql index e11cf44d5..c9c265ae7 100644 --- a/db/dump/dumpedFixtures.sql +++ b/db/dump/dumpedFixtures.sql @@ -1,10 +1,10 @@ USE `util`; --- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) +-- MySQL dump 10.19 Distrib 10.3.34-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: util -- ------------------------------------------------------ --- Server version 5.6.25-4-log +-- Server version 10.7.4-MariaDB-1:10.7.4+maria~bullseye-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -22,9 +22,29 @@ USE `util`; LOCK TABLES `config` WRITE; /*!40000 ALTER TABLE `config` DISABLE KEYS */; -INSERT INTO `config` VALUES (1,'10390',0,'production',NULL); +INSERT INTO `config` VALUES (1,'10480',0,'production',NULL); /*!40000 ALTER TABLE `config` ENABLE KEYS */; UNLOCK TABLES; + +-- +-- Dumping data for table `version` +-- + +LOCK TABLES `version` WRITE; +/*!40000 ALTER TABLE `version` DISABLE KEYS */; +INSERT INTO `version` VALUES ('salix','10230','53f69ae8e526a4a5d827c237a5b076d38507b392','2020-11-09 11:06:43',NULL),('vn-database','10322','4e88fb5d53bd852a3fe96e00cf96bf77540fabc4','2022-09-15 09:48:41','10337'); +/*!40000 ALTER TABLE `version` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Dumping data for table `versionLog` +-- + +LOCK TABLES `versionLog` WRITE; +/*!40000 ALTER TABLE `versionLog` DISABLE KEYS */; +INSERT INTO `versionLog` VALUES ('vn-database','00001','00-test.sql','juan@10.5.1.3','2022-01-31 10:12:26',NULL,NULL),('vn-database','00003','00-sage.sql','juan@10.5.1.3','2022-01-31 10:12:26',NULL,NULL),('vn-database','10008','00-alterRoleConfig.sql','juan@10.5.1.3','2022-01-31 10:12:26',NULL,NULL),('vn-database','10014','00-rolePrefix.sql','jenkins@10.0.2.68','2022-02-11 00:13:25',NULL,NULL),('vn-database','10017','01-firstScript.sql','jenkins@10.0.2.70','2022-03-09 11:36:54',NULL,NULL),('vn-database','10021','00-bankAccount.sql','jenkins@10.0.2.69','2022-03-16 14:11:22',NULL,NULL),('vn-database','10023','00-firstScript.sql','jenkins@10.0.2.69','2022-03-16 15:05:29',NULL,NULL),('vn-database','10026','00-invoiceInIntrastat.sql','jenkins@10.0.2.69','2022-03-21 15:10:53',NULL,NULL),('vn-database','10027','00-Clientes_cedidos.sql','jenkins@10.0.2.69','2022-03-22 15:58:12',NULL,NULL),('vn-database','10028','00-item_last_buy_.sql','jenkins@10.0.2.69','2022-03-22 15:58:12',NULL,NULL),('vn-database','10029','00-bankToViewAccountingToTable.sql','jenkins@10.0.2.69','2022-03-22 15:58:12',NULL,NULL),('vn-database','10030','00-KkejarNiche.sql','jenkins@10.0.2.69','2022-03-22 15:58:12',NULL,NULL),('vn-database','10036','00-updateBuyConfig.sql','jenkins@10.0.2.69','2022-03-29 12:36:54',NULL,NULL),('vn-database','10037','00-firstScript.sql','jenkins@10.0.2.69','2022-03-28 11:14:26',NULL,NULL),('vn-database','10038','00-printServerQueue.sql','jenkins@10.0.2.69','2022-03-29 08:13:24',NULL,NULL),('vn-database','10048','00-firstScript.sql','jenkins@10.0.2.69','2022-03-30 12:29:06',NULL,NULL),('vn-database','10058','00-vehicleAddFields.sql','jenkins@10.0.2.69','2022-04-06 08:48:34',NULL,NULL),('vn-database','10060','00-firstScript.sql','jenkins@10.0.2.69','2022-04-07 08:50:11',NULL,NULL),('vn-database','10062','00-firstScript.sql','jenkins@10.0.2.69','2022-04-06 10:51:45',NULL,NULL),('vn-database','10064','00-firstScript.sql','jenkins@10.0.2.69','2022-04-06 13:57:11',NULL,NULL),('vn-database','10066','00-firstScript.sql','jenkins@10.0.2.69','2022-04-07 08:50:12',NULL,NULL),('vn-database','10067','00-firstScript.sql','jenkins@10.0.2.69','2022-04-08 10:18:20',NULL,NULL),('vn-database','10071','00-packingSiteLog.sql','jenkins@10.0.2.69','2022-04-08 09:37:30',NULL,NULL),('vn-database','10072','00-firstScript.sql','jenkins@10.0.2.69','2022-04-08 11:01:46',NULL,NULL),('vn-database','10073','00-firstScript.sql','jenkins@10.0.2.69','2022-04-08 13:40:56',NULL,NULL),('vn-database','10074','00-firstScript.sql','jenkins@10.0.2.69','2022-04-10 13:15:05',NULL,NULL),('vn-database','10077','00-firstScript.sql','jenkins@10.0.2.69','2022-04-12 08:07:15',NULL,NULL),('vn-database','10078','00-firstScript.sql','jenkins@10.0.2.69','2022-04-13 07:44:21',NULL,NULL),('vn-database','10079','00-firstScript.sql','jenkins@10.0.2.69','2022-04-12 12:01:37',NULL,NULL),('vn-database','10086','00-firstScript.sql','jenkins@10.0.2.69','2022-04-13 08:58:34',NULL,NULL),('vn-database','10087','00-firstScript.sql','jenkins@10.0.2.69','2022-04-13 09:39:49',NULL,NULL),('vn-database','10088','00-firstScript.sql','jenkins@10.0.2.69','2022-04-13 15:05:12',NULL,NULL),('vn-database','10089','00-firstScript.sql','jenkins@10.0.2.69','2022-04-18 14:12:52',NULL,NULL),('vn-database','10090','00-firstScript.sql','jenkins@10.0.2.69','2022-04-18 14:34:46',NULL,NULL),('vn-database','10092','00-firstScript.sql','jenkins@10.0.2.69','2022-04-19 14:45:46',NULL,NULL),('vn-database','10093','00-autoradioConfig.sql','jenkins@10.0.2.69','2022-05-03 09:16:47',NULL,NULL),('vn-database','10094','00-firstScript.sql','jenkins@10.0.2.69','2022-04-20 10:57:30',NULL,NULL),('vn-database','10097','00-firstScript.sql','jenkins@10.0.2.69','2022-05-05 10:12:59',NULL,NULL),('vn-database','10099','00-firstScript.sql','jenkins@10.0.2.69','2022-04-20 14:35:27',NULL,NULL),('vn-database','10100','00-firstScript.sql','jenkins@10.0.2.69','2022-04-20 14:35:27',NULL,NULL),('vn-database','10101','00-firstScript.sql','jenkins@10.0.2.69','2022-04-21 14:59:31',NULL,NULL),('vn-database','10103','00-awbVolume.sql','jenkins@10.0.2.69','2022-05-05 10:12:59',NULL,NULL),('vn-database','10104','00-firstScript.sql','jenkins@10.0.2.69','2022-05-05 10:12:59',NULL,NULL),('vn-database','10105','00-firstScript.sql','jenkins@10.0.2.69','2022-05-05 10:13:00',NULL,NULL),('vn-database','10107','00-firstScript.sql','jenkins@10.0.2.69','2022-04-23 10:53:53',NULL,NULL),('vn-database','10112','00-firstScript.sql','jenkins@10.0.2.69','2022-05-09 09:14:53',NULL,NULL),('vn-database','10113','00-firstScript.sql','jenkins@10.0.2.69','2022-05-05 10:13:00',NULL,NULL),('vn-database','10114','00-updateConfig.sql','jenkins@10.0.2.69','2022-04-27 13:37:25',NULL,NULL),('vn-database','10116','00-firstScript.sql','jenkins@10.0.2.69','2022-04-28 11:10:14',NULL,NULL),('vn-database','10118','00-firstScript.sql','jenkins@10.0.2.69','2022-04-29 08:10:15',NULL,NULL),('vn-database','10119','00-AfegirFKPart1.sql','jenkins@10.0.2.69','2022-05-05 10:13:00',NULL,NULL),('vn-database','10119','01-AfegirFkPart2.sql','jenkins@10.0.2.69','2022-05-05 10:22:25',NULL,NULL),('vn-database','10125','00-firstScript.sql','jenkins@10.0.2.68','2022-05-18 18:44:30',NULL,NULL),('vn-database','10127','00-firstScript.sql','jenkins@10.0.2.69','2022-05-02 11:04:46',NULL,NULL),('vn-database','10128','00-firstScript.sql','jenkins@10.0.2.69','2022-05-02 13:04:31',NULL,NULL),('vn-database','10129','00-firstScript.sql','jenkins@10.0.2.69','2022-05-03 08:21:01',NULL,NULL),('vn-database','10132','00-firstScript.sql','jenkins@10.0.2.69','2022-05-05 10:22:25',NULL,NULL),('vn-database','10133','00-firstScript.sql','jenkins@10.0.2.69','2022-05-05 14:32:30',NULL,NULL),('vn-database','10134','00-firstScript.sql','jenkins@10.0.2.69','2022-05-06 07:45:25',NULL,NULL),('vn-database','10135','00-firstScript.sql','jenkins@10.0.2.69','2022-06-17 08:46:17',NULL,NULL),('vn-database','10136','00-workerTimeControl.sql','jenkins@10.0.2.69','2022-05-09 13:51:12',NULL,NULL),('vn-database','10138','00-firstScript.sql','jenkins@10.0.2.69','2022-05-10 13:58:05',NULL,NULL),('vn-database','10139','00-firstScript.sql','jenkins@10.0.2.68','2022-05-16 14:32:37',NULL,NULL),('vn-database','10139','01-secondScript.sql','jenkins@10.0.2.68','2022-05-17 12:16:13',NULL,NULL),('vn-database','10141','00-firstScript.sql','jenkins@10.0.2.70','2022-05-12 08:27:31',NULL,NULL),('vn-database','10142','00-firstScript.sql','jenkins@10.0.2.68','2022-05-20 09:20:31',NULL,NULL),('vn-database','10143','00-firstScript.sql','jenkins@10.0.2.68','2022-05-20 09:20:31',NULL,NULL),('vn-database','10144','00-AfegirFKPArt1.sql','jenkins@10.0.2.68','2022-05-20 09:22:33',NULL,NULL),('vn-database','10144','00-firstScript.sql','jenkins@10.0.2.68','2022-05-13 09:44:25',NULL,NULL),('vn-database','10147','00-firstScript.sql','jenkins@10.0.2.68','2022-05-20 09:22:33',NULL,NULL),('vn-database','10149','00-firstScript.sql','jenkins@10.0.2.68','2022-05-20 09:22:33',NULL,NULL),('vn-database','10150','00-firstScript.sql','jenkins@10.0.2.68','2022-05-17 09:57:16',NULL,NULL),('vn-database','10152','00-firstScript.sql','jenkins@10.0.2.68','2022-05-20 09:22:34',NULL,NULL),('vn-database','10153','00-firstScript.sql','jenkins@10.0.2.68','2022-05-20 09:22:34',NULL,NULL),('vn-database','10154','00-compressionKk.sql','jenkins@10.0.2.68','2022-05-20 09:22:34',NULL,NULL),('vn-database','10157','00-firstScript.sql','jenkins@10.0.2.68','2022-05-20 09:22:35',NULL,NULL),('vn-database','10158','00-firstScript.sql','jenkins@10.0.2.68','2022-06-02 12:47:21',NULL,NULL),('vn-database','10160','00-firstScript.sql','jenkins@10.0.2.69','2022-06-30 09:30:50',NULL,NULL),('vn-database','10163','00-firstScript.sql','jenkins@10.0.2.68','2022-05-23 08:17:14',NULL,NULL),('vn-database','10164','00-borrarSectorsDesus.sql','jenkins@10.0.2.68','2022-06-02 12:47:21',NULL,NULL),('vn-database','10165','00-firstScript.sql','jenkins@10.0.2.68','2022-06-02 12:47:22',NULL,NULL),('vn-database','10166','00-firstScript.sql','jenkins@10.0.2.68','2022-05-24 16:11:21',NULL,NULL),('vn-database','10167','00-renameVnActiveContrat.sql','jenkins@10.0.2.68','2022-06-02 12:47:22',NULL,NULL),('vn-database','10168','00-firstScript.sql','jenkins@10.0.2.68','2022-06-02 12:47:22',NULL,NULL),('vn-database','10169','00-createTableBankEntityConfig.sql','jenkins@10.0.2.68','2022-06-02 12:47:22',NULL,NULL),('vn-database','10169','02-addNotNullToBankEntityBic.sql','jenkins@10.0.2.68','2022-06-02 12:47:22',NULL,NULL),('vn-database','10171','00-volumeConfig.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-18 14:11:11',NULL,NULL),('vn-database','10171','01-itemWeight.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-18 16:01:34',NULL,NULL),('vn-database','10171','02-agencymode.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-18 16:01:34',NULL,NULL),('vn-database','10172','00-firstScript.sql','jenkins@10.0.2.68','2022-06-02 12:47:22',NULL,NULL),('vn-database','10174','00-firstScript.sql','jenkins@10.0.2.69','2022-06-17 08:46:17',NULL,NULL),('vn-database','10175','00-firstScript.sql','jenkins@10.0.2.69','2022-06-17 09:03:41',NULL,NULL),('vn-database','10177','00-crearTablaSpecialLabels.sql','jenkins@10.0.2.68','2022-06-02 12:47:22',NULL,NULL),('vn-database','10178','00-firstScript.sql','jenkins@10.0.2.68','2022-06-02 12:47:24',NULL,NULL),('vn-database','10179','00-firstScript.sql','jenkins@10.0.2.68','2022-06-02 12:47:24',NULL,NULL),('vn-database','10183','00-firstScript.sql','jenkins@10.0.2.68','2022-06-02 12:47:24',NULL,NULL),('vn-database','10184','00-firstScript.sql','jenkins@10.0.2.68','2022-06-03 08:05:34',NULL,NULL),('vn-database','10185','00-firstScript.sql','jenkins@10.0.2.68','2022-06-06 09:07:45',NULL,NULL),('vn-database','10186','00-desactivar_trigger.sql','jenkins@10.0.2.68','2022-06-07 09:31:23',NULL,NULL),('vn-database','10186','01-alter_Table_buy.sql','jenkins@10.0.2.68','2022-06-07 09:34:47',NULL,NULL),('vn-database','10186','02-alter_table_entryConfig.sql','jenkins@10.0.2.68','2022-06-07 09:34:47',NULL,NULL),('vn-database','10186','04-regularizar_Sticker_Inventario.sql','jenkins@10.0.2.68','2022-06-07 09:34:51',NULL,NULL),('vn-database','10186','09-reactivar_trigger.sql','jenkins@10.0.2.68','2022-06-07 09:34:51',NULL,NULL),('vn-database','10187','00-firstScript.sql','jenkins@10.0.2.68','2022-06-06 12:37:31',NULL,NULL),('vn-database','10188','00-firstScript.sql','jenkins@10.0.2.68','2022-06-06 14:03:36',NULL,NULL),('vn-database','10189','00-firstScript.sql','jenkins@10.0.2.69','2022-06-17 09:03:41',NULL,NULL),('vn-database','10191','00-firstScript.sql','jenkins@10.0.2.69','2022-06-17 09:03:41',NULL,NULL),('vn-database','10194','00-firstScript.sql','jenkins@10.0.2.69','2022-06-17 09:03:41',NULL,NULL),('vn-database','10195','00-firstScript.sql','jenkins@10.0.2.69','2022-06-17 09:03:41',NULL,NULL),('vn-database','10200','00-firstScript.sql','jenkins@10.0.2.69','2022-06-17 09:04:00',NULL,NULL),('vn-database','10201','00-firstScript.sql','jenkins@10.0.2.69','2022-06-17 09:04:00',NULL,NULL),('vn-database','10202','00-Remove_FK_to_ediGenus.sql','jenkins@10.0.2.69','2022-06-17 09:04:00',NULL,NULL),('vn-database','10203','00-firstScript.sql','jenkins@10.0.2.69','2022-06-17 09:04:01',NULL,NULL),('vn-database','10204','00-firstScript.sql','jenkins@10.0.2.69','2022-06-17 09:04:01',NULL,NULL),('vn-database','10205','00-firstScript.sql','jenkins@10.0.2.69','2022-06-17 09:04:21',NULL,NULL),('vn-database','10207','00-Alter_table_entry.sql','jenkins@10.0.2.69','2022-06-16 07:22:50',NULL,NULL),('vn-database','10207','01-Update_invoiceAmount.sql','jenkins@10.0.2.69','2022-06-16 07:23:00',NULL,NULL),('vn-database','10208','00-firstScript.sql','jenkins@10.0.2.69','2022-06-30 09:31:26',NULL,NULL),('vn-database','10209','00-firstScript.sql','jenkins@10.0.2.69','2022-06-16 08:47:40',NULL,NULL),('vn-database','10210','00-firstScript.sql','jenkins@10.0.2.69','2022-06-16 17:39:17',1046,'Base de datos no seleccionada'),('vn-database','10211','01-firstScript.sql','jenkins@10.0.2.69','2022-06-17 07:11:27',NULL,NULL),('vn-database','10215','00-renameIsInventory.sql','jenkins@10.0.2.69','2022-06-30 09:31:26',NULL,NULL),('vn-database','10216','00-firstScript.sql','jenkins@10.0.2.69','2022-06-23 11:15:28',NULL,NULL),('vn-database','10216','01-batchIndex.sql','jenkins@10.0.2.70','2022-06-27 18:10:55',NULL,NULL),('vn-database','10219','00-AddCollectionFkOnPackingSite.sql','jenkins@10.0.2.70','2022-06-29 09:23:42',NULL,NULL),('vn-database','10219','01-AddFkToCollectionFk.sql','jenkins@10.0.2.70','2022-06-29 09:23:43',NULL,NULL),('vn-database','10220','00-createPersonalProtectionEquipment.sql','jenkins@10.0.2.69','2022-06-30 09:31:26',NULL,NULL),('vn-database','10222','00-firstScript.sql','jenkins@10.0.2.69','2022-07-14 09:12:40',NULL,NULL),('vn-database','10223','00-firstScript.sql','jenkins@10.0.2.69','2022-07-14 09:13:52',NULL,NULL),('vn-database','10224','00-cosetes.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-07-21 12:03:45',NULL,NULL),('vn-database','10229','00-firstScript.sql','jenkins@10.0.2.69','2022-07-01 11:59:34',NULL,NULL),('vn-database','10231','01-tablaEktConfig.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-11 09:25:39',NULL,NULL),('vn-database','10233','00-firstScript.sql','jenkins@10.0.2.69','2022-07-14 09:13:53',NULL,NULL),('vn-database','10235','00-firstScript.sql','jenkins@10.0.2.69','2022-07-14 09:13:53',NULL,NULL),('vn-database','10236','00-firstScript.sql','jenkins@10.0.2.69','2022-07-05 12:11:40',NULL,NULL),('vn-database','10237','00-firstScript.sql','jenkins@10.0.2.69','2022-07-14 09:13:53',NULL,NULL),('vn-database','10238','00-worker_mobileExtension.sql','jenkins@10.0.2.69','2022-07-14 09:14:09',NULL,NULL),('vn-database','10239','00-firstScript.sql','jenkins@10.0.2.69','2022-07-07 21:51:58',NULL,NULL),('vn-database','10241','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-07-29 08:14:01',NULL,NULL),('vn-database','10242','00-firstScript.sql','jenkins@10.0.2.69','2022-07-14 09:14:32',NULL,NULL),('vn-database','10243','00-firstScript.sql','jenkins@10.0.2.69','2022-07-14 09:14:32',NULL,NULL),('vn-database','10245','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-07-28 08:34:51',NULL,NULL),('vn-database','10247','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-07-28 08:34:51',NULL,NULL),('vn-database','10248','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-07-20 17:27:51',NULL,NULL),('vn-database','10250','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-07-28 08:36:40',NULL,NULL),('vn-database','10253','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-07-28 08:36:57',NULL,NULL),('vn-database','10254','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-07-28 08:38:48',NULL,NULL),('vn-database','10256','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-07-28 08:38:48',NULL,NULL),('vn-database','10259','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-02 08:54:56',NULL,NULL),('vn-database','10261','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-07-22 08:42:20',NULL,NULL),('vn-database','10262','00-createTablepackagingWithFreight.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:22:13',NULL,NULL),('vn-database','10262','01-alterTablePackagingConfig.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:22:13',NULL,NULL),('vn-database','10262','02-insertsInicials.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:22:13',NULL,NULL),('vn-database','10262','03-createTablepackingWithoutFreight.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:22:14',NULL,NULL),('vn-database','10263','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-07-28 08:38:48',NULL,NULL),('vn-database','10265','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-07-28 08:38:48',NULL,NULL),('vn-database','10267','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-11 09:34:17',NULL,NULL),('vn-database','10267','01-fixMerge.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-11 09:34:17',NULL,NULL),('vn-database','10275','00-improvedGeneralLog.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-01 09:55:56',NULL,NULL),('vn-database','10277','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-08 10:26:32',NULL,NULL),('vn-database','10278','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-01 17:51:41',NULL,NULL),('vn-database','10279','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-11 09:34:17',NULL,NULL),('vn-database','10281','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-11 09:34:18',NULL,NULL),('vn-database','10282','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-11 09:34:18',NULL,NULL),('vn-database','10283','00-alterTable.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-11 09:34:18',NULL,NULL),('vn-database','10284','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-04 16:59:08',NULL,NULL),('vn-database','10285','00-firstScript.sql','jenkins@swarm-worker3.static.verdnatura.es','2022-08-05 09:19:33',NULL,NULL),('vn-database','10287','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-11 09:35:24',NULL,NULL),('vn-database','10288','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-11 09:35:24',NULL,NULL),('vn-database','10291','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-10 14:19:34',NULL,NULL),('vn-database','10293','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-08 10:26:32',NULL,NULL),('vn-database','10297','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-16 12:43:36',NULL,NULL),('vn-database','10298','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-08-13 21:04:13',NULL,NULL),('vn-database','10299','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:22:14',NULL,NULL),('vn-database','10301','00-productionConfig.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:22:14',NULL,NULL),('vn-database','10301','01-drop.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:22:14',NULL,NULL),('vn-database','10301','02-collection.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:22:15',NULL,NULL),('vn-database','10302','00-CreateTableEntryType.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:22:15',NULL,NULL),('vn-database','10302','01-insertDataEntryType.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:22:15',NULL,NULL),('vn-database','10302','02-alterTableEntry.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:22:22',NULL,NULL),('vn-database','10303','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:22:23',NULL,NULL),('vn-database','10304','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:23:48',NULL,NULL),('vn-database','10304','01-altertableticket.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:23:51',NULL,NULL),('vn-database','10305','00-ektAssign.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:24:52',NULL,NULL),('vn-database','10306','00-deliveryInformation.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:25:25',NULL,NULL),('vn-database','10307','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:25:26',NULL,NULL),('vn-database','10308','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-02 17:26:43',NULL,NULL),('vn-database','10309','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-06 11:37:54',NULL,NULL),('vn-database','10310','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-08 10:26:33',NULL,NULL),('vn-database','10311','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-06 11:37:55',NULL,NULL),('vn-database','10312','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-08 10:26:33',NULL,NULL),('vn-database','10313','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-08 10:27:21',NULL,NULL),('vn-database','10315','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-08 10:31:43',NULL,NULL),('vn-database','10317','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-08 10:31:43',NULL,NULL),('vn-database','10318','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-08 10:31:43',NULL,NULL),('vn-database','10321','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-08 11:11:12',NULL,NULL),('vn-database','10322','00-firstScript.sql','jenkins@swarm-worker2.static.verdnatura.es','2022-09-09 09:19:05',NULL,NULL); +/*!40000 ALTER TABLE `versionLog` ENABLE KEYS */; +UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; @@ -34,13 +54,13 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-01-13 7:50:24 +-- Dump completed on 2022-09-16 7:03:04 USE `account`; --- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) +-- MySQL dump 10.19 Distrib 10.3.34-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: account -- ------------------------------------------------------ --- Server version 5.6.25-4-log +-- Server version 10.7.4-MariaDB-1:10.7.4+maria~bullseye-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -58,7 +78,7 @@ USE `account`; LOCK TABLES `role` WRITE; /*!40000 ALTER TABLE `role` DISABLE KEYS */; -INSERT INTO `role` VALUES (1,'employee','Empleado básico',1,'2017-05-19 07:04:58','2017-11-29 10:06:31'),(2,'customer','Privilegios básicos de un cliente',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(3,'agency','Consultar tablas de predicciones de bultos',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(5,'administrative','Tareas relacionadas con la contabilidad',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(6,'guest','Privilegios para usuarios sin cuenta',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(9,'developer','Desarrolladores del sistema',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(11,'account','Privilegios relacionados con el login',0,'2017-05-19 07:04:58','2017-09-20 17:06:35'),(13,'teamBoss','Jefe de equipo/departamento',1,'2017-05-19 07:04:58','2021-06-30 13:29:30'),(15,'logistic','Departamento de compras, responsables de la logistica',1,'2017-05-19 07:04:58','2018-02-12 10:50:10'),(16,'logisticBoss','Jefe del departamento de logística',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(17,'adminBoss','Jefe del departamento de administración',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(18,'salesPerson','Departamento de ventas',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(19,'salesBoss','Jefe del departamento de ventas',1,'2017-05-19 07:04:58','2017-08-16 12:38:27'),(20,'manager','Departamento de gerencia',1,'2017-06-01 14:57:02','2017-06-01 14:57:51'),(21,'salesAssistant','Jefe auxiliar de ventas',1,'2017-08-16 12:40:52','2017-08-16 12:40:52'),(22,'teamManager','Jefe de departamento con privilegios de auxiliar de venta.',1,'2017-09-07 09:08:12','2017-09-07 09:08:12'),(30,'financialBoss','Director finaciero',1,'2017-09-21 11:05:36','2017-09-21 11:05:36'),(31,'freelancer','Trabajadores por cuenta ajena',1,'2017-10-10 12:57:26','2017-10-10 12:59:27'),(32,'ett','Trabajadores de empresa temporal',1,'2017-10-10 12:58:58','2017-10-10 12:59:20'),(33,'invoicing','Personal con acceso a facturación',0,'2018-01-29 16:43:34','2018-01-29 16:43:34'),(34,'agencyBoss','Jefe/a del departamento de agencias',1,'2018-01-29 16:44:39','2018-02-23 07:58:53'),(35,'buyer','Departamento de compras',1,'2018-02-12 10:35:42','2018-02-12 10:35:42'),(36,'replenisher','Trabajadores de camara',1,'2018-02-16 14:07:10','2019-04-12 05:38:08'),(37,'hr','Gestor/a de recursos humanos',1,'2018-02-22 17:34:53','2018-02-22 17:34:53'),(38,'hrBoss','Jefe/a de recursos humanos',1,'2018-02-22 17:35:09','2018-02-22 17:35:09'),(39,'adminAssistant','Jefe auxiliar administrativo',1,'2018-02-23 10:37:36','2018-02-23 10:38:41'),(40,'handmade','Departamento de confección',1,'2018-02-23 11:14:53','2018-02-23 11:39:12'),(41,'handmadeBoss','Jefe de departamento de confección',1,'2018-02-23 11:15:09','2018-02-23 11:39:26'),(42,'artificial','Departamento de artificial',1,'2018-02-23 11:39:59','2018-02-23 11:39:59'),(43,'artificialBoss','Jefe del departamento de artificial',1,'2018-02-23 11:40:16','2018-02-23 11:40:16'),(44,'accessory','Departamento de complementos',1,'2018-02-23 11:41:12','2018-02-23 11:41:12'),(45,'accessoryBoss','Jefe del departamento de complementos',1,'2018-02-23 11:41:23','2018-02-23 11:41:23'),(47,'cooler','Empleados de cámara',1,'2018-02-23 13:08:18','2018-02-23 13:08:18'),(48,'coolerBoss','Jefe del departamento de cámara',1,'2018-02-23 13:12:01','2018-02-23 13:12:01'),(49,'production','Empleado de producción',1,'2018-02-26 15:28:23','2021-02-12 09:42:35'),(50,'productionBoss','Jefe de producción',1,'2018-02-26 15:34:12','2018-02-26 15:34:12'),(51,'marketing','Departamento de marketing',1,'2018-03-01 07:28:39','2018-03-01 07:28:39'),(52,'marketingBoss','Jefe del departamento de marketing',1,'2018-03-01 07:28:57','2018-03-01 07:28:57'),(53,'insurance','Gestor de seguros de cambio',0,'2018-03-05 07:44:35','2019-02-01 13:47:57'),(54,'itemPicker','Sacador en cámara',1,'2018-03-05 12:08:17','2018-03-05 12:08:17'),(55,'itemPickerBoss','Jefe de sacadores',1,'2018-03-05 12:08:31','2018-03-05 12:08:31'),(56,'delivery','Personal de reparto',1,'2018-05-30 06:07:02','2018-05-30 06:07:02'),(57,'deliveryBoss','Jefe de personal de reparto',1,'2018-05-30 06:07:19','2018-05-30 06:07:19'),(58,'packager','Departamento encajadores',1,'2019-01-21 12:43:45','2019-01-21 12:43:45'),(59,'packagerBoss','Jefe departamento encajadores',1,'2019-01-21 12:44:10','2019-01-21 12:44:10'),(60,'productionAssi','Tareas relacionadas con producción y administración',1,'2019-01-29 13:29:01','2019-01-29 13:29:01'),(61,'replenisherBos','Jefe de Complementos/Camara',1,'2019-07-01 06:44:07','2019-07-01 06:44:07'),(62,'noLogin','Role without login access to MySQL',0,'2019-07-01 06:50:19','2019-07-02 13:42:05'),(64,'balanceSheet','Consulta de Balance',0,'2019-07-16 12:12:08','2019-07-16 12:12:08'),(65,'officeBoss','Jefe de filial',1,'2019-08-02 06:54:26','2019-08-02 06:54:26'),(66,'sysadmin','Administrador de sistema',1,'2019-08-08 06:58:56','2019-08-08 06:58:56'),(67,'adminOfficer','categoria profesional oficial de administración',1,'2020-01-03 08:09:23','2020-01-03 08:09:23'),(69,'coolerAssist','Empleado cámara con permiso compras',1,'2020-02-05 12:36:09','2020-02-05 12:36:09'),(70,'trainee','Alumno de prácticas',1,'2020-03-04 11:00:25','2020-03-04 11:00:25'),(71,'checker','Rol de revisor con privilegios de itemPicker',1,'2020-10-02 10:50:07','2020-10-02 10:50:07'),(72,'claimManager','Personal de reclamaciones',1,'2020-10-13 10:01:32','2020-10-26 07:29:46'),(73,'financial','Departamento de finanzas',1,'2020-11-16 09:30:27','2020-11-16 09:30:27'),(74,'userPhotos','Privilegios para subir fotos de usuario',1,'2021-02-03 10:24:27','2021-02-03 10:24:27'),(75,'catalogPhotos','Privilegios para subir fotos del catálogo',1,'2021-02-03 10:24:27','2021-02-03 10:24:27'),(76,'chat','Rol para utilizar el rocket chat',1,'2020-11-27 13:06:50','2020-12-17 07:49:41'),(100,'root','Rol con todos los privilegios',0,'2018-04-23 14:33:36','2020-11-12 06:50:07'),(101,'buyerBoss','Jefe del departamento de compras',1,'2021-06-16 09:53:17','2021-06-16 09:53:17'),(102,'preservedBoss','Responsable preservado',1,'2021-09-14 13:45:37','2021-09-14 13:45:37'),(103,'it','Departamento de informática',1,'2021-11-11 09:48:22','2021-11-11 09:48:22'),(104,'itBoss','Jefe de departamento de informática',1,'2021-11-11 09:48:49','2021-11-11 09:48:49'),(105,'grant','Adjudicar roles a usuarios',1,'2021-11-11 12:41:09','2021-11-11 12:41:09'),(106,'ext','Usuarios externos de la Base de datos',1,'2021-11-23 14:51:16','2021-11-23 14:51:16'); +INSERT INTO `role` VALUES (1,'employee','Empleado básico',1,'2017-05-19 07:04:58','2017-11-29 10:06:31'),(2,'customer','Privilegios básicos de un cliente',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(3,'agency','Consultar tablas de predicciones de bultos',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(5,'administrative','Tareas relacionadas con la contabilidad',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(6,'guest','Privilegios para usuarios sin cuenta',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(9,'developer','Desarrolladores del sistema',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(11,'account','Privilegios relacionados con el login',0,'2017-05-19 07:04:58','2017-09-20 17:06:35'),(13,'teamBoss','Jefe de equipo/departamento',1,'2017-05-19 07:04:58','2021-06-30 13:29:30'),(15,'logistic','Departamento de compras, responsables de la logistica',1,'2017-05-19 07:04:58','2018-02-12 10:50:10'),(16,'logisticBoss','Jefe del departamento de logística',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(17,'adminBoss','Jefe del departamento de administración',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(18,'salesPerson','Departamento de ventas',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(19,'salesBoss','Jefe del departamento de ventas',1,'2017-05-19 07:04:58','2017-08-16 12:38:27'),(20,'manager','Gerencia',1,'2017-06-01 14:57:02','2022-07-29 07:36:15'),(21,'salesAssistant','Jefe auxiliar de ventas',1,'2017-08-16 12:40:52','2017-08-16 12:40:52'),(22,'teamManager','Jefe de departamento con privilegios de auxiliar de venta.',1,'2017-09-07 09:08:12','2017-09-07 09:08:12'),(30,'financialBoss','Director finaciero',1,'2017-09-21 11:05:36','2017-09-21 11:05:36'),(31,'freelancer','Trabajadores por cuenta ajena',1,'2017-10-10 12:57:26','2017-10-10 12:59:27'),(32,'ett','Trabajadores de empresa temporal',1,'2017-10-10 12:58:58','2017-10-10 12:59:20'),(33,'invoicing','Personal con acceso a facturación',0,'2018-01-29 16:43:34','2018-01-29 16:43:34'),(34,'agencyBoss','Jefe/a del departamento de agencias',1,'2018-01-29 16:44:39','2018-02-23 07:58:53'),(35,'buyer','Departamento de compras',1,'2018-02-12 10:35:42','2018-02-12 10:35:42'),(36,'replenisher','Trabajadores de camara',1,'2018-02-16 14:07:10','2019-04-12 05:38:08'),(37,'hr','Gestor/a de recursos humanos',1,'2018-02-22 17:34:53','2018-02-22 17:34:53'),(38,'hrBoss','Jefe/a de recursos humanos',1,'2018-02-22 17:35:09','2018-02-22 17:35:09'),(39,'adminAssistant','Jefe auxiliar administrativo',1,'2018-02-23 10:37:36','2018-02-23 10:38:41'),(40,'handmade','Departamento de confección',1,'2018-02-23 11:14:53','2018-02-23 11:39:12'),(41,'handmadeBoss','Jefe de departamento de confección',1,'2018-02-23 11:15:09','2018-02-23 11:39:26'),(42,'artificial','Departamento de artificial',1,'2018-02-23 11:39:59','2018-02-23 11:39:59'),(43,'artificialBoss','Jefe del departamento de artificial',1,'2018-02-23 11:40:16','2018-02-23 11:40:16'),(44,'accessory','Departamento de complementos',1,'2018-02-23 11:41:12','2018-02-23 11:41:12'),(45,'accessoryBoss','Jefe del departamento de complementos',1,'2018-02-23 11:41:23','2018-02-23 11:41:23'),(47,'cooler','Empleados de cámara',1,'2018-02-23 13:08:18','2018-02-23 13:08:18'),(48,'coolerBoss','Jefe del departamento de cámara',1,'2018-02-23 13:12:01','2018-02-23 13:12:01'),(49,'production','Empleado de producción',1,'2018-02-26 15:28:23','2021-02-12 09:42:35'),(50,'productionBoss','Jefe de producción',1,'2018-02-26 15:34:12','2018-02-26 15:34:12'),(51,'marketing','Departamento de marketing',1,'2018-03-01 07:28:39','2018-03-01 07:28:39'),(52,'marketingBoss','Jefe del departamento de marketing',1,'2018-03-01 07:28:57','2018-03-01 07:28:57'),(53,'insurance','Gestor de seguros de cambio',0,'2018-03-05 07:44:35','2019-02-01 13:47:57'),(54,'itemPicker','Sacador en cámara',1,'2018-03-05 12:08:17','2018-03-05 12:08:17'),(55,'itemPickerBoss','Jefe de sacadores',1,'2018-03-05 12:08:31','2018-03-05 12:08:31'),(56,'delivery','Personal de reparto',1,'2018-05-30 06:07:02','2018-05-30 06:07:02'),(57,'deliveryBoss','Jefe de personal de reparto',1,'2018-05-30 06:07:19','2018-05-30 06:07:19'),(58,'packager','Departamento encajadores',1,'2019-01-21 12:43:45','2019-01-21 12:43:45'),(59,'packagerBoss','Jefe departamento encajadores',1,'2019-01-21 12:44:10','2019-01-21 12:44:10'),(60,'productionAssi','Tareas relacionadas con producción y administración',1,'2019-01-29 13:29:01','2019-01-29 13:29:01'),(61,'replenisherBos','Jefe de Complementos/Camara',1,'2019-07-01 06:44:07','2019-07-01 06:44:07'),(62,'noLogin','Role without login access to MySQL',0,'2019-07-01 06:50:19','2019-07-02 13:42:05'),(64,'balanceSheet','Consulta de Balance',0,'2019-07-16 12:12:08','2019-07-16 12:12:08'),(65,'officeBoss','Jefe de filial',1,'2019-08-02 06:54:26','2019-08-02 06:54:26'),(66,'sysadmin','Administrador de sistema',1,'2019-08-08 06:58:56','2019-08-08 06:58:56'),(67,'adminOfficer','categoria profesional oficial de administración',1,'2020-01-03 08:09:23','2020-01-03 08:09:23'),(69,'coolerAssist','Empleado cámara con permiso compras',1,'2020-02-05 12:36:09','2020-02-05 12:36:09'),(70,'trainee','Alumno de prácticas',1,'2020-03-04 11:00:25','2020-03-04 11:00:25'),(71,'checker','Rol de revisor con privilegios de itemPicker',1,'2020-10-02 10:50:07','2020-10-02 10:50:07'),(72,'claimManager','Personal de reclamaciones',1,'2020-10-13 10:01:32','2020-10-26 07:29:46'),(73,'financial','Departamento de finanzas',1,'2020-11-16 09:30:27','2020-11-16 09:30:27'),(74,'userPhotos','Privilegios para subir fotos de usuario',1,'2021-02-03 10:24:27','2021-02-03 10:24:27'),(75,'catalogPhotos','Privilegios para subir fotos del catálogo',1,'2021-02-03 10:24:27','2021-02-03 10:24:27'),(76,'chat','Rol para utilizar el rocket chat',1,'2020-11-27 13:06:50','2020-12-17 07:49:41'),(100,'root','Rol con todos los privilegios',0,'2018-04-23 14:33:36','2020-11-12 06:50:07'),(101,'buyerBoss','Jefe del departamento de compras',1,'2021-06-16 09:53:17','2021-06-16 09:53:17'),(102,'preservedBoss','Responsable preservado',1,'2021-09-14 13:45:37','2021-09-14 13:45:37'),(103,'it','Departamento de informática',1,'2021-11-11 09:48:22','2021-11-11 09:48:22'),(104,'itBoss','Jefe de departamento de informática',1,'2021-11-11 09:48:49','2021-11-11 09:48:49'),(105,'grant','Adjudicar roles a usuarios',1,'2021-11-11 12:41:09','2021-11-11 12:41:09'),(106,'ext','Usuarios externos de la Base de datos',1,'2021-11-23 14:51:16','2021-11-23 14:51:16'),(107,'productionPlus','Creado para pepe por orden de Juanvi',1,'2022-02-08 06:47:10','2022-02-08 06:47:10'),(108,'system','System user',1,'2022-05-16 08:09:51','2022-05-16 08:09:51'),(109,'salesTeamBoss','Jefe de equipo de comerciales',1,'2022-06-14 13:45:56','2022-06-14 13:45:56'); /*!40000 ALTER TABLE `role` ENABLE KEYS */; UNLOCK TABLES; @@ -68,7 +88,7 @@ UNLOCK TABLES; LOCK TABLES `roleInherit` WRITE; /*!40000 ALTER TABLE `roleInherit` DISABLE KEYS */; -INSERT INTO `roleInherit` VALUES (1,1,2),(2,1,3),(3,1,70),(4,2,11),(5,3,11),(6,5,1),(7,5,21),(8,5,33),(124,5,76),(167,9,103),(10,11,6),(11,13,1),(12,15,35),(143,15,49),(150,15,56),(114,15,76),(14,16,13),(15,16,15),(127,16,76),(16,17,20),(17,17,37),(18,17,39),(19,17,64),(145,17,67),(136,17,76),(20,18,1),(132,18,76),(21,19,21),(22,20,13),(23,20,16),(24,20,65),(134,20,76),(25,21,13),(26,21,18),(27,21,53),(131,21,76),(28,22,13),(29,22,21),(30,30,5),(31,30,20),(32,30,22),(33,30,53),(34,30,64),(118,30,76),(35,31,1),(36,32,1),(37,34,1),(38,34,13),(39,34,33),(40,35,1),(142,35,75),(129,35,76),(41,36,44),(42,36,47),(43,37,1),(139,37,74),(125,37,76),(146,38,13),(44,38,37),(45,38,64),(126,38,76),(46,39,5),(47,39,21),(48,39,57),(115,39,76),(49,40,1),(50,40,49),(51,41,13),(52,41,35),(53,41,40),(135,41,76),(54,42,35),(55,42,49),(128,42,76),(56,43,13),(57,43,42),(58,44,1),(59,45,13),(60,45,44),(61,47,1),(62,48,13),(153,48,35),(63,48,47),(64,49,36),(65,49,58),(66,50,13),(67,50,21),(68,50,35),(69,50,49),(70,50,57),(71,50,59),(133,50,76),(72,51,1),(140,51,74),(141,51,75),(73,52,13),(74,52,19),(75,52,35),(76,52,51),(137,52,76),(77,53,1),(78,54,1),(79,55,13),(80,55,54),(81,56,1),(82,57,13),(83,57,56),(138,57,76),(84,58,1),(85,59,13),(109,59,50),(87,60,5),(88,60,37),(89,60,50),(90,60,57),(130,60,76),(91,61,13),(92,61,36),(93,65,19),(94,65,35),(95,65,50),(117,65,76),(168,66,9),(237,66,103),(97,67,5),(98,67,37),(99,69,35),(152,69,47),(101,70,11),(102,71,1),(103,71,58),(104,72,13),(105,72,18),(106,73,5),(108,73,19),(107,73,64),(148,101,13),(147,101,35),(154,102,1),(173,103,1),(194,103,2),(181,103,3),(179,103,5),(201,103,6),(176,103,11),(231,103,13),(212,103,15),(213,103,16),(178,103,17),(230,103,18),(229,103,19),(238,103,20),(228,103,21),(232,103,22),(199,103,30),(200,103,31),(197,103,32),(207,103,33),(182,103,34),(186,103,35),(225,103,36),(204,103,37),(205,103,38),(177,103,39),(202,103,40),(203,103,41),(183,103,42),(184,103,43),(174,103,44),(175,103,45),(191,103,47),(193,103,48),(222,103,49),(224,103,50),(215,103,51),(216,103,52),(206,103,53),(210,103,54),(211,103,55),(195,103,56),(196,103,57),(219,103,58),(220,103,59),(223,103,60),(226,103,61),(185,103,64),(218,103,65),(180,103,67),(192,103,69),(233,103,70),(189,103,71),(190,103,72),(198,103,73),(234,103,74),(188,103,75),(172,103,76),(187,103,101),(221,103,102),(171,104,9),(170,104,66),(169,104,100),(166,104,103),(239,106,11); +INSERT INTO `roleInherit` VALUES (1,1,2),(2,1,3),(3,1,70),(4,2,11),(5,3,11),(6,5,1),(7,5,21),(8,5,33),(124,5,76),(167,9,103),(10,11,6),(11,13,1),(12,15,35),(143,15,49),(150,15,56),(114,15,76),(14,16,13),(15,16,15),(127,16,76),(16,17,20),(17,17,37),(18,17,39),(19,17,64),(145,17,67),(136,17,76),(20,18,1),(132,18,76),(21,19,21),(242,20,9),(22,20,13),(23,20,16),(24,20,65),(134,20,76),(25,21,13),(26,21,18),(27,21,53),(241,21,72),(131,21,76),(28,22,13),(29,22,21),(30,30,5),(31,30,20),(32,30,22),(33,30,53),(34,30,64),(118,30,76),(35,31,1),(36,32,1),(37,34,1),(38,34,13),(39,34,33),(40,35,1),(142,35,75),(129,35,76),(41,36,44),(42,36,47),(43,37,1),(139,37,74),(125,37,76),(146,38,13),(44,38,37),(45,38,64),(126,38,76),(46,39,5),(47,39,21),(48,39,57),(115,39,76),(49,40,1),(50,40,49),(51,41,13),(52,41,35),(53,41,40),(135,41,76),(54,42,35),(55,42,49),(128,42,76),(56,43,13),(57,43,42),(58,44,1),(59,45,13),(60,45,44),(61,47,1),(62,48,13),(153,48,35),(63,48,47),(64,49,36),(65,49,58),(66,50,13),(67,50,21),(68,50,35),(69,50,49),(70,50,57),(71,50,59),(133,50,76),(72,51,1),(251,51,21),(140,51,74),(141,51,75),(73,52,13),(74,52,19),(75,52,35),(76,52,51),(137,52,76),(77,53,1),(78,54,1),(79,55,13),(80,55,54),(81,56,1),(82,57,13),(245,57,33),(83,57,56),(138,57,76),(84,58,1),(85,59,13),(109,59,50),(87,60,5),(89,60,50),(90,60,57),(130,60,76),(91,61,13),(92,61,36),(93,65,19),(94,65,35),(95,65,50),(117,65,76),(168,66,9),(237,66,103),(97,67,5),(98,67,37),(99,69,35),(152,69,47),(101,70,11),(102,71,1),(103,71,58),(105,72,18),(106,73,5),(108,73,19),(107,73,64),(148,101,13),(147,101,35),(154,102,1),(248,102,13),(246,102,35),(173,103,1),(194,103,2),(181,103,3),(179,103,5),(201,103,6),(176,103,11),(231,103,13),(212,103,15),(213,103,16),(178,103,17),(230,103,18),(229,103,19),(238,103,20),(228,103,21),(232,103,22),(199,103,30),(200,103,31),(197,103,32),(207,103,33),(182,103,34),(186,103,35),(225,103,36),(204,103,37),(205,103,38),(177,103,39),(202,103,40),(203,103,41),(183,103,42),(184,103,43),(174,103,44),(175,103,45),(191,103,47),(193,103,48),(222,103,49),(224,103,50),(215,103,51),(216,103,52),(206,103,53),(210,103,54),(211,103,55),(195,103,56),(196,103,57),(219,103,58),(220,103,59),(223,103,60),(226,103,61),(185,103,64),(218,103,65),(180,103,67),(192,103,69),(233,103,70),(189,103,71),(190,103,72),(198,103,73),(234,103,74),(188,103,75),(172,103,76),(187,103,101),(221,103,102),(171,104,9),(170,104,66),(169,104,100),(166,104,103),(239,106,11),(240,107,60),(247,108,1),(250,109,13),(249,109,18); /*!40000 ALTER TABLE `roleInherit` ENABLE KEYS */; UNLOCK TABLES; @@ -78,7 +98,7 @@ UNLOCK TABLES; LOCK TABLES `roleRole` WRITE; /*!40000 ALTER TABLE `roleRole` DISABLE KEYS */; -INSERT INTO `roleRole` VALUES (63981,1,1),(63982,1,2),(63983,1,3),(63986,1,6),(63985,1,11),(63984,1,70),(63900,2,2),(63902,2,6),(63901,2,11),(63785,3,3),(63787,3,6),(63786,3,11),(63757,5,1),(63764,5,2),(63763,5,3),(63756,5,5),(63768,5,6),(63767,5,11),(63761,5,13),(63765,5,18),(63758,5,21),(63759,5,33),(63766,5,53),(63762,5,70),(63760,5,76),(64053,6,6),(63922,9,1),(63923,9,2),(63924,9,3),(63925,9,5),(63926,9,6),(63920,9,9),(63927,9,11),(63928,9,13),(63929,9,15),(63930,9,16),(63931,9,17),(63932,9,18),(63933,9,19),(63934,9,20),(63935,9,21),(63936,9,22),(63937,9,30),(63938,9,31),(63939,9,32),(63940,9,33),(63941,9,34),(63942,9,35),(63943,9,36),(63944,9,37),(63945,9,38),(63946,9,39),(63947,9,40),(63948,9,41),(63949,9,42),(63950,9,43),(63951,9,44),(63952,9,45),(63953,9,47),(63954,9,48),(63955,9,49),(63956,9,50),(63957,9,51),(63958,9,52),(63959,9,53),(63960,9,54),(63961,9,55),(63962,9,56),(63963,9,57),(63964,9,58),(63965,9,59),(63966,9,60),(63967,9,61),(63968,9,64),(63969,9,65),(63970,9,67),(63971,9,69),(63972,9,70),(63973,9,71),(63974,9,72),(63975,9,73),(63976,9,74),(63977,9,75),(63978,9,76),(63979,9,101),(63980,9,102),(63921,9,103),(63704,11,6),(63703,11,11),(64644,13,1),(64645,13,2),(64646,13,3),(64649,13,6),(64648,13,11),(64643,13,13),(64647,13,70),(64263,15,1),(64267,15,2),(64266,15,3),(64270,15,6),(64269,15,11),(64255,15,15),(64256,15,35),(64261,15,36),(64264,15,44),(64268,15,47),(64257,15,49),(64258,15,56),(64260,15,58),(64265,15,70),(64262,15,75),(64259,15,76),(64277,16,1),(64282,16,2),(64281,16,3),(64288,16,6),(64287,16,11),(64272,16,13),(64273,16,15),(64271,16,16),(64276,16,35),(64283,16,36),(64286,16,44),(64285,16,47),(64275,16,49),(64278,16,56),(64284,16,58),(64280,16,70),(64279,16,75),(64274,16,76),(63730,17,1),(63739,17,2),(63738,17,3),(63728,17,5),(63751,17,6),(63747,17,11),(63733,17,13),(63743,17,15),(63732,17,16),(63721,17,17),(63744,17,18),(63742,17,19),(63722,17,20),(63734,17,21),(63736,17,33),(63741,17,35),(63753,17,36),(63723,17,37),(63724,17,39),(63755,17,44),(63754,17,47),(63750,17,49),(63740,17,50),(63745,17,53),(63746,17,56),(63735,17,57),(63752,17,58),(63748,17,59),(63725,17,64),(63731,17,65),(63726,17,67),(63737,17,70),(63729,17,74),(63749,17,75),(63727,17,76),(64574,18,1),(64577,18,2),(64576,18,3),(64580,18,6),(64579,18,11),(64573,18,18),(64578,18,70),(64575,18,76),(64567,19,1),(64570,19,2),(64569,19,3),(64572,19,6),(64571,19,11),(64563,19,13),(64564,19,18),(64561,19,19),(64562,19,21),(64565,19,53),(64568,19,70),(64566,19,76),(64297,20,1),(64303,20,2),(64302,20,3),(64315,20,6),(64312,20,11),(64290,20,13),(64296,20,15),(64291,20,16),(64309,20,18),(64295,20,19),(64289,20,20),(64304,20,21),(64294,20,35),(64311,20,36),(64314,20,44),(64313,20,47),(64300,20,49),(64298,20,50),(64308,20,53),(64299,20,56),(64306,20,57),(64310,20,58),(64307,20,59),(64292,20,65),(64301,20,70),(64305,20,75),(64293,20,76),(64555,21,1),(64558,21,2),(64557,21,3),(64560,21,6),(64559,21,11),(64551,21,13),(64552,21,18),(64550,21,21),(64553,21,53),(64556,21,70),(64554,21,76),(64654,22,1),(64659,22,2),(64658,22,3),(64661,22,6),(64660,22,11),(64651,22,13),(64653,22,18),(64652,22,21),(64650,22,22),(64655,22,53),(64657,22,70),(64656,22,76),(64025,30,1),(64031,30,2),(64030,30,3),(64014,30,5),(64042,30,6),(64039,30,11),(64022,30,13),(64027,30,15),(64021,30,16),(64028,30,18),(64026,30,19),(64015,30,20),(64024,30,21),(64016,30,22),(64013,30,30),(64023,30,33),(64032,30,35),(64041,30,36),(64044,30,44),(64043,30,47),(64038,30,49),(64033,30,50),(64017,30,53),(64037,30,56),(64035,30,57),(64040,30,58),(64034,30,59),(64018,30,64),(64020,30,65),(64029,30,70),(64036,30,75),(64019,30,76),(64046,31,1),(64047,31,2),(64048,31,3),(64051,31,6),(64050,31,11),(64045,31,31),(64049,31,70),(63988,32,1),(63989,32,2),(63990,32,3),(63993,32,6),(63992,32,11),(63987,32,32),(63991,32,70),(64111,33,33),(63789,34,1),(63794,34,2),(63793,34,3),(63796,34,6),(63795,34,11),(63790,34,13),(63791,34,33),(63788,34,34),(63792,34,70),(63831,35,1),(63836,35,2),(63835,35,3),(63838,35,6),(63837,35,11),(63830,35,35),(63834,35,70),(63832,35,75),(63833,35,76),(64466,36,1),(64468,36,2),(64467,36,3),(64471,36,6),(64470,36,11),(64463,36,36),(64464,36,44),(64465,36,47),(64469,36,70),(64084,37,1),(64089,37,2),(64088,37,3),(64091,37,6),(64090,37,11),(64083,37,37),(64087,37,70),(64085,37,74),(64086,37,76),(64098,38,1),(64101,38,2),(64100,38,3),(64103,38,6),(64102,38,11),(64093,38,13),(64094,38,37),(64092,38,38),(64095,38,64),(64099,38,70),(64097,38,74),(64096,38,76),(63713,39,1),(63718,39,2),(63717,39,3),(63706,39,5),(63720,39,6),(63719,39,11),(63711,39,13),(63710,39,18),(63707,39,21),(63712,39,33),(63705,39,39),(63714,39,53),(63715,39,56),(63708,39,57),(63716,39,70),(63709,39,76),(64055,40,1),(64058,40,2),(64057,40,3),(64065,40,6),(64064,40,11),(64060,40,36),(64054,40,40),(64063,40,44),(64062,40,47),(64056,40,49),(64061,40,58),(64059,40,70),(64073,41,1),(64077,41,2),(64076,41,3),(64082,41,6),(64081,41,11),(64067,41,13),(64068,41,35),(64074,41,36),(64069,41,40),(64066,41,41),(64080,41,44),(64079,41,47),(64071,41,49),(64078,41,58),(64075,41,70),(64072,41,75),(64070,41,76),(63803,42,1),(63808,42,2),(63807,42,3),(63811,42,6),(63810,42,11),(63798,42,35),(63801,42,36),(63797,42,42),(63805,42,44),(63809,42,47),(63799,42,49),(63804,42,58),(63806,42,70),(63802,42,75),(63800,42,76),(63816,43,1),(63822,43,2),(63821,43,3),(63828,43,6),(63827,43,11),(63813,43,13),(63815,43,35),(63823,43,36),(63814,43,42),(63812,43,43),(63826,43,44),(63825,43,47),(63817,43,49),(63824,43,58),(63820,43,70),(63819,43,75),(63818,43,76),(63688,44,1),(63689,44,2),(63690,44,3),(63693,44,6),(63692,44,11),(63687,44,44),(63691,44,70),(63697,45,1),(63699,45,2),(63698,45,3),(63702,45,6),(63701,45,11),(63695,45,13),(63696,45,44),(63694,45,45),(63700,45,70),(63871,47,1),(63872,47,2),(63873,47,3),(63876,47,6),(63875,47,11),(63870,47,47),(63874,47,70),(63894,48,1),(63897,48,2),(63896,48,3),(63899,48,6),(63898,48,11),(63889,48,13),(63890,48,35),(63891,48,47),(63888,48,48),(63895,48,70),(63893,48,75),(63892,48,76),(64408,49,1),(64411,49,2),(64410,49,3),(64413,49,6),(64412,49,11),(64404,49,36),(64407,49,44),(64406,49,47),(64403,49,49),(64405,49,58),(64409,49,70),(64455,50,1),(64460,50,2),(64459,50,3),(64462,50,6),(64461,50,11),(64442,50,13),(64454,50,18),(64443,50,21),(64444,50,35),(64451,50,36),(64457,50,44),(64456,50,47),(64445,50,49),(64441,50,50),(64453,50,53),(64449,50,56),(64446,50,57),(64450,50,58),(64447,50,59),(64458,50,70),(64452,50,75),(64448,50,76),(64317,51,1),(64322,51,2),(64321,51,3),(64324,51,6),(64323,51,11),(64316,51,51),(64320,51,70),(64318,51,74),(64319,51,75),(64334,52,1),(64339,52,2),(64338,52,3),(64341,52,6),(64340,52,11),(64326,52,13),(64336,52,18),(64327,52,19),(64333,52,21),(64328,52,35),(64329,52,51),(64325,52,52),(64335,52,53),(64337,52,70),(64331,52,74),(64332,52,75),(64330,52,76),(64105,53,1),(64106,53,2),(64107,53,3),(64110,53,6),(64109,53,11),(64104,53,53),(64108,53,70),(64240,54,1),(64241,54,2),(64242,54,3),(64245,54,6),(64244,54,11),(64239,54,54),(64243,54,70),(64249,55,1),(64251,55,2),(64250,55,3),(64254,55,6),(64253,55,11),(64247,55,13),(64248,55,54),(64246,55,55),(64252,55,70),(63904,56,1),(63905,56,2),(63906,56,3),(63909,56,6),(63908,56,11),(63903,56,56),(63907,56,70),(63914,57,1),(63917,57,2),(63916,57,3),(63919,57,6),(63918,57,11),(63911,57,13),(63912,57,56),(63910,57,57),(63915,57,70),(63913,57,76),(64368,58,1),(64369,58,2),(64370,58,3),(64373,58,6),(64372,58,11),(64367,58,58),(64371,58,70),(64378,59,1),(64388,59,2),(64387,59,3),(64395,59,6),(64394,59,11),(64375,59,13),(64385,59,18),(64377,59,21),(64379,59,35),(64389,59,36),(64393,59,44),(64392,59,47),(64380,59,49),(64376,59,50),(64384,59,53),(64391,59,56),(64381,59,57),(64390,59,58),(64374,59,59),(64386,59,70),(64383,59,75),(64382,59,76),(64424,60,1),(64436,60,2),(64435,60,3),(64415,60,5),(64440,60,6),(64439,60,11),(64420,60,13),(64433,60,18),(64423,60,21),(64422,60,33),(64425,60,35),(64430,60,36),(64416,60,37),(64438,60,44),(64437,60,47),(64426,60,49),(64417,60,50),(64432,60,53),(64428,60,56),(64418,60,57),(64429,60,58),(64427,60,59),(64414,60,60),(64434,60,70),(64421,60,74),(64431,60,75),(64419,60,76),(64476,61,1),(64480,61,2),(64479,61,3),(64482,61,6),(64481,61,11),(64473,61,13),(64474,61,36),(64475,61,44),(64477,61,47),(64472,61,61),(64478,61,70),(64342,62,62),(63829,64,64),(64350,65,1),(64359,65,2),(64358,65,3),(64366,65,6),(64365,65,11),(64348,65,13),(64361,65,18),(64344,65,19),(64351,65,21),(64345,65,35),(64356,65,36),(64364,65,44),(64363,65,47),(64352,65,49),(64346,65,50),(64360,65,53),(64362,65,56),(64353,65,57),(64355,65,58),(64354,65,59),(64343,65,65),(64357,65,70),(64349,65,75),(64347,65,76),(64585,66,1),(64584,66,2),(64586,66,3),(64587,66,5),(64588,66,6),(64582,66,9),(64589,66,11),(64590,66,13),(64591,66,15),(64592,66,16),(64593,66,17),(64594,66,18),(64595,66,19),(64596,66,20),(64597,66,21),(64598,66,22),(64599,66,30),(64600,66,31),(64601,66,32),(64602,66,33),(64603,66,34),(64604,66,35),(64605,66,36),(64606,66,37),(64607,66,38),(64608,66,39),(64609,66,40),(64610,66,41),(64611,66,42),(64612,66,43),(64613,66,44),(64614,66,45),(64615,66,47),(64616,66,48),(64617,66,49),(64618,66,50),(64619,66,51),(64620,66,52),(64621,66,53),(64622,66,54),(64623,66,55),(64624,66,56),(64625,66,57),(64626,66,58),(64627,66,59),(64628,66,60),(64629,66,61),(64630,66,64),(64631,66,65),(64581,66,66),(64632,66,67),(64633,66,69),(64634,66,70),(64635,66,71),(64636,66,72),(64637,66,73),(64638,66,74),(64639,66,75),(64640,66,76),(64641,66,101),(64642,66,102),(64583,66,103),(63773,67,1),(63781,67,2),(63780,67,3),(63770,67,5),(63784,67,6),(63783,67,11),(63778,67,13),(63777,67,18),(63772,67,21),(63774,67,33),(63771,67,37),(63782,67,53),(63769,67,67),(63779,67,70),(63776,67,74),(63775,67,76),(63881,69,1),(63885,69,2),(63884,69,3),(63887,69,6),(63886,69,11),(63878,69,35),(63879,69,47),(63877,69,69),(63883,69,70),(63880,69,75),(63882,69,76),(64664,70,6),(64663,70,11),(64662,70,70),(63853,71,1),(63856,71,2),(63855,71,3),(63859,71,6),(63858,71,11),(63854,71,58),(63857,71,70),(63852,71,71),(63864,72,1),(63866,72,2),(63865,72,3),(63869,72,6),(63868,72,11),(63861,72,13),(63862,72,18),(63867,72,70),(63860,72,72),(63863,72,76),(64003,73,1),(64008,73,2),(64007,73,3),(63998,73,5),(64012,73,6),(64011,73,11),(64005,73,13),(64009,73,18),(63999,73,19),(64002,73,21),(64001,73,33),(64010,73,53),(64000,73,64),(64006,73,70),(63997,73,73),(64004,73,76),(64665,74,74),(63850,75,75),(63851,76,76),(64509,100,1),(64505,100,2),(64491,100,3),(64489,100,5),(64516,100,6),(64508,100,9),(64486,100,11),(64546,100,13),(64527,100,15),(64528,100,16),(64488,100,17),(64544,100,18),(64543,100,19),(64529,100,20),(64542,100,21),(64547,100,22),(64513,100,30),(64514,100,31),(64510,100,32),(64522,100,33),(64492,100,34),(64496,100,35),(64540,100,36),(64519,100,37),(64520,100,38),(64487,100,39),(64517,100,40),(64518,100,41),(64493,100,42),(64494,100,43),(64484,100,44),(64485,100,45),(64502,100,47),(64504,100,48),(64537,100,49),(64539,100,50),(64530,100,51),(64531,100,52),(64521,100,53),(64525,100,54),(64526,100,55),(64506,100,56),(64507,100,57),(64534,100,58),(64535,100,59),(64538,100,60),(64541,100,61),(64532,100,62),(64495,100,64),(64533,100,65),(64545,100,66),(64490,100,67),(64503,100,69),(64548,100,70),(64500,100,71),(64501,100,72),(64512,100,73),(64549,100,74),(64498,100,75),(64499,100,76),(64483,100,100),(64497,100,101),(64536,100,102),(64523,100,103),(64524,100,104),(64515,100,105),(64511,100,106),(63843,101,1),(63847,101,2),(63846,101,3),(63849,101,6),(63848,101,11),(63840,101,13),(63841,101,35),(63845,101,70),(63842,101,75),(63844,101,76),(63839,101,101),(64397,102,1),(64398,102,2),(64399,102,3),(64402,102,6),(64401,102,11),(64400,102,70),(64396,102,102),(64113,103,1),(64114,103,2),(64115,103,3),(64116,103,5),(64117,103,6),(64118,103,11),(64119,103,13),(64120,103,15),(64121,103,16),(64122,103,17),(64123,103,18),(64124,103,19),(64125,103,20),(64126,103,21),(64127,103,22),(64128,103,30),(64129,103,31),(64130,103,32),(64131,103,33),(64132,103,34),(64133,103,35),(64134,103,36),(64135,103,37),(64136,103,38),(64137,103,39),(64138,103,40),(64139,103,41),(64140,103,42),(64141,103,43),(64142,103,44),(64143,103,45),(64144,103,47),(64145,103,48),(64146,103,49),(64147,103,50),(64148,103,51),(64149,103,52),(64150,103,53),(64151,103,54),(64152,103,55),(64153,103,56),(64154,103,57),(64155,103,58),(64156,103,59),(64157,103,60),(64158,103,61),(64159,103,64),(64160,103,65),(64161,103,67),(64162,103,69),(64163,103,70),(64164,103,71),(64165,103,72),(64166,103,73),(64167,103,74),(64168,103,75),(64169,103,76),(64170,103,101),(64171,103,102),(64112,103,103),(64180,104,1),(64179,104,2),(64178,104,3),(64177,104,5),(64181,104,6),(64173,104,9),(64182,104,11),(64183,104,13),(64184,104,15),(64185,104,16),(64186,104,17),(64187,104,18),(64188,104,19),(64189,104,20),(64190,104,21),(64191,104,22),(64192,104,30),(64193,104,31),(64194,104,32),(64195,104,33),(64196,104,34),(64197,104,35),(64198,104,36),(64199,104,37),(64200,104,38),(64201,104,39),(64202,104,40),(64203,104,41),(64204,104,42),(64205,104,43),(64206,104,44),(64207,104,45),(64208,104,47),(64209,104,48),(64210,104,49),(64211,104,50),(64212,104,51),(64213,104,52),(64214,104,53),(64215,104,54),(64216,104,55),(64217,104,56),(64218,104,57),(64219,104,58),(64220,104,59),(64221,104,60),(64222,104,61),(64238,104,62),(64223,104,64),(64224,104,65),(64174,104,66),(64225,104,67),(64226,104,69),(64227,104,70),(64228,104,71),(64229,104,72),(64230,104,73),(64231,104,74),(64232,104,75),(64233,104,76),(64175,104,100),(64234,104,101),(64235,104,102),(64176,104,103),(64172,104,104),(64237,104,105),(64236,104,106),(64052,105,105),(63996,106,6),(63995,106,11),(63994,106,106); +INSERT INTO `roleRole` VALUES (106016,1,1),(106017,1,2),(106018,1,3),(106021,1,6),(106020,1,11),(106019,1,70),(105934,2,2),(105936,2,6),(105935,2,11),(105820,3,3),(105822,3,6),(105821,3,11),(105790,5,1),(105797,5,2),(105796,5,3),(105789,5,5),(105802,5,6),(105801,5,11),(105794,5,13),(105798,5,18),(105791,5,21),(105792,5,33),(105799,5,53),(105795,5,70),(105800,5,72),(105793,5,76),(106118,6,6),(105957,9,1),(105958,9,2),(105959,9,3),(105960,9,5),(105961,9,6),(105955,9,9),(105962,9,11),(105963,9,13),(105964,9,15),(105965,9,16),(105966,9,17),(105967,9,18),(105968,9,19),(105969,9,20),(105970,9,21),(105971,9,22),(105972,9,30),(105973,9,31),(105974,9,32),(105975,9,33),(105976,9,34),(105977,9,35),(105978,9,36),(105979,9,37),(105980,9,38),(105981,9,39),(105982,9,40),(105983,9,41),(105984,9,42),(105985,9,43),(105986,9,44),(105987,9,45),(105988,9,47),(105989,9,48),(105990,9,49),(105991,9,50),(105992,9,51),(105993,9,52),(105994,9,53),(105995,9,54),(105996,9,55),(105997,9,56),(105998,9,57),(105999,9,58),(106000,9,59),(106001,9,60),(106002,9,61),(106003,9,64),(106004,9,65),(106005,9,67),(106006,9,69),(106007,9,70),(106008,9,71),(106009,9,72),(106010,9,73),(106011,9,74),(106012,9,75),(106013,9,76),(106014,9,101),(106015,9,102),(105956,9,103),(105710,11,6),(105709,11,11),(106812,13,1),(106813,13,2),(106814,13,3),(106817,13,6),(106816,13,11),(106811,13,13),(106815,13,70),(106332,15,1),(106336,15,2),(106335,15,3),(106339,15,6),(106338,15,11),(106324,15,15),(106325,15,35),(106330,15,36),(106333,15,44),(106337,15,47),(106326,15,49),(106327,15,56),(106329,15,58),(106334,15,70),(106331,15,75),(106328,15,76),(106346,16,1),(106351,16,2),(106350,16,3),(106357,16,6),(106356,16,11),(106341,16,13),(106342,16,15),(106340,16,16),(106345,16,35),(106352,16,36),(106355,16,44),(106354,16,47),(106344,16,49),(106347,16,56),(106353,16,58),(106349,16,70),(106348,16,75),(106343,16,76),(105736,17,1),(105747,17,2),(105746,17,3),(105741,17,5),(105769,17,6),(105740,17,9),(105768,17,11),(105739,17,13),(105751,17,15),(105738,17,16),(105728,17,17),(105753,17,18),(105750,17,19),(105729,17,20),(105742,17,21),(105767,17,22),(105766,17,30),(105765,17,31),(105764,17,32),(105744,17,33),(105763,17,34),(105749,17,35),(105762,17,36),(105730,17,37),(105761,17,38),(105731,17,39),(105760,17,40),(105759,17,41),(105758,17,42),(105757,17,43),(105770,17,44),(105771,17,45),(105772,17,47),(105773,17,48),(105774,17,49),(105748,17,50),(105775,17,51),(105776,17,52),(105754,17,53),(105777,17,54),(105778,17,55),(105756,17,56),(105743,17,57),(105779,17,58),(105780,17,59),(105781,17,60),(105782,17,61),(105732,17,64),(105737,17,65),(105733,17,67),(105783,17,69),(105745,17,70),(105784,17,71),(105755,17,72),(105785,17,73),(105735,17,74),(105786,17,75),(105734,17,76),(105787,17,101),(105788,17,102),(105752,17,103),(106725,18,1),(106728,18,2),(106727,18,3),(106731,18,6),(106730,18,11),(106724,18,18),(106729,18,70),(106726,18,76),(106718,19,1),(106721,19,2),(106720,19,3),(106723,19,6),(106722,19,11),(106713,19,13),(106714,19,18),(106711,19,19),(106712,19,21),(106715,19,53),(106719,19,70),(106716,19,72),(106717,19,76),(106367,20,1),(106375,20,2),(106374,20,3),(106373,20,5),(106372,20,6),(106359,20,9),(106371,20,11),(106360,20,13),(106366,20,15),(106361,20,16),(106370,20,17),(106376,20,18),(106365,20,19),(106358,20,20),(106377,20,21),(106378,20,22),(106379,20,30),(106380,20,31),(106381,20,32),(106382,20,33),(106383,20,34),(106364,20,35),(106384,20,36),(106385,20,37),(106386,20,38),(106387,20,39),(106388,20,40),(106389,20,41),(106390,20,42),(106391,20,43),(106392,20,44),(106393,20,45),(106394,20,47),(106395,20,48),(106396,20,49),(106369,20,50),(106397,20,51),(106398,20,52),(106399,20,53),(106400,20,54),(106401,20,55),(106402,20,56),(106403,20,57),(106404,20,58),(106405,20,59),(106406,20,60),(106407,20,61),(106408,20,64),(106362,20,65),(106409,20,67),(106410,20,69),(106411,20,70),(106412,20,71),(106413,20,72),(106414,20,73),(106415,20,74),(106416,20,75),(106363,20,76),(106417,20,101),(106418,20,102),(106368,20,103),(106705,21,1),(106708,21,2),(106707,21,3),(106710,21,6),(106709,21,11),(106700,21,13),(106701,21,18),(106699,21,21),(106702,21,53),(106706,21,70),(106703,21,72),(106704,21,76),(106822,22,1),(106828,22,2),(106827,22,3),(106830,22,6),(106829,22,11),(106819,22,13),(106821,22,18),(106820,22,21),(106818,22,22),(106823,22,53),(106826,22,70),(106824,22,72),(106825,22,76),(106061,30,1),(106069,30,2),(106068,30,3),(106050,30,5),(106081,30,6),(106058,30,9),(106082,30,11),(106057,30,13),(106063,30,15),(106056,30,16),(106080,30,17),(106066,30,18),(106070,30,19),(106051,30,20),(106060,30,21),(106052,30,22),(106049,30,30),(106079,30,31),(106078,30,32),(106059,30,33),(106077,30,34),(106071,30,35),(106076,30,36),(106075,30,37),(106074,30,38),(106073,30,39),(106083,30,40),(106084,30,41),(106085,30,42),(106086,30,43),(106087,30,44),(106088,30,45),(106089,30,47),(106090,30,48),(106091,30,49),(106072,30,50),(106092,30,51),(106093,30,52),(106053,30,53),(106094,30,54),(106095,30,55),(106096,30,56),(106097,30,57),(106098,30,58),(106099,30,59),(106100,30,60),(106101,30,61),(106054,30,64),(106062,30,65),(106102,30,67),(106103,30,69),(106067,30,70),(106104,30,71),(106065,30,72),(106105,30,73),(106106,30,74),(106107,30,75),(106055,30,76),(106108,30,101),(106109,30,102),(106064,30,103),(106111,31,1),(106112,31,2),(106113,31,3),(106116,31,6),(106115,31,11),(106110,31,31),(106114,31,70),(106023,32,1),(106024,32,2),(106025,32,3),(106028,32,6),(106027,32,11),(106022,32,32),(106026,32,70),(106176,33,33),(105824,34,1),(105829,34,2),(105828,34,3),(105831,34,6),(105830,34,11),(105825,34,13),(105826,34,33),(105823,34,34),(105827,34,70),(105866,35,1),(105871,35,2),(105870,35,3),(105873,35,6),(105872,35,11),(105865,35,35),(105869,35,70),(105867,35,75),(105868,35,76),(106612,36,1),(106614,36,2),(106613,36,3),(106617,36,6),(106616,36,11),(106609,36,36),(106610,36,44),(106611,36,47),(106615,36,70),(106149,37,1),(106154,37,2),(106153,37,3),(106156,37,6),(106155,37,11),(106148,37,37),(106152,37,70),(106150,37,74),(106151,37,76),(106163,38,1),(106166,38,2),(106165,38,3),(106168,38,6),(106167,38,11),(106158,38,13),(106159,38,37),(106157,38,38),(106160,38,64),(106164,38,70),(106162,38,74),(106161,38,76),(105719,39,1),(105725,39,2),(105724,39,3),(105712,39,5),(105727,39,6),(105726,39,11),(105717,39,13),(105716,39,18),(105713,39,21),(105718,39,33),(105711,39,39),(105720,39,53),(105722,39,56),(105714,39,57),(105723,39,70),(105721,39,72),(105715,39,76),(106120,40,1),(106123,40,2),(106122,40,3),(106130,40,6),(106129,40,11),(106125,40,36),(106119,40,40),(106128,40,44),(106127,40,47),(106121,40,49),(106126,40,58),(106124,40,70),(106138,41,1),(106142,41,2),(106141,41,3),(106147,41,6),(106146,41,11),(106132,41,13),(106133,41,35),(106139,41,36),(106134,41,40),(106131,41,41),(106145,41,44),(106144,41,47),(106136,41,49),(106143,41,58),(106140,41,70),(106137,41,75),(106135,41,76),(105838,42,1),(105843,42,2),(105842,42,3),(105846,42,6),(105845,42,11),(105833,42,35),(105836,42,36),(105832,42,42),(105840,42,44),(105844,42,47),(105834,42,49),(105839,42,58),(105841,42,70),(105837,42,75),(105835,42,76),(105851,43,1),(105857,43,2),(105856,43,3),(105863,43,6),(105862,43,11),(105848,43,13),(105850,43,35),(105858,43,36),(105849,43,42),(105847,43,43),(105861,43,44),(105860,43,47),(105852,43,49),(105859,43,58),(105855,43,70),(105854,43,75),(105853,43,76),(105694,44,1),(105695,44,2),(105696,44,3),(105699,44,6),(105698,44,11),(105693,44,44),(105697,44,70),(105703,45,1),(105705,45,2),(105704,45,3),(105708,45,6),(105707,45,11),(105701,45,13),(105702,45,44),(105700,45,45),(105706,45,70),(105905,47,1),(105906,47,2),(105907,47,3),(105910,47,6),(105909,47,11),(105904,47,47),(105908,47,70),(105928,48,1),(105931,48,2),(105930,48,3),(105933,48,6),(105932,48,11),(105923,48,13),(105924,48,35),(105925,48,47),(105922,48,48),(105929,48,70),(105927,48,75),(105926,48,76),(106526,49,1),(106529,49,2),(106528,49,3),(106531,49,6),(106530,49,11),(106522,49,36),(106525,49,44),(106524,49,47),(106521,49,49),(106523,49,58),(106527,49,70),(106572,50,1),(106579,50,2),(106578,50,3),(106581,50,6),(106580,50,11),(106559,50,13),(106571,50,18),(106560,50,21),(106573,50,33),(106561,50,35),(106567,50,36),(106576,50,44),(106575,50,47),(106562,50,49),(106558,50,50),(106570,50,53),(106574,50,56),(106563,50,57),(106566,50,58),(106564,50,59),(106577,50,70),(106569,50,72),(106568,50,75),(106565,50,76),(106420,51,1),(106427,51,2),(106426,51,3),(106433,51,6),(106432,51,11),(106424,51,13),(106428,51,18),(106421,51,21),(106419,51,51),(106429,51,53),(106425,51,70),(106430,51,72),(106422,51,74),(106423,51,75),(106431,51,76),(106443,52,1),(106448,52,2),(106447,52,3),(106451,52,6),(106450,52,11),(106435,52,13),(106445,52,18),(106436,52,19),(106442,52,21),(106437,52,35),(106438,52,51),(106434,52,52),(106444,52,53),(106446,52,70),(106449,52,72),(106440,52,74),(106441,52,75),(106439,52,76),(106170,53,1),(106171,53,2),(106172,53,3),(106175,53,6),(106174,53,11),(106169,53,53),(106173,53,70),(106309,54,1),(106310,54,2),(106311,54,3),(106314,54,6),(106313,54,11),(106308,54,54),(106312,54,70),(106318,55,1),(106320,55,2),(106319,55,3),(106323,55,6),(106322,55,11),(106316,55,13),(106317,55,54),(106315,55,55),(106321,55,70),(105938,56,1),(105939,56,2),(105940,56,3),(105943,56,6),(105942,56,11),(105937,56,56),(105941,56,70),(105949,57,1),(105952,57,2),(105951,57,3),(105954,57,6),(105953,57,11),(105945,57,13),(105946,57,33),(105947,57,56),(105944,57,57),(105950,57,70),(105948,57,76),(106480,58,1),(106481,58,2),(106482,58,3),(106485,58,6),(106484,58,11),(106479,58,58),(106483,58,70),(106490,59,1),(106500,59,2),(106499,59,3),(106509,59,6),(106508,59,11),(106487,59,13),(106497,59,18),(106489,59,21),(106504,59,33),(106491,59,35),(106502,59,36),(106507,59,44),(106506,59,47),(106492,59,49),(106488,59,50),(106496,59,53),(106505,59,56),(106493,59,57),(106503,59,58),(106486,59,59),(106498,59,70),(106495,59,72),(106501,59,75),(106494,59,76),(106540,60,1),(106552,60,2),(106551,60,3),(106533,60,5),(106557,60,6),(106556,60,11),(106537,60,13),(106549,60,18),(106539,60,21),(106538,60,33),(106541,60,35),(106545,60,36),(106555,60,44),(106554,60,47),(106542,60,49),(106534,60,50),(106548,60,53),(106544,60,56),(106535,60,57),(106553,60,58),(106543,60,59),(106532,60,60),(106550,60,70),(106547,60,72),(106546,60,75),(106536,60,76),(106622,61,1),(106626,61,2),(106625,61,3),(106628,61,6),(106627,61,11),(106619,61,13),(106620,61,36),(106621,61,44),(106623,61,47),(106618,61,61),(106624,61,70),(106452,62,62),(105864,64,64),(106460,65,1),(106468,65,2),(106467,65,3),(106478,65,6),(106477,65,11),(106458,65,13),(106471,65,18),(106454,65,19),(106461,65,21),(106473,65,33),(106455,65,35),(106465,65,36),(106476,65,44),(106475,65,47),(106462,65,49),(106456,65,50),(106470,65,53),(106474,65,56),(106463,65,57),(106472,65,58),(106464,65,59),(106453,65,65),(106466,65,70),(106469,65,72),(106459,65,75),(106457,65,76),(106746,66,1),(106745,66,2),(106747,66,3),(106748,66,5),(106749,66,6),(106743,66,9),(106750,66,11),(106751,66,13),(106752,66,15),(106753,66,16),(106754,66,17),(106755,66,18),(106756,66,19),(106757,66,20),(106758,66,21),(106759,66,22),(106760,66,30),(106761,66,31),(106762,66,32),(106763,66,33),(106764,66,34),(106765,66,35),(106766,66,36),(106767,66,37),(106768,66,38),(106769,66,39),(106770,66,40),(106771,66,41),(106772,66,42),(106773,66,43),(106774,66,44),(106775,66,45),(106776,66,47),(106777,66,48),(106778,66,49),(106779,66,50),(106780,66,51),(106781,66,52),(106782,66,53),(106783,66,54),(106784,66,55),(106785,66,56),(106786,66,57),(106787,66,58),(106788,66,59),(106789,66,60),(106790,66,61),(106791,66,64),(106792,66,65),(106742,66,66),(106793,66,67),(106794,66,69),(106795,66,70),(106796,66,71),(106797,66,72),(106798,66,73),(106799,66,74),(106800,66,75),(106801,66,76),(106802,66,101),(106803,66,102),(106744,66,103),(105807,67,1),(105815,67,2),(105814,67,3),(105804,67,5),(105819,67,6),(105818,67,11),(105812,67,13),(105811,67,18),(105806,67,21),(105808,67,33),(105805,67,37),(105816,67,53),(105803,67,67),(105813,67,70),(105817,67,72),(105810,67,74),(105809,67,76),(105915,69,1),(105919,69,2),(105918,69,3),(105921,69,6),(105920,69,11),(105912,69,35),(105913,69,47),(105911,69,69),(105917,69,70),(105914,69,75),(105916,69,76),(106833,70,6),(106832,70,11),(106831,70,70),(105888,71,1),(105891,71,2),(105890,71,3),(105894,71,6),(105893,71,11),(105889,71,58),(105892,71,70),(105887,71,71),(105897,72,1),(105900,72,2),(105899,72,3),(105903,72,6),(105902,72,11),(105896,72,18),(105901,72,70),(105895,72,72),(105898,72,76),(106038,73,1),(106043,73,2),(106042,73,3),(106033,73,5),(106048,73,6),(106047,73,11),(106040,73,13),(106044,73,18),(106034,73,19),(106037,73,21),(106036,73,33),(106045,73,53),(106035,73,64),(106041,73,70),(106046,73,72),(106032,73,73),(106039,73,76),(106834,74,74),(105885,75,75),(105886,76,76),(106655,100,1),(106651,100,2),(106637,100,3),(106635,100,5),(106662,100,6),(106654,100,9),(106632,100,11),(106695,100,13),(106673,100,15),(106674,100,16),(106634,100,17),(106691,100,18),(106690,100,19),(106675,100,20),(106689,100,21),(106696,100,22),(106659,100,30),(106660,100,31),(106656,100,32),(106668,100,33),(106638,100,34),(106642,100,35),(106687,100,36),(106665,100,37),(106666,100,38),(106633,100,39),(106663,100,40),(106664,100,41),(106639,100,42),(106640,100,43),(106630,100,44),(106631,100,45),(106648,100,47),(106650,100,48),(106683,100,49),(106685,100,50),(106676,100,51),(106677,100,52),(106667,100,53),(106671,100,54),(106672,100,55),(106652,100,56),(106653,100,57),(106680,100,58),(106681,100,59),(106684,100,60),(106688,100,61),(106678,100,62),(106641,100,64),(106679,100,65),(106693,100,66),(106636,100,67),(106649,100,69),(106697,100,70),(106646,100,71),(106647,100,72),(106658,100,73),(106698,100,74),(106644,100,75),(106645,100,76),(106629,100,100),(106643,100,101),(106682,100,102),(106669,100,103),(106670,100,104),(106661,100,105),(106657,100,106),(106686,100,107),(106694,100,108),(106692,100,109),(105878,101,1),(105882,101,2),(105881,101,3),(105884,101,6),(105883,101,11),(105875,101,13),(105876,101,35),(105880,101,70),(105877,101,75),(105879,101,76),(105874,101,101),(106511,102,1),(106516,102,2),(106515,102,3),(106520,102,6),(106519,102,11),(106512,102,13),(106513,102,35),(106514,102,70),(106517,102,75),(106518,102,76),(106510,102,102),(106178,103,1),(106179,103,2),(106180,103,3),(106181,103,5),(106182,103,6),(106237,103,9),(106183,103,11),(106184,103,13),(106185,103,15),(106186,103,16),(106187,103,17),(106188,103,18),(106189,103,19),(106190,103,20),(106191,103,21),(106192,103,22),(106193,103,30),(106194,103,31),(106195,103,32),(106196,103,33),(106197,103,34),(106198,103,35),(106199,103,36),(106200,103,37),(106201,103,38),(106202,103,39),(106203,103,40),(106204,103,41),(106205,103,42),(106206,103,43),(106207,103,44),(106208,103,45),(106209,103,47),(106210,103,48),(106211,103,49),(106212,103,50),(106213,103,51),(106214,103,52),(106215,103,53),(106216,103,54),(106217,103,55),(106218,103,56),(106219,103,57),(106220,103,58),(106221,103,59),(106222,103,60),(106223,103,61),(106224,103,64),(106225,103,65),(106226,103,67),(106227,103,69),(106228,103,70),(106229,103,71),(106230,103,72),(106231,103,73),(106232,103,74),(106233,103,75),(106234,103,76),(106235,103,101),(106236,103,102),(106177,103,103),(106246,104,1),(106245,104,2),(106244,104,3),(106243,104,5),(106247,104,6),(106239,104,9),(106248,104,11),(106249,104,13),(106250,104,15),(106251,104,16),(106252,104,17),(106253,104,18),(106254,104,19),(106255,104,20),(106256,104,21),(106257,104,22),(106258,104,30),(106259,104,31),(106260,104,32),(106261,104,33),(106262,104,34),(106263,104,35),(106264,104,36),(106265,104,37),(106266,104,38),(106267,104,39),(106268,104,40),(106269,104,41),(106270,104,42),(106271,104,43),(106272,104,44),(106273,104,45),(106274,104,47),(106275,104,48),(106276,104,49),(106277,104,50),(106278,104,51),(106279,104,52),(106280,104,53),(106281,104,54),(106282,104,55),(106283,104,56),(106284,104,57),(106285,104,58),(106286,104,59),(106287,104,60),(106288,104,61),(106304,104,62),(106289,104,64),(106290,104,65),(106240,104,66),(106291,104,67),(106292,104,69),(106293,104,70),(106294,104,71),(106295,104,72),(106296,104,73),(106297,104,74),(106298,104,75),(106299,104,76),(106241,104,100),(106300,104,101),(106301,104,102),(106242,104,103),(106238,104,104),(106303,104,105),(106302,104,106),(106305,104,107),(106307,104,108),(106306,104,109),(106117,105,105),(106031,106,6),(106030,106,11),(106029,106,106),(106591,107,1),(106603,107,2),(106602,107,3),(106584,107,5),(106608,107,6),(106607,107,11),(106588,107,13),(106600,107,18),(106590,107,21),(106589,107,33),(106592,107,35),(106596,107,36),(106606,107,44),(106605,107,47),(106593,107,49),(106585,107,50),(106599,107,53),(106595,107,56),(106586,107,57),(106604,107,58),(106594,107,59),(106583,107,60),(106601,107,70),(106598,107,72),(106597,107,75),(106587,107,76),(106582,107,107),(106805,108,1),(106806,108,2),(106807,108,3),(106810,108,6),(106809,108,11),(106808,108,70),(106804,108,108),(106736,109,1),(106738,109,2),(106737,109,3),(106741,109,6),(106740,109,11),(106733,109,13),(106734,109,18),(106739,109,70),(106735,109,76),(106732,109,109); /*!40000 ALTER TABLE `roleRole` ENABLE KEYS */; UNLOCK TABLES; @@ -88,7 +108,7 @@ UNLOCK TABLES; LOCK TABLES `userPassword` WRITE; /*!40000 ALTER TABLE `userPassword` DISABLE KEYS */; -INSERT INTO `userPassword` VALUES (1,7,1,0,1,1); +INSERT INTO `userPassword` VALUES (1,7,1,0,2,1); /*!40000 ALTER TABLE `userPassword` ENABLE KEYS */; UNLOCK TABLES; @@ -120,13 +140,13 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-01-13 7:50:25 +-- Dump completed on 2022-09-16 7:03:07 USE `salix`; --- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) +-- MySQL dump 10.19 Distrib 10.3.34-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: salix -- ------------------------------------------------------ --- Server version 5.6.25-4-log +-- Server version 10.7.4-MariaDB-1:10.7.4+maria~bullseye-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -144,7 +164,7 @@ USE `salix`; LOCK TABLES `ACL` WRITE; /*!40000 ALTER TABLE `ACL` DISABLE KEYS */; -INSERT INTO `ACL` VALUES (1,'Account','*','*','ALLOW','ROLE','employee'),(3,'Address','*','*','ALLOW','ROLE','employee'),(5,'AgencyService','*','READ','ALLOW','ROLE','employee'),(7,'Client','*','*','ALLOW','ROLE','employee'),(9,'ClientObservation','*','*','ALLOW','ROLE','employee'),(11,'ContactChannel','*','READ','ALLOW','ROLE','trainee'),(13,'Employee','*','READ','ALLOW','ROLE','employee'),(14,'PayMethod','*','READ','ALLOW','ROLE','trainee'),(16,'FakeProduction','*','READ','ALLOW','ROLE','employee'),(17,'Warehouse','* ','READ','ALLOW','ROLE','trainee'),(18,'State','*','READ','ALLOW','ROLE','employee'),(20,'TicketState','*','*','ALLOW','ROLE','employee'),(24,'Delivery','*','READ','ALLOW','ROLE','employee'),(25,'Zone','*','READ','ALLOW','ROLE','employee'),(26,'ClientCredit','*','*','ALLOW','ROLE','employee'),(27,'ClientCreditLimit','*','READ','ALLOW','ROLE','trainee'),(30,'GreugeType','*','READ','ALLOW','ROLE','trainee'),(31,'Mandate','*','READ','ALLOW','ROLE','trainee'),(32,'MandateType','*','READ','ALLOW','ROLE','trainee'),(33,'Company','*','READ','ALLOW','ROLE','trainee'),(34,'Greuge','*','READ','ALLOW','ROLE','trainee'),(35,'AddressObservation','*','*','ALLOW','ROLE','employee'),(36,'ObservationType','*','*','ALLOW','ROLE','employee'),(37,'Greuge','*','WRITE','ALLOW','ROLE','employee'),(38,'AgencyMode','*','READ','ALLOW','ROLE','employee'),(39,'ItemTag','*','WRITE','ALLOW','ROLE','buyer'),(40,'ItemBotanical','*','WRITE','ALLOW','ROLE','buyer'),(41,'ItemBotanical','*','READ','ALLOW','ROLE','employee'),(42,'ItemPlacement','*','WRITE','ALLOW','ROLE','buyer'),(43,'ItemPlacement','*','WRITE','ALLOW','ROLE','replenisher'),(44,'ItemPlacement','*','READ','ALLOW','ROLE','employee'),(45,'ItemBarcode','*','READ','ALLOW','ROLE','employee'),(46,'ItemBarcode','*','WRITE','ALLOW','ROLE','buyer'),(47,'ItemBarcode','*','WRITE','ALLOW','ROLE','replenisher'),(51,'ItemTag','*','READ','ALLOW','ROLE','employee'),(53,'Item','*','READ','ALLOW','ROLE','employee'),(54,'Item','*','WRITE','ALLOW','ROLE','buyer'),(55,'Recovery','*','READ','ALLOW','ROLE','trainee'),(56,'Recovery','*','WRITE','ALLOW','ROLE','administrative'),(58,'CreditClassification','*','*','ALLOW','ROLE','insurance'),(60,'CreditInsurance','*','*','ALLOW','ROLE','insurance'),(61,'InvoiceOut','*','READ','ALLOW','ROLE','employee'),(62,'Ticket','*','*','ALLOW','ROLE','employee'),(63,'TicketObservation','*','*','ALLOW','ROLE','employee'),(64,'Route','*','READ','ALLOW','ROLE','employee'),(65,'Sale','*','READ','ALLOW','ROLE','employee'),(66,'TicketTracking','*','READ','ALLOW','ROLE','employee'),(68,'TicketPackaging','*','*','ALLOW','ROLE','employee'),(69,'Packaging','*','READ','ALLOW','ROLE','employee'),(70,'Packaging','*','WRITE','ALLOW','ROLE','logistic'),(71,'SaleChecked','*','READ','ALLOW','ROLE','employee'),(72,'SaleComponent','*','READ','ALLOW','ROLE','employee'),(73,'Expedition','*','READ','ALLOW','ROLE','employee'),(74,'Expedition','*','WRITE','ALLOW','ROLE','deliveryBoss'),(75,'Expedition','*','WRITE','ALLOW','ROLE','production'),(76,'AnnualAverageInvoiced','*','READ','ALLOW','ROLE','employee'),(77,'WorkerMana','*','READ','ALLOW','ROLE','employee'),(78,'TicketTracking','*','WRITE','ALLOW','ROLE','production'),(79,'TicketTracking','changeState','*','ALLOW','ROLE','employee'),(80,'Sale','deleteSales','*','ALLOW','ROLE','employee'),(81,'Sale','moveToTicket','*','ALLOW','ROLE','employee'),(82,'Sale','updateQuantity','*','ALLOW','ROLE','employee'),(83,'Sale','updatePrice','*','ALLOW','ROLE','employee'),(84,'Sale','updateDiscount','*','ALLOW','ROLE','employee'),(85,'SaleTracking','*','READ','ALLOW','ROLE','employee'),(86,'Order','*','*','ALLOW','ROLE','employee'),(87,'OrderRow','*','*','ALLOW','ROLE','employee'),(88,'ClientContact','*','*','ALLOW','ROLE','employee'),(89,'Sale','moveToNewTicket','*','ALLOW','ROLE','employee'),(90,'Sale','reserve','*','ALLOW','ROLE','employee'),(91,'TicketWeekly','*','READ','ALLOW','ROLE','employee'),(94,'Agency','landsThatDay','*','ALLOW','ROLE','employee'),(96,'ClaimEnd','*','READ','ALLOW','ROLE','employee'),(97,'ClaimEnd','*','WRITE','ALLOW','ROLE','claimManager'),(98,'ClaimBeginning','*','*','ALLOW','ROLE','employee'),(99,'ClaimDevelopment','*','READ','ALLOW','ROLE','employee'),(100,'ClaimDevelopment','*','WRITE','ALLOW','ROLE','claimManager'),(101,'Claim','*','*','ALLOW','ROLE','employee'),(102,'Claim','createFromSales','*','ALLOW','ROLE','employee'),(103,'ClaimEnd','importTicketSales','WRITE','ALLOW','ROLE','claimManager'),(104,'Item','*','WRITE','ALLOW','ROLE','marketingBoss'),(105,'ItemBarcode','*','WRITE','ALLOW','ROLE','marketingBoss'),(106,'ItemBotanical','*','WRITE','ALLOW','ROLE','marketingBoss'),(108,'ItemPlacement','*','WRITE','ALLOW','ROLE','marketingBoss'),(109,'UserConfig','*','*','ALLOW','ROLE','employee'),(110,'Bank','*','READ','ALLOW','ROLE','trainee'),(111,'ClientLog','*','READ','ALLOW','ROLE','trainee'),(112,'Defaulter','*','READ','ALLOW','ROLE','employee'),(113,'ClientRisk','*','READ','ALLOW','ROLE','trainee'),(114,'Receipt','*','READ','ALLOW','ROLE','trainee'),(115,'Receipt','*','WRITE','ALLOW','ROLE','administrative'),(116,'BankEntity','*','*','ALLOW','ROLE','employee'),(117,'ClientSample','*','*','ALLOW','ROLE','employee'),(118,'WorkerTeam','*','*','ALLOW','ROLE','salesPerson'),(119,'Travel','*','READ','ALLOW','ROLE','employee'),(120,'Travel','*','WRITE','ALLOW','ROLE','buyer'),(121,'Item','regularize','*','ALLOW','ROLE','employee'),(122,'TicketRequest','*','*','ALLOW','ROLE','employee'),(123,'Worker','*','*','ALLOW','ROLE','employee'),(124,'Client','confirmTransaction','WRITE','ALLOW','ROLE','administrative'),(125,'Agency','getAgenciesWithWarehouse','*','ALLOW','ROLE','employee'),(126,'Client','activeWorkersWithRole','*','ALLOW','ROLE','employee'),(127,'TicketLog','*','READ','ALLOW','ROLE','employee'),(129,'TicketService','*','*','ALLOW','ROLE','employee'),(130,'Expedition','*','WRITE','ALLOW','ROLE','packager'),(131,'CreditInsurance','*','READ','ALLOW','ROLE','trainee'),(132,'CreditClassification','*','READ','ALLOW','ROLE','trainee'),(133,'ItemTag','*','WRITE','ALLOW','ROLE','marketingBoss'),(135,'ZoneGeo','*','READ','ALLOW','ROLE','employee'),(136,'ZoneCalendar','*','READ','ALLOW','ROLE','employee'),(137,'ZoneIncluded','*','READ','ALLOW','ROLE','employee'),(138,'LabourHoliday','*','READ','ALLOW','ROLE','employee'),(139,'LabourHolidayLegend','*','READ','ALLOW','ROLE','employee'),(140,'LabourHolidayType','*','READ','ALLOW','ROLE','employee'),(141,'Zone','*','*','ALLOW','ROLE','deliveryBoss'),(142,'ZoneCalendar','*','WRITE','ALLOW','ROLE','deliveryBoss'),(143,'ZoneIncluded','*','*','ALLOW','ROLE','deliveryBoss'),(144,'Stowaway','*','*','ALLOW','ROLE','employee'),(145,'Ticket','getPossibleStowaways','READ','ALLOW','ROLE','employee'),(147,'UserConfigView','*','*','ALLOW','ROLE','employee'),(148,'UserConfigView','*','*','ALLOW','ROLE','employee'),(149,'Sip','*','READ','ALLOW','ROLE','employee'),(150,'Sip','*','WRITE','ALLOW','ROLE','hr'),(151,'Department','*','READ','ALLOW','ROLE','employee'),(152,'Department','*','WRITE','ALLOW','ROLE','hr'),(153,'Route','*','READ','ALLOW','ROLE','employee'),(154,'Route','*','WRITE','ALLOW','ROLE','delivery'),(155,'Calendar','*','READ','ALLOW','ROLE','hr'),(156,'WorkerLabour','*','READ','ALLOW','ROLE','hr'),(157,'Calendar','absences','READ','ALLOW','ROLE','employee'),(158,'ItemTag','*','WRITE','ALLOW','ROLE','accessory'),(160,'TicketServiceType','*','READ','ALLOW','ROLE','employee'),(161,'TicketConfig','*','READ','ALLOW','ROLE','employee'),(162,'InvoiceOut','delete','WRITE','ALLOW','ROLE','invoicing'),(163,'InvoiceOut','book','WRITE','ALLOW','ROLE','invoicing'),(165,'TicketDms','*','*','ALLOW','ROLE','employee'),(167,'Worker','isSubordinate','READ','ALLOW','ROLE','employee'),(168,'Worker','mySubordinates','READ','ALLOW','ROLE','employee'),(169,'WorkerTimeControl','filter','READ','ALLOW','ROLE','employee'),(170,'WorkerTimeControl','addTime','WRITE','ALLOW','ROLE','employee'),(171,'TicketServiceType','*','WRITE','ALLOW','ROLE','administrative'),(172,'Sms','*','READ','ALLOW','ROLE','employee'),(173,'Sms','send','WRITE','ALLOW','ROLE','employee'),(174,'Agency','getLanded','READ','ALLOW','ROLE','employee'),(175,'Agency','getShipped','READ','ALLOW','ROLE','employee'),(176,'Device','*','*','ALLOW','ROLE','employee'),(177,'Device','*','*','ALLOW','ROLE','employee'),(178,'WorkerTimeControl','*','*','ALLOW','ROLE','employee'),(179,'ItemLog','*','READ','ALLOW','ROLE','employee'),(180,'RouteLog','*','READ','ALLOW','ROLE','employee'),(181,'Dms','removeFile','WRITE','ALLOW','ROLE','employee'),(182,'Dms','uploadFile','WRITE','ALLOW','ROLE','employee'),(183,'Dms','downloadFile','READ','ALLOW','ROLE','employee'),(184,'Client','uploadFile','WRITE','ALLOW','ROLE','employee'),(185,'ClientDms','removeFile','WRITE','ALLOW','ROLE','employee'),(186,'ClientDms','*','READ','ALLOW','ROLE','trainee'),(187,'Ticket','uploadFile','WRITE','ALLOW','ROLE','employee'),(190,'Route','updateVolume','WRITE','ALLOW','ROLE','deliveryBoss'),(191,'Agency','getLanded','READ','ALLOW','ROLE','employee'),(192,'Agency','getShipped','READ','ALLOW','ROLE','employee'),(194,'Postcode','*','WRITE','ALLOW','ROLE','deliveryBoss'),(195,'Ticket','addSale','WRITE','ALLOW','ROLE','employee'),(196,'Dms','updateFile','WRITE','ALLOW','ROLE','employee'),(197,'Dms','*','READ','ALLOW','ROLE','trainee'),(198,'ClaimDms','removeFile','WRITE','ALLOW','ROLE','employee'),(199,'ClaimDms','*','READ','ALLOW','ROLE','employee'),(200,'Claim','uploadFile','WRITE','ALLOW','ROLE','employee'),(201,'Sale','updateConcept','WRITE','ALLOW','ROLE','employee'),(202,'Claim','updateClaimAction','WRITE','ALLOW','ROLE','claimManager'),(203,'UserPhone','*','*','ALLOW','ROLE','employee'),(204,'WorkerDms','removeFile','WRITE','ALLOW','ROLE','hr'),(205,'WorkerDms','*','READ','ALLOW','ROLE','hr'),(206,'Chat','*','*','ALLOW','ROLE','employee'),(207,'Chat','sendMessage','*','ALLOW','ROLE','employee'),(208,'Sale','recalculatePrice','WRITE','ALLOW','ROLE','employee'),(209,'Ticket','recalculateComponents','WRITE','ALLOW','ROLE','employee'),(211,'TravelLog','*','READ','ALLOW','ROLE','buyer'),(212,'Thermograph','*','*','ALLOW','ROLE','buyer'),(213,'TravelThermograph','*','WRITE','ALLOW','ROLE','buyer'),(214,'Entry','*','*','ALLOW','ROLE','buyer'),(215,'TicketWeekly','*','WRITE','ALLOW','ROLE','buyer'),(216,'TravelThermograph','*','READ','ALLOW','ROLE','employee'),(218,'Intrastat','*','*','ALLOW','ROLE','buyer'),(219,'Account','acl','READ','ALLOW','ROLE','account'),(220,'Account','getCurrentUserData','READ','ALLOW','ROLE','account'),(221,'UserConfig','getUserConfig','READ','ALLOW','ROLE','account'),(222,'Client','*','READ','ALLOW','ROLE','trainee'),(226,'ClientObservation','*','READ','ALLOW','ROLE','trainee'),(227,'Address','*','READ','ALLOW','ROLE','trainee'),(228,'AddressObservation','*','READ','ALLOW','ROLE','trainee'),(230,'ClientCredit','*','READ','ALLOW','ROLE','trainee'),(231,'ClientContact','*','READ','ALLOW','ROLE','trainee'),(232,'ClientSample','*','READ','ALLOW','ROLE','trainee'),(233,'EntryLog','*','READ','ALLOW','ROLE','buyer'),(234,'WorkerLog','*','READ','ALLOW','ROLE','salesAssistant'),(235,'CustomsAgent','*','*','ALLOW','ROLE','employee'),(236,'Buy','*','*','ALLOW','ROLE','buyer'),(237,'WorkerDms','filter','*','ALLOW','ROLE','employee'),(238,'Town','*','WRITE','ALLOW','ROLE','deliveryBoss'),(239,'Province','*','WRITE','ALLOW','ROLE','deliveryBoss'),(240,'supplier','*','WRITE','ALLOW','ROLE','administrative'),(241,'SupplierContact','*','WRITE','ALLOW','ROLE','administrative'),(242,'supplier','*','WRITE','ALLOW','ROLE','administrative'),(244,'supplier','*','WRITE','ALLOW','ROLE','administrative'),(246,'Account','changePassword','*','ALLOW','ROLE','account'),(247,'UserAccount','exists','*','ALLOW','ROLE','account'),(248,'RoleMapping','*','READ','ALLOW','ROLE','account'),(249,'UserPassword','*','READ','ALLOW','ROLE','account'),(250,'Town','*','WRITE','ALLOW','ROLE','deliveryBoss'),(251,'Province','*','WRITE','ALLOW','ROLE','deliveryBoss'),(252,'Supplier','*','READ','ALLOW','ROLE','employee'),(253,'Supplier','*','WRITE','ALLOW','ROLE','administrative'),(254,'SupplierLog','*','READ','ALLOW','ROLE','employee'),(256,'Image','*','WRITE','ALLOW','ROLE','employee'),(257,'FixedPrice','*','*','ALLOW','ROLE','buyer'),(258,'PayDem','*','READ','ALLOW','ROLE','employee'),(259,'Client','createReceipt','*','ALLOW','ROLE','salesAssistant'),(260,'PrintServerQueue','*','WRITE','ALLOW','ROLE','employee'),(261,'SupplierAccount','*','*','ALLOW','ROLE','administrative'),(262,'Entry','*','*','ALLOW','ROLE','administrative'),(263,'InvoiceIn','*','*','ALLOW','ROLE','administrative'),(264,'StarredModule','*','*','ALLOW','ROLE','employee'),(265,'ItemBotanical','*','WRITE','ALLOW','ROLE','logisticBoss'),(266,'ZoneLog','*','READ','ALLOW','ROLE','employee'),(267,'Genus','*','WRITE','ALLOW','ROLE','logisticBoss'),(268,'Specie','*','WRITE','ALLOW','ROLE','logisticBoss'),(269,'InvoiceOut','createPdf','WRITE','ALLOW','ROLE','employee'),(270,'SupplierAddress','*','*','ALLOW','ROLE','employee'),(271,'SalesMonitor','*','*','ALLOW','ROLE','employee'),(272,'InvoiceInLog','*','*','ALLOW','ROLE','employee'),(273,'InvoiceInTax','*','*','ALLOW','ROLE','administrative'),(274,'InvoiceInLog','*','READ','ALLOW','ROLE','administrative'),(275,'InvoiceOut','createManualInvoice','WRITE','ALLOW','ROLE','invoicing'),(276,'InvoiceOut','globalInvoicing','WRITE','ALLOW','ROLE','invoicing'),(277,'Role','*','*','ALLOW','ROLE','it'),(278,'RoleInherit','*','WRITE','ALLOW','ROLE','grant'),(279,'MailAlias','*','*','ALLOW','ROLE','marketing'),(282,'UserAccount','*','WRITE','ALLOW','ROLE','it'),(283,'EntryObservation','*','*','ALLOW','ROLE','buyer'),(284,'LdapConfig','*','*','ALLOW','ROLE','sysadmin'),(285,'SambaConfig','*','*','ALLOW','ROLE','sysadmin'),(286,'ACL','*','*','ALLOW','ROLE','developer'),(287,'AccessToken','*','*','ALLOW','ROLE','developer'),(288,'MailAliasAccount','*','*','ALLOW','ROLE','marketing'),(289,'MailAliasAccount','*','*','ALLOW','ROLE','hr'),(290,'MailAlias','*','*','ALLOW','ROLE','hr'),(291,'MailForward','*','*','ALLOW','ROLE','marketing'),(292,'MailForward','*','*','ALLOW','ROLE','hr'),(293,'RoleInherit','*','*','ALLOW','ROLE','it'),(294,'RoleRole','*','*','ALLOW','ROLE','it'),(295,'AccountConfig','*','*','ALLOW','ROLE','sysadmin'),(296,'Collection','*','READ','ALLOW','ROLE','employee'); +INSERT INTO `ACL` VALUES (1,'Account','*','*','ALLOW','ROLE','employee'),(3,'Address','*','*','ALLOW','ROLE','employee'),(5,'AgencyService','*','READ','ALLOW','ROLE','employee'),(7,'Client','*','*','ALLOW','ROLE','employee'),(9,'ClientObservation','*','*','ALLOW','ROLE','employee'),(11,'ContactChannel','*','READ','ALLOW','ROLE','trainee'),(13,'Employee','*','READ','ALLOW','ROLE','employee'),(14,'PayMethod','*','READ','ALLOW','ROLE','trainee'),(16,'FakeProduction','*','READ','ALLOW','ROLE','employee'),(17,'Warehouse','* ','READ','ALLOW','ROLE','trainee'),(18,'State','*','READ','ALLOW','ROLE','employee'),(20,'TicketState','*','*','ALLOW','ROLE','employee'),(24,'Delivery','*','READ','ALLOW','ROLE','employee'),(25,'Zone','*','READ','ALLOW','ROLE','employee'),(26,'ClientCredit','*','*','ALLOW','ROLE','employee'),(27,'ClientCreditLimit','*','READ','ALLOW','ROLE','trainee'),(30,'GreugeType','*','READ','ALLOW','ROLE','trainee'),(31,'Mandate','*','READ','ALLOW','ROLE','trainee'),(32,'MandateType','*','READ','ALLOW','ROLE','trainee'),(33,'Company','*','READ','ALLOW','ROLE','trainee'),(34,'Greuge','*','READ','ALLOW','ROLE','trainee'),(35,'AddressObservation','*','*','ALLOW','ROLE','employee'),(36,'ObservationType','*','*','ALLOW','ROLE','employee'),(37,'Greuge','*','WRITE','ALLOW','ROLE','employee'),(38,'AgencyMode','*','READ','ALLOW','ROLE','employee'),(39,'ItemTag','*','WRITE','ALLOW','ROLE','buyer'),(40,'ItemBotanical','*','WRITE','ALLOW','ROLE','buyer'),(41,'ItemBotanical','*','READ','ALLOW','ROLE','employee'),(42,'ItemPlacement','*','WRITE','ALLOW','ROLE','buyer'),(43,'ItemPlacement','*','WRITE','ALLOW','ROLE','replenisher'),(44,'ItemPlacement','*','READ','ALLOW','ROLE','employee'),(45,'ItemBarcode','*','READ','ALLOW','ROLE','employee'),(46,'ItemBarcode','*','WRITE','ALLOW','ROLE','buyer'),(47,'ItemBarcode','*','WRITE','ALLOW','ROLE','replenisher'),(51,'ItemTag','*','READ','ALLOW','ROLE','employee'),(53,'Item','*','READ','ALLOW','ROLE','employee'),(54,'Item','*','WRITE','ALLOW','ROLE','buyer'),(55,'Recovery','*','READ','ALLOW','ROLE','trainee'),(56,'Recovery','*','WRITE','ALLOW','ROLE','administrative'),(58,'CreditClassification','*','*','ALLOW','ROLE','insurance'),(60,'CreditInsurance','*','*','ALLOW','ROLE','insurance'),(61,'InvoiceOut','*','READ','ALLOW','ROLE','employee'),(62,'Ticket','*','*','ALLOW','ROLE','employee'),(63,'TicketObservation','*','*','ALLOW','ROLE','employee'),(64,'Route','*','READ','ALLOW','ROLE','employee'),(65,'Sale','*','READ','ALLOW','ROLE','employee'),(66,'TicketTracking','*','READ','ALLOW','ROLE','employee'),(68,'TicketPackaging','*','*','ALLOW','ROLE','employee'),(69,'Packaging','*','READ','ALLOW','ROLE','employee'),(70,'Packaging','*','WRITE','ALLOW','ROLE','logistic'),(71,'SaleChecked','*','READ','ALLOW','ROLE','employee'),(72,'SaleComponent','*','READ','ALLOW','ROLE','employee'),(73,'Expedition','*','READ','ALLOW','ROLE','employee'),(74,'Expedition','*','WRITE','ALLOW','ROLE','deliveryBoss'),(75,'Expedition','*','WRITE','ALLOW','ROLE','production'),(76,'AnnualAverageInvoiced','*','READ','ALLOW','ROLE','employee'),(77,'WorkerMana','*','READ','ALLOW','ROLE','employee'),(78,'TicketTracking','*','WRITE','ALLOW','ROLE','production'),(79,'TicketTracking','changeState','*','ALLOW','ROLE','employee'),(80,'Sale','deleteSales','*','ALLOW','ROLE','employee'),(81,'Sale','moveToTicket','*','ALLOW','ROLE','employee'),(82,'Sale','updateQuantity','*','ALLOW','ROLE','employee'),(83,'Sale','updatePrice','*','ALLOW','ROLE','employee'),(84,'Sale','updateDiscount','*','ALLOW','ROLE','employee'),(85,'SaleTracking','*','READ','ALLOW','ROLE','employee'),(86,'Order','*','*','ALLOW','ROLE','employee'),(87,'OrderRow','*','*','ALLOW','ROLE','employee'),(88,'ClientContact','*','*','ALLOW','ROLE','employee'),(89,'Sale','moveToNewTicket','*','ALLOW','ROLE','employee'),(90,'Sale','reserve','*','ALLOW','ROLE','employee'),(91,'TicketWeekly','*','READ','ALLOW','ROLE','employee'),(94,'Agency','landsThatDay','*','ALLOW','ROLE','employee'),(96,'ClaimEnd','*','READ','ALLOW','ROLE','employee'),(97,'ClaimEnd','*','WRITE','ALLOW','ROLE','claimManager'),(98,'ClaimBeginning','*','*','ALLOW','ROLE','employee'),(99,'ClaimDevelopment','*','READ','ALLOW','ROLE','employee'),(100,'ClaimDevelopment','*','WRITE','ALLOW','ROLE','claimManager'),(101,'Claim','*','*','ALLOW','ROLE','employee'),(102,'Claim','createFromSales','*','ALLOW','ROLE','employee'),(104,'Item','*','WRITE','ALLOW','ROLE','marketingBoss'),(105,'ItemBarcode','*','WRITE','ALLOW','ROLE','marketingBoss'),(106,'ItemBotanical','*','WRITE','ALLOW','ROLE','marketingBoss'),(108,'ItemPlacement','*','WRITE','ALLOW','ROLE','marketingBoss'),(109,'UserConfig','*','*','ALLOW','ROLE','employee'),(110,'Bank','*','READ','ALLOW','ROLE','trainee'),(111,'ClientLog','*','READ','ALLOW','ROLE','trainee'),(112,'Defaulter','*','READ','ALLOW','ROLE','employee'),(113,'ClientRisk','*','READ','ALLOW','ROLE','trainee'),(114,'Receipt','*','READ','ALLOW','ROLE','trainee'),(115,'Receipt','*','WRITE','ALLOW','ROLE','administrative'),(116,'BankEntity','*','*','ALLOW','ROLE','employee'),(117,'ClientSample','*','*','ALLOW','ROLE','employee'),(118,'WorkerTeam','*','*','ALLOW','ROLE','salesPerson'),(119,'Travel','*','READ','ALLOW','ROLE','employee'),(120,'Travel','*','WRITE','ALLOW','ROLE','buyer'),(121,'Item','regularize','*','ALLOW','ROLE','employee'),(122,'TicketRequest','*','*','ALLOW','ROLE','employee'),(123,'Worker','*','*','ALLOW','ROLE','employee'),(124,'Client','confirmTransaction','WRITE','ALLOW','ROLE','administrative'),(125,'Agency','getAgenciesWithWarehouse','*','ALLOW','ROLE','employee'),(126,'Client','activeWorkersWithRole','*','ALLOW','ROLE','employee'),(127,'TicketLog','*','READ','ALLOW','ROLE','employee'),(129,'TicketService','*','*','ALLOW','ROLE','employee'),(130,'Expedition','*','WRITE','ALLOW','ROLE','packager'),(131,'CreditInsurance','*','READ','ALLOW','ROLE','trainee'),(132,'CreditClassification','*','READ','ALLOW','ROLE','trainee'),(133,'ItemTag','*','WRITE','ALLOW','ROLE','marketingBoss'),(135,'ZoneGeo','*','READ','ALLOW','ROLE','employee'),(136,'ZoneCalendar','*','READ','ALLOW','ROLE','employee'),(137,'ZoneIncluded','*','READ','ALLOW','ROLE','employee'),(138,'LabourHoliday','*','READ','ALLOW','ROLE','employee'),(139,'LabourHolidayLegend','*','READ','ALLOW','ROLE','employee'),(140,'LabourHolidayType','*','READ','ALLOW','ROLE','employee'),(141,'Zone','*','*','ALLOW','ROLE','deliveryBoss'),(142,'ZoneCalendar','*','WRITE','ALLOW','ROLE','deliveryBoss'),(143,'ZoneIncluded','*','*','ALLOW','ROLE','deliveryBoss'),(144,'Stowaway','*','*','ALLOW','ROLE','employee'),(145,'Ticket','getPossibleStowaways','READ','ALLOW','ROLE','employee'),(147,'UserConfigView','*','*','ALLOW','ROLE','employee'),(148,'UserConfigView','*','*','ALLOW','ROLE','employee'),(149,'Sip','*','READ','ALLOW','ROLE','employee'),(150,'Sip','*','WRITE','ALLOW','ROLE','hr'),(151,'Department','*','READ','ALLOW','ROLE','employee'),(152,'Department','*','WRITE','ALLOW','ROLE','hr'),(153,'Route','*','READ','ALLOW','ROLE','employee'),(154,'Route','*','WRITE','ALLOW','ROLE','delivery'),(155,'Calendar','*','READ','ALLOW','ROLE','hr'),(156,'WorkerLabour','*','READ','ALLOW','ROLE','hr'),(157,'Calendar','absences','READ','ALLOW','ROLE','employee'),(158,'ItemTag','*','WRITE','ALLOW','ROLE','accessory'),(160,'TicketServiceType','*','READ','ALLOW','ROLE','employee'),(161,'TicketConfig','*','READ','ALLOW','ROLE','employee'),(162,'InvoiceOut','delete','WRITE','ALLOW','ROLE','invoicing'),(163,'InvoiceOut','book','WRITE','ALLOW','ROLE','invoicing'),(165,'TicketDms','*','*','ALLOW','ROLE','employee'),(167,'Worker','isSubordinate','READ','ALLOW','ROLE','employee'),(168,'Worker','mySubordinates','READ','ALLOW','ROLE','employee'),(169,'WorkerTimeControl','filter','READ','ALLOW','ROLE','employee'),(170,'WorkerTimeControl','addTime','WRITE','ALLOW','ROLE','employee'),(171,'TicketServiceType','*','WRITE','ALLOW','ROLE','administrative'),(172,'Sms','*','READ','ALLOW','ROLE','employee'),(173,'Sms','send','WRITE','ALLOW','ROLE','employee'),(174,'Agency','getLanded','READ','ALLOW','ROLE','employee'),(175,'Agency','getShipped','READ','ALLOW','ROLE','employee'),(176,'Device','*','*','ALLOW','ROLE','employee'),(177,'Device','*','*','ALLOW','ROLE','employee'),(178,'WorkerTimeControl','*','*','ALLOW','ROLE','employee'),(179,'ItemLog','*','READ','ALLOW','ROLE','employee'),(180,'RouteLog','*','READ','ALLOW','ROLE','employee'),(181,'Dms','removeFile','WRITE','ALLOW','ROLE','employee'),(182,'Dms','uploadFile','WRITE','ALLOW','ROLE','employee'),(183,'Dms','downloadFile','READ','ALLOW','ROLE','employee'),(184,'Client','uploadFile','WRITE','ALLOW','ROLE','employee'),(185,'ClientDms','removeFile','WRITE','ALLOW','ROLE','employee'),(186,'ClientDms','*','READ','ALLOW','ROLE','trainee'),(187,'Ticket','uploadFile','WRITE','ALLOW','ROLE','employee'),(190,'Route','updateVolume','WRITE','ALLOW','ROLE','deliveryBoss'),(191,'Agency','getLanded','READ','ALLOW','ROLE','employee'),(192,'Agency','getShipped','READ','ALLOW','ROLE','employee'),(194,'Postcode','*','WRITE','ALLOW','ROLE','deliveryBoss'),(195,'Ticket','addSale','WRITE','ALLOW','ROLE','employee'),(196,'Dms','updateFile','WRITE','ALLOW','ROLE','employee'),(197,'Dms','*','READ','ALLOW','ROLE','trainee'),(198,'ClaimDms','removeFile','WRITE','ALLOW','ROLE','employee'),(199,'ClaimDms','*','READ','ALLOW','ROLE','employee'),(200,'Claim','uploadFile','WRITE','ALLOW','ROLE','employee'),(201,'Sale','updateConcept','WRITE','ALLOW','ROLE','employee'),(202,'Claim','updateClaimAction','WRITE','ALLOW','ROLE','claimManager'),(203,'UserPhone','*','*','ALLOW','ROLE','employee'),(204,'WorkerDms','removeFile','WRITE','ALLOW','ROLE','hr'),(205,'WorkerDms','*','READ','ALLOW','ROLE','hr'),(206,'Chat','*','*','ALLOW','ROLE','employee'),(207,'Chat','sendMessage','*','ALLOW','ROLE','employee'),(208,'Sale','recalculatePrice','WRITE','ALLOW','ROLE','employee'),(209,'Ticket','recalculateComponents','WRITE','ALLOW','ROLE','employee'),(211,'TravelLog','*','READ','ALLOW','ROLE','buyer'),(212,'Thermograph','*','*','ALLOW','ROLE','buyer'),(213,'TravelThermograph','*','WRITE','ALLOW','ROLE','buyer'),(214,'Entry','*','*','ALLOW','ROLE','buyer'),(215,'TicketWeekly','*','WRITE','ALLOW','ROLE','buyer'),(216,'TravelThermograph','*','READ','ALLOW','ROLE','employee'),(218,'Intrastat','*','*','ALLOW','ROLE','buyer'),(219,'Account','acl','READ','ALLOW','ROLE','account'),(220,'Account','getCurrentUserData','READ','ALLOW','ROLE','account'),(221,'UserConfig','getUserConfig','READ','ALLOW','ROLE','account'),(222,'Client','*','READ','ALLOW','ROLE','trainee'),(226,'ClientObservation','*','READ','ALLOW','ROLE','trainee'),(227,'Address','*','READ','ALLOW','ROLE','trainee'),(228,'AddressObservation','*','READ','ALLOW','ROLE','trainee'),(230,'ClientCredit','*','READ','ALLOW','ROLE','trainee'),(231,'ClientContact','*','READ','ALLOW','ROLE','trainee'),(232,'ClientSample','*','READ','ALLOW','ROLE','trainee'),(233,'EntryLog','*','READ','ALLOW','ROLE','buyer'),(234,'WorkerLog','*','READ','ALLOW','ROLE','salesAssistant'),(235,'CustomsAgent','*','*','ALLOW','ROLE','employee'),(236,'Buy','*','*','ALLOW','ROLE','buyer'),(237,'WorkerDms','filter','*','ALLOW','ROLE','employee'),(238,'Town','*','WRITE','ALLOW','ROLE','deliveryBoss'),(239,'Province','*','WRITE','ALLOW','ROLE','deliveryBoss'),(240,'supplier','*','WRITE','ALLOW','ROLE','administrative'),(241,'SupplierContact','*','WRITE','ALLOW','ROLE','administrative'),(242,'supplier','*','WRITE','ALLOW','ROLE','administrative'),(244,'supplier','*','WRITE','ALLOW','ROLE','administrative'),(246,'Account','changePassword','*','ALLOW','ROLE','account'),(247,'UserAccount','exists','*','ALLOW','ROLE','account'),(248,'RoleMapping','*','READ','ALLOW','ROLE','account'),(249,'UserPassword','*','READ','ALLOW','ROLE','account'),(250,'Town','*','WRITE','ALLOW','ROLE','deliveryBoss'),(251,'Province','*','WRITE','ALLOW','ROLE','deliveryBoss'),(252,'Supplier','*','READ','ALLOW','ROLE','employee'),(253,'Supplier','*','WRITE','ALLOW','ROLE','administrative'),(254,'SupplierLog','*','READ','ALLOW','ROLE','employee'),(256,'Image','*','WRITE','ALLOW','ROLE','employee'),(257,'FixedPrice','*','*','ALLOW','ROLE','buyer'),(258,'PayDem','*','READ','ALLOW','ROLE','employee'),(259,'Client','createReceipt','*','ALLOW','ROLE','salesAssistant'),(260,'PrintServerQueue','*','WRITE','ALLOW','ROLE','employee'),(261,'SupplierAccount','*','*','ALLOW','ROLE','administrative'),(262,'Entry','*','*','ALLOW','ROLE','administrative'),(263,'InvoiceIn','*','*','ALLOW','ROLE','administrative'),(264,'StarredModule','*','*','ALLOW','ROLE','employee'),(265,'ItemBotanical','*','WRITE','ALLOW','ROLE','logisticBoss'),(266,'ZoneLog','*','READ','ALLOW','ROLE','employee'),(267,'Genus','*','WRITE','ALLOW','ROLE','logisticBoss'),(268,'Specie','*','WRITE','ALLOW','ROLE','logisticBoss'),(269,'InvoiceOut','createPdf','WRITE','ALLOW','ROLE','employee'),(270,'SupplierAddress','*','*','ALLOW','ROLE','employee'),(271,'SalesMonitor','*','*','ALLOW','ROLE','employee'),(272,'InvoiceInLog','*','*','ALLOW','ROLE','employee'),(273,'InvoiceInTax','*','*','ALLOW','ROLE','administrative'),(274,'InvoiceInLog','*','READ','ALLOW','ROLE','administrative'),(275,'InvoiceOut','createManualInvoice','WRITE','ALLOW','ROLE','invoicing'),(276,'InvoiceOut','globalInvoicing','WRITE','ALLOW','ROLE','invoicing'),(277,'Role','*','*','ALLOW','ROLE','it'),(278,'RoleInherit','*','WRITE','ALLOW','ROLE','grant'),(279,'MailAlias','*','*','ALLOW','ROLE','marketing'),(282,'UserAccount','*','WRITE','ALLOW','ROLE','it'),(283,'EntryObservation','*','*','ALLOW','ROLE','buyer'),(284,'LdapConfig','*','*','ALLOW','ROLE','sysadmin'),(285,'SambaConfig','*','*','ALLOW','ROLE','sysadmin'),(286,'ACL','*','*','ALLOW','ROLE','developer'),(287,'AccessToken','*','*','ALLOW','ROLE','developer'),(288,'MailAliasAccount','*','*','ALLOW','ROLE','marketing'),(289,'MailAliasAccount','*','*','ALLOW','ROLE','hr'),(290,'MailAlias','*','*','ALLOW','ROLE','hr'),(291,'MailForward','*','*','ALLOW','ROLE','marketing'),(292,'MailForward','*','*','ALLOW','ROLE','hr'),(293,'RoleInherit','*','*','ALLOW','ROLE','it'),(294,'RoleRole','*','*','ALLOW','ROLE','it'),(295,'AccountConfig','*','*','ALLOW','ROLE','sysadmin'),(296,'Collection','*','READ','ALLOW','ROLE','employee'),(297,'Sale','refund','WRITE','ALLOW','ROLE','invoicing'),(298,'InvoiceInDueDay','*','*','ALLOW','ROLE','administrative'),(299,'Collection','setSaleQuantity','*','ALLOW','ROLE','employee'),(300,'Docuware','*','*','ALLOW','ROLE','employee'),(301,'Agency','*','READ','ALLOW','ROLE','employee'),(302,'AgencyTerm','*','*','ALLOW','ROLE','administrative'),(303,'ClaimLog','*','READ','ALLOW','ROLE','claimManager'),(304,'Edi','updateData','WRITE','ALLOW','ROLE','employee'),(305,'EducationLevel','*','*','ALLOW','ROLE','employee'),(306,'InvoiceInIntrastat','*','*','ALLOW','ROLE','employee'),(307,'SupplierAgencyTerm','*','*','ALLOW','ROLE','administrative'),(308,'InvoiceInIntrastat','*','*','ALLOW','ROLE','employee'),(309,'Zone','getZoneClosing','*','ALLOW','ROLE','employee'),(310,'ExpeditionState','*','READ','ALLOW','ROLE','employee'),(311,'Expense','*','READ','ALLOW','ROLE','employee'),(312,'Expense','*','WRITE','ALLOW','ROLE','administrative'),(314,'SupplierActivity','*','READ','ALLOW','ROLE','employee'),(315,'SupplierActivity','*','WRITE','ALLOW','ROLE','administrative'),(316,'Dms','deleteTrashFiles','WRITE','ALLOW','ROLE','employee'),(317,'ClientUnpaid','*','*','ALLOW','ROLE','administrative'),(318,'MdbVersion','*','*','ALLOW','ROLE','developer'),(319,'ItemType','*','READ','ALLOW','ROLE','employee'),(320,'ItemType','*','WRITE','ALLOW','ROLE','buyer'),(321,'InvoiceOut','refund','WRITE','ALLOW','ROLE','invoicing'),(322,'InvoiceOut','refund','WRITE','ALLOW','ROLE','salesAssistant'),(323,'InvoiceOut','refund','WRITE','ALLOW','ROLE','claimManager'),(324,'Ticket','refund','WRITE','ALLOW','ROLE','invoicing'),(325,'Ticket','refund','WRITE','ALLOW','ROLE','salesAssistant'),(326,'Ticket','refund','WRITE','ALLOW','ROLE','claimManager'),(327,'Sale','refund','WRITE','ALLOW','ROLE','salesAssistant'),(328,'Sale','refund','WRITE','ALLOW','ROLE','claimManager'),(329,'TicketRefund','*','WRITE','ALLOW','ROLE','invoicing'),(330,'ClaimObservation','*','WRITE','ALLOW','ROLE','salesPerson'),(331,'ClaimObservation','*','READ','ALLOW','ROLE','salesPerson'),(332,'Client','setPassword','WRITE','ALLOW','ROLE','salesPerson'),(333,'Client','updateUser','WRITE','ALLOW','ROLE','salesPerson'),(334,'ShelvingLog','*','READ','ALLOW','ROLE','employee'),(335,'ZoneExclusionGeo','*','READ','ALLOW','ROLE','employee'),(336,'ZoneExclusionGeo','*','WRITE','ALLOW','ROLE','deliveryBoss'),(337,'Parking','*','*','ALLOW','ROLE','employee'),(338,'Shelving','*','*','ALLOW','ROLE','employee'); /*!40000 ALTER TABLE `ACL` ENABLE KEYS */; UNLOCK TABLES; @@ -174,7 +194,7 @@ UNLOCK TABLES; LOCK TABLES `defaultViewConfig` WRITE; /*!40000 ALTER TABLE `defaultViewConfig` DISABLE KEYS */; -INSERT INTO `defaultViewConfig` VALUES ('itemsIndex','{\"intrastat\":false,\"stemMultiplier\":false,\"landed\":false}'),('latestBuys','{\"intrastat\":false,\"description\":false,\"density\":false,\"isActive\":false,\n \"freightValue\":false,\"packageValue\":false,\"isIgnored\":false,\"price2\":false,\"ektFk\":false,\"weight\":false,\n \"size\":false,\"comissionValue\":false,\"landing\":false}'),('ticketsMonitor','{\"id\":false}'); +INSERT INTO `defaultViewConfig` VALUES ('itemsIndex','{\"intrastat\":false,\"stemMultiplier\":false,\"landed\":false,\"producer\":false}'),('latestBuys','{\"intrastat\":false,\"description\":false,\"density\":false,\"isActive\":false,\n \"freightValue\":false,\"packageValue\":false,\"isIgnored\":false,\"price2\":false,\"ektFk\":false,\"weight\":false,\n \"size\":false,\"comissionValue\":false,\"landing\":false}'),('ticketsMonitor','{\"id\":false}'),('clientsDetail','{\"id\":true,\"phone\":true,\"city\":true,\"socialName\":true,\"salesPersonFk\":true,\"email\":true,\"name\":false,\"fi\":false,\"credit\":false,\"creditInsurance\":false,\"mobile\":false,\"street\":false,\"countryFk\":false,\"provinceFk\":false,\"postcode\":false,\"created\":false,\"businessTypeFk\":false,\"payMethodFk\":false,\"sageTaxTypeFk\":false,\"sageTransactionTypeFk\":false,\"isActive\":false,\"isVies\":false,\"isTaxDataChecked\":false,\"isEqualizated\":false,\"isFreezed\":false,\"hasToInvoice\":false,\"hasToInvoiceByAddress\":false,\"isToBeMailed\":false,\"hasLcr\":false,\"hasCoreVnl\":false,\"hasSepaVnl\":false}'); /*!40000 ALTER TABLE `defaultViewConfig` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; @@ -186,13 +206,13 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-01-13 7:50:26 +-- Dump completed on 2022-09-16 7:03:09 USE `vn`; --- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) +-- MySQL dump 10.19 Distrib 10.3.34-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: vn -- ------------------------------------------------------ --- Server version 5.6.25-4-log +-- Server version 10.7.4-MariaDB-1:10.7.4+maria~bullseye-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -230,7 +250,7 @@ UNLOCK TABLES; LOCK TABLES `businessType` WRITE; /*!40000 ALTER TABLE `businessType` DISABLE KEYS */; -INSERT INTO `businessType` VALUES ('decoration','Decoración'),('events','Eventos'),('florist','Floristería'),('gardenCentre','Vivero'),('gardening','Jardinería'),('mortuary','Funeraria'),('officialOrganism','Organismo oficial'),('others','Otros'),('restoration','Restauración'),('wholesaler','Mayorista'); +INSERT INTO `businessType` VALUES ('decoration','Decoración'),('events','Eventos'),('florist','Floristería'),('gardenCentre','Vivero'),('gardening','Jardinería'),('individual','Particular'),('mortuary','Funeraria'),('officialOrganism','Organismo oficial'),('others','Otros'),('otherSector','Profesional de otro sector'),('restoration','Restauración'),('wholesaler','Mayorista'); /*!40000 ALTER TABLE `businessType` ENABLE KEYS */; UNLOCK TABLES; @@ -300,7 +320,7 @@ UNLOCK TABLES; LOCK TABLES `claimResponsible` WRITE; /*!40000 ALTER TABLE `claimResponsible` DISABLE KEYS */; -INSERT INTO `claimResponsible` VALUES (1,'Compradores',0),(2,'Proveedor',0),(3,'Entradores',0),(4,'Camareros',0),(6,'Sacadores',0),(7,'Revisadores',0),(8,'Calidad general',0),(9,'Encajadores',0),(11,'Comerciales',1),(12,'Clientes',1),(13,'Administración',0),(14,'Agencia',0),(15,'Repartidores',0),(16,'Informatica',0),(17,'Transp.origen',0),(18,'Confeccion',0),(19,'OTROS',0),(21,'Gerencia',0),(22,'Paletizadores',0); +INSERT INTO `claimResponsible` VALUES (1,'Compradores',0),(2,'Proveedor',0),(3,'Entradores',0),(4,'Camareros',0),(6,'Sacadores',0),(7,'Revisadores',0),(8,'Calidad general',0),(9,'Encajadores',0),(10,'Clima',0),(11,'Comerciales',1),(12,'Clientes',1),(13,'Administración',0),(14,'Agencia',0),(15,'Repartidores',0),(16,'Informatica',0),(17,'Transp.origen',0),(18,'Confeccion',0),(19,'OTROS',0),(21,'Gerencia',0),(22,'Paletizadores',0),(23,'Preparación Previa',0),(24,'Almacén PCA',0),(25,'Huelga',0); /*!40000 ALTER TABLE `claimResponsible` ENABLE KEYS */; UNLOCK TABLES; @@ -310,7 +330,7 @@ UNLOCK TABLES; LOCK TABLES `claimReason` WRITE; /*!40000 ALTER TABLE `claimReason` DISABLE KEYS */; -INSERT INTO `claimReason` VALUES (1,'Prisas',0),(2,'Novato',0),(3,'Exceso de confianza',0),(4,'Exceso de celo',0),(5,'Indiferencia',0),(6,'Extraviado o Hurto',0),(7,'Incompetencia',0),(8,'Ubicación erronea',0),(9,'Dat.Inctos/Pak.conf',0),(10,'Datos duplicados',0),(11,'Fallo stock',0),(12,'Innovación',0),(13,'Distracción',1),(15,'Portes indebidos',0),(16,'Baja calidad',0),(17,'Defectuoso',0),(19,'Endiñado',0),(20,'Calor',0),(21,'Frio',0),(22,'Cambiado',0),(24,'Cansancio',1),(25,'Mal etiquetado',1),(26,'Cantidad malentendido',0),(30,'No revisado',1),(34,'Error fotografia',0),(40,'Fallo Personal VN',0),(41,'Fallo Personal Cliente',0),(42,'Otros',0),(43,'Precio alto',0),(44,'Abuso de confianza',0),(45,'Retraso Agencia',0),(46,'Delicado',0); +INSERT INTO `claimReason` VALUES (1,'Prisas',0),(2,'Novato',0),(3,'Exceso de confianza',0),(4,'Exceso de celo',0),(5,'Indiferencia',0),(6,'Extraviado o Hurto',0),(7,'Incompetencia',0),(8,'Ubicación erronea',0),(9,'Dat.Inctos/Pak.conf',0),(10,'Datos duplicados',0),(11,'Fallo stock',0),(12,'Innovación',0),(13,'Distracción',1),(15,'Portes indebidos',0),(16,'Baja calidad',0),(17,'Defectuoso',0),(19,'Endiñado',0),(20,'Calor',0),(21,'Frio',0),(22,'Cambiado',0),(24,'Cansancio',1),(25,'Mal etiquetado',1),(26,'Cantidad malentendido',0),(30,'No revisado',1),(34,'Error fotografia',0),(40,'Fallo Personal VN',0),(41,'Fallo Personal Cliente',0),(42,'Otros',0),(43,'Precio alto',0),(44,'Abuso de confianza',0),(45,'Retraso Agencia',0),(46,'Delicado',0),(47,'Seco',0),(48,'Retraso Reparto',0),(49,'Mal Embalado',0),(50,'Tumbado',0),(51,'Enfermo/Plaga',0); /*!40000 ALTER TABLE `claimReason` ENABLE KEYS */; UNLOCK TABLES; @@ -320,7 +340,7 @@ UNLOCK TABLES; LOCK TABLES `claimRedelivery` WRITE; /*!40000 ALTER TABLE `claimRedelivery` DISABLE KEYS */; -INSERT INTO `claimRedelivery` VALUES (1,'Cliente'),(2,'No dev./No especif.'),(3,'Reparto'),(4,'Agencia'); +INSERT INTO `claimRedelivery` VALUES (1,'Cliente'),(2,'No dev./No especif.'),(3,'Reparto'),(4,'Agencia'),(5,'Tour'),(6,'Fuera Peninsula'); /*!40000 ALTER TABLE `claimRedelivery` ENABLE KEYS */; UNLOCK TABLES; @@ -330,7 +350,7 @@ UNLOCK TABLES; LOCK TABLES `claimResult` WRITE; /*!40000 ALTER TABLE `claimResult` DISABLE KEYS */; -INSERT INTO `claimResult` VALUES (1,'Otros daños'),(2,'Roces'),(3,'Humedad'),(4,'Deshidratacion'),(5,'Error identidad'),(6,'Incompleto (Faltas)'),(7,'Error packing'),(8,'Error color'),(9,'Error medida'),(10,'Error origen'),(11,'Envejecido'),(12,'Venta Perdida'),(13,'Duplicacion'),(14,'Rechazado'),(15,'Rotura'),(16,'Deterioro/Estropeado'),(17,'Podrido'),(18,'Baboso'),(19,'Cocido'),(20,'Congelado'),(21,'Machacado'),(22,'Error precio'),(23,'Manchado'),(24,'No entregado'),(25,'Cobro indebido'),(26,'Decepcion/Esperaba mas'),(27,'Otros'); +INSERT INTO `claimResult` VALUES (1,'Otros daños'),(2,'Roces'),(3,'Humedad'),(4,'Deshidratacion'),(5,'Error identidad'),(6,'Incompleto (Faltas)'),(7,'Error packing'),(8,'Error color'),(9,'Error medida'),(10,'Error origen'),(11,'Envejecido'),(12,'Venta Perdida'),(13,'Duplicacion'),(14,'Rechazado'),(15,'Rotura'),(16,'Deterioro/Estropeado'),(17,'Podrido'),(18,'Baboso'),(19,'Cocido'),(20,'Congelado'),(21,'Machacado'),(22,'Error precio'),(23,'Manchado'),(24,'No entregado'),(25,'Cobro indebido'),(26,'Decepcion/Esperaba mas'),(27,'Otros'),(28,'Baboso/Cocido'),(29,'Video Camara'); /*!40000 ALTER TABLE `claimResult` ENABLE KEYS */; UNLOCK TABLES; @@ -340,7 +360,7 @@ UNLOCK TABLES; LOCK TABLES `component` WRITE; /*!40000 ALTER TABLE `component` DISABLE KEYS */; -INSERT INTO `component` VALUES (10,'Precios Especiales',4,NULL,NULL,1,'specialPrices',0),(14,'porte extra por dia semana',6,NULL,NULL,1,'extraCostPerWeekDay',0),(15,'reparto',6,NULL,NULL,1,'delivery',1),(17,'recobro',5,NULL,NULL,1,'debtCollection',0),(21,'ajuste',11,NULL,NULL,1,'adjustment',0),(22,'venta por paquete',9,1,NULL,0,'salePerPackage',0),(23,'venta por caja',9,2,NULL,0,'salePerBox',0),(28,'valor de compra',1,NULL,NULL,1,'purchaseValue',1),(29,'margen',4,NULL,NULL,1,'margin',1),(32,'descuento ultimas unidades',9,3,-0.05,0,'lastUnitsDiscount',0),(33,'venta por caja',9,1,NULL,0,'salePerBox',0),(34,'descuento comprador',4,NULL,NULL,1,'buyerDiscount',0),(35,'cartera comprador',10,NULL,NULL,1,NULL,0),(36,'descuadre',12,NULL,NULL,1,'imbalance',0),(37,'maná',7,4,NULL,0,'mana',0),(38,'embolsado',9,NULL,NULL,1,'bagged',0),(39,'maná auto',7,NULL,NULL,1,'autoMana',0),(40,'cambios Santos 2016',4,NULL,NULL,1,NULL,0),(41,'bonificacion porte',6,NULL,NULL,1,'freightCharge',0),(42,'promocion Francia',4,NULL,NULL,1,'frenchOffer',0),(43,'promocion Floramondo',4,NULL,NULL,1,'floramondoPromo',0),(44,'rappel cadena',2,NULL,NULL,1,'rappel',0); +INSERT INTO `component` VALUES (10,'Precios Especiales',4,NULL,NULL,1,'specialPrices',0),(14,'porte extra por dia semana',6,NULL,NULL,1,'extraCostPerWeekDay',0),(15,'reparto',6,NULL,NULL,1,'delivery',1),(17,'recobro',5,NULL,NULL,1,'debtCollection',0),(21,'ajuste',11,NULL,NULL,1,'adjustment',0),(22,'venta por paquete',9,1,NULL,0,'salePerPackage',0),(23,'venta por caja',9,2,NULL,0,'salePerBox',0),(28,'valor de compra',1,NULL,NULL,1,'purchaseValue',1),(29,'margen',4,NULL,NULL,1,'margin',1),(32,'descuento ultimas unidades',9,3,-0.05,0,'lastUnitsDiscount',0),(33,'venta por caja',9,1,NULL,0,'salePerBox',0),(34,'descuento comprador',4,NULL,NULL,1,'buyerDiscount',0),(35,'cartera comprador',10,NULL,NULL,1,NULL,0),(36,'descuadre',12,NULL,NULL,1,'imbalance',0),(37,'maná',7,4,NULL,0,'mana',0),(38,'embolsado',9,NULL,NULL,1,'bagged',0),(39,'maná auto',7,NULL,NULL,1,'autoMana',0),(40,'cambios Santos 2016',4,NULL,NULL,1,NULL,0),(41,'bonificacion porte',6,NULL,NULL,1,'freightCharge',0),(42,'promocion Francia',4,NULL,NULL,1,'frenchOffer',0),(43,'promocion Floramondo',4,NULL,NULL,1,'floramondoPromo',0),(44,'rappel cadena',2,NULL,NULL,1,'rappel',0),(45,'maná reclamacion',7,4,NULL,0,'manaClaim',0),(46,'recargo a particular',2,NULL,0.25,0,'individual',0); /*!40000 ALTER TABLE `component` ENABLE KEYS */; UNLOCK TABLES; @@ -350,7 +370,7 @@ UNLOCK TABLES; LOCK TABLES `componentType` WRITE; /*!40000 ALTER TABLE `componentType` DISABLE KEYS */; -INSERT INTO `componentType` VALUES (1,'coste',1,0),(2,'com ventas',1,1),(3,'com compras',1,1),(4,'empresa',1,1),(5,'cliente',0,0),(6,'agencia',0,0),(7,'cartera_comercial',0,0),(8,'cartera_producto',0,1),(9,'maniobra',1,0),(10,'cartera_comprador',0,1),(11,'errores',0,1),(12,'otros',0,1); +INSERT INTO `componentType` VALUES (1,'coste',1,0,'COST'),(2,'com ventas',1,1,NULL),(3,'com compras',1,1,NULL),(4,'empresa',1,1,'MARGIN'),(5,'cliente',0,0,NULL),(6,'agencia',0,0,'FREIGHT'),(7,'cartera_comercial',0,0,NULL),(8,'cartera_producto',0,1,NULL),(9,'maniobra',1,0,NULL),(10,'cartera_comprador',0,1,NULL),(11,'errores',0,1,NULL),(12,'otros',0,1,NULL); /*!40000 ALTER TABLE `componentType` ENABLE KEYS */; UNLOCK TABLES; @@ -370,7 +390,7 @@ UNLOCK TABLES; LOCK TABLES `department` WRITE; /*!40000 ALTER TABLE `department` DISABLE KEYS */; -INSERT INTO `department` VALUES (1,NULL,'VERDNATURA',1,2,763,0,NULL,NULL,NULL,0,0,0,0,NULL,'/',NULL,0,NULL,0,0,0),(22,NULL,'COMPRAS',3,4,NULL,72,596,2,5,0,0,0,0,NULL,'/',NULL,1,NULL,1,0,0),(23,NULL,'CAMARA',14,19,NULL,72,3758,2,6,1,0,1,2,37,'/37/',NULL,0,NULL,0,1,1),(31,'IT','INFORMATICA',5,6,NULL,72,127,3,9,0,0,0,0,NULL,'/','informatica-cau',1,NULL,1,0,0),(34,NULL,'CONTABILIDAD',7,8,NULL,0,NULL,NULL,NULL,0,0,0,0,NULL,'/',NULL,1,NULL,1,0,0),(35,NULL,'FINANZAS',9,10,NULL,0,NULL,NULL,NULL,0,0,0,0,NULL,'/',NULL,1,NULL,1,0,0),(36,NULL,'LABORAL',11,12,NULL,0,NULL,NULL,NULL,0,0,0,0,NULL,'/',NULL,1,NULL,1,0,0),(37,NULL,'PRODUCCION',13,52,NULL,72,3758,3,11,1,0,0,17,NULL,'/',NULL,0,NULL,0,1,1),(38,NULL,'SACADO',20,21,NULL,72,230,4,14,1,0,1,0,37,'/37/',NULL,0,NULL,0,0,0),(39,NULL,'ENCAJADO',22,23,NULL,72,3758,4,12,1,0,1,0,37,'/37/',NULL,0,NULL,0,0,0),(41,NULL,'ADMINISTRACION',53,54,NULL,72,599,3,8,0,0,0,0,NULL,'/',NULL,1,NULL,1,0,0),(43,NULL,'VENTAS',55,78,NULL,0,NULL,NULL,NULL,0,0,0,11,NULL,'/',NULL,1,'',1,0,0),(44,NULL,'GERENCIA',79,80,NULL,72,300,2,7,0,0,0,0,NULL,'/',NULL,0,NULL,0,0,0),(45,NULL,'LOGISTICA',81,82,NULL,72,596,3,19,0,0,0,0,NULL,'/',NULL,1,NULL,1,0,0),(46,NULL,'REPARTO',83,86,NULL,72,659,3,10,0,0,0,1,NULL,'/',NULL,0,NULL,0,0,0),(48,NULL,'ALMACENAJE',87,88,NULL,0,3758,NULL,NULL,1,0,0,0,NULL,'/',NULL,0,NULL,0,0,0),(49,NULL,'PROPIEDAD',89,90,NULL,72,1008,1,1,0,0,0,0,NULL,'/',NULL,0,NULL,0,0,0),(52,NULL,'CARGA AEREA',91,92,NULL,72,163,4,28,0,0,0,0,NULL,'/',NULL,0,NULL,0,0,0),(53,NULL,'MARKETING Y COMUNICACIÓN',93,94,NULL,72,1238,0,0,0,0,0,0,NULL,'/',NULL,1,NULL,1,0,0),(54,NULL,'ORNAMENTALES',95,96,NULL,72,433,3,21,0,0,0,0,NULL,'/',NULL,0,NULL,0,0,0),(55,NULL,'TALLER NATURAL',97,98,NULL,72,3758,2,23,0,0,0,0,NULL,'/',NULL,0,NULL,0,1,1),(56,NULL,'TALLER ARTIFICIAL',99,100,NULL,72,1780,2,24,0,0,0,0,NULL,'/',NULL,0,NULL,0,1,1),(58,NULL,'CAMPOS',101,102,NULL,72,3758,2,2,0,0,0,0,NULL,'/',NULL,0,NULL,1,0,0),(59,NULL,'MANTENIMIENTO',103,104,NULL,72,1907,4,16,0,0,0,0,NULL,'/',NULL,0,NULL,0,0,0),(60,NULL,'RECLAMACIONES',105,106,NULL,72,563,3,20,0,0,0,0,NULL,'/',NULL,1,NULL,1,0,0),(61,NULL,'VNH',107,108,NULL,73,1297,3,17,0,0,0,0,NULL,'/',NULL,0,NULL,0,0,0),(63,NULL,'VENTAS FRANCIA',56,57,NULL,72,277,2,27,0,0,1,0,43,'/43/',NULL,0,NULL,0,0,0),(66,NULL,'VERDNAMADRID',109,110,NULL,72,163,3,18,0,0,0,0,NULL,'/',NULL,0,NULL,0,0,0),(68,NULL,'COMPLEMENTOS',24,25,NULL,72,617,3,26,1,0,1,0,37,'/37/',NULL,0,NULL,0,0,0),(69,NULL,'VERDNABARNA',111,112,NULL,74,432,3,22,0,0,0,0,NULL,'/',NULL,0,NULL,0,0,0),(77,NULL,'PALETIZADO',84,85,NULL,72,230,4,15,1,0,1,0,46,'/46/',NULL,0,NULL,0,0,1),(80,NULL,'EQUIPO J VALLES',58,59,NULL,72,693,3,4,0,0,1,0,43,'/43/','jvp_equipo',1,'direccioncomercial@verdnatura.es',1,0,0),(86,NULL,'LIMPIEZA',113,114,NULL,72,599,0,0,0,0,0,0,NULL,'/',NULL,0,NULL,0,0,0),(89,NULL,'COORDINACION',115,116,NULL,0,3758,NULL,NULL,1,0,0,0,NULL,'/',NULL,0,NULL,0,0,0),(90,NULL,'TRAILER',117,118,NULL,0,NULL,NULL,NULL,0,0,0,0,NULL,'/',NULL,0,NULL,0,0,0),(91,NULL,'ARTIFICIAL',26,27,NULL,0,3758,NULL,NULL,1,0,1,0,37,'/37/',NULL,0,NULL,0,0,0),(92,NULL,'EQUIPO SILVERIO',60,61,NULL,0,NULL,NULL,NULL,0,0,1,0,43,'/43/','sdc_equipo',1,'direccioncomercial@verdnatura.es',1,0,0),(93,NULL,'CONFECCION',119,120,NULL,0,3758,NULL,NULL,0,0,0,0,NULL,'/',NULL,0,NULL,0,0,1),(94,NULL,'EQUIPO J BROCAL',62,63,NULL,0,NULL,NULL,NULL,0,0,1,0,43,'/43/','jes_equipo',1,'direccioncomercial@verdnatura.es',1,0,0),(95,NULL,'EQUIPO C ZAMBRANO',64,65,NULL,0,NULL,NULL,NULL,0,0,1,0,43,'/43/','czg_equipo',1,'direccioncomercial@verdnatura.es',1,0,0),(96,NULL,'EQUIPO C LOPEZ',66,67,NULL,0,NULL,NULL,NULL,0,0,1,0,43,'/43/','cla_equipo',1,'direccioncomercial@verdnatura.es',1,0,0),(98,NULL,'EQUIPO RODRIGO',68,69,NULL,0,NULL,NULL,NULL,0,0,1,0,43,'/43/','rhr_equipo',1,'direccioncomercial@verdnatura.es',1,0,0),(101,NULL,'EQUIPO J IBAÑEZ',70,71,NULL,0,NULL,NULL,NULL,0,0,1,0,43,'/43/','jmi_equipo',1,'direccioncomercial@verdnatura.es',1,0,0),(102,NULL,'EQ ROJO FV RUBEN C',28,29,NULL,0,NULL,NULL,NULL,1,0,1,0,37,'/37/',NULL,0,NULL,0,0,0),(103,NULL,'EQ AZUL FV A FOLQUES',30,31,NULL,0,NULL,NULL,NULL,1,0,1,0,37,'/37/',NULL,0,NULL,0,0,0),(104,NULL,'EQ AMARILLO FV NORMAN G',32,33,NULL,0,NULL,NULL,NULL,1,0,1,0,37,'/37/',NULL,0,NULL,0,0,0),(105,NULL,'EQ MORADO FV MATOU',34,35,NULL,0,NULL,NULL,NULL,1,0,1,0,37,'/37/',NULL,0,NULL,0,0,0),(106,NULL,'EQ VERDE PCA KEVIN GIMENEZ',36,37,NULL,0,NULL,NULL,NULL,1,0,1,0,37,'/37/',NULL,0,NULL,0,0,0),(107,NULL,'EQ NARANJA PCA RUBEN ZANON',38,39,NULL,0,NULL,NULL,NULL,1,0,1,0,37,'/37/',NULL,0,NULL,0,0,0),(110,NULL,'EQ ROSA PCA J BONDIA',40,41,NULL,0,NULL,NULL,NULL,1,0,1,0,37,'/37/',NULL,0,NULL,0,0,0),(111,NULL,'EQ REPONEDOR CAJAS',42,43,NULL,0,NULL,NULL,NULL,1,0,1,0,37,'/37/',NULL,0,NULL,0,0,0),(112,NULL,'CAMARA EQ EDGAR LLEO',15,16,NULL,0,NULL,NULL,NULL,1,0,2,0,23,'/37/23/',NULL,0,NULL,0,0,0),(113,NULL,'CAMARA EQ MARC ROCA',17,18,NULL,0,NULL,NULL,NULL,1,0,2,0,23,'/37/23/',NULL,0,NULL,0,0,0),(114,NULL,'EQ MARRON PCA JL NUEVO',44,45,NULL,0,NULL,NULL,NULL,1,0,1,0,37,'/37/',NULL,0,NULL,0,0,0),(115,NULL,'EQUIPO CLAUDI',72,73,NULL,0,NULL,NULL,NULL,0,0,1,0,43,'/43/','csr_equipo',1,'direccioncomercial@verdnatura.es',1,0,0),(120,NULL,'PCA PRODUCCION',46,47,NULL,0,NULL,NULL,NULL,1,0,1,0,37,'/37/',NULL,0,NULL,0,0,0),(121,NULL,'FV PRODUCCION',48,49,NULL,0,NULL,NULL,NULL,1,0,1,0,37,'/37/',NULL,0,NULL,0,0,0),(122,NULL,'PCA ALMACEN',50,51,NULL,0,NULL,NULL,NULL,1,0,1,0,37,'/37/',NULL,0,NULL,0,0,0),(123,NULL,'EQUIPO ELENA BASCUÑANA',74,75,NULL,0,NULL,NULL,NULL,0,0,1,0,43,'/43/','ebt_equipo',1,'direccioncomercial@verdnatura.es',1,0,0),(124,NULL,'CONTROL INTERNO',121,122,NULL,72,NULL,NULL,NULL,0,0,0,0,NULL,'/',NULL,1,NULL,1,0,0),(125,NULL,'EQUIPO MIRIAM MAR',76,77,NULL,0,NULL,NULL,NULL,0,0,1,0,43,'/43/','mir_equipo',0,'direccioncomercial@verdnatura.es',0,0,0),(126,NULL,'PRESERVADO',123,124,NULL,0,NULL,NULL,NULL,0,0,0,0,NULL,'/',NULL,0,NULL,0,0,1); +INSERT INTO `department` VALUES (1,NULL,'VERDNATURA',1,96,763,0,NULL,NULL,NULL,0,0,0,28,NULL,'/',NULL,0,NULL,0,0,0,0,NULL),(22,NULL,'COMPRAS',2,3,NULL,72,596,2,5,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL),(23,NULL,'CAMARA',13,14,NULL,72,3758,2,6,1,1,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,1,NULL),(31,'IT','INFORMATICA',4,5,NULL,72,127,3,9,0,0,1,0,1,'/1/','informatica-cau',1,NULL,1,0,0,0,NULL),(34,NULL,'CONTABILIDAD',6,7,NULL,0,NULL,NULL,NULL,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL),(35,NULL,'FINANZAS',8,9,NULL,0,NULL,NULL,NULL,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL),(36,NULL,'LABORAL',10,11,NULL,0,NULL,NULL,NULL,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL),(37,NULL,'PRODUCCION',12,31,NULL,72,3758,3,11,1,1,1,8,1,'/1/',NULL,0,NULL,0,1,1,1,NULL),(38,NULL,'SACADO',15,16,NULL,72,230,4,14,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL),(39,NULL,'ENCAJADO',17,18,NULL,72,3758,4,12,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL),(41,NULL,'ADMINISTRACION',32,33,NULL,72,599,3,8,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL),(43,'VT','VENTAS',34,53,NULL,0,NULL,NULL,NULL,0,0,1,9,1,'/1/',NULL,1,'',1,0,0,0,NULL),(44,NULL,'GERENCIA',54,55,NULL,72,300,2,7,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL),(45,NULL,'LOGISTICA',56,57,NULL,72,596,3,19,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL),(46,NULL,'REPARTO',58,59,NULL,72,659,3,10,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL),(48,NULL,'ALMACENAJE',60,61,NULL,0,3758,NULL,NULL,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL),(49,NULL,'PROPIEDAD',62,63,NULL,72,1008,1,1,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL),(52,NULL,'CARGA AEREA',64,65,NULL,72,163,4,28,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL),(53,NULL,'MARKETING Y COMUNICACIÓN',66,67,NULL,72,1238,0,0,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL),(54,NULL,'ORNAMENTALES',68,69,NULL,72,433,3,21,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL),(55,NULL,'TALLER NATURAL',19,22,3366,72,3758,2,23,0,0,2,1,37,'/1/37/',NULL,0,NULL,0,1,1,0,1118),(56,NULL,'TALLER ARTIFICIAL',20,21,8470,72,1780,2,24,0,0,3,0,55,'/1/37/55/',NULL,0,NULL,0,1,1,0,1927),(58,NULL,'CAMPOS',70,73,NULL,72,3758,2,2,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL),(59,NULL,'MANTENIMIENTO',74,75,NULL,72,1907,4,16,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL),(60,NULL,'RECLAMACIONES',76,77,NULL,72,563,3,20,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL),(61,NULL,'VNH',78,79,NULL,73,1297,3,17,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL),(63,NULL,'VENTAS FRANCIA',35,36,NULL,72,277,2,27,0,0,2,0,43,'/1/43/',NULL,0,NULL,0,0,0,0,NULL),(66,NULL,'VERDNAMADRID',80,81,NULL,72,163,3,18,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL),(68,NULL,'COMPLEMENTOS',23,24,NULL,72,617,3,26,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL),(69,NULL,'VERDNABARNA',82,83,NULL,74,432,3,22,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL),(80,NULL,'EQUIPO J VALLES',37,38,4250,72,693,3,4,0,0,2,0,43,'/1/43/','jvp_equipo',1,'gestioncomercial@verdnatura.es',1,0,0,0,NULL),(86,NULL,'LIMPIEZA',84,85,NULL,72,599,0,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL),(89,NULL,'COORDINACION',86,87,NULL,0,3758,NULL,NULL,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL),(90,NULL,'TRAILER',88,89,NULL,0,NULL,NULL,NULL,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL),(91,NULL,'ARTIFICIAL',25,26,NULL,0,3758,NULL,NULL,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL),(92,NULL,'EQUIPO SILVERIO',39,40,1203,0,NULL,NULL,NULL,0,0,2,0,43,'/1/43/','sdc_equipo',1,'gestioncomercial@verdnatura.es',1,0,0,0,NULL),(93,NULL,'CONFECCION',90,91,NULL,0,3758,NULL,NULL,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,1,0,NULL),(94,NULL,'EQUIPO J BROCAL',41,42,3797,0,NULL,NULL,NULL,0,0,2,0,43,'/1/43/','jes_equipo',1,'gestioncomercial@verdnatura.es',1,0,0,0,NULL),(95,NULL,'EQUIPO C ZAMBRANO',43,44,4667,0,NULL,NULL,NULL,0,0,2,0,43,'/1/43/','czg_equipo',1,'gestioncomercial@verdnatura.es',1,0,0,0,NULL),(96,NULL,'EQUIPO C LOPEZ',45,46,4661,0,NULL,NULL,NULL,0,0,2,0,43,'/1/43/','cla_equipo',1,'gestioncomercial@verdnatura.es',1,0,0,0,NULL),(115,NULL,'EQUIPO CLAUDI',47,48,3810,0,NULL,NULL,NULL,0,0,2,0,43,'/1/43/','csr_equipo',1,'gestioncomercial@verdnatura.es',1,0,0,0,NULL),(123,NULL,'EQUIPO ELENA BASCUÑANA',49,50,7102,0,NULL,NULL,NULL,0,0,2,0,43,'/1/43/','ebt_equipo',1,'gestioncomercial@verdnatura.es',1,0,0,0,NULL),(124,NULL,'CONTROL INTERNO',92,93,NULL,72,NULL,NULL,NULL,0,0,1,0,1,'/1/',NULL,0,NULL,1,0,0,0,NULL),(125,NULL,'EQUIPO MIRIAM MAR',51,52,1118,0,NULL,NULL,NULL,0,0,2,0,43,'/1/43/','mir_equipo',1,'gestioncomercial@verdnatura.es',1,0,0,0,NULL),(126,NULL,'PRESERVADO',94,95,NULL,0,NULL,NULL,NULL,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,1,0,NULL),(128,NULL,'PALETIZADO',27,28,NULL,0,NULL,NULL,NULL,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL),(130,NULL,'REVISION',29,30,NULL,0,NULL,NULL,NULL,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL),(131,NULL,'INVERNADERO',71,72,NULL,0,NULL,NULL,NULL,0,0,2,0,58,'/1/58/',NULL,0,NULL,0,0,0,0,NULL); /*!40000 ALTER TABLE `department` ENABLE KEYS */; UNLOCK TABLES; @@ -400,7 +420,7 @@ UNLOCK TABLES; LOCK TABLES `sample` WRITE; /*!40000 ALTER TABLE `sample` DISABLE KEYS */; -INSERT INTO `sample` VALUES (1,'Carta_1','Aviso inicial por saldo deudor',0,0,1,0),(2,'Carta_2','Reiteracion de aviso por saldo deudor',0,0,1,0),(3,'Cred_Up','Notificación de aumento de crédito',0,0,1,0),(4,'Cred_down','Notificación de reducción de crédito',0,0,1,0),(5,'Pet_CC','Petición de datos bancarios B2B',0,0,1,0),(6,'SolCredito','Solicitud de crédito',0,0,1,0),(7,'LeyPago','Ley de pagos',0,0,1,0),(8,'Pet_CC_Core','Petición de datos bancarios CORE',0,0,1,0),(9,'nueva_alta','Documento de nueva alta de cliente',0,0,1,0),(10,'client_welcome','Email de bienvenida para nuevo cliente',0,0,1,0),(11,'setup_printer','Email de instalación de impresora',0,0,1,0),(12,'client-welcome','Bienvenida como nuevo cliente',1,0,1,0),(13,'printer-setup','Instalación y configuración de impresora de coronas',1,0,1,0),(14,'sepa-core','Solicitud de domiciliación bancaria',1,1,0,0),(15,'letter-debtor-st','Aviso inicial por saldo deudor',1,1,1,0),(16,'letter-debtor-nd','Aviso reiterado por saldo deudor',1,1,1,0),(17,'client-lcr','Email de solicitud de datos bancarios LCR',0,1,1,0),(18,'client-debt-statement','Extracto del cliente',1,0,1,1),(19,'credit-request','Solicitud de crédito',1,1,1,0); +INSERT INTO `sample` VALUES (1,'Carta_1','Aviso inicial por saldo deudor',0,0,1,0),(2,'Carta_2','Reiteracion de aviso por saldo deudor',0,0,1,0),(3,'Cred_Up','Notificación de aumento de crédito',0,0,1,0),(4,'Cred_down','Notificación de reducción de crédito',0,0,1,0),(5,'Pet_CC','Petición de datos bancarios B2B',0,0,1,0),(6,'SolCredito','Solicitud de crédito',0,0,1,0),(7,'LeyPago','Ley de pagos',0,0,1,0),(8,'Pet_CC_Core','Petición de datos bancarios CORE',0,0,1,0),(9,'nueva_alta','Documento de nueva alta de cliente',0,0,1,0),(10,'client_welcome','Email de bienvenida para nuevo cliente',0,0,1,0),(11,'setup_printer','Email de instalación de impresora',0,0,1,0),(12,'client-welcome','Bienvenida como nuevo cliente',1,0,1,0),(13,'printer-setup','Instalación y configuración de impresora de coronas',1,0,1,0),(14,'sepa-core','Solicitud de domiciliación bancaria',1,1,0,0),(15,'letter-debtor-st','Aviso inicial por saldo deudor',1,1,1,0),(16,'letter-debtor-nd','Aviso reiterado por saldo deudor',1,1,1,0),(17,'client-lcr','Email de solicitud de datos bancarios LCR',0,1,1,0),(18,'client-debt-statement','Extracto del cliente',1,0,1,1),(19,'credit-request','Solicitud de crédito',1,1,1,0),(20,'incoterms-authorization','Autorización de incoterms',1,1,1,0); /*!40000 ALTER TABLE `sample` ENABLE KEYS */; UNLOCK TABLES; @@ -410,7 +430,7 @@ UNLOCK TABLES; LOCK TABLES `state` WRITE; /*!40000 ALTER TABLE `state` DISABLE KEYS */; -INSERT INTO `state` VALUES (1,'Arreglar',2,0,'FIXING',NULL,1,0,0,0,0,0,0,4,1),(2,'Libre',2,0,'FREE',NULL,2,1,0,0,0,1,0,4,1),(3,'OK',3,0,'OK',3,28,1,0,0,0,1,1,3,0),(4,'Impreso',4,0,'PRINTED',2,29,1,0,1,0,0,1,2,0),(5,'Preparación',6,1,'ON_PREPARATION',7,5,0,0,0,2,0,0,2,0),(6,'En Revisión',7,1,'ON_CHECKING',NULL,6,0,1,0,3,0,0,1,0),(7,'Sin Acabar',1,0,'NOT_READY',NULL,7,0,0,0,0,0,0,4,1),(8,'Revisado',8,1,'CHECKED',NULL,8,0,1,0,3,0,0,1,0),(9,'Encajando',9,2,'PACKING',NULL,9,0,1,0,0,0,0,1,0),(10,'Encajado',10,2,'PACKED',NULL,10,0,1,0,0,0,0,0,0),(11,'Facturado',0,3,'INVOICED',NULL,11,0,1,0,0,0,0,0,0),(12,'Bloqueado',0,0,'BLOCKED',NULL,12,0,0,0,0,0,0,4,1),(13,'En Reparto',11,3,'ON_DELIVERY',NULL,13,0,1,0,0,0,0,0,0),(14,'Preparado',6,1,'PREPARED',NULL,14,0,1,0,2,0,0,1,0),(15,'Pte Recogida',12,3,'WAITING_FOR_PICKUP',NULL,15,0,1,0,0,0,0,0,0),(16,'Entregado',13,3,'DELIVERED',NULL,16,0,1,0,0,0,0,0,0),(20,'Asignado',4,0,'PICKER_DESIGNED',NULL,20,1,0,0,0,0,0,2,0),(21,'Retornado',4,1,'PRINTED_BACK',6,21,0,0,0,0,0,0,2,0),(22,'¿Fecha?',2,0,'WRONG_DATE',NULL,22,0,0,0,0,0,0,4,1),(23,'URGENTE',5,1,'LAST_CALL',NULL,23,1,0,1,0,0,0,4,1),(24,'Encadenado',4,0,'CHAINED',4,24,0,0,0,0,0,0,3,1),(25,'Embarcando',3,0,'BOARDING',5,25,1,0,0,0,0,0,3,0),(26,'Prep Previa',5,1,'PREVIOUS_PREPARATION',1,26,0,0,0,1,0,0,2,0),(27,'Prep Asistida',5,1,'ASSISTED_PREPARATION',7,27,0,0,0,0,0,0,2,0),(28,'Previa OK',3,1,'OK PREVIOUS',3,28,0,0,0,1,1,1,3,0),(29,'Previa Impreso',4,1,'PRINTED PREVIOUS',2,29,0,0,1,1,0,1,3,0),(30,'Embarcado',4,1,'BOARD',5,30,0,0,0,2,0,0,3,0),(31,'Polizon Impreso',4,1,'PRINTED STOWAWAY',2,29,1,0,1,0,0,1,3,0),(32,'Polizon OK',3,1,'OK STOWAWAY',3,31,1,0,0,1,1,1,3,0),(33,'Auto_Impreso',4,0,'PRINTED_AUTO',2,29,1,0,1,0,0,1,2,0),(34,'Pte Pago',3,0,'WAITING_FOR_PAYMENT',NULL,34,0,0,0,0,0,0,4,1),(35,'Semi-Encajado',9,2,'HALF_PACKED',NULL,10,0,1,0,0,0,0,1,0),(36,'Control Previa',3,1,'PREVIOUS_CONTROL',1,36,0,1,0,4,0,1,3,0); +INSERT INTO `state` VALUES (1,'Arreglar',2,0,'FIXING',NULL,1,0,0,0,0,0,0,4,1,'alert'),(2,'Libre',2,0,'FREE',NULL,2,1,0,0,0,1,0,4,1,'notice'),(3,'OK',3,0,'OK',3,28,1,0,0,0,1,1,3,0,'success'),(4,'Impreso',4,0,'PRINTED',2,29,1,0,1,0,0,1,2,0,'success'),(5,'Preparación',6,1,'ON_PREPARATION',7,5,0,0,0,2,0,0,2,0,'warning'),(6,'En Revisión',7,1,'ON_CHECKING',NULL,6,0,1,0,3,0,0,1,0,'warning'),(7,'Sin Acabar',1,0,'NOT_READY',NULL,7,0,0,0,0,0,0,4,1,'alert'),(8,'Revisado',8,1,'CHECKED',NULL,8,0,1,0,3,0,0,1,0,'warning'),(9,'Encajando',9,2,'PACKING',NULL,9,0,1,0,0,0,0,1,0,NULL),(10,'Encajado',10,2,'PACKED',NULL,10,0,1,0,0,0,0,0,0,NULL),(11,'Facturado',0,3,'INVOICED',NULL,11,0,1,0,0,0,0,0,0,NULL),(12,'Bloqueado',0,0,'BLOCKED',NULL,12,0,0,0,0,0,0,4,1,'alert'),(13,'En Reparto',11,3,'ON_DELIVERY',NULL,13,0,1,0,0,0,0,0,0,NULL),(14,'Preparado',6,1,'PREPARED',NULL,14,0,1,0,2,0,0,1,0,'warning'),(15,'Pte Recogida',12,3,'WAITING_FOR_PICKUP',NULL,15,0,1,0,0,0,0,0,0,NULL),(16,'Entregado',13,3,'DELIVERED',NULL,16,0,1,0,0,0,0,0,0,NULL),(20,'Asignado',4,0,'PICKER_DESIGNED',NULL,20,1,0,0,0,0,0,2,0,'success'),(21,'Retornado',4,1,'PRINTED_BACK',6,21,0,0,0,0,0,0,2,0,'success'),(22,'Pte. Ampliar',2,0,'EXPANDABLE',NULL,22,0,0,0,0,0,0,4,1,'alert'),(23,'URGENTE',5,1,'LAST_CALL',NULL,23,1,0,1,0,0,0,4,1,'success'),(24,'Encadenado',4,0,'CHAINED',4,24,0,0,0,0,0,0,3,1,'success'),(25,'Embarcando',3,0,'BOARDING',5,25,1,0,0,0,0,0,3,0,'alert'),(26,'Prep Previa',5,1,'PREVIOUS_PREPARATION',1,28,0,0,0,1,0,0,2,0,'warning'),(27,'Prep Asistida',5,1,'ASSISTED_PREPARATION',7,27,0,0,0,0,0,0,2,0,'success'),(28,'Previa OK',3,0,'OK PREVIOUS',3,28,1,0,0,1,1,1,3,0,'warning'),(29,'Previa Impreso',4,0,'PRINTED PREVIOUS',2,29,1,0,1,0,0,1,2,0,'success'),(30,'Embarcado',4,1,'BOARD',5,30,0,0,0,2,0,0,3,0,'success'),(31,'Polizon Impreso',4,1,'PRINTED STOWAWAY',2,29,1,0,1,0,0,1,2,0,'success'),(32,'Polizon OK',3,1,'OK STOWAWAY',3,31,1,0,0,1,1,1,3,0,'warning'),(33,'Auto_Impreso',4,0,'PRINTED_AUTO',2,29,1,0,1,0,0,1,2,0,'success'),(34,'Pte Pago',3,0,'WAITING_FOR_PAYMENT',NULL,34,0,0,0,0,0,0,4,1,'alert'),(35,'Semi-Encajado',9,2,'HALF_PACKED',NULL,10,0,1,0,0,0,0,1,0,NULL),(36,'Previa Revisando',3,0,'PREVIOUS_CONTROL',2,37,1,0,0,4,0,1,2,0,'warning'),(37,'Previa Revisado',3,0,'PREVIOUS_CONTROLLED',2,29,1,0,1,0,0,1,2,0,'warning'); /*!40000 ALTER TABLE `state` ENABLE KEYS */; UNLOCK TABLES; @@ -430,7 +450,7 @@ UNLOCK TABLES; LOCK TABLES `time` WRITE; /*!40000 ALTER TABLE `time` DISABLE KEYS */; -INSERT INTO `time` VALUES ('2007-12-31',200801,12,2007,31,1,200712,2008),('2008-01-01',200801,1,2008,1,1,200801,2008),('2008-01-02',200801,1,2008,2,1,200801,2008),('2008-01-03',200801,1,2008,3,1,200801,2008),('2008-01-04',200801,1,2008,4,1,200801,2008),('2008-01-05',200801,1,2008,5,1,200801,2008),('2008-01-06',200802,1,2008,6,2,200801,2008),('2008-01-07',200802,1,2008,7,2,200801,2008),('2008-01-08',200802,1,2008,8,2,200801,2008),('2008-01-09',200802,1,2008,9,2,200801,2008),('2008-01-10',200802,1,2008,10,2,200801,2008),('2008-01-11',200802,1,2008,11,2,200801,2008),('2008-01-12',200802,1,2008,12,2,200801,2008),('2008-01-13',200803,1,2008,13,3,200801,2008),('2008-01-14',200803,1,2008,14,3,200801,2008),('2008-01-15',200803,1,2008,15,3,200801,2008),('2008-01-16',200803,1,2008,16,3,200801,2008),('2008-01-17',200803,1,2008,17,3,200801,2008),('2008-01-18',200803,1,2008,18,3,200801,2008),('2008-01-19',200803,1,2008,19,3,200801,2008),('2008-01-20',200804,1,2008,20,4,200801,2008),('2008-01-21',200804,1,2008,21,4,200801,2008),('2008-01-22',200804,1,2008,22,4,200801,2008),('2008-01-23',200804,1,2008,23,4,200801,2008),('2008-01-24',200804,1,2008,24,4,200801,2008),('2008-01-25',200804,1,2008,25,4,200801,2008),('2008-01-26',200804,1,2008,26,4,200801,2008),('2008-01-27',200805,1,2008,27,5,200801,2008),('2008-01-28',200805,1,2008,28,5,200801,2008),('2008-01-29',200805,1,2008,29,5,200801,2008),('2008-01-30',200805,1,2008,30,5,200801,2008),('2008-01-31',200805,1,2008,31,5,200801,2008),('2008-02-01',200805,2,2008,1,5,200802,2008),('2008-02-02',200805,2,2008,2,5,200802,2008),('2008-02-03',200806,2,2008,3,6,200802,2008),('2008-02-04',200806,2,2008,4,6,200802,2008),('2008-02-05',200806,2,2008,5,6,200802,2008),('2008-02-06',200806,2,2008,6,6,200802,2008),('2008-02-07',200806,2,2008,7,6,200802,2008),('2008-02-08',200806,2,2008,8,6,200802,2008),('2008-02-09',200806,2,2008,9,6,200802,2008),('2008-02-10',200807,2,2008,10,7,200802,2008),('2008-02-11',200807,2,2008,11,7,200802,2008),('2008-02-12',200807,2,2008,12,7,200802,2008),('2008-02-13',200807,2,2008,13,7,200802,2008),('2008-02-14',200807,2,2008,14,7,200802,2008),('2008-02-15',200807,2,2008,15,7,200802,2008),('2008-02-16',200807,2,2008,16,7,200802,2008),('2008-02-17',200808,2,2008,17,8,200802,2008),('2008-02-18',200808,2,2008,18,8,200802,2008),('2008-02-19',200808,2,2008,19,8,200802,2008),('2008-02-20',200808,2,2008,20,8,200802,2008),('2008-02-21',200808,2,2008,21,8,200802,2008),('2008-02-22',200808,2,2008,22,8,200802,2008),('2008-02-23',200808,2,2008,23,8,200802,2008),('2008-02-24',200809,2,2008,24,9,200802,2008),('2008-02-25',200809,2,2008,25,9,200802,2008),('2008-02-26',200809,2,2008,26,9,200802,2008),('2008-02-27',200809,2,2008,27,9,200802,2008),('2008-02-28',200809,2,2008,28,9,200802,2008),('2008-02-29',200809,2,2008,29,9,200802,2008),('2008-03-01',200809,3,2008,1,9,200803,2008),('2008-03-02',200810,3,2008,2,10,200803,2008),('2008-03-03',200810,3,2008,3,10,200803,2008),('2008-03-04',200810,3,2008,4,10,200803,2008),('2008-03-05',200810,3,2008,5,10,200803,2008),('2008-03-06',200810,3,2008,6,10,200803,2008),('2008-03-07',200810,3,2008,7,10,200803,2008),('2008-03-08',200810,3,2008,8,10,200803,2008),('2008-03-09',200811,3,2008,9,11,200803,2008),('2008-03-10',200811,3,2008,10,11,200803,2008),('2008-03-11',200811,3,2008,11,11,200803,2008),('2008-03-12',200811,3,2008,12,11,200803,2008),('2008-03-13',200811,3,2008,13,11,200803,2008),('2008-03-14',200811,3,2008,14,11,200803,2008),('2008-03-15',200811,3,2008,15,11,200803,2008),('2008-03-16',200812,3,2008,16,12,200803,2008),('2008-03-17',200812,3,2008,17,12,200803,2008),('2008-03-18',200812,3,2008,18,12,200803,2008),('2008-03-19',200812,3,2008,19,12,200803,2008),('2008-03-20',200812,3,2008,20,12,200803,2008),('2008-03-21',200812,3,2008,21,12,200803,2008),('2008-03-22',200812,3,2008,22,12,200803,2008),('2008-03-23',200813,3,2008,23,13,200803,2008),('2008-03-24',200813,3,2008,24,13,200803,2008),('2008-03-25',200813,3,2008,25,13,200803,2008),('2008-03-26',200813,3,2008,26,13,200803,2008),('2008-03-27',200813,3,2008,27,13,200803,2008),('2008-03-28',200813,3,2008,28,13,200803,2008),('2008-03-29',200813,3,2008,29,13,200803,2008),('2008-03-30',200814,3,2008,30,14,200803,2008),('2008-03-31',200814,3,2008,31,14,200803,2008),('2008-04-01',200814,4,2008,1,14,200804,2008),('2008-04-02',200814,4,2008,2,14,200804,2008),('2008-04-03',200814,4,2008,3,14,200804,2008),('2008-04-04',200814,4,2008,4,14,200804,2008),('2008-04-05',200814,4,2008,5,14,200804,2008),('2008-04-06',200815,4,2008,6,15,200804,2008),('2008-04-07',200815,4,2008,7,15,200804,2008),('2008-04-08',200815,4,2008,8,15,200804,2008),('2008-04-09',200815,4,2008,9,15,200804,2008),('2008-04-10',200815,4,2008,10,15,200804,2008),('2008-04-11',200815,4,2008,11,15,200804,2008),('2008-04-12',200815,4,2008,12,15,200804,2008),('2008-04-13',200816,4,2008,13,16,200804,2008),('2008-04-14',200816,4,2008,14,16,200804,2008),('2008-04-15',200816,4,2008,15,16,200804,2008),('2008-04-16',200816,4,2008,16,16,200804,2008),('2008-04-17',200816,4,2008,17,16,200804,2008),('2008-04-18',200816,4,2008,18,16,200804,2008),('2008-04-19',200816,4,2008,19,16,200804,2008),('2008-04-20',200817,4,2008,20,17,200804,2008),('2008-04-21',200817,4,2008,21,17,200804,2008),('2008-04-22',200817,4,2008,22,17,200804,2008),('2008-04-23',200817,4,2008,23,17,200804,2008),('2008-04-24',200817,4,2008,24,17,200804,2008),('2008-04-25',200817,4,2008,25,17,200804,2008),('2008-04-26',200817,4,2008,26,17,200804,2008),('2008-04-27',200818,4,2008,27,18,200804,2008),('2008-04-28',200818,4,2008,28,18,200804,2008),('2008-04-29',200818,4,2008,29,18,200804,2008),('2008-04-30',200818,4,2008,30,18,200804,2008),('2008-05-01',200818,5,2008,1,18,200805,2008),('2008-05-02',200818,5,2008,2,18,200805,2008),('2008-05-03',200818,5,2008,3,18,200805,2008),('2008-05-04',200819,5,2008,4,19,200805,2008),('2008-05-05',200819,5,2008,5,19,200805,2008),('2008-05-06',200819,5,2008,6,19,200805,2008),('2008-05-07',200819,5,2008,7,19,200805,2008),('2008-05-08',200819,5,2008,8,19,200805,2008),('2008-05-09',200819,5,2008,9,19,200805,2008),('2008-05-10',200819,5,2008,10,19,200805,2008),('2008-05-11',200820,5,2008,11,20,200805,2008),('2008-05-12',200820,5,2008,12,20,200805,2008),('2008-05-13',200820,5,2008,13,20,200805,2008),('2008-05-14',200820,5,2008,14,20,200805,2008),('2008-05-15',200820,5,2008,15,20,200805,2008),('2008-05-16',200820,5,2008,16,20,200805,2008),('2008-05-17',200820,5,2008,17,20,200805,2008),('2008-05-18',200821,5,2008,18,21,200805,2008),('2008-05-19',200821,5,2008,19,21,200805,2008),('2008-05-20',200821,5,2008,20,21,200805,2008),('2008-05-21',200821,5,2008,21,21,200805,2008),('2008-05-22',200821,5,2008,22,21,200805,2008),('2008-05-23',200821,5,2008,23,21,200805,2008),('2008-05-24',200821,5,2008,24,21,200805,2008),('2008-05-25',200822,5,2008,25,22,200805,2008),('2008-05-26',200822,5,2008,26,22,200805,2008),('2008-05-27',200822,5,2008,27,22,200805,2008),('2008-05-28',200822,5,2008,28,22,200805,2008),('2008-05-29',200822,5,2008,29,22,200805,2008),('2008-05-30',200822,5,2008,30,22,200805,2008),('2008-05-31',200822,5,2008,31,22,200805,2008),('2008-06-01',200823,6,2008,1,23,200806,2008),('2008-06-02',200823,6,2008,2,23,200806,2008),('2008-06-03',200823,6,2008,3,23,200806,2008),('2008-06-04',200823,6,2008,4,23,200806,2008),('2008-06-05',200823,6,2008,5,23,200806,2008),('2008-06-06',200823,6,2008,6,23,200806,2008),('2008-06-07',200823,6,2008,7,23,200806,2008),('2008-06-08',200824,6,2008,8,24,200806,2008),('2008-06-09',200824,6,2008,9,24,200806,2008),('2008-06-10',200824,6,2008,10,24,200806,2008),('2008-06-11',200824,6,2008,11,24,200806,2008),('2008-06-12',200824,6,2008,12,24,200806,2008),('2008-06-13',200824,6,2008,13,24,200806,2008),('2008-06-14',200824,6,2008,14,24,200806,2008),('2008-06-15',200825,6,2008,15,25,200806,2008),('2008-06-16',200825,6,2008,16,25,200806,2008),('2008-06-17',200825,6,2008,17,25,200806,2008),('2008-06-18',200825,6,2008,18,25,200806,2008),('2008-06-19',200825,6,2008,19,25,200806,2008),('2008-06-20',200825,6,2008,20,25,200806,2008),('2008-06-21',200825,6,2008,21,25,200806,2008),('2008-06-22',200826,6,2008,22,26,200806,2008),('2008-06-23',200826,6,2008,23,26,200806,2008),('2008-06-24',200826,6,2008,24,26,200806,2008),('2008-06-25',200826,6,2008,25,26,200806,2008),('2008-06-26',200826,6,2008,26,26,200806,2008),('2008-06-27',200826,6,2008,27,26,200806,2008),('2008-06-28',200826,6,2008,28,26,200806,2008),('2008-06-29',200827,6,2008,29,27,200806,2008),('2008-06-30',200827,6,2008,30,27,200806,2008),('2008-07-01',200827,7,2008,1,27,200807,2008),('2008-07-02',200827,7,2008,2,27,200807,2008),('2008-07-03',200827,7,2008,3,27,200807,2008),('2008-07-04',200827,7,2008,4,27,200807,2008),('2008-07-05',200827,7,2008,5,27,200807,2008),('2008-07-06',200828,7,2008,6,28,200807,2008),('2008-07-07',200828,7,2008,7,28,200807,2008),('2008-07-08',200828,7,2008,8,28,200807,2008),('2008-07-09',200828,7,2008,9,28,200807,2008),('2008-07-10',200828,7,2008,10,28,200807,2008),('2008-07-11',200828,7,2008,11,28,200807,2008),('2008-07-12',200828,7,2008,12,28,200807,2008),('2008-07-13',200829,7,2008,13,29,200807,2008),('2008-07-14',200829,7,2008,14,29,200807,2008),('2008-07-15',200829,7,2008,15,29,200807,2008),('2008-07-16',200829,7,2008,16,29,200807,2008),('2008-07-17',200829,7,2008,17,29,200807,2008),('2008-07-18',200829,7,2008,18,29,200807,2008),('2008-07-19',200829,7,2008,19,29,200807,2008),('2008-07-20',200830,7,2008,20,30,200807,2008),('2008-07-21',200830,7,2008,21,30,200807,2008),('2008-07-22',200830,7,2008,22,30,200807,2008),('2008-07-23',200830,7,2008,23,30,200807,2008),('2008-07-24',200830,7,2008,24,30,200807,2008),('2008-07-25',200830,7,2008,25,30,200807,2008),('2008-07-26',200830,7,2008,26,30,200807,2008),('2008-07-27',200831,7,2008,27,31,200807,2008),('2008-07-28',200831,7,2008,28,31,200807,2008),('2008-07-29',200831,7,2008,29,31,200807,2008),('2008-07-30',200831,7,2008,30,31,200807,2008),('2008-07-31',200831,7,2008,31,31,200807,2008),('2008-08-01',200831,8,2008,1,31,200808,2008),('2008-08-02',200831,8,2008,2,31,200808,2008),('2008-08-03',200832,8,2008,3,32,200808,2008),('2008-08-04',200832,8,2008,4,32,200808,2008),('2008-08-05',200832,8,2008,5,32,200808,2008),('2008-08-06',200832,8,2008,6,32,200808,2008),('2008-08-07',200832,8,2008,7,32,200808,2008),('2008-08-08',200832,8,2008,8,32,200808,2008),('2008-08-09',200832,8,2008,9,32,200808,2008),('2008-08-10',200833,8,2008,10,33,200808,2008),('2008-08-11',200833,8,2008,11,33,200808,2008),('2008-08-12',200833,8,2008,12,33,200808,2008),('2008-08-13',200833,8,2008,13,33,200808,2008),('2008-08-14',200833,8,2008,14,33,200808,2008),('2008-08-15',200833,8,2008,15,33,200808,2008),('2008-08-16',200833,8,2008,16,33,200808,2008),('2008-08-17',200834,8,2008,17,34,200808,2008),('2008-08-18',200834,8,2008,18,34,200808,2008),('2008-08-19',200834,8,2008,19,34,200808,2008),('2008-08-20',200834,8,2008,20,34,200808,2008),('2008-08-21',200834,8,2008,21,34,200808,2008),('2008-08-22',200834,8,2008,22,34,200808,2008),('2008-08-23',200834,8,2008,23,34,200808,2008),('2008-08-24',200835,8,2008,24,35,200808,2008),('2008-08-25',200835,8,2008,25,35,200808,2008),('2008-08-26',200835,8,2008,26,35,200808,2008),('2008-08-27',200835,8,2008,27,35,200808,2008),('2008-08-28',200835,8,2008,28,35,200808,2008),('2008-08-29',200835,8,2008,29,35,200808,2008),('2008-08-30',200835,8,2008,30,35,200808,2008),('2008-08-31',200836,8,2008,31,36,200808,2008),('2008-09-01',200836,9,2008,1,36,200809,2008),('2008-09-02',200836,9,2008,2,36,200809,2008),('2008-09-03',200836,9,2008,3,36,200809,2008),('2008-09-04',200836,9,2008,4,36,200809,2008),('2008-09-05',200836,9,2008,5,36,200809,2008),('2008-09-06',200836,9,2008,6,36,200809,2008),('2008-09-07',200837,9,2008,7,37,200809,2008),('2008-09-08',200837,9,2008,8,37,200809,2008),('2008-09-09',200837,9,2008,9,37,200809,2008),('2008-09-10',200837,9,2008,10,37,200809,2008),('2008-09-11',200837,9,2008,11,37,200809,2008),('2008-09-12',200837,9,2008,12,37,200809,2008),('2008-09-13',200837,9,2008,13,37,200809,2008),('2008-09-14',200838,9,2008,14,38,200809,2008),('2008-09-15',200838,9,2008,15,38,200809,2008),('2008-09-16',200838,9,2008,16,38,200809,2008),('2008-09-17',200838,9,2008,17,38,200809,2008),('2008-09-18',200838,9,2008,18,38,200809,2008),('2008-09-19',200838,9,2008,19,38,200809,2008),('2008-09-20',200838,9,2008,20,38,200809,2008),('2008-09-21',200839,9,2008,21,39,200809,2008),('2008-09-22',200839,9,2008,22,39,200809,2008),('2008-09-23',200839,9,2008,23,39,200809,2008),('2008-09-24',200839,9,2008,24,39,200809,2008),('2008-09-25',200839,9,2008,25,39,200809,2008),('2008-09-26',200839,9,2008,26,39,200809,2008),('2008-09-27',200839,9,2008,27,39,200809,2008),('2008-09-28',200840,9,2008,28,40,200809,2008),('2008-09-29',200840,9,2008,29,40,200809,2008),('2008-09-30',200840,9,2008,30,40,200809,2008),('2008-10-01',200840,10,2008,1,40,200810,2008),('2008-10-02',200840,10,2008,2,40,200810,2008),('2008-10-03',200840,10,2008,3,40,200810,2008),('2008-10-04',200840,10,2008,4,40,200810,2008),('2008-10-05',200841,10,2008,5,41,200810,2008),('2008-10-06',200841,10,2008,6,41,200810,2008),('2008-10-07',200841,10,2008,7,41,200810,2008),('2008-10-08',200841,10,2008,8,41,200810,2008),('2008-10-09',200841,10,2008,9,41,200810,2008),('2008-10-10',200841,10,2008,10,41,200810,2008),('2008-10-11',200841,10,2008,11,41,200810,2008),('2008-10-12',200842,10,2008,12,42,200810,2008),('2008-10-13',200842,10,2008,13,42,200810,2008),('2008-10-14',200842,10,2008,14,42,200810,2008),('2008-10-15',200842,10,2008,15,42,200810,2008),('2008-10-16',200842,10,2008,16,42,200810,2008),('2008-10-17',200842,10,2008,17,42,200810,2008),('2008-10-18',200842,10,2008,18,42,200810,2008),('2008-10-19',200843,10,2008,19,43,200810,2008),('2008-10-20',200843,10,2008,20,43,200810,2008),('2008-10-21',200843,10,2008,21,43,200810,2008),('2008-10-22',200843,10,2008,22,43,200810,2008),('2008-10-23',200843,10,2008,23,43,200810,2008),('2008-10-24',200843,10,2008,24,43,200810,2008),('2008-10-25',200843,10,2008,25,43,200810,2008),('2008-10-26',200844,10,2008,26,44,200810,2008),('2008-10-27',200844,10,2008,27,44,200810,2008),('2008-10-28',200844,10,2008,28,44,200810,2008),('2008-10-29',200844,10,2008,29,44,200810,2008),('2008-10-30',200844,10,2008,30,44,200810,2008),('2008-10-31',200844,10,2008,31,44,200810,2008),('2008-11-01',200844,11,2008,1,44,200811,2008),('2008-11-02',200845,11,2008,2,45,200811,2008),('2008-11-03',200845,11,2008,3,45,200811,2008),('2008-11-04',200845,11,2008,4,45,200811,2008),('2008-11-05',200845,11,2008,5,45,200811,2008),('2008-11-06',200845,11,2008,6,45,200811,2008),('2008-11-07',200845,11,2008,7,45,200811,2008),('2008-11-08',200845,11,2008,8,45,200811,2008),('2008-11-09',200846,11,2008,9,46,200811,2008),('2008-11-10',200846,11,2008,10,46,200811,2008),('2008-11-11',200846,11,2008,11,46,200811,2008),('2008-11-12',200846,11,2008,12,46,200811,2008),('2008-11-13',200846,11,2008,13,46,200811,2008),('2008-11-14',200846,11,2008,14,46,200811,2008),('2008-11-15',200846,11,2008,15,46,200811,2008),('2008-11-16',200847,11,2008,16,47,200811,2008),('2008-11-17',200847,11,2008,17,47,200811,2008),('2008-11-18',200847,11,2008,18,47,200811,2008),('2008-11-19',200847,11,2008,19,47,200811,2008),('2008-11-20',200847,11,2008,20,47,200811,2008),('2008-11-21',200847,11,2008,21,47,200811,2008),('2008-11-22',200847,11,2008,22,47,200811,2008),('2008-11-23',200848,11,2008,23,48,200811,2008),('2008-11-24',200848,11,2008,24,48,200811,2008),('2008-11-25',200848,11,2008,25,48,200811,2008),('2008-11-26',200848,11,2008,26,48,200811,2008),('2008-11-27',200848,11,2008,27,48,200811,2008),('2008-11-28',200848,11,2008,28,48,200811,2008),('2008-11-29',200848,11,2008,29,48,200811,2008),('2008-11-30',200849,11,2008,30,49,200811,2008),('2008-12-01',200849,12,2008,1,49,200812,2009),('2008-12-02',200849,12,2008,2,49,200812,2009),('2008-12-03',200849,12,2008,3,49,200812,2009),('2008-12-04',200849,12,2008,4,49,200812,2009),('2008-12-05',200849,12,2008,5,49,200812,2009),('2008-12-06',200849,12,2008,6,49,200812,2009),('2008-12-07',200850,12,2008,7,50,200812,2009),('2008-12-08',200850,12,2008,8,50,200812,2009),('2008-12-09',200850,12,2008,9,50,200812,2009),('2008-12-10',200850,12,2008,10,50,200812,2009),('2008-12-11',200850,12,2008,11,50,200812,2009),('2008-12-12',200850,12,2008,12,50,200812,2009),('2008-12-13',200850,12,2008,13,50,200812,2009),('2008-12-14',200851,12,2008,14,51,200812,2009),('2008-12-15',200851,12,2008,15,51,200812,2009),('2008-12-16',200851,12,2008,16,51,200812,2009),('2008-12-17',200851,12,2008,17,51,200812,2009),('2008-12-18',200851,12,2008,18,51,200812,2009),('2008-12-19',200851,12,2008,19,51,200812,2009),('2008-12-20',200851,12,2008,20,51,200812,2009),('2008-12-21',200852,12,2008,21,52,200812,2009),('2008-12-22',200852,12,2008,22,52,200812,2009),('2008-12-23',200852,12,2008,23,52,200812,2009),('2008-12-24',200852,12,2008,24,52,200812,2009),('2008-12-25',200852,12,2008,25,52,200812,2009),('2008-12-26',200852,12,2008,26,52,200812,2009),('2008-12-27',200852,12,2008,27,52,200812,2009),('2008-12-28',200853,12,2008,28,53,200812,2009),('2008-12-29',200901,12,2008,29,53,200812,2009),('2008-12-30',200901,12,2008,30,53,200812,2009),('2008-12-31',200901,12,2008,31,53,200812,2009),('2009-01-01',200901,1,2009,1,53,200901,2009),('2009-01-02',200901,1,2009,2,53,200901,2009),('2009-01-03',200901,1,2009,3,53,200901,2009),('2009-01-04',200902,1,2009,4,1,200901,2009),('2009-01-05',200902,1,2009,5,1,200901,2009),('2009-01-06',200902,1,2009,6,1,200901,2009),('2009-01-07',200902,1,2009,7,1,200901,2009),('2009-01-08',200902,1,2009,8,1,200901,2009),('2009-01-09',200902,1,2009,9,1,200901,2009),('2009-01-10',200902,1,2009,10,1,200901,2009),('2009-01-11',200903,1,2009,11,2,200901,2009),('2009-01-12',200903,1,2009,12,2,200901,2009),('2009-01-13',200903,1,2009,13,2,200901,2009),('2009-01-14',200903,1,2009,14,2,200901,2009),('2009-01-15',200903,1,2009,15,2,200901,2009),('2009-01-16',200903,1,2009,16,2,200901,2009),('2009-01-17',200903,1,2009,17,2,200901,2009),('2009-01-18',200904,1,2009,18,3,200901,2009),('2009-01-19',200904,1,2009,19,3,200901,2009),('2009-01-20',200904,1,2009,20,3,200901,2009),('2009-01-21',200904,1,2009,21,3,200901,2009),('2009-01-22',200904,1,2009,22,3,200901,2009),('2009-01-23',200904,1,2009,23,3,200901,2009),('2009-01-24',200904,1,2009,24,3,200901,2009),('2009-01-25',200905,1,2009,25,4,200901,2009),('2009-01-26',200905,1,2009,26,4,200901,2009),('2009-01-27',200905,1,2009,27,4,200901,2009),('2009-01-28',200905,1,2009,28,4,200901,2009),('2009-01-29',200905,1,2009,29,4,200901,2009),('2009-01-30',200905,1,2009,30,4,200901,2009),('2009-01-31',200905,1,2009,31,4,200901,2009),('2009-02-01',200906,2,2009,1,5,200902,2009),('2009-02-02',200906,2,2009,2,5,200902,2009),('2009-02-03',200906,2,2009,3,5,200902,2009),('2009-02-04',200906,2,2009,4,5,200902,2009),('2009-02-05',200906,2,2009,5,5,200902,2009),('2009-02-06',200906,2,2009,6,5,200902,2009),('2009-02-07',200906,2,2009,7,5,200902,2009),('2009-02-08',200907,2,2009,8,6,200902,2009),('2009-02-09',200907,2,2009,9,6,200902,2009),('2009-02-10',200907,2,2009,10,6,200902,2009),('2009-02-11',200907,2,2009,11,6,200902,2009),('2009-02-12',200907,2,2009,12,6,200902,2009),('2009-02-13',200907,2,2009,13,6,200902,2009),('2009-02-14',200907,2,2009,14,6,200902,2009),('2009-02-15',200908,2,2009,15,7,200902,2009),('2009-02-16',200908,2,2009,16,7,200902,2009),('2009-02-17',200908,2,2009,17,7,200902,2009),('2009-02-18',200908,2,2009,18,7,200902,2009),('2009-02-19',200908,2,2009,19,7,200902,2009),('2009-02-20',200908,2,2009,20,7,200902,2009),('2009-02-21',200908,2,2009,21,7,200902,2009),('2009-02-22',200909,2,2009,22,8,200902,2009),('2009-02-23',200909,2,2009,23,8,200902,2009),('2009-02-24',200909,2,2009,24,8,200902,2009),('2009-02-25',200909,2,2009,25,8,200902,2009),('2009-02-26',200909,2,2009,26,8,200902,2009),('2009-02-27',200909,2,2009,27,8,200902,2009),('2009-02-28',200909,2,2009,28,8,200902,2009),('2009-03-01',200910,3,2009,1,9,200903,2009),('2009-03-02',200910,3,2009,2,9,200903,2009),('2009-03-03',200910,3,2009,3,9,200903,2009),('2009-03-04',200910,3,2009,4,9,200903,2009),('2009-03-05',200910,3,2009,5,9,200903,2009),('2009-03-06',200910,3,2009,6,9,200903,2009),('2009-03-07',200910,3,2009,7,9,200903,2009),('2009-03-08',200911,3,2009,8,10,200903,2009),('2009-03-09',200911,3,2009,9,10,200903,2009),('2009-03-10',200911,3,2009,10,10,200903,2009),('2009-03-11',200911,3,2009,11,10,200903,2009),('2009-03-12',200911,3,2009,12,10,200903,2009),('2009-03-13',200911,3,2009,13,10,200903,2009),('2009-03-14',200911,3,2009,14,10,200903,2009),('2009-03-15',200912,3,2009,15,11,200903,2009),('2009-03-16',200912,3,2009,16,11,200903,2009),('2009-03-17',200912,3,2009,17,11,200903,2009),('2009-03-18',200912,3,2009,18,11,200903,2009),('2009-03-19',200912,3,2009,19,11,200903,2009),('2009-03-20',200912,3,2009,20,11,200903,2009),('2009-03-21',200912,3,2009,21,11,200903,2009),('2009-03-22',200913,3,2009,22,12,200903,2009),('2009-03-23',200913,3,2009,23,12,200903,2009),('2009-03-24',200913,3,2009,24,12,200903,2009),('2009-03-25',200913,3,2009,25,12,200903,2009),('2009-03-26',200913,3,2009,26,12,200903,2009),('2009-03-27',200913,3,2009,27,12,200903,2009),('2009-03-28',200913,3,2009,28,12,200903,2009),('2009-03-29',200914,3,2009,29,13,200903,2009),('2009-03-30',200914,3,2009,30,13,200903,2009),('2009-03-31',200914,3,2009,31,13,200903,2009),('2009-04-01',200914,4,2009,1,13,200904,2009),('2009-04-02',200914,4,2009,2,13,200904,2009),('2009-04-03',200914,4,2009,3,13,200904,2009),('2009-04-04',200914,4,2009,4,13,200904,2009),('2009-04-05',200915,4,2009,5,14,200904,2009),('2009-04-06',200915,4,2009,6,14,200904,2009),('2009-04-07',200915,4,2009,7,14,200904,2009),('2009-04-08',200915,4,2009,8,14,200904,2009),('2009-04-09',200915,4,2009,9,14,200904,2009),('2009-04-10',200915,4,2009,10,14,200904,2009),('2009-04-11',200915,4,2009,11,14,200904,2009),('2009-04-12',200916,4,2009,12,15,200904,2009),('2009-04-13',200916,4,2009,13,15,200904,2009),('2009-04-14',200916,4,2009,14,15,200904,2009),('2009-04-15',200916,4,2009,15,15,200904,2009),('2009-04-16',200916,4,2009,16,15,200904,2009),('2009-04-17',200916,4,2009,17,15,200904,2009),('2009-04-18',200916,4,2009,18,15,200904,2009),('2009-04-19',200917,4,2009,19,16,200904,2009),('2009-04-20',200917,4,2009,20,16,200904,2009),('2009-04-21',200917,4,2009,21,16,200904,2009),('2009-04-22',200917,4,2009,22,16,200904,2009),('2009-04-23',200917,4,2009,23,16,200904,2009),('2009-04-24',200917,4,2009,24,16,200904,2009),('2009-04-25',200917,4,2009,25,16,200904,2009),('2009-04-26',200918,4,2009,26,17,200904,2009),('2009-04-27',200918,4,2009,27,17,200904,2009),('2009-04-28',200918,4,2009,28,17,200904,2009),('2009-04-29',200918,4,2009,29,17,200904,2009),('2009-04-30',200918,4,2009,30,17,200904,2009),('2009-05-01',200918,5,2009,1,17,200905,2009),('2009-05-02',200918,5,2009,2,17,200905,2009),('2009-05-03',200919,5,2009,3,18,200905,2009),('2009-05-04',200919,5,2009,4,18,200905,2009),('2009-05-05',200919,5,2009,5,18,200905,2009),('2009-05-06',200919,5,2009,6,18,200905,2009),('2009-05-07',200919,5,2009,7,18,200905,2009),('2009-05-08',200919,5,2009,8,18,200905,2009),('2009-05-09',200919,5,2009,9,18,200905,2009),('2009-05-10',200920,5,2009,10,19,200905,2009),('2009-05-11',200920,5,2009,11,19,200905,2009),('2009-05-12',200920,5,2009,12,19,200905,2009),('2009-05-13',200920,5,2009,13,19,200905,2009),('2009-05-14',200920,5,2009,14,19,200905,2009),('2009-05-15',200920,5,2009,15,19,200905,2009),('2009-05-16',200920,5,2009,16,19,200905,2009),('2009-05-17',200921,5,2009,17,20,200905,2009),('2009-05-18',200921,5,2009,18,20,200905,2009),('2009-05-19',200921,5,2009,19,20,200905,2009),('2009-05-20',200921,5,2009,20,20,200905,2009),('2009-05-21',200921,5,2009,21,20,200905,2009),('2009-05-22',200921,5,2009,22,20,200905,2009),('2009-05-23',200921,5,2009,23,20,200905,2009),('2009-05-24',200922,5,2009,24,21,200905,2009),('2009-05-25',200922,5,2009,25,21,200905,2009),('2009-05-26',200922,5,2009,26,21,200905,2009),('2009-05-27',200922,5,2009,27,21,200905,2009),('2009-05-28',200922,5,2009,28,21,200905,2009),('2009-05-29',200922,5,2009,29,21,200905,2009),('2009-05-30',200922,5,2009,30,21,200905,2009),('2009-05-31',200923,5,2009,31,22,200905,2009),('2009-06-01',200923,6,2009,1,22,200906,2009),('2009-06-02',200923,6,2009,2,22,200906,2009),('2009-06-03',200923,6,2009,3,22,200906,2009),('2009-06-04',200923,6,2009,4,22,200906,2009),('2009-06-05',200923,6,2009,5,22,200906,2009),('2009-06-06',200923,6,2009,6,22,200906,2009),('2009-06-07',200924,6,2009,7,23,200906,2009),('2009-06-08',200924,6,2009,8,23,200906,2009),('2009-06-09',200924,6,2009,9,23,200906,2009),('2009-06-10',200924,6,2009,10,23,200906,2009),('2009-06-11',200924,6,2009,11,23,200906,2009),('2009-06-12',200924,6,2009,12,23,200906,2009),('2009-06-13',200924,6,2009,13,23,200906,2009),('2009-06-14',200925,6,2009,14,24,200906,2009),('2009-06-15',200925,6,2009,15,24,200906,2009),('2009-06-16',200925,6,2009,16,24,200906,2009),('2009-06-17',200925,6,2009,17,24,200906,2009),('2009-06-18',200925,6,2009,18,24,200906,2009),('2009-06-19',200925,6,2009,19,24,200906,2009),('2009-06-20',200925,6,2009,20,24,200906,2009),('2009-06-21',200926,6,2009,21,25,200906,2009),('2009-06-22',200926,6,2009,22,25,200906,2009),('2009-06-23',200926,6,2009,23,25,200906,2009),('2009-06-24',200926,6,2009,24,25,200906,2009),('2009-06-25',200926,6,2009,25,25,200906,2009),('2009-06-26',200926,6,2009,26,25,200906,2009),('2009-06-27',200926,6,2009,27,25,200906,2009),('2009-06-28',200927,6,2009,28,26,200906,2009),('2009-06-29',200927,6,2009,29,26,200906,2009),('2009-06-30',200927,6,2009,30,26,200906,2009),('2009-07-01',200927,7,2009,1,26,200907,2009),('2009-07-02',200927,7,2009,2,26,200907,2009),('2009-07-03',200927,7,2009,3,26,200907,2009),('2009-07-04',200927,7,2009,4,26,200907,2009),('2009-07-05',200928,7,2009,5,27,200907,2009),('2009-07-06',200928,7,2009,6,27,200907,2009),('2009-07-07',200928,7,2009,7,27,200907,2009),('2009-07-08',200928,7,2009,8,27,200907,2009),('2009-07-09',200928,7,2009,9,27,200907,2009),('2009-07-10',200928,7,2009,10,27,200907,2009),('2009-07-11',200928,7,2009,11,27,200907,2009),('2009-07-12',200929,7,2009,12,28,200907,2009),('2009-07-13',200929,7,2009,13,28,200907,2009),('2009-07-14',200929,7,2009,14,28,200907,2009),('2009-07-15',200929,7,2009,15,28,200907,2009),('2009-07-16',200929,7,2009,16,28,200907,2009),('2009-07-17',200929,7,2009,17,28,200907,2009),('2009-07-18',200929,7,2009,18,28,200907,2009),('2009-07-19',200930,7,2009,19,29,200907,2009),('2009-07-20',200930,7,2009,20,29,200907,2009),('2009-07-21',200930,7,2009,21,29,200907,2009),('2009-07-22',200930,7,2009,22,29,200907,2009),('2009-07-23',200930,7,2009,23,29,200907,2009),('2009-07-24',200930,7,2009,24,29,200907,2009),('2009-07-25',200930,7,2009,25,29,200907,2009),('2009-07-26',200931,7,2009,26,30,200907,2009),('2009-07-27',200931,7,2009,27,30,200907,2009),('2009-07-28',200931,7,2009,28,30,200907,2009),('2009-07-29',200931,7,2009,29,30,200907,2009),('2009-07-30',200931,7,2009,30,30,200907,2009),('2009-07-31',200931,7,2009,31,30,200907,2009),('2009-08-01',200931,8,2009,1,30,200908,2009),('2009-08-02',200932,8,2009,2,31,200908,2009),('2009-08-03',200932,8,2009,3,31,200908,2009),('2009-08-04',200932,8,2009,4,31,200908,2009),('2009-08-05',200932,8,2009,5,31,200908,2009),('2009-08-06',200932,8,2009,6,31,200908,2009),('2009-08-07',200932,8,2009,7,31,200908,2009),('2009-08-08',200932,8,2009,8,31,200908,2009),('2009-08-09',200933,8,2009,9,32,200908,2009),('2009-08-10',200933,8,2009,10,32,200908,2009),('2009-08-11',200933,8,2009,11,32,200908,2009),('2009-08-12',200933,8,2009,12,32,200908,2009),('2009-08-13',200933,8,2009,13,32,200908,2009),('2009-08-14',200933,8,2009,14,32,200908,2009),('2009-08-15',200933,8,2009,15,32,200908,2009),('2009-08-16',200934,8,2009,16,33,200908,2009),('2009-08-17',200934,8,2009,17,33,200908,2009),('2009-08-18',200934,8,2009,18,33,200908,2009),('2009-08-19',200934,8,2009,19,33,200908,2009),('2009-08-20',200934,8,2009,20,33,200908,2009),('2009-08-21',200934,8,2009,21,33,200908,2009),('2009-08-22',200934,8,2009,22,33,200908,2009),('2009-08-23',200935,8,2009,23,34,200908,2009),('2009-08-24',200935,8,2009,24,34,200908,2009),('2009-08-25',200935,8,2009,25,34,200908,2009),('2009-08-26',200935,8,2009,26,34,200908,2009),('2009-08-27',200935,8,2009,27,34,200908,2009),('2009-08-28',200935,8,2009,28,34,200908,2009),('2009-08-29',200935,8,2009,29,34,200908,2009),('2009-08-30',200936,8,2009,30,35,200908,2009),('2009-08-31',200936,8,2009,31,35,200908,2009),('2009-09-01',200936,9,2009,1,35,200909,2009),('2009-09-02',200936,9,2009,2,35,200909,2009),('2009-09-03',200936,9,2009,3,35,200909,2009),('2009-09-04',200936,9,2009,4,35,200909,2009),('2009-09-05',200936,9,2009,5,35,200909,2009),('2009-09-06',200937,9,2009,6,36,200909,2009),('2009-09-07',200937,9,2009,7,36,200909,2009),('2009-09-08',200937,9,2009,8,36,200909,2009),('2009-09-09',200937,9,2009,9,36,200909,2009),('2009-09-10',200937,9,2009,10,36,200909,2009),('2009-09-11',200937,9,2009,11,36,200909,2009),('2009-09-12',200937,9,2009,12,36,200909,2009),('2009-09-13',200938,9,2009,13,37,200909,2009),('2009-09-14',200938,9,2009,14,37,200909,2009),('2009-09-15',200938,9,2009,15,37,200909,2009),('2009-09-16',200938,9,2009,16,37,200909,2009),('2009-09-17',200938,9,2009,17,37,200909,2009),('2009-09-18',200938,9,2009,18,37,200909,2009),('2009-09-19',200938,9,2009,19,37,200909,2009),('2009-09-20',200939,9,2009,20,38,200909,2009),('2009-09-21',200939,9,2009,21,38,200909,2009),('2009-09-22',200939,9,2009,22,38,200909,2009),('2009-09-23',200939,9,2009,23,38,200909,2009),('2009-09-24',200939,9,2009,24,38,200909,2009),('2009-09-25',200939,9,2009,25,38,200909,2009),('2009-09-26',200939,9,2009,26,38,200909,2009),('2009-09-27',200940,9,2009,27,39,200909,2009),('2009-09-28',200940,9,2009,28,39,200909,2009),('2009-09-29',200940,9,2009,29,39,200909,2009),('2009-09-30',200940,9,2009,30,39,200909,2009),('2009-10-01',200940,10,2009,1,39,200910,2009),('2009-10-02',200940,10,2009,2,39,200910,2009),('2009-10-03',200940,10,2009,3,39,200910,2009),('2009-10-04',200941,10,2009,4,40,200910,2009),('2009-10-05',200941,10,2009,5,40,200910,2009),('2009-10-06',200941,10,2009,6,40,200910,2009),('2009-10-07',200941,10,2009,7,40,200910,2009),('2009-10-08',200941,10,2009,8,40,200910,2009),('2009-10-09',200941,10,2009,9,40,200910,2009),('2009-10-10',200941,10,2009,10,40,200910,2009),('2009-10-11',200942,10,2009,11,41,200910,2009),('2009-10-12',200942,10,2009,12,41,200910,2009),('2009-10-13',200942,10,2009,13,41,200910,2009),('2009-10-14',200942,10,2009,14,41,200910,2009),('2009-10-15',200942,10,2009,15,41,200910,2009),('2009-10-16',200942,10,2009,16,41,200910,2009),('2009-10-17',200942,10,2009,17,41,200910,2009),('2009-10-18',200943,10,2009,18,42,200910,2009),('2009-10-19',200943,10,2009,19,42,200910,2009),('2009-10-20',200943,10,2009,20,42,200910,2009),('2009-10-21',200943,10,2009,21,42,200910,2009),('2009-10-22',200943,10,2009,22,42,200910,2009),('2009-10-23',200943,10,2009,23,42,200910,2009),('2009-10-24',200943,10,2009,24,42,200910,2009),('2009-10-25',200944,10,2009,25,43,200910,2009),('2009-10-26',200944,10,2009,26,43,200910,2009),('2009-10-27',200944,10,2009,27,43,200910,2009),('2009-10-28',200944,10,2009,28,43,200910,2009),('2009-10-29',200944,10,2009,29,43,200910,2009),('2009-10-30',200944,10,2009,30,43,200910,2009),('2009-10-31',200944,10,2009,31,43,200910,2009),('2009-11-01',200945,11,2009,1,44,200911,2009),('2009-11-02',200945,11,2009,2,44,200911,2009),('2009-11-03',200945,11,2009,3,44,200911,2009),('2009-11-04',200945,11,2009,4,44,200911,2009),('2009-11-05',200945,11,2009,5,44,200911,2009),('2009-11-06',200945,11,2009,6,44,200911,2009),('2009-11-07',200945,11,2009,7,44,200911,2009),('2009-11-08',200946,11,2009,8,45,200911,2009),('2009-11-09',200946,11,2009,9,45,200911,2009),('2009-11-10',200946,11,2009,10,45,200911,2009),('2009-11-11',200946,11,2009,11,45,200911,2009),('2009-11-12',200946,11,2009,12,45,200911,2009),('2009-11-13',200946,11,2009,13,45,200911,2009),('2009-11-14',200946,11,2009,14,45,200911,2009),('2009-11-15',200947,11,2009,15,46,200911,2009),('2009-11-16',200947,11,2009,16,46,200911,2009),('2009-11-17',200947,11,2009,17,46,200911,2009),('2009-11-18',200947,11,2009,18,46,200911,2009),('2009-11-19',200947,11,2009,19,46,200911,2009),('2009-11-20',200947,11,2009,20,46,200911,2009),('2009-11-21',200947,11,2009,21,46,200911,2009),('2009-11-22',200948,11,2009,22,47,200911,2009),('2009-11-23',200948,11,2009,23,47,200911,2009),('2009-11-24',200948,11,2009,24,47,200911,2009),('2009-11-25',200948,11,2009,25,47,200911,2009),('2009-11-26',200948,11,2009,26,47,200911,2009),('2009-11-27',200948,11,2009,27,47,200911,2009),('2009-11-28',200948,11,2009,28,47,200911,2009),('2009-11-29',200949,11,2009,29,48,200911,2009),('2009-11-30',200949,11,2009,30,48,200911,2009),('2009-12-01',200949,12,2009,1,48,200912,2010),('2009-12-02',200949,12,2009,2,48,200912,2010),('2009-12-03',200949,12,2009,3,48,200912,2010),('2009-12-04',200949,12,2009,4,48,200912,2010),('2009-12-05',200949,12,2009,5,48,200912,2010),('2009-12-06',200950,12,2009,6,49,200912,2010),('2009-12-07',200950,12,2009,7,49,200912,2010),('2009-12-08',200950,12,2009,8,49,200912,2010),('2009-12-09',200950,12,2009,9,49,200912,2010),('2009-12-10',200950,12,2009,10,49,200912,2010),('2009-12-11',200950,12,2009,11,49,200912,2010),('2009-12-12',200950,12,2009,12,49,200912,2010),('2009-12-13',200951,12,2009,13,50,200912,2010),('2009-12-14',200951,12,2009,14,50,200912,2010),('2009-12-15',200951,12,2009,15,50,200912,2010),('2009-12-16',200951,12,2009,16,50,200912,2010),('2009-12-17',200951,12,2009,17,50,200912,2010),('2009-12-18',200951,12,2009,18,50,200912,2010),('2009-12-19',200951,12,2009,19,50,200912,2010),('2009-12-20',200952,12,2009,20,51,200912,2010),('2009-12-21',200952,12,2009,21,51,200912,2010),('2009-12-22',200952,12,2009,22,51,200912,2010),('2009-12-23',200952,12,2009,23,51,200912,2010),('2009-12-24',200952,12,2009,24,51,200912,2010),('2009-12-25',200952,12,2009,25,51,200912,2010),('2009-12-26',200952,12,2009,26,51,200912,2010),('2009-12-27',200953,12,2009,27,52,200912,2010),('2009-12-28',200952,12,2009,28,52,200912,2010),('2009-12-29',200952,12,2009,29,52,200912,2010),('2009-12-30',200952,12,2009,30,52,200912,2010),('2009-12-31',200952,12,2009,31,52,200912,2010),('2010-01-01',201001,1,2010,1,52,201001,2010),('2010-01-02',201001,1,2010,2,52,201001,2010),('2010-01-03',201002,1,2010,3,1,201001,2010),('2010-01-04',201001,1,2010,4,1,201001,2010),('2010-01-05',201001,1,2010,5,1,201001,2010),('2010-01-06',201001,1,2010,6,1,201001,2010),('2010-01-07',201001,1,2010,7,1,201001,2010),('2010-01-08',201001,1,2010,8,1,201001,2010),('2010-01-09',201001,1,2010,9,1,201001,2010),('2010-01-10',201002,1,2010,10,2,201001,2010),('2010-01-11',201002,1,2010,11,2,201001,2010),('2010-01-12',201002,1,2010,12,2,201001,2010),('2010-01-13',201002,1,2010,13,2,201001,2010),('2010-01-14',201002,1,2010,14,2,201001,2010),('2010-01-15',201002,1,2010,15,2,201001,2010),('2010-01-16',201002,1,2010,16,2,201001,2010),('2010-01-17',201003,1,2010,17,3,201001,2010),('2010-01-18',201003,1,2010,18,3,201001,2010),('2010-01-19',201003,1,2010,19,3,201001,2010),('2010-01-20',201003,1,2010,20,3,201001,2010),('2010-01-21',201003,1,2010,21,3,201001,2010),('2010-01-22',201003,1,2010,22,3,201001,2010),('2010-01-23',201003,1,2010,23,3,201001,2010),('2010-01-24',201004,1,2010,24,4,201001,2010),('2010-01-25',201004,1,2010,25,4,201001,2010),('2010-01-26',201004,1,2010,26,4,201001,2010),('2010-01-27',201004,1,2010,27,4,201001,2010),('2010-01-28',201004,1,2010,28,4,201001,2010),('2010-01-29',201004,1,2010,29,4,201001,2010),('2010-01-30',201004,1,2010,30,4,201001,2010),('2010-01-31',201005,1,2010,31,5,201001,2010),('2010-02-01',201005,2,2010,1,5,201002,2010),('2010-02-02',201005,2,2010,2,5,201002,2010),('2010-02-03',201005,2,2010,3,5,201002,2010),('2010-02-04',201005,2,2010,4,5,201002,2010),('2010-02-05',201005,2,2010,5,5,201002,2010),('2010-02-06',201005,2,2010,6,5,201002,2010),('2010-02-07',201006,2,2010,7,6,201002,2010),('2010-02-08',201006,2,2010,8,6,201002,2010),('2010-02-09',201006,2,2010,9,6,201002,2010),('2010-02-10',201006,2,2010,10,6,201002,2010),('2010-02-11',201006,2,2010,11,6,201002,2010),('2010-02-12',201006,2,2010,12,6,201002,2010),('2010-02-13',201006,2,2010,13,6,201002,2010),('2010-02-14',201007,2,2010,14,7,201002,2010),('2010-02-15',201007,2,2010,15,7,201002,2010),('2010-02-16',201007,2,2010,16,7,201002,2010),('2010-02-17',201007,2,2010,17,7,201002,2010),('2010-02-18',201007,2,2010,18,7,201002,2010),('2010-02-19',201007,2,2010,19,7,201002,2010),('2010-02-20',201007,2,2010,20,7,201002,2010),('2010-02-21',201008,2,2010,21,8,201002,2010),('2010-02-22',201008,2,2010,22,8,201002,2010),('2010-02-23',201008,2,2010,23,8,201002,2010),('2010-02-24',201008,2,2010,24,8,201002,2010),('2010-02-25',201008,2,2010,25,8,201002,2010),('2010-02-26',201008,2,2010,26,8,201002,2010),('2010-02-27',201008,2,2010,27,8,201002,2010),('2010-02-28',201009,2,2010,28,9,201002,2010),('2010-03-01',201009,3,2010,1,9,201003,2010),('2010-03-02',201009,3,2010,2,9,201003,2010),('2010-03-03',201009,3,2010,3,9,201003,2010),('2010-03-04',201009,3,2010,4,9,201003,2010),('2010-03-05',201009,3,2010,5,9,201003,2010),('2010-03-06',201009,3,2010,6,9,201003,2010),('2010-03-07',201010,3,2010,7,10,201003,2010),('2010-03-08',201010,3,2010,8,10,201003,2010),('2010-03-09',201010,3,2010,9,10,201003,2010),('2010-03-10',201010,3,2010,10,10,201003,2010),('2010-03-11',201010,3,2010,11,10,201003,2010),('2010-03-12',201010,3,2010,12,10,201003,2010),('2010-03-13',201010,3,2010,13,10,201003,2010),('2010-03-14',201011,3,2010,14,11,201003,2010),('2010-03-15',201011,3,2010,15,11,201003,2010),('2010-03-16',201011,3,2010,16,11,201003,2010),('2010-03-17',201011,3,2010,17,11,201003,2010),('2010-03-18',201011,3,2010,18,11,201003,2010),('2010-03-19',201011,3,2010,19,11,201003,2010),('2010-03-20',201011,3,2010,20,11,201003,2010),('2010-03-21',201012,3,2010,21,12,201003,2010),('2010-03-22',201012,3,2010,22,12,201003,2010),('2010-03-23',201012,3,2010,23,12,201003,2010),('2010-03-24',201012,3,2010,24,12,201003,2010),('2010-03-25',201012,3,2010,25,12,201003,2010),('2010-03-26',201012,3,2010,26,12,201003,2010),('2010-03-27',201012,3,2010,27,12,201003,2010),('2010-03-28',201013,3,2010,28,13,201003,2010),('2010-03-29',201013,3,2010,29,13,201003,2010),('2010-03-30',201013,3,2010,30,13,201003,2010),('2010-03-31',201013,3,2010,31,13,201003,2010),('2010-04-01',201013,4,2010,1,13,201004,2010),('2010-04-02',201013,4,2010,2,13,201004,2010),('2010-04-03',201013,4,2010,3,13,201004,2010),('2010-04-04',201014,4,2010,4,14,201004,2010),('2010-04-05',201014,4,2010,5,14,201004,2010),('2010-04-06',201014,4,2010,6,14,201004,2010),('2010-04-07',201014,4,2010,7,14,201004,2010),('2010-04-08',201014,4,2010,8,14,201004,2010),('2010-04-09',201014,4,2010,9,14,201004,2010),('2010-04-10',201014,4,2010,10,14,201004,2010),('2010-04-11',201015,4,2010,11,15,201004,2010),('2010-04-12',201015,4,2010,12,15,201004,2010),('2010-04-13',201015,4,2010,13,15,201004,2010),('2010-04-14',201015,4,2010,14,15,201004,2010),('2010-04-15',201015,4,2010,15,15,201004,2010),('2010-04-16',201015,4,2010,16,15,201004,2010),('2010-04-17',201015,4,2010,17,15,201004,2010),('2010-04-18',201016,4,2010,18,16,201004,2010),('2010-04-19',201016,4,2010,19,16,201004,2010),('2010-04-20',201016,4,2010,20,16,201004,2010),('2010-04-21',201016,4,2010,21,16,201004,2010),('2010-04-22',201016,4,2010,22,16,201004,2010),('2010-04-23',201016,4,2010,23,16,201004,2010),('2010-04-24',201016,4,2010,24,16,201004,2010),('2010-04-25',201017,4,2010,25,17,201004,2010),('2010-04-26',201017,4,2010,26,17,201004,2010),('2010-04-27',201017,4,2010,27,17,201004,2010),('2010-04-28',201017,4,2010,28,17,201004,2010),('2010-04-29',201017,4,2010,29,17,201004,2010),('2010-04-30',201017,4,2010,30,17,201004,2010),('2010-05-01',201017,5,2010,1,17,201005,2010),('2010-05-02',201018,5,2010,2,18,201005,2010),('2010-05-03',201018,5,2010,3,18,201005,2010),('2010-05-04',201018,5,2010,4,18,201005,2010),('2010-05-05',201018,5,2010,5,18,201005,2010),('2010-05-06',201018,5,2010,6,18,201005,2010),('2010-05-07',201018,5,2010,7,18,201005,2010),('2010-05-08',201018,5,2010,8,18,201005,2010),('2010-05-09',201019,5,2010,9,19,201005,2010),('2010-05-10',201019,5,2010,10,19,201005,2010),('2010-05-11',201019,5,2010,11,19,201005,2010),('2010-05-12',201019,5,2010,12,19,201005,2010),('2010-05-13',201019,5,2010,13,19,201005,2010),('2010-05-14',201019,5,2010,14,19,201005,2010),('2010-05-15',201019,5,2010,15,19,201005,2010),('2010-05-16',201020,5,2010,16,20,201005,2010),('2010-05-17',201020,5,2010,17,20,201005,2010),('2010-05-18',201020,5,2010,18,20,201005,2010),('2010-05-19',201020,5,2010,19,20,201005,2010),('2010-05-20',201020,5,2010,20,20,201005,2010),('2010-05-21',201020,5,2010,21,20,201005,2010),('2010-05-22',201020,5,2010,22,20,201005,2010),('2010-05-23',201021,5,2010,23,21,201005,2010),('2010-05-24',201021,5,2010,24,21,201005,2010),('2010-05-25',201021,5,2010,25,21,201005,2010),('2010-05-26',201021,5,2010,26,21,201005,2010),('2010-05-27',201021,5,2010,27,21,201005,2010),('2010-05-28',201021,5,2010,28,21,201005,2010),('2010-05-29',201021,5,2010,29,21,201005,2010),('2010-05-30',201022,5,2010,30,22,201005,2010),('2010-05-31',201022,5,2010,31,22,201005,2010),('2010-06-01',201022,6,2010,1,22,201006,2010),('2010-06-02',201022,6,2010,2,22,201006,2010),('2010-06-03',201022,6,2010,3,22,201006,2010),('2010-06-04',201022,6,2010,4,22,201006,2010),('2010-06-05',201022,6,2010,5,22,201006,2010),('2010-06-06',201023,6,2010,6,23,201006,2010),('2010-06-07',201023,6,2010,7,23,201006,2010),('2010-06-08',201023,6,2010,8,23,201006,2010),('2010-06-09',201023,6,2010,9,23,201006,2010),('2010-06-10',201023,6,2010,10,23,201006,2010),('2010-06-11',201023,6,2010,11,23,201006,2010),('2010-06-12',201023,6,2010,12,23,201006,2010),('2010-06-13',201024,6,2010,13,24,201006,2010),('2010-06-14',201024,6,2010,14,24,201006,2010),('2010-06-15',201024,6,2010,15,24,201006,2010),('2010-06-16',201024,6,2010,16,24,201006,2010),('2010-06-17',201024,6,2010,17,24,201006,2010),('2010-06-18',201024,6,2010,18,24,201006,2010),('2010-06-19',201024,6,2010,19,24,201006,2010),('2010-06-20',201025,6,2010,20,25,201006,2010),('2010-06-21',201025,6,2010,21,25,201006,2010),('2010-06-22',201025,6,2010,22,25,201006,2010),('2010-06-23',201025,6,2010,23,25,201006,2010),('2010-06-24',201025,6,2010,24,25,201006,2010),('2010-06-25',201025,6,2010,25,25,201006,2010),('2010-06-26',201025,6,2010,26,25,201006,2010),('2010-06-27',201026,6,2010,27,26,201006,2010),('2010-06-28',201026,6,2010,28,26,201006,2010),('2010-06-29',201026,6,2010,29,26,201006,2010),('2010-06-30',201026,6,2010,30,26,201006,2010),('2010-07-01',201026,7,2010,1,26,201007,2010),('2010-07-02',201026,7,2010,2,26,201007,2010),('2010-07-03',201026,7,2010,3,26,201007,2010),('2010-07-04',201027,7,2010,4,27,201007,2010),('2010-07-05',201027,7,2010,5,27,201007,2010),('2010-07-06',201027,7,2010,6,27,201007,2010),('2010-07-07',201027,7,2010,7,27,201007,2010),('2010-07-08',201027,7,2010,8,27,201007,2010),('2010-07-09',201027,7,2010,9,27,201007,2010),('2010-07-10',201027,7,2010,10,27,201007,2010),('2010-07-11',201028,7,2010,11,28,201007,2010),('2010-07-12',201028,7,2010,12,28,201007,2010),('2010-07-13',201028,7,2010,13,28,201007,2010),('2010-07-14',201028,7,2010,14,28,201007,2010),('2010-07-15',201028,7,2010,15,28,201007,2010),('2010-07-16',201028,7,2010,16,28,201007,2010),('2010-07-17',201028,7,2010,17,28,201007,2010),('2010-07-18',201029,7,2010,18,29,201007,2010),('2010-07-19',201029,7,2010,19,29,201007,2010),('2010-07-20',201029,7,2010,20,29,201007,2010),('2010-07-21',201029,7,2010,21,29,201007,2010),('2010-07-22',201029,7,2010,22,29,201007,2010),('2010-07-23',201029,7,2010,23,29,201007,2010),('2010-07-24',201029,7,2010,24,29,201007,2010),('2010-07-25',201030,7,2010,25,30,201007,2010),('2010-07-26',201030,7,2010,26,30,201007,2010),('2010-07-27',201030,7,2010,27,30,201007,2010),('2010-07-28',201030,7,2010,28,30,201007,2010),('2010-07-29',201030,7,2010,29,30,201007,2010),('2010-07-30',201030,7,2010,30,30,201007,2010),('2010-07-31',201030,7,2010,31,30,201007,2010),('2010-08-01',201031,8,2010,1,31,201008,2010),('2010-08-02',201031,8,2010,2,31,201008,2010),('2010-08-03',201031,8,2010,3,31,201008,2010),('2010-08-04',201031,8,2010,4,31,201008,2010),('2010-08-05',201031,8,2010,5,31,201008,2010),('2010-08-06',201031,8,2010,6,31,201008,2010),('2010-08-07',201031,8,2010,7,31,201008,2010),('2010-08-08',201032,8,2010,8,32,201008,2010),('2010-08-09',201032,8,2010,9,32,201008,2010),('2010-08-10',201032,8,2010,10,32,201008,2010),('2010-08-11',201032,8,2010,11,32,201008,2010),('2010-08-12',201032,8,2010,12,32,201008,2010),('2010-08-13',201032,8,2010,13,32,201008,2010),('2010-08-14',201032,8,2010,14,32,201008,2010),('2010-08-15',201033,8,2010,15,33,201008,2010),('2010-08-16',201033,8,2010,16,33,201008,2010),('2010-08-17',201033,8,2010,17,33,201008,2010),('2010-08-18',201033,8,2010,18,33,201008,2010),('2010-08-19',201033,8,2010,19,33,201008,2010),('2010-08-20',201033,8,2010,20,33,201008,2010),('2010-08-21',201033,8,2010,21,33,201008,2010),('2010-08-22',201034,8,2010,22,34,201008,2010),('2010-08-23',201034,8,2010,23,34,201008,2010),('2010-08-24',201034,8,2010,24,34,201008,2010),('2010-08-25',201034,8,2010,25,34,201008,2010),('2010-08-26',201034,8,2010,26,34,201008,2010),('2010-08-27',201034,8,2010,27,34,201008,2010),('2010-08-28',201034,8,2010,28,34,201008,2010),('2010-08-29',201035,8,2010,29,35,201008,2010),('2010-08-30',201035,8,2010,30,35,201008,2010),('2010-08-31',201035,8,2010,31,35,201008,2010),('2010-09-01',201035,9,2010,1,35,201009,2010),('2010-09-02',201035,9,2010,2,35,201009,2010),('2010-09-03',201035,9,2010,3,35,201009,2010),('2010-09-04',201035,9,2010,4,35,201009,2010),('2010-09-05',201036,9,2010,5,36,201009,2010),('2010-09-06',201036,9,2010,6,36,201009,2010),('2010-09-07',201036,9,2010,7,36,201009,2010),('2010-09-08',201036,9,2010,8,36,201009,2010),('2010-09-09',201036,9,2010,9,36,201009,2010),('2010-09-10',201036,9,2010,10,36,201009,2010),('2010-09-11',201036,9,2010,11,36,201009,2010),('2010-09-12',201037,9,2010,12,37,201009,2010),('2010-09-13',201037,9,2010,13,37,201009,2010),('2010-09-14',201037,9,2010,14,37,201009,2010),('2010-09-15',201037,9,2010,15,37,201009,2010),('2010-09-16',201037,9,2010,16,37,201009,2010),('2010-09-17',201037,9,2010,17,37,201009,2010),('2010-09-18',201037,9,2010,18,37,201009,2010),('2010-09-19',201038,9,2010,19,38,201009,2010),('2010-09-20',201038,9,2010,20,38,201009,2010),('2010-09-21',201038,9,2010,21,38,201009,2010),('2010-09-22',201038,9,2010,22,38,201009,2010),('2010-09-23',201038,9,2010,23,38,201009,2010),('2010-09-24',201038,9,2010,24,38,201009,2010),('2010-09-25',201038,9,2010,25,38,201009,2010),('2010-09-26',201039,9,2010,26,39,201009,2010),('2010-09-27',201039,9,2010,27,39,201009,2010),('2010-09-28',201039,9,2010,28,39,201009,2010),('2010-09-29',201039,9,2010,29,39,201009,2010),('2010-09-30',201039,9,2010,30,39,201009,2010),('2010-10-01',201039,10,2010,1,39,201010,2010),('2010-10-02',201039,10,2010,2,39,201010,2010),('2010-10-03',201040,10,2010,3,40,201010,2010),('2010-10-04',201040,10,2010,4,40,201010,2010),('2010-10-05',201040,10,2010,5,40,201010,2010),('2010-10-06',201040,10,2010,6,40,201010,2010),('2010-10-07',201040,10,2010,7,40,201010,2010),('2010-10-08',201040,10,2010,8,40,201010,2010),('2010-10-09',201040,10,2010,9,40,201010,2010),('2010-10-10',201041,10,2010,10,41,201010,2010),('2010-10-11',201041,10,2010,11,41,201010,2010),('2010-10-12',201041,10,2010,12,41,201010,2010),('2010-10-13',201041,10,2010,13,41,201010,2010),('2010-10-14',201041,10,2010,14,41,201010,2010),('2010-10-15',201041,10,2010,15,41,201010,2010),('2010-10-16',201041,10,2010,16,41,201010,2010),('2010-10-17',201042,10,2010,17,42,201010,2010),('2010-10-18',201042,10,2010,18,42,201010,2010),('2010-10-19',201042,10,2010,19,42,201010,2010),('2010-10-20',201042,10,2010,20,42,201010,2010),('2010-10-21',201042,10,2010,21,42,201010,2010),('2010-10-22',201042,10,2010,22,42,201010,2010),('2010-10-23',201042,10,2010,23,42,201010,2010),('2010-10-24',201043,10,2010,24,43,201010,2010),('2010-10-25',201043,10,2010,25,43,201010,2010),('2010-10-26',201043,10,2010,26,43,201010,2010),('2010-10-27',201043,10,2010,27,43,201010,2010),('2010-10-28',201043,10,2010,28,43,201010,2010),('2010-10-29',201043,10,2010,29,43,201010,2010),('2010-10-30',201043,10,2010,30,43,201010,2010),('2010-10-31',201044,10,2010,31,44,201010,2010),('2010-11-01',201044,11,2010,1,44,201011,2010),('2010-11-02',201044,11,2010,2,44,201011,2010),('2010-11-03',201044,11,2010,3,44,201011,2010),('2010-11-04',201044,11,2010,4,44,201011,2010),('2010-11-05',201044,11,2010,5,44,201011,2010),('2010-11-06',201044,11,2010,6,44,201011,2010),('2010-11-07',201045,11,2010,7,45,201011,2010),('2010-11-08',201045,11,2010,8,45,201011,2010),('2010-11-09',201045,11,2010,9,45,201011,2010),('2010-11-10',201045,11,2010,10,45,201011,2010),('2010-11-11',201045,11,2010,11,45,201011,2010),('2010-11-12',201045,11,2010,12,45,201011,2010),('2010-11-13',201045,11,2010,13,45,201011,2010),('2010-11-14',201046,11,2010,14,46,201011,2010),('2010-11-15',201046,11,2010,15,46,201011,2010),('2010-11-16',201046,11,2010,16,46,201011,2010),('2010-11-17',201046,11,2010,17,46,201011,2010),('2010-11-18',201046,11,2010,18,46,201011,2010),('2010-11-19',201046,11,2010,19,46,201011,2010),('2010-11-20',201046,11,2010,20,46,201011,2010),('2010-11-21',201047,11,2010,21,47,201011,2010),('2010-11-22',201047,11,2010,22,47,201011,2010),('2010-11-23',201047,11,2010,23,47,201011,2010),('2010-11-24',201047,11,2010,24,47,201011,2010),('2010-11-25',201047,11,2010,25,47,201011,2010),('2010-11-26',201047,11,2010,26,47,201011,2010),('2010-11-27',201047,11,2010,27,47,201011,2010),('2010-11-28',201048,11,2010,28,48,201011,2010),('2010-11-29',201048,11,2010,29,48,201011,2010),('2010-11-30',201048,11,2010,30,48,201011,2010),('2010-12-01',201048,12,2010,1,48,201012,2011),('2010-12-02',201048,12,2010,2,48,201012,2011),('2010-12-03',201048,12,2010,3,48,201012,2011),('2010-12-04',201048,12,2010,4,48,201012,2011),('2010-12-05',201049,12,2010,5,49,201012,2011),('2010-12-06',201049,12,2010,6,49,201012,2011),('2010-12-07',201049,12,2010,7,49,201012,2011),('2010-12-08',201049,12,2010,8,49,201012,2011),('2010-12-09',201049,12,2010,9,49,201012,2011),('2010-12-10',201049,12,2010,10,49,201012,2011),('2010-12-11',201049,12,2010,11,49,201012,2011),('2010-12-12',201050,12,2010,12,50,201012,2011),('2010-12-13',201050,12,2010,13,50,201012,2011),('2010-12-14',201050,12,2010,14,50,201012,2011),('2010-12-15',201050,12,2010,15,50,201012,2011),('2010-12-16',201050,12,2010,16,50,201012,2011),('2010-12-17',201050,12,2010,17,50,201012,2011),('2010-12-18',201050,12,2010,18,50,201012,2011),('2010-12-19',201051,12,2010,19,51,201012,2011),('2010-12-20',201051,12,2010,20,51,201012,2011),('2010-12-21',201051,12,2010,21,51,201012,2011),('2010-12-22',201051,12,2010,22,51,201012,2011),('2010-12-23',201051,12,2010,23,51,201012,2011),('2010-12-24',201051,12,2010,24,51,201012,2011),('2010-12-25',201051,12,2010,25,51,201012,2011),('2010-12-26',201052,12,2010,26,52,201012,2011),('2010-12-27',201052,12,2010,27,52,201012,2011),('2010-12-28',201052,12,2010,28,52,201012,2011),('2010-12-29',201052,12,2010,29,52,201012,2011),('2010-12-30',201052,12,2010,30,52,201012,2011),('2010-12-31',201052,12,2010,31,52,201012,2011),('2011-01-01',201052,1,2011,1,52,201101,2011),('2011-01-02',201053,1,2011,2,1,201101,2011),('2011-01-03',201101,1,2011,3,1,201101,2011),('2011-01-04',201101,1,2011,4,1,201101,2011),('2011-01-05',201101,1,2011,5,1,201101,2011),('2011-01-06',201101,1,2011,6,1,201101,2011),('2011-01-07',201101,1,2011,7,1,201101,2011),('2011-01-08',201101,1,2011,8,1,201101,2011),('2011-01-09',201102,1,2011,9,2,201101,2011),('2011-01-10',201102,1,2011,10,2,201101,2011),('2011-01-11',201102,1,2011,11,2,201101,2011),('2011-01-12',201102,1,2011,12,2,201101,2011),('2011-01-13',201102,1,2011,13,2,201101,2011),('2011-01-14',201102,1,2011,14,2,201101,2011),('2011-01-15',201102,1,2011,15,2,201101,2011),('2011-01-16',201103,1,2011,16,3,201101,2011),('2011-01-17',201103,1,2011,17,3,201101,2011),('2011-01-18',201103,1,2011,18,3,201101,2011),('2011-01-19',201103,1,2011,19,3,201101,2011),('2011-01-20',201103,1,2011,20,3,201101,2011),('2011-01-21',201103,1,2011,21,3,201101,2011),('2011-01-22',201103,1,2011,22,3,201101,2011),('2011-01-23',201104,1,2011,23,4,201101,2011),('2011-01-24',201104,1,2011,24,4,201101,2011),('2011-01-25',201104,1,2011,25,4,201101,2011),('2011-01-26',201104,1,2011,26,4,201101,2011),('2011-01-27',201104,1,2011,27,4,201101,2011),('2011-01-28',201104,1,2011,28,4,201101,2011),('2011-01-29',201104,1,2011,29,4,201101,2011),('2011-01-30',201105,1,2011,30,5,201101,2011),('2011-01-31',201105,1,2011,31,5,201101,2011),('2011-02-01',201105,2,2011,1,5,201102,2011),('2011-02-02',201105,2,2011,2,5,201102,2011),('2011-02-03',201105,2,2011,3,5,201102,2011),('2011-02-04',201105,2,2011,4,5,201102,2011),('2011-02-05',201105,2,2011,5,5,201102,2011),('2011-02-06',201106,2,2011,6,6,201102,2011),('2011-02-07',201106,2,2011,7,6,201102,2011),('2011-02-08',201106,2,2011,8,6,201102,2011),('2011-02-09',201106,2,2011,9,6,201102,2011),('2011-02-10',201106,2,2011,10,6,201102,2011),('2011-02-11',201106,2,2011,11,6,201102,2011),('2011-02-12',201106,2,2011,12,6,201102,2011),('2011-02-13',201107,2,2011,13,7,201102,2011),('2011-02-14',201107,2,2011,14,7,201102,2011),('2011-02-15',201107,2,2011,15,7,201102,2011),('2011-02-16',201107,2,2011,16,7,201102,2011),('2011-02-17',201107,2,2011,17,7,201102,2011),('2011-02-18',201107,2,2011,18,7,201102,2011),('2011-02-19',201107,2,2011,19,7,201102,2011),('2011-02-20',201108,2,2011,20,8,201102,2011),('2011-02-21',201108,2,2011,21,8,201102,2011),('2011-02-22',201108,2,2011,22,8,201102,2011),('2011-02-23',201108,2,2011,23,8,201102,2011),('2011-02-24',201108,2,2011,24,8,201102,2011),('2011-02-25',201108,2,2011,25,8,201102,2011),('2011-02-26',201108,2,2011,26,8,201102,2011),('2011-02-27',201109,2,2011,27,9,201102,2011),('2011-02-28',201109,2,2011,28,9,201102,2011),('2011-03-01',201109,3,2011,1,9,201103,2011),('2011-03-02',201109,3,2011,2,9,201103,2011),('2011-03-03',201109,3,2011,3,9,201103,2011),('2011-03-04',201109,3,2011,4,9,201103,2011),('2011-03-05',201109,3,2011,5,9,201103,2011),('2011-03-06',201110,3,2011,6,10,201103,2011),('2011-03-07',201110,3,2011,7,10,201103,2011),('2011-03-08',201110,3,2011,8,10,201103,2011),('2011-03-09',201110,3,2011,9,10,201103,2011),('2011-03-10',201110,3,2011,10,10,201103,2011),('2011-03-11',201110,3,2011,11,10,201103,2011),('2011-03-12',201110,3,2011,12,10,201103,2011),('2011-03-13',201111,3,2011,13,11,201103,2011),('2011-03-14',201111,3,2011,14,11,201103,2011),('2011-03-15',201111,3,2011,15,11,201103,2011),('2011-03-16',201111,3,2011,16,11,201103,2011),('2011-03-17',201111,3,2011,17,11,201103,2011),('2011-03-18',201111,3,2011,18,11,201103,2011),('2011-03-19',201111,3,2011,19,11,201103,2011),('2011-03-20',201112,3,2011,20,12,201103,2011),('2011-03-21',201112,3,2011,21,12,201103,2011),('2011-03-22',201112,3,2011,22,12,201103,2011),('2011-03-23',201112,3,2011,23,12,201103,2011),('2011-03-24',201112,3,2011,24,12,201103,2011),('2011-03-25',201112,3,2011,25,12,201103,2011),('2011-03-26',201112,3,2011,26,12,201103,2011),('2011-03-27',201113,3,2011,27,13,201103,2011),('2011-03-28',201113,3,2011,28,13,201103,2011),('2011-03-29',201113,3,2011,29,13,201103,2011),('2011-03-30',201113,3,2011,30,13,201103,2011),('2011-03-31',201113,3,2011,31,13,201103,2011),('2011-04-01',201113,4,2011,1,13,201104,2011),('2011-04-02',201113,4,2011,2,13,201104,2011),('2011-04-03',201114,4,2011,3,14,201104,2011),('2011-04-04',201114,4,2011,4,14,201104,2011),('2011-04-05',201114,4,2011,5,14,201104,2011),('2011-04-06',201114,4,2011,6,14,201104,2011),('2011-04-07',201114,4,2011,7,14,201104,2011),('2011-04-08',201114,4,2011,8,14,201104,2011),('2011-04-09',201114,4,2011,9,14,201104,2011),('2011-04-10',201115,4,2011,10,15,201104,2011),('2011-04-11',201115,4,2011,11,15,201104,2011),('2011-04-12',201115,4,2011,12,15,201104,2011),('2011-04-13',201115,4,2011,13,15,201104,2011),('2011-04-14',201115,4,2011,14,15,201104,2011),('2011-04-15',201115,4,2011,15,15,201104,2011),('2011-04-16',201115,4,2011,16,15,201104,2011),('2011-04-17',201116,4,2011,17,16,201104,2011),('2011-04-18',201116,4,2011,18,16,201104,2011),('2011-04-19',201116,4,2011,19,16,201104,2011),('2011-04-20',201116,4,2011,20,16,201104,2011),('2011-04-21',201116,4,2011,21,16,201104,2011),('2011-04-22',201116,4,2011,22,16,201104,2011),('2011-04-23',201116,4,2011,23,16,201104,2011),('2011-04-24',201117,4,2011,24,17,201104,2011),('2011-04-25',201117,4,2011,25,17,201104,2011),('2011-04-26',201117,4,2011,26,17,201104,2011),('2011-04-27',201117,4,2011,27,17,201104,2011),('2011-04-28',201117,4,2011,28,17,201104,2011),('2011-04-29',201117,4,2011,29,17,201104,2011),('2011-04-30',201117,4,2011,30,17,201104,2011),('2011-05-01',201118,5,2011,1,18,201105,2011),('2011-05-02',201118,5,2011,2,18,201105,2011),('2011-05-03',201118,5,2011,3,18,201105,2011),('2011-05-04',201118,5,2011,4,18,201105,2011),('2011-05-05',201118,5,2011,5,18,201105,2011),('2011-05-06',201118,5,2011,6,18,201105,2011),('2011-05-07',201118,5,2011,7,18,201105,2011),('2011-05-08',201119,5,2011,8,19,201105,2011),('2011-05-09',201119,5,2011,9,19,201105,2011),('2011-05-10',201119,5,2011,10,19,201105,2011),('2011-05-11',201119,5,2011,11,19,201105,2011),('2011-05-12',201119,5,2011,12,19,201105,2011),('2011-05-13',201119,5,2011,13,19,201105,2011),('2011-05-14',201119,5,2011,14,19,201105,2011),('2011-05-15',201120,5,2011,15,20,201105,2011),('2011-05-16',201120,5,2011,16,20,201105,2011),('2011-05-17',201120,5,2011,17,20,201105,2011),('2011-05-18',201120,5,2011,18,20,201105,2011),('2011-05-19',201120,5,2011,19,20,201105,2011),('2011-05-20',201120,5,2011,20,20,201105,2011),('2011-05-21',201120,5,2011,21,20,201105,2011),('2011-05-22',201121,5,2011,22,21,201105,2011),('2011-05-23',201121,5,2011,23,21,201105,2011),('2011-05-24',201121,5,2011,24,21,201105,2011),('2011-05-25',201121,5,2011,25,21,201105,2011),('2011-05-26',201121,5,2011,26,21,201105,2011),('2011-05-27',201121,5,2011,27,21,201105,2011),('2011-05-28',201121,5,2011,28,21,201105,2011),('2011-05-29',201122,5,2011,29,22,201105,2011),('2011-05-30',201122,5,2011,30,22,201105,2011),('2011-05-31',201122,5,2011,31,22,201105,2011),('2011-06-01',201122,6,2011,1,22,201106,2011),('2011-06-02',201122,6,2011,2,22,201106,2011),('2011-06-03',201122,6,2011,3,22,201106,2011),('2011-06-04',201122,6,2011,4,22,201106,2011),('2011-06-05',201123,6,2011,5,23,201106,2011),('2011-06-06',201123,6,2011,6,23,201106,2011),('2011-06-07',201123,6,2011,7,23,201106,2011),('2011-06-08',201123,6,2011,8,23,201106,2011),('2011-06-09',201123,6,2011,9,23,201106,2011),('2011-06-10',201123,6,2011,10,23,201106,2011),('2011-06-11',201123,6,2011,11,23,201106,2011),('2011-06-12',201124,6,2011,12,24,201106,2011),('2011-06-13',201124,6,2011,13,24,201106,2011),('2011-06-14',201124,6,2011,14,24,201106,2011),('2011-06-15',201124,6,2011,15,24,201106,2011),('2011-06-16',201124,6,2011,16,24,201106,2011),('2011-06-17',201124,6,2011,17,24,201106,2011),('2011-06-18',201124,6,2011,18,24,201106,2011),('2011-06-19',201125,6,2011,19,25,201106,2011),('2011-06-20',201125,6,2011,20,25,201106,2011),('2011-06-21',201125,6,2011,21,25,201106,2011),('2011-06-22',201125,6,2011,22,25,201106,2011),('2011-06-23',201125,6,2011,23,25,201106,2011),('2011-06-24',201125,6,2011,24,25,201106,2011),('2011-06-25',201125,6,2011,25,25,201106,2011),('2011-06-26',201126,6,2011,26,26,201106,2011),('2011-06-27',201126,6,2011,27,26,201106,2011),('2011-06-28',201126,6,2011,28,26,201106,2011),('2011-06-29',201126,6,2011,29,26,201106,2011),('2011-06-30',201126,6,2011,30,26,201106,2011),('2011-07-01',201126,7,2011,1,26,201107,2011),('2011-07-02',201126,7,2011,2,26,201107,2011),('2011-07-03',201127,7,2011,3,27,201107,2011),('2011-07-04',201127,7,2011,4,27,201107,2011),('2011-07-05',201127,7,2011,5,27,201107,2011),('2011-07-06',201127,7,2011,6,27,201107,2011),('2011-07-07',201127,7,2011,7,27,201107,2011),('2011-07-08',201127,7,2011,8,27,201107,2011),('2011-07-09',201127,7,2011,9,27,201107,2011),('2011-07-10',201128,7,2011,10,28,201107,2011),('2011-07-11',201128,7,2011,11,28,201107,2011),('2011-07-12',201128,7,2011,12,28,201107,2011),('2011-07-13',201128,7,2011,13,28,201107,2011),('2011-07-14',201128,7,2011,14,28,201107,2011),('2011-07-15',201128,7,2011,15,28,201107,2011),('2011-07-16',201128,7,2011,16,28,201107,2011),('2011-07-17',201129,7,2011,17,29,201107,2011),('2011-07-18',201129,7,2011,18,29,201107,2011),('2011-07-19',201129,7,2011,19,29,201107,2011),('2011-07-20',201129,7,2011,20,29,201107,2011),('2011-07-21',201129,7,2011,21,29,201107,2011),('2011-07-22',201129,7,2011,22,29,201107,2011),('2011-07-23',201129,7,2011,23,29,201107,2011),('2011-07-24',201130,7,2011,24,30,201107,2011),('2011-07-25',201130,7,2011,25,30,201107,2011),('2011-07-26',201130,7,2011,26,30,201107,2011),('2011-07-27',201130,7,2011,27,30,201107,2011),('2011-07-28',201130,7,2011,28,30,201107,2011),('2011-07-29',201130,7,2011,29,30,201107,2011),('2011-07-30',201130,7,2011,30,30,201107,2011),('2011-07-31',201131,7,2011,31,31,201107,2011),('2011-08-01',201131,8,2011,1,31,201108,2011),('2011-08-02',201131,8,2011,2,31,201108,2011),('2011-08-03',201131,8,2011,3,31,201108,2011),('2011-08-04',201131,8,2011,4,31,201108,2011),('2011-08-05',201131,8,2011,5,31,201108,2011),('2011-08-06',201131,8,2011,6,31,201108,2011),('2011-08-07',201132,8,2011,7,32,201108,2011),('2011-08-08',201132,8,2011,8,32,201108,2011),('2011-08-09',201132,8,2011,9,32,201108,2011),('2011-08-10',201132,8,2011,10,32,201108,2011),('2011-08-11',201132,8,2011,11,32,201108,2011),('2011-08-12',201132,8,2011,12,32,201108,2011),('2011-08-13',201132,8,2011,13,32,201108,2011),('2011-08-14',201133,8,2011,14,33,201108,2011),('2011-08-15',201133,8,2011,15,33,201108,2011),('2011-08-16',201133,8,2011,16,33,201108,2011),('2011-08-17',201133,8,2011,17,33,201108,2011),('2011-08-18',201133,8,2011,18,33,201108,2011),('2011-08-19',201133,8,2011,19,33,201108,2011),('2011-08-20',201133,8,2011,20,33,201108,2011),('2011-08-21',201134,8,2011,21,34,201108,2011),('2011-08-22',201134,8,2011,22,34,201108,2011),('2011-08-23',201134,8,2011,23,34,201108,2011),('2011-08-24',201134,8,2011,24,34,201108,2011),('2011-08-25',201134,8,2011,25,34,201108,2011),('2011-08-26',201134,8,2011,26,34,201108,2011),('2011-08-27',201134,8,2011,27,34,201108,2011),('2011-08-28',201135,8,2011,28,35,201108,2011),('2011-08-29',201135,8,2011,29,35,201108,2011),('2011-08-30',201135,8,2011,30,35,201108,2011),('2011-08-31',201135,8,2011,31,35,201108,2011),('2011-09-01',201135,9,2011,1,35,201109,2011),('2011-09-02',201135,9,2011,2,35,201109,2011),('2011-09-03',201135,9,2011,3,35,201109,2011),('2011-09-04',201136,9,2011,4,36,201109,2011),('2011-09-05',201136,9,2011,5,36,201109,2011),('2011-09-06',201136,9,2011,6,36,201109,2011),('2011-09-07',201136,9,2011,7,36,201109,2011),('2011-09-08',201136,9,2011,8,36,201109,2011),('2011-09-09',201136,9,2011,9,36,201109,2011),('2011-09-10',201136,9,2011,10,36,201109,2011),('2011-09-11',201137,9,2011,11,37,201109,2011),('2011-09-12',201137,9,2011,12,37,201109,2011),('2011-09-13',201137,9,2011,13,37,201109,2011),('2011-09-14',201137,9,2011,14,37,201109,2011),('2011-09-15',201137,9,2011,15,37,201109,2011),('2011-09-16',201137,9,2011,16,37,201109,2011),('2011-09-17',201137,9,2011,17,37,201109,2011),('2011-09-18',201138,9,2011,18,38,201109,2011),('2011-09-19',201138,9,2011,19,38,201109,2011),('2011-09-20',201138,9,2011,20,38,201109,2011),('2011-09-21',201138,9,2011,21,38,201109,2011),('2011-09-22',201138,9,2011,22,38,201109,2011),('2011-09-23',201138,9,2011,23,38,201109,2011),('2011-09-24',201138,9,2011,24,38,201109,2011),('2011-09-25',201139,9,2011,25,39,201109,2011),('2011-09-26',201139,9,2011,26,39,201109,2011),('2011-09-27',201139,9,2011,27,39,201109,2011),('2011-09-28',201139,9,2011,28,39,201109,2011),('2011-09-29',201139,9,2011,29,39,201109,2011),('2011-09-30',201139,9,2011,30,39,201109,2011),('2011-10-01',201139,10,2011,1,39,201110,2011),('2011-10-02',201140,10,2011,2,40,201110,2011),('2011-10-03',201140,10,2011,3,40,201110,2011),('2011-10-04',201140,10,2011,4,40,201110,2011),('2011-10-05',201140,10,2011,5,40,201110,2011),('2011-10-06',201140,10,2011,6,40,201110,2011),('2011-10-07',201140,10,2011,7,40,201110,2011),('2011-10-08',201140,10,2011,8,40,201110,2011),('2011-10-09',201141,10,2011,9,41,201110,2011),('2011-10-10',201141,10,2011,10,41,201110,2011),('2011-10-11',201141,10,2011,11,41,201110,2011),('2011-10-12',201141,10,2011,12,41,201110,2011),('2011-10-13',201141,10,2011,13,41,201110,2011),('2011-10-14',201141,10,2011,14,41,201110,2011),('2011-10-15',201141,10,2011,15,41,201110,2011),('2011-10-16',201142,10,2011,16,42,201110,2011),('2011-10-17',201142,10,2011,17,42,201110,2011),('2011-10-18',201142,10,2011,18,42,201110,2011),('2011-10-19',201142,10,2011,19,42,201110,2011),('2011-10-20',201142,10,2011,20,42,201110,2011),('2011-10-21',201142,10,2011,21,42,201110,2011),('2011-10-22',201142,10,2011,22,42,201110,2011),('2011-10-23',201143,10,2011,23,43,201110,2011),('2011-10-24',201143,10,2011,24,43,201110,2011),('2011-10-25',201143,10,2011,25,43,201110,2011),('2011-10-26',201143,10,2011,26,43,201110,2011),('2011-10-27',201143,10,2011,27,43,201110,2011),('2011-10-28',201143,10,2011,28,43,201110,2011),('2011-10-29',201143,10,2011,29,43,201110,2011),('2011-10-30',201144,10,2011,30,44,201110,2011),('2011-10-31',201144,10,2011,31,44,201110,2011),('2011-11-01',201144,11,2011,1,44,201111,2011),('2011-11-02',201144,11,2011,2,44,201111,2011),('2011-11-03',201144,11,2011,3,44,201111,2011),('2011-11-04',201144,11,2011,4,44,201111,2011),('2011-11-05',201144,11,2011,5,44,201111,2011),('2011-11-06',201145,11,2011,6,45,201111,2011),('2011-11-07',201145,11,2011,7,45,201111,2011),('2011-11-08',201145,11,2011,8,45,201111,2011),('2011-11-09',201145,11,2011,9,45,201111,2011),('2011-11-10',201145,11,2011,10,45,201111,2011),('2011-11-11',201145,11,2011,11,45,201111,2011),('2011-11-12',201145,11,2011,12,45,201111,2011),('2011-11-13',201146,11,2011,13,46,201111,2011),('2011-11-14',201146,11,2011,14,46,201111,2011),('2011-11-15',201146,11,2011,15,46,201111,2011),('2011-11-16',201146,11,2011,16,46,201111,2011),('2011-11-17',201146,11,2011,17,46,201111,2011),('2011-11-18',201146,11,2011,18,46,201111,2011),('2011-11-19',201146,11,2011,19,46,201111,2011),('2011-11-20',201147,11,2011,20,47,201111,2011),('2011-11-21',201147,11,2011,21,47,201111,2011),('2011-11-22',201147,11,2011,22,47,201111,2011),('2011-11-23',201147,11,2011,23,47,201111,2011),('2011-11-24',201147,11,2011,24,47,201111,2011),('2011-11-25',201147,11,2011,25,47,201111,2011),('2011-11-26',201147,11,2011,26,47,201111,2011),('2011-11-27',201148,11,2011,27,48,201111,2011),('2011-11-28',201148,11,2011,28,48,201111,2011),('2011-11-29',201148,11,2011,29,48,201111,2011),('2011-11-30',201148,11,2011,30,48,201111,2011),('2011-12-01',201148,12,2011,1,48,201112,2012),('2011-12-02',201148,12,2011,2,48,201112,2012),('2011-12-03',201148,12,2011,3,48,201112,2012),('2011-12-04',201149,12,2011,4,49,201112,2012),('2011-12-05',201149,12,2011,5,49,201112,2012),('2011-12-06',201149,12,2011,6,49,201112,2012),('2011-12-07',201149,12,2011,7,49,201112,2012),('2011-12-08',201149,12,2011,8,49,201112,2012),('2011-12-09',201149,12,2011,9,49,201112,2012),('2011-12-10',201149,12,2011,10,49,201112,2012),('2011-12-11',201150,12,2011,11,50,201112,2012),('2011-12-12',201150,12,2011,12,50,201112,2012),('2011-12-13',201150,12,2011,13,50,201112,2012),('2011-12-14',201150,12,2011,14,50,201112,2012),('2011-12-15',201150,12,2011,15,50,201112,2012),('2011-12-16',201150,12,2011,16,50,201112,2012),('2011-12-17',201150,12,2011,17,50,201112,2012),('2011-12-18',201151,12,2011,18,51,201112,2012),('2011-12-19',201151,12,2011,19,51,201112,2012),('2011-12-20',201151,12,2011,20,51,201112,2012),('2011-12-21',201151,12,2011,21,51,201112,2012),('2011-12-22',201151,12,2011,22,51,201112,2012),('2011-12-23',201151,12,2011,23,51,201112,2012),('2011-12-24',201151,12,2011,24,51,201112,2012),('2011-12-25',201152,12,2011,25,52,201112,2012),('2011-12-26',201152,12,2011,26,52,201112,2012),('2011-12-27',201152,12,2011,27,52,201112,2012),('2011-12-28',201152,12,2011,28,52,201112,2012),('2011-12-29',201152,12,2011,29,52,201112,2012),('2011-12-30',201152,12,2011,30,52,201112,2012),('2011-12-31',201152,12,2011,31,52,201112,2012),('2012-01-01',201153,1,2012,1,1,201201,2012),('2012-01-02',201201,1,2012,2,1,201201,2012),('2012-01-03',201201,1,2012,3,1,201201,2012),('2012-01-04',201201,1,2012,4,1,201201,2012),('2012-01-05',201201,1,2012,5,1,201201,2012),('2012-01-06',201201,1,2012,6,1,201201,2012),('2012-01-07',201201,1,2012,7,1,201201,2012),('2012-01-08',201202,1,2012,8,2,201201,2012),('2012-01-09',201202,1,2012,9,2,201201,2012),('2012-01-10',201202,1,2012,10,2,201201,2012),('2012-01-11',201202,1,2012,11,2,201201,2012),('2012-01-12',201202,1,2012,12,2,201201,2012),('2012-01-13',201202,1,2012,13,2,201201,2012),('2012-01-14',201202,1,2012,14,2,201201,2012),('2012-01-15',201203,1,2012,15,3,201201,2012),('2012-01-16',201203,1,2012,16,3,201201,2012),('2012-01-17',201203,1,2012,17,3,201201,2012),('2012-01-18',201203,1,2012,18,3,201201,2012),('2012-01-19',201203,1,2012,19,3,201201,2012),('2012-01-20',201203,1,2012,20,3,201201,2012),('2012-01-21',201203,1,2012,21,3,201201,2012),('2012-01-22',201204,1,2012,22,4,201201,2012),('2012-01-23',201204,1,2012,23,4,201201,2012),('2012-01-24',201204,1,2012,24,4,201201,2012),('2012-01-25',201204,1,2012,25,4,201201,2012),('2012-01-26',201204,1,2012,26,4,201201,2012),('2012-01-27',201204,1,2012,27,4,201201,2012),('2012-01-28',201204,1,2012,28,4,201201,2012),('2012-01-29',201205,1,2012,29,5,201201,2012),('2012-01-30',201205,1,2012,30,5,201201,2012),('2012-01-31',201205,1,2012,31,5,201201,2012),('2012-02-01',201205,2,2012,1,5,201202,2012),('2012-02-02',201205,2,2012,2,5,201202,2012),('2012-02-03',201205,2,2012,3,5,201202,2012),('2012-02-04',201205,2,2012,4,5,201202,2012),('2012-02-05',201206,2,2012,5,6,201202,2012),('2012-02-06',201206,2,2012,6,6,201202,2012),('2012-02-07',201206,2,2012,7,6,201202,2012),('2012-02-08',201206,2,2012,8,6,201202,2012),('2012-02-09',201206,2,2012,9,6,201202,2012),('2012-02-10',201206,2,2012,10,6,201202,2012),('2012-02-11',201206,2,2012,11,6,201202,2012),('2012-02-12',201207,2,2012,12,7,201202,2012),('2012-02-13',201207,2,2012,13,7,201202,2012),('2012-02-14',201207,2,2012,14,7,201202,2012),('2012-02-15',201207,2,2012,15,7,201202,2012),('2012-02-16',201207,2,2012,16,7,201202,2012),('2012-02-17',201207,2,2012,17,7,201202,2012),('2012-02-18',201207,2,2012,18,7,201202,2012),('2012-02-19',201208,2,2012,19,8,201202,2012),('2012-02-20',201208,2,2012,20,8,201202,2012),('2012-02-21',201208,2,2012,21,8,201202,2012),('2012-02-22',201208,2,2012,22,8,201202,2012),('2012-02-23',201208,2,2012,23,8,201202,2012),('2012-02-24',201208,2,2012,24,8,201202,2012),('2012-02-25',201208,2,2012,25,8,201202,2012),('2012-02-26',201209,2,2012,26,9,201202,2012),('2012-02-27',201209,2,2012,27,9,201202,2012),('2012-02-28',201209,2,2012,28,9,201202,2012),('2012-02-29',201209,2,2012,29,9,201202,2012),('2012-03-01',201209,3,2012,1,9,201203,2012),('2012-03-02',201209,3,2012,2,9,201203,2012),('2012-03-03',201209,3,2012,3,9,201203,2012),('2012-03-04',201210,3,2012,4,10,201203,2012),('2012-03-05',201210,3,2012,5,10,201203,2012),('2012-03-06',201210,3,2012,6,10,201203,2012),('2012-03-07',201210,3,2012,7,10,201203,2012),('2012-03-08',201210,3,2012,8,10,201203,2012),('2012-03-09',201210,3,2012,9,10,201203,2012),('2012-03-10',201210,3,2012,10,10,201203,2012),('2012-03-11',201211,3,2012,11,11,201203,2012),('2012-03-12',201211,3,2012,12,11,201203,2012),('2012-03-13',201211,3,2012,13,11,201203,2012),('2012-03-14',201211,3,2012,14,11,201203,2012),('2012-03-15',201211,3,2012,15,11,201203,2012),('2012-03-16',201211,3,2012,16,11,201203,2012),('2012-03-17',201211,3,2012,17,11,201203,2012),('2012-03-18',201212,3,2012,18,12,201203,2012),('2012-03-19',201212,3,2012,19,12,201203,2012),('2012-03-20',201212,3,2012,20,12,201203,2012),('2012-03-21',201212,3,2012,21,12,201203,2012),('2012-03-22',201212,3,2012,22,12,201203,2012),('2012-03-23',201212,3,2012,23,12,201203,2012),('2012-03-24',201212,3,2012,24,12,201203,2012),('2012-03-25',201213,3,2012,25,13,201203,2012),('2012-03-26',201213,3,2012,26,13,201203,2012),('2012-03-27',201213,3,2012,27,13,201203,2012),('2012-03-28',201213,3,2012,28,13,201203,2012),('2012-03-29',201213,3,2012,29,13,201203,2012),('2012-03-30',201213,3,2012,30,13,201203,2012),('2012-03-31',201213,3,2012,31,13,201203,2012),('2012-04-01',201214,4,2012,1,14,201204,2012),('2012-04-02',201214,4,2012,2,14,201204,2012),('2012-04-03',201214,4,2012,3,14,201204,2012),('2012-04-04',201214,4,2012,4,14,201204,2012),('2012-04-05',201214,4,2012,5,14,201204,2012),('2012-04-06',201214,4,2012,6,14,201204,2012),('2012-04-07',201214,4,2012,7,14,201204,2012),('2012-04-08',201215,4,2012,8,15,201204,2012),('2012-04-09',201215,4,2012,9,15,201204,2012),('2012-04-10',201215,4,2012,10,15,201204,2012),('2012-04-11',201215,4,2012,11,15,201204,2012),('2012-04-12',201215,4,2012,12,15,201204,2012),('2012-04-13',201215,4,2012,13,15,201204,2012),('2012-04-14',201215,4,2012,14,15,201204,2012),('2012-04-15',201216,4,2012,15,16,201204,2012),('2012-04-16',201216,4,2012,16,16,201204,2012),('2012-04-17',201216,4,2012,17,16,201204,2012),('2012-04-18',201216,4,2012,18,16,201204,2012),('2012-04-19',201216,4,2012,19,16,201204,2012),('2012-04-20',201216,4,2012,20,16,201204,2012),('2012-04-21',201216,4,2012,21,16,201204,2012),('2012-04-22',201217,4,2012,22,17,201204,2012),('2012-04-23',201217,4,2012,23,17,201204,2012),('2012-04-24',201217,4,2012,24,17,201204,2012),('2012-04-25',201217,4,2012,25,17,201204,2012),('2012-04-26',201217,4,2012,26,17,201204,2012),('2012-04-27',201217,4,2012,27,17,201204,2012),('2012-04-28',201217,4,2012,28,17,201204,2012),('2012-04-29',201218,4,2012,29,18,201204,2012),('2012-04-30',201218,4,2012,30,18,201204,2012),('2012-05-01',201218,5,2012,1,18,201205,2012),('2012-05-02',201218,5,2012,2,18,201205,2012),('2012-05-03',201218,5,2012,3,18,201205,2012),('2012-05-04',201218,5,2012,4,18,201205,2012),('2012-05-05',201218,5,2012,5,18,201205,2012),('2012-05-06',201219,5,2012,6,19,201205,2012),('2012-05-07',201219,5,2012,7,19,201205,2012),('2012-05-08',201219,5,2012,8,19,201205,2012),('2012-05-09',201219,5,2012,9,19,201205,2012),('2012-05-10',201219,5,2012,10,19,201205,2012),('2012-05-11',201219,5,2012,11,19,201205,2012),('2012-05-12',201219,5,2012,12,19,201205,2012),('2012-05-13',201220,5,2012,13,20,201205,2012),('2012-05-14',201220,5,2012,14,20,201205,2012),('2012-05-15',201220,5,2012,15,20,201205,2012),('2012-05-16',201220,5,2012,16,20,201205,2012),('2012-05-17',201220,5,2012,17,20,201205,2012),('2012-05-18',201220,5,2012,18,20,201205,2012),('2012-05-19',201220,5,2012,19,20,201205,2012),('2012-05-20',201221,5,2012,20,21,201205,2012),('2012-05-21',201221,5,2012,21,21,201205,2012),('2012-05-22',201221,5,2012,22,21,201205,2012),('2012-05-23',201221,5,2012,23,21,201205,2012),('2012-05-24',201221,5,2012,24,21,201205,2012),('2012-05-25',201221,5,2012,25,21,201205,2012),('2012-05-26',201221,5,2012,26,21,201205,2012),('2012-05-27',201222,5,2012,27,22,201205,2012),('2012-05-28',201222,5,2012,28,22,201205,2012),('2012-05-29',201222,5,2012,29,22,201205,2012),('2012-05-30',201222,5,2012,30,22,201205,2012),('2012-05-31',201222,5,2012,31,22,201205,2012),('2012-06-01',201222,6,2012,1,22,201206,2012),('2012-06-02',201222,6,2012,2,22,201206,2012),('2012-06-03',201223,6,2012,3,23,201206,2012),('2012-06-04',201223,6,2012,4,23,201206,2012),('2012-06-05',201223,6,2012,5,23,201206,2012),('2012-06-06',201223,6,2012,6,23,201206,2012),('2012-06-07',201223,6,2012,7,23,201206,2012),('2012-06-08',201223,6,2012,8,23,201206,2012),('2012-06-09',201223,6,2012,9,23,201206,2012),('2012-06-10',201224,6,2012,10,24,201206,2012),('2012-06-11',201224,6,2012,11,24,201206,2012),('2012-06-12',201224,6,2012,12,24,201206,2012),('2012-06-13',201224,6,2012,13,24,201206,2012),('2012-06-14',201224,6,2012,14,24,201206,2012),('2012-06-15',201224,6,2012,15,24,201206,2012),('2012-06-16',201224,6,2012,16,24,201206,2012),('2012-06-17',201225,6,2012,17,25,201206,2012),('2012-06-18',201225,6,2012,18,25,201206,2012),('2012-06-19',201225,6,2012,19,25,201206,2012),('2012-06-20',201225,6,2012,20,25,201206,2012),('2012-06-21',201225,6,2012,21,25,201206,2012),('2012-06-22',201225,6,2012,22,25,201206,2012),('2012-06-23',201225,6,2012,23,25,201206,2012),('2012-06-24',201226,6,2012,24,26,201206,2012),('2012-06-25',201226,6,2012,25,26,201206,2012),('2012-06-26',201226,6,2012,26,26,201206,2012),('2012-06-27',201226,6,2012,27,26,201206,2012),('2012-06-28',201226,6,2012,28,26,201206,2012),('2012-06-29',201226,6,2012,29,26,201206,2012),('2012-06-30',201226,6,2012,30,26,201206,2012),('2012-07-01',201227,7,2012,1,27,201207,2012),('2012-07-02',201227,7,2012,2,27,201207,2012),('2012-07-03',201227,7,2012,3,27,201207,2012),('2012-07-04',201227,7,2012,4,27,201207,2012),('2012-07-05',201227,7,2012,5,27,201207,2012),('2012-07-06',201227,7,2012,6,27,201207,2012),('2012-07-07',201227,7,2012,7,27,201207,2012),('2012-07-08',201228,7,2012,8,28,201207,2012),('2012-07-09',201228,7,2012,9,28,201207,2012),('2012-07-10',201228,7,2012,10,28,201207,2012),('2012-07-11',201228,7,2012,11,28,201207,2012),('2012-07-12',201228,7,2012,12,28,201207,2012),('2012-07-13',201228,7,2012,13,28,201207,2012),('2012-07-14',201228,7,2012,14,28,201207,2012),('2012-07-15',201229,7,2012,15,29,201207,2012),('2012-07-16',201229,7,2012,16,29,201207,2012),('2012-07-17',201229,7,2012,17,29,201207,2012),('2012-07-18',201229,7,2012,18,29,201207,2012),('2012-07-19',201229,7,2012,19,29,201207,2012),('2012-07-20',201229,7,2012,20,29,201207,2012),('2012-07-21',201229,7,2012,21,29,201207,2012),('2012-07-22',201230,7,2012,22,30,201207,2012),('2012-07-23',201230,7,2012,23,30,201207,2012),('2012-07-24',201230,7,2012,24,30,201207,2012),('2012-07-25',201230,7,2012,25,30,201207,2012),('2012-07-26',201230,7,2012,26,30,201207,2012),('2012-07-27',201230,7,2012,27,30,201207,2012),('2012-07-28',201230,7,2012,28,30,201207,2012),('2012-07-29',201231,7,2012,29,31,201207,2012),('2012-07-30',201231,7,2012,30,31,201207,2012),('2012-07-31',201231,7,2012,31,31,201207,2012),('2012-08-01',201231,8,2012,1,31,201208,2012),('2012-08-02',201231,8,2012,2,31,201208,2012),('2012-08-03',201231,8,2012,3,31,201208,2012),('2012-08-04',201231,8,2012,4,31,201208,2012),('2012-08-05',201232,8,2012,5,32,201208,2012),('2012-08-06',201232,8,2012,6,32,201208,2012),('2012-08-07',201232,8,2012,7,32,201208,2012),('2012-08-08',201232,8,2012,8,32,201208,2012),('2012-08-09',201232,8,2012,9,32,201208,2012),('2012-08-10',201232,8,2012,10,32,201208,2012),('2012-08-11',201232,8,2012,11,32,201208,2012),('2012-08-12',201233,8,2012,12,33,201208,2012),('2012-08-13',201233,8,2012,13,33,201208,2012),('2012-08-14',201233,8,2012,14,33,201208,2012),('2012-08-15',201233,8,2012,15,33,201208,2012),('2012-08-16',201233,8,2012,16,33,201208,2012),('2012-08-17',201233,8,2012,17,33,201208,2012),('2012-08-18',201233,8,2012,18,33,201208,2012),('2012-08-19',201234,8,2012,19,34,201208,2012),('2012-08-20',201234,8,2012,20,34,201208,2012),('2012-08-21',201234,8,2012,21,34,201208,2012),('2012-08-22',201234,8,2012,22,34,201208,2012),('2012-08-23',201234,8,2012,23,34,201208,2012),('2012-08-24',201234,8,2012,24,34,201208,2012),('2012-08-25',201234,8,2012,25,34,201208,2012),('2012-08-26',201235,8,2012,26,35,201208,2012),('2012-08-27',201235,8,2012,27,35,201208,2012),('2012-08-28',201235,8,2012,28,35,201208,2012),('2012-08-29',201235,8,2012,29,35,201208,2012),('2012-08-30',201235,8,2012,30,35,201208,2012),('2012-08-31',201235,8,2012,31,35,201208,2012),('2012-09-01',201235,9,2012,1,35,201209,2012),('2012-09-02',201236,9,2012,2,36,201209,2012),('2012-09-03',201236,9,2012,3,36,201209,2012),('2012-09-04',201236,9,2012,4,36,201209,2012),('2012-09-05',201236,9,2012,5,36,201209,2012),('2012-09-06',201236,9,2012,6,36,201209,2012),('2012-09-07',201236,9,2012,7,36,201209,2012),('2012-09-08',201236,9,2012,8,36,201209,2012),('2012-09-09',201237,9,2012,9,37,201209,2012),('2012-09-10',201237,9,2012,10,37,201209,2012),('2012-09-11',201237,9,2012,11,37,201209,2012),('2012-09-12',201237,9,2012,12,37,201209,2012),('2012-09-13',201237,9,2012,13,37,201209,2012),('2012-09-14',201237,9,2012,14,37,201209,2012),('2012-09-15',201237,9,2012,15,37,201209,2012),('2012-09-16',201238,9,2012,16,38,201209,2012),('2012-09-17',201238,9,2012,17,38,201209,2012),('2012-09-18',201238,9,2012,18,38,201209,2012),('2012-09-19',201238,9,2012,19,38,201209,2012),('2012-09-20',201238,9,2012,20,38,201209,2012),('2012-09-21',201238,9,2012,21,38,201209,2012),('2012-09-22',201238,9,2012,22,38,201209,2012),('2012-09-23',201239,9,2012,23,39,201209,2012),('2012-09-24',201239,9,2012,24,39,201209,2012),('2012-09-25',201239,9,2012,25,39,201209,2012),('2012-09-26',201239,9,2012,26,39,201209,2012),('2012-09-27',201239,9,2012,27,39,201209,2012),('2012-09-28',201239,9,2012,28,39,201209,2012),('2012-09-29',201239,9,2012,29,39,201209,2012),('2012-09-30',201240,9,2012,30,40,201209,2012),('2012-10-01',201240,10,2012,1,40,201210,2012),('2012-10-02',201240,10,2012,2,40,201210,2012),('2012-10-03',201240,10,2012,3,40,201210,2012),('2012-10-04',201240,10,2012,4,40,201210,2012),('2012-10-05',201240,10,2012,5,40,201210,2012),('2012-10-06',201240,10,2012,6,40,201210,2012),('2012-10-07',201241,10,2012,7,41,201210,2012),('2012-10-08',201241,10,2012,8,41,201210,2012),('2012-10-09',201241,10,2012,9,41,201210,2012),('2012-10-10',201241,10,2012,10,41,201210,2012),('2012-10-11',201241,10,2012,11,41,201210,2012),('2012-10-12',201241,10,2012,12,41,201210,2012),('2012-10-13',201241,10,2012,13,41,201210,2012),('2012-10-14',201242,10,2012,14,42,201210,2012),('2012-10-15',201242,10,2012,15,42,201210,2012),('2012-10-16',201242,10,2012,16,42,201210,2012),('2012-10-17',201242,10,2012,17,42,201210,2012),('2012-10-18',201242,10,2012,18,42,201210,2012),('2012-10-19',201242,10,2012,19,42,201210,2012),('2012-10-20',201242,10,2012,20,42,201210,2012),('2012-10-21',201243,10,2012,21,43,201210,2012),('2012-10-22',201243,10,2012,22,43,201210,2012),('2012-10-23',201243,10,2012,23,43,201210,2012),('2012-10-24',201243,10,2012,24,43,201210,2012),('2012-10-25',201243,10,2012,25,43,201210,2012),('2012-10-26',201243,10,2012,26,43,201210,2012),('2012-10-27',201243,10,2012,27,43,201210,2012),('2012-10-28',201244,10,2012,28,44,201210,2012),('2012-10-29',201244,10,2012,29,44,201210,2012),('2012-10-30',201244,10,2012,30,44,201210,2012),('2012-10-31',201244,10,2012,31,44,201210,2012),('2012-11-01',201244,11,2012,1,44,201211,2012),('2012-11-02',201244,11,2012,2,44,201211,2012),('2012-11-03',201244,11,2012,3,44,201211,2012),('2012-11-04',201245,11,2012,4,45,201211,2012),('2012-11-05',201245,11,2012,5,45,201211,2012),('2012-11-06',201245,11,2012,6,45,201211,2012),('2012-11-07',201245,11,2012,7,45,201211,2012),('2012-11-08',201245,11,2012,8,45,201211,2012),('2012-11-09',201245,11,2012,9,45,201211,2012),('2012-11-10',201245,11,2012,10,45,201211,2012),('2012-11-11',201246,11,2012,11,46,201211,2012),('2012-11-12',201246,11,2012,12,46,201211,2012),('2012-11-13',201246,11,2012,13,46,201211,2012),('2012-11-14',201246,11,2012,14,46,201211,2012),('2012-11-15',201246,11,2012,15,46,201211,2012),('2012-11-16',201246,11,2012,16,46,201211,2012),('2012-11-17',201246,11,2012,17,46,201211,2012),('2012-11-18',201247,11,2012,18,47,201211,2012),('2012-11-19',201247,11,2012,19,47,201211,2012),('2012-11-20',201247,11,2012,20,47,201211,2012),('2012-11-21',201247,11,2012,21,47,201211,2012),('2012-11-22',201247,11,2012,22,47,201211,2012),('2012-11-23',201247,11,2012,23,47,201211,2012),('2012-11-24',201247,11,2012,24,47,201211,2012),('2012-11-25',201248,11,2012,25,48,201211,2012),('2012-11-26',201248,11,2012,26,48,201211,2012),('2012-11-27',201248,11,2012,27,48,201211,2012),('2012-11-28',201248,11,2012,28,48,201211,2012),('2012-11-29',201248,11,2012,29,48,201211,2012),('2012-11-30',201248,11,2012,30,48,201211,2012),('2012-12-01',201248,12,2012,1,48,201212,2013),('2012-12-02',201249,12,2012,2,49,201212,2013),('2012-12-03',201249,12,2012,3,49,201212,2013),('2012-12-04',201249,12,2012,4,49,201212,2013),('2012-12-05',201249,12,2012,5,49,201212,2013),('2012-12-06',201249,12,2012,6,49,201212,2013),('2012-12-07',201249,12,2012,7,49,201212,2013),('2012-12-08',201249,12,2012,8,49,201212,2013),('2012-12-09',201250,12,2012,9,50,201212,2013),('2012-12-10',201250,12,2012,10,50,201212,2013),('2012-12-11',201250,12,2012,11,50,201212,2013),('2012-12-12',201250,12,2012,12,50,201212,2013),('2012-12-13',201250,12,2012,13,50,201212,2013),('2012-12-14',201250,12,2012,14,50,201212,2013),('2012-12-15',201250,12,2012,15,50,201212,2013),('2012-12-16',201251,12,2012,16,51,201212,2013),('2012-12-17',201251,12,2012,17,51,201212,2013),('2012-12-18',201251,12,2012,18,51,201212,2013),('2012-12-19',201251,12,2012,19,51,201212,2013),('2012-12-20',201251,12,2012,20,51,201212,2013),('2012-12-21',201251,12,2012,21,51,201212,2013),('2012-12-22',201251,12,2012,22,51,201212,2013),('2012-12-23',201252,12,2012,23,52,201212,2013),('2012-12-24',201252,12,2012,24,52,201212,2013),('2012-12-25',201252,12,2012,25,52,201212,2013),('2012-12-26',201252,12,2012,26,52,201212,2013),('2012-12-27',201252,12,2012,27,52,201212,2013),('2012-12-28',201252,12,2012,28,52,201212,2013),('2012-12-29',201252,12,2012,29,52,201212,2013),('2012-12-30',201301,12,2012,30,1,201212,2013),('2012-12-31',201301,12,2012,31,1,201212,2013),('2013-01-01',201301,1,2013,1,1,201301,2013),('2013-01-02',201301,1,2013,2,1,201301,2013),('2013-01-03',201301,1,2013,3,1,201301,2013),('2013-01-04',201301,1,2013,4,1,201301,2013),('2013-01-05',201301,1,2013,5,1,201301,2013),('2013-01-06',201302,1,2013,6,2,201301,2013),('2013-01-07',201302,1,2013,7,2,201301,2013),('2013-01-08',201302,1,2013,8,2,201301,2013),('2013-01-09',201302,1,2013,9,2,201301,2013),('2013-01-10',201302,1,2013,10,2,201301,2013),('2013-01-11',201302,1,2013,11,2,201301,2013),('2013-01-12',201302,1,2013,12,2,201301,2013),('2013-01-13',201303,1,2013,13,3,201301,2013),('2013-01-14',201303,1,2013,14,3,201301,2013),('2013-01-15',201303,1,2013,15,3,201301,2013),('2013-01-16',201303,1,2013,16,3,201301,2013),('2013-01-17',201303,1,2013,17,3,201301,2013),('2013-01-18',201303,1,2013,18,3,201301,2013),('2013-01-19',201303,1,2013,19,3,201301,2013),('2013-01-20',201304,1,2013,20,4,201301,2013),('2013-01-21',201304,1,2013,21,4,201301,2013),('2013-01-22',201304,1,2013,22,4,201301,2013),('2013-01-23',201304,1,2013,23,4,201301,2013),('2013-01-24',201304,1,2013,24,4,201301,2013),('2013-01-25',201304,1,2013,25,4,201301,2013),('2013-01-26',201304,1,2013,26,4,201301,2013),('2013-01-27',201305,1,2013,27,5,201301,2013),('2013-01-28',201305,1,2013,28,5,201301,2013),('2013-01-29',201305,1,2013,29,5,201301,2013),('2013-01-30',201305,1,2013,30,5,201301,2013),('2013-01-31',201305,1,2013,31,5,201301,2013),('2013-02-01',201305,2,2013,1,5,201302,2013),('2013-02-02',201305,2,2013,2,5,201302,2013),('2013-02-03',201306,2,2013,3,6,201302,2013),('2013-02-04',201306,2,2013,4,6,201302,2013),('2013-02-05',201306,2,2013,5,6,201302,2013),('2013-02-06',201306,2,2013,6,6,201302,2013),('2013-02-07',201306,2,2013,7,6,201302,2013),('2013-02-08',201306,2,2013,8,6,201302,2013),('2013-02-09',201306,2,2013,9,6,201302,2013),('2013-02-10',201307,2,2013,10,7,201302,2013),('2013-02-11',201307,2,2013,11,7,201302,2013),('2013-02-12',201307,2,2013,12,7,201302,2013),('2013-02-13',201307,2,2013,13,7,201302,2013),('2013-02-14',201307,2,2013,14,7,201302,2013),('2013-02-15',201307,2,2013,15,7,201302,2013),('2013-02-16',201307,2,2013,16,7,201302,2013),('2013-02-17',201308,2,2013,17,8,201302,2013),('2013-02-18',201308,2,2013,18,8,201302,2013),('2013-02-19',201308,2,2013,19,8,201302,2013),('2013-02-20',201308,2,2013,20,8,201302,2013),('2013-02-21',201308,2,2013,21,8,201302,2013),('2013-02-22',201308,2,2013,22,8,201302,2013),('2013-02-23',201308,2,2013,23,8,201302,2013),('2013-02-24',201309,2,2013,24,9,201302,2013),('2013-02-25',201309,2,2013,25,9,201302,2013),('2013-02-26',201309,2,2013,26,9,201302,2013),('2013-02-27',201309,2,2013,27,9,201302,2013),('2013-02-28',201309,2,2013,28,9,201302,2013),('2013-03-01',201309,3,2013,1,9,201303,2013),('2013-03-02',201309,3,2013,2,9,201303,2013),('2013-03-03',201310,3,2013,3,10,201303,2013),('2013-03-04',201310,3,2013,4,10,201303,2013),('2013-03-05',201310,3,2013,5,10,201303,2013),('2013-03-06',201310,3,2013,6,10,201303,2013),('2013-03-07',201310,3,2013,7,10,201303,2013),('2013-03-08',201310,3,2013,8,10,201303,2013),('2013-03-09',201310,3,2013,9,10,201303,2013),('2013-03-10',201311,3,2013,10,11,201303,2013),('2013-03-11',201311,3,2013,11,11,201303,2013),('2013-03-12',201311,3,2013,12,11,201303,2013),('2013-03-13',201311,3,2013,13,11,201303,2013),('2013-03-14',201311,3,2013,14,11,201303,2013),('2013-03-15',201311,3,2013,15,11,201303,2013),('2013-03-16',201311,3,2013,16,11,201303,2013),('2013-03-17',201312,3,2013,17,12,201303,2013),('2013-03-18',201312,3,2013,18,12,201303,2013),('2013-03-19',201312,3,2013,19,12,201303,2013),('2013-03-20',201312,3,2013,20,12,201303,2013),('2013-03-21',201312,3,2013,21,12,201303,2013),('2013-03-22',201312,3,2013,22,12,201303,2013),('2013-03-23',201312,3,2013,23,12,201303,2013),('2013-03-24',201313,3,2013,24,13,201303,2013),('2013-03-25',201313,3,2013,25,13,201303,2013),('2013-03-26',201313,3,2013,26,13,201303,2013),('2013-03-27',201313,3,2013,27,13,201303,2013),('2013-03-28',201313,3,2013,28,13,201303,2013),('2013-03-29',201313,3,2013,29,13,201303,2013),('2013-03-30',201313,3,2013,30,13,201303,2013),('2013-03-31',201314,3,2013,31,14,201303,2013),('2013-04-01',201314,4,2013,1,14,201304,2013),('2013-04-02',201314,4,2013,2,14,201304,2013),('2013-04-03',201314,4,2013,3,14,201304,2013),('2013-04-04',201314,4,2013,4,14,201304,2013),('2013-04-05',201314,4,2013,5,14,201304,2013),('2013-04-06',201314,4,2013,6,14,201304,2013),('2013-04-07',201315,4,2013,7,15,201304,2013),('2013-04-08',201315,4,2013,8,15,201304,2013),('2013-04-09',201315,4,2013,9,15,201304,2013),('2013-04-10',201315,4,2013,10,15,201304,2013),('2013-04-11',201315,4,2013,11,15,201304,2013),('2013-04-12',201315,4,2013,12,15,201304,2013),('2013-04-13',201315,4,2013,13,15,201304,2013),('2013-04-14',201316,4,2013,14,16,201304,2013),('2013-04-15',201316,4,2013,15,16,201304,2013),('2013-04-16',201316,4,2013,16,16,201304,2013),('2013-04-17',201316,4,2013,17,16,201304,2013),('2013-04-18',201316,4,2013,18,16,201304,2013),('2013-04-19',201316,4,2013,19,16,201304,2013),('2013-04-20',201316,4,2013,20,16,201304,2013),('2013-04-21',201317,4,2013,21,17,201304,2013),('2013-04-22',201317,4,2013,22,17,201304,2013),('2013-04-23',201317,4,2013,23,17,201304,2013),('2013-04-24',201317,4,2013,24,17,201304,2013),('2013-04-25',201317,4,2013,25,17,201304,2013),('2013-04-26',201317,4,2013,26,17,201304,2013),('2013-04-27',201317,4,2013,27,17,201304,2013),('2013-04-28',201318,4,2013,28,18,201304,2013),('2013-04-29',201318,4,2013,29,18,201304,2013),('2013-04-30',201318,4,2013,30,18,201304,2013),('2013-05-01',201318,5,2013,1,18,201305,2013),('2013-05-02',201318,5,2013,2,18,201305,2013),('2013-05-03',201318,5,2013,3,18,201305,2013),('2013-05-04',201318,5,2013,4,18,201305,2013),('2013-05-05',201319,5,2013,5,19,201305,2013),('2013-05-06',201319,5,2013,6,19,201305,2013),('2013-05-07',201319,5,2013,7,19,201305,2013),('2013-05-08',201319,5,2013,8,19,201305,2013),('2013-05-09',201319,5,2013,9,19,201305,2013),('2013-05-10',201319,5,2013,10,19,201305,2013),('2013-05-11',201319,5,2013,11,19,201305,2013),('2013-05-12',201320,5,2013,12,20,201305,2013),('2013-05-13',201320,5,2013,13,20,201305,2013),('2013-05-14',201320,5,2013,14,20,201305,2013),('2013-05-15',201320,5,2013,15,20,201305,2013),('2013-05-16',201320,5,2013,16,20,201305,2013),('2013-05-17',201320,5,2013,17,20,201305,2013),('2013-05-18',201320,5,2013,18,20,201305,2013),('2013-05-19',201321,5,2013,19,21,201305,2013),('2013-05-20',201321,5,2013,20,21,201305,2013),('2013-05-21',201321,5,2013,21,21,201305,2013),('2013-05-22',201321,5,2013,22,21,201305,2013),('2013-05-23',201321,5,2013,23,21,201305,2013),('2013-05-24',201321,5,2013,24,21,201305,2013),('2013-05-25',201321,5,2013,25,21,201305,2013),('2013-05-26',201322,5,2013,26,22,201305,2013),('2013-05-27',201322,5,2013,27,22,201305,2013),('2013-05-28',201322,5,2013,28,22,201305,2013),('2013-05-29',201322,5,2013,29,22,201305,2013),('2013-05-30',201322,5,2013,30,22,201305,2013),('2013-05-31',201322,5,2013,31,22,201305,2013),('2013-06-01',201322,6,2013,1,22,201306,2013),('2013-06-02',201323,6,2013,2,23,201306,2013),('2013-06-03',201323,6,2013,3,23,201306,2013),('2013-06-04',201323,6,2013,4,23,201306,2013),('2013-06-05',201323,6,2013,5,23,201306,2013),('2013-06-06',201323,6,2013,6,23,201306,2013),('2013-06-07',201323,6,2013,7,23,201306,2013),('2013-06-08',201323,6,2013,8,23,201306,2013),('2013-06-09',201324,6,2013,9,24,201306,2013),('2013-06-10',201324,6,2013,10,24,201306,2013),('2013-06-11',201324,6,2013,11,24,201306,2013),('2013-06-12',201324,6,2013,12,24,201306,2013),('2013-06-13',201324,6,2013,13,24,201306,2013),('2013-06-14',201324,6,2013,14,24,201306,2013),('2013-06-15',201324,6,2013,15,24,201306,2013),('2013-06-16',201325,6,2013,16,25,201306,2013),('2013-06-17',201325,6,2013,17,25,201306,2013),('2013-06-18',201325,6,2013,18,25,201306,2013),('2013-06-19',201325,6,2013,19,25,201306,2013),('2013-06-20',201325,6,2013,20,25,201306,2013),('2013-06-21',201325,6,2013,21,25,201306,2013),('2013-06-22',201325,6,2013,22,25,201306,2013),('2013-06-23',201326,6,2013,23,26,201306,2013),('2013-06-24',201326,6,2013,24,26,201306,2013),('2013-06-25',201326,6,2013,25,26,201306,2013),('2013-06-26',201326,6,2013,26,26,201306,2013),('2013-06-27',201326,6,2013,27,26,201306,2013),('2013-06-28',201326,6,2013,28,26,201306,2013),('2013-06-29',201326,6,2013,29,26,201306,2013),('2013-06-30',201327,6,2013,30,27,201306,2013),('2013-07-01',201327,7,2013,1,27,201307,2013),('2013-07-02',201327,7,2013,2,27,201307,2013),('2013-07-03',201327,7,2013,3,27,201307,2013),('2013-07-04',201327,7,2013,4,27,201307,2013),('2013-07-05',201327,7,2013,5,27,201307,2013),('2013-07-06',201327,7,2013,6,27,201307,2013),('2013-07-07',201328,7,2013,7,28,201307,2013),('2013-07-08',201328,7,2013,8,28,201307,2013),('2013-07-09',201328,7,2013,9,28,201307,2013),('2013-07-10',201328,7,2013,10,28,201307,2013),('2013-07-11',201328,7,2013,11,28,201307,2013),('2013-07-12',201328,7,2013,12,28,201307,2013),('2013-07-13',201328,7,2013,13,28,201307,2013),('2013-07-14',201329,7,2013,14,29,201307,2013),('2013-07-15',201329,7,2013,15,29,201307,2013),('2013-07-16',201329,7,2013,16,29,201307,2013),('2013-07-17',201329,7,2013,17,29,201307,2013),('2013-07-18',201329,7,2013,18,29,201307,2013),('2013-07-19',201329,7,2013,19,29,201307,2013),('2013-07-20',201329,7,2013,20,29,201307,2013),('2013-07-21',201330,7,2013,21,30,201307,2013),('2013-07-22',201330,7,2013,22,30,201307,2013),('2013-07-23',201330,7,2013,23,30,201307,2013),('2013-07-24',201330,7,2013,24,30,201307,2013),('2013-07-25',201330,7,2013,25,30,201307,2013),('2013-07-26',201330,7,2013,26,30,201307,2013),('2013-07-27',201330,7,2013,27,30,201307,2013),('2013-07-28',201331,7,2013,28,31,201307,2013),('2013-07-29',201331,7,2013,29,31,201307,2013),('2013-07-30',201331,7,2013,30,31,201307,2013),('2013-07-31',201331,7,2013,31,31,201307,2013),('2013-08-01',201331,8,2013,1,31,201308,2013),('2013-08-02',201331,8,2013,2,31,201308,2013),('2013-08-03',201331,8,2013,3,31,201308,2013),('2013-08-04',201332,8,2013,4,32,201308,2013),('2013-08-05',201332,8,2013,5,32,201308,2013),('2013-08-06',201332,8,2013,6,32,201308,2013),('2013-08-07',201332,8,2013,7,32,201308,2013),('2013-08-08',201332,8,2013,8,32,201308,2013),('2013-08-09',201332,8,2013,9,32,201308,2013),('2013-08-10',201332,8,2013,10,32,201308,2013),('2013-08-11',201333,8,2013,11,33,201308,2013),('2013-08-12',201333,8,2013,12,33,201308,2013),('2013-08-13',201333,8,2013,13,33,201308,2013),('2013-08-14',201333,8,2013,14,33,201308,2013),('2013-08-15',201333,8,2013,15,33,201308,2013),('2013-08-16',201333,8,2013,16,33,201308,2013),('2013-08-17',201333,8,2013,17,33,201308,2013),('2013-08-18',201334,8,2013,18,34,201308,2013),('2013-08-19',201334,8,2013,19,34,201308,2013),('2013-08-20',201334,8,2013,20,34,201308,2013),('2013-08-21',201334,8,2013,21,34,201308,2013),('2013-08-22',201334,8,2013,22,34,201308,2013),('2013-08-23',201334,8,2013,23,34,201308,2013),('2013-08-24',201334,8,2013,24,34,201308,2013),('2013-08-25',201335,8,2013,25,35,201308,2013),('2013-08-26',201335,8,2013,26,35,201308,2013),('2013-08-27',201335,8,2013,27,35,201308,2013),('2013-08-28',201335,8,2013,28,35,201308,2013),('2013-08-29',201335,8,2013,29,35,201308,2013),('2013-08-30',201335,8,2013,30,35,201308,2013),('2013-08-31',201335,8,2013,31,35,201308,2013),('2013-09-01',201336,9,2013,1,36,201309,2013),('2013-09-02',201336,9,2013,2,36,201309,2013),('2013-09-03',201336,9,2013,3,36,201309,2013),('2013-09-04',201336,9,2013,4,36,201309,2013),('2013-09-05',201336,9,2013,5,36,201309,2013),('2013-09-06',201336,9,2013,6,36,201309,2013),('2013-09-07',201336,9,2013,7,36,201309,2013),('2013-09-08',201337,9,2013,8,37,201309,2013),('2013-09-09',201337,9,2013,9,37,201309,2013),('2013-09-10',201337,9,2013,10,37,201309,2013),('2013-09-11',201337,9,2013,11,37,201309,2013),('2013-09-12',201337,9,2013,12,37,201309,2013),('2013-09-13',201337,9,2013,13,37,201309,2013),('2013-09-14',201337,9,2013,14,37,201309,2013),('2013-09-15',201338,9,2013,15,38,201309,2013),('2013-09-16',201338,9,2013,16,38,201309,2013),('2013-09-17',201338,9,2013,17,38,201309,2013),('2013-09-18',201338,9,2013,18,38,201309,2013),('2013-09-19',201338,9,2013,19,38,201309,2013),('2013-09-20',201338,9,2013,20,38,201309,2013),('2013-09-21',201338,9,2013,21,38,201309,2013),('2013-09-22',201339,9,2013,22,39,201309,2013),('2013-09-23',201339,9,2013,23,39,201309,2013),('2013-09-24',201339,9,2013,24,39,201309,2013),('2013-09-25',201339,9,2013,25,39,201309,2013),('2013-09-26',201339,9,2013,26,39,201309,2013),('2013-09-27',201339,9,2013,27,39,201309,2013),('2013-09-28',201339,9,2013,28,39,201309,2013),('2013-09-29',201340,9,2013,29,40,201309,2013),('2013-09-30',201340,9,2013,30,40,201309,2013),('2013-10-01',201340,10,2013,1,40,201310,2013),('2013-10-02',201340,10,2013,2,40,201310,2013),('2013-10-03',201340,10,2013,3,40,201310,2013),('2013-10-04',201340,10,2013,4,40,201310,2013),('2013-10-05',201340,10,2013,5,40,201310,2013),('2013-10-06',201341,10,2013,6,41,201310,2013),('2013-10-07',201341,10,2013,7,41,201310,2013),('2013-10-08',201341,10,2013,8,41,201310,2013),('2013-10-09',201341,10,2013,9,41,201310,2013),('2013-10-10',201341,10,2013,10,41,201310,2013),('2013-10-11',201341,10,2013,11,41,201310,2013),('2013-10-12',201341,10,2013,12,41,201310,2013),('2013-10-13',201342,10,2013,13,42,201310,2013),('2013-10-14',201342,10,2013,14,42,201310,2013),('2013-10-15',201342,10,2013,15,42,201310,2013),('2013-10-16',201342,10,2013,16,42,201310,2013),('2013-10-17',201342,10,2013,17,42,201310,2013),('2013-10-18',201342,10,2013,18,42,201310,2013),('2013-10-19',201342,10,2013,19,42,201310,2013),('2013-10-20',201343,10,2013,20,43,201310,2013),('2013-10-21',201343,10,2013,21,43,201310,2013),('2013-10-22',201343,10,2013,22,43,201310,2013),('2013-10-23',201343,10,2013,23,43,201310,2013),('2013-10-24',201343,10,2013,24,43,201310,2013),('2013-10-25',201343,10,2013,25,43,201310,2013),('2013-10-26',201343,10,2013,26,43,201310,2013),('2013-10-27',201344,10,2013,27,44,201310,2013),('2013-10-28',201344,10,2013,28,44,201310,2013),('2013-10-29',201344,10,2013,29,44,201310,2013),('2013-10-30',201344,10,2013,30,44,201310,2013),('2013-10-31',201344,10,2013,31,44,201310,2013),('2013-11-01',201344,11,2013,1,44,201311,2013),('2013-11-02',201344,11,2013,2,44,201311,2013),('2013-11-03',201345,11,2013,3,45,201311,2013),('2013-11-04',201345,11,2013,4,45,201311,2013),('2013-11-05',201345,11,2013,5,45,201311,2013),('2013-11-06',201345,11,2013,6,45,201311,2013),('2013-11-07',201345,11,2013,7,45,201311,2013),('2013-11-08',201345,11,2013,8,45,201311,2013),('2013-11-09',201345,11,2013,9,45,201311,2013),('2013-11-10',201346,11,2013,10,46,201311,2013),('2013-11-11',201346,11,2013,11,46,201311,2013),('2013-11-12',201346,11,2013,12,46,201311,2013),('2013-11-13',201346,11,2013,13,46,201311,2013),('2013-11-14',201346,11,2013,14,46,201311,2013),('2013-11-15',201346,11,2013,15,46,201311,2013),('2013-11-16',201346,11,2013,16,46,201311,2013),('2013-11-17',201347,11,2013,17,47,201311,2013),('2013-11-18',201347,11,2013,18,47,201311,2013),('2013-11-19',201347,11,2013,19,47,201311,2013),('2013-11-20',201347,11,2013,20,47,201311,2013),('2013-11-21',201347,11,2013,21,47,201311,2013),('2013-11-22',201347,11,2013,22,47,201311,2013),('2013-11-23',201347,11,2013,23,47,201311,2013),('2013-11-24',201348,11,2013,24,48,201311,2013),('2013-11-25',201348,11,2013,25,48,201311,2013),('2013-11-26',201348,11,2013,26,48,201311,2013),('2013-11-27',201348,11,2013,27,48,201311,2013),('2013-11-28',201348,11,2013,28,48,201311,2013),('2013-11-29',201348,11,2013,29,48,201311,2013),('2013-11-30',201348,11,2013,30,48,201311,2013),('2013-12-01',201349,12,2013,1,49,201312,2014),('2013-12-02',201349,12,2013,2,49,201312,2014),('2013-12-03',201349,12,2013,3,49,201312,2014),('2013-12-04',201349,12,2013,4,49,201312,2014),('2013-12-05',201349,12,2013,5,49,201312,2014),('2013-12-06',201349,12,2013,6,49,201312,2014),('2013-12-07',201349,12,2013,7,49,201312,2014),('2013-12-08',201350,12,2013,8,50,201312,2014),('2013-12-09',201350,12,2013,9,50,201312,2014),('2013-12-10',201350,12,2013,10,50,201312,2014),('2013-12-11',201350,12,2013,11,50,201312,2014),('2013-12-12',201350,12,2013,12,50,201312,2014),('2013-12-13',201350,12,2013,13,50,201312,2014),('2013-12-14',201350,12,2013,14,50,201312,2014),('2013-12-15',201351,12,2013,15,51,201312,2014),('2013-12-16',201351,12,2013,16,51,201312,2014),('2013-12-17',201351,12,2013,17,51,201312,2014),('2013-12-18',201351,12,2013,18,51,201312,2014),('2013-12-19',201351,12,2013,19,51,201312,2014),('2013-12-20',201351,12,2013,20,51,201312,2014),('2013-12-21',201351,12,2013,21,51,201312,2014),('2013-12-22',201352,12,2013,22,52,201312,2014),('2013-12-23',201352,12,2013,23,52,201312,2014),('2013-12-24',201352,12,2013,24,52,201312,2014),('2013-12-25',201352,12,2013,25,52,201312,2014),('2013-12-26',201352,12,2013,26,52,201312,2014),('2013-12-27',201352,12,2013,27,52,201312,2014),('2013-12-28',201352,12,2013,28,52,201312,2014),('2013-12-29',201401,12,2013,29,1,201312,2014),('2013-12-30',201401,12,2013,30,1,201312,2014),('2013-12-31',201401,12,2013,31,1,201312,2014),('2014-01-01',201401,1,2014,1,1,201401,2014),('2014-01-02',201401,1,2014,2,1,201401,2014),('2014-01-03',201401,1,2014,3,1,201401,2014),('2014-01-04',201401,1,2014,4,1,201401,2014),('2014-01-05',201402,1,2014,5,2,201401,2014),('2014-01-06',201402,1,2014,6,2,201401,2014),('2014-01-07',201402,1,2014,7,2,201401,2014),('2014-01-08',201402,1,2014,8,2,201401,2014),('2014-01-09',201402,1,2014,9,2,201401,2014),('2014-01-10',201402,1,2014,10,2,201401,2014),('2014-01-11',201402,1,2014,11,2,201401,2014),('2014-01-12',201403,1,2014,12,3,201401,2014),('2014-01-13',201403,1,2014,13,3,201401,2014),('2014-01-14',201403,1,2014,14,3,201401,2014),('2014-01-15',201403,1,2014,15,3,201401,2014),('2014-01-16',201403,1,2014,16,3,201401,2014),('2014-01-17',201403,1,2014,17,3,201401,2014),('2014-01-18',201403,1,2014,18,3,201401,2014),('2014-01-19',201404,1,2014,19,4,201401,2014),('2014-01-20',201404,1,2014,20,4,201401,2014),('2014-01-21',201404,1,2014,21,4,201401,2014),('2014-01-22',201404,1,2014,22,4,201401,2014),('2014-01-23',201404,1,2014,23,4,201401,2014),('2014-01-24',201404,1,2014,24,4,201401,2014),('2014-01-25',201404,1,2014,25,4,201401,2014),('2014-01-26',201405,1,2014,26,5,201401,2014),('2014-01-27',201405,1,2014,27,5,201401,2014),('2014-01-28',201405,1,2014,28,5,201401,2014),('2014-01-29',201405,1,2014,29,5,201401,2014),('2014-01-30',201405,1,2014,30,5,201401,2014),('2014-01-31',201405,1,2014,31,5,201401,2014),('2014-02-01',201405,2,2014,1,5,201402,2014),('2014-02-02',201406,2,2014,2,6,201402,2014),('2014-02-03',201406,2,2014,3,6,201402,2014),('2014-02-04',201406,2,2014,4,6,201402,2014),('2014-02-05',201406,2,2014,5,6,201402,2014),('2014-02-06',201406,2,2014,6,6,201402,2014),('2014-02-07',201406,2,2014,7,6,201402,2014),('2014-02-08',201406,2,2014,8,6,201402,2014),('2014-02-09',201407,2,2014,9,7,201402,2014),('2014-02-10',201407,2,2014,10,7,201402,2014),('2014-02-11',201407,2,2014,11,7,201402,2014),('2014-02-12',201407,2,2014,12,7,201402,2014),('2014-02-13',201407,2,2014,13,7,201402,2014),('2014-02-14',201407,2,2014,14,7,201402,2014),('2014-02-15',201407,2,2014,15,7,201402,2014),('2014-02-16',201408,2,2014,16,8,201402,2014),('2014-02-17',201408,2,2014,17,8,201402,2014),('2014-02-18',201408,2,2014,18,8,201402,2014),('2014-02-19',201408,2,2014,19,8,201402,2014),('2014-02-20',201408,2,2014,20,8,201402,2014),('2014-02-21',201408,2,2014,21,8,201402,2014),('2014-02-22',201408,2,2014,22,8,201402,2014),('2014-02-23',201409,2,2014,23,9,201402,2014),('2014-02-24',201409,2,2014,24,9,201402,2014),('2014-02-25',201409,2,2014,25,9,201402,2014),('2014-02-26',201409,2,2014,26,9,201402,2014),('2014-02-27',201409,2,2014,27,9,201402,2014),('2014-02-28',201409,2,2014,28,9,201402,2014),('2014-03-01',201409,3,2014,1,9,201403,2014),('2014-03-02',201410,3,2014,2,10,201403,2014),('2014-03-03',201410,3,2014,3,10,201403,2014),('2014-03-04',201410,3,2014,4,10,201403,2014),('2014-03-05',201410,3,2014,5,10,201403,2014),('2014-03-06',201410,3,2014,6,10,201403,2014),('2014-03-07',201410,3,2014,7,10,201403,2014),('2014-03-08',201410,3,2014,8,10,201403,2014),('2014-03-09',201411,3,2014,9,11,201403,2014),('2014-03-10',201411,3,2014,10,11,201403,2014),('2014-03-11',201411,3,2014,11,11,201403,2014),('2014-03-12',201411,3,2014,12,11,201403,2014),('2014-03-13',201411,3,2014,13,11,201403,2014),('2014-03-14',201411,3,2014,14,11,201403,2014),('2014-03-15',201411,3,2014,15,11,201403,2014),('2014-03-16',201412,3,2014,16,12,201403,2014),('2014-03-17',201412,3,2014,17,12,201403,2014),('2014-03-18',201412,3,2014,18,12,201403,2014),('2014-03-19',201412,3,2014,19,12,201403,2014),('2014-03-20',201412,3,2014,20,12,201403,2014),('2014-03-21',201412,3,2014,21,12,201403,2014),('2014-03-22',201412,3,2014,22,12,201403,2014),('2014-03-23',201413,3,2014,23,13,201403,2014),('2014-03-24',201413,3,2014,24,13,201403,2014),('2014-03-25',201413,3,2014,25,13,201403,2014),('2014-03-26',201413,3,2014,26,13,201403,2014),('2014-03-27',201413,3,2014,27,13,201403,2014),('2014-03-28',201413,3,2014,28,13,201403,2014),('2014-03-29',201413,3,2014,29,13,201403,2014),('2014-03-30',201414,3,2014,30,14,201403,2014),('2014-03-31',201414,3,2014,31,14,201403,2014),('2014-04-01',201414,4,2014,1,14,201404,2014),('2014-04-02',201414,4,2014,2,14,201404,2014),('2014-04-03',201414,4,2014,3,14,201404,2014),('2014-04-04',201414,4,2014,4,14,201404,2014),('2014-04-05',201414,4,2014,5,14,201404,2014),('2014-04-06',201415,4,2014,6,15,201404,2014),('2014-04-07',201415,4,2014,7,15,201404,2014),('2014-04-08',201415,4,2014,8,15,201404,2014),('2014-04-09',201415,4,2014,9,15,201404,2014),('2014-04-10',201415,4,2014,10,15,201404,2014),('2014-04-11',201415,4,2014,11,15,201404,2014),('2014-04-12',201415,4,2014,12,15,201404,2014),('2014-04-13',201416,4,2014,13,16,201404,2014),('2014-04-14',201416,4,2014,14,16,201404,2014),('2014-04-15',201416,4,2014,15,16,201404,2014),('2014-04-16',201416,4,2014,16,16,201404,2014),('2014-04-17',201416,4,2014,17,16,201404,2014),('2014-04-18',201416,4,2014,18,16,201404,2014),('2014-04-19',201416,4,2014,19,16,201404,2014),('2014-04-20',201417,4,2014,20,17,201404,2014),('2014-04-21',201417,4,2014,21,17,201404,2014),('2014-04-22',201417,4,2014,22,17,201404,2014),('2014-04-23',201417,4,2014,23,17,201404,2014),('2014-04-24',201417,4,2014,24,17,201404,2014),('2014-04-25',201417,4,2014,25,17,201404,2014),('2014-04-26',201417,4,2014,26,17,201404,2014),('2014-04-27',201418,4,2014,27,18,201404,2014),('2014-04-28',201418,4,2014,28,18,201404,2014),('2014-04-29',201418,4,2014,29,18,201404,2014),('2014-04-30',201418,4,2014,30,18,201404,2014),('2014-05-01',201418,5,2014,1,18,201405,2014),('2014-05-02',201418,5,2014,2,18,201405,2014),('2014-05-03',201418,5,2014,3,18,201405,2014),('2014-05-04',201419,5,2014,4,19,201405,2014),('2014-05-05',201419,5,2014,5,19,201405,2014),('2014-05-06',201419,5,2014,6,19,201405,2014),('2014-05-07',201419,5,2014,7,19,201405,2014),('2014-05-08',201419,5,2014,8,19,201405,2014),('2014-05-09',201419,5,2014,9,19,201405,2014),('2014-05-10',201419,5,2014,10,19,201405,2014),('2014-05-11',201420,5,2014,11,20,201405,2014),('2014-05-12',201420,5,2014,12,20,201405,2014),('2014-05-13',201420,5,2014,13,20,201405,2014),('2014-05-14',201420,5,2014,14,20,201405,2014),('2014-05-15',201420,5,2014,15,20,201405,2014),('2014-05-16',201420,5,2014,16,20,201405,2014),('2014-05-17',201420,5,2014,17,20,201405,2014),('2014-05-18',201421,5,2014,18,21,201405,2014),('2014-05-19',201421,5,2014,19,21,201405,2014),('2014-05-20',201421,5,2014,20,21,201405,2014),('2014-05-21',201421,5,2014,21,21,201405,2014),('2014-05-22',201421,5,2014,22,21,201405,2014),('2014-05-23',201421,5,2014,23,21,201405,2014),('2014-05-24',201421,5,2014,24,21,201405,2014),('2014-05-25',201422,5,2014,25,22,201405,2014),('2014-05-26',201422,5,2014,26,22,201405,2014),('2014-05-27',201422,5,2014,27,22,201405,2014),('2014-05-28',201422,5,2014,28,22,201405,2014),('2014-05-29',201422,5,2014,29,22,201405,2014),('2014-05-30',201422,5,2014,30,22,201405,2014),('2014-05-31',201422,5,2014,31,22,201405,2014),('2014-06-01',201423,6,2014,1,23,201406,2014),('2014-06-02',201423,6,2014,2,23,201406,2014),('2014-06-03',201423,6,2014,3,23,201406,2014),('2014-06-04',201423,6,2014,4,23,201406,2014),('2014-06-05',201423,6,2014,5,23,201406,2014),('2014-06-06',201423,6,2014,6,23,201406,2014),('2014-06-07',201423,6,2014,7,23,201406,2014),('2014-06-08',201424,6,2014,8,24,201406,2014),('2014-06-09',201424,6,2014,9,24,201406,2014),('2014-06-10',201424,6,2014,10,24,201406,2014),('2014-06-11',201424,6,2014,11,24,201406,2014),('2014-06-12',201424,6,2014,12,24,201406,2014),('2014-06-13',201424,6,2014,13,24,201406,2014),('2014-06-14',201424,6,2014,14,24,201406,2014),('2014-06-15',201425,6,2014,15,25,201406,2014),('2014-06-16',201425,6,2014,16,25,201406,2014),('2014-06-17',201425,6,2014,17,25,201406,2014),('2014-06-18',201425,6,2014,18,25,201406,2014),('2014-06-19',201425,6,2014,19,25,201406,2014),('2014-06-20',201425,6,2014,20,25,201406,2014),('2014-06-21',201425,6,2014,21,25,201406,2014),('2014-06-22',201426,6,2014,22,26,201406,2014),('2014-06-23',201426,6,2014,23,26,201406,2014),('2014-06-24',201426,6,2014,24,26,201406,2014),('2014-06-25',201426,6,2014,25,26,201406,2014),('2014-06-26',201426,6,2014,26,26,201406,2014),('2014-06-27',201426,6,2014,27,26,201406,2014),('2014-06-28',201426,6,2014,28,26,201406,2014),('2014-06-29',201427,6,2014,29,27,201406,2014),('2014-06-30',201427,6,2014,30,27,201406,2014),('2014-07-01',201427,7,2014,1,27,201407,2014),('2014-07-02',201427,7,2014,2,27,201407,2014),('2014-07-03',201427,7,2014,3,27,201407,2014),('2014-07-04',201427,7,2014,4,27,201407,2014),('2014-07-05',201427,7,2014,5,27,201407,2014),('2014-07-06',201428,7,2014,6,28,201407,2014),('2014-07-07',201428,7,2014,7,28,201407,2014),('2014-07-08',201428,7,2014,8,28,201407,2014),('2014-07-09',201428,7,2014,9,28,201407,2014),('2014-07-10',201428,7,2014,10,28,201407,2014),('2014-07-11',201428,7,2014,11,28,201407,2014),('2014-07-12',201428,7,2014,12,28,201407,2014),('2014-07-13',201429,7,2014,13,29,201407,2014),('2014-07-14',201429,7,2014,14,29,201407,2014),('2014-07-15',201429,7,2014,15,29,201407,2014),('2014-07-16',201429,7,2014,16,29,201407,2014),('2014-07-17',201429,7,2014,17,29,201407,2014),('2014-07-18',201429,7,2014,18,29,201407,2014),('2014-07-19',201429,7,2014,19,29,201407,2014),('2014-07-20',201430,7,2014,20,30,201407,2014),('2014-07-21',201430,7,2014,21,30,201407,2014),('2014-07-22',201430,7,2014,22,30,201407,2014),('2014-07-23',201430,7,2014,23,30,201407,2014),('2014-07-24',201430,7,2014,24,30,201407,2014),('2014-07-25',201430,7,2014,25,30,201407,2014),('2014-07-26',201430,7,2014,26,30,201407,2014),('2014-07-27',201431,7,2014,27,31,201407,2014),('2014-07-28',201431,7,2014,28,31,201407,2014),('2014-07-29',201431,7,2014,29,31,201407,2014),('2014-07-30',201431,7,2014,30,31,201407,2014),('2014-07-31',201431,7,2014,31,31,201407,2014),('2014-08-01',201431,8,2014,1,31,201408,2014),('2014-08-02',201431,8,2014,2,31,201408,2014),('2014-08-03',201432,8,2014,3,32,201408,2014),('2014-08-04',201432,8,2014,4,32,201408,2014),('2014-08-05',201432,8,2014,5,32,201408,2014),('2014-08-06',201432,8,2014,6,32,201408,2014),('2014-08-07',201432,8,2014,7,32,201408,2014),('2014-08-08',201432,8,2014,8,32,201408,2014),('2014-08-09',201432,8,2014,9,32,201408,2014),('2014-08-10',201433,8,2014,10,33,201408,2014),('2014-08-11',201433,8,2014,11,33,201408,2014),('2014-08-12',201433,8,2014,12,33,201408,2014),('2014-08-13',201433,8,2014,13,33,201408,2014),('2014-08-14',201433,8,2014,14,33,201408,2014),('2014-08-15',201433,8,2014,15,33,201408,2014),('2014-08-16',201433,8,2014,16,33,201408,2014),('2014-08-17',201434,8,2014,17,34,201408,2014),('2014-08-18',201434,8,2014,18,34,201408,2014),('2014-08-19',201434,8,2014,19,34,201408,2014),('2014-08-20',201434,8,2014,20,34,201408,2014),('2014-08-21',201434,8,2014,21,34,201408,2014),('2014-08-22',201434,8,2014,22,34,201408,2014),('2014-08-23',201434,8,2014,23,34,201408,2014),('2014-08-24',201435,8,2014,24,35,201408,2014),('2014-08-25',201435,8,2014,25,35,201408,2014),('2014-08-26',201435,8,2014,26,35,201408,2014),('2014-08-27',201435,8,2014,27,35,201408,2014),('2014-08-28',201435,8,2014,28,35,201408,2014),('2014-08-29',201435,8,2014,29,35,201408,2014),('2014-08-30',201435,8,2014,30,35,201408,2014),('2014-08-31',201436,8,2014,31,36,201408,2014),('2014-09-01',201436,9,2014,1,36,201409,2014),('2014-09-02',201436,9,2014,2,36,201409,2014),('2014-09-03',201436,9,2014,3,36,201409,2014),('2014-09-04',201436,9,2014,4,36,201409,2014),('2014-09-05',201436,9,2014,5,36,201409,2014),('2014-09-06',201436,9,2014,6,36,201409,2014),('2014-09-07',201437,9,2014,7,37,201409,2014),('2014-09-08',201437,9,2014,8,37,201409,2014),('2014-09-09',201437,9,2014,9,37,201409,2014),('2014-09-10',201437,9,2014,10,37,201409,2014),('2014-09-11',201437,9,2014,11,37,201409,2014),('2014-09-12',201437,9,2014,12,37,201409,2014),('2014-09-13',201437,9,2014,13,37,201409,2014),('2014-09-14',201438,9,2014,14,38,201409,2014),('2014-09-15',201438,9,2014,15,38,201409,2014),('2014-09-16',201438,9,2014,16,38,201409,2014),('2014-09-17',201438,9,2014,17,38,201409,2014),('2014-09-18',201438,9,2014,18,38,201409,2014),('2014-09-19',201438,9,2014,19,38,201409,2014),('2014-09-20',201438,9,2014,20,38,201409,2014),('2014-09-21',201439,9,2014,21,39,201409,2014),('2014-09-22',201439,9,2014,22,39,201409,2014),('2014-09-23',201439,9,2014,23,39,201409,2014),('2014-09-24',201439,9,2014,24,39,201409,2014),('2014-09-25',201439,9,2014,25,39,201409,2014),('2014-09-26',201439,9,2014,26,39,201409,2014),('2014-09-27',201439,9,2014,27,39,201409,2014),('2014-09-28',201440,9,2014,28,40,201409,2014),('2014-09-29',201440,9,2014,29,40,201409,2014),('2014-09-30',201440,9,2014,30,40,201409,2014),('2014-10-01',201440,10,2014,1,40,201410,2014),('2014-10-02',201440,10,2014,2,40,201410,2014),('2014-10-03',201440,10,2014,3,40,201410,2014),('2014-10-04',201440,10,2014,4,40,201410,2014),('2014-10-05',201441,10,2014,5,41,201410,2014),('2014-10-06',201441,10,2014,6,41,201410,2014),('2014-10-07',201441,10,2014,7,41,201410,2014),('2014-10-08',201441,10,2014,8,41,201410,2014),('2014-10-09',201441,10,2014,9,41,201410,2014),('2014-10-10',201441,10,2014,10,41,201410,2014),('2014-10-11',201441,10,2014,11,41,201410,2014),('2014-10-12',201442,10,2014,12,42,201410,2014),('2014-10-13',201442,10,2014,13,42,201410,2014),('2014-10-14',201442,10,2014,14,42,201410,2014),('2014-10-15',201442,10,2014,15,42,201410,2014),('2014-10-16',201442,10,2014,16,42,201410,2014),('2014-10-17',201442,10,2014,17,42,201410,2014),('2014-10-18',201442,10,2014,18,42,201410,2014),('2014-10-19',201443,10,2014,19,43,201410,2014),('2014-10-20',201443,10,2014,20,43,201410,2014),('2014-10-21',201443,10,2014,21,43,201410,2014),('2014-10-22',201443,10,2014,22,43,201410,2014),('2014-10-23',201443,10,2014,23,43,201410,2014),('2014-10-24',201443,10,2014,24,43,201410,2014),('2014-10-25',201443,10,2014,25,43,201410,2014),('2014-10-26',201444,10,2014,26,44,201410,2014),('2014-10-27',201444,10,2014,27,44,201410,2014),('2014-10-28',201444,10,2014,28,44,201410,2014),('2014-10-29',201444,10,2014,29,44,201410,2014),('2014-10-30',201444,10,2014,30,44,201410,2014),('2014-10-31',201444,10,2014,31,44,201410,2014),('2014-11-01',201444,11,2014,1,44,201411,2014),('2014-11-02',201445,11,2014,2,45,201411,2014),('2014-11-03',201445,11,2014,3,45,201411,2014),('2014-11-04',201445,11,2014,4,45,201411,2014),('2014-11-05',201445,11,2014,5,45,201411,2014),('2014-11-06',201445,11,2014,6,45,201411,2014),('2014-11-07',201445,11,2014,7,45,201411,2014),('2014-11-08',201445,11,2014,8,45,201411,2014),('2014-11-09',201446,11,2014,9,46,201411,2014),('2014-11-10',201446,11,2014,10,46,201411,2014),('2014-11-11',201446,11,2014,11,46,201411,2014),('2014-11-12',201446,11,2014,12,46,201411,2014),('2014-11-13',201446,11,2014,13,46,201411,2014),('2014-11-14',201446,11,2014,14,46,201411,2014),('2014-11-15',201446,11,2014,15,46,201411,2014),('2014-11-16',201447,11,2014,16,47,201411,2014),('2014-11-17',201447,11,2014,17,47,201411,2014),('2014-11-18',201447,11,2014,18,47,201411,2014),('2014-11-19',201447,11,2014,19,47,201411,2014),('2014-11-20',201447,11,2014,20,47,201411,2014),('2014-11-21',201447,11,2014,21,47,201411,2014),('2014-11-22',201447,11,2014,22,47,201411,2014),('2014-11-23',201448,11,2014,23,48,201411,2014),('2014-11-24',201448,11,2014,24,48,201411,2014),('2014-11-25',201448,11,2014,25,48,201411,2014),('2014-11-26',201448,11,2014,26,48,201411,2014),('2014-11-27',201448,11,2014,27,48,201411,2014),('2014-11-28',201448,11,2014,28,48,201411,2014),('2014-11-29',201448,11,2014,29,48,201411,2014),('2014-11-30',201449,11,2014,30,49,201411,2014),('2014-12-01',201449,12,2014,1,49,201412,2015),('2014-12-02',201449,12,2014,2,49,201412,2015),('2014-12-03',201449,12,2014,3,49,201412,2015),('2014-12-04',201449,12,2014,4,49,201412,2015),('2014-12-05',201449,12,2014,5,49,201412,2015),('2014-12-06',201449,12,2014,6,49,201412,2015),('2014-12-07',201450,12,2014,7,50,201412,2015),('2014-12-08',201450,12,2014,8,50,201412,2015),('2014-12-09',201450,12,2014,9,50,201412,2015),('2014-12-10',201450,12,2014,10,50,201412,2015),('2014-12-11',201450,12,2014,11,50,201412,2015),('2014-12-12',201450,12,2014,12,50,201412,2015),('2014-12-13',201450,12,2014,13,50,201412,2015),('2014-12-14',201451,12,2014,14,51,201412,2015),('2014-12-15',201451,12,2014,15,51,201412,2015),('2014-12-16',201451,12,2014,16,51,201412,2015),('2014-12-17',201451,12,2014,17,51,201412,2015),('2014-12-18',201451,12,2014,18,51,201412,2015),('2014-12-19',201451,12,2014,19,51,201412,2015),('2014-12-20',201451,12,2014,20,51,201412,2015),('2014-12-21',201452,12,2014,21,52,201412,2015),('2014-12-22',201452,12,2014,22,52,201412,2015),('2014-12-23',201452,12,2014,23,52,201412,2015),('2014-12-24',201452,12,2014,24,52,201412,2015),('2014-12-25',201452,12,2014,25,52,201412,2015),('2014-12-26',201452,12,2014,26,52,201412,2015),('2014-12-27',201452,12,2014,27,52,201412,2015),('2014-12-28',201453,12,2014,28,53,201412,2015),('2014-12-29',201453,12,2014,29,53,201412,2015),('2014-12-30',201453,12,2014,30,53,201412,2015),('2014-12-31',201453,12,2014,31,53,201412,2015),('2015-01-01',201453,1,2015,1,53,201501,2015),('2015-01-02',201453,1,2015,2,53,201501,2015),('2015-01-03',201453,1,2015,3,53,201501,2015),('2015-01-04',201501,1,2015,4,1,201501,2015),('2015-01-05',201501,1,2015,5,1,201501,2015),('2015-01-06',201501,1,2015,6,1,201501,2015),('2015-01-07',201501,1,2015,7,1,201501,2015),('2015-01-08',201501,1,2015,8,1,201501,2015),('2015-01-09',201501,1,2015,9,1,201501,2015),('2015-01-10',201501,1,2015,10,1,201501,2015),('2015-01-11',201502,1,2015,11,2,201501,2015),('2015-01-12',201502,1,2015,12,2,201501,2015),('2015-01-13',201502,1,2015,13,2,201501,2015),('2015-01-14',201502,1,2015,14,2,201501,2015),('2015-01-15',201502,1,2015,15,2,201501,2015),('2015-01-16',201502,1,2015,16,2,201501,2015),('2015-01-17',201502,1,2015,17,2,201501,2015),('2015-01-18',201503,1,2015,18,3,201501,2015),('2015-01-19',201503,1,2015,19,3,201501,2015),('2015-01-20',201503,1,2015,20,3,201501,2015),('2015-01-21',201503,1,2015,21,3,201501,2015),('2015-01-22',201503,1,2015,22,3,201501,2015),('2015-01-23',201503,1,2015,23,3,201501,2015),('2015-01-24',201503,1,2015,24,3,201501,2015),('2015-01-25',201504,1,2015,25,4,201501,2015),('2015-01-26',201504,1,2015,26,4,201501,2015),('2015-01-27',201504,1,2015,27,4,201501,2015),('2015-01-28',201504,1,2015,28,4,201501,2015),('2015-01-29',201504,1,2015,29,4,201501,2015),('2015-01-30',201504,1,2015,30,4,201501,2015),('2015-01-31',201504,1,2015,31,4,201501,2015),('2015-02-01',201505,2,2015,1,5,201502,2015),('2015-02-02',201505,2,2015,2,5,201502,2015),('2015-02-03',201505,2,2015,3,5,201502,2015),('2015-02-04',201505,2,2015,4,5,201502,2015),('2015-02-05',201505,2,2015,5,5,201502,2015),('2015-02-06',201505,2,2015,6,5,201502,2015),('2015-02-07',201505,2,2015,7,5,201502,2015),('2015-02-08',201506,2,2015,8,6,201502,2015),('2015-02-09',201506,2,2015,9,6,201502,2015),('2015-02-10',201506,2,2015,10,6,201502,2015),('2015-02-11',201506,2,2015,11,6,201502,2015),('2015-02-12',201506,2,2015,12,6,201502,2015),('2015-02-13',201506,2,2015,13,6,201502,2015),('2015-02-14',201506,2,2015,14,6,201502,2015),('2015-02-15',201507,2,2015,15,7,201502,2015),('2015-02-16',201507,2,2015,16,7,201502,2015),('2015-02-17',201507,2,2015,17,7,201502,2015),('2015-02-18',201507,2,2015,18,7,201502,2015),('2015-02-19',201507,2,2015,19,7,201502,2015),('2015-02-20',201507,2,2015,20,7,201502,2015),('2015-02-21',201507,2,2015,21,7,201502,2015),('2015-02-22',201508,2,2015,22,8,201502,2015),('2015-02-23',201508,2,2015,23,8,201502,2015),('2015-02-24',201508,2,2015,24,8,201502,2015),('2015-02-25',201508,2,2015,25,8,201502,2015),('2015-02-26',201508,2,2015,26,8,201502,2015),('2015-02-27',201508,2,2015,27,8,201502,2015),('2015-02-28',201508,2,2015,28,8,201502,2015),('2015-03-01',201509,3,2015,1,9,201503,2015),('2015-03-02',201509,3,2015,2,9,201503,2015),('2015-03-03',201509,3,2015,3,9,201503,2015),('2015-03-04',201509,3,2015,4,9,201503,2015),('2015-03-05',201509,3,2015,5,9,201503,2015),('2015-03-06',201509,3,2015,6,9,201503,2015),('2015-03-07',201509,3,2015,7,9,201503,2015),('2015-03-08',201510,3,2015,8,10,201503,2015),('2015-03-09',201510,3,2015,9,10,201503,2015),('2015-03-10',201510,3,2015,10,10,201503,2015),('2015-03-11',201510,3,2015,11,10,201503,2015),('2015-03-12',201510,3,2015,12,10,201503,2015),('2015-03-13',201510,3,2015,13,10,201503,2015),('2015-03-14',201510,3,2015,14,10,201503,2015),('2015-03-15',201511,3,2015,15,11,201503,2015),('2015-03-16',201511,3,2015,16,11,201503,2015),('2015-03-17',201511,3,2015,17,11,201503,2015),('2015-03-18',201511,3,2015,18,11,201503,2015),('2015-03-19',201511,3,2015,19,11,201503,2015),('2015-03-20',201511,3,2015,20,11,201503,2015),('2015-03-21',201511,3,2015,21,11,201503,2015),('2015-03-22',201512,3,2015,22,12,201503,2015),('2015-03-23',201512,3,2015,23,12,201503,2015),('2015-03-24',201512,3,2015,24,12,201503,2015),('2015-03-25',201512,3,2015,25,12,201503,2015),('2015-03-26',201512,3,2015,26,12,201503,2015),('2015-03-27',201512,3,2015,27,12,201503,2015),('2015-03-28',201512,3,2015,28,12,201503,2015),('2015-03-29',201513,3,2015,29,13,201503,2015),('2015-03-30',201513,3,2015,30,13,201503,2015),('2015-03-31',201513,3,2015,31,13,201503,2015),('2015-04-01',201513,4,2015,1,13,201504,2015),('2015-04-02',201513,4,2015,2,13,201504,2015),('2015-04-03',201513,4,2015,3,13,201504,2015),('2015-04-04',201513,4,2015,4,13,201504,2015),('2015-04-05',201514,4,2015,5,14,201504,2015),('2015-04-06',201514,4,2015,6,14,201504,2015),('2015-04-07',201514,4,2015,7,14,201504,2015),('2015-04-08',201514,4,2015,8,14,201504,2015),('2015-04-09',201514,4,2015,9,14,201504,2015),('2015-04-10',201514,4,2015,10,14,201504,2015),('2015-04-11',201514,4,2015,11,14,201504,2015),('2015-04-12',201515,4,2015,12,15,201504,2015),('2015-04-13',201515,4,2015,13,15,201504,2015),('2015-04-14',201515,4,2015,14,15,201504,2015),('2015-04-15',201515,4,2015,15,15,201504,2015),('2015-04-16',201515,4,2015,16,15,201504,2015),('2015-04-17',201515,4,2015,17,15,201504,2015),('2015-04-18',201515,4,2015,18,15,201504,2015),('2015-04-19',201516,4,2015,19,16,201504,2015),('2015-04-20',201516,4,2015,20,16,201504,2015),('2015-04-21',201516,4,2015,21,16,201504,2015),('2015-04-22',201516,4,2015,22,16,201504,2015),('2015-04-23',201516,4,2015,23,16,201504,2015),('2015-04-24',201516,4,2015,24,16,201504,2015),('2015-04-25',201516,4,2015,25,16,201504,2015),('2015-04-26',201517,4,2015,26,17,201504,2015),('2015-04-27',201517,4,2015,27,17,201504,2015),('2015-04-28',201517,4,2015,28,17,201504,2015),('2015-04-29',201517,4,2015,29,17,201504,2015),('2015-04-30',201517,4,2015,30,17,201504,2015),('2015-05-01',201517,5,2015,1,17,201505,2015),('2015-05-02',201517,5,2015,2,17,201505,2015),('2015-05-03',201518,5,2015,3,18,201505,2015),('2015-05-04',201518,5,2015,4,18,201505,2015),('2015-05-05',201518,5,2015,5,18,201505,2015),('2015-05-06',201518,5,2015,6,18,201505,2015),('2015-05-07',201518,5,2015,7,18,201505,2015),('2015-05-08',201518,5,2015,8,18,201505,2015),('2015-05-09',201518,5,2015,9,18,201505,2015),('2015-05-10',201519,5,2015,10,19,201505,2015),('2015-05-11',201519,5,2015,11,19,201505,2015),('2015-05-12',201519,5,2015,12,19,201505,2015),('2015-05-13',201519,5,2015,13,19,201505,2015),('2015-05-14',201519,5,2015,14,19,201505,2015),('2015-05-15',201519,5,2015,15,19,201505,2015),('2015-05-16',201519,5,2015,16,19,201505,2015),('2015-05-17',201520,5,2015,17,20,201505,2015),('2015-05-18',201520,5,2015,18,20,201505,2015),('2015-05-19',201520,5,2015,19,20,201505,2015),('2015-05-20',201520,5,2015,20,20,201505,2015),('2015-05-21',201520,5,2015,21,20,201505,2015),('2015-05-22',201520,5,2015,22,20,201505,2015),('2015-05-23',201520,5,2015,23,20,201505,2015),('2015-05-24',201521,5,2015,24,21,201505,2015),('2015-05-25',201521,5,2015,25,21,201505,2015),('2015-05-26',201521,5,2015,26,21,201505,2015),('2015-05-27',201521,5,2015,27,21,201505,2015),('2015-05-28',201521,5,2015,28,21,201505,2015),('2015-05-29',201521,5,2015,29,21,201505,2015),('2015-05-30',201521,5,2015,30,21,201505,2015),('2015-05-31',201522,5,2015,31,22,201505,2015),('2015-06-01',201522,6,2015,1,22,201506,2015),('2015-06-02',201522,6,2015,2,22,201506,2015),('2015-06-03',201522,6,2015,3,22,201506,2015),('2015-06-04',201522,6,2015,4,22,201506,2015),('2015-06-05',201522,6,2015,5,22,201506,2015),('2015-06-06',201522,6,2015,6,22,201506,2015),('2015-06-07',201523,6,2015,7,23,201506,2015),('2015-06-08',201523,6,2015,8,23,201506,2015),('2015-06-09',201523,6,2015,9,23,201506,2015),('2015-06-10',201523,6,2015,10,23,201506,2015),('2015-06-11',201523,6,2015,11,23,201506,2015),('2015-06-12',201523,6,2015,12,23,201506,2015),('2015-06-13',201523,6,2015,13,23,201506,2015),('2015-06-14',201524,6,2015,14,24,201506,2015),('2015-06-15',201524,6,2015,15,24,201506,2015),('2015-06-16',201524,6,2015,16,24,201506,2015),('2015-06-17',201524,6,2015,17,24,201506,2015),('2015-06-18',201524,6,2015,18,24,201506,2015),('2015-06-19',201524,6,2015,19,24,201506,2015),('2015-06-20',201524,6,2015,20,24,201506,2015),('2015-06-21',201525,6,2015,21,25,201506,2015),('2015-06-22',201525,6,2015,22,25,201506,2015),('2015-06-23',201525,6,2015,23,25,201506,2015),('2015-06-24',201525,6,2015,24,25,201506,2015),('2015-06-25',201525,6,2015,25,25,201506,2015),('2015-06-26',201525,6,2015,26,25,201506,2015),('2015-06-27',201525,6,2015,27,25,201506,2015),('2015-06-28',201526,6,2015,28,26,201506,2015),('2015-06-29',201526,6,2015,29,26,201506,2015),('2015-06-30',201526,6,2015,30,26,201506,2015),('2015-07-01',201526,7,2015,1,26,201507,2015),('2015-07-02',201526,7,2015,2,26,201507,2015),('2015-07-03',201526,7,2015,3,26,201507,2015),('2015-07-04',201526,7,2015,4,26,201507,2015),('2015-07-05',201527,7,2015,5,27,201507,2015),('2015-07-06',201527,7,2015,6,27,201507,2015),('2015-07-07',201527,7,2015,7,27,201507,2015),('2015-07-08',201527,7,2015,8,27,201507,2015),('2015-07-09',201527,7,2015,9,27,201507,2015),('2015-07-10',201527,7,2015,10,27,201507,2015),('2015-07-11',201527,7,2015,11,27,201507,2015),('2015-07-12',201528,7,2015,12,28,201507,2015),('2015-07-13',201528,7,2015,13,28,201507,2015),('2015-07-14',201528,7,2015,14,28,201507,2015),('2015-07-15',201528,7,2015,15,28,201507,2015),('2015-07-16',201528,7,2015,16,28,201507,2015),('2015-07-17',201528,7,2015,17,28,201507,2015),('2015-07-18',201528,7,2015,18,28,201507,2015),('2015-07-19',201529,7,2015,19,29,201507,2015),('2015-07-20',201529,7,2015,20,29,201507,2015),('2015-07-21',201529,7,2015,21,29,201507,2015),('2015-07-22',201529,7,2015,22,29,201507,2015),('2015-07-23',201529,7,2015,23,29,201507,2015),('2015-07-24',201529,7,2015,24,29,201507,2015),('2015-07-25',201529,7,2015,25,29,201507,2015),('2015-07-26',201530,7,2015,26,30,201507,2015),('2015-07-27',201530,7,2015,27,30,201507,2015),('2015-07-28',201530,7,2015,28,30,201507,2015),('2015-07-29',201530,7,2015,29,30,201507,2015),('2015-07-30',201530,7,2015,30,30,201507,2015),('2015-07-31',201530,7,2015,31,30,201507,2015),('2015-08-01',201530,8,2015,1,30,201508,2015),('2015-08-02',201531,8,2015,2,31,201508,2015),('2015-08-03',201531,8,2015,3,31,201508,2015),('2015-08-04',201531,8,2015,4,31,201508,2015),('2015-08-05',201531,8,2015,5,31,201508,2015),('2015-08-06',201531,8,2015,6,31,201508,2015),('2015-08-07',201531,8,2015,7,31,201508,2015),('2015-08-08',201531,8,2015,8,31,201508,2015),('2015-08-09',201532,8,2015,9,32,201508,2015),('2015-08-10',201532,8,2015,10,32,201508,2015),('2015-08-11',201532,8,2015,11,32,201508,2015),('2015-08-12',201532,8,2015,12,32,201508,2015),('2015-08-13',201532,8,2015,13,32,201508,2015),('2015-08-14',201532,8,2015,14,32,201508,2015),('2015-08-15',201532,8,2015,15,32,201508,2015),('2015-08-16',201533,8,2015,16,33,201508,2015),('2015-08-17',201533,8,2015,17,33,201508,2015),('2015-08-18',201533,8,2015,18,33,201508,2015),('2015-08-19',201533,8,2015,19,33,201508,2015),('2015-08-20',201533,8,2015,20,33,201508,2015),('2015-08-21',201533,8,2015,21,33,201508,2015),('2015-08-22',201533,8,2015,22,33,201508,2015),('2015-08-23',201534,8,2015,23,34,201508,2015),('2015-08-24',201534,8,2015,24,34,201508,2015),('2015-08-25',201534,8,2015,25,34,201508,2015),('2015-08-26',201534,8,2015,26,34,201508,2015),('2015-08-27',201534,8,2015,27,34,201508,2015),('2015-08-28',201534,8,2015,28,34,201508,2015),('2015-08-29',201534,8,2015,29,34,201508,2015),('2015-08-30',201535,8,2015,30,35,201508,2015),('2015-08-31',201535,8,2015,31,35,201508,2015),('2015-09-01',201535,9,2015,1,35,201509,2015),('2015-09-02',201535,9,2015,2,35,201509,2015),('2015-09-03',201535,9,2015,3,35,201509,2015),('2015-09-04',201535,9,2015,4,35,201509,2015),('2015-09-05',201535,9,2015,5,35,201509,2015),('2015-09-06',201536,9,2015,6,36,201509,2015),('2015-09-07',201536,9,2015,7,36,201509,2015),('2015-09-08',201536,9,2015,8,36,201509,2015),('2015-09-09',201536,9,2015,9,36,201509,2015),('2015-09-10',201536,9,2015,10,36,201509,2015),('2015-09-11',201536,9,2015,11,36,201509,2015),('2015-09-12',201536,9,2015,12,36,201509,2015),('2015-09-13',201537,9,2015,13,37,201509,2015),('2015-09-14',201537,9,2015,14,37,201509,2015),('2015-09-15',201537,9,2015,15,37,201509,2015),('2015-09-16',201537,9,2015,16,37,201509,2015),('2015-09-17',201537,9,2015,17,37,201509,2015),('2015-09-18',201537,9,2015,18,37,201509,2015),('2015-09-19',201537,9,2015,19,37,201509,2015),('2015-09-20',201538,9,2015,20,38,201509,2015),('2015-09-21',201538,9,2015,21,38,201509,2015),('2015-09-22',201538,9,2015,22,38,201509,2015),('2015-09-23',201538,9,2015,23,38,201509,2015),('2015-09-24',201538,9,2015,24,38,201509,2015),('2015-09-25',201538,9,2015,25,38,201509,2015),('2015-09-26',201538,9,2015,26,38,201509,2015),('2015-09-27',201539,9,2015,27,39,201509,2015),('2015-09-28',201539,9,2015,28,39,201509,2015),('2015-09-29',201539,9,2015,29,39,201509,2015),('2015-09-30',201539,9,2015,30,39,201509,2015),('2015-10-01',201539,10,2015,1,39,201510,2015),('2015-10-02',201539,10,2015,2,39,201510,2015),('2015-10-03',201539,10,2015,3,39,201510,2015),('2015-10-04',201540,10,2015,4,40,201510,2015),('2015-10-05',201540,10,2015,5,40,201510,2015),('2015-10-06',201540,10,2015,6,40,201510,2015),('2015-10-07',201540,10,2015,7,40,201510,2015),('2015-10-08',201540,10,2015,8,40,201510,2015),('2015-10-09',201540,10,2015,9,40,201510,2015),('2015-10-10',201540,10,2015,10,40,201510,2015),('2015-10-11',201541,10,2015,11,41,201510,2015),('2015-10-12',201541,10,2015,12,41,201510,2015),('2015-10-13',201541,10,2015,13,41,201510,2015),('2015-10-14',201541,10,2015,14,41,201510,2015),('2015-10-15',201541,10,2015,15,41,201510,2015),('2015-10-16',201541,10,2015,16,41,201510,2015),('2015-10-17',201541,10,2015,17,41,201510,2015),('2015-10-18',201542,10,2015,18,42,201510,2015),('2015-10-19',201542,10,2015,19,42,201510,2015),('2015-10-20',201542,10,2015,20,42,201510,2015),('2015-10-21',201542,10,2015,21,42,201510,2015),('2015-10-22',201542,10,2015,22,42,201510,2015),('2015-10-23',201542,10,2015,23,42,201510,2015),('2015-10-24',201542,10,2015,24,42,201510,2015),('2015-10-25',201543,10,2015,25,43,201510,2015),('2015-10-26',201543,10,2015,26,43,201510,2015),('2015-10-27',201543,10,2015,27,43,201510,2015),('2015-10-28',201543,10,2015,28,43,201510,2015),('2015-10-29',201543,10,2015,29,43,201510,2015),('2015-10-30',201543,10,2015,30,43,201510,2015),('2015-10-31',201543,10,2015,31,43,201510,2015),('2015-11-01',201544,11,2015,1,44,201511,2015),('2015-11-02',201544,11,2015,2,44,201511,2015),('2015-11-03',201544,11,2015,3,44,201511,2015),('2015-11-04',201544,11,2015,4,44,201511,2015),('2015-11-05',201544,11,2015,5,44,201511,2015),('2015-11-06',201544,11,2015,6,44,201511,2015),('2015-11-07',201544,11,2015,7,44,201511,2015),('2015-11-08',201545,11,2015,8,45,201511,2015),('2015-11-09',201545,11,2015,9,45,201511,2015),('2015-11-10',201545,11,2015,10,45,201511,2015),('2015-11-11',201545,11,2015,11,45,201511,2015),('2015-11-12',201545,11,2015,12,45,201511,2015),('2015-11-13',201545,11,2015,13,45,201511,2015),('2015-11-14',201545,11,2015,14,45,201511,2015),('2015-11-15',201546,11,2015,15,46,201511,2015),('2015-11-16',201546,11,2015,16,46,201511,2015),('2015-11-17',201546,11,2015,17,46,201511,2015),('2015-11-18',201546,11,2015,18,46,201511,2015),('2015-11-19',201546,11,2015,19,46,201511,2015),('2015-11-20',201546,11,2015,20,46,201511,2015),('2015-11-21',201546,11,2015,21,46,201511,2015),('2015-11-22',201547,11,2015,22,47,201511,2015),('2015-11-23',201547,11,2015,23,47,201511,2015),('2015-11-24',201547,11,2015,24,47,201511,2015),('2015-11-25',201547,11,2015,25,47,201511,2015),('2015-11-26',201547,11,2015,26,47,201511,2015),('2015-11-27',201547,11,2015,27,47,201511,2015),('2015-11-28',201547,11,2015,28,47,201511,2015),('2015-11-29',201548,11,2015,29,48,201511,2015),('2015-11-30',201548,11,2015,30,48,201511,2015),('2015-12-01',201548,12,2015,1,48,201512,2016),('2015-12-02',201548,12,2015,2,48,201512,2016),('2015-12-03',201548,12,2015,3,48,201512,2016),('2015-12-04',201548,12,2015,4,48,201512,2016),('2015-12-05',201548,12,2015,5,48,201512,2016),('2015-12-06',201549,12,2015,6,49,201512,2016),('2015-12-07',201549,12,2015,7,49,201512,2016),('2015-12-08',201549,12,2015,8,49,201512,2016),('2015-12-09',201549,12,2015,9,49,201512,2016),('2015-12-10',201549,12,2015,10,49,201512,2016),('2015-12-11',201549,12,2015,11,49,201512,2016),('2015-12-12',201549,12,2015,12,49,201512,2016),('2015-12-13',201550,12,2015,13,50,201512,2016),('2015-12-14',201550,12,2015,14,50,201512,2016),('2015-12-15',201550,12,2015,15,50,201512,2016),('2015-12-16',201550,12,2015,16,50,201512,2016),('2015-12-17',201550,12,2015,17,50,201512,2016),('2015-12-18',201550,12,2015,18,50,201512,2016),('2015-12-19',201550,12,2015,19,50,201512,2016),('2015-12-20',201551,12,2015,20,51,201512,2016),('2015-12-21',201551,12,2015,21,51,201512,2016),('2015-12-22',201551,12,2015,22,51,201512,2016),('2015-12-23',201551,12,2015,23,51,201512,2016),('2015-12-24',201551,12,2015,24,51,201512,2016),('2015-12-25',201551,12,2015,25,51,201512,2016),('2015-12-26',201551,12,2015,26,51,201512,2016),('2015-12-27',201552,12,2015,27,52,201512,2016),('2015-12-28',201552,12,2015,28,52,201512,2016),('2015-12-29',201552,12,2015,29,52,201512,2016),('2015-12-30',201552,12,2015,30,52,201512,2016),('2015-12-31',201552,12,2015,31,52,201512,2016),('2016-01-01',201552,1,2016,1,1,201601,2016),('2016-01-02',201552,1,2016,2,1,201601,2016),('2016-01-03',201601,1,2016,3,1,201601,2016),('2016-01-04',201601,1,2016,4,1,201601,2016),('2016-01-05',201601,1,2016,5,1,201601,2016),('2016-01-06',201601,1,2016,6,1,201601,2016),('2016-01-07',201601,1,2016,7,1,201601,2016),('2016-01-08',201601,1,2016,8,1,201601,2016),('2016-01-09',201601,1,2016,9,1,201601,2016),('2016-01-10',201602,1,2016,10,2,201601,2016),('2016-01-11',201602,1,2016,11,2,201601,2016),('2016-01-12',201602,1,2016,12,2,201601,2016),('2016-01-13',201602,1,2016,13,2,201601,2016),('2016-01-14',201602,1,2016,14,2,201601,2016),('2016-01-15',201602,1,2016,15,2,201601,2016),('2016-01-16',201602,1,2016,16,2,201601,2016),('2016-01-17',201603,1,2016,17,3,201601,2016),('2016-01-18',201603,1,2016,18,3,201601,2016),('2016-01-19',201603,1,2016,19,3,201601,2016),('2016-01-20',201603,1,2016,20,3,201601,2016),('2016-01-21',201603,1,2016,21,3,201601,2016),('2016-01-22',201603,1,2016,22,3,201601,2016),('2016-01-23',201603,1,2016,23,3,201601,2016),('2016-01-24',201604,1,2016,24,4,201601,2016),('2016-01-25',201604,1,2016,25,4,201601,2016),('2016-01-26',201604,1,2016,26,4,201601,2016),('2016-01-27',201604,1,2016,27,4,201601,2016),('2016-01-28',201604,1,2016,28,4,201601,2016),('2016-01-29',201604,1,2016,29,4,201601,2016),('2016-01-30',201604,1,2016,30,4,201601,2016),('2016-01-31',201605,1,2016,31,5,201601,2016),('2016-02-01',201605,2,2016,1,5,201602,2016),('2016-02-02',201605,2,2016,2,5,201602,2016),('2016-02-03',201605,2,2016,3,5,201602,2016),('2016-02-04',201605,2,2016,4,5,201602,2016),('2016-02-05',201605,2,2016,5,5,201602,2016),('2016-02-06',201605,2,2016,6,5,201602,2016),('2016-02-07',201606,2,2016,7,6,201602,2016),('2016-02-08',201606,2,2016,8,6,201602,2016),('2016-02-09',201606,2,2016,9,6,201602,2016),('2016-02-10',201606,2,2016,10,6,201602,2016),('2016-02-11',201606,2,2016,11,6,201602,2016),('2016-02-12',201606,2,2016,12,6,201602,2016),('2016-02-13',201606,2,2016,13,6,201602,2016),('2016-02-14',201607,2,2016,14,7,201602,2016),('2016-02-15',201607,2,2016,15,7,201602,2016),('2016-02-16',201607,2,2016,16,7,201602,2016),('2016-02-17',201607,2,2016,17,7,201602,2016),('2016-02-18',201607,2,2016,18,7,201602,2016),('2016-02-19',201607,2,2016,19,7,201602,2016),('2016-02-20',201607,2,2016,20,7,201602,2016),('2016-02-21',201608,2,2016,21,8,201602,2016),('2016-02-22',201608,2,2016,22,8,201602,2016),('2016-02-23',201608,2,2016,23,8,201602,2016),('2016-02-24',201608,2,2016,24,8,201602,2016),('2016-02-25',201608,2,2016,25,8,201602,2016),('2016-02-26',201608,2,2016,26,8,201602,2016),('2016-02-27',201608,2,2016,27,8,201602,2016),('2016-02-28',201609,2,2016,28,9,201602,2016),('2016-02-29',201609,2,2016,29,9,201602,2016),('2016-03-01',201609,3,2016,1,9,201603,2016),('2016-03-02',201609,3,2016,2,9,201603,2016),('2016-03-03',201609,3,2016,3,9,201603,2016),('2016-03-04',201609,3,2016,4,9,201603,2016),('2016-03-05',201609,3,2016,5,9,201603,2016),('2016-03-06',201610,3,2016,6,10,201603,2016),('2016-03-07',201610,3,2016,7,10,201603,2016),('2016-03-08',201610,3,2016,8,10,201603,2016),('2016-03-09',201610,3,2016,9,10,201603,2016),('2016-03-10',201610,3,2016,10,10,201603,2016),('2016-03-11',201610,3,2016,11,10,201603,2016),('2016-03-12',201610,3,2016,12,10,201603,2016),('2016-03-13',201611,3,2016,13,11,201603,2016),('2016-03-14',201611,3,2016,14,11,201603,2016),('2016-03-15',201611,3,2016,15,11,201603,2016),('2016-03-16',201611,3,2016,16,11,201603,2016),('2016-03-17',201611,3,2016,17,11,201603,2016),('2016-03-18',201611,3,2016,18,11,201603,2016),('2016-03-19',201611,3,2016,19,11,201603,2016),('2016-03-20',201612,3,2016,20,12,201603,2016),('2016-03-21',201612,3,2016,21,12,201603,2016),('2016-03-22',201612,3,2016,22,12,201603,2016),('2016-03-23',201612,3,2016,23,12,201603,2016),('2016-03-24',201612,3,2016,24,12,201603,2016),('2016-03-25',201612,3,2016,25,12,201603,2016),('2016-03-26',201612,3,2016,26,12,201603,2016),('2016-03-27',201613,3,2016,27,13,201603,2016),('2016-03-28',201613,3,2016,28,13,201603,2016),('2016-03-29',201613,3,2016,29,13,201603,2016),('2016-03-30',201613,3,2016,30,13,201603,2016),('2016-03-31',201613,3,2016,31,13,201603,2016),('2016-04-01',201613,4,2016,1,13,201604,2016),('2016-04-02',201613,4,2016,2,13,201604,2016),('2016-04-03',201614,4,2016,3,14,201604,2016),('2016-04-04',201614,4,2016,4,14,201604,2016),('2016-04-05',201614,4,2016,5,14,201604,2016),('2016-04-06',201614,4,2016,6,14,201604,2016),('2016-04-07',201614,4,2016,7,14,201604,2016),('2016-04-08',201614,4,2016,8,14,201604,2016),('2016-04-09',201614,4,2016,9,14,201604,2016),('2016-04-10',201615,4,2016,10,15,201604,2016),('2016-04-11',201615,4,2016,11,15,201604,2016),('2016-04-12',201615,4,2016,12,15,201604,2016),('2016-04-13',201615,4,2016,13,15,201604,2016),('2016-04-14',201615,4,2016,14,15,201604,2016),('2016-04-15',201615,4,2016,15,15,201604,2016),('2016-04-16',201615,4,2016,16,15,201604,2016),('2016-04-17',201616,4,2016,17,16,201604,2016),('2016-04-18',201616,4,2016,18,16,201604,2016),('2016-04-19',201616,4,2016,19,16,201604,2016),('2016-04-20',201616,4,2016,20,16,201604,2016),('2016-04-21',201616,4,2016,21,16,201604,2016),('2016-04-22',201616,4,2016,22,16,201604,2016),('2016-04-23',201616,4,2016,23,16,201604,2016),('2016-04-24',201617,4,2016,24,17,201604,2016),('2016-04-25',201617,4,2016,25,17,201604,2016),('2016-04-26',201617,4,2016,26,17,201604,2016),('2016-04-27',201617,4,2016,27,17,201604,2016),('2016-04-28',201617,4,2016,28,17,201604,2016),('2016-04-29',201617,4,2016,29,17,201604,2016),('2016-04-30',201617,4,2016,30,17,201604,2016),('2016-05-01',201618,5,2016,1,18,201605,2016),('2016-05-02',201618,5,2016,2,18,201605,2016),('2016-05-03',201618,5,2016,3,18,201605,2016),('2016-05-04',201618,5,2016,4,18,201605,2016),('2016-05-05',201618,5,2016,5,18,201605,2016),('2016-05-06',201618,5,2016,6,18,201605,2016),('2016-05-07',201618,5,2016,7,18,201605,2016),('2016-05-08',201619,5,2016,8,19,201605,2016),('2016-05-09',201619,5,2016,9,19,201605,2016),('2016-05-10',201619,5,2016,10,19,201605,2016),('2016-05-11',201619,5,2016,11,19,201605,2016),('2016-05-12',201619,5,2016,12,19,201605,2016),('2016-05-13',201619,5,2016,13,19,201605,2016),('2016-05-14',201619,5,2016,14,19,201605,2016),('2016-05-15',201620,5,2016,15,20,201605,2016),('2016-05-16',201620,5,2016,16,20,201605,2016),('2016-05-17',201620,5,2016,17,20,201605,2016),('2016-05-18',201620,5,2016,18,20,201605,2016),('2016-05-19',201620,5,2016,19,20,201605,2016),('2016-05-20',201620,5,2016,20,20,201605,2016),('2016-05-21',201620,5,2016,21,20,201605,2016),('2016-05-22',201621,5,2016,22,21,201605,2016),('2016-05-23',201621,5,2016,23,21,201605,2016),('2016-05-24',201621,5,2016,24,21,201605,2016),('2016-05-25',201621,5,2016,25,21,201605,2016),('2016-05-26',201621,5,2016,26,21,201605,2016),('2016-05-27',201621,5,2016,27,21,201605,2016),('2016-05-28',201621,5,2016,28,21,201605,2016),('2016-05-29',201622,5,2016,29,22,201605,2016),('2016-05-30',201622,5,2016,30,22,201605,2016),('2016-05-31',201622,5,2016,31,22,201605,2016),('2016-06-01',201622,6,2016,1,22,201606,2016),('2016-06-02',201622,6,2016,2,22,201606,2016),('2016-06-03',201622,6,2016,3,22,201606,2016),('2016-06-04',201622,6,2016,4,22,201606,2016),('2016-06-05',201623,6,2016,5,23,201606,2016),('2016-06-06',201623,6,2016,6,23,201606,2016),('2016-06-07',201623,6,2016,7,23,201606,2016),('2016-06-08',201623,6,2016,8,23,201606,2016),('2016-06-09',201623,6,2016,9,23,201606,2016),('2016-06-10',201623,6,2016,10,23,201606,2016),('2016-06-11',201623,6,2016,11,23,201606,2016),('2016-06-12',201624,6,2016,12,24,201606,2016),('2016-06-13',201624,6,2016,13,24,201606,2016),('2016-06-14',201624,6,2016,14,24,201606,2016),('2016-06-15',201624,6,2016,15,24,201606,2016),('2016-06-16',201624,6,2016,16,24,201606,2016),('2016-06-17',201624,6,2016,17,24,201606,2016),('2016-06-18',201624,6,2016,18,24,201606,2016),('2016-06-19',201625,6,2016,19,25,201606,2016),('2016-06-20',201625,6,2016,20,25,201606,2016),('2016-06-21',201625,6,2016,21,25,201606,2016),('2016-06-22',201625,6,2016,22,25,201606,2016),('2016-06-23',201625,6,2016,23,25,201606,2016),('2016-06-24',201625,6,2016,24,25,201606,2016),('2016-06-25',201625,6,2016,25,25,201606,2016),('2016-06-26',201626,6,2016,26,26,201606,2016),('2016-06-27',201626,6,2016,27,26,201606,2016),('2016-06-28',201626,6,2016,28,26,201606,2016),('2016-06-29',201626,6,2016,29,26,201606,2016),('2016-06-30',201626,6,2016,30,26,201606,2016),('2016-07-01',201626,7,2016,1,26,201607,2016),('2016-07-02',201626,7,2016,2,26,201607,2016),('2016-07-03',201627,7,2016,3,27,201607,2016),('2016-07-04',201627,7,2016,4,27,201607,2016),('2016-07-05',201627,7,2016,5,27,201607,2016),('2016-07-06',201627,7,2016,6,27,201607,2016),('2016-07-07',201627,7,2016,7,27,201607,2016),('2016-07-08',201627,7,2016,8,27,201607,2016),('2016-07-09',201627,7,2016,9,27,201607,2016),('2016-07-10',201628,7,2016,10,28,201607,2016),('2016-07-11',201628,7,2016,11,28,201607,2016),('2016-07-12',201628,7,2016,12,28,201607,2016),('2016-07-13',201628,7,2016,13,28,201607,2016),('2016-07-14',201628,7,2016,14,28,201607,2016),('2016-07-15',201628,7,2016,15,28,201607,2016),('2016-07-16',201628,7,2016,16,28,201607,2016),('2016-07-17',201629,7,2016,17,29,201607,2016),('2016-07-18',201629,7,2016,18,29,201607,2016),('2016-07-19',201629,7,2016,19,29,201607,2016),('2016-07-20',201629,7,2016,20,29,201607,2016),('2016-07-21',201629,7,2016,21,29,201607,2016),('2016-07-22',201629,7,2016,22,29,201607,2016),('2016-07-23',201629,7,2016,23,29,201607,2016),('2016-07-24',201630,7,2016,24,30,201607,2016),('2016-07-25',201630,7,2016,25,30,201607,2016),('2016-07-26',201630,7,2016,26,30,201607,2016),('2016-07-27',201630,7,2016,27,30,201607,2016),('2016-07-28',201630,7,2016,28,30,201607,2016),('2016-07-29',201630,7,2016,29,30,201607,2016),('2016-07-30',201630,7,2016,30,30,201607,2016),('2016-07-31',201631,7,2016,31,31,201607,2016),('2016-08-01',201631,8,2016,1,31,201608,2016),('2016-08-02',201631,8,2016,2,31,201608,2016),('2016-08-03',201631,8,2016,3,31,201608,2016),('2016-08-04',201631,8,2016,4,31,201608,2016),('2016-08-05',201631,8,2016,5,31,201608,2016),('2016-08-06',201631,8,2016,6,31,201608,2016),('2016-08-07',201632,8,2016,7,32,201608,2016),('2016-08-08',201632,8,2016,8,32,201608,2016),('2016-08-09',201632,8,2016,9,32,201608,2016),('2016-08-10',201632,8,2016,10,32,201608,2016),('2016-08-11',201632,8,2016,11,32,201608,2016),('2016-08-12',201632,8,2016,12,32,201608,2016),('2016-08-13',201632,8,2016,13,32,201608,2016),('2016-08-14',201633,8,2016,14,33,201608,2016),('2016-08-15',201633,8,2016,15,33,201608,2016),('2016-08-16',201633,8,2016,16,33,201608,2016),('2016-08-17',201633,8,2016,17,33,201608,2016),('2016-08-18',201633,8,2016,18,33,201608,2016),('2016-08-19',201633,8,2016,19,33,201608,2016),('2016-08-20',201633,8,2016,20,33,201608,2016),('2016-08-21',201634,8,2016,21,34,201608,2016),('2016-08-22',201634,8,2016,22,34,201608,2016),('2016-08-23',201634,8,2016,23,34,201608,2016),('2016-08-24',201634,8,2016,24,34,201608,2016),('2016-08-25',201634,8,2016,25,34,201608,2016),('2016-08-26',201634,8,2016,26,34,201608,2016),('2016-08-27',201634,8,2016,27,34,201608,2016),('2016-08-28',201635,8,2016,28,35,201608,2016),('2016-08-29',201635,8,2016,29,35,201608,2016),('2016-08-30',201635,8,2016,30,35,201608,2016),('2016-08-31',201635,8,2016,31,35,201608,2016),('2016-09-01',201635,9,2016,1,35,201609,2016),('2016-09-02',201635,9,2016,2,35,201609,2016),('2016-09-03',201635,9,2016,3,35,201609,2016),('2016-09-04',201636,9,2016,4,36,201609,2016),('2016-09-05',201636,9,2016,5,36,201609,2016),('2016-09-06',201636,9,2016,6,36,201609,2016),('2016-09-07',201636,9,2016,7,36,201609,2016),('2016-09-08',201636,9,2016,8,36,201609,2016),('2016-09-09',201636,9,2016,9,36,201609,2016),('2016-09-10',201636,9,2016,10,36,201609,2016),('2016-09-11',201637,9,2016,11,37,201609,2016),('2016-09-12',201637,9,2016,12,37,201609,2016),('2016-09-13',201637,9,2016,13,37,201609,2016),('2016-09-14',201637,9,2016,14,37,201609,2016),('2016-09-15',201637,9,2016,15,37,201609,2016),('2016-09-16',201637,9,2016,16,37,201609,2016),('2016-09-17',201637,9,2016,17,37,201609,2016),('2016-09-18',201638,9,2016,18,38,201609,2016),('2016-09-19',201638,9,2016,19,38,201609,2016),('2016-09-20',201638,9,2016,20,38,201609,2016),('2016-09-21',201638,9,2016,21,38,201609,2016),('2016-09-22',201638,9,2016,22,38,201609,2016),('2016-09-23',201638,9,2016,23,38,201609,2016),('2016-09-24',201638,9,2016,24,38,201609,2016),('2016-09-25',201639,9,2016,25,39,201609,2016),('2016-09-26',201639,9,2016,26,39,201609,2016),('2016-09-27',201639,9,2016,27,39,201609,2016),('2016-09-28',201639,9,2016,28,39,201609,2016),('2016-09-29',201639,9,2016,29,39,201609,2016),('2016-09-30',201639,9,2016,30,39,201609,2016),('2016-10-01',201639,10,2016,1,39,201610,2016),('2016-10-02',201640,10,2016,2,40,201610,2016),('2016-10-03',201640,10,2016,3,40,201610,2016),('2016-10-04',201640,10,2016,4,40,201610,2016),('2016-10-05',201640,10,2016,5,40,201610,2016),('2016-10-06',201640,10,2016,6,40,201610,2016),('2016-10-07',201640,10,2016,7,40,201610,2016),('2016-10-08',201640,10,2016,8,40,201610,2016),('2016-10-09',201641,10,2016,9,41,201610,2016),('2016-10-10',201641,10,2016,10,41,201610,2016),('2016-10-11',201641,10,2016,11,41,201610,2016),('2016-10-12',201641,10,2016,12,41,201610,2016),('2016-10-13',201641,10,2016,13,41,201610,2016),('2016-10-14',201641,10,2016,14,41,201610,2016),('2016-10-15',201641,10,2016,15,41,201610,2016),('2016-10-16',201642,10,2016,16,42,201610,2016),('2016-10-17',201642,10,2016,17,42,201610,2016),('2016-10-18',201642,10,2016,18,42,201610,2016),('2016-10-19',201642,10,2016,19,42,201610,2016),('2016-10-20',201642,10,2016,20,42,201610,2016),('2016-10-21',201642,10,2016,21,42,201610,2016),('2016-10-22',201642,10,2016,22,42,201610,2016),('2016-10-23',201643,10,2016,23,43,201610,2016),('2016-10-24',201643,10,2016,24,43,201610,2016),('2016-10-25',201643,10,2016,25,43,201610,2016),('2016-10-26',201643,10,2016,26,43,201610,2016),('2016-10-27',201643,10,2016,27,43,201610,2016),('2016-10-28',201643,10,2016,28,43,201610,2016),('2016-10-29',201643,10,2016,29,43,201610,2016),('2016-10-30',201644,10,2016,30,44,201610,2016),('2016-10-31',201644,10,2016,31,44,201610,2016),('2016-11-01',201644,11,2016,1,44,201611,2016),('2016-11-02',201644,11,2016,2,44,201611,2016),('2016-11-03',201644,11,2016,3,44,201611,2016),('2016-11-04',201644,11,2016,4,44,201611,2016),('2016-11-05',201644,11,2016,5,44,201611,2016),('2016-11-06',201645,11,2016,6,45,201611,2016),('2016-11-07',201645,11,2016,7,45,201611,2016),('2016-11-08',201645,11,2016,8,45,201611,2016),('2016-11-09',201645,11,2016,9,45,201611,2016),('2016-11-10',201645,11,2016,10,45,201611,2016),('2016-11-11',201645,11,2016,11,45,201611,2016),('2016-11-12',201645,11,2016,12,45,201611,2016),('2016-11-13',201646,11,2016,13,46,201611,2016),('2016-11-14',201646,11,2016,14,46,201611,2016),('2016-11-15',201646,11,2016,15,46,201611,2016),('2016-11-16',201646,11,2016,16,46,201611,2016),('2016-11-17',201646,11,2016,17,46,201611,2016),('2016-11-18',201646,11,2016,18,46,201611,2016),('2016-11-19',201646,11,2016,19,46,201611,2016),('2016-11-20',201647,11,2016,20,47,201611,2016),('2016-11-21',201647,11,2016,21,47,201611,2016),('2016-11-22',201647,11,2016,22,47,201611,2016),('2016-11-23',201647,11,2016,23,47,201611,2016),('2016-11-24',201647,11,2016,24,47,201611,2016),('2016-11-25',201647,11,2016,25,47,201611,2016),('2016-11-26',201647,11,2016,26,47,201611,2016),('2016-11-27',201648,11,2016,27,48,201611,2016),('2016-11-28',201648,11,2016,28,48,201611,2016),('2016-11-29',201648,11,2016,29,48,201611,2016),('2016-11-30',201648,11,2016,30,48,201611,2016),('2016-12-01',201648,12,2016,1,48,201612,2017),('2016-12-02',201648,12,2016,2,48,201612,2017),('2016-12-03',201648,12,2016,3,48,201612,2017),('2016-12-04',201649,12,2016,4,49,201612,2017),('2016-12-05',201649,12,2016,5,49,201612,2017),('2016-12-06',201649,12,2016,6,49,201612,2017),('2016-12-07',201649,12,2016,7,49,201612,2017),('2016-12-08',201649,12,2016,8,49,201612,2017),('2016-12-09',201649,12,2016,9,49,201612,2017),('2016-12-10',201649,12,2016,10,49,201612,2017),('2016-12-11',201650,12,2016,11,50,201612,2017),('2016-12-12',201650,12,2016,12,50,201612,2017),('2016-12-13',201650,12,2016,13,50,201612,2017),('2016-12-14',201650,12,2016,14,50,201612,2017),('2016-12-15',201650,12,2016,15,50,201612,2017),('2016-12-16',201650,12,2016,16,50,201612,2017),('2016-12-17',201650,12,2016,17,50,201612,2017),('2016-12-18',201651,12,2016,18,51,201612,2017),('2016-12-19',201651,12,2016,19,51,201612,2017),('2016-12-20',201651,12,2016,20,51,201612,2017),('2016-12-21',201651,12,2016,21,51,201612,2017),('2016-12-22',201651,12,2016,22,51,201612,2017),('2016-12-23',201651,12,2016,23,51,201612,2017),('2016-12-24',201651,12,2016,24,51,201612,2017),('2016-12-25',201652,12,2016,25,52,201612,2017),('2016-12-26',201652,12,2016,26,52,201612,2017),('2016-12-27',201652,12,2016,27,52,201612,2017),('2016-12-28',201652,12,2016,28,52,201612,2017),('2016-12-29',201652,12,2016,29,52,201612,2017),('2016-12-30',201652,12,2016,30,52,201612,2017),('2016-12-31',201652,12,2016,31,52,201612,2017),('2017-01-01',201701,1,2017,1,1,201701,2017),('2017-01-02',201701,1,2017,2,1,201701,2017),('2017-01-03',201701,1,2017,3,1,201701,2017),('2017-01-04',201701,1,2017,4,1,201701,2017),('2017-01-05',201701,1,2017,5,1,201701,2017),('2017-01-06',201701,1,2017,6,1,201701,2017),('2017-01-07',201701,1,2017,7,1,201701,2017),('2017-01-08',201702,1,2017,8,2,201701,2017),('2017-01-09',201702,1,2017,9,2,201701,2017),('2017-01-10',201702,1,2017,10,2,201701,2017),('2017-01-11',201702,1,2017,11,2,201701,2017),('2017-01-12',201702,1,2017,12,2,201701,2017),('2017-01-13',201702,1,2017,13,2,201701,2017),('2017-01-14',201702,1,2017,14,2,201701,2017),('2017-01-15',201703,1,2017,15,3,201701,2017),('2017-01-16',201703,1,2017,16,3,201701,2017),('2017-01-17',201703,1,2017,17,3,201701,2017),('2017-01-18',201703,1,2017,18,3,201701,2017),('2017-01-19',201703,1,2017,19,3,201701,2017),('2017-01-20',201703,1,2017,20,3,201701,2017),('2017-01-21',201703,1,2017,21,3,201701,2017),('2017-01-22',201704,1,2017,22,4,201701,2017),('2017-01-23',201704,1,2017,23,4,201701,2017),('2017-01-24',201704,1,2017,24,4,201701,2017),('2017-01-25',201704,1,2017,25,4,201701,2017),('2017-01-26',201704,1,2017,26,4,201701,2017),('2017-01-27',201704,1,2017,27,4,201701,2017),('2017-01-28',201704,1,2017,28,4,201701,2017),('2017-01-29',201705,1,2017,29,5,201701,2017),('2017-01-30',201705,1,2017,30,5,201701,2017),('2017-01-31',201705,1,2017,31,5,201701,2017),('2017-02-01',201705,2,2017,1,5,201702,2017),('2017-02-02',201705,2,2017,2,5,201702,2017),('2017-02-03',201705,2,2017,3,5,201702,2017),('2017-02-04',201705,2,2017,4,5,201702,2017),('2017-02-05',201706,2,2017,5,6,201702,2017),('2017-02-06',201706,2,2017,6,6,201702,2017),('2017-02-07',201706,2,2017,7,6,201702,2017),('2017-02-08',201706,2,2017,8,6,201702,2017),('2017-02-09',201706,2,2017,9,6,201702,2017),('2017-02-10',201706,2,2017,10,6,201702,2017),('2017-02-11',201706,2,2017,11,6,201702,2017),('2017-02-12',201707,2,2017,12,7,201702,2017),('2017-02-13',201707,2,2017,13,7,201702,2017),('2017-02-14',201707,2,2017,14,7,201702,2017),('2017-02-15',201707,2,2017,15,7,201702,2017),('2017-02-16',201707,2,2017,16,7,201702,2017),('2017-02-17',201707,2,2017,17,7,201702,2017),('2017-02-18',201707,2,2017,18,7,201702,2017),('2017-02-19',201708,2,2017,19,8,201702,2017),('2017-02-20',201708,2,2017,20,8,201702,2017),('2017-02-21',201708,2,2017,21,8,201702,2017),('2017-02-22',201708,2,2017,22,8,201702,2017),('2017-02-23',201708,2,2017,23,8,201702,2017),('2017-02-24',201708,2,2017,24,8,201702,2017),('2017-02-25',201708,2,2017,25,8,201702,2017),('2017-02-26',201709,2,2017,26,9,201702,2017),('2017-02-27',201709,2,2017,27,9,201702,2017),('2017-02-28',201709,2,2017,28,9,201702,2017),('2017-03-01',201709,3,2017,1,9,201703,2017),('2017-03-02',201709,3,2017,2,9,201703,2017),('2017-03-03',201709,3,2017,3,9,201703,2017),('2017-03-04',201709,3,2017,4,9,201703,2017),('2017-03-05',201710,3,2017,5,10,201703,2017),('2017-03-06',201710,3,2017,6,10,201703,2017),('2017-03-07',201710,3,2017,7,10,201703,2017),('2017-03-08',201710,3,2017,8,10,201703,2017),('2017-03-09',201710,3,2017,9,10,201703,2017),('2017-03-10',201710,3,2017,10,10,201703,2017),('2017-03-11',201710,3,2017,11,10,201703,2017),('2017-03-12',201711,3,2017,12,11,201703,2017),('2017-03-13',201711,3,2017,13,11,201703,2017),('2017-03-14',201711,3,2017,14,11,201703,2017),('2017-03-15',201711,3,2017,15,11,201703,2017),('2017-03-16',201711,3,2017,16,11,201703,2017),('2017-03-17',201711,3,2017,17,11,201703,2017),('2017-03-18',201711,3,2017,18,11,201703,2017),('2017-03-19',201712,3,2017,19,12,201703,2017),('2017-03-20',201712,3,2017,20,12,201703,2017),('2017-03-21',201712,3,2017,21,12,201703,2017),('2017-03-22',201712,3,2017,22,12,201703,2017),('2017-03-23',201712,3,2017,23,12,201703,2017),('2017-03-24',201712,3,2017,24,12,201703,2017),('2017-03-25',201712,3,2017,25,12,201703,2017),('2017-03-26',201713,3,2017,26,13,201703,2017),('2017-03-27',201713,3,2017,27,13,201703,2017),('2017-03-28',201713,3,2017,28,13,201703,2017),('2017-03-29',201713,3,2017,29,13,201703,2017),('2017-03-30',201713,3,2017,30,13,201703,2017),('2017-03-31',201713,3,2017,31,13,201703,2017),('2017-04-01',201713,4,2017,1,13,201704,2017),('2017-04-02',201714,4,2017,2,14,201704,2017),('2017-04-03',201714,4,2017,3,14,201704,2017),('2017-04-04',201714,4,2017,4,14,201704,2017),('2017-04-05',201714,4,2017,5,14,201704,2017),('2017-04-06',201714,4,2017,6,14,201704,2017),('2017-04-07',201714,4,2017,7,14,201704,2017),('2017-04-08',201714,4,2017,8,14,201704,2017),('2017-04-09',201715,4,2017,9,15,201704,2017),('2017-04-10',201715,4,2017,10,15,201704,2017),('2017-04-11',201715,4,2017,11,15,201704,2017),('2017-04-12',201715,4,2017,12,15,201704,2017),('2017-04-13',201715,4,2017,13,15,201704,2017),('2017-04-14',201715,4,2017,14,15,201704,2017),('2017-04-15',201715,4,2017,15,15,201704,2017),('2017-04-16',201716,4,2017,16,16,201704,2017),('2017-04-17',201716,4,2017,17,16,201704,2017),('2017-04-18',201716,4,2017,18,16,201704,2017),('2017-04-19',201716,4,2017,19,16,201704,2017),('2017-04-20',201716,4,2017,20,16,201704,2017),('2017-04-21',201716,4,2017,21,16,201704,2017),('2017-04-22',201716,4,2017,22,16,201704,2017),('2017-04-23',201717,4,2017,23,17,201704,2017),('2017-04-24',201717,4,2017,24,17,201704,2017),('2017-04-25',201717,4,2017,25,17,201704,2017),('2017-04-26',201717,4,2017,26,17,201704,2017),('2017-04-27',201717,4,2017,27,17,201704,2017),('2017-04-28',201717,4,2017,28,17,201704,2017),('2017-04-29',201717,4,2017,29,17,201704,2017),('2017-04-30',201718,4,2017,30,18,201704,2017),('2017-05-01',201718,5,2017,1,18,201705,2017),('2017-05-02',201718,5,2017,2,18,201705,2017),('2017-05-03',201718,5,2017,3,18,201705,2017),('2017-05-04',201718,5,2017,4,18,201705,2017),('2017-05-05',201718,5,2017,5,18,201705,2017),('2017-05-06',201718,5,2017,6,18,201705,2017),('2017-05-07',201719,5,2017,7,19,201705,2017),('2017-05-08',201719,5,2017,8,19,201705,2017),('2017-05-09',201719,5,2017,9,19,201705,2017),('2017-05-10',201719,5,2017,10,19,201705,2017),('2017-05-11',201719,5,2017,11,19,201705,2017),('2017-05-12',201719,5,2017,12,19,201705,2017),('2017-05-13',201719,5,2017,13,19,201705,2017),('2017-05-14',201720,5,2017,14,20,201705,2017),('2017-05-15',201720,5,2017,15,20,201705,2017),('2017-05-16',201720,5,2017,16,20,201705,2017),('2017-05-17',201720,5,2017,17,20,201705,2017),('2017-05-18',201720,5,2017,18,20,201705,2017),('2017-05-19',201720,5,2017,19,20,201705,2017),('2017-05-20',201720,5,2017,20,20,201705,2017),('2017-05-21',201721,5,2017,21,21,201705,2017),('2017-05-22',201721,5,2017,22,21,201705,2017),('2017-05-23',201721,5,2017,23,21,201705,2017),('2017-05-24',201721,5,2017,24,21,201705,2017),('2017-05-25',201721,5,2017,25,21,201705,2017),('2017-05-26',201721,5,2017,26,21,201705,2017),('2017-05-27',201721,5,2017,27,21,201705,2017),('2017-05-28',201722,5,2017,28,22,201705,2017),('2017-05-29',201722,5,2017,29,22,201705,2017),('2017-05-30',201722,5,2017,30,22,201705,2017),('2017-05-31',201722,5,2017,31,22,201705,2017),('2017-06-01',201722,6,2017,1,22,201706,2017),('2017-06-02',201722,6,2017,2,22,201706,2017),('2017-06-03',201722,6,2017,3,22,201706,2017),('2017-06-04',201723,6,2017,4,23,201706,2017),('2017-06-05',201723,6,2017,5,23,201706,2017),('2017-06-06',201723,6,2017,6,23,201706,2017),('2017-06-07',201723,6,2017,7,23,201706,2017),('2017-06-08',201723,6,2017,8,23,201706,2017),('2017-06-09',201723,6,2017,9,23,201706,2017),('2017-06-10',201723,6,2017,10,23,201706,2017),('2017-06-11',201724,6,2017,11,24,201706,2017),('2017-06-12',201724,6,2017,12,24,201706,2017),('2017-06-13',201724,6,2017,13,24,201706,2017),('2017-06-14',201724,6,2017,14,24,201706,2017),('2017-06-15',201724,6,2017,15,24,201706,2017),('2017-06-16',201724,6,2017,16,24,201706,2017),('2017-06-17',201724,6,2017,17,24,201706,2017),('2017-06-18',201725,6,2017,18,25,201706,2017),('2017-06-19',201725,6,2017,19,25,201706,2017),('2017-06-20',201725,6,2017,20,25,201706,2017),('2017-06-21',201725,6,2017,21,25,201706,2017),('2017-06-22',201725,6,2017,22,25,201706,2017),('2017-06-23',201725,6,2017,23,25,201706,2017),('2017-06-24',201725,6,2017,24,25,201706,2017),('2017-06-25',201726,6,2017,25,26,201706,2017),('2017-06-26',201726,6,2017,26,26,201706,2017),('2017-06-27',201726,6,2017,27,26,201706,2017),('2017-06-28',201726,6,2017,28,26,201706,2017),('2017-06-29',201726,6,2017,29,26,201706,2017),('2017-06-30',201726,6,2017,30,26,201706,2017),('2017-07-01',201726,7,2017,1,26,201707,2017),('2017-07-02',201727,7,2017,2,27,201707,2017),('2017-07-03',201727,7,2017,3,27,201707,2017),('2017-07-04',201727,7,2017,4,27,201707,2017),('2017-07-05',201727,7,2017,5,27,201707,2017),('2017-07-06',201727,7,2017,6,27,201707,2017),('2017-07-07',201727,7,2017,7,27,201707,2017),('2017-07-08',201727,7,2017,8,27,201707,2017),('2017-07-09',201728,7,2017,9,28,201707,2017),('2017-07-10',201728,7,2017,10,28,201707,2017),('2017-07-11',201728,7,2017,11,28,201707,2017),('2017-07-12',201728,7,2017,12,28,201707,2017),('2017-07-13',201728,7,2017,13,28,201707,2017),('2017-07-14',201728,7,2017,14,28,201707,2017),('2017-07-15',201728,7,2017,15,28,201707,2017),('2017-07-16',201729,7,2017,16,29,201707,2017),('2017-07-17',201729,7,2017,17,29,201707,2017),('2017-07-18',201729,7,2017,18,29,201707,2017),('2017-07-19',201729,7,2017,19,29,201707,2017),('2017-07-20',201729,7,2017,20,29,201707,2017),('2017-07-21',201729,7,2017,21,29,201707,2017),('2017-07-22',201729,7,2017,22,29,201707,2017),('2017-07-23',201730,7,2017,23,30,201707,2017),('2017-07-24',201730,7,2017,24,30,201707,2017),('2017-07-25',201730,7,2017,25,30,201707,2017),('2017-07-26',201730,7,2017,26,30,201707,2017),('2017-07-27',201730,7,2017,27,30,201707,2017),('2017-07-28',201730,7,2017,28,30,201707,2017),('2017-07-29',201730,7,2017,29,30,201707,2017),('2017-07-30',201731,7,2017,30,31,201707,2017),('2017-07-31',201731,7,2017,31,31,201707,2017),('2017-08-01',201731,8,2017,1,31,201708,2017),('2017-08-02',201731,8,2017,2,31,201708,2017),('2017-08-03',201731,8,2017,3,31,201708,2017),('2017-08-04',201731,8,2017,4,31,201708,2017),('2017-08-05',201731,8,2017,5,31,201708,2017),('2017-08-06',201732,8,2017,6,32,201708,2017),('2017-08-07',201732,8,2017,7,32,201708,2017),('2017-08-08',201732,8,2017,8,32,201708,2017),('2017-08-09',201732,8,2017,9,32,201708,2017),('2017-08-10',201732,8,2017,10,32,201708,2017),('2017-08-11',201732,8,2017,11,32,201708,2017),('2017-08-12',201732,8,2017,12,32,201708,2017),('2017-08-13',201733,8,2017,13,33,201708,2017),('2017-08-14',201733,8,2017,14,33,201708,2017),('2017-08-15',201733,8,2017,15,33,201708,2017),('2017-08-16',201733,8,2017,16,33,201708,2017),('2017-08-17',201733,8,2017,17,33,201708,2017),('2017-08-18',201733,8,2017,18,33,201708,2017),('2017-08-19',201733,8,2017,19,33,201708,2017),('2017-08-20',201734,8,2017,20,34,201708,2017),('2017-08-21',201734,8,2017,21,34,201708,2017),('2017-08-22',201734,8,2017,22,34,201708,2017),('2017-08-23',201734,8,2017,23,34,201708,2017),('2017-08-24',201734,8,2017,24,34,201708,2017),('2017-08-25',201734,8,2017,25,34,201708,2017),('2017-08-26',201734,8,2017,26,34,201708,2017),('2017-08-27',201735,8,2017,27,35,201708,2017),('2017-08-28',201735,8,2017,28,35,201708,2017),('2017-08-29',201735,8,2017,29,35,201708,2017),('2017-08-30',201735,8,2017,30,35,201708,2017),('2017-08-31',201735,8,2017,31,35,201708,2017),('2017-09-01',201735,9,2017,1,35,201709,2017),('2017-09-02',201735,9,2017,2,35,201709,2017),('2017-09-03',201736,9,2017,3,36,201709,2017),('2017-09-04',201736,9,2017,4,36,201709,2017),('2017-09-05',201736,9,2017,5,36,201709,2017),('2017-09-06',201736,9,2017,6,36,201709,2017),('2017-09-07',201736,9,2017,7,36,201709,2017),('2017-09-08',201736,9,2017,8,36,201709,2017),('2017-09-09',201736,9,2017,9,36,201709,2017),('2017-09-10',201737,9,2017,10,37,201709,2017),('2017-09-11',201737,9,2017,11,37,201709,2017),('2017-09-12',201737,9,2017,12,37,201709,2017),('2017-09-13',201737,9,2017,13,37,201709,2017),('2017-09-14',201737,9,2017,14,37,201709,2017),('2017-09-15',201737,9,2017,15,37,201709,2017),('2017-09-16',201737,9,2017,16,37,201709,2017),('2017-09-17',201738,9,2017,17,38,201709,2017),('2017-09-18',201738,9,2017,18,38,201709,2017),('2017-09-19',201738,9,2017,19,38,201709,2017),('2017-09-20',201738,9,2017,20,38,201709,2017),('2017-09-21',201738,9,2017,21,38,201709,2017),('2017-09-22',201738,9,2017,22,38,201709,2017),('2017-09-23',201738,9,2017,23,38,201709,2017),('2017-09-24',201739,9,2017,24,39,201709,2017),('2017-09-25',201739,9,2017,25,39,201709,2017),('2017-09-26',201739,9,2017,26,39,201709,2017),('2017-09-27',201739,9,2017,27,39,201709,2017),('2017-09-28',201739,9,2017,28,39,201709,2017),('2017-09-29',201739,9,2017,29,39,201709,2017),('2017-09-30',201739,9,2017,30,39,201709,2017),('2017-10-01',201740,10,2017,1,40,201710,2017),('2017-10-02',201740,10,2017,2,40,201710,2017),('2017-10-03',201740,10,2017,3,40,201710,2017),('2017-10-04',201740,10,2017,4,40,201710,2017),('2017-10-05',201740,10,2017,5,40,201710,2017),('2017-10-06',201740,10,2017,6,40,201710,2017),('2017-10-07',201740,10,2017,7,40,201710,2017),('2017-10-08',201741,10,2017,8,41,201710,2017),('2017-10-09',201741,10,2017,9,41,201710,2017),('2017-10-10',201741,10,2017,10,41,201710,2017),('2017-10-11',201741,10,2017,11,41,201710,2017),('2017-10-12',201741,10,2017,12,41,201710,2017),('2017-10-13',201741,10,2017,13,41,201710,2017),('2017-10-14',201741,10,2017,14,41,201710,2017),('2017-10-15',201742,10,2017,15,42,201710,2017),('2017-10-16',201742,10,2017,16,42,201710,2017),('2017-10-17',201742,10,2017,17,42,201710,2017),('2017-10-18',201742,10,2017,18,42,201710,2017),('2017-10-19',201742,10,2017,19,42,201710,2017),('2017-10-20',201742,10,2017,20,42,201710,2017),('2017-10-21',201742,10,2017,21,42,201710,2017),('2017-10-22',201743,10,2017,22,43,201710,2017),('2017-10-23',201743,10,2017,23,43,201710,2017),('2017-10-24',201743,10,2017,24,43,201710,2017),('2017-10-25',201743,10,2017,25,43,201710,2017),('2017-10-26',201743,10,2017,26,43,201710,2017),('2017-10-27',201743,10,2017,27,43,201710,2017),('2017-10-28',201743,10,2017,28,43,201710,2017),('2017-10-29',201744,10,2017,29,44,201710,2017),('2017-10-30',201744,10,2017,30,44,201710,2017),('2017-10-31',201744,10,2017,31,44,201710,2017),('2017-11-01',201744,11,2017,1,44,201711,2017),('2017-11-02',201744,11,2017,2,44,201711,2017),('2017-11-03',201744,11,2017,3,44,201711,2017),('2017-11-04',201744,11,2017,4,44,201711,2017),('2017-11-05',201745,11,2017,5,45,201711,2017),('2017-11-06',201745,11,2017,6,45,201711,2017),('2017-11-07',201745,11,2017,7,45,201711,2017),('2017-11-08',201745,11,2017,8,45,201711,2017),('2017-11-09',201745,11,2017,9,45,201711,2017),('2017-11-10',201745,11,2017,10,45,201711,2017),('2017-11-11',201745,11,2017,11,45,201711,2017),('2017-11-12',201746,11,2017,12,46,201711,2017),('2017-11-13',201746,11,2017,13,46,201711,2017),('2017-11-14',201746,11,2017,14,46,201711,2017),('2017-11-15',201746,11,2017,15,46,201711,2017),('2017-11-16',201746,11,2017,16,46,201711,2017),('2017-11-17',201746,11,2017,17,46,201711,2017),('2017-11-18',201746,11,2017,18,46,201711,2017),('2017-11-19',201747,11,2017,19,47,201711,2017),('2017-11-20',201747,11,2017,20,47,201711,2017),('2017-11-21',201747,11,2017,21,47,201711,2017),('2017-11-22',201747,11,2017,22,47,201711,2017),('2017-11-23',201747,11,2017,23,47,201711,2017),('2017-11-24',201747,11,2017,24,47,201711,2017),('2017-11-25',201747,11,2017,25,47,201711,2017),('2017-11-26',201748,11,2017,26,48,201711,2017),('2017-11-27',201748,11,2017,27,48,201711,2017),('2017-11-28',201748,11,2017,28,48,201711,2017),('2017-11-29',201748,11,2017,29,48,201711,2017),('2017-11-30',201748,11,2017,30,48,201711,2017),('2017-12-01',201748,12,2017,1,48,201712,2018),('2017-12-02',201748,12,2017,2,48,201712,2018),('2017-12-03',201749,12,2017,3,49,201712,2018),('2017-12-04',201749,12,2017,4,49,201712,2018),('2017-12-05',201749,12,2017,5,49,201712,2018),('2017-12-06',201749,12,2017,6,49,201712,2018),('2017-12-07',201749,12,2017,7,49,201712,2018),('2017-12-08',201749,12,2017,8,49,201712,2018),('2017-12-09',201749,12,2017,9,49,201712,2018),('2017-12-10',201750,12,2017,10,50,201712,2018),('2017-12-11',201750,12,2017,11,50,201712,2018),('2017-12-12',201750,12,2017,12,50,201712,2018),('2017-12-13',201750,12,2017,13,50,201712,2018),('2017-12-14',201750,12,2017,14,50,201712,2018),('2017-12-15',201750,12,2017,15,50,201712,2018),('2017-12-16',201750,12,2017,16,50,201712,2018),('2017-12-17',201751,12,2017,17,51,201712,2018),('2017-12-18',201751,12,2017,18,51,201712,2018),('2017-12-19',201751,12,2017,19,51,201712,2018),('2017-12-20',201751,12,2017,20,51,201712,2018),('2017-12-21',201751,12,2017,21,51,201712,2018),('2017-12-22',201751,12,2017,22,51,201712,2018),('2017-12-23',201751,12,2017,23,51,201712,2018),('2017-12-24',201752,12,2017,24,52,201712,2018),('2017-12-25',201752,12,2017,25,52,201712,2018),('2017-12-26',201752,12,2017,26,52,201712,2018),('2017-12-27',201752,12,2017,27,52,201712,2018),('2017-12-28',201752,12,2017,28,52,201712,2018),('2017-12-29',201752,12,2017,29,52,201712,2018),('2017-12-30',201752,12,2017,30,52,201712,2018),('2017-12-31',201801,12,2017,31,1,201712,2018),('2018-01-01',201801,1,2018,1,1,201801,2018),('2018-01-02',201801,1,2018,2,1,201801,2018),('2018-01-03',201801,1,2018,3,1,201801,2018),('2018-01-04',201801,1,2018,4,1,201801,2018),('2018-01-05',201801,1,2018,5,1,201801,2018),('2018-01-06',201801,1,2018,6,1,201801,2018),('2018-01-07',201802,1,2018,7,2,201801,2018),('2018-01-08',201802,1,2018,8,2,201801,2018),('2018-01-09',201802,1,2018,9,2,201801,2018),('2018-01-10',201802,1,2018,10,2,201801,2018),('2018-01-11',201802,1,2018,11,2,201801,2018),('2018-01-12',201802,1,2018,12,2,201801,2018),('2018-01-13',201802,1,2018,13,2,201801,2018),('2018-01-14',201803,1,2018,14,3,201801,2018),('2018-01-15',201803,1,2018,15,3,201801,2018),('2018-01-16',201803,1,2018,16,3,201801,2018),('2018-01-17',201803,1,2018,17,3,201801,2018),('2018-01-18',201803,1,2018,18,3,201801,2018),('2018-01-19',201803,1,2018,19,3,201801,2018),('2018-01-20',201803,1,2018,20,3,201801,2018),('2018-01-21',201804,1,2018,21,4,201801,2018),('2018-01-22',201804,1,2018,22,4,201801,2018),('2018-01-23',201804,1,2018,23,4,201801,2018),('2018-01-24',201804,1,2018,24,4,201801,2018),('2018-01-25',201804,1,2018,25,4,201801,2018),('2018-01-26',201804,1,2018,26,4,201801,2018),('2018-01-27',201804,1,2018,27,4,201801,2018),('2018-01-28',201805,1,2018,28,5,201801,2018),('2018-01-29',201805,1,2018,29,5,201801,2018),('2018-01-30',201805,1,2018,30,5,201801,2018),('2018-01-31',201805,1,2018,31,5,201801,2018),('2018-02-01',201805,2,2018,1,5,201802,2018),('2018-02-02',201805,2,2018,2,5,201802,2018),('2018-02-03',201805,2,2018,3,5,201802,2018),('2018-02-04',201806,2,2018,4,6,201802,2018),('2018-02-05',201806,2,2018,5,6,201802,2018),('2018-02-06',201806,2,2018,6,6,201802,2018),('2018-02-07',201806,2,2018,7,6,201802,2018),('2018-02-08',201806,2,2018,8,6,201802,2018),('2018-02-09',201806,2,2018,9,6,201802,2018),('2018-02-10',201806,2,2018,10,6,201802,2018),('2018-02-11',201807,2,2018,11,7,201802,2018),('2018-02-12',201807,2,2018,12,7,201802,2018),('2018-02-13',201807,2,2018,13,7,201802,2018),('2018-02-14',201807,2,2018,14,7,201802,2018),('2018-02-15',201807,2,2018,15,7,201802,2018),('2018-02-16',201807,2,2018,16,7,201802,2018),('2018-02-17',201807,2,2018,17,7,201802,2018),('2018-02-18',201808,2,2018,18,8,201802,2018),('2018-02-19',201808,2,2018,19,8,201802,2018),('2018-02-20',201808,2,2018,20,8,201802,2018),('2018-02-21',201808,2,2018,21,8,201802,2018),('2018-02-22',201808,2,2018,22,8,201802,2018),('2018-02-23',201808,2,2018,23,8,201802,2018),('2018-02-24',201808,2,2018,24,8,201802,2018),('2018-02-25',201809,2,2018,25,9,201802,2018),('2018-02-26',201809,2,2018,26,9,201802,2018),('2018-02-27',201809,2,2018,27,9,201802,2018),('2018-02-28',201809,2,2018,28,9,201802,2018),('2018-03-01',201809,3,2018,1,9,201803,2018),('2018-03-02',201809,3,2018,2,9,201803,2018),('2018-03-03',201809,3,2018,3,9,201803,2018),('2018-03-04',201810,3,2018,4,10,201803,2018),('2018-03-05',201810,3,2018,5,10,201803,2018),('2018-03-06',201810,3,2018,6,10,201803,2018),('2018-03-07',201810,3,2018,7,10,201803,2018),('2018-03-08',201810,3,2018,8,10,201803,2018),('2018-03-09',201810,3,2018,9,10,201803,2018),('2018-03-10',201810,3,2018,10,10,201803,2018),('2018-03-11',201811,3,2018,11,11,201803,2018),('2018-03-12',201811,3,2018,12,11,201803,2018),('2018-03-13',201811,3,2018,13,11,201803,2018),('2018-03-14',201811,3,2018,14,11,201803,2018),('2018-03-15',201811,3,2018,15,11,201803,2018),('2018-03-16',201811,3,2018,16,11,201803,2018),('2018-03-17',201811,3,2018,17,11,201803,2018),('2018-03-18',201812,3,2018,18,12,201803,2018),('2018-03-19',201812,3,2018,19,12,201803,2018),('2018-03-20',201812,3,2018,20,12,201803,2018),('2018-03-21',201812,3,2018,21,12,201803,2018),('2018-03-22',201812,3,2018,22,12,201803,2018),('2018-03-23',201812,3,2018,23,12,201803,2018),('2018-03-24',201812,3,2018,24,12,201803,2018),('2018-03-25',201813,3,2018,25,13,201803,2018),('2018-03-26',201813,3,2018,26,13,201803,2018),('2018-03-27',201813,3,2018,27,13,201803,2018),('2018-03-28',201813,3,2018,28,13,201803,2018),('2018-03-29',201813,3,2018,29,13,201803,2018),('2018-03-30',201813,3,2018,30,13,201803,2018),('2018-03-31',201813,3,2018,31,13,201803,2018),('2018-04-01',201814,4,2018,1,14,201804,2018),('2018-04-02',201814,4,2018,2,14,201804,2018),('2018-04-03',201814,4,2018,3,14,201804,2018),('2018-04-04',201814,4,2018,4,14,201804,2018),('2018-04-05',201814,4,2018,5,14,201804,2018),('2018-04-06',201814,4,2018,6,14,201804,2018),('2018-04-07',201814,4,2018,7,14,201804,2018),('2018-04-08',201815,4,2018,8,15,201804,2018),('2018-04-09',201815,4,2018,9,15,201804,2018),('2018-04-10',201815,4,2018,10,15,201804,2018),('2018-04-11',201815,4,2018,11,15,201804,2018),('2018-04-12',201815,4,2018,12,15,201804,2018),('2018-04-13',201815,4,2018,13,15,201804,2018),('2018-04-14',201815,4,2018,14,15,201804,2018),('2018-04-15',201816,4,2018,15,16,201804,2018),('2018-04-16',201816,4,2018,16,16,201804,2018),('2018-04-17',201816,4,2018,17,16,201804,2018),('2018-04-18',201816,4,2018,18,16,201804,2018),('2018-04-19',201816,4,2018,19,16,201804,2018),('2018-04-20',201816,4,2018,20,16,201804,2018),('2018-04-21',201816,4,2018,21,16,201804,2018),('2018-04-22',201817,4,2018,22,17,201804,2018),('2018-04-23',201817,4,2018,23,17,201804,2018),('2018-04-24',201817,4,2018,24,17,201804,2018),('2018-04-25',201817,4,2018,25,17,201804,2018),('2018-04-26',201817,4,2018,26,17,201804,2018),('2018-04-27',201817,4,2018,27,17,201804,2018),('2018-04-28',201817,4,2018,28,17,201804,2018),('2018-04-29',201818,4,2018,29,18,201804,2018),('2018-04-30',201818,4,2018,30,18,201804,2018),('2018-05-01',201818,5,2018,1,18,201805,2018),('2018-05-02',201818,5,2018,2,18,201805,2018),('2018-05-03',201818,5,2018,3,18,201805,2018),('2018-05-04',201818,5,2018,4,18,201805,2018),('2018-05-05',201818,5,2018,5,18,201805,2018),('2018-05-06',201819,5,2018,6,19,201805,2018),('2018-05-07',201819,5,2018,7,19,201805,2018),('2018-05-08',201819,5,2018,8,19,201805,2018),('2018-05-09',201819,5,2018,9,19,201805,2018),('2018-05-10',201819,5,2018,10,19,201805,2018),('2018-05-11',201819,5,2018,11,19,201805,2018),('2018-05-12',201819,5,2018,12,19,201805,2018),('2018-05-13',201820,5,2018,13,20,201805,2018),('2018-05-14',201820,5,2018,14,20,201805,2018),('2018-05-15',201820,5,2018,15,20,201805,2018),('2018-05-16',201820,5,2018,16,20,201805,2018),('2018-05-17',201820,5,2018,17,20,201805,2018),('2018-05-18',201820,5,2018,18,20,201805,2018),('2018-05-19',201820,5,2018,19,20,201805,2018),('2018-05-20',201821,5,2018,20,21,201805,2018),('2018-05-21',201821,5,2018,21,21,201805,2018),('2018-05-22',201821,5,2018,22,21,201805,2018),('2018-05-23',201821,5,2018,23,21,201805,2018),('2018-05-24',201821,5,2018,24,21,201805,2018),('2018-05-25',201821,5,2018,25,21,201805,2018),('2018-05-26',201821,5,2018,26,21,201805,2018),('2018-05-27',201822,5,2018,27,22,201805,2018),('2018-05-28',201822,5,2018,28,22,201805,2018),('2018-05-29',201822,5,2018,29,22,201805,2018),('2018-05-30',201822,5,2018,30,22,201805,2018),('2018-05-31',201822,5,2018,31,22,201805,2018),('2018-06-01',201822,6,2018,1,22,201806,2018),('2018-06-02',201822,6,2018,2,22,201806,2018),('2018-06-03',201823,6,2018,3,23,201806,2018),('2018-06-04',201823,6,2018,4,23,201806,2018),('2018-06-05',201823,6,2018,5,23,201806,2018),('2018-06-06',201823,6,2018,6,23,201806,2018),('2018-06-07',201823,6,2018,7,23,201806,2018),('2018-06-08',201823,6,2018,8,23,201806,2018),('2018-06-09',201823,6,2018,9,23,201806,2018),('2018-06-10',201824,6,2018,10,24,201806,2018),('2018-06-11',201824,6,2018,11,24,201806,2018),('2018-06-12',201824,6,2018,12,24,201806,2018),('2018-06-13',201824,6,2018,13,24,201806,2018),('2018-06-14',201824,6,2018,14,24,201806,2018),('2018-06-15',201824,6,2018,15,24,201806,2018),('2018-06-16',201824,6,2018,16,24,201806,2018),('2018-06-17',201825,6,2018,17,25,201806,2018),('2018-06-18',201825,6,2018,18,25,201806,2018),('2018-06-19',201825,6,2018,19,25,201806,2018),('2018-06-20',201825,6,2018,20,25,201806,2018),('2018-06-21',201825,6,2018,21,25,201806,2018),('2018-06-22',201825,6,2018,22,25,201806,2018),('2018-06-23',201825,6,2018,23,25,201806,2018),('2018-06-24',201826,6,2018,24,26,201806,2018),('2018-06-25',201826,6,2018,25,26,201806,2018),('2018-06-26',201826,6,2018,26,26,201806,2018),('2018-06-27',201826,6,2018,27,26,201806,2018),('2018-06-28',201826,6,2018,28,26,201806,2018),('2018-06-29',201826,6,2018,29,26,201806,2018),('2018-06-30',201826,6,2018,30,26,201806,2018),('2018-07-01',201827,7,2018,1,27,201807,2018),('2018-07-02',201827,7,2018,2,27,201807,2018),('2018-07-03',201827,7,2018,3,27,201807,2018),('2018-07-04',201827,7,2018,4,27,201807,2018),('2018-07-05',201827,7,2018,5,27,201807,2018),('2018-07-06',201827,7,2018,6,27,201807,2018),('2018-07-07',201827,7,2018,7,27,201807,2018),('2018-07-08',201828,7,2018,8,28,201807,2018),('2018-07-09',201828,7,2018,9,28,201807,2018),('2018-07-10',201828,7,2018,10,28,201807,2018),('2018-07-11',201828,7,2018,11,28,201807,2018),('2018-07-12',201828,7,2018,12,28,201807,2018),('2018-07-13',201828,7,2018,13,28,201807,2018),('2018-07-14',201828,7,2018,14,28,201807,2018),('2018-07-15',201829,7,2018,15,29,201807,2018),('2018-07-16',201829,7,2018,16,29,201807,2018),('2018-07-17',201829,7,2018,17,29,201807,2018),('2018-07-18',201829,7,2018,18,29,201807,2018),('2018-07-19',201829,7,2018,19,29,201807,2018),('2018-07-20',201829,7,2018,20,29,201807,2018),('2018-07-21',201829,7,2018,21,29,201807,2018),('2018-07-22',201830,7,2018,22,30,201807,2018),('2018-07-23',201830,7,2018,23,30,201807,2018),('2018-07-24',201830,7,2018,24,30,201807,2018),('2018-07-25',201830,7,2018,25,30,201807,2018),('2018-07-26',201830,7,2018,26,30,201807,2018),('2018-07-27',201830,7,2018,27,30,201807,2018),('2018-07-28',201830,7,2018,28,30,201807,2018),('2018-07-29',201831,7,2018,29,31,201807,2018),('2018-07-30',201831,7,2018,30,31,201807,2018),('2018-07-31',201831,7,2018,31,31,201807,2018),('2018-08-01',201831,8,2018,1,31,201808,2018),('2018-08-02',201831,8,2018,2,31,201808,2018),('2018-08-03',201831,8,2018,3,31,201808,2018),('2018-08-04',201831,8,2018,4,31,201808,2018),('2018-08-05',201832,8,2018,5,32,201808,2018),('2018-08-06',201832,8,2018,6,32,201808,2018),('2018-08-07',201832,8,2018,7,32,201808,2018),('2018-08-08',201832,8,2018,8,32,201808,2018),('2018-08-09',201832,8,2018,9,32,201808,2018),('2018-08-10',201832,8,2018,10,32,201808,2018),('2018-08-11',201832,8,2018,11,32,201808,2018),('2018-08-12',201833,8,2018,12,33,201808,2018),('2018-08-13',201833,8,2018,13,33,201808,2018),('2018-08-14',201833,8,2018,14,33,201808,2018),('2018-08-15',201833,8,2018,15,33,201808,2018),('2018-08-16',201833,8,2018,16,33,201808,2018),('2018-08-17',201833,8,2018,17,33,201808,2018),('2018-08-18',201833,8,2018,18,33,201808,2018),('2018-08-19',201834,8,2018,19,34,201808,2018),('2018-08-20',201834,8,2018,20,34,201808,2018),('2018-08-21',201834,8,2018,21,34,201808,2018),('2018-08-22',201834,8,2018,22,34,201808,2018),('2018-08-23',201834,8,2018,23,34,201808,2018),('2018-08-24',201834,8,2018,24,34,201808,2018),('2018-08-25',201834,8,2018,25,34,201808,2018),('2018-08-26',201835,8,2018,26,35,201808,2018),('2018-08-27',201835,8,2018,27,35,201808,2018),('2018-08-28',201835,8,2018,28,35,201808,2018),('2018-08-29',201835,8,2018,29,35,201808,2018),('2018-08-30',201835,8,2018,30,35,201808,2018),('2018-08-31',201835,8,2018,31,35,201808,2018),('2018-09-01',201835,9,2018,1,35,201809,2018),('2018-09-02',201836,9,2018,2,36,201809,2018),('2018-09-03',201836,9,2018,3,36,201809,2018),('2018-09-04',201836,9,2018,4,36,201809,2018),('2018-09-05',201836,9,2018,5,36,201809,2018),('2018-09-06',201836,9,2018,6,36,201809,2018),('2018-09-07',201836,9,2018,7,36,201809,2018),('2018-09-08',201836,9,2018,8,36,201809,2018),('2018-09-09',201837,9,2018,9,37,201809,2018),('2018-09-10',201837,9,2018,10,37,201809,2018),('2018-09-11',201837,9,2018,11,37,201809,2018),('2018-09-12',201837,9,2018,12,37,201809,2018),('2018-09-13',201837,9,2018,13,37,201809,2018),('2018-09-14',201837,9,2018,14,37,201809,2018),('2018-09-15',201837,9,2018,15,37,201809,2018),('2018-09-16',201838,9,2018,16,38,201809,2018),('2018-09-17',201838,9,2018,17,38,201809,2018),('2018-09-18',201838,9,2018,18,38,201809,2018),('2018-09-19',201838,9,2018,19,38,201809,2018),('2018-09-20',201838,9,2018,20,38,201809,2018),('2018-09-21',201838,9,2018,21,38,201809,2018),('2018-09-22',201838,9,2018,22,38,201809,2018),('2018-09-23',201839,9,2018,23,39,201809,2018),('2018-09-24',201839,9,2018,24,39,201809,2018),('2018-09-25',201839,9,2018,25,39,201809,2018),('2018-09-26',201839,9,2018,26,39,201809,2018),('2018-09-27',201839,9,2018,27,39,201809,2018),('2018-09-28',201839,9,2018,28,39,201809,2018),('2018-09-29',201839,9,2018,29,39,201809,2018),('2018-09-30',201840,9,2018,30,40,201809,2018),('2018-10-01',201840,10,2018,1,40,201810,2018),('2018-10-02',201840,10,2018,2,40,201810,2018),('2018-10-03',201840,10,2018,3,40,201810,2018),('2018-10-04',201840,10,2018,4,40,201810,2018),('2018-10-05',201840,10,2018,5,40,201810,2018),('2018-10-06',201840,10,2018,6,40,201810,2018),('2018-10-07',201841,10,2018,7,41,201810,2018),('2018-10-08',201841,10,2018,8,41,201810,2018),('2018-10-09',201841,10,2018,9,41,201810,2018),('2018-10-10',201841,10,2018,10,41,201810,2018),('2018-10-11',201841,10,2018,11,41,201810,2018),('2018-10-12',201841,10,2018,12,41,201810,2018),('2018-10-13',201841,10,2018,13,41,201810,2018),('2018-10-14',201842,10,2018,14,42,201810,2018),('2018-10-15',201842,10,2018,15,42,201810,2018),('2018-10-16',201842,10,2018,16,42,201810,2018),('2018-10-17',201842,10,2018,17,42,201810,2018),('2018-10-18',201842,10,2018,18,42,201810,2018),('2018-10-19',201842,10,2018,19,42,201810,2018),('2018-10-20',201842,10,2018,20,42,201810,2018),('2018-10-21',201843,10,2018,21,43,201810,2018),('2018-10-22',201843,10,2018,22,43,201810,2018),('2018-10-23',201843,10,2018,23,43,201810,2018),('2018-10-24',201843,10,2018,24,43,201810,2018),('2018-10-25',201843,10,2018,25,43,201810,2018),('2018-10-26',201843,10,2018,26,43,201810,2018),('2018-10-27',201843,10,2018,27,43,201810,2018),('2018-10-28',201844,10,2018,28,44,201810,2018),('2018-10-29',201844,10,2018,29,44,201810,2018),('2018-10-30',201844,10,2018,30,44,201810,2018),('2018-10-31',201844,10,2018,31,44,201810,2018),('2018-11-01',201844,11,2018,1,44,201811,2018),('2018-11-02',201844,11,2018,2,44,201811,2018),('2018-11-03',201844,11,2018,3,44,201811,2018),('2018-11-04',201845,11,2018,4,45,201811,2018),('2018-11-05',201845,11,2018,5,45,201811,2018),('2018-11-06',201845,11,2018,6,45,201811,2018),('2018-11-07',201845,11,2018,7,45,201811,2018),('2018-11-08',201845,11,2018,8,45,201811,2018),('2018-11-09',201845,11,2018,9,45,201811,2018),('2018-11-10',201845,11,2018,10,45,201811,2018),('2018-11-11',201846,11,2018,11,46,201811,2018),('2018-11-12',201846,11,2018,12,46,201811,2018),('2018-11-13',201846,11,2018,13,46,201811,2018),('2018-11-14',201846,11,2018,14,46,201811,2018),('2018-11-15',201846,11,2018,15,46,201811,2018),('2018-11-16',201846,11,2018,16,46,201811,2018),('2018-11-17',201846,11,2018,17,46,201811,2018),('2018-11-18',201847,11,2018,18,47,201811,2018),('2018-11-19',201847,11,2018,19,47,201811,2018),('2018-11-20',201847,11,2018,20,47,201811,2018),('2018-11-21',201847,11,2018,21,47,201811,2018),('2018-11-22',201847,11,2018,22,47,201811,2018),('2018-11-23',201847,11,2018,23,47,201811,2018),('2018-11-24',201847,11,2018,24,47,201811,2018),('2018-11-25',201848,11,2018,25,48,201811,2018),('2018-11-26',201848,11,2018,26,48,201811,2018),('2018-11-27',201848,11,2018,27,48,201811,2018),('2018-11-28',201848,11,2018,28,48,201811,2018),('2018-11-29',201848,11,2018,29,48,201811,2018),('2018-11-30',201848,11,2018,30,48,201811,2018),('2018-12-01',201848,12,2018,1,48,201812,2019),('2018-12-02',201849,12,2018,2,49,201812,2019),('2018-12-03',201849,12,2018,3,49,201812,2019),('2018-12-04',201849,12,2018,4,49,201812,2019),('2018-12-05',201849,12,2018,5,49,201812,2019),('2018-12-06',201849,12,2018,6,49,201812,2019),('2018-12-07',201849,12,2018,7,49,201812,2019),('2018-12-08',201849,12,2018,8,49,201812,2019),('2018-12-09',201850,12,2018,9,50,201812,2019),('2018-12-10',201850,12,2018,10,50,201812,2019),('2018-12-11',201850,12,2018,11,50,201812,2019),('2018-12-12',201850,12,2018,12,50,201812,2019),('2018-12-13',201850,12,2018,13,50,201812,2019),('2018-12-14',201850,12,2018,14,50,201812,2019),('2018-12-15',201850,12,2018,15,50,201812,2019),('2018-12-16',201851,12,2018,16,51,201812,2019),('2018-12-17',201851,12,2018,17,51,201812,2019),('2018-12-18',201851,12,2018,18,51,201812,2019),('2018-12-19',201851,12,2018,19,51,201812,2019),('2018-12-20',201851,12,2018,20,51,201812,2019),('2018-12-21',201851,12,2018,21,51,201812,2019),('2018-12-22',201851,12,2018,22,51,201812,2019),('2018-12-23',201852,12,2018,23,52,201812,2019),('2018-12-24',201852,12,2018,24,52,201812,2019),('2018-12-25',201852,12,2018,25,52,201812,2019),('2018-12-26',201852,12,2018,26,52,201812,2019),('2018-12-27',201852,12,2018,27,52,201812,2019),('2018-12-28',201852,12,2018,28,52,201812,2019),('2018-12-29',201852,12,2018,29,52,201812,2019),('2018-12-30',201901,1,2019,30,1,201812,2019),('2018-12-31',201901,1,2019,31,1,201812,2019),('2019-01-01',201901,1,2019,1,1,201901,2019),('2019-01-02',201901,1,2019,2,1,201901,2019),('2019-01-03',201901,1,2019,3,1,201901,2019),('2019-01-04',201901,1,2019,4,1,201901,2019),('2019-01-05',201901,1,2019,5,1,201901,2019),('2019-01-06',201902,1,2019,6,2,201901,2019),('2019-01-07',201902,1,2019,7,2,201901,2019),('2019-01-08',201902,1,2019,8,2,201901,2019),('2019-01-09',201902,1,2019,9,2,201901,2019),('2019-01-10',201902,1,2019,10,2,201901,2019),('2019-01-11',201902,1,2019,11,2,201901,2019),('2019-01-12',201902,1,2019,12,2,201901,2019),('2019-01-13',201903,1,2019,13,3,201901,2019),('2019-01-14',201903,1,2019,14,3,201901,2019),('2019-01-15',201903,1,2019,15,3,201901,2019),('2019-01-16',201903,1,2019,16,3,201901,2019),('2019-01-17',201903,1,2019,17,3,201901,2019),('2019-01-18',201903,1,2019,18,3,201901,2019),('2019-01-19',201903,1,2019,19,3,201901,2019),('2019-01-20',201904,1,2019,20,4,201901,2019),('2019-01-21',201904,1,2019,21,4,201901,2019),('2019-01-22',201904,1,2019,22,4,201901,2019),('2019-01-23',201904,1,2019,23,4,201901,2019),('2019-01-24',201904,1,2019,24,4,201901,2019),('2019-01-25',201904,1,2019,25,4,201901,2019),('2019-01-26',201904,1,2019,26,4,201901,2019),('2019-01-27',201905,1,2019,27,5,201901,2019),('2019-01-28',201905,1,2019,28,5,201901,2019),('2019-01-29',201905,1,2019,29,5,201901,2019),('2019-01-30',201905,1,2019,30,5,201901,2019),('2019-01-31',201905,1,2019,31,5,201901,2019),('2019-02-01',201905,2,2019,1,5,201902,2019),('2019-02-02',201905,2,2019,2,5,201902,2019),('2019-02-03',201906,2,2019,3,6,201902,2019),('2019-02-04',201906,2,2019,4,6,201902,2019),('2019-02-05',201906,2,2019,5,6,201902,2019),('2019-02-06',201906,2,2019,6,6,201902,2019),('2019-02-07',201906,2,2019,7,6,201902,2019),('2019-02-08',201906,2,2019,8,6,201902,2019),('2019-02-09',201906,2,2019,9,6,201902,2019),('2019-02-10',201907,2,2019,10,7,201902,2019),('2019-02-11',201907,2,2019,11,7,201902,2019),('2019-02-12',201907,2,2019,12,7,201902,2019),('2019-02-13',201907,2,2019,13,7,201902,2019),('2019-02-14',201907,2,2019,14,7,201902,2019),('2019-02-15',201907,2,2019,15,7,201902,2019),('2019-02-16',201907,2,2019,16,7,201902,2019),('2019-02-17',201908,2,2019,17,8,201902,2019),('2019-02-18',201908,2,2019,18,8,201902,2019),('2019-02-19',201908,2,2019,19,8,201902,2019),('2019-02-20',201908,2,2019,20,8,201902,2019),('2019-02-21',201908,2,2019,21,8,201902,2019),('2019-02-22',201908,2,2019,22,8,201902,2019),('2019-02-23',201908,2,2019,23,8,201902,2019),('2019-02-24',201909,2,2019,24,9,201902,2019),('2019-02-25',201909,2,2019,25,9,201902,2019),('2019-02-26',201909,2,2019,26,9,201902,2019),('2019-02-27',201909,2,2019,27,9,201902,2019),('2019-02-28',201909,2,2019,28,9,201902,2019),('2019-03-01',201909,3,2019,1,9,201903,2019),('2019-03-02',201909,3,2019,2,9,201903,2019),('2019-03-03',201910,3,2019,3,10,201903,2019),('2019-03-04',201910,3,2019,4,10,201903,2019),('2019-03-05',201910,3,2019,5,10,201903,2019),('2019-03-06',201910,3,2019,6,10,201903,2019),('2019-03-07',201910,3,2019,7,10,201903,2019),('2019-03-08',201910,3,2019,8,10,201903,2019),('2019-03-09',201910,3,2019,9,10,201903,2019),('2019-03-10',201911,3,2019,10,11,201903,2019),('2019-03-11',201911,3,2019,11,11,201903,2019),('2019-03-12',201911,3,2019,12,11,201903,2019),('2019-03-13',201911,3,2019,13,11,201903,2019),('2019-03-14',201911,3,2019,14,11,201903,2019),('2019-03-15',201911,3,2019,15,11,201903,2019),('2019-03-16',201911,3,2019,16,11,201903,2019),('2019-03-17',201912,3,2019,17,12,201903,2019),('2019-03-18',201912,3,2019,18,12,201903,2019),('2019-03-19',201912,3,2019,19,12,201903,2019),('2019-03-20',201912,3,2019,20,12,201903,2019),('2019-03-21',201912,3,2019,21,12,201903,2019),('2019-03-22',201912,3,2019,22,12,201903,2019),('2019-03-23',201912,3,2019,23,12,201903,2019),('2019-03-24',201913,3,2019,24,13,201903,2019),('2019-03-25',201913,3,2019,25,13,201903,2019),('2019-03-26',201913,3,2019,26,13,201903,2019),('2019-03-27',201913,3,2019,27,13,201903,2019),('2019-03-28',201913,3,2019,28,13,201903,2019),('2019-03-29',201913,3,2019,29,13,201903,2019),('2019-03-30',201913,3,2019,30,13,201903,2019),('2019-03-31',201914,3,2019,31,14,201903,2019),('2019-04-01',201914,4,2019,1,14,201904,2019),('2019-04-02',201914,4,2019,2,14,201904,2019),('2019-04-03',201914,4,2019,3,14,201904,2019),('2019-04-04',201914,4,2019,4,14,201904,2019),('2019-04-05',201914,4,2019,5,14,201904,2019),('2019-04-06',201914,4,2019,6,14,201904,2019),('2019-04-07',201915,4,2019,7,15,201904,2019),('2019-04-08',201915,4,2019,8,15,201904,2019),('2019-04-09',201915,4,2019,9,15,201904,2019),('2019-04-10',201915,4,2019,10,15,201904,2019),('2019-04-11',201915,4,2019,11,15,201904,2019),('2019-04-12',201915,4,2019,12,15,201904,2019),('2019-04-13',201915,4,2019,13,15,201904,2019),('2019-04-14',201916,4,2019,14,16,201904,2019),('2019-04-15',201916,4,2019,15,16,201904,2019),('2019-04-16',201916,4,2019,16,16,201904,2019),('2019-04-17',201916,4,2019,17,16,201904,2019),('2019-04-18',201916,4,2019,18,16,201904,2019),('2019-04-19',201916,4,2019,19,16,201904,2019),('2019-04-20',201916,4,2019,20,16,201904,2019),('2019-04-21',201917,4,2019,21,17,201904,2019),('2019-04-22',201917,4,2019,22,17,201904,2019),('2019-04-23',201917,4,2019,23,17,201904,2019),('2019-04-24',201917,4,2019,24,17,201904,2019),('2019-04-25',201917,4,2019,25,17,201904,2019),('2019-04-26',201917,4,2019,26,17,201904,2019),('2019-04-27',201917,4,2019,27,17,201904,2019),('2019-04-28',201918,4,2019,28,18,201904,2019),('2019-04-29',201918,4,2019,29,18,201904,2019),('2019-04-30',201918,4,2019,30,18,201904,2019),('2019-05-01',201918,5,2019,1,18,201905,2019),('2019-05-02',201918,5,2019,2,18,201905,2019),('2019-05-03',201918,5,2019,3,18,201905,2019),('2019-05-04',201918,5,2019,4,18,201905,2019),('2019-05-05',201919,5,2019,5,19,201905,2019),('2019-05-06',201919,5,2019,6,19,201905,2019),('2019-05-07',201919,5,2019,7,19,201905,2019),('2019-05-08',201919,5,2019,8,19,201905,2019),('2019-05-09',201919,5,2019,9,19,201905,2019),('2019-05-10',201919,5,2019,10,19,201905,2019),('2019-05-11',201919,5,2019,11,19,201905,2019),('2019-05-12',201920,5,2019,12,20,201905,2019),('2019-05-13',201920,5,2019,13,20,201905,2019),('2019-05-14',201920,5,2019,14,20,201905,2019),('2019-05-15',201920,5,2019,15,20,201905,2019),('2019-05-16',201920,5,2019,16,20,201905,2019),('2019-05-17',201920,5,2019,17,20,201905,2019),('2019-05-18',201920,5,2019,18,20,201905,2019),('2019-05-19',201921,5,2019,19,21,201905,2019),('2019-05-20',201921,5,2019,20,21,201905,2019),('2019-05-21',201921,5,2019,21,21,201905,2019),('2019-05-22',201921,5,2019,22,21,201905,2019),('2019-05-23',201921,5,2019,23,21,201905,2019),('2019-05-24',201921,5,2019,24,21,201905,2019),('2019-05-25',201921,5,2019,25,21,201905,2019),('2019-05-26',201922,5,2019,26,22,201905,2019),('2019-05-27',201922,5,2019,27,22,201905,2019),('2019-05-28',201922,5,2019,28,22,201905,2019),('2019-05-29',201922,5,2019,29,22,201905,2019),('2019-05-30',201922,5,2019,30,22,201905,2019),('2019-05-31',201922,5,2019,31,22,201905,2019),('2019-06-01',201922,6,2019,1,22,201906,2019),('2019-06-02',201923,6,2019,2,23,201906,2019),('2019-06-03',201923,6,2019,3,23,201906,2019),('2019-06-04',201923,6,2019,4,23,201906,2019),('2019-06-05',201923,6,2019,5,23,201906,2019),('2019-06-06',201923,6,2019,6,23,201906,2019),('2019-06-07',201923,6,2019,7,23,201906,2019),('2019-06-08',201923,6,2019,8,23,201906,2019),('2019-06-09',201924,6,2019,9,24,201906,2019),('2019-06-10',201924,6,2019,10,24,201906,2019),('2019-06-11',201924,6,2019,11,24,201906,2019),('2019-06-12',201924,6,2019,12,24,201906,2019),('2019-06-13',201924,6,2019,13,24,201906,2019),('2019-06-14',201924,6,2019,14,24,201906,2019),('2019-06-15',201924,6,2019,15,24,201906,2019),('2019-06-16',201925,6,2019,16,25,201906,2019),('2019-06-17',201925,6,2019,17,25,201906,2019),('2019-06-18',201925,6,2019,18,25,201906,2019),('2019-06-19',201925,6,2019,19,25,201906,2019),('2019-06-20',201925,6,2019,20,25,201906,2019),('2019-06-21',201925,6,2019,21,25,201906,2019),('2019-06-22',201925,6,2019,22,25,201906,2019),('2019-06-23',201926,6,2019,23,26,201906,2019),('2019-06-24',201926,6,2019,24,26,201906,2019),('2019-06-25',201926,6,2019,25,26,201906,2019),('2019-06-26',201926,6,2019,26,26,201906,2019),('2019-06-27',201926,6,2019,27,26,201906,2019),('2019-06-28',201926,6,2019,28,26,201906,2019),('2019-06-29',201926,6,2019,29,26,201906,2019),('2019-06-30',201927,6,2019,30,27,201906,2019),('2019-07-01',201927,7,2019,1,27,201907,2019),('2019-07-02',201927,7,2019,2,27,201907,2019),('2019-07-03',201927,7,2019,3,27,201907,2019),('2019-07-04',201927,7,2019,4,27,201907,2019),('2019-07-05',201927,7,2019,5,27,201907,2019),('2019-07-06',201927,7,2019,6,27,201907,2019),('2019-07-07',201928,7,2019,7,28,201907,2019),('2019-07-08',201928,7,2019,8,28,201907,2019),('2019-07-09',201928,7,2019,9,28,201907,2019),('2019-07-10',201928,7,2019,10,28,201907,2019),('2019-07-11',201928,7,2019,11,28,201907,2019),('2019-07-12',201928,7,2019,12,28,201907,2019),('2019-07-13',201928,7,2019,13,28,201907,2019),('2019-07-14',201929,7,2019,14,29,201907,2019),('2019-07-15',201929,7,2019,15,29,201907,2019),('2019-07-16',201929,7,2019,16,29,201907,2019),('2019-07-17',201929,7,2019,17,29,201907,2019),('2019-07-18',201929,7,2019,18,29,201907,2019),('2019-07-19',201929,7,2019,19,29,201907,2019),('2019-07-20',201929,7,2019,20,29,201907,2019),('2019-07-21',201930,7,2019,21,30,201907,2019),('2019-07-22',201930,7,2019,22,30,201907,2019),('2019-07-23',201930,7,2019,23,30,201907,2019),('2019-07-24',201930,7,2019,24,30,201907,2019),('2019-07-25',201930,7,2019,25,30,201907,2019),('2019-07-26',201930,7,2019,26,30,201907,2019),('2019-07-27',201930,7,2019,27,30,201907,2019),('2019-07-28',201931,7,2019,28,31,201907,2019),('2019-07-29',201931,7,2019,29,31,201907,2019),('2019-07-30',201931,7,2019,30,31,201907,2019),('2019-07-31',201931,7,2019,31,31,201907,2019),('2019-08-01',201931,8,2019,1,31,201908,2019),('2019-08-02',201931,8,2019,2,31,201908,2019),('2019-08-03',201931,8,2019,3,31,201908,2019),('2019-08-04',201932,8,2019,4,32,201908,2019),('2019-08-05',201932,8,2019,5,32,201908,2019),('2019-08-06',201932,8,2019,6,32,201908,2019),('2019-08-07',201932,8,2019,7,32,201908,2019),('2019-08-08',201932,8,2019,8,32,201908,2019),('2019-08-09',201932,8,2019,9,32,201908,2019),('2019-08-10',201932,8,2019,10,32,201908,2019),('2019-08-11',201933,8,2019,11,33,201908,2019),('2019-08-12',201933,8,2019,12,33,201908,2019),('2019-08-13',201933,8,2019,13,33,201908,2019),('2019-08-14',201933,8,2019,14,33,201908,2019),('2019-08-15',201933,8,2019,15,33,201908,2019),('2019-08-16',201933,8,2019,16,33,201908,2019),('2019-08-17',201933,8,2019,17,33,201908,2019),('2019-08-18',201934,8,2019,18,34,201908,2019),('2019-08-19',201934,8,2019,19,34,201908,2019),('2019-08-20',201934,8,2019,20,34,201908,2019),('2019-08-21',201934,8,2019,21,34,201908,2019),('2019-08-22',201934,8,2019,22,34,201908,2019),('2019-08-23',201934,8,2019,23,34,201908,2019),('2019-08-24',201934,8,2019,24,34,201908,2019),('2019-08-25',201935,8,2019,25,35,201908,2019),('2019-08-26',201935,8,2019,26,35,201908,2019),('2019-08-27',201935,8,2019,27,35,201908,2019),('2019-08-28',201935,8,2019,28,35,201908,2019),('2019-08-29',201935,8,2019,29,35,201908,2019),('2019-08-30',201935,8,2019,30,35,201908,2019),('2019-08-31',201935,8,2019,31,35,201908,2019),('2019-09-01',201936,9,2019,1,36,201909,2019),('2019-09-02',201936,9,2019,2,36,201909,2019),('2019-09-03',201936,9,2019,3,36,201909,2019),('2019-09-04',201936,9,2019,4,36,201909,2019),('2019-09-05',201936,9,2019,5,36,201909,2019),('2019-09-06',201936,9,2019,6,36,201909,2019),('2019-09-07',201936,9,2019,7,36,201909,2019),('2019-09-08',201937,9,2019,8,37,201909,2019),('2019-09-09',201937,9,2019,9,37,201909,2019),('2019-09-10',201937,9,2019,10,37,201909,2019),('2019-09-11',201937,9,2019,11,37,201909,2019),('2019-09-12',201937,9,2019,12,37,201909,2019),('2019-09-13',201937,9,2019,13,37,201909,2019),('2019-09-14',201937,9,2019,14,37,201909,2019),('2019-09-15',201938,9,2019,15,38,201909,2019),('2019-09-16',201938,9,2019,16,38,201909,2019),('2019-09-17',201938,9,2019,17,38,201909,2019),('2019-09-18',201938,9,2019,18,38,201909,2019),('2019-09-19',201938,9,2019,19,38,201909,2019),('2019-09-20',201938,9,2019,20,38,201909,2019),('2019-09-21',201938,9,2019,21,38,201909,2019),('2019-09-22',201939,9,2019,22,39,201909,2019),('2019-09-23',201939,9,2019,23,39,201909,2019),('2019-09-24',201939,9,2019,24,39,201909,2019),('2019-09-25',201939,9,2019,25,39,201909,2019),('2019-09-26',201939,9,2019,26,39,201909,2019),('2019-09-27',201939,9,2019,27,39,201909,2019),('2019-09-28',201939,9,2019,28,39,201909,2019),('2019-09-29',201940,9,2019,29,40,201909,2019),('2019-09-30',201940,9,2019,30,40,201909,2019),('2019-10-01',201940,10,2019,1,40,201910,2019),('2019-10-02',201940,10,2019,2,40,201910,2019),('2019-10-03',201940,10,2019,3,40,201910,2019),('2019-10-04',201940,10,2019,4,40,201910,2019),('2019-10-05',201940,10,2019,5,40,201910,2019),('2019-10-06',201941,10,2019,6,41,201910,2019),('2019-10-07',201941,10,2019,7,41,201910,2019),('2019-10-08',201941,10,2019,8,41,201910,2019),('2019-10-09',201941,10,2019,9,41,201910,2019),('2019-10-10',201941,10,2019,10,41,201910,2019),('2019-10-11',201941,10,2019,11,41,201910,2019),('2019-10-12',201941,10,2019,12,41,201910,2019),('2019-10-13',201942,10,2019,13,42,201910,2019),('2019-10-14',201942,10,2019,14,42,201910,2019),('2019-10-15',201942,10,2019,15,42,201910,2019),('2019-10-16',201942,10,2019,16,42,201910,2019),('2019-10-17',201942,10,2019,17,42,201910,2019),('2019-10-18',201942,10,2019,18,42,201910,2019),('2019-10-19',201942,10,2019,19,42,201910,2019),('2019-10-20',201943,10,2019,20,43,201910,2019),('2019-10-21',201943,10,2019,21,43,201910,2019),('2019-10-22',201943,10,2019,22,43,201910,2019),('2019-10-23',201943,10,2019,23,43,201910,2019),('2019-10-24',201943,10,2019,24,43,201910,2019),('2019-10-25',201943,10,2019,25,43,201910,2019),('2019-10-26',201943,10,2019,26,43,201910,2019),('2019-10-27',201944,10,2019,27,44,201910,2019),('2019-10-28',201944,10,2019,28,44,201910,2019),('2019-10-29',201944,10,2019,29,44,201910,2019),('2019-10-30',201944,10,2019,30,44,201910,2019),('2019-10-31',201944,10,2019,31,44,201910,2019),('2019-11-01',201944,11,2019,1,44,201911,2019),('2019-11-02',201944,11,2019,2,44,201911,2019),('2019-11-03',201945,11,2019,3,45,201911,2019),('2019-11-04',201945,11,2019,4,45,201911,2019),('2019-11-05',201945,11,2019,5,45,201911,2019),('2019-11-06',201945,11,2019,6,45,201911,2019),('2019-11-07',201945,11,2019,7,45,201911,2019),('2019-11-08',201945,11,2019,8,45,201911,2019),('2019-11-09',201945,11,2019,9,45,201911,2019),('2019-11-10',201946,11,2019,10,46,201911,2019),('2019-11-11',201946,11,2019,11,46,201911,2019),('2019-11-12',201946,11,2019,12,46,201911,2019),('2019-11-13',201946,11,2019,13,46,201911,2019),('2019-11-14',201946,11,2019,14,46,201911,2019),('2019-11-15',201946,11,2019,15,46,201911,2019),('2019-11-16',201946,11,2019,16,46,201911,2019),('2019-11-17',201947,11,2019,17,47,201911,2019),('2019-11-18',201947,11,2019,18,47,201911,2019),('2019-11-19',201947,11,2019,19,47,201911,2019),('2019-11-20',201947,11,2019,20,47,201911,2019),('2019-11-21',201947,11,2019,21,47,201911,2019),('2019-11-22',201947,11,2019,22,47,201911,2019),('2019-11-23',201947,11,2019,23,47,201911,2019),('2019-11-24',201948,11,2019,24,48,201911,2019),('2019-11-25',201948,11,2019,25,48,201911,2019),('2019-11-26',201948,11,2019,26,48,201911,2019),('2019-11-27',201948,11,2019,27,48,201911,2019),('2019-11-28',201948,11,2019,28,48,201911,2019),('2019-11-29',201948,11,2019,29,48,201911,2019),('2019-11-30',201948,11,2019,30,48,201911,2019),('2019-12-01',201949,12,2019,1,49,201912,2020),('2019-12-02',201949,12,2019,2,49,201912,2020),('2019-12-03',201949,12,2019,3,49,201912,2020),('2019-12-04',201949,12,2019,4,49,201912,2020),('2019-12-05',201949,12,2019,5,49,201912,2020),('2019-12-06',201949,12,2019,6,49,201912,2020),('2019-12-07',201949,12,2019,7,49,201912,2020),('2019-12-08',201950,12,2019,8,50,201912,2020),('2019-12-09',201950,12,2019,9,50,201912,2020),('2019-12-10',201950,12,2019,10,50,201912,2020),('2019-12-11',201950,12,2019,11,50,201912,2020),('2019-12-12',201950,12,2019,12,50,201912,2020),('2019-12-13',201950,12,2019,13,50,201912,2020),('2019-12-14',201950,12,2019,14,50,201912,2020),('2019-12-15',201951,12,2019,15,51,201912,2020),('2019-12-16',201951,12,2019,16,51,201912,2020),('2019-12-17',201951,12,2019,17,51,201912,2020),('2019-12-18',201951,12,2019,18,51,201912,2020),('2019-12-19',201951,12,2019,19,51,201912,2020),('2019-12-20',201951,12,2019,20,51,201912,2020),('2019-12-21',201951,12,2019,21,51,201912,2020),('2019-12-22',201952,12,2019,22,52,201912,2020),('2019-12-23',201952,12,2019,23,52,201912,2020),('2019-12-24',201952,12,2019,24,52,201912,2020),('2019-12-25',201952,12,2019,25,52,201912,2020),('2019-12-26',201952,12,2019,26,52,201912,2020),('2019-12-27',201952,12,2019,27,52,201912,2020),('2019-12-28',201952,12,2019,28,52,201912,2020),('2019-12-29',201953,12,2019,29,1,201912,2020),('2019-12-30',201953,12,2019,30,1,201912,2020),('2019-12-31',201953,12,2019,31,1,201912,2020),('2020-01-01',201953,1,2020,1,1,202001,2020),('2020-01-02',201953,1,2020,2,1,202001,2020),('2020-01-03',201953,1,2020,3,1,202001,2020),('2020-01-04',201953,1,2020,4,1,202001,2020),('2020-01-05',202001,1,2020,5,2,202001,2020),('2020-01-06',202001,1,2020,6,2,202001,2020),('2020-01-07',202001,1,2020,7,2,202001,2020),('2020-01-08',202001,1,2020,8,2,202001,2020),('2020-01-09',202001,1,2020,9,2,202001,2020),('2020-01-10',202001,1,2020,10,2,202001,2020),('2020-01-11',202001,1,2020,11,2,202001,2020),('2020-01-12',202002,1,2020,12,3,202001,2020),('2020-01-13',202002,1,2020,13,3,202001,2020),('2020-01-14',202002,1,2020,14,3,202001,2020),('2020-01-15',202002,1,2020,15,3,202001,2020),('2020-01-16',202002,1,2020,16,3,202001,2020),('2020-01-17',202002,1,2020,17,3,202001,2020),('2020-01-18',202002,1,2020,18,3,202001,2020),('2020-01-19',202003,1,2020,19,4,202001,2020),('2020-01-20',202003,1,2020,20,4,202001,2020),('2020-01-21',202003,1,2020,21,4,202001,2020),('2020-01-22',202003,1,2020,22,4,202001,2020),('2020-01-23',202003,1,2020,23,4,202001,2020),('2020-01-24',202003,1,2020,24,4,202001,2020),('2020-01-25',202003,1,2020,25,4,202001,2020),('2020-01-26',202004,1,2020,26,5,202001,2020),('2020-01-27',202004,1,2020,27,5,202001,2020),('2020-01-28',202004,1,2020,28,5,202001,2020),('2020-01-29',202004,1,2020,29,5,202001,2020),('2020-01-30',202004,1,2020,30,5,202001,2020),('2020-01-31',202004,1,2020,31,5,202001,2020),('2020-02-01',202004,2,2020,1,5,202002,2020),('2020-02-02',202005,2,2020,2,6,202002,2020),('2020-02-03',202005,2,2020,3,6,202002,2020),('2020-02-04',202005,2,2020,4,6,202002,2020),('2020-02-05',202005,2,2020,5,6,202002,2020),('2020-02-06',202005,2,2020,6,6,202002,2020),('2020-02-07',202005,2,2020,7,6,202002,2020),('2020-02-08',202005,2,2020,8,6,202002,2020),('2020-02-09',202006,2,2020,9,7,202002,2020),('2020-02-10',202006,2,2020,10,7,202002,2020),('2020-02-11',202006,2,2020,11,7,202002,2020),('2020-02-12',202006,2,2020,12,7,202002,2020),('2020-02-13',202006,2,2020,13,7,202002,2020),('2020-02-14',202006,2,2020,14,7,202002,2020),('2020-02-15',202006,2,2020,15,7,202002,2020),('2020-02-16',202007,2,2020,16,8,202002,2020),('2020-02-17',202007,2,2020,17,8,202002,2020),('2020-02-18',202007,2,2020,18,8,202002,2020),('2020-02-19',202007,2,2020,19,8,202002,2020),('2020-02-20',202007,2,2020,20,8,202002,2020),('2020-02-21',202007,2,2020,21,8,202002,2020),('2020-02-22',202007,2,2020,22,8,202002,2020),('2020-02-23',202008,2,2020,23,9,202002,2020),('2020-02-24',202008,2,2020,24,9,202002,2020),('2020-02-25',202008,2,2020,25,9,202002,2020),('2020-02-26',202008,2,2020,26,9,202002,2020),('2020-02-27',202008,2,2020,27,9,202002,2020),('2020-02-28',202008,2,2020,28,9,202002,2020),('2020-02-29',202008,2,2020,29,9,202002,2020),('2020-03-01',202009,3,2020,1,10,202003,2020),('2020-03-02',202009,3,2020,2,10,202003,2020),('2020-03-03',202009,3,2020,3,10,202003,2020),('2020-03-04',202009,3,2020,4,10,202003,2020),('2020-03-05',202009,3,2020,5,10,202003,2020),('2020-03-06',202009,3,2020,6,10,202003,2020),('2020-03-07',202009,3,2020,7,10,202003,2020),('2020-03-08',202010,3,2020,8,11,202003,2020),('2020-03-09',202010,3,2020,9,11,202003,2020),('2020-03-10',202010,3,2020,10,11,202003,2020),('2020-03-11',202010,3,2020,11,11,202003,2020),('2020-03-12',202010,3,2020,12,11,202003,2020),('2020-03-13',202010,3,2020,13,11,202003,2020),('2020-03-14',202010,3,2020,14,11,202003,2020),('2020-03-15',202011,3,2020,15,12,202003,2020),('2020-03-16',202011,3,2020,16,12,202003,2020),('2020-03-17',202011,3,2020,17,12,202003,2020),('2020-03-18',202011,3,2020,18,12,202003,2020),('2020-03-19',202011,3,2020,19,12,202003,2020),('2020-03-20',202011,3,2020,20,12,202003,2020),('2020-03-21',202011,3,2020,21,12,202003,2020),('2020-03-22',202012,3,2020,22,13,202003,2020),('2020-03-23',202012,3,2020,23,13,202003,2020),('2020-03-24',202012,3,2020,24,13,202003,2020),('2020-03-25',202012,3,2020,25,13,202003,2020),('2020-03-26',202012,3,2020,26,13,202003,2020),('2020-03-27',202012,3,2020,27,13,202003,2020),('2020-03-28',202012,3,2020,28,13,202003,2020),('2020-03-29',202013,3,2020,29,14,202003,2020),('2020-03-30',202013,3,2020,30,14,202003,2020),('2020-03-31',202013,3,2020,31,14,202003,2020),('2020-04-01',202013,4,2020,1,14,202004,2020),('2020-04-02',202013,4,2020,2,14,202004,2020),('2020-04-03',202013,4,2020,3,14,202004,2020),('2020-04-04',202013,4,2020,4,14,202004,2020),('2020-04-05',202014,4,2020,5,15,202004,2020),('2020-04-06',202014,4,2020,6,15,202004,2020),('2020-04-07',202014,4,2020,7,15,202004,2020),('2020-04-08',202014,4,2020,8,15,202004,2020),('2020-04-09',202014,4,2020,9,15,202004,2020),('2020-04-10',202014,4,2020,10,15,202004,2020),('2020-04-11',202014,4,2020,11,15,202004,2020),('2020-04-12',202015,4,2020,12,16,202004,2020),('2020-04-13',202015,4,2020,13,16,202004,2020),('2020-04-14',202015,4,2020,14,16,202004,2020),('2020-04-15',202015,4,2020,15,16,202004,2020),('2020-04-16',202015,4,2020,16,16,202004,2020),('2020-04-17',202015,4,2020,17,16,202004,2020),('2020-04-18',202015,4,2020,18,16,202004,2020),('2020-04-19',202016,4,2020,19,17,202004,2020),('2020-04-20',202016,4,2020,20,17,202004,2020),('2020-04-21',202016,4,2020,21,17,202004,2020),('2020-04-22',202016,4,2020,22,17,202004,2020),('2020-04-23',202016,4,2020,23,17,202004,2020),('2020-04-24',202016,4,2020,24,17,202004,2020),('2020-04-25',202016,4,2020,25,17,202004,2020),('2020-04-26',202017,4,2020,26,18,202004,2020),('2020-04-27',202017,4,2020,27,18,202004,2020),('2020-04-28',202017,4,2020,28,18,202004,2020),('2020-04-29',202017,4,2020,29,18,202004,2020),('2020-04-30',202017,4,2020,30,18,202004,2020),('2020-05-01',202017,5,2020,1,18,202005,2020),('2020-05-02',202017,5,2020,2,18,202005,2020),('2020-05-03',202018,5,2020,3,19,202005,2020),('2020-05-04',202018,5,2020,4,19,202005,2020),('2020-05-05',202018,5,2020,5,19,202005,2020),('2020-05-06',202018,5,2020,6,19,202005,2020),('2020-05-07',202018,5,2020,7,19,202005,2020),('2020-05-08',202018,5,2020,8,19,202005,2020),('2020-05-09',202018,5,2020,9,19,202005,2020),('2020-05-10',202019,5,2020,10,20,202005,2020),('2020-05-11',202019,5,2020,11,20,202005,2020),('2020-05-12',202019,5,2020,12,20,202005,2020),('2020-05-13',202019,5,2020,13,20,202005,2020),('2020-05-14',202019,5,2020,14,20,202005,2020),('2020-05-15',202019,5,2020,15,20,202005,2020),('2020-05-16',202019,5,2020,16,20,202005,2020),('2020-05-17',202020,5,2020,17,21,202005,2020),('2020-05-18',202020,5,2020,18,21,202005,2020),('2020-05-19',202020,5,2020,19,21,202005,2020),('2020-05-20',202020,5,2020,20,21,202005,2020),('2020-05-21',202020,5,2020,21,21,202005,2020),('2020-05-22',202020,5,2020,22,21,202005,2020),('2020-05-23',202020,5,2020,23,21,202005,2020),('2020-05-24',202021,5,2020,24,22,202005,2020),('2020-05-25',202021,5,2020,25,22,202005,2020),('2020-05-26',202021,5,2020,26,22,202005,2020),('2020-05-27',202021,5,2020,27,22,202005,2020),('2020-05-28',202021,5,2020,28,22,202005,2020),('2020-05-29',202021,5,2020,29,22,202005,2020),('2020-05-30',202021,5,2020,30,22,202005,2020),('2020-05-31',202022,5,2020,31,23,202005,2020),('2020-06-01',202022,6,2020,1,23,202006,2020),('2020-06-02',202022,6,2020,2,23,202006,2020),('2020-06-03',202022,6,2020,3,23,202006,2020),('2020-06-04',202022,6,2020,4,23,202006,2020),('2020-06-05',202022,6,2020,5,23,202006,2020),('2020-06-06',202022,6,2020,6,23,202006,2020),('2020-06-07',202023,6,2020,7,24,202006,2020),('2020-06-08',202023,6,2020,8,24,202006,2020),('2020-06-09',202023,6,2020,9,24,202006,2020),('2020-06-10',202023,6,2020,10,24,202006,2020),('2020-06-11',202023,6,2020,11,24,202006,2020),('2020-06-12',202023,6,2020,12,24,202006,2020),('2020-06-13',202023,6,2020,13,24,202006,2020),('2020-06-14',202024,6,2020,14,25,202006,2020),('2020-06-15',202024,6,2020,15,25,202006,2020),('2020-06-16',202024,6,2020,16,25,202006,2020),('2020-06-17',202024,6,2020,17,25,202006,2020),('2020-06-18',202024,6,2020,18,25,202006,2020),('2020-06-19',202024,6,2020,19,25,202006,2020),('2020-06-20',202024,6,2020,20,25,202006,2020),('2020-06-21',202025,6,2020,21,26,202006,2020),('2020-06-22',202025,6,2020,22,26,202006,2020),('2020-06-23',202025,6,2020,23,26,202006,2020),('2020-06-24',202025,6,2020,24,26,202006,2020),('2020-06-25',202025,6,2020,25,26,202006,2020),('2020-06-26',202025,6,2020,26,26,202006,2020),('2020-06-27',202025,6,2020,27,26,202006,2020),('2020-06-28',202026,6,2020,28,27,202006,2020),('2020-06-29',202026,6,2020,29,27,202006,2020),('2020-06-30',202026,6,2020,30,27,202006,2020),('2020-07-01',202026,7,2020,1,27,202007,2020),('2020-07-02',202026,7,2020,2,27,202007,2020),('2020-07-03',202026,7,2020,3,27,202007,2020),('2020-07-04',202026,7,2020,4,27,202007,2020),('2020-07-05',202027,7,2020,5,28,202007,2020),('2020-07-06',202027,7,2020,6,28,202007,2020),('2020-07-07',202027,7,2020,7,28,202007,2020),('2020-07-08',202027,7,2020,8,28,202007,2020),('2020-07-09',202027,7,2020,9,28,202007,2020),('2020-07-10',202027,7,2020,10,28,202007,2020),('2020-07-11',202027,7,2020,11,28,202007,2020),('2020-07-12',202028,7,2020,12,29,202007,2020),('2020-07-13',202028,7,2020,13,29,202007,2020),('2020-07-14',202028,7,2020,14,29,202007,2020),('2020-07-15',202028,7,2020,15,29,202007,2020),('2020-07-16',202028,7,2020,16,29,202007,2020),('2020-07-17',202028,7,2020,17,29,202007,2020),('2020-07-18',202028,7,2020,18,29,202007,2020),('2020-07-19',202029,7,2020,19,30,202007,2020),('2020-07-20',202029,7,2020,20,30,202007,2020),('2020-07-21',202029,7,2020,21,30,202007,2020),('2020-07-22',202029,7,2020,22,30,202007,2020),('2020-07-23',202029,7,2020,23,30,202007,2020),('2020-07-24',202029,7,2020,24,30,202007,2020),('2020-07-25',202029,7,2020,25,30,202007,2020),('2020-07-26',202030,7,2020,26,31,202007,2020),('2020-07-27',202030,7,2020,27,31,202007,2020),('2020-07-28',202030,7,2020,28,31,202007,2020),('2020-07-29',202030,7,2020,29,31,202007,2020),('2020-07-30',202030,7,2020,30,31,202007,2020),('2020-07-31',202030,7,2020,31,31,202007,2020),('2020-08-01',202030,8,2020,1,31,202008,2020),('2020-08-02',202031,8,2020,2,32,202008,2020),('2020-08-03',202031,8,2020,3,32,202008,2020),('2020-08-04',202031,8,2020,4,32,202008,2020),('2020-08-05',202031,8,2020,5,32,202008,2020),('2020-08-06',202031,8,2020,6,32,202008,2020),('2020-08-07',202031,8,2020,7,32,202008,2020),('2020-08-08',202031,8,2020,8,32,202008,2020),('2020-08-09',202032,8,2020,9,33,202008,2020),('2020-08-10',202032,8,2020,10,33,202008,2020),('2020-08-11',202032,8,2020,11,33,202008,2020),('2020-08-12',202032,8,2020,12,33,202008,2020),('2020-08-13',202032,8,2020,13,33,202008,2020),('2020-08-14',202032,8,2020,14,33,202008,2020),('2020-08-15',202032,8,2020,15,33,202008,2020),('2020-08-16',202033,8,2020,16,34,202008,2020),('2020-08-17',202033,8,2020,17,34,202008,2020),('2020-08-18',202033,8,2020,18,34,202008,2020),('2020-08-19',202033,8,2020,19,34,202008,2020),('2020-08-20',202033,8,2020,20,34,202008,2020),('2020-08-21',202033,8,2020,21,34,202008,2020),('2020-08-22',202033,8,2020,22,34,202008,2020),('2020-08-23',202034,8,2020,23,35,202008,2020),('2020-08-24',202034,8,2020,24,35,202008,2020),('2020-08-25',202034,8,2020,25,35,202008,2020),('2020-08-26',202034,8,2020,26,35,202008,2020),('2020-08-27',202034,8,2020,27,35,202008,2020),('2020-08-28',202034,8,2020,28,35,202008,2020),('2020-08-29',202034,8,2020,29,35,202008,2020),('2020-08-30',202035,8,2020,30,36,202008,2020),('2020-08-31',202035,8,2020,31,36,202008,2020),('2020-09-01',202035,9,2020,1,36,202009,2020),('2020-09-02',202035,9,2020,2,36,202009,2020),('2020-09-03',202035,9,2020,3,36,202009,2020),('2020-09-04',202035,9,2020,4,36,202009,2020),('2020-09-05',202035,9,2020,5,36,202009,2020),('2020-09-06',202036,9,2020,6,37,202009,2020),('2020-09-07',202036,9,2020,7,37,202009,2020),('2020-09-08',202036,9,2020,8,37,202009,2020),('2020-09-09',202036,9,2020,9,37,202009,2020),('2020-09-10',202036,9,2020,10,37,202009,2020),('2020-09-11',202036,9,2020,11,37,202009,2020),('2020-09-12',202036,9,2020,12,37,202009,2020),('2020-09-13',202037,9,2020,13,38,202009,2020),('2020-09-14',202037,9,2020,14,38,202009,2020),('2020-09-15',202037,9,2020,15,38,202009,2020),('2020-09-16',202037,9,2020,16,38,202009,2020),('2020-09-17',202037,9,2020,17,38,202009,2020),('2020-09-18',202037,9,2020,18,38,202009,2020),('2020-09-19',202037,9,2020,19,38,202009,2020),('2020-09-20',202038,9,2020,20,39,202009,2020),('2020-09-21',202038,9,2020,21,39,202009,2020),('2020-09-22',202038,9,2020,22,39,202009,2020),('2020-09-23',202038,9,2020,23,39,202009,2020),('2020-09-24',202038,9,2020,24,39,202009,2020),('2020-09-25',202038,9,2020,25,39,202009,2020),('2020-09-26',202038,9,2020,26,39,202009,2020),('2020-09-27',202039,9,2020,27,40,202009,2020),('2020-09-28',202039,9,2020,28,40,202009,2020),('2020-09-29',202039,9,2020,29,40,202009,2020),('2020-09-30',202039,9,2020,30,40,202009,2020),('2020-10-01',202039,10,2020,1,40,202010,2020),('2020-10-02',202039,10,2020,2,40,202010,2020),('2020-10-03',202039,10,2020,3,40,202010,2020),('2020-10-04',202040,10,2020,4,41,202010,2020),('2020-10-05',202040,10,2020,5,41,202010,2020),('2020-10-06',202040,10,2020,6,41,202010,2020),('2020-10-07',202040,10,2020,7,41,202010,2020),('2020-10-08',202040,10,2020,8,41,202010,2020),('2020-10-09',202040,10,2020,9,41,202010,2020),('2020-10-10',202040,10,2020,10,41,202010,2020),('2020-10-11',202041,10,2020,11,42,202010,2020),('2020-10-12',202041,10,2020,12,42,202010,2020),('2020-10-13',202041,10,2020,13,42,202010,2020),('2020-10-14',202041,10,2020,14,42,202010,2020),('2020-10-15',202041,10,2020,15,42,202010,2020),('2020-10-16',202041,10,2020,16,42,202010,2020),('2020-10-17',202041,10,2020,17,42,202010,2020),('2020-10-18',202042,10,2020,18,43,202010,2020),('2020-10-19',202042,10,2020,19,43,202010,2020),('2020-10-20',202042,10,2020,20,43,202010,2020),('2020-10-21',202042,10,2020,21,43,202010,2020),('2020-10-22',202042,10,2020,22,43,202010,2020),('2020-10-23',202042,10,2020,23,43,202010,2020),('2020-10-24',202042,10,2020,24,43,202010,2020),('2020-10-25',202043,10,2020,25,44,202010,2020),('2020-10-26',202043,10,2020,26,44,202010,2020),('2020-10-27',202043,10,2020,27,44,202010,2020),('2020-10-28',202043,10,2020,28,44,202010,2020),('2020-10-29',202043,10,2020,29,44,202010,2020),('2020-10-30',202043,10,2020,30,44,202010,2020),('2020-10-31',202043,10,2020,31,44,202010,2020),('2020-11-01',202044,11,2020,1,45,202011,2020),('2020-11-02',202044,11,2020,2,45,202011,2020),('2020-11-03',202044,11,2020,3,45,202011,2020),('2020-11-04',202044,11,2020,4,45,202011,2020),('2020-11-05',202044,11,2020,5,45,202011,2020),('2020-11-06',202044,11,2020,6,45,202011,2020),('2020-11-07',202044,11,2020,7,45,202011,2020),('2020-11-08',202045,11,2020,8,46,202011,2020),('2020-11-09',202045,11,2020,9,46,202011,2020),('2020-11-10',202045,11,2020,10,46,202011,2020),('2020-11-11',202045,11,2020,11,46,202011,2020),('2020-11-12',202045,11,2020,12,46,202011,2020),('2020-11-13',202045,11,2020,13,46,202011,2020),('2020-11-14',202045,11,2020,14,46,202011,2020),('2020-11-15',202046,11,2020,15,47,202011,2020),('2020-11-16',202046,11,2020,16,47,202011,2020),('2020-11-17',202046,11,2020,17,47,202011,2020),('2020-11-18',202046,11,2020,18,47,202011,2020),('2020-11-19',202046,11,2020,19,47,202011,2020),('2020-11-20',202046,11,2020,20,47,202011,2020),('2020-11-21',202046,11,2020,21,47,202011,2020),('2020-11-22',202047,11,2020,22,48,202011,2020),('2020-11-23',202047,11,2020,23,48,202011,2020),('2020-11-24',202047,11,2020,24,48,202011,2020),('2020-11-25',202047,11,2020,25,48,202011,2020),('2020-11-26',202047,11,2020,26,48,202011,2020),('2020-11-27',202047,11,2020,27,48,202011,2020),('2020-11-28',202047,11,2020,28,48,202011,2020),('2020-11-29',202048,11,2020,29,49,202011,2020),('2020-11-30',202048,11,2020,30,49,202011,2020),('2020-12-01',202048,12,2020,1,49,202012,2021),('2020-12-02',202048,12,2020,2,49,202012,2021),('2020-12-03',202048,12,2020,3,49,202012,2021),('2020-12-04',202048,12,2020,4,49,202012,2021),('2020-12-05',202048,12,2020,5,49,202012,2021),('2020-12-06',202049,12,2020,6,50,202012,2021),('2020-12-07',202049,12,2020,7,50,202012,2021),('2020-12-08',202049,12,2020,8,50,202012,2021),('2020-12-09',202049,12,2020,9,50,202012,2021),('2020-12-10',202049,12,2020,10,50,202012,2021),('2020-12-11',202049,12,2020,11,50,202012,2021),('2020-12-12',202049,12,2020,12,50,202012,2021),('2020-12-13',202050,12,2020,13,51,202012,2021),('2020-12-14',202050,12,2020,14,51,202012,2021),('2020-12-15',202050,12,2020,15,51,202012,2021),('2020-12-16',202050,12,2020,16,51,202012,2021),('2020-12-17',202050,12,2020,17,51,202012,2021),('2020-12-18',202050,12,2020,18,51,202012,2021),('2020-12-19',202050,12,2020,19,51,202012,2021),('2020-12-20',202051,12,2020,20,52,202012,2021),('2020-12-21',202051,12,2020,21,52,202012,2021),('2020-12-22',202051,12,2020,22,52,202012,2021),('2020-12-23',202051,12,2020,23,52,202012,2021),('2020-12-24',202051,12,2020,24,52,202012,2021),('2020-12-25',202051,12,2020,25,52,202012,2021),('2020-12-26',202051,12,2020,26,52,202012,2021),('2020-12-27',202052,12,2020,27,53,202012,2021),('2020-12-28',202052,12,2020,28,53,202012,2021),('2020-12-29',202052,12,2020,29,53,202012,2021),('2020-12-30',202052,12,2020,30,53,202012,2021),('2020-12-31',202052,12,2020,31,53,202012,2021),('2021-01-01',202101,1,2021,1,1,202101,2021),('2021-01-02',202101,1,2021,2,1,202101,2021),('2021-01-03',202101,1,2021,3,1,202101,2021),('2021-01-04',202101,1,2021,4,1,202101,2021),('2021-01-05',202101,1,2021,5,1,202101,2021),('2021-01-06',202101,1,2021,6,1,202101,2021),('2021-01-07',202101,1,2021,7,1,202101,2021),('2021-01-08',202101,1,2021,8,1,202101,2021),('2021-01-09',202101,1,2021,9,1,202101,2021),('2021-01-10',202102,1,2021,10,2,202101,2021),('2021-01-11',202102,1,2021,11,2,202101,2021),('2021-01-12',202102,1,2021,12,2,202101,2021),('2021-01-13',202102,1,2021,13,2,202101,2021),('2021-01-14',202102,1,2021,14,2,202101,2021),('2021-01-15',202102,1,2021,15,2,202101,2021),('2021-01-16',202102,1,2021,16,2,202101,2021),('2021-01-17',202103,1,2021,17,3,202101,2021),('2021-01-18',202103,1,2021,18,3,202101,2021),('2021-01-19',202103,1,2021,19,3,202101,2021),('2021-01-20',202103,1,2021,20,3,202101,2021),('2021-01-21',202103,1,2021,21,3,202101,2021),('2021-01-22',202103,1,2021,22,3,202101,2021),('2021-01-23',202103,1,2021,23,3,202101,2021),('2021-01-24',202104,1,2021,24,4,202101,2021),('2021-01-25',202104,1,2021,25,4,202101,2021),('2021-01-26',202104,1,2021,26,4,202101,2021),('2021-01-27',202104,1,2021,27,4,202101,2021),('2021-01-28',202104,1,2021,28,4,202101,2021),('2021-01-29',202104,1,2021,29,4,202101,2021),('2021-01-30',202104,1,2021,30,4,202101,2021),('2021-01-31',202105,1,2021,31,5,202101,2021),('2021-02-01',202105,2,2021,1,5,202102,2021),('2021-02-02',202105,2,2021,2,5,202102,2021),('2021-02-03',202105,2,2021,3,5,202102,2021),('2021-02-04',202105,2,2021,4,5,202102,2021),('2021-02-05',202105,2,2021,5,5,202102,2021),('2021-02-06',202105,2,2021,6,5,202102,2021),('2021-02-07',202106,2,2021,7,6,202102,2021),('2021-02-08',202106,2,2021,8,6,202102,2021),('2021-02-09',202106,2,2021,9,6,202102,2021),('2021-02-10',202106,2,2021,10,6,202102,2021),('2021-02-11',202106,2,2021,11,6,202102,2021),('2021-02-12',202106,2,2021,12,6,202102,2021),('2021-02-13',202106,2,2021,13,6,202102,2021),('2021-02-14',202107,2,2021,14,7,202102,2021),('2021-02-15',202107,2,2021,15,7,202102,2021),('2021-02-16',202107,2,2021,16,7,202102,2021),('2021-02-17',202107,2,2021,17,7,202102,2021),('2021-02-18',202107,2,2021,18,7,202102,2021),('2021-02-19',202107,2,2021,19,7,202102,2021),('2021-02-20',202107,2,2021,20,7,202102,2021),('2021-02-21',202108,2,2021,21,8,202102,2021),('2021-02-22',202108,2,2021,22,8,202102,2021),('2021-02-23',202108,2,2021,23,8,202102,2021),('2021-02-24',202108,2,2021,24,8,202102,2021),('2021-02-25',202108,2,2021,25,8,202102,2021),('2021-02-26',202108,2,2021,26,8,202102,2021),('2021-02-27',202108,2,2021,27,8,202102,2021),('2021-02-28',202109,2,2021,28,9,202102,2021),('2021-03-01',202109,3,2021,1,9,202103,2021),('2021-03-02',202109,3,2021,2,9,202103,2021),('2021-03-03',202109,3,2021,3,9,202103,2021),('2021-03-04',202109,3,2021,4,9,202103,2021),('2021-03-05',202109,3,2021,5,9,202103,2021),('2021-03-06',202109,3,2021,6,9,202103,2021),('2021-03-07',202110,3,2021,7,10,202103,2021),('2021-03-08',202110,3,2021,8,10,202103,2021),('2021-03-09',202110,3,2021,9,10,202103,2021),('2021-03-10',202110,3,2021,10,10,202103,2021),('2021-03-11',202110,3,2021,11,10,202103,2021),('2021-03-12',202110,3,2021,12,10,202103,2021),('2021-03-13',202110,3,2021,13,10,202103,2021),('2021-03-14',202111,3,2021,14,11,202103,2021),('2021-03-15',202111,3,2021,15,11,202103,2021),('2021-03-16',202111,3,2021,16,11,202103,2021),('2021-03-17',202111,3,2021,17,11,202103,2021),('2021-03-18',202111,3,2021,18,11,202103,2021),('2021-03-19',202111,3,2021,19,11,202103,2021),('2021-03-20',202111,3,2021,20,11,202103,2021),('2021-03-21',202112,3,2021,21,12,202103,2021),('2021-03-22',202112,3,2021,22,12,202103,2021),('2021-03-23',202112,3,2021,23,12,202103,2021),('2021-03-24',202112,3,2021,24,12,202103,2021),('2021-03-25',202112,3,2021,25,12,202103,2021),('2021-03-26',202112,3,2021,26,12,202103,2021),('2021-03-27',202112,3,2021,27,12,202103,2021),('2021-03-28',202113,3,2021,28,13,202103,2021),('2021-03-29',202113,3,2021,29,13,202103,2021),('2021-03-30',202113,3,2021,30,13,202103,2021),('2021-03-31',202113,3,2021,31,13,202103,2021),('2021-04-01',202113,4,2021,1,13,202104,2021),('2021-04-02',202113,4,2021,2,13,202104,2021),('2021-04-03',202113,4,2021,3,13,202104,2021),('2021-04-04',202114,4,2021,4,14,202104,2021),('2021-04-05',202114,4,2021,5,14,202104,2021),('2021-04-06',202114,4,2021,6,14,202104,2021),('2021-04-07',202114,4,2021,7,14,202104,2021),('2021-04-08',202114,4,2021,8,14,202104,2021),('2021-04-09',202114,4,2021,9,14,202104,2021),('2021-04-10',202114,4,2021,10,14,202104,2021),('2021-04-11',202115,4,2021,11,15,202104,2021),('2021-04-12',202115,4,2021,12,15,202104,2021),('2021-04-13',202115,4,2021,13,15,202104,2021),('2021-04-14',202115,4,2021,14,15,202104,2021),('2021-04-15',202115,4,2021,15,15,202104,2021),('2021-04-16',202115,4,2021,16,15,202104,2021),('2021-04-17',202115,4,2021,17,15,202104,2021),('2021-04-18',202116,4,2021,18,16,202104,2021),('2021-04-19',202116,4,2021,19,16,202104,2021),('2021-04-20',202116,4,2021,20,16,202104,2021),('2021-04-21',202116,4,2021,21,16,202104,2021),('2021-04-22',202116,4,2021,22,16,202104,2021),('2021-04-23',202116,4,2021,23,16,202104,2021),('2021-04-24',202116,4,2021,24,16,202104,2021),('2021-04-25',202117,4,2021,25,17,202104,2021),('2021-04-26',202117,4,2021,26,17,202104,2021),('2021-04-27',202117,4,2021,27,17,202104,2021),('2021-04-28',202117,4,2021,28,17,202104,2021),('2021-04-29',202117,4,2021,29,17,202104,2021),('2021-04-30',202117,4,2021,30,17,202104,2021),('2021-05-01',202117,5,2021,1,17,202105,2021),('2021-05-02',202118,5,2021,2,18,202105,2021),('2021-05-03',202118,5,2021,3,18,202105,2021),('2021-05-04',202118,5,2021,4,18,202105,2021),('2021-05-05',202118,5,2021,5,18,202105,2021),('2021-05-06',202118,5,2021,6,18,202105,2021),('2021-05-07',202118,5,2021,7,18,202105,2021),('2021-05-08',202118,5,2021,8,18,202105,2021),('2021-05-09',202119,5,2021,9,19,202105,2021),('2021-05-10',202119,5,2021,10,19,202105,2021),('2021-05-11',202119,5,2021,11,19,202105,2021),('2021-05-12',202119,5,2021,12,19,202105,2021),('2021-05-13',202119,5,2021,13,19,202105,2021),('2021-05-14',202119,5,2021,14,19,202105,2021),('2021-05-15',202119,5,2021,15,19,202105,2021),('2021-05-16',202120,5,2021,16,20,202105,2021),('2021-05-17',202120,5,2021,17,20,202105,2021),('2021-05-18',202120,5,2021,18,20,202105,2021),('2021-05-19',202120,5,2021,19,20,202105,2021),('2021-05-20',202120,5,2021,20,20,202105,2021),('2021-05-21',202120,5,2021,21,20,202105,2021),('2021-05-22',202120,5,2021,22,20,202105,2021),('2021-05-23',202121,5,2021,23,21,202105,2021),('2021-05-24',202121,5,2021,24,21,202105,2021),('2021-05-25',202121,5,2021,25,21,202105,2021),('2021-05-26',202121,5,2021,26,21,202105,2021),('2021-05-27',202121,5,2021,27,21,202105,2021),('2021-05-28',202121,5,2021,28,21,202105,2021),('2021-05-29',202121,5,2021,29,21,202105,2021),('2021-05-30',202122,5,2021,30,22,202105,2021),('2021-05-31',202122,5,2021,31,22,202105,2021),('2021-06-01',202122,6,2021,1,22,202106,2021),('2021-06-02',202122,6,2021,2,22,202106,2021),('2021-06-03',202122,6,2021,3,22,202106,2021),('2021-06-04',202122,6,2021,4,22,202106,2021),('2021-06-05',202122,6,2021,5,22,202106,2021),('2021-06-06',202123,6,2021,6,23,202106,2021),('2021-06-07',202123,6,2021,7,23,202106,2021),('2021-06-08',202123,6,2021,8,23,202106,2021),('2021-06-09',202123,6,2021,9,23,202106,2021),('2021-06-10',202123,6,2021,10,23,202106,2021),('2021-06-11',202123,6,2021,11,23,202106,2021),('2021-06-12',202123,6,2021,12,23,202106,2021),('2021-06-13',202124,6,2021,13,24,202106,2021),('2021-06-14',202124,6,2021,14,24,202106,2021),('2021-06-15',202124,6,2021,15,24,202106,2021),('2021-06-16',202124,6,2021,16,24,202106,2021),('2021-06-17',202124,6,2021,17,24,202106,2021),('2021-06-18',202124,6,2021,18,24,202106,2021),('2021-06-19',202124,6,2021,19,24,202106,2021),('2021-06-20',202125,6,2021,20,25,202106,2021),('2021-06-21',202125,6,2021,21,25,202106,2021),('2021-06-22',202125,6,2021,22,25,202106,2021),('2021-06-23',202125,6,2021,23,25,202106,2021),('2021-06-24',202125,6,2021,24,25,202106,2021),('2021-06-25',202125,6,2021,25,25,202106,2021),('2021-06-26',202125,6,2021,26,25,202106,2021),('2021-06-27',202126,6,2021,27,26,202106,2021),('2021-06-28',202126,6,2021,28,26,202106,2021),('2021-06-29',202126,6,2021,29,26,202106,2021),('2021-06-30',202126,6,2021,30,26,202106,2021),('2021-07-01',202126,7,2021,1,26,202107,2021),('2021-07-02',202126,7,2021,2,26,202107,2021),('2021-07-03',202126,7,2021,3,26,202107,2021),('2021-07-04',202127,7,2021,4,27,202107,2021),('2021-07-05',202127,7,2021,5,27,202107,2021),('2021-07-06',202127,7,2021,6,27,202107,2021),('2021-07-07',202127,7,2021,7,27,202107,2021),('2021-07-08',202127,7,2021,8,27,202107,2021),('2021-07-09',202127,7,2021,9,27,202107,2021),('2021-07-10',202127,7,2021,10,27,202107,2021),('2021-07-11',202128,7,2021,11,28,202107,2021),('2021-07-12',202128,7,2021,12,28,202107,2021),('2021-07-13',202128,7,2021,13,28,202107,2021),('2021-07-14',202128,7,2021,14,28,202107,2021),('2021-07-15',202128,7,2021,15,28,202107,2021),('2021-07-16',202128,7,2021,16,28,202107,2021),('2021-07-17',202128,7,2021,17,28,202107,2021),('2021-07-18',202129,7,2021,18,29,202107,2021),('2021-07-19',202129,7,2021,19,29,202107,2021),('2021-07-20',202129,7,2021,20,29,202107,2021),('2021-07-21',202129,7,2021,21,29,202107,2021),('2021-07-22',202129,7,2021,22,29,202107,2021),('2021-07-23',202129,7,2021,23,29,202107,2021),('2021-07-24',202129,7,2021,24,29,202107,2021),('2021-07-25',202130,7,2021,25,30,202107,2021),('2021-07-26',202130,7,2021,26,30,202107,2021),('2021-07-27',202130,7,2021,27,30,202107,2021),('2021-07-28',202130,7,2021,28,30,202107,2021),('2021-07-29',202130,7,2021,29,30,202107,2021),('2021-07-30',202130,7,2021,30,30,202107,2021),('2021-07-31',202130,7,2021,31,30,202107,2021),('2021-08-01',202131,8,2021,1,31,202108,2021),('2021-08-02',202131,8,2021,2,31,202108,2021),('2021-08-03',202131,8,2021,3,31,202108,2021),('2021-08-04',202131,8,2021,4,31,202108,2021),('2021-08-05',202131,8,2021,5,31,202108,2021),('2021-08-06',202131,8,2021,6,31,202108,2021),('2021-08-07',202131,8,2021,7,31,202108,2021),('2021-08-08',202132,8,2021,8,32,202108,2021),('2021-08-09',202132,8,2021,9,32,202108,2021),('2021-08-10',202132,8,2021,10,32,202108,2021),('2021-08-11',202132,8,2021,11,32,202108,2021),('2021-08-12',202132,8,2021,12,32,202108,2021),('2021-08-13',202132,8,2021,13,32,202108,2021),('2021-08-14',202132,8,2021,14,32,202108,2021),('2021-08-15',202133,8,2021,15,33,202108,2021),('2021-08-16',202133,8,2021,16,33,202108,2021),('2021-08-17',202133,8,2021,17,33,202108,2021),('2021-08-18',202133,8,2021,18,33,202108,2021),('2021-08-19',202133,8,2021,19,33,202108,2021),('2021-08-20',202133,8,2021,20,33,202108,2021),('2021-08-21',202133,8,2021,21,33,202108,2021),('2021-08-22',202134,8,2021,22,34,202108,2021),('2021-08-23',202134,8,2021,23,34,202108,2021),('2021-08-24',202134,8,2021,24,34,202108,2021),('2021-08-25',202134,8,2021,25,34,202108,2021),('2021-08-26',202134,8,2021,26,34,202108,2021),('2021-08-27',202134,8,2021,27,34,202108,2021),('2021-08-28',202134,8,2021,28,34,202108,2021),('2021-08-29',202135,8,2021,29,35,202108,2021),('2021-08-30',202135,8,2021,30,35,202108,2021),('2021-08-31',202135,8,2021,31,35,202108,2021),('2021-09-01',202135,9,2021,1,35,202109,2021),('2021-09-02',202135,9,2021,2,35,202109,2021),('2021-09-03',202135,9,2021,3,35,202109,2021),('2021-09-04',202135,9,2021,4,35,202109,2021),('2021-09-05',202136,9,2021,5,36,202109,2021),('2021-09-06',202136,9,2021,6,36,202109,2021),('2021-09-07',202136,9,2021,7,36,202109,2021),('2021-09-08',202136,9,2021,8,36,202109,2021),('2021-09-09',202136,9,2021,9,36,202109,2021),('2021-09-10',202136,9,2021,10,36,202109,2021),('2021-09-11',202136,9,2021,11,36,202109,2021),('2021-09-12',202137,9,2021,12,37,202109,2021),('2021-09-13',202137,9,2021,13,37,202109,2021),('2021-09-14',202137,9,2021,14,37,202109,2021),('2021-09-15',202137,9,2021,15,37,202109,2021),('2021-09-16',202137,9,2021,16,37,202109,2021),('2021-09-17',202137,9,2021,17,37,202109,2021),('2021-09-18',202137,9,2021,18,37,202109,2021),('2021-09-19',202138,9,2021,19,38,202109,2021),('2021-09-20',202138,9,2021,20,38,202109,2021),('2021-09-21',202138,9,2021,21,38,202109,2021),('2021-09-22',202138,9,2021,22,38,202109,2021),('2021-09-23',202138,9,2021,23,38,202109,2021),('2021-09-24',202138,9,2021,24,38,202109,2021),('2021-09-25',202138,9,2021,25,38,202109,2021),('2021-09-26',202139,9,2021,26,39,202109,2021),('2021-09-27',202139,9,2021,27,39,202109,2021),('2021-09-28',202139,9,2021,28,39,202109,2021),('2021-09-29',202139,9,2021,29,39,202109,2021),('2021-09-30',202139,9,2021,30,39,202109,2021),('2021-10-01',202139,10,2021,1,39,202110,2021),('2021-10-02',202139,10,2021,2,39,202110,2021),('2021-10-03',202140,10,2021,3,40,202110,2021),('2021-10-04',202140,10,2021,4,40,202110,2021),('2021-10-05',202140,10,2021,5,40,202110,2021),('2021-10-06',202140,10,2021,6,40,202110,2021),('2021-10-07',202140,10,2021,7,40,202110,2021),('2021-10-08',202140,10,2021,8,40,202110,2021),('2021-10-09',202140,10,2021,9,40,202110,2021),('2021-10-10',202141,10,2021,10,41,202110,2021),('2021-10-11',202141,10,2021,11,41,202110,2021),('2021-10-12',202141,10,2021,12,41,202110,2021),('2021-10-13',202141,10,2021,13,41,202110,2021),('2021-10-14',202141,10,2021,14,41,202110,2021),('2021-10-15',202141,10,2021,15,41,202110,2021),('2021-10-16',202141,10,2021,16,41,202110,2021),('2021-10-17',202142,10,2021,17,42,202110,2021),('2021-10-18',202142,10,2021,18,42,202110,2021),('2021-10-19',202142,10,2021,19,42,202110,2021),('2021-10-20',202142,10,2021,20,42,202110,2021),('2021-10-21',202142,10,2021,21,42,202110,2021),('2021-10-22',202142,10,2021,22,42,202110,2021),('2021-10-23',202142,10,2021,23,42,202110,2021),('2021-10-24',202143,10,2021,24,43,202110,2021),('2021-10-25',202143,10,2021,25,43,202110,2021),('2021-10-26',202143,10,2021,26,43,202110,2021),('2021-10-27',202143,10,2021,27,43,202110,2021),('2021-10-28',202143,10,2021,28,43,202110,2021),('2021-10-29',202143,10,2021,29,43,202110,2021),('2021-10-30',202143,10,2021,30,43,202110,2021),('2021-10-31',202144,10,2021,31,44,202110,2021),('2021-11-01',202144,11,2021,1,44,202111,2021),('2021-11-02',202144,11,2021,2,44,202111,2021),('2021-11-03',202144,11,2021,3,44,202111,2021),('2021-11-04',202144,11,2021,4,44,202111,2021),('2021-11-05',202144,11,2021,5,44,202111,2021),('2021-11-06',202144,11,2021,6,44,202111,2021),('2021-11-07',202145,11,2021,7,45,202111,2021),('2021-11-08',202145,11,2021,8,45,202111,2021),('2021-11-09',202145,11,2021,9,45,202111,2021),('2021-11-10',202145,11,2021,10,45,202111,2021),('2021-11-11',202145,11,2021,11,45,202111,2021),('2021-11-12',202145,11,2021,12,45,202111,2021),('2021-11-13',202145,11,2021,13,45,202111,2021),('2021-11-14',202146,11,2021,14,46,202111,2021),('2021-11-15',202146,11,2021,15,46,202111,2021),('2021-11-16',202146,11,2021,16,46,202111,2021),('2021-11-17',202146,11,2021,17,46,202111,2021),('2021-11-18',202146,11,2021,18,46,202111,2021),('2021-11-19',202146,11,2021,19,46,202111,2021),('2021-11-20',202146,11,2021,20,46,202111,2021),('2021-11-21',202147,11,2021,21,47,202111,2021),('2021-11-22',202147,11,2021,22,47,202111,2021),('2021-11-23',202147,11,2021,23,47,202111,2021),('2021-11-24',202147,11,2021,24,47,202111,2021),('2021-11-25',202147,11,2021,25,47,202111,2021),('2021-11-26',202147,11,2021,26,47,202111,2021),('2021-11-27',202147,11,2021,27,47,202111,2021),('2021-11-28',202148,11,2021,28,48,202111,2021),('2021-11-29',202148,11,2021,29,48,202111,2021),('2021-11-30',202148,11,2021,30,48,202111,2021),('2021-12-01',202148,12,2021,1,48,202112,2022),('2021-12-02',202148,12,2021,2,48,202112,2022),('2021-12-03',202148,12,2021,3,48,202112,2022),('2021-12-04',202148,12,2021,4,48,202112,2022),('2021-12-05',202149,12,2021,5,49,202112,2022),('2021-12-06',202149,12,2021,6,49,202112,2022),('2021-12-07',202149,12,2021,7,49,202112,2022),('2021-12-08',202149,12,2021,8,49,202112,2022),('2021-12-09',202149,12,2021,9,49,202112,2022),('2021-12-10',202149,12,2021,10,49,202112,2022),('2021-12-11',202149,12,2021,11,49,202112,2022),('2021-12-12',202150,12,2021,12,50,202112,2022),('2021-12-13',202150,12,2021,13,50,202112,2022),('2021-12-14',202150,12,2021,14,50,202112,2022),('2021-12-15',202150,12,2021,15,50,202112,2022),('2021-12-16',202150,12,2021,16,50,202112,2022),('2021-12-17',202150,12,2021,17,50,202112,2022),('2021-12-18',202150,12,2021,18,50,202112,2022),('2021-12-19',202151,12,2021,19,51,202112,2022),('2021-12-20',202151,12,2021,20,51,202112,2022),('2021-12-21',202151,12,2021,21,51,202112,2022),('2021-12-22',202151,12,2021,22,51,202112,2022),('2021-12-23',202151,12,2021,23,51,202112,2022),('2021-12-24',202151,12,2021,24,51,202112,2022),('2021-12-25',202151,12,2021,25,51,202112,2022),('2021-12-26',202152,12,2021,26,52,202112,2022),('2021-12-27',202152,12,2021,27,52,202112,2022),('2021-12-28',202152,12,2021,28,52,202112,2022),('2021-12-29',202152,12,2021,29,52,202112,2022),('2021-12-30',202152,12,2021,30,52,202112,2022),('2021-12-31',202152,12,2021,31,52,202112,2022),('2022-01-01',202252,1,2022,1,52,202201,2022),('2022-01-02',202201,1,2022,2,1,202201,2022),('2022-01-03',202201,1,2022,3,1,202201,2022),('2022-01-04',202201,1,2022,4,1,202201,2022),('2022-01-05',202201,1,2022,5,1,202201,2022),('2022-01-06',202201,1,2022,6,1,202201,2022),('2022-01-07',202201,1,2022,7,1,202201,2022),('2022-01-08',202201,1,2022,8,1,202201,2022),('2022-01-09',202202,1,2022,9,2,202201,2022),('2022-01-10',202202,1,2022,10,2,202201,2022),('2022-01-11',202202,1,2022,11,2,202201,2022),('2022-01-12',202202,1,2022,12,2,202201,2022),('2022-01-13',202202,1,2022,13,2,202201,2022),('2022-01-14',202202,1,2022,14,2,202201,2022),('2022-01-15',202202,1,2022,15,2,202201,2022),('2022-01-16',202203,1,2022,16,3,202201,2022),('2022-01-17',202203,1,2022,17,3,202201,2022),('2022-01-18',202203,1,2022,18,3,202201,2022),('2022-01-19',202203,1,2022,19,3,202201,2022),('2022-01-20',202203,1,2022,20,3,202201,2022),('2022-01-21',202203,1,2022,21,3,202201,2022),('2022-01-22',202203,1,2022,22,3,202201,2022),('2022-01-23',202204,1,2022,23,4,202201,2022),('2022-01-24',202204,1,2022,24,4,202201,2022),('2022-01-25',202204,1,2022,25,4,202201,2022),('2022-01-26',202204,1,2022,26,4,202201,2022),('2022-01-27',202204,1,2022,27,4,202201,2022),('2022-01-28',202204,1,2022,28,4,202201,2022),('2022-01-29',202204,1,2022,29,4,202201,2022),('2022-01-30',202205,1,2022,30,5,202201,2022),('2022-01-31',202205,1,2022,31,5,202201,2022),('2022-02-01',202205,2,2022,1,5,202202,2022),('2022-02-02',202205,2,2022,2,5,202202,2022),('2022-02-03',202205,2,2022,3,5,202202,2022),('2022-02-04',202205,2,2022,4,5,202202,2022),('2022-02-05',202205,2,2022,5,5,202202,2022),('2022-02-06',202206,2,2022,6,6,202202,2022),('2022-02-07',202206,2,2022,7,6,202202,2022),('2022-02-08',202206,2,2022,8,6,202202,2022),('2022-02-09',202206,2,2022,9,6,202202,2022),('2022-02-10',202206,2,2022,10,6,202202,2022),('2022-02-11',202206,2,2022,11,6,202202,2022),('2022-02-12',202206,2,2022,12,6,202202,2022),('2022-02-13',202207,2,2022,13,7,202202,2022),('2022-02-14',202207,2,2022,14,7,202202,2022),('2022-02-15',202207,2,2022,15,7,202202,2022),('2022-02-16',202207,2,2022,16,7,202202,2022),('2022-02-17',202207,2,2022,17,7,202202,2022),('2022-02-18',202207,2,2022,18,7,202202,2022),('2022-02-19',202207,2,2022,19,7,202202,2022),('2022-02-20',202208,2,2022,20,8,202202,2022),('2022-02-21',202208,2,2022,21,8,202202,2022),('2022-02-22',202208,2,2022,22,8,202202,2022),('2022-02-23',202208,2,2022,23,8,202202,2022),('2022-02-24',202208,2,2022,24,8,202202,2022),('2022-02-25',202208,2,2022,25,8,202202,2022),('2022-02-26',202208,2,2022,26,8,202202,2022),('2022-02-27',202209,2,2022,27,9,202202,2022),('2022-02-28',202209,2,2022,28,9,202202,2022),('2022-03-01',202209,3,2022,1,9,202203,2022),('2022-03-02',202209,3,2022,2,9,202203,2022),('2022-03-03',202209,3,2022,3,9,202203,2022),('2022-03-04',202209,3,2022,4,9,202203,2022),('2022-03-05',202209,3,2022,5,9,202203,2022),('2022-03-06',202210,3,2022,6,10,202203,2022),('2022-03-07',202210,3,2022,7,10,202203,2022),('2022-03-08',202210,3,2022,8,10,202203,2022),('2022-03-09',202210,3,2022,9,10,202203,2022),('2022-03-10',202210,3,2022,10,10,202203,2022),('2022-03-11',202210,3,2022,11,10,202203,2022),('2022-03-12',202210,3,2022,12,10,202203,2022),('2022-03-13',202211,3,2022,13,11,202203,2022),('2022-03-14',202211,3,2022,14,11,202203,2022),('2022-03-15',202211,3,2022,15,11,202203,2022),('2022-03-16',202211,3,2022,16,11,202203,2022),('2022-03-17',202211,3,2022,17,11,202203,2022),('2022-03-18',202211,3,2022,18,11,202203,2022),('2022-03-19',202211,3,2022,19,11,202203,2022),('2022-03-20',202212,3,2022,20,12,202203,2022),('2022-03-21',202212,3,2022,21,12,202203,2022),('2022-03-22',202212,3,2022,22,12,202203,2022),('2022-03-23',202212,3,2022,23,12,202203,2022),('2022-03-24',202212,3,2022,24,12,202203,2022),('2022-03-25',202212,3,2022,25,12,202203,2022),('2022-03-26',202212,3,2022,26,12,202203,2022),('2022-03-27',202213,3,2022,27,13,202203,2022),('2022-03-28',202213,3,2022,28,13,202203,2022),('2022-03-29',202213,3,2022,29,13,202203,2022),('2022-03-30',202213,3,2022,30,13,202203,2022),('2022-03-31',202213,3,2022,31,13,202203,2022),('2022-04-01',202213,4,2022,1,13,202204,2022),('2022-04-02',202213,4,2022,2,13,202204,2022),('2022-04-03',202214,4,2022,3,14,202204,2022),('2022-04-04',202214,4,2022,4,14,202204,2022),('2022-04-05',202214,4,2022,5,14,202204,2022),('2022-04-06',202214,4,2022,6,14,202204,2022),('2022-04-07',202214,4,2022,7,14,202204,2022),('2022-04-08',202214,4,2022,8,14,202204,2022),('2022-04-09',202214,4,2022,9,14,202204,2022),('2022-04-10',202215,4,2022,10,15,202204,2022),('2022-04-11',202215,4,2022,11,15,202204,2022),('2022-04-12',202215,4,2022,12,15,202204,2022),('2022-04-13',202215,4,2022,13,15,202204,2022),('2022-04-14',202215,4,2022,14,15,202204,2022),('2022-04-15',202215,4,2022,15,15,202204,2022),('2022-04-16',202215,4,2022,16,15,202204,2022),('2022-04-17',202216,4,2022,17,16,202204,2022),('2022-04-18',202216,4,2022,18,16,202204,2022),('2022-04-19',202216,4,2022,19,16,202204,2022),('2022-04-20',202216,4,2022,20,16,202204,2022),('2022-04-21',202216,4,2022,21,16,202204,2022),('2022-04-22',202216,4,2022,22,16,202204,2022),('2022-04-23',202216,4,2022,23,16,202204,2022),('2022-04-24',202217,4,2022,24,17,202204,2022),('2022-04-25',202217,4,2022,25,17,202204,2022),('2022-04-26',202217,4,2022,26,17,202204,2022),('2022-04-27',202217,4,2022,27,17,202204,2022),('2022-04-28',202217,4,2022,28,17,202204,2022),('2022-04-29',202217,4,2022,29,17,202204,2022),('2022-04-30',202217,4,2022,30,17,202204,2022),('2022-05-01',202218,5,2022,1,18,202205,2022),('2022-05-02',202218,5,2022,2,18,202205,2022),('2022-05-03',202218,5,2022,3,18,202205,2022),('2022-05-04',202218,5,2022,4,18,202205,2022),('2022-05-05',202218,5,2022,5,18,202205,2022),('2022-05-06',202218,5,2022,6,18,202205,2022),('2022-05-07',202218,5,2022,7,18,202205,2022),('2022-05-08',202219,5,2022,8,19,202205,2022),('2022-05-09',202219,5,2022,9,19,202205,2022),('2022-05-10',202219,5,2022,10,19,202205,2022),('2022-05-11',202219,5,2022,11,19,202205,2022),('2022-05-12',202219,5,2022,12,19,202205,2022),('2022-05-13',202219,5,2022,13,19,202205,2022),('2022-05-14',202219,5,2022,14,19,202205,2022),('2022-05-15',202220,5,2022,15,20,202205,2022),('2022-05-16',202220,5,2022,16,20,202205,2022),('2022-05-17',202220,5,2022,17,20,202205,2022),('2022-05-18',202220,5,2022,18,20,202205,2022),('2022-05-19',202220,5,2022,19,20,202205,2022),('2022-05-20',202220,5,2022,20,20,202205,2022),('2022-05-21',202220,5,2022,21,20,202205,2022),('2022-05-22',202221,5,2022,22,21,202205,2022),('2022-05-23',202221,5,2022,23,21,202205,2022),('2022-05-24',202221,5,2022,24,21,202205,2022),('2022-05-25',202221,5,2022,25,21,202205,2022),('2022-05-26',202221,5,2022,26,21,202205,2022),('2022-05-27',202221,5,2022,27,21,202205,2022),('2022-05-28',202221,5,2022,28,21,202205,2022),('2022-05-29',202222,5,2022,29,22,202205,2022),('2022-05-30',202222,5,2022,30,22,202205,2022),('2022-05-31',202222,5,2022,31,22,202205,2022),('2022-06-01',202222,6,2022,1,22,202206,2022),('2022-06-02',202222,6,2022,2,22,202206,2022),('2022-06-03',202222,6,2022,3,22,202206,2022),('2022-06-04',202222,6,2022,4,22,202206,2022),('2022-06-05',202223,6,2022,5,23,202206,2022),('2022-06-06',202223,6,2022,6,23,202206,2022),('2022-06-07',202223,6,2022,7,23,202206,2022),('2022-06-08',202223,6,2022,8,23,202206,2022),('2022-06-09',202223,6,2022,9,23,202206,2022),('2022-06-10',202223,6,2022,10,23,202206,2022),('2022-06-11',202223,6,2022,11,23,202206,2022),('2022-06-12',202224,6,2022,12,24,202206,2022),('2022-06-13',202224,6,2022,13,24,202206,2022),('2022-06-14',202224,6,2022,14,24,202206,2022),('2022-06-15',202224,6,2022,15,24,202206,2022),('2022-06-16',202224,6,2022,16,24,202206,2022),('2022-06-17',202224,6,2022,17,24,202206,2022),('2022-06-18',202224,6,2022,18,24,202206,2022),('2022-06-19',202225,6,2022,19,25,202206,2022),('2022-06-20',202225,6,2022,20,25,202206,2022),('2022-06-21',202225,6,2022,21,25,202206,2022),('2022-06-22',202225,6,2022,22,25,202206,2022),('2022-06-23',202225,6,2022,23,25,202206,2022),('2022-06-24',202225,6,2022,24,25,202206,2022),('2022-06-25',202225,6,2022,25,25,202206,2022),('2022-06-26',202226,6,2022,26,26,202206,2022),('2022-06-27',202226,6,2022,27,26,202206,2022),('2022-06-28',202226,6,2022,28,26,202206,2022),('2022-06-29',202226,6,2022,29,26,202206,2022),('2022-06-30',202226,6,2022,30,26,202206,2022),('2022-07-01',202226,7,2022,1,26,202207,2022),('2022-07-02',202226,7,2022,2,26,202207,2022),('2022-07-03',202227,7,2022,3,27,202207,2022),('2022-07-04',202227,7,2022,4,27,202207,2022),('2022-07-05',202227,7,2022,5,27,202207,2022),('2022-07-06',202227,7,2022,6,27,202207,2022),('2022-07-07',202227,7,2022,7,27,202207,2022),('2022-07-08',202227,7,2022,8,27,202207,2022),('2022-07-09',202227,7,2022,9,27,202207,2022),('2022-07-10',202228,7,2022,10,28,202207,2022),('2022-07-11',202228,7,2022,11,28,202207,2022),('2022-07-12',202228,7,2022,12,28,202207,2022),('2022-07-13',202228,7,2022,13,28,202207,2022),('2022-07-14',202228,7,2022,14,28,202207,2022),('2022-07-15',202228,7,2022,15,28,202207,2022),('2022-07-16',202228,7,2022,16,28,202207,2022),('2022-07-17',202229,7,2022,17,29,202207,2022),('2022-07-18',202229,7,2022,18,29,202207,2022),('2022-07-19',202229,7,2022,19,29,202207,2022),('2022-07-20',202229,7,2022,20,29,202207,2022),('2022-07-21',202229,7,2022,21,29,202207,2022),('2022-07-22',202229,7,2022,22,29,202207,2022),('2022-07-23',202229,7,2022,23,29,202207,2022),('2022-07-24',202230,7,2022,24,30,202207,2022),('2022-07-25',202230,7,2022,25,30,202207,2022),('2022-07-26',202230,7,2022,26,30,202207,2022),('2022-07-27',202230,7,2022,27,30,202207,2022),('2022-07-28',202230,7,2022,28,30,202207,2022),('2022-07-29',202230,7,2022,29,30,202207,2022),('2022-07-30',202230,7,2022,30,30,202207,2022),('2022-07-31',202231,7,2022,31,31,202207,2022),('2022-08-01',202231,8,2022,1,31,202208,2022),('2022-08-02',202231,8,2022,2,31,202208,2022),('2022-08-03',202231,8,2022,3,31,202208,2022),('2022-08-04',202231,8,2022,4,31,202208,2022),('2022-08-05',202231,8,2022,5,31,202208,2022),('2022-08-06',202231,8,2022,6,31,202208,2022),('2022-08-07',202232,8,2022,7,32,202208,2022),('2022-08-08',202232,8,2022,8,32,202208,2022),('2022-08-09',202232,8,2022,9,32,202208,2022),('2022-08-10',202232,8,2022,10,32,202208,2022),('2022-08-11',202232,8,2022,11,32,202208,2022),('2022-08-12',202232,8,2022,12,32,202208,2022),('2022-08-13',202232,8,2022,13,32,202208,2022),('2022-08-14',202233,8,2022,14,33,202208,2022),('2022-08-15',202233,8,2022,15,33,202208,2022),('2022-08-16',202233,8,2022,16,33,202208,2022),('2022-08-17',202233,8,2022,17,33,202208,2022),('2022-08-18',202233,8,2022,18,33,202208,2022),('2022-08-19',202233,8,2022,19,33,202208,2022),('2022-08-20',202233,8,2022,20,33,202208,2022),('2022-08-21',202234,8,2022,21,34,202208,2022),('2022-08-22',202234,8,2022,22,34,202208,2022),('2022-08-23',202234,8,2022,23,34,202208,2022),('2022-08-24',202234,8,2022,24,34,202208,2022),('2022-08-25',202234,8,2022,25,34,202208,2022),('2022-08-26',202234,8,2022,26,34,202208,2022),('2022-08-27',202234,8,2022,27,34,202208,2022),('2022-08-28',202235,8,2022,28,35,202208,2022),('2022-08-29',202235,8,2022,29,35,202208,2022),('2022-08-30',202235,8,2022,30,35,202208,2022),('2022-08-31',202235,8,2022,31,35,202208,2022),('2022-09-01',202235,9,2022,1,35,202209,2022),('2022-09-02',202235,9,2022,2,35,202209,2022),('2022-09-03',202235,9,2022,3,35,202209,2022),('2022-09-04',202236,9,2022,4,36,202209,2022),('2022-09-05',202236,9,2022,5,36,202209,2022),('2022-09-06',202236,9,2022,6,36,202209,2022),('2022-09-07',202236,9,2022,7,36,202209,2022),('2022-09-08',202236,9,2022,8,36,202209,2022),('2022-09-09',202236,9,2022,9,36,202209,2022),('2022-09-10',202236,9,2022,10,36,202209,2022),('2022-09-11',202237,9,2022,11,37,202209,2022),('2022-09-12',202237,9,2022,12,37,202209,2022),('2022-09-13',202237,9,2022,13,37,202209,2022),('2022-09-14',202237,9,2022,14,37,202209,2022),('2022-09-15',202237,9,2022,15,37,202209,2022),('2022-09-16',202237,9,2022,16,37,202209,2022),('2022-09-17',202237,9,2022,17,37,202209,2022),('2022-09-18',202238,9,2022,18,38,202209,2022),('2022-09-19',202238,9,2022,19,38,202209,2022),('2022-09-20',202238,9,2022,20,38,202209,2022),('2022-09-21',202238,9,2022,21,38,202209,2022),('2022-09-22',202238,9,2022,22,38,202209,2022),('2022-09-23',202238,9,2022,23,38,202209,2022),('2022-09-24',202238,9,2022,24,38,202209,2022),('2022-09-25',202239,9,2022,25,39,202209,2022),('2022-09-26',202239,9,2022,26,39,202209,2022),('2022-09-27',202239,9,2022,27,39,202209,2022),('2022-09-28',202239,9,2022,28,39,202209,2022),('2022-09-29',202239,9,2022,29,39,202209,2022),('2022-09-30',202239,9,2022,30,39,202209,2022),('2022-10-01',202239,10,2022,1,39,202210,2022),('2022-10-02',202240,10,2022,2,40,202210,2022),('2022-10-03',202240,10,2022,3,40,202210,2022),('2022-10-04',202240,10,2022,4,40,202210,2022),('2022-10-05',202240,10,2022,5,40,202210,2022),('2022-10-06',202240,10,2022,6,40,202210,2022),('2022-10-07',202240,10,2022,7,40,202210,2022),('2022-10-08',202240,10,2022,8,40,202210,2022),('2022-10-09',202241,10,2022,9,41,202210,2022),('2022-10-10',202241,10,2022,10,41,202210,2022),('2022-10-11',202241,10,2022,11,41,202210,2022),('2022-10-12',202241,10,2022,12,41,202210,2022),('2022-10-13',202241,10,2022,13,41,202210,2022),('2022-10-14',202241,10,2022,14,41,202210,2022),('2022-10-15',202241,10,2022,15,41,202210,2022),('2022-10-16',202242,10,2022,16,42,202210,2022),('2022-10-17',202242,10,2022,17,42,202210,2022),('2022-10-18',202242,10,2022,18,42,202210,2022),('2022-10-19',202242,10,2022,19,42,202210,2022),('2022-10-20',202242,10,2022,20,42,202210,2022),('2022-10-21',202242,10,2022,21,42,202210,2022),('2022-10-22',202242,10,2022,22,42,202210,2022),('2022-10-23',202243,10,2022,23,43,202210,2022),('2022-10-24',202243,10,2022,24,43,202210,2022),('2022-10-25',202243,10,2022,25,43,202210,2022),('2022-10-26',202243,10,2022,26,43,202210,2022),('2022-10-27',202243,10,2022,27,43,202210,2022),('2022-10-28',202243,10,2022,28,43,202210,2022),('2022-10-29',202243,10,2022,29,43,202210,2022),('2022-10-30',202244,10,2022,30,44,202210,2022),('2022-10-31',202244,10,2022,31,44,202210,2022),('2022-11-01',202244,11,2022,1,44,202211,2022),('2022-11-02',202244,11,2022,2,44,202211,2022),('2022-11-03',202244,11,2022,3,44,202211,2022),('2022-11-04',202244,11,2022,4,44,202211,2022),('2022-11-05',202244,11,2022,5,44,202211,2022),('2022-11-06',202245,11,2022,6,45,202211,2022),('2022-11-07',202245,11,2022,7,45,202211,2022),('2022-11-08',202245,11,2022,8,45,202211,2022),('2022-11-09',202245,11,2022,9,45,202211,2022),('2022-11-10',202245,11,2022,10,45,202211,2022),('2022-11-11',202245,11,2022,11,45,202211,2022),('2022-11-12',202245,11,2022,12,45,202211,2022),('2022-11-13',202246,11,2022,13,46,202211,2022),('2022-11-14',202246,11,2022,14,46,202211,2022),('2022-11-15',202246,11,2022,15,46,202211,2022),('2022-11-16',202246,11,2022,16,46,202211,2022),('2022-11-17',202246,11,2022,17,46,202211,2022),('2022-11-18',202246,11,2022,18,46,202211,2022),('2022-11-19',202246,11,2022,19,46,202211,2022),('2022-11-20',202247,11,2022,20,47,202211,2022),('2022-11-21',202247,11,2022,21,47,202211,2022),('2022-11-22',202247,11,2022,22,47,202211,2022),('2022-11-23',202247,11,2022,23,47,202211,2022),('2022-11-24',202247,11,2022,24,47,202211,2022),('2022-11-25',202247,11,2022,25,47,202211,2022),('2022-11-26',202247,11,2022,26,47,202211,2022),('2022-11-27',202248,11,2022,27,48,202211,2022),('2022-11-28',202248,11,2022,28,48,202211,2022),('2022-11-29',202248,11,2022,29,48,202211,2022),('2022-11-30',202248,11,2022,30,48,202211,2022),('2022-12-01',202248,12,2022,1,48,202212,2023),('2022-12-02',202248,12,2022,2,48,202212,2023),('2022-12-03',202248,12,2022,3,48,202212,2023),('2022-12-04',202249,12,2022,4,49,202212,2023),('2022-12-05',202249,12,2022,5,49,202212,2023),('2022-12-06',202249,12,2022,6,49,202212,2023),('2022-12-07',202249,12,2022,7,49,202212,2023),('2022-12-08',202249,12,2022,8,49,202212,2023),('2022-12-09',202249,12,2022,9,49,202212,2023),('2022-12-10',202249,12,2022,10,49,202212,2023),('2022-12-11',202250,12,2022,11,50,202212,2023),('2022-12-12',202250,12,2022,12,50,202212,2023),('2022-12-13',202250,12,2022,13,50,202212,2023),('2022-12-14',202250,12,2022,14,50,202212,2023),('2022-12-15',202250,12,2022,15,50,202212,2023),('2022-12-16',202250,12,2022,16,50,202212,2023),('2022-12-17',202250,12,2022,17,50,202212,2023),('2022-12-18',202251,12,2022,18,51,202212,2023),('2022-12-19',202251,12,2022,19,51,202212,2023),('2022-12-20',202251,12,2022,20,51,202212,2023),('2022-12-21',202251,12,2022,21,51,202212,2023),('2022-12-22',202251,12,2022,22,51,202212,2023),('2022-12-23',202251,12,2022,23,51,202212,2023),('2022-12-24',202251,12,2022,24,51,202212,2023),('2022-12-25',202252,12,2022,25,52,202212,2023),('2022-12-26',202252,12,2022,26,52,202212,2023),('2022-12-27',202252,12,2022,27,52,202212,2023),('2022-12-28',202252,12,2022,28,52,202212,2023),('2022-12-29',202252,12,2022,29,52,202212,2023),('2022-12-30',202252,12,2022,30,52,202212,2023),('2022-12-31',202252,12,2022,31,52,202212,2023),('2023-01-01',202353,1,2023,1,1,202301,2023),('2023-01-02',202301,1,2023,2,1,202301,2023),('2023-01-03',202301,1,2023,3,1,202301,2023),('2023-01-04',202301,1,2023,4,1,202301,2023),('2023-01-05',202301,1,2023,5,1,202301,2023),('2023-01-06',202301,1,2023,6,1,202301,2023),('2023-01-07',202301,1,2023,7,1,202301,2023),('2023-01-08',202302,1,2023,8,2,202301,2023),('2023-01-09',202302,1,2023,9,2,202301,2023),('2023-01-10',202302,1,2023,10,2,202301,2023),('2023-01-11',202302,1,2023,11,2,202301,2023),('2023-01-12',202302,1,2023,12,2,202301,2023),('2023-01-13',202302,1,2023,13,2,202301,2023),('2023-01-14',202302,1,2023,14,2,202301,2023),('2023-01-15',202303,1,2023,15,3,202301,2023),('2023-01-16',202303,1,2023,16,3,202301,2023),('2023-01-17',202303,1,2023,17,3,202301,2023),('2023-01-18',202303,1,2023,18,3,202301,2023),('2023-01-19',202303,1,2023,19,3,202301,2023),('2023-01-20',202303,1,2023,20,3,202301,2023),('2023-01-21',202303,1,2023,21,3,202301,2023),('2023-01-22',202304,1,2023,22,4,202301,2023),('2023-01-23',202304,1,2023,23,4,202301,2023),('2023-01-24',202304,1,2023,24,4,202301,2023),('2023-01-25',202304,1,2023,25,4,202301,2023),('2023-01-26',202304,1,2023,26,4,202301,2023),('2023-01-27',202304,1,2023,27,4,202301,2023),('2023-01-28',202304,1,2023,28,4,202301,2023),('2023-01-29',202305,1,2023,29,5,202301,2023),('2023-01-30',202305,1,2023,30,5,202301,2023),('2023-01-31',202305,1,2023,31,5,202301,2023),('2023-02-01',202305,2,2023,1,5,202302,2023),('2023-02-02',202305,2,2023,2,5,202302,2023),('2023-02-03',202305,2,2023,3,5,202302,2023),('2023-02-04',202305,2,2023,4,5,202302,2023),('2023-02-05',202306,2,2023,5,6,202302,2023),('2023-02-06',202306,2,2023,6,6,202302,2023),('2023-02-07',202306,2,2023,7,6,202302,2023),('2023-02-08',202306,2,2023,8,6,202302,2023),('2023-02-09',202306,2,2023,9,6,202302,2023),('2023-02-10',202306,2,2023,10,6,202302,2023),('2023-02-11',202306,2,2023,11,6,202302,2023),('2023-02-12',202307,2,2023,12,7,202302,2023),('2023-02-13',202307,2,2023,13,7,202302,2023),('2023-02-14',202307,2,2023,14,7,202302,2023),('2023-02-15',202307,2,2023,15,7,202302,2023),('2023-02-16',202307,2,2023,16,7,202302,2023),('2023-02-17',202307,2,2023,17,7,202302,2023),('2023-02-18',202307,2,2023,18,7,202302,2023),('2023-02-19',202308,2,2023,19,8,202302,2023),('2023-02-20',202308,2,2023,20,8,202302,2023),('2023-02-21',202308,2,2023,21,8,202302,2023),('2023-02-22',202308,2,2023,22,8,202302,2023),('2023-02-23',202308,2,2023,23,8,202302,2023),('2023-02-24',202308,2,2023,24,8,202302,2023),('2023-02-25',202308,2,2023,25,8,202302,2023),('2023-02-26',202309,2,2023,26,9,202302,2023),('2023-02-27',202309,2,2023,27,9,202302,2023),('2023-02-28',202309,2,2023,28,9,202302,2023),('2023-03-01',202309,3,2023,1,9,202303,2023),('2023-03-02',202309,3,2023,2,9,202303,2023),('2023-03-03',202309,3,2023,3,9,202303,2023),('2023-03-04',202309,3,2023,4,9,202303,2023),('2023-03-05',202310,3,2023,5,10,202303,2023),('2023-03-06',202310,3,2023,6,10,202303,2023),('2023-03-07',202310,3,2023,7,10,202303,2023),('2023-03-08',202310,3,2023,8,10,202303,2023),('2023-03-09',202310,3,2023,9,10,202303,2023),('2023-03-10',202310,3,2023,10,10,202303,2023),('2023-03-11',202310,3,2023,11,10,202303,2023),('2023-03-12',202311,3,2023,12,11,202303,2023),('2023-03-13',202311,3,2023,13,11,202303,2023),('2023-03-14',202311,3,2023,14,11,202303,2023),('2023-03-15',202311,3,2023,15,11,202303,2023),('2023-03-16',202311,3,2023,16,11,202303,2023),('2023-03-17',202311,3,2023,17,11,202303,2023),('2023-03-18',202311,3,2023,18,11,202303,2023),('2023-03-19',202312,3,2023,19,12,202303,2023),('2023-03-20',202312,3,2023,20,12,202303,2023),('2023-03-21',202312,3,2023,21,12,202303,2023),('2023-03-22',202312,3,2023,22,12,202303,2023),('2023-03-23',202312,3,2023,23,12,202303,2023),('2023-03-24',202312,3,2023,24,12,202303,2023),('2023-03-25',202312,3,2023,25,12,202303,2023),('2023-03-26',202313,3,2023,26,13,202303,2023),('2023-03-27',202313,3,2023,27,13,202303,2023),('2023-03-28',202313,3,2023,28,13,202303,2023),('2023-03-29',202313,3,2023,29,13,202303,2023),('2023-03-30',202313,3,2023,30,13,202303,2023),('2023-03-31',202313,3,2023,31,13,202303,2023),('2023-04-01',202313,4,2023,1,13,202304,2023),('2023-04-02',202314,4,2023,2,14,202304,2023),('2023-04-03',202314,4,2023,3,14,202304,2023),('2023-04-04',202314,4,2023,4,14,202304,2023),('2023-04-05',202314,4,2023,5,14,202304,2023),('2023-04-06',202314,4,2023,6,14,202304,2023),('2023-04-07',202314,4,2023,7,14,202304,2023),('2023-04-08',202314,4,2023,8,14,202304,2023),('2023-04-09',202315,4,2023,9,15,202304,2023),('2023-04-10',202315,4,2023,10,15,202304,2023),('2023-04-11',202315,4,2023,11,15,202304,2023),('2023-04-12',202315,4,2023,12,15,202304,2023),('2023-04-13',202315,4,2023,13,15,202304,2023),('2023-04-14',202315,4,2023,14,15,202304,2023),('2023-04-15',202315,4,2023,15,15,202304,2023),('2023-04-16',202316,4,2023,16,16,202304,2023),('2023-04-17',202316,4,2023,17,16,202304,2023),('2023-04-18',202316,4,2023,18,16,202304,2023),('2023-04-19',202316,4,2023,19,16,202304,2023),('2023-04-20',202316,4,2023,20,16,202304,2023),('2023-04-21',202316,4,2023,21,16,202304,2023),('2023-04-22',202316,4,2023,22,16,202304,2023),('2023-04-23',202317,4,2023,23,17,202304,2023),('2023-04-24',202317,4,2023,24,17,202304,2023),('2023-04-25',202317,4,2023,25,17,202304,2023),('2023-04-26',202317,4,2023,26,17,202304,2023),('2023-04-27',202317,4,2023,27,17,202304,2023),('2023-04-28',202317,4,2023,28,17,202304,2023),('2023-04-29',202317,4,2023,29,17,202304,2023),('2023-04-30',202318,4,2023,30,18,202304,2023),('2023-05-01',202318,5,2023,1,18,202305,2023),('2023-05-02',202318,5,2023,2,18,202305,2023),('2023-05-03',202318,5,2023,3,18,202305,2023),('2023-05-04',202318,5,2023,4,18,202305,2023),('2023-05-05',202318,5,2023,5,18,202305,2023),('2023-05-06',202318,5,2023,6,18,202305,2023),('2023-05-07',202319,5,2023,7,19,202305,2023),('2023-05-08',202319,5,2023,8,19,202305,2023),('2023-05-09',202319,5,2023,9,19,202305,2023),('2023-05-10',202319,5,2023,10,19,202305,2023),('2023-05-11',202319,5,2023,11,19,202305,2023),('2023-05-12',202319,5,2023,12,19,202305,2023),('2023-05-13',202319,5,2023,13,19,202305,2023),('2023-05-14',202320,5,2023,14,20,202305,2023),('2023-05-15',202320,5,2023,15,20,202305,2023),('2023-05-16',202320,5,2023,16,20,202305,2023),('2023-05-17',202320,5,2023,17,20,202305,2023),('2023-05-18',202320,5,2023,18,20,202305,2023),('2023-05-19',202320,5,2023,19,20,202305,2023),('2023-05-20',202320,5,2023,20,20,202305,2023),('2023-05-21',202321,5,2023,21,21,202305,2023),('2023-05-22',202321,5,2023,22,21,202305,2023),('2023-05-23',202321,5,2023,23,21,202305,2023),('2023-05-24',202321,5,2023,24,21,202305,2023),('2023-05-25',202321,5,2023,25,21,202305,2023),('2023-05-26',202321,5,2023,26,21,202305,2023),('2023-05-27',202321,5,2023,27,21,202305,2023),('2023-05-28',202322,5,2023,28,22,202305,2023),('2023-05-29',202322,5,2023,29,22,202305,2023),('2023-05-30',202322,5,2023,30,22,202305,2023),('2023-05-31',202322,5,2023,31,22,202305,2023),('2023-06-01',202322,6,2023,1,22,202306,2023),('2023-06-02',202322,6,2023,2,22,202306,2023),('2023-06-03',202322,6,2023,3,22,202306,2023),('2023-06-04',202323,6,2023,4,23,202306,2023),('2023-06-05',202323,6,2023,5,23,202306,2023),('2023-06-06',202323,6,2023,6,23,202306,2023),('2023-06-07',202323,6,2023,7,23,202306,2023),('2023-06-08',202323,6,2023,8,23,202306,2023),('2023-06-09',202323,6,2023,9,23,202306,2023),('2023-06-10',202323,6,2023,10,23,202306,2023),('2023-06-11',202324,6,2023,11,24,202306,2023),('2023-06-12',202324,6,2023,12,24,202306,2023),('2023-06-13',202324,6,2023,13,24,202306,2023),('2023-06-14',202324,6,2023,14,24,202306,2023),('2023-06-15',202324,6,2023,15,24,202306,2023),('2023-06-16',202324,6,2023,16,24,202306,2023),('2023-06-17',202324,6,2023,17,24,202306,2023),('2023-06-18',202325,6,2023,18,25,202306,2023),('2023-06-19',202325,6,2023,19,25,202306,2023),('2023-06-20',202325,6,2023,20,25,202306,2023),('2023-06-21',202325,6,2023,21,25,202306,2023),('2023-06-22',202325,6,2023,22,25,202306,2023),('2023-06-23',202325,6,2023,23,25,202306,2023),('2023-06-24',202325,6,2023,24,25,202306,2023),('2023-06-25',202326,6,2023,25,26,202306,2023),('2023-06-26',202326,6,2023,26,26,202306,2023),('2023-06-27',202326,6,2023,27,26,202306,2023),('2023-06-28',202326,6,2023,28,26,202306,2023),('2023-06-29',202326,6,2023,29,26,202306,2023),('2023-06-30',202326,6,2023,30,26,202306,2023),('2023-07-01',202326,7,2023,1,26,202307,2023),('2023-07-02',202327,7,2023,2,27,202307,2023),('2023-07-03',202327,7,2023,3,27,202307,2023),('2023-07-04',202327,7,2023,4,27,202307,2023),('2023-07-05',202327,7,2023,5,27,202307,2023),('2023-07-06',202327,7,2023,6,27,202307,2023),('2023-07-07',202327,7,2023,7,27,202307,2023),('2023-07-08',202327,7,2023,8,27,202307,2023),('2023-07-09',202328,7,2023,9,28,202307,2023),('2023-07-10',202328,7,2023,10,28,202307,2023),('2023-07-11',202328,7,2023,11,28,202307,2023),('2023-07-12',202328,7,2023,12,28,202307,2023),('2023-07-13',202328,7,2023,13,28,202307,2023),('2023-07-14',202328,7,2023,14,28,202307,2023),('2023-07-15',202328,7,2023,15,28,202307,2023),('2023-07-16',202329,7,2023,16,29,202307,2023),('2023-07-17',202329,7,2023,17,29,202307,2023),('2023-07-18',202329,7,2023,18,29,202307,2023),('2023-07-19',202329,7,2023,19,29,202307,2023),('2023-07-20',202329,7,2023,20,29,202307,2023),('2023-07-21',202329,7,2023,21,29,202307,2023),('2023-07-22',202329,7,2023,22,29,202307,2023),('2023-07-23',202330,7,2023,23,30,202307,2023),('2023-07-24',202330,7,2023,24,30,202307,2023),('2023-07-25',202330,7,2023,25,30,202307,2023),('2023-07-26',202330,7,2023,26,30,202307,2023),('2023-07-27',202330,7,2023,27,30,202307,2023),('2023-07-28',202330,7,2023,28,30,202307,2023),('2023-07-29',202330,7,2023,29,30,202307,2023),('2023-07-30',202331,7,2023,30,31,202307,2023),('2023-07-31',202331,7,2023,31,31,202307,2023),('2023-08-01',202331,8,2023,1,31,202308,2023),('2023-08-02',202331,8,2023,2,31,202308,2023),('2023-08-03',202331,8,2023,3,31,202308,2023),('2023-08-04',202331,8,2023,4,31,202308,2023),('2023-08-05',202331,8,2023,5,31,202308,2023),('2023-08-06',202332,8,2023,6,32,202308,2023),('2023-08-07',202332,8,2023,7,32,202308,2023),('2023-08-08',202332,8,2023,8,32,202308,2023),('2023-08-09',202332,8,2023,9,32,202308,2023),('2023-08-10',202332,8,2023,10,32,202308,2023),('2023-08-11',202332,8,2023,11,32,202308,2023),('2023-08-12',202332,8,2023,12,32,202308,2023),('2023-08-13',202333,8,2023,13,33,202308,2023),('2023-08-14',202333,8,2023,14,33,202308,2023),('2023-08-15',202333,8,2023,15,33,202308,2023),('2023-08-16',202333,8,2023,16,33,202308,2023),('2023-08-17',202333,8,2023,17,33,202308,2023),('2023-08-18',202333,8,2023,18,33,202308,2023),('2023-08-19',202333,8,2023,19,33,202308,2023),('2023-08-20',202334,8,2023,20,34,202308,2023),('2023-08-21',202334,8,2023,21,34,202308,2023),('2023-08-22',202334,8,2023,22,34,202308,2023),('2023-08-23',202334,8,2023,23,34,202308,2023),('2023-08-24',202334,8,2023,24,34,202308,2023),('2023-08-25',202334,8,2023,25,34,202308,2023),('2023-08-26',202334,8,2023,26,34,202308,2023),('2023-08-27',202335,8,2023,27,35,202308,2023),('2023-08-28',202335,8,2023,28,35,202308,2023),('2023-08-29',202335,8,2023,29,35,202308,2023),('2023-08-30',202335,8,2023,30,35,202308,2023),('2023-08-31',202335,8,2023,31,35,202308,2023),('2023-09-01',202335,9,2023,1,35,202309,2023),('2023-09-02',202335,9,2023,2,35,202309,2023),('2023-09-03',202336,9,2023,3,36,202309,2023),('2023-09-04',202336,9,2023,4,36,202309,2023),('2023-09-05',202336,9,2023,5,36,202309,2023),('2023-09-06',202336,9,2023,6,36,202309,2023),('2023-09-07',202336,9,2023,7,36,202309,2023),('2023-09-08',202336,9,2023,8,36,202309,2023),('2023-09-09',202336,9,2023,9,36,202309,2023),('2023-09-10',202337,9,2023,10,37,202309,2023),('2023-09-11',202337,9,2023,11,37,202309,2023),('2023-09-12',202337,9,2023,12,37,202309,2023),('2023-09-13',202337,9,2023,13,37,202309,2023),('2023-09-14',202337,9,2023,14,37,202309,2023),('2023-09-15',202337,9,2023,15,37,202309,2023),('2023-09-16',202337,9,2023,16,37,202309,2023),('2023-09-17',202338,9,2023,17,38,202309,2023),('2023-09-18',202338,9,2023,18,38,202309,2023),('2023-09-19',202338,9,2023,19,38,202309,2023),('2023-09-20',202338,9,2023,20,38,202309,2023),('2023-09-21',202338,9,2023,21,38,202309,2023),('2023-09-22',202338,9,2023,22,38,202309,2023),('2023-09-23',202338,9,2023,23,38,202309,2023),('2023-09-24',202339,9,2023,24,39,202309,2023),('2023-09-25',202339,9,2023,25,39,202309,2023),('2023-09-26',202339,9,2023,26,39,202309,2023),('2023-09-27',202339,9,2023,27,39,202309,2023),('2023-09-28',202339,9,2023,28,39,202309,2023),('2023-09-29',202339,9,2023,29,39,202309,2023),('2023-09-30',202339,9,2023,30,39,202309,2023),('2023-10-01',202340,10,2023,1,40,202310,2023),('2023-10-02',202340,10,2023,2,40,202310,2023),('2023-10-03',202340,10,2023,3,40,202310,2023),('2023-10-04',202340,10,2023,4,40,202310,2023),('2023-10-05',202340,10,2023,5,40,202310,2023),('2023-10-06',202340,10,2023,6,40,202310,2023),('2023-10-07',202340,10,2023,7,40,202310,2023),('2023-10-08',202341,10,2023,8,41,202310,2023),('2023-10-09',202341,10,2023,9,41,202310,2023),('2023-10-10',202341,10,2023,10,41,202310,2023),('2023-10-11',202341,10,2023,11,41,202310,2023),('2023-10-12',202341,10,2023,12,41,202310,2023),('2023-10-13',202341,10,2023,13,41,202310,2023),('2023-10-14',202341,10,2023,14,41,202310,2023),('2023-10-15',202342,10,2023,15,42,202310,2023),('2023-10-16',202342,10,2023,16,42,202310,2023),('2023-10-17',202342,10,2023,17,42,202310,2023),('2023-10-18',202342,10,2023,18,42,202310,2023),('2023-10-19',202342,10,2023,19,42,202310,2023),('2023-10-20',202342,10,2023,20,42,202310,2023),('2023-10-21',202342,10,2023,21,42,202310,2023),('2023-10-22',202343,10,2023,22,43,202310,2023),('2023-10-23',202343,10,2023,23,43,202310,2023),('2023-10-24',202343,10,2023,24,43,202310,2023),('2023-10-25',202343,10,2023,25,43,202310,2023),('2023-10-26',202343,10,2023,26,43,202310,2023),('2023-10-27',202343,10,2023,27,43,202310,2023),('2023-10-28',202343,10,2023,28,43,202310,2023),('2023-10-29',202344,10,2023,29,44,202310,2023),('2023-10-30',202344,10,2023,30,44,202310,2023),('2023-10-31',202344,10,2023,31,44,202310,2023),('2023-11-01',202344,11,2023,1,44,202311,2023),('2023-11-02',202344,11,2023,2,44,202311,2023),('2023-11-03',202344,11,2023,3,44,202311,2023),('2023-11-04',202344,11,2023,4,44,202311,2023),('2023-11-05',202345,11,2023,5,45,202311,2023),('2023-11-06',202345,11,2023,6,45,202311,2023),('2023-11-07',202345,11,2023,7,45,202311,2023),('2023-11-08',202345,11,2023,8,45,202311,2023),('2023-11-09',202345,11,2023,9,45,202311,2023),('2023-11-10',202345,11,2023,10,45,202311,2023),('2023-11-11',202345,11,2023,11,45,202311,2023),('2023-11-12',202346,11,2023,12,46,202311,2023),('2023-11-13',202346,11,2023,13,46,202311,2023),('2023-11-14',202346,11,2023,14,46,202311,2023),('2023-11-15',202346,11,2023,15,46,202311,2023),('2023-11-16',202346,11,2023,16,46,202311,2023),('2023-11-17',202346,11,2023,17,46,202311,2023),('2023-11-18',202346,11,2023,18,46,202311,2023),('2023-11-19',202347,11,2023,19,47,202311,2023),('2023-11-20',202347,11,2023,20,47,202311,2023),('2023-11-21',202347,11,2023,21,47,202311,2023),('2023-11-22',202347,11,2023,22,47,202311,2023),('2023-11-23',202347,11,2023,23,47,202311,2023),('2023-11-24',202347,11,2023,24,47,202311,2023),('2023-11-25',202347,11,2023,25,47,202311,2023),('2023-11-26',202348,11,2023,26,48,202311,2023),('2023-11-27',202348,11,2023,27,48,202311,2023),('2023-11-28',202348,11,2023,28,48,202311,2023),('2023-11-29',202348,11,2023,29,48,202311,2023),('2023-11-30',202348,11,2023,30,48,202311,2023),('2023-12-01',202348,12,2023,1,48,202312,2024),('2023-12-02',202348,12,2023,2,48,202312,2024),('2023-12-03',202349,12,2023,3,49,202312,2024),('2023-12-04',202349,12,2023,4,49,202312,2024),('2023-12-05',202349,12,2023,5,49,202312,2024),('2023-12-06',202349,12,2023,6,49,202312,2024),('2023-12-07',202349,12,2023,7,49,202312,2024),('2023-12-08',202349,12,2023,8,49,202312,2024),('2023-12-09',202349,12,2023,9,49,202312,2024),('2023-12-10',202350,12,2023,10,50,202312,2024),('2023-12-11',202350,12,2023,11,50,202312,2024),('2023-12-12',202350,12,2023,12,50,202312,2024),('2023-12-13',202350,12,2023,13,50,202312,2024),('2023-12-14',202350,12,2023,14,50,202312,2024),('2023-12-15',202350,12,2023,15,50,202312,2024),('2023-12-16',202350,12,2023,16,50,202312,2024),('2023-12-17',202351,12,2023,17,51,202312,2024),('2023-12-18',202351,12,2023,18,51,202312,2024),('2023-12-19',202351,12,2023,19,51,202312,2024),('2023-12-20',202351,12,2023,20,51,202312,2024),('2023-12-21',202351,12,2023,21,51,202312,2024),('2023-12-22',202351,12,2023,22,51,202312,2024),('2023-12-23',202351,12,2023,23,51,202312,2024),('2023-12-24',202352,12,2023,24,52,202312,2024),('2023-12-25',202352,12,2023,25,52,202312,2024),('2023-12-26',202352,12,2023,26,52,202312,2024),('2023-12-27',202352,12,2023,27,52,202312,2024),('2023-12-28',202352,12,2023,28,52,202312,2024),('2023-12-29',202352,12,2023,29,52,202312,2024),('2023-12-30',202352,12,2023,30,52,202312,2024),('2023-12-31',202353,12,2023,31,1,202312,2024),('2024-01-01',202401,1,2024,1,1,202401,2024),('2024-01-02',202401,1,2024,2,1,202401,2024),('2024-01-03',202401,1,2024,3,1,202401,2024),('2024-01-04',202401,1,2024,4,1,202401,2024),('2024-01-05',202401,1,2024,5,1,202401,2024),('2024-01-06',202401,1,2024,6,1,202401,2024),('2024-01-07',202402,1,2024,7,2,202401,2024),('2024-01-08',202402,1,2024,8,2,202401,2024),('2024-01-09',202402,1,2024,9,2,202401,2024),('2024-01-10',202402,1,2024,10,2,202401,2024),('2024-01-11',202402,1,2024,11,2,202401,2024),('2024-01-12',202402,1,2024,12,2,202401,2024),('2024-01-13',202402,1,2024,13,2,202401,2024),('2024-01-14',202403,1,2024,14,3,202401,2024),('2024-01-15',202403,1,2024,15,3,202401,2024),('2024-01-16',202403,1,2024,16,3,202401,2024),('2024-01-17',202403,1,2024,17,3,202401,2024),('2024-01-18',202403,1,2024,18,3,202401,2024),('2024-01-19',202403,1,2024,19,3,202401,2024),('2024-01-20',202403,1,2024,20,3,202401,2024),('2024-01-21',202404,1,2024,21,4,202401,2024),('2024-01-22',202404,1,2024,22,4,202401,2024),('2024-01-23',202404,1,2024,23,4,202401,2024),('2024-01-24',202404,1,2024,24,4,202401,2024),('2024-01-25',202404,1,2024,25,4,202401,2024),('2024-01-26',202404,1,2024,26,4,202401,2024),('2024-01-27',202404,1,2024,27,4,202401,2024),('2024-01-28',202405,1,2024,28,5,202401,2024),('2024-01-29',202405,1,2024,29,5,202401,2024),('2024-01-30',202405,1,2024,30,5,202401,2024),('2024-01-31',202405,1,2024,31,5,202401,2024),('2024-02-01',202405,2,2024,1,5,202402,2024),('2024-02-02',202405,2,2024,2,5,202402,2024),('2024-02-03',202405,2,2024,3,5,202402,2024),('2024-02-04',202406,2,2024,4,6,202402,2024),('2024-02-05',202406,2,2024,5,6,202402,2024),('2024-02-06',202406,2,2024,6,6,202402,2024),('2024-02-07',202406,2,2024,7,6,202402,2024),('2024-02-08',202406,2,2024,8,6,202402,2024),('2024-02-09',202406,2,2024,9,6,202402,2024),('2024-02-10',202406,2,2024,10,6,202402,2024),('2024-02-11',202407,2,2024,11,7,202402,2024),('2024-02-12',202407,2,2024,12,7,202402,2024),('2024-02-13',202407,2,2024,13,7,202402,2024),('2024-02-14',202407,2,2024,14,7,202402,2024),('2024-02-15',202407,2,2024,15,7,202402,2024),('2024-02-16',202407,2,2024,16,7,202402,2024),('2024-02-17',202407,2,2024,17,7,202402,2024),('2024-02-18',202408,2,2024,18,8,202402,2024),('2024-02-19',202408,2,2024,19,8,202402,2024),('2024-02-20',202408,2,2024,20,8,202402,2024),('2024-02-21',202408,2,2024,21,8,202402,2024),('2024-02-22',202408,2,2024,22,8,202402,2024),('2024-02-23',202408,2,2024,23,8,202402,2024),('2024-02-24',202408,2,2024,24,8,202402,2024),('2024-02-25',202409,2,2024,25,9,202402,2024),('2024-02-26',202409,2,2024,26,9,202402,2024),('2024-02-27',202409,2,2024,27,9,202402,2024),('2024-02-28',202409,2,2024,28,9,202402,2024),('2024-02-29',202409,2,2024,29,9,202402,2024),('2024-03-01',202409,3,2024,1,9,202403,2024),('2024-03-02',202409,3,2024,2,9,202403,2024),('2024-03-03',202410,3,2024,3,10,202403,2024),('2024-03-04',202410,3,2024,4,10,202403,2024),('2024-03-05',202410,3,2024,5,10,202403,2024),('2024-03-06',202410,3,2024,6,10,202403,2024),('2024-03-07',202410,3,2024,7,10,202403,2024),('2024-03-08',202410,3,2024,8,10,202403,2024),('2024-03-09',202410,3,2024,9,10,202403,2024),('2024-03-10',202411,3,2024,10,11,202403,2024),('2024-03-11',202411,3,2024,11,11,202403,2024),('2024-03-12',202411,3,2024,12,11,202403,2024),('2024-03-13',202411,3,2024,13,11,202403,2024),('2024-03-14',202411,3,2024,14,11,202403,2024),('2024-03-15',202411,3,2024,15,11,202403,2024),('2024-03-16',202411,3,2024,16,11,202403,2024),('2024-03-17',202412,3,2024,17,12,202403,2024),('2024-03-18',202412,3,2024,18,12,202403,2024),('2024-03-19',202412,3,2024,19,12,202403,2024),('2024-03-20',202412,3,2024,20,12,202403,2024),('2024-03-21',202412,3,2024,21,12,202403,2024),('2024-03-22',202412,3,2024,22,12,202403,2024),('2024-03-23',202412,3,2024,23,12,202403,2024),('2024-03-24',202413,3,2024,24,13,202403,2024),('2024-03-25',202413,3,2024,25,13,202403,2024),('2024-03-26',202413,3,2024,26,13,202403,2024),('2024-03-27',202413,3,2024,27,13,202403,2024),('2024-03-28',202413,3,2024,28,13,202403,2024),('2024-03-29',202413,3,2024,29,13,202403,2024),('2024-03-30',202413,3,2024,30,13,202403,2024),('2024-03-31',202414,3,2024,31,14,202403,2024),('2024-04-01',202414,4,2024,1,14,202404,2024),('2024-04-02',202414,4,2024,2,14,202404,2024),('2024-04-03',202414,4,2024,3,14,202404,2024),('2024-04-04',202414,4,2024,4,14,202404,2024),('2024-04-05',202414,4,2024,5,14,202404,2024),('2024-04-06',202414,4,2024,6,14,202404,2024),('2024-04-07',202415,4,2024,7,15,202404,2024),('2024-04-08',202415,4,2024,8,15,202404,2024),('2024-04-09',202415,4,2024,9,15,202404,2024),('2024-04-10',202415,4,2024,10,15,202404,2024),('2024-04-11',202415,4,2024,11,15,202404,2024),('2024-04-12',202415,4,2024,12,15,202404,2024),('2024-04-13',202415,4,2024,13,15,202404,2024),('2024-04-14',202416,4,2024,14,16,202404,2024),('2024-04-15',202416,4,2024,15,16,202404,2024),('2024-04-16',202416,4,2024,16,16,202404,2024),('2024-04-17',202416,4,2024,17,16,202404,2024),('2024-04-18',202416,4,2024,18,16,202404,2024),('2024-04-19',202416,4,2024,19,16,202404,2024),('2024-04-20',202416,4,2024,20,16,202404,2024),('2024-04-21',202417,4,2024,21,17,202404,2024),('2024-04-22',202417,4,2024,22,17,202404,2024),('2024-04-23',202417,4,2024,23,17,202404,2024),('2024-04-24',202417,4,2024,24,17,202404,2024),('2024-04-25',202417,4,2024,25,17,202404,2024),('2024-04-26',202417,4,2024,26,17,202404,2024),('2024-04-27',202417,4,2024,27,17,202404,2024),('2024-04-28',202418,4,2024,28,18,202404,2024),('2024-04-29',202418,4,2024,29,18,202404,2024),('2024-04-30',202418,4,2024,30,18,202404,2024),('2024-05-01',202418,5,2024,1,18,202405,2024),('2024-05-02',202418,5,2024,2,18,202405,2024),('2024-05-03',202418,5,2024,3,18,202405,2024),('2024-05-04',202418,5,2024,4,18,202405,2024),('2024-05-05',202419,5,2024,5,19,202405,2024),('2024-05-06',202419,5,2024,6,19,202405,2024),('2024-05-07',202419,5,2024,7,19,202405,2024),('2024-05-08',202419,5,2024,8,19,202405,2024),('2024-05-09',202419,5,2024,9,19,202405,2024),('2024-05-10',202419,5,2024,10,19,202405,2024),('2024-05-11',202419,5,2024,11,19,202405,2024),('2024-05-12',202420,5,2024,12,20,202405,2024),('2024-05-13',202420,5,2024,13,20,202405,2024),('2024-05-14',202420,5,2024,14,20,202405,2024),('2024-05-15',202420,5,2024,15,20,202405,2024),('2024-05-16',202420,5,2024,16,20,202405,2024),('2024-05-17',202420,5,2024,17,20,202405,2024),('2024-05-18',202420,5,2024,18,20,202405,2024),('2024-05-19',202421,5,2024,19,21,202405,2024),('2024-05-20',202421,5,2024,20,21,202405,2024),('2024-05-21',202421,5,2024,21,21,202405,2024),('2024-05-22',202421,5,2024,22,21,202405,2024),('2024-05-23',202421,5,2024,23,21,202405,2024),('2024-05-24',202421,5,2024,24,21,202405,2024),('2024-05-25',202421,5,2024,25,21,202405,2024),('2024-05-26',202422,5,2024,26,22,202405,2024),('2024-05-27',202422,5,2024,27,22,202405,2024),('2024-05-28',202422,5,2024,28,22,202405,2024),('2024-05-29',202422,5,2024,29,22,202405,2024),('2024-05-30',202422,5,2024,30,22,202405,2024),('2024-05-31',202422,5,2024,31,22,202405,2024),('2024-06-01',202422,6,2024,1,22,202406,2024),('2024-06-02',202423,6,2024,2,23,202406,2024),('2024-06-03',202423,6,2024,3,23,202406,2024),('2024-06-04',202423,6,2024,4,23,202406,2024),('2024-06-05',202423,6,2024,5,23,202406,2024),('2024-06-06',202423,6,2024,6,23,202406,2024),('2024-06-07',202423,6,2024,7,23,202406,2024),('2024-06-08',202423,6,2024,8,23,202406,2024),('2024-06-09',202424,6,2024,9,24,202406,2024),('2024-06-10',202424,6,2024,10,24,202406,2024),('2024-06-11',202424,6,2024,11,24,202406,2024),('2024-06-12',202424,6,2024,12,24,202406,2024),('2024-06-13',202424,6,2024,13,24,202406,2024),('2024-06-14',202424,6,2024,14,24,202406,2024),('2024-06-15',202424,6,2024,15,24,202406,2024),('2024-06-16',202425,6,2024,16,25,202406,2024),('2024-06-17',202425,6,2024,17,25,202406,2024),('2024-06-18',202425,6,2024,18,25,202406,2024),('2024-06-19',202425,6,2024,19,25,202406,2024),('2024-06-20',202425,6,2024,20,25,202406,2024),('2024-06-21',202425,6,2024,21,25,202406,2024),('2024-06-22',202425,6,2024,22,25,202406,2024),('2024-06-23',202426,6,2024,23,26,202406,2024),('2024-06-24',202426,6,2024,24,26,202406,2024),('2024-06-25',202426,6,2024,25,26,202406,2024),('2024-06-26',202426,6,2024,26,26,202406,2024),('2024-06-27',202426,6,2024,27,26,202406,2024),('2024-06-28',202426,6,2024,28,26,202406,2024),('2024-06-29',202426,6,2024,29,26,202406,2024),('2024-06-30',202427,6,2024,30,27,202406,2024),('2024-07-01',202427,7,2024,1,27,202407,2024),('2024-07-02',202427,7,2024,2,27,202407,2024),('2024-07-03',202427,7,2024,3,27,202407,2024),('2024-07-04',202427,7,2024,4,27,202407,2024),('2024-07-05',202427,7,2024,5,27,202407,2024),('2024-07-06',202427,7,2024,6,27,202407,2024),('2024-07-07',202428,7,2024,7,28,202407,2024),('2024-07-08',202428,7,2024,8,28,202407,2024),('2024-07-09',202428,7,2024,9,28,202407,2024),('2024-07-10',202428,7,2024,10,28,202407,2024),('2024-07-11',202428,7,2024,11,28,202407,2024),('2024-07-12',202428,7,2024,12,28,202407,2024),('2024-07-13',202428,7,2024,13,28,202407,2024),('2024-07-14',202429,7,2024,14,29,202407,2024),('2024-07-15',202429,7,2024,15,29,202407,2024),('2024-07-16',202429,7,2024,16,29,202407,2024),('2024-07-17',202429,7,2024,17,29,202407,2024),('2024-07-18',202429,7,2024,18,29,202407,2024),('2024-07-19',202429,7,2024,19,29,202407,2024),('2024-07-20',202429,7,2024,20,29,202407,2024),('2024-07-21',202430,7,2024,21,30,202407,2024),('2024-07-22',202430,7,2024,22,30,202407,2024),('2024-07-23',202430,7,2024,23,30,202407,2024),('2024-07-24',202430,7,2024,24,30,202407,2024),('2024-07-25',202430,7,2024,25,30,202407,2024),('2024-07-26',202430,7,2024,26,30,202407,2024),('2024-07-27',202430,7,2024,27,30,202407,2024),('2024-07-28',202431,7,2024,28,31,202407,2024),('2024-07-29',202431,7,2024,29,31,202407,2024),('2024-07-30',202431,7,2024,30,31,202407,2024),('2024-07-31',202431,7,2024,31,31,202407,2024),('2024-08-01',202431,8,2024,1,31,202408,2024),('2024-08-02',202431,8,2024,2,31,202408,2024),('2024-08-03',202431,8,2024,3,31,202408,2024),('2024-08-04',202432,8,2024,4,32,202408,2024),('2024-08-05',202432,8,2024,5,32,202408,2024),('2024-08-06',202432,8,2024,6,32,202408,2024),('2024-08-07',202432,8,2024,7,32,202408,2024),('2024-08-08',202432,8,2024,8,32,202408,2024),('2024-08-09',202432,8,2024,9,32,202408,2024),('2024-08-10',202432,8,2024,10,32,202408,2024),('2024-08-11',202433,8,2024,11,33,202408,2024),('2024-08-12',202433,8,2024,12,33,202408,2024),('2024-08-13',202433,8,2024,13,33,202408,2024),('2024-08-14',202433,8,2024,14,33,202408,2024),('2024-08-15',202433,8,2024,15,33,202408,2024),('2024-08-16',202433,8,2024,16,33,202408,2024),('2024-08-17',202433,8,2024,17,33,202408,2024),('2024-08-18',202434,8,2024,18,34,202408,2024),('2024-08-19',202434,8,2024,19,34,202408,2024),('2024-08-20',202434,8,2024,20,34,202408,2024),('2024-08-21',202434,8,2024,21,34,202408,2024),('2024-08-22',202434,8,2024,22,34,202408,2024),('2024-08-23',202434,8,2024,23,34,202408,2024),('2024-08-24',202434,8,2024,24,34,202408,2024),('2024-08-25',202435,8,2024,25,35,202408,2024),('2024-08-26',202435,8,2024,26,35,202408,2024),('2024-08-27',202435,8,2024,27,35,202408,2024),('2024-08-28',202435,8,2024,28,35,202408,2024),('2024-08-29',202435,8,2024,29,35,202408,2024),('2024-08-30',202435,8,2024,30,35,202408,2024),('2024-08-31',202435,8,2024,31,35,202408,2024),('2024-09-01',202436,9,2024,1,36,202409,2024),('2024-09-02',202436,9,2024,2,36,202409,2024),('2024-09-03',202436,9,2024,3,36,202409,2024),('2024-09-04',202436,9,2024,4,36,202409,2024),('2024-09-05',202436,9,2024,5,36,202409,2024),('2024-09-06',202436,9,2024,6,36,202409,2024),('2024-09-07',202436,9,2024,7,36,202409,2024),('2024-09-08',202437,9,2024,8,37,202409,2024),('2024-09-09',202437,9,2024,9,37,202409,2024),('2024-09-10',202437,9,2024,10,37,202409,2024),('2024-09-11',202437,9,2024,11,37,202409,2024),('2024-09-12',202437,9,2024,12,37,202409,2024),('2024-09-13',202437,9,2024,13,37,202409,2024),('2024-09-14',202437,9,2024,14,37,202409,2024),('2024-09-15',202438,9,2024,15,38,202409,2024),('2024-09-16',202438,9,2024,16,38,202409,2024),('2024-09-17',202438,9,2024,17,38,202409,2024),('2024-09-18',202438,9,2024,18,38,202409,2024),('2024-09-19',202438,9,2024,19,38,202409,2024),('2024-09-20',202438,9,2024,20,38,202409,2024),('2024-09-21',202438,9,2024,21,38,202409,2024),('2024-09-22',202439,9,2024,22,39,202409,2024),('2024-09-23',202439,9,2024,23,39,202409,2024),('2024-09-24',202439,9,2024,24,39,202409,2024),('2024-09-25',202439,9,2024,25,39,202409,2024),('2024-09-26',202439,9,2024,26,39,202409,2024),('2024-09-27',202439,9,2024,27,39,202409,2024),('2024-09-28',202439,9,2024,28,39,202409,2024),('2024-09-29',202440,9,2024,29,40,202409,2024),('2024-09-30',202440,9,2024,30,40,202409,2024),('2024-10-01',202440,10,2024,1,40,202410,2024),('2024-10-02',202440,10,2024,2,40,202410,2024),('2024-10-03',202440,10,2024,3,40,202410,2024),('2024-10-04',202440,10,2024,4,40,202410,2024),('2024-10-05',202440,10,2024,5,40,202410,2024),('2024-10-06',202441,10,2024,6,41,202410,2024),('2024-10-07',202441,10,2024,7,41,202410,2024),('2024-10-08',202441,10,2024,8,41,202410,2024),('2024-10-09',202441,10,2024,9,41,202410,2024),('2024-10-10',202441,10,2024,10,41,202410,2024),('2024-10-11',202441,10,2024,11,41,202410,2024),('2024-10-12',202441,10,2024,12,41,202410,2024),('2024-10-13',202442,10,2024,13,42,202410,2024),('2024-10-14',202442,10,2024,14,42,202410,2024),('2024-10-15',202442,10,2024,15,42,202410,2024),('2024-10-16',202442,10,2024,16,42,202410,2024),('2024-10-17',202442,10,2024,17,42,202410,2024),('2024-10-18',202442,10,2024,18,42,202410,2024),('2024-10-19',202442,10,2024,19,42,202410,2024),('2024-10-20',202443,10,2024,20,43,202410,2024),('2024-10-21',202443,10,2024,21,43,202410,2024),('2024-10-22',202443,10,2024,22,43,202410,2024),('2024-10-23',202443,10,2024,23,43,202410,2024),('2024-10-24',202443,10,2024,24,43,202410,2024),('2024-10-25',202443,10,2024,25,43,202410,2024),('2024-10-26',202443,10,2024,26,43,202410,2024),('2024-10-27',202444,10,2024,27,44,202410,2024),('2024-10-28',202444,10,2024,28,44,202410,2024),('2024-10-29',202444,10,2024,29,44,202410,2024),('2024-10-30',202444,10,2024,30,44,202410,2024),('2024-10-31',202444,10,2024,31,44,202410,2024),('2024-11-01',202444,11,2024,1,44,202411,2024),('2024-11-02',202444,11,2024,2,44,202411,2024),('2024-11-03',202445,11,2024,3,45,202411,2024),('2024-11-04',202445,11,2024,4,45,202411,2024),('2024-11-05',202445,11,2024,5,45,202411,2024),('2024-11-06',202445,11,2024,6,45,202411,2024),('2024-11-07',202445,11,2024,7,45,202411,2024),('2024-11-08',202445,11,2024,8,45,202411,2024),('2024-11-09',202445,11,2024,9,45,202411,2024),('2024-11-10',202446,11,2024,10,46,202411,2024),('2024-11-11',202446,11,2024,11,46,202411,2024),('2024-11-12',202446,11,2024,12,46,202411,2024),('2024-11-13',202446,11,2024,13,46,202411,2024),('2024-11-14',202446,11,2024,14,46,202411,2024),('2024-11-15',202446,11,2024,15,46,202411,2024),('2024-11-16',202446,11,2024,16,46,202411,2024),('2024-11-17',202447,11,2024,17,47,202411,2024),('2024-11-18',202447,11,2024,18,47,202411,2024),('2024-11-19',202447,11,2024,19,47,202411,2024),('2024-11-20',202447,11,2024,20,47,202411,2024),('2024-11-21',202447,11,2024,21,47,202411,2024),('2024-11-22',202447,11,2024,22,47,202411,2024),('2024-11-23',202447,11,2024,23,47,202411,2024),('2024-11-24',202448,11,2024,24,48,202411,2024),('2024-11-25',202448,11,2024,25,48,202411,2024),('2024-11-26',202448,11,2024,26,48,202411,2024),('2024-11-27',202448,11,2024,27,48,202411,2024),('2024-11-28',202448,11,2024,28,48,202411,2024),('2024-11-29',202448,11,2024,29,48,202411,2024),('2024-11-30',202448,11,2024,30,48,202411,2024),('2024-12-01',202449,12,2024,1,49,202412,2025),('2024-12-02',202449,12,2024,2,49,202412,2025),('2024-12-03',202449,12,2024,3,49,202412,2025),('2024-12-04',202449,12,2024,4,49,202412,2025),('2024-12-05',202449,12,2024,5,49,202412,2025),('2024-12-06',202449,12,2024,6,49,202412,2025),('2024-12-07',202449,12,2024,7,49,202412,2025),('2024-12-08',202450,12,2024,8,50,202412,2025),('2024-12-09',202450,12,2024,9,50,202412,2025),('2024-12-10',202450,12,2024,10,50,202412,2025),('2024-12-11',202450,12,2024,11,50,202412,2025),('2024-12-12',202450,12,2024,12,50,202412,2025),('2024-12-13',202450,12,2024,13,50,202412,2025),('2024-12-14',202450,12,2024,14,50,202412,2025),('2024-12-15',202451,12,2024,15,51,202412,2025),('2024-12-16',202451,12,2024,16,51,202412,2025),('2024-12-17',202451,12,2024,17,51,202412,2025),('2024-12-18',202451,12,2024,18,51,202412,2025),('2024-12-19',202451,12,2024,19,51,202412,2025),('2024-12-20',202451,12,2024,20,51,202412,2025),('2024-12-21',202451,12,2024,21,51,202412,2025),('2024-12-22',202452,12,2024,22,52,202412,2025),('2024-12-23',202452,12,2024,23,52,202412,2025),('2024-12-24',202452,12,2024,24,52,202412,2025),('2024-12-25',202452,12,2024,25,52,202412,2025),('2024-12-26',202452,12,2024,26,52,202412,2025),('2024-12-27',202452,12,2024,27,52,202412,2025),('2024-12-28',202452,12,2024,28,52,202412,2025),('2024-12-29',202453,12,2024,29,1,202412,2025),('2024-12-30',202401,12,2024,30,1,202412,2025),('2024-12-31',202401,12,2024,31,1,202412,2025),('2025-01-01',202501,1,2025,1,1,202501,2025),('2025-01-02',202501,1,2025,2,1,202501,2025),('2025-01-03',202501,1,2025,3,1,202501,2025),('2025-01-04',202501,1,2025,4,1,202501,2025),('2025-01-05',202502,1,2025,5,2,202501,2025),('2025-01-06',202502,1,2025,6,2,202501,2025),('2025-01-07',202502,1,2025,7,2,202501,2025),('2025-01-08',202502,1,2025,8,2,202501,2025),('2025-01-09',202502,1,2025,9,2,202501,2025),('2025-01-10',202502,1,2025,10,2,202501,2025),('2025-01-11',202502,1,2025,11,2,202501,2025),('2025-01-12',202503,1,2025,12,3,202501,2025),('2025-01-13',202503,1,2025,13,3,202501,2025),('2025-01-14',202503,1,2025,14,3,202501,2025),('2025-01-15',202503,1,2025,15,3,202501,2025),('2025-01-16',202503,1,2025,16,3,202501,2025),('2025-01-17',202503,1,2025,17,3,202501,2025),('2025-01-18',202503,1,2025,18,3,202501,2025),('2025-01-19',202504,1,2025,19,4,202501,2025),('2025-01-20',202504,1,2025,20,4,202501,2025),('2025-01-21',202504,1,2025,21,4,202501,2025),('2025-01-22',202504,1,2025,22,4,202501,2025),('2025-01-23',202504,1,2025,23,4,202501,2025),('2025-01-24',202504,1,2025,24,4,202501,2025),('2025-01-25',202504,1,2025,25,4,202501,2025),('2025-01-26',202505,1,2025,26,5,202501,2025),('2025-01-27',202505,1,2025,27,5,202501,2025),('2025-01-28',202505,1,2025,28,5,202501,2025),('2025-01-29',202505,1,2025,29,5,202501,2025),('2025-01-30',202505,1,2025,30,5,202501,2025),('2025-01-31',202505,1,2025,31,5,202501,2025),('2025-02-01',202505,2,2025,1,5,202502,2025),('2025-02-02',202506,2,2025,2,6,202502,2025),('2025-02-03',202506,2,2025,3,6,202502,2025),('2025-02-04',202506,2,2025,4,6,202502,2025),('2025-02-05',202506,2,2025,5,6,202502,2025),('2025-02-06',202506,2,2025,6,6,202502,2025),('2025-02-07',202506,2,2025,7,6,202502,2025),('2025-02-08',202506,2,2025,8,6,202502,2025),('2025-02-09',202507,2,2025,9,7,202502,2025),('2025-02-10',202507,2,2025,10,7,202502,2025),('2025-02-11',202507,2,2025,11,7,202502,2025),('2025-02-12',202507,2,2025,12,7,202502,2025),('2025-02-13',202507,2,2025,13,7,202502,2025),('2025-02-14',202507,2,2025,14,7,202502,2025),('2025-02-15',202507,2,2025,15,7,202502,2025),('2025-02-16',202508,2,2025,16,8,202502,2025),('2025-02-17',202508,2,2025,17,8,202502,2025),('2025-02-18',202508,2,2025,18,8,202502,2025),('2025-02-19',202508,2,2025,19,8,202502,2025),('2025-02-20',202508,2,2025,20,8,202502,2025),('2025-02-21',202508,2,2025,21,8,202502,2025),('2025-02-22',202508,2,2025,22,8,202502,2025),('2025-02-23',202509,2,2025,23,9,202502,2025),('2025-02-24',202509,2,2025,24,9,202502,2025),('2025-02-25',202509,2,2025,25,9,202502,2025),('2025-02-26',202509,2,2025,26,9,202502,2025),('2025-02-27',202509,2,2025,27,9,202502,2025),('2025-02-28',202509,2,2025,28,9,202502,2025),('2025-03-01',202509,3,2025,1,9,202503,2025),('2025-03-02',202510,3,2025,2,10,202503,2025),('2025-03-03',202510,3,2025,3,10,202503,2025),('2025-03-04',202510,3,2025,4,10,202503,2025),('2025-03-05',202510,3,2025,5,10,202503,2025),('2025-03-06',202510,3,2025,6,10,202503,2025),('2025-03-07',202510,3,2025,7,10,202503,2025),('2025-03-08',202510,3,2025,8,10,202503,2025),('2025-03-09',202511,3,2025,9,11,202503,2025),('2025-03-10',202511,3,2025,10,11,202503,2025),('2025-03-11',202511,3,2025,11,11,202503,2025),('2025-03-12',202511,3,2025,12,11,202503,2025),('2025-03-13',202511,3,2025,13,11,202503,2025),('2025-03-14',202511,3,2025,14,11,202503,2025),('2025-03-15',202511,3,2025,15,11,202503,2025),('2025-03-16',202512,3,2025,16,12,202503,2025),('2025-03-17',202512,3,2025,17,12,202503,2025),('2025-03-18',202512,3,2025,18,12,202503,2025),('2025-03-19',202512,3,2025,19,12,202503,2025),('2025-03-20',202512,3,2025,20,12,202503,2025),('2025-03-21',202512,3,2025,21,12,202503,2025),('2025-03-22',202512,3,2025,22,12,202503,2025),('2025-03-23',202513,3,2025,23,13,202503,2025),('2025-03-24',202513,3,2025,24,13,202503,2025),('2025-03-25',202513,3,2025,25,13,202503,2025),('2025-03-26',202513,3,2025,26,13,202503,2025),('2025-03-27',202513,3,2025,27,13,202503,2025),('2025-03-28',202513,3,2025,28,13,202503,2025),('2025-03-29',202513,3,2025,29,13,202503,2025),('2025-03-30',202514,3,2025,30,14,202503,2025),('2025-03-31',202514,3,2025,31,14,202503,2025),('2025-04-01',202514,4,2025,1,14,202504,2025),('2025-04-02',202514,4,2025,2,14,202504,2025),('2025-04-03',202514,4,2025,3,14,202504,2025),('2025-04-04',202514,4,2025,4,14,202504,2025),('2025-04-05',202514,4,2025,5,14,202504,2025),('2025-04-06',202515,4,2025,6,15,202504,2025),('2025-04-07',202515,4,2025,7,15,202504,2025),('2025-04-08',202515,4,2025,8,15,202504,2025),('2025-04-09',202515,4,2025,9,15,202504,2025),('2025-04-10',202515,4,2025,10,15,202504,2025),('2025-04-11',202515,4,2025,11,15,202504,2025),('2025-04-12',202515,4,2025,12,15,202504,2025),('2025-04-13',202516,4,2025,13,16,202504,2025),('2025-04-14',202516,4,2025,14,16,202504,2025),('2025-04-15',202516,4,2025,15,16,202504,2025),('2025-04-16',202516,4,2025,16,16,202504,2025),('2025-04-17',202516,4,2025,17,16,202504,2025),('2025-04-18',202516,4,2025,18,16,202504,2025),('2025-04-19',202516,4,2025,19,16,202504,2025),('2025-04-20',202517,4,2025,20,17,202504,2025),('2025-04-21',202517,4,2025,21,17,202504,2025),('2025-04-22',202517,4,2025,22,17,202504,2025),('2025-04-23',202517,4,2025,23,17,202504,2025),('2025-04-24',202517,4,2025,24,17,202504,2025),('2025-04-25',202517,4,2025,25,17,202504,2025),('2025-04-26',202517,4,2025,26,17,202504,2025),('2025-04-27',202518,4,2025,27,18,202504,2025),('2025-04-28',202518,4,2025,28,18,202504,2025),('2025-04-29',202518,4,2025,29,18,202504,2025),('2025-04-30',202518,4,2025,30,18,202504,2025),('2025-05-01',202518,5,2025,1,18,202505,2025),('2025-05-02',202518,5,2025,2,18,202505,2025),('2025-05-03',202518,5,2025,3,18,202505,2025),('2025-05-04',202519,5,2025,4,19,202505,2025),('2025-05-05',202519,5,2025,5,19,202505,2025),('2025-05-06',202519,5,2025,6,19,202505,2025),('2025-05-07',202519,5,2025,7,19,202505,2025),('2025-05-08',202519,5,2025,8,19,202505,2025),('2025-05-09',202519,5,2025,9,19,202505,2025),('2025-05-10',202519,5,2025,10,19,202505,2025),('2025-05-11',202520,5,2025,11,20,202505,2025),('2025-05-12',202520,5,2025,12,20,202505,2025),('2025-05-13',202520,5,2025,13,20,202505,2025),('2025-05-14',202520,5,2025,14,20,202505,2025),('2025-05-15',202520,5,2025,15,20,202505,2025),('2025-05-16',202520,5,2025,16,20,202505,2025),('2025-05-17',202520,5,2025,17,20,202505,2025),('2025-05-18',202521,5,2025,18,21,202505,2025),('2025-05-19',202521,5,2025,19,21,202505,2025),('2025-05-20',202521,5,2025,20,21,202505,2025),('2025-05-21',202521,5,2025,21,21,202505,2025),('2025-05-22',202521,5,2025,22,21,202505,2025),('2025-05-23',202521,5,2025,23,21,202505,2025),('2025-05-24',202521,5,2025,24,21,202505,2025),('2025-05-25',202522,5,2025,25,22,202505,2025),('2025-05-26',202522,5,2025,26,22,202505,2025),('2025-05-27',202522,5,2025,27,22,202505,2025),('2025-05-28',202522,5,2025,28,22,202505,2025),('2025-05-29',202522,5,2025,29,22,202505,2025),('2025-05-30',202522,5,2025,30,22,202505,2025),('2025-05-31',202522,5,2025,31,22,202505,2025),('2025-06-01',202523,6,2025,1,23,202506,2025),('2025-06-02',202523,6,2025,2,23,202506,2025),('2025-06-03',202523,6,2025,3,23,202506,2025),('2025-06-04',202523,6,2025,4,23,202506,2025),('2025-06-05',202523,6,2025,5,23,202506,2025),('2025-06-06',202523,6,2025,6,23,202506,2025),('2025-06-07',202523,6,2025,7,23,202506,2025),('2025-06-08',202524,6,2025,8,24,202506,2025),('2025-06-09',202524,6,2025,9,24,202506,2025),('2025-06-10',202524,6,2025,10,24,202506,2025),('2025-06-11',202524,6,2025,11,24,202506,2025),('2025-06-12',202524,6,2025,12,24,202506,2025),('2025-06-13',202524,6,2025,13,24,202506,2025),('2025-06-14',202524,6,2025,14,24,202506,2025),('2025-06-15',202525,6,2025,15,25,202506,2025),('2025-06-16',202525,6,2025,16,25,202506,2025),('2025-06-17',202525,6,2025,17,25,202506,2025),('2025-06-18',202525,6,2025,18,25,202506,2025),('2025-06-19',202525,6,2025,19,25,202506,2025),('2025-06-20',202525,6,2025,20,25,202506,2025),('2025-06-21',202525,6,2025,21,25,202506,2025),('2025-06-22',202526,6,2025,22,26,202506,2025),('2025-06-23',202526,6,2025,23,26,202506,2025),('2025-06-24',202526,6,2025,24,26,202506,2025),('2025-06-25',202526,6,2025,25,26,202506,2025),('2025-06-26',202526,6,2025,26,26,202506,2025),('2025-06-27',202526,6,2025,27,26,202506,2025),('2025-06-28',202526,6,2025,28,26,202506,2025),('2025-06-29',202527,6,2025,29,27,202506,2025),('2025-06-30',202527,6,2025,30,27,202506,2025),('2025-07-01',202527,7,2025,1,27,202507,2025),('2025-07-02',202527,7,2025,2,27,202507,2025),('2025-07-03',202527,7,2025,3,27,202507,2025),('2025-07-04',202527,7,2025,4,27,202507,2025),('2025-07-05',202527,7,2025,5,27,202507,2025),('2025-07-06',202528,7,2025,6,28,202507,2025),('2025-07-07',202528,7,2025,7,28,202507,2025),('2025-07-08',202528,7,2025,8,28,202507,2025),('2025-07-09',202528,7,2025,9,28,202507,2025),('2025-07-10',202528,7,2025,10,28,202507,2025),('2025-07-11',202528,7,2025,11,28,202507,2025),('2025-07-12',202528,7,2025,12,28,202507,2025),('2025-07-13',202529,7,2025,13,29,202507,2025),('2025-07-14',202529,7,2025,14,29,202507,2025),('2025-07-15',202529,7,2025,15,29,202507,2025),('2025-07-16',202529,7,2025,16,29,202507,2025),('2025-07-17',202529,7,2025,17,29,202507,2025),('2025-07-18',202529,7,2025,18,29,202507,2025),('2025-07-19',202529,7,2025,19,29,202507,2025),('2025-07-20',202530,7,2025,20,30,202507,2025),('2025-07-21',202530,7,2025,21,30,202507,2025),('2025-07-22',202530,7,2025,22,30,202507,2025),('2025-07-23',202530,7,2025,23,30,202507,2025),('2025-07-24',202530,7,2025,24,30,202507,2025),('2025-07-25',202530,7,2025,25,30,202507,2025),('2025-07-26',202530,7,2025,26,30,202507,2025),('2025-07-27',202531,7,2025,27,31,202507,2025),('2025-07-28',202531,7,2025,28,31,202507,2025),('2025-07-29',202531,7,2025,29,31,202507,2025),('2025-07-30',202531,7,2025,30,31,202507,2025),('2025-07-31',202531,7,2025,31,31,202507,2025),('2025-08-01',202531,8,2025,1,31,202508,2025),('2025-08-02',202531,8,2025,2,31,202508,2025),('2025-08-03',202532,8,2025,3,32,202508,2025),('2025-08-04',202532,8,2025,4,32,202508,2025),('2025-08-05',202532,8,2025,5,32,202508,2025),('2025-08-06',202532,8,2025,6,32,202508,2025),('2025-08-07',202532,8,2025,7,32,202508,2025),('2025-08-08',202532,8,2025,8,32,202508,2025),('2025-08-09',202532,8,2025,9,32,202508,2025),('2025-08-10',202533,8,2025,10,33,202508,2025),('2025-08-11',202533,8,2025,11,33,202508,2025),('2025-08-12',202533,8,2025,12,33,202508,2025),('2025-08-13',202533,8,2025,13,33,202508,2025),('2025-08-14',202533,8,2025,14,33,202508,2025),('2025-08-15',202533,8,2025,15,33,202508,2025),('2025-08-16',202533,8,2025,16,33,202508,2025),('2025-08-17',202534,8,2025,17,34,202508,2025),('2025-08-18',202534,8,2025,18,34,202508,2025),('2025-08-19',202534,8,2025,19,34,202508,2025),('2025-08-20',202534,8,2025,20,34,202508,2025),('2025-08-21',202534,8,2025,21,34,202508,2025),('2025-08-22',202534,8,2025,22,34,202508,2025),('2025-08-23',202534,8,2025,23,34,202508,2025),('2025-08-24',202535,8,2025,24,35,202508,2025),('2025-08-25',202535,8,2025,25,35,202508,2025),('2025-08-26',202535,8,2025,26,35,202508,2025),('2025-08-27',202535,8,2025,27,35,202508,2025),('2025-08-28',202535,8,2025,28,35,202508,2025),('2025-08-29',202535,8,2025,29,35,202508,2025),('2025-08-30',202535,8,2025,30,35,202508,2025),('2025-08-31',202536,8,2025,31,36,202508,2025),('2025-09-01',202536,9,2025,1,36,202509,2025),('2025-09-02',202536,9,2025,2,36,202509,2025),('2025-09-03',202536,9,2025,3,36,202509,2025),('2025-09-04',202536,9,2025,4,36,202509,2025),('2025-09-05',202536,9,2025,5,36,202509,2025),('2025-09-06',202536,9,2025,6,36,202509,2025),('2025-09-07',202537,9,2025,7,37,202509,2025),('2025-09-08',202537,9,2025,8,37,202509,2025),('2025-09-09',202537,9,2025,9,37,202509,2025),('2025-09-10',202537,9,2025,10,37,202509,2025),('2025-09-11',202537,9,2025,11,37,202509,2025),('2025-09-12',202537,9,2025,12,37,202509,2025),('2025-09-13',202537,9,2025,13,37,202509,2025),('2025-09-14',202538,9,2025,14,38,202509,2025),('2025-09-15',202538,9,2025,15,38,202509,2025),('2025-09-16',202538,9,2025,16,38,202509,2025),('2025-09-17',202538,9,2025,17,38,202509,2025),('2025-09-18',202538,9,2025,18,38,202509,2025),('2025-09-19',202538,9,2025,19,38,202509,2025),('2025-09-20',202538,9,2025,20,38,202509,2025),('2025-09-21',202539,9,2025,21,39,202509,2025),('2025-09-22',202539,9,2025,22,39,202509,2025),('2025-09-23',202539,9,2025,23,39,202509,2025),('2025-09-24',202539,9,2025,24,39,202509,2025),('2025-09-25',202539,9,2025,25,39,202509,2025),('2025-09-26',202539,9,2025,26,39,202509,2025),('2025-09-27',202539,9,2025,27,39,202509,2025),('2025-09-28',202540,9,2025,28,40,202509,2025),('2025-09-29',202540,9,2025,29,40,202509,2025),('2025-09-30',202540,9,2025,30,40,202509,2025),('2025-10-01',202540,10,2025,1,40,202510,2025),('2025-10-02',202540,10,2025,2,40,202510,2025),('2025-10-03',202540,10,2025,3,40,202510,2025),('2025-10-04',202540,10,2025,4,40,202510,2025),('2025-10-05',202541,10,2025,5,41,202510,2025),('2025-10-06',202541,10,2025,6,41,202510,2025),('2025-10-07',202541,10,2025,7,41,202510,2025),('2025-10-08',202541,10,2025,8,41,202510,2025),('2025-10-09',202541,10,2025,9,41,202510,2025),('2025-10-10',202541,10,2025,10,41,202510,2025),('2025-10-11',202541,10,2025,11,41,202510,2025),('2025-10-12',202542,10,2025,12,42,202510,2025),('2025-10-13',202542,10,2025,13,42,202510,2025),('2025-10-14',202542,10,2025,14,42,202510,2025),('2025-10-15',202542,10,2025,15,42,202510,2025),('2025-10-16',202542,10,2025,16,42,202510,2025),('2025-10-17',202542,10,2025,17,42,202510,2025),('2025-10-18',202542,10,2025,18,42,202510,2025),('2025-10-19',202543,10,2025,19,43,202510,2025),('2025-10-20',202543,10,2025,20,43,202510,2025),('2025-10-21',202543,10,2025,21,43,202510,2025),('2025-10-22',202543,10,2025,22,43,202510,2025),('2025-10-23',202543,10,2025,23,43,202510,2025),('2025-10-24',202543,10,2025,24,43,202510,2025),('2025-10-25',202543,10,2025,25,43,202510,2025),('2025-10-26',202544,10,2025,26,44,202510,2025),('2025-10-27',202544,10,2025,27,44,202510,2025),('2025-10-28',202544,10,2025,28,44,202510,2025),('2025-10-29',202544,10,2025,29,44,202510,2025),('2025-10-30',202544,10,2025,30,44,202510,2025),('2025-10-31',202544,10,2025,31,44,202510,2025),('2025-11-01',202544,11,2025,1,44,202511,2025),('2025-11-02',202545,11,2025,2,45,202511,2025),('2025-11-03',202545,11,2025,3,45,202511,2025),('2025-11-04',202545,11,2025,4,45,202511,2025),('2025-11-05',202545,11,2025,5,45,202511,2025),('2025-11-06',202545,11,2025,6,45,202511,2025),('2025-11-07',202545,11,2025,7,45,202511,2025),('2025-11-08',202545,11,2025,8,45,202511,2025),('2025-11-09',202546,11,2025,9,46,202511,2025),('2025-11-10',202546,11,2025,10,46,202511,2025),('2025-11-11',202546,11,2025,11,46,202511,2025),('2025-11-12',202546,11,2025,12,46,202511,2025),('2025-11-13',202546,11,2025,13,46,202511,2025),('2025-11-14',202546,11,2025,14,46,202511,2025),('2025-11-15',202546,11,2025,15,46,202511,2025),('2025-11-16',202547,11,2025,16,47,202511,2025),('2025-11-17',202547,11,2025,17,47,202511,2025),('2025-11-18',202547,11,2025,18,47,202511,2025),('2025-11-19',202547,11,2025,19,47,202511,2025),('2025-11-20',202547,11,2025,20,47,202511,2025),('2025-11-21',202547,11,2025,21,47,202511,2025),('2025-11-22',202547,11,2025,22,47,202511,2025),('2025-11-23',202548,11,2025,23,48,202511,2025),('2025-11-24',202548,11,2025,24,48,202511,2025),('2025-11-25',202548,11,2025,25,48,202511,2025),('2025-11-26',202548,11,2025,26,48,202511,2025),('2025-11-27',202548,11,2025,27,48,202511,2025),('2025-11-28',202548,11,2025,28,48,202511,2025),('2025-11-29',202548,11,2025,29,48,202511,2025),('2025-11-30',202549,11,2025,30,49,202511,2025),('2025-12-01',202549,12,2025,1,49,202512,2026),('2025-12-02',202549,12,2025,2,49,202512,2026),('2025-12-03',202549,12,2025,3,49,202512,2026),('2025-12-04',202549,12,2025,4,49,202512,2026),('2025-12-05',202549,12,2025,5,49,202512,2026),('2025-12-06',202549,12,2025,6,49,202512,2026),('2025-12-07',202550,12,2025,7,50,202512,2026),('2025-12-08',202550,12,2025,8,50,202512,2026),('2025-12-09',202550,12,2025,9,50,202512,2026),('2025-12-10',202550,12,2025,10,50,202512,2026),('2025-12-11',202550,12,2025,11,50,202512,2026),('2025-12-12',202550,12,2025,12,50,202512,2026),('2025-12-13',202550,12,2025,13,50,202512,2026),('2025-12-14',202551,12,2025,14,51,202512,2026),('2025-12-15',202551,12,2025,15,51,202512,2026),('2025-12-16',202551,12,2025,16,51,202512,2026),('2025-12-17',202551,12,2025,17,51,202512,2026),('2025-12-18',202551,12,2025,18,51,202512,2026),('2025-12-19',202551,12,2025,19,51,202512,2026),('2025-12-20',202551,12,2025,20,51,202512,2026),('2025-12-21',202552,12,2025,21,52,202512,2026),('2025-12-22',202552,12,2025,22,52,202512,2026),('2025-12-23',202552,12,2025,23,52,202512,2026),('2025-12-24',202552,12,2025,24,52,202512,2026),('2025-12-25',202552,12,2025,25,52,202512,2026),('2025-12-26',202552,12,2025,26,52,202512,2026),('2025-12-27',202552,12,2025,27,52,202512,2026),('2025-12-28',202553,12,2025,28,53,202512,2026),('2025-12-29',202501,12,2025,29,53,202512,2026),('2025-12-30',202501,12,2025,30,53,202512,2026),('2025-12-31',202501,12,2025,31,53,202512,2026),('2026-01-01',202601,1,2026,1,53,202601,2026),('2026-01-02',202601,1,2026,2,53,202601,2026),('2026-01-03',202601,1,2026,3,53,202601,2026),('2026-01-04',202602,1,2026,4,1,202601,2026),('2026-01-05',202602,1,2026,5,1,202601,2026),('2026-01-06',202602,1,2026,6,1,202601,2026),('2026-01-07',202602,1,2026,7,1,202601,2026),('2026-01-08',202602,1,2026,8,1,202601,2026),('2026-01-09',202602,1,2026,9,1,202601,2026),('2026-01-10',202602,1,2026,10,1,202601,2026),('2026-01-11',202603,1,2026,11,2,202601,2026),('2026-01-12',202603,1,2026,12,2,202601,2026),('2026-01-13',202603,1,2026,13,2,202601,2026),('2026-01-14',202603,1,2026,14,2,202601,2026),('2026-01-15',202603,1,2026,15,2,202601,2026),('2026-01-16',202603,1,2026,16,2,202601,2026),('2026-01-17',202603,1,2026,17,2,202601,2026),('2026-01-18',202604,1,2026,18,3,202601,2026),('2026-01-19',202604,1,2026,19,3,202601,2026),('2026-01-20',202604,1,2026,20,3,202601,2026),('2026-01-21',202604,1,2026,21,3,202601,2026),('2026-01-22',202604,1,2026,22,3,202601,2026),('2026-01-23',202604,1,2026,23,3,202601,2026),('2026-01-24',202604,1,2026,24,3,202601,2026),('2026-01-25',202605,1,2026,25,4,202601,2026),('2026-01-26',202605,1,2026,26,4,202601,2026),('2026-01-27',202605,1,2026,27,4,202601,2026),('2026-01-28',202605,1,2026,28,4,202601,2026),('2026-01-29',202605,1,2026,29,4,202601,2026),('2026-01-30',202605,1,2026,30,4,202601,2026),('2026-01-31',202605,1,2026,31,4,202601,2026),('2026-02-01',202606,2,2026,1,5,202602,2026),('2026-02-02',202606,2,2026,2,5,202602,2026),('2026-02-03',202606,2,2026,3,5,202602,2026),('2026-02-04',202606,2,2026,4,5,202602,2026),('2026-02-05',202606,2,2026,5,5,202602,2026),('2026-02-06',202606,2,2026,6,5,202602,2026),('2026-02-07',202606,2,2026,7,5,202602,2026),('2026-02-08',202607,2,2026,8,6,202602,2026),('2026-02-09',202607,2,2026,9,6,202602,2026),('2026-02-10',202607,2,2026,10,6,202602,2026),('2026-02-11',202607,2,2026,11,6,202602,2026),('2026-02-12',202607,2,2026,12,6,202602,2026),('2026-02-13',202607,2,2026,13,6,202602,2026),('2026-02-14',202607,2,2026,14,6,202602,2026),('2026-02-15',202608,2,2026,15,7,202602,2026),('2026-02-16',202608,2,2026,16,7,202602,2026),('2026-02-17',202608,2,2026,17,7,202602,2026),('2026-02-18',202608,2,2026,18,7,202602,2026),('2026-02-19',202608,2,2026,19,7,202602,2026),('2026-02-20',202608,2,2026,20,7,202602,2026),('2026-02-21',202608,2,2026,21,7,202602,2026),('2026-02-22',202609,2,2026,22,8,202602,2026),('2026-02-23',202609,2,2026,23,8,202602,2026),('2026-02-24',202609,2,2026,24,8,202602,2026),('2026-02-25',202609,2,2026,25,8,202602,2026),('2026-02-26',202609,2,2026,26,8,202602,2026),('2026-02-27',202609,2,2026,27,8,202602,2026),('2026-02-28',202609,2,2026,28,8,202602,2026),('2026-03-01',202610,3,2026,1,9,202603,2026),('2026-03-02',202610,3,2026,2,9,202603,2026),('2026-03-03',202610,3,2026,3,9,202603,2026),('2026-03-04',202610,3,2026,4,9,202603,2026),('2026-03-05',202610,3,2026,5,9,202603,2026),('2026-03-06',202610,3,2026,6,9,202603,2026),('2026-03-07',202610,3,2026,7,9,202603,2026),('2026-03-08',202611,3,2026,8,10,202603,2026),('2026-03-09',202611,3,2026,9,10,202603,2026),('2026-03-10',202611,3,2026,10,10,202603,2026),('2026-03-11',202611,3,2026,11,10,202603,2026),('2026-03-12',202611,3,2026,12,10,202603,2026),('2026-03-13',202611,3,2026,13,10,202603,2026),('2026-03-14',202611,3,2026,14,10,202603,2026),('2026-03-15',202612,3,2026,15,11,202603,2026),('2026-03-16',202612,3,2026,16,11,202603,2026),('2026-03-17',202612,3,2026,17,11,202603,2026),('2026-03-18',202612,3,2026,18,11,202603,2026),('2026-03-19',202612,3,2026,19,11,202603,2026),('2026-03-20',202612,3,2026,20,11,202603,2026),('2026-03-21',202612,3,2026,21,11,202603,2026),('2026-03-22',202613,3,2026,22,12,202603,2026),('2026-03-23',202613,3,2026,23,12,202603,2026),('2026-03-24',202613,3,2026,24,12,202603,2026),('2026-03-25',202613,3,2026,25,12,202603,2026),('2026-03-26',202613,3,2026,26,12,202603,2026),('2026-03-27',202613,3,2026,27,12,202603,2026),('2026-03-28',202613,3,2026,28,12,202603,2026),('2026-03-29',202614,3,2026,29,13,202603,2026),('2026-03-30',202614,3,2026,30,13,202603,2026),('2026-03-31',202614,3,2026,31,13,202603,2026),('2026-04-01',202614,4,2026,1,13,202604,2026),('2026-04-02',202614,4,2026,2,13,202604,2026),('2026-04-03',202614,4,2026,3,13,202604,2026),('2026-04-04',202614,4,2026,4,13,202604,2026),('2026-04-05',202615,4,2026,5,14,202604,2026),('2026-04-06',202615,4,2026,6,14,202604,2026),('2026-04-07',202615,4,2026,7,14,202604,2026),('2026-04-08',202615,4,2026,8,14,202604,2026),('2026-04-09',202615,4,2026,9,14,202604,2026),('2026-04-10',202615,4,2026,10,14,202604,2026),('2026-04-11',202615,4,2026,11,14,202604,2026),('2026-04-12',202616,4,2026,12,15,202604,2026),('2026-04-13',202616,4,2026,13,15,202604,2026),('2026-04-14',202616,4,2026,14,15,202604,2026),('2026-04-15',202616,4,2026,15,15,202604,2026),('2026-04-16',202616,4,2026,16,15,202604,2026),('2026-04-17',202616,4,2026,17,15,202604,2026),('2026-04-18',202616,4,2026,18,15,202604,2026),('2026-04-19',202617,4,2026,19,16,202604,2026),('2026-04-20',202617,4,2026,20,16,202604,2026),('2026-04-21',202617,4,2026,21,16,202604,2026),('2026-04-22',202617,4,2026,22,16,202604,2026),('2026-04-23',202617,4,2026,23,16,202604,2026),('2026-04-24',202617,4,2026,24,16,202604,2026),('2026-04-25',202617,4,2026,25,16,202604,2026),('2026-04-26',202618,4,2026,26,17,202604,2026),('2026-04-27',202618,4,2026,27,17,202604,2026),('2026-04-28',202618,4,2026,28,17,202604,2026),('2026-04-29',202618,4,2026,29,17,202604,2026),('2026-04-30',202618,4,2026,30,17,202604,2026),('2026-05-01',202618,5,2026,1,17,202605,2026),('2026-05-02',202618,5,2026,2,17,202605,2026),('2026-05-03',202619,5,2026,3,18,202605,2026),('2026-05-04',202619,5,2026,4,18,202605,2026),('2026-05-05',202619,5,2026,5,18,202605,2026),('2026-05-06',202619,5,2026,6,18,202605,2026),('2026-05-07',202619,5,2026,7,18,202605,2026),('2026-05-08',202619,5,2026,8,18,202605,2026),('2026-05-09',202619,5,2026,9,18,202605,2026),('2026-05-10',202620,5,2026,10,19,202605,2026),('2026-05-11',202620,5,2026,11,19,202605,2026),('2026-05-12',202620,5,2026,12,19,202605,2026),('2026-05-13',202620,5,2026,13,19,202605,2026),('2026-05-14',202620,5,2026,14,19,202605,2026),('2026-05-15',202620,5,2026,15,19,202605,2026),('2026-05-16',202620,5,2026,16,19,202605,2026),('2026-05-17',202621,5,2026,17,20,202605,2026),('2026-05-18',202621,5,2026,18,20,202605,2026),('2026-05-19',202621,5,2026,19,20,202605,2026),('2026-05-20',202621,5,2026,20,20,202605,2026),('2026-05-21',202621,5,2026,21,20,202605,2026),('2026-05-22',202621,5,2026,22,20,202605,2026),('2026-05-23',202621,5,2026,23,20,202605,2026),('2026-05-24',202622,5,2026,24,21,202605,2026),('2026-05-25',202622,5,2026,25,21,202605,2026),('2026-05-26',202622,5,2026,26,21,202605,2026),('2026-05-27',202622,5,2026,27,21,202605,2026),('2026-05-28',202622,5,2026,28,21,202605,2026),('2026-05-29',202622,5,2026,29,21,202605,2026),('2026-05-30',202622,5,2026,30,21,202605,2026),('2026-05-31',202623,5,2026,31,22,202605,2026),('2026-06-01',202623,6,2026,1,22,202606,2026),('2026-06-02',202623,6,2026,2,22,202606,2026),('2026-06-03',202623,6,2026,3,22,202606,2026),('2026-06-04',202623,6,2026,4,22,202606,2026),('2026-06-05',202623,6,2026,5,22,202606,2026),('2026-06-06',202623,6,2026,6,22,202606,2026),('2026-06-07',202624,6,2026,7,23,202606,2026),('2026-06-08',202624,6,2026,8,23,202606,2026),('2026-06-09',202624,6,2026,9,23,202606,2026),('2026-06-10',202624,6,2026,10,23,202606,2026),('2026-06-11',202624,6,2026,11,23,202606,2026),('2026-06-12',202624,6,2026,12,23,202606,2026),('2026-06-13',202624,6,2026,13,23,202606,2026),('2026-06-14',202625,6,2026,14,24,202606,2026),('2026-06-15',202625,6,2026,15,24,202606,2026),('2026-06-16',202625,6,2026,16,24,202606,2026),('2026-06-17',202625,6,2026,17,24,202606,2026),('2026-06-18',202625,6,2026,18,24,202606,2026),('2026-06-19',202625,6,2026,19,24,202606,2026),('2026-06-20',202625,6,2026,20,24,202606,2026),('2026-06-21',202626,6,2026,21,25,202606,2026),('2026-06-22',202626,6,2026,22,25,202606,2026),('2026-06-23',202626,6,2026,23,25,202606,2026),('2026-06-24',202626,6,2026,24,25,202606,2026),('2026-06-25',202626,6,2026,25,25,202606,2026),('2026-06-26',202626,6,2026,26,25,202606,2026),('2026-06-27',202626,6,2026,27,25,202606,2026),('2026-06-28',202627,6,2026,28,26,202606,2026),('2026-06-29',202627,6,2026,29,26,202606,2026),('2026-06-30',202627,6,2026,30,26,202606,2026),('2026-07-01',202627,7,2026,1,26,202607,2026),('2026-07-02',202627,7,2026,2,26,202607,2026),('2026-07-03',202627,7,2026,3,26,202607,2026),('2026-07-04',202627,7,2026,4,26,202607,2026),('2026-07-05',202628,7,2026,5,27,202607,2026),('2026-07-06',202628,7,2026,6,27,202607,2026),('2026-07-07',202628,7,2026,7,27,202607,2026),('2026-07-08',202628,7,2026,8,27,202607,2026),('2026-07-09',202628,7,2026,9,27,202607,2026),('2026-07-10',202628,7,2026,10,27,202607,2026),('2026-07-11',202628,7,2026,11,27,202607,2026),('2026-07-12',202629,7,2026,12,28,202607,2026),('2026-07-13',202629,7,2026,13,28,202607,2026),('2026-07-14',202629,7,2026,14,28,202607,2026),('2026-07-15',202629,7,2026,15,28,202607,2026),('2026-07-16',202629,7,2026,16,28,202607,2026),('2026-07-17',202629,7,2026,17,28,202607,2026),('2026-07-18',202629,7,2026,18,28,202607,2026),('2026-07-19',202630,7,2026,19,29,202607,2026),('2026-07-20',202630,7,2026,20,29,202607,2026),('2026-07-21',202630,7,2026,21,29,202607,2026),('2026-07-22',202630,7,2026,22,29,202607,2026),('2026-07-23',202630,7,2026,23,29,202607,2026),('2026-07-24',202630,7,2026,24,29,202607,2026),('2026-07-25',202630,7,2026,25,29,202607,2026),('2026-07-26',202631,7,2026,26,30,202607,2026),('2026-07-27',202631,7,2026,27,30,202607,2026),('2026-07-28',202631,7,2026,28,30,202607,2026),('2026-07-29',202631,7,2026,29,30,202607,2026),('2026-07-30',202631,7,2026,30,30,202607,2026),('2026-07-31',202631,7,2026,31,30,202607,2026),('2026-08-01',202631,8,2026,1,30,202608,2026),('2026-08-02',202632,8,2026,2,31,202608,2026),('2026-08-03',202632,8,2026,3,31,202608,2026),('2026-08-04',202632,8,2026,4,31,202608,2026),('2026-08-05',202632,8,2026,5,31,202608,2026),('2026-08-06',202632,8,2026,6,31,202608,2026),('2026-08-07',202632,8,2026,7,31,202608,2026),('2026-08-08',202632,8,2026,8,31,202608,2026),('2026-08-09',202633,8,2026,9,32,202608,2026),('2026-08-10',202633,8,2026,10,32,202608,2026),('2026-08-11',202633,8,2026,11,32,202608,2026),('2026-08-12',202633,8,2026,12,32,202608,2026),('2026-08-13',202633,8,2026,13,32,202608,2026),('2026-08-14',202633,8,2026,14,32,202608,2026),('2026-08-15',202633,8,2026,15,32,202608,2026),('2026-08-16',202634,8,2026,16,33,202608,2026),('2026-08-17',202634,8,2026,17,33,202608,2026),('2026-08-18',202634,8,2026,18,33,202608,2026),('2026-08-19',202634,8,2026,19,33,202608,2026),('2026-08-20',202634,8,2026,20,33,202608,2026),('2026-08-21',202634,8,2026,21,33,202608,2026),('2026-08-22',202634,8,2026,22,33,202608,2026),('2026-08-23',202635,8,2026,23,34,202608,2026),('2026-08-24',202635,8,2026,24,34,202608,2026),('2026-08-25',202635,8,2026,25,34,202608,2026),('2026-08-26',202635,8,2026,26,34,202608,2026),('2026-08-27',202635,8,2026,27,34,202608,2026),('2026-08-28',202635,8,2026,28,34,202608,2026),('2026-08-29',202635,8,2026,29,34,202608,2026),('2026-08-30',202636,8,2026,30,35,202608,2026),('2026-08-31',202636,8,2026,31,35,202608,2026),('2026-09-01',202636,9,2026,1,35,202609,2026),('2026-09-02',202636,9,2026,2,35,202609,2026),('2026-09-03',202636,9,2026,3,35,202609,2026),('2026-09-04',202636,9,2026,4,35,202609,2026),('2026-09-05',202636,9,2026,5,35,202609,2026),('2026-09-06',202637,9,2026,6,36,202609,2026),('2026-09-07',202637,9,2026,7,36,202609,2026),('2026-09-08',202637,9,2026,8,36,202609,2026),('2026-09-09',202637,9,2026,9,36,202609,2026),('2026-09-10',202637,9,2026,10,36,202609,2026),('2026-09-11',202637,9,2026,11,36,202609,2026),('2026-09-12',202637,9,2026,12,36,202609,2026),('2026-09-13',202638,9,2026,13,37,202609,2026),('2026-09-14',202638,9,2026,14,37,202609,2026),('2026-09-15',202638,9,2026,15,37,202609,2026),('2026-09-16',202638,9,2026,16,37,202609,2026),('2026-09-17',202638,9,2026,17,37,202609,2026),('2026-09-18',202638,9,2026,18,37,202609,2026),('2026-09-19',202638,9,2026,19,37,202609,2026),('2026-09-20',202639,9,2026,20,38,202609,2026),('2026-09-21',202639,9,2026,21,38,202609,2026),('2026-09-22',202639,9,2026,22,38,202609,2026),('2026-09-23',202639,9,2026,23,38,202609,2026),('2026-09-24',202639,9,2026,24,38,202609,2026),('2026-09-25',202639,9,2026,25,38,202609,2026),('2026-09-26',202639,9,2026,26,38,202609,2026),('2026-09-27',202640,9,2026,27,39,202609,2026),('2026-09-28',202640,9,2026,28,39,202609,2026),('2026-09-29',202640,9,2026,29,39,202609,2026),('2026-09-30',202640,9,2026,30,39,202609,2026),('2026-10-01',202640,10,2026,1,39,202610,2026),('2026-10-02',202640,10,2026,2,39,202610,2026),('2026-10-03',202640,10,2026,3,39,202610,2026),('2026-10-04',202641,10,2026,4,40,202610,2026),('2026-10-05',202641,10,2026,5,40,202610,2026),('2026-10-06',202641,10,2026,6,40,202610,2026),('2026-10-07',202641,10,2026,7,40,202610,2026),('2026-10-08',202641,10,2026,8,40,202610,2026),('2026-10-09',202641,10,2026,9,40,202610,2026),('2026-10-10',202641,10,2026,10,40,202610,2026),('2026-10-11',202642,10,2026,11,41,202610,2026),('2026-10-12',202642,10,2026,12,41,202610,2026),('2026-10-13',202642,10,2026,13,41,202610,2026),('2026-10-14',202642,10,2026,14,41,202610,2026),('2026-10-15',202642,10,2026,15,41,202610,2026),('2026-10-16',202642,10,2026,16,41,202610,2026),('2026-10-17',202642,10,2026,17,41,202610,2026),('2026-10-18',202643,10,2026,18,42,202610,2026),('2026-10-19',202643,10,2026,19,42,202610,2026),('2026-10-20',202643,10,2026,20,42,202610,2026),('2026-10-21',202643,10,2026,21,42,202610,2026),('2026-10-22',202643,10,2026,22,42,202610,2026),('2026-10-23',202643,10,2026,23,42,202610,2026),('2026-10-24',202643,10,2026,24,42,202610,2026),('2026-10-25',202644,10,2026,25,43,202610,2026),('2026-10-26',202644,10,2026,26,43,202610,2026),('2026-10-27',202644,10,2026,27,43,202610,2026),('2026-10-28',202644,10,2026,28,43,202610,2026),('2026-10-29',202644,10,2026,29,43,202610,2026),('2026-10-30',202644,10,2026,30,43,202610,2026),('2026-10-31',202644,10,2026,31,43,202610,2026),('2026-11-01',202645,11,2026,1,44,202611,2026),('2026-11-02',202645,11,2026,2,44,202611,2026),('2026-11-03',202645,11,2026,3,44,202611,2026),('2026-11-04',202645,11,2026,4,44,202611,2026),('2026-11-05',202645,11,2026,5,44,202611,2026),('2026-11-06',202645,11,2026,6,44,202611,2026),('2026-11-07',202645,11,2026,7,44,202611,2026),('2026-11-08',202646,11,2026,8,45,202611,2026),('2026-11-09',202646,11,2026,9,45,202611,2026),('2026-11-10',202646,11,2026,10,45,202611,2026),('2026-11-11',202646,11,2026,11,45,202611,2026),('2026-11-12',202646,11,2026,12,45,202611,2026),('2026-11-13',202646,11,2026,13,45,202611,2026),('2026-11-14',202646,11,2026,14,45,202611,2026),('2026-11-15',202647,11,2026,15,46,202611,2026),('2026-11-16',202647,11,2026,16,46,202611,2026),('2026-11-17',202647,11,2026,17,46,202611,2026),('2026-11-18',202647,11,2026,18,46,202611,2026),('2026-11-19',202647,11,2026,19,46,202611,2026),('2026-11-20',202647,11,2026,20,46,202611,2026),('2026-11-21',202647,11,2026,21,46,202611,2026),('2026-11-22',202648,11,2026,22,47,202611,2026),('2026-11-23',202648,11,2026,23,47,202611,2026),('2026-11-24',202648,11,2026,24,47,202611,2026),('2026-11-25',202648,11,2026,25,47,202611,2026),('2026-11-26',202648,11,2026,26,47,202611,2026),('2026-11-27',202648,11,2026,27,47,202611,2026),('2026-11-28',202648,11,2026,28,47,202611,2026),('2026-11-29',202649,11,2026,29,48,202611,2026),('2026-11-30',202649,11,2026,30,48,202611,2026),('2026-12-01',202649,12,2026,1,48,202612,2027),('2026-12-02',202649,12,2026,2,48,202612,2027),('2026-12-03',202649,12,2026,3,48,202612,2027),('2026-12-04',202649,12,2026,4,48,202612,2027),('2026-12-05',202649,12,2026,5,48,202612,2027),('2026-12-06',202650,12,2026,6,49,202612,2027),('2026-12-07',202650,12,2026,7,49,202612,2027),('2026-12-08',202650,12,2026,8,49,202612,2027),('2026-12-09',202650,12,2026,9,49,202612,2027),('2026-12-10',202650,12,2026,10,49,202612,2027),('2026-12-11',202650,12,2026,11,49,202612,2027),('2026-12-12',202650,12,2026,12,49,202612,2027),('2026-12-13',202651,12,2026,13,50,202612,2027),('2026-12-14',202651,12,2026,14,50,202612,2027),('2026-12-15',202651,12,2026,15,50,202612,2027),('2026-12-16',202651,12,2026,16,50,202612,2027),('2026-12-17',202651,12,2026,17,50,202612,2027),('2026-12-18',202651,12,2026,18,50,202612,2027),('2026-12-19',202651,12,2026,19,50,202612,2027),('2026-12-20',202652,12,2026,20,51,202612,2027),('2026-12-21',202652,12,2026,21,51,202612,2027),('2026-12-22',202652,12,2026,22,51,202612,2027),('2026-12-23',202652,12,2026,23,51,202612,2027),('2026-12-24',202652,12,2026,24,51,202612,2027),('2026-12-25',202652,12,2026,25,51,202612,2027),('2026-12-26',202652,12,2026,26,51,202612,2027),('2026-12-27',202653,12,2026,27,52,202612,2027),('2026-12-28',202653,12,2026,28,52,202612,2027),('2026-12-29',202653,12,2026,29,52,202612,2027),('2026-12-30',202653,12,2026,30,52,202612,2027),('2026-12-31',202653,12,2026,31,52,202612,2027),('2027-01-01',202753,1,2027,1,52,202701,2027),('2027-01-02',202753,1,2027,2,52,202701,2027),('2027-01-03',202754,1,2027,3,1,202701,2027),('2027-01-04',202701,1,2027,4,1,202701,2027),('2027-01-05',202701,1,2027,5,1,202701,2027),('2027-01-06',202701,1,2027,6,1,202701,2027),('2027-01-07',202701,1,2027,7,1,202701,2027),('2027-01-08',202701,1,2027,8,1,202701,2027),('2027-01-09',202701,1,2027,9,1,202701,2027),('2027-01-10',202702,1,2027,10,2,202701,2027),('2027-01-11',202702,1,2027,11,2,202701,2027),('2027-01-12',202702,1,2027,12,2,202701,2027),('2027-01-13',202702,1,2027,13,2,202701,2027),('2027-01-14',202702,1,2027,14,2,202701,2027),('2027-01-15',202702,1,2027,15,2,202701,2027),('2027-01-16',202702,1,2027,16,2,202701,2027),('2027-01-17',202703,1,2027,17,3,202701,2027),('2027-01-18',202703,1,2027,18,3,202701,2027),('2027-01-19',202703,1,2027,19,3,202701,2027),('2027-01-20',202703,1,2027,20,3,202701,2027),('2027-01-21',202703,1,2027,21,3,202701,2027),('2027-01-22',202703,1,2027,22,3,202701,2027),('2027-01-23',202703,1,2027,23,3,202701,2027),('2027-01-24',202704,1,2027,24,4,202701,2027),('2027-01-25',202704,1,2027,25,4,202701,2027),('2027-01-26',202704,1,2027,26,4,202701,2027),('2027-01-27',202704,1,2027,27,4,202701,2027),('2027-01-28',202704,1,2027,28,4,202701,2027),('2027-01-29',202704,1,2027,29,4,202701,2027),('2027-01-30',202704,1,2027,30,4,202701,2027),('2027-01-31',202705,1,2027,31,5,202701,2027),('2027-02-01',202705,2,2027,1,5,202702,2027),('2027-02-02',202705,2,2027,2,5,202702,2027),('2027-02-03',202705,2,2027,3,5,202702,2027),('2027-02-04',202705,2,2027,4,5,202702,2027),('2027-02-05',202705,2,2027,5,5,202702,2027),('2027-02-06',202705,2,2027,6,5,202702,2027),('2027-02-07',202706,2,2027,7,6,202702,2027),('2027-02-08',202706,2,2027,8,6,202702,2027),('2027-02-09',202706,2,2027,9,6,202702,2027),('2027-02-10',202706,2,2027,10,6,202702,2027),('2027-02-11',202706,2,2027,11,6,202702,2027),('2027-02-12',202706,2,2027,12,6,202702,2027),('2027-02-13',202706,2,2027,13,6,202702,2027),('2027-02-14',202707,2,2027,14,7,202702,2027),('2027-02-15',202707,2,2027,15,7,202702,2027),('2027-02-16',202707,2,2027,16,7,202702,2027),('2027-02-17',202707,2,2027,17,7,202702,2027),('2027-02-18',202707,2,2027,18,7,202702,2027),('2027-02-19',202707,2,2027,19,7,202702,2027),('2027-02-20',202707,2,2027,20,7,202702,2027),('2027-02-21',202708,2,2027,21,8,202702,2027),('2027-02-22',202708,2,2027,22,8,202702,2027),('2027-02-23',202708,2,2027,23,8,202702,2027),('2027-02-24',202708,2,2027,24,8,202702,2027),('2027-02-25',202708,2,2027,25,8,202702,2027),('2027-02-26',202708,2,2027,26,8,202702,2027),('2027-02-27',202708,2,2027,27,8,202702,2027),('2027-02-28',202709,2,2027,28,9,202702,2027),('2027-03-01',202709,3,2027,1,9,202703,2027),('2027-03-02',202709,3,2027,2,9,202703,2027),('2027-03-03',202709,3,2027,3,9,202703,2027),('2027-03-04',202709,3,2027,4,9,202703,2027),('2027-03-05',202709,3,2027,5,9,202703,2027),('2027-03-06',202709,3,2027,6,9,202703,2027),('2027-03-07',202710,3,2027,7,10,202703,2027),('2027-03-08',202710,3,2027,8,10,202703,2027),('2027-03-09',202710,3,2027,9,10,202703,2027),('2027-03-10',202710,3,2027,10,10,202703,2027),('2027-03-11',202710,3,2027,11,10,202703,2027),('2027-03-12',202710,3,2027,12,10,202703,2027),('2027-03-13',202710,3,2027,13,10,202703,2027),('2027-03-14',202711,3,2027,14,11,202703,2027),('2027-03-15',202711,3,2027,15,11,202703,2027),('2027-03-16',202711,3,2027,16,11,202703,2027),('2027-03-17',202711,3,2027,17,11,202703,2027),('2027-03-18',202711,3,2027,18,11,202703,2027),('2027-03-19',202711,3,2027,19,11,202703,2027),('2027-03-20',202711,3,2027,20,11,202703,2027),('2027-03-21',202712,3,2027,21,12,202703,2027),('2027-03-22',202712,3,2027,22,12,202703,2027),('2027-03-23',202712,3,2027,23,12,202703,2027),('2027-03-24',202712,3,2027,24,12,202703,2027),('2027-03-25',202712,3,2027,25,12,202703,2027),('2027-03-26',202712,3,2027,26,12,202703,2027),('2027-03-27',202712,3,2027,27,12,202703,2027),('2027-03-28',202713,3,2027,28,13,202703,2027),('2027-03-29',202713,3,2027,29,13,202703,2027),('2027-03-30',202713,3,2027,30,13,202703,2027),('2027-03-31',202713,3,2027,31,13,202703,2027),('2027-04-01',202713,4,2027,1,13,202704,2027),('2027-04-02',202713,4,2027,2,13,202704,2027),('2027-04-03',202713,4,2027,3,13,202704,2027),('2027-04-04',202714,4,2027,4,14,202704,2027),('2027-04-05',202714,4,2027,5,14,202704,2027),('2027-04-06',202714,4,2027,6,14,202704,2027),('2027-04-07',202714,4,2027,7,14,202704,2027),('2027-04-08',202714,4,2027,8,14,202704,2027),('2027-04-09',202714,4,2027,9,14,202704,2027),('2027-04-10',202714,4,2027,10,14,202704,2027),('2027-04-11',202715,4,2027,11,15,202704,2027),('2027-04-12',202715,4,2027,12,15,202704,2027),('2027-04-13',202715,4,2027,13,15,202704,2027),('2027-04-14',202715,4,2027,14,15,202704,2027),('2027-04-15',202715,4,2027,15,15,202704,2027),('2027-04-16',202715,4,2027,16,15,202704,2027),('2027-04-17',202715,4,2027,17,15,202704,2027),('2027-04-18',202716,4,2027,18,16,202704,2027),('2027-04-19',202716,4,2027,19,16,202704,2027),('2027-04-20',202716,4,2027,20,16,202704,2027),('2027-04-21',202716,4,2027,21,16,202704,2027),('2027-04-22',202716,4,2027,22,16,202704,2027),('2027-04-23',202716,4,2027,23,16,202704,2027),('2027-04-24',202716,4,2027,24,16,202704,2027),('2027-04-25',202717,4,2027,25,17,202704,2027),('2027-04-26',202717,4,2027,26,17,202704,2027),('2027-04-27',202717,4,2027,27,17,202704,2027),('2027-04-28',202717,4,2027,28,17,202704,2027),('2027-04-29',202717,4,2027,29,17,202704,2027),('2027-04-30',202717,4,2027,30,17,202704,2027),('2027-05-01',202717,5,2027,1,17,202705,2027),('2027-05-02',202718,5,2027,2,18,202705,2027),('2027-05-03',202718,5,2027,3,18,202705,2027),('2027-05-04',202718,5,2027,4,18,202705,2027),('2027-05-05',202718,5,2027,5,18,202705,2027),('2027-05-06',202718,5,2027,6,18,202705,2027),('2027-05-07',202718,5,2027,7,18,202705,2027),('2027-05-08',202718,5,2027,8,18,202705,2027),('2027-05-09',202719,5,2027,9,19,202705,2027),('2027-05-10',202719,5,2027,10,19,202705,2027),('2027-05-11',202719,5,2027,11,19,202705,2027),('2027-05-12',202719,5,2027,12,19,202705,2027),('2027-05-13',202719,5,2027,13,19,202705,2027),('2027-05-14',202719,5,2027,14,19,202705,2027),('2027-05-15',202719,5,2027,15,19,202705,2027),('2027-05-16',202720,5,2027,16,20,202705,2027),('2027-05-17',202720,5,2027,17,20,202705,2027),('2027-05-18',202720,5,2027,18,20,202705,2027),('2027-05-19',202720,5,2027,19,20,202705,2027),('2027-05-20',202720,5,2027,20,20,202705,2027),('2027-05-21',202720,5,2027,21,20,202705,2027),('2027-05-22',202720,5,2027,22,20,202705,2027),('2027-05-23',202721,5,2027,23,21,202705,2027),('2027-05-24',202721,5,2027,24,21,202705,2027),('2027-05-25',202721,5,2027,25,21,202705,2027),('2027-05-26',202721,5,2027,26,21,202705,2027),('2027-05-27',202721,5,2027,27,21,202705,2027),('2027-05-28',202721,5,2027,28,21,202705,2027),('2027-05-29',202721,5,2027,29,21,202705,2027),('2027-05-30',202722,5,2027,30,22,202705,2027),('2027-05-31',202722,5,2027,31,22,202705,2027),('2027-06-01',202722,6,2027,1,22,202706,2027),('2027-06-02',202722,6,2027,2,22,202706,2027),('2027-06-03',202722,6,2027,3,22,202706,2027),('2027-06-04',202722,6,2027,4,22,202706,2027),('2027-06-05',202722,6,2027,5,22,202706,2027),('2027-06-06',202723,6,2027,6,23,202706,2027),('2027-06-07',202723,6,2027,7,23,202706,2027),('2027-06-08',202723,6,2027,8,23,202706,2027),('2027-06-09',202723,6,2027,9,23,202706,2027),('2027-06-10',202723,6,2027,10,23,202706,2027),('2027-06-11',202723,6,2027,11,23,202706,2027),('2027-06-12',202723,6,2027,12,23,202706,2027),('2027-06-13',202724,6,2027,13,24,202706,2027),('2027-06-14',202724,6,2027,14,24,202706,2027),('2027-06-15',202724,6,2027,15,24,202706,2027),('2027-06-16',202724,6,2027,16,24,202706,2027),('2027-06-17',202724,6,2027,17,24,202706,2027),('2027-06-18',202724,6,2027,18,24,202706,2027),('2027-06-19',202724,6,2027,19,24,202706,2027),('2027-06-20',202725,6,2027,20,25,202706,2027),('2027-06-21',202725,6,2027,21,25,202706,2027),('2027-06-22',202725,6,2027,22,25,202706,2027),('2027-06-23',202725,6,2027,23,25,202706,2027),('2027-06-24',202725,6,2027,24,25,202706,2027),('2027-06-25',202725,6,2027,25,25,202706,2027),('2027-06-26',202725,6,2027,26,25,202706,2027),('2027-06-27',202726,6,2027,27,26,202706,2027),('2027-06-28',202726,6,2027,28,26,202706,2027),('2027-06-29',202726,6,2027,29,26,202706,2027),('2027-06-30',202726,6,2027,30,26,202706,2027),('2027-07-01',202726,7,2027,1,26,202707,2027),('2027-07-02',202726,7,2027,2,26,202707,2027),('2027-07-03',202726,7,2027,3,26,202707,2027),('2027-07-04',202727,7,2027,4,27,202707,2027),('2027-07-05',202727,7,2027,5,27,202707,2027),('2027-07-06',202727,7,2027,6,27,202707,2027),('2027-07-07',202727,7,2027,7,27,202707,2027),('2027-07-08',202727,7,2027,8,27,202707,2027),('2027-07-09',202727,7,2027,9,27,202707,2027),('2027-07-10',202727,7,2027,10,27,202707,2027),('2027-07-11',202728,7,2027,11,28,202707,2027),('2027-07-12',202728,7,2027,12,28,202707,2027),('2027-07-13',202728,7,2027,13,28,202707,2027),('2027-07-14',202728,7,2027,14,28,202707,2027),('2027-07-15',202728,7,2027,15,28,202707,2027),('2027-07-16',202728,7,2027,16,28,202707,2027),('2027-07-17',202728,7,2027,17,28,202707,2027),('2027-07-18',202729,7,2027,18,29,202707,2027),('2027-07-19',202729,7,2027,19,29,202707,2027),('2027-07-20',202729,7,2027,20,29,202707,2027),('2027-07-21',202729,7,2027,21,29,202707,2027),('2027-07-22',202729,7,2027,22,29,202707,2027),('2027-07-23',202729,7,2027,23,29,202707,2027),('2027-07-24',202729,7,2027,24,29,202707,2027),('2027-07-25',202730,7,2027,25,30,202707,2027),('2027-07-26',202730,7,2027,26,30,202707,2027),('2027-07-27',202730,7,2027,27,30,202707,2027),('2027-07-28',202730,7,2027,28,30,202707,2027),('2027-07-29',202730,7,2027,29,30,202707,2027),('2027-07-30',202730,7,2027,30,30,202707,2027),('2027-07-31',202730,7,2027,31,30,202707,2027),('2027-08-01',202731,8,2027,1,31,202708,2027),('2027-08-02',202731,8,2027,2,31,202708,2027),('2027-08-03',202731,8,2027,3,31,202708,2027),('2027-08-04',202731,8,2027,4,31,202708,2027),('2027-08-05',202731,8,2027,5,31,202708,2027),('2027-08-06',202731,8,2027,6,31,202708,2027),('2027-08-07',202731,8,2027,7,31,202708,2027),('2027-08-08',202732,8,2027,8,32,202708,2027),('2027-08-09',202732,8,2027,9,32,202708,2027),('2027-08-10',202732,8,2027,10,32,202708,2027),('2027-08-11',202732,8,2027,11,32,202708,2027),('2027-08-12',202732,8,2027,12,32,202708,2027),('2027-08-13',202732,8,2027,13,32,202708,2027),('2027-08-14',202732,8,2027,14,32,202708,2027),('2027-08-15',202733,8,2027,15,33,202708,2027),('2027-08-16',202733,8,2027,16,33,202708,2027),('2027-08-17',202733,8,2027,17,33,202708,2027),('2027-08-18',202733,8,2027,18,33,202708,2027),('2027-08-19',202733,8,2027,19,33,202708,2027),('2027-08-20',202733,8,2027,20,33,202708,2027),('2027-08-21',202733,8,2027,21,33,202708,2027),('2027-08-22',202734,8,2027,22,34,202708,2027),('2027-08-23',202734,8,2027,23,34,202708,2027),('2027-08-24',202734,8,2027,24,34,202708,2027),('2027-08-25',202734,8,2027,25,34,202708,2027),('2027-08-26',202734,8,2027,26,34,202708,2027),('2027-08-27',202734,8,2027,27,34,202708,2027),('2027-08-28',202734,8,2027,28,34,202708,2027),('2027-08-29',202735,8,2027,29,35,202708,2027),('2027-08-30',202735,8,2027,30,35,202708,2027),('2027-08-31',202735,8,2027,31,35,202708,2027),('2027-09-01',202735,9,2027,1,35,202709,2027),('2027-09-02',202735,9,2027,2,35,202709,2027),('2027-09-03',202735,9,2027,3,35,202709,2027),('2027-09-04',202735,9,2027,4,35,202709,2027),('2027-09-05',202736,9,2027,5,36,202709,2027),('2027-09-06',202736,9,2027,6,36,202709,2027),('2027-09-07',202736,9,2027,7,36,202709,2027),('2027-09-08',202736,9,2027,8,36,202709,2027),('2027-09-09',202736,9,2027,9,36,202709,2027),('2027-09-10',202736,9,2027,10,36,202709,2027),('2027-09-11',202736,9,2027,11,36,202709,2027),('2027-09-12',202737,9,2027,12,37,202709,2027),('2027-09-13',202737,9,2027,13,37,202709,2027),('2027-09-14',202737,9,2027,14,37,202709,2027),('2027-09-15',202737,9,2027,15,37,202709,2027),('2027-09-16',202737,9,2027,16,37,202709,2027),('2027-09-17',202737,9,2027,17,37,202709,2027),('2027-09-18',202737,9,2027,18,37,202709,2027),('2027-09-19',202738,9,2027,19,38,202709,2027),('2027-09-20',202738,9,2027,20,38,202709,2027),('2027-09-21',202738,9,2027,21,38,202709,2027),('2027-09-22',202738,9,2027,22,38,202709,2027),('2027-09-23',202738,9,2027,23,38,202709,2027),('2027-09-24',202738,9,2027,24,38,202709,2027),('2027-09-25',202738,9,2027,25,38,202709,2027),('2027-09-26',202739,9,2027,26,39,202709,2027),('2027-09-27',202739,9,2027,27,39,202709,2027),('2027-09-28',202739,9,2027,28,39,202709,2027),('2027-09-29',202739,9,2027,29,39,202709,2027),('2027-09-30',202739,9,2027,30,39,202709,2027),('2027-10-01',202739,10,2027,1,39,202710,2027),('2027-10-02',202739,10,2027,2,39,202710,2027),('2027-10-03',202740,10,2027,3,40,202710,2027),('2027-10-04',202740,10,2027,4,40,202710,2027),('2027-10-05',202740,10,2027,5,40,202710,2027),('2027-10-06',202740,10,2027,6,40,202710,2027),('2027-10-07',202740,10,2027,7,40,202710,2027),('2027-10-08',202740,10,2027,8,40,202710,2027),('2027-10-09',202740,10,2027,9,40,202710,2027),('2027-10-10',202741,10,2027,10,41,202710,2027),('2027-10-11',202741,10,2027,11,41,202710,2027),('2027-10-12',202741,10,2027,12,41,202710,2027),('2027-10-13',202741,10,2027,13,41,202710,2027),('2027-10-14',202741,10,2027,14,41,202710,2027),('2027-10-15',202741,10,2027,15,41,202710,2027),('2027-10-16',202741,10,2027,16,41,202710,2027),('2027-10-17',202742,10,2027,17,42,202710,2027),('2027-10-18',202742,10,2027,18,42,202710,2027),('2027-10-19',202742,10,2027,19,42,202710,2027),('2027-10-20',202742,10,2027,20,42,202710,2027),('2027-10-21',202742,10,2027,21,42,202710,2027),('2027-10-22',202742,10,2027,22,42,202710,2027),('2027-10-23',202742,10,2027,23,42,202710,2027),('2027-10-24',202743,10,2027,24,43,202710,2027),('2027-10-25',202743,10,2027,25,43,202710,2027),('2027-10-26',202743,10,2027,26,43,202710,2027),('2027-10-27',202743,10,2027,27,43,202710,2027),('2027-10-28',202743,10,2027,28,43,202710,2027),('2027-10-29',202743,10,2027,29,43,202710,2027),('2027-10-30',202743,10,2027,30,43,202710,2027),('2027-10-31',202744,10,2027,31,44,202710,2027),('2027-11-01',202744,11,2027,1,44,202711,2027),('2027-11-02',202744,11,2027,2,44,202711,2027),('2027-11-03',202744,11,2027,3,44,202711,2027),('2027-11-04',202744,11,2027,4,44,202711,2027),('2027-11-05',202744,11,2027,5,44,202711,2027),('2027-11-06',202744,11,2027,6,44,202711,2027),('2027-11-07',202745,11,2027,7,45,202711,2027),('2027-11-08',202745,11,2027,8,45,202711,2027),('2027-11-09',202745,11,2027,9,45,202711,2027),('2027-11-10',202745,11,2027,10,45,202711,2027),('2027-11-11',202745,11,2027,11,45,202711,2027),('2027-11-12',202745,11,2027,12,45,202711,2027),('2027-11-13',202745,11,2027,13,45,202711,2027),('2027-11-14',202746,11,2027,14,46,202711,2027),('2027-11-15',202746,11,2027,15,46,202711,2027),('2027-11-16',202746,11,2027,16,46,202711,2027),('2027-11-17',202746,11,2027,17,46,202711,2027),('2027-11-18',202746,11,2027,18,46,202711,2027),('2027-11-19',202746,11,2027,19,46,202711,2027),('2027-11-20',202746,11,2027,20,46,202711,2027),('2027-11-21',202747,11,2027,21,47,202711,2027),('2027-11-22',202747,11,2027,22,47,202711,2027),('2027-11-23',202747,11,2027,23,47,202711,2027),('2027-11-24',202747,11,2027,24,47,202711,2027),('2027-11-25',202747,11,2027,25,47,202711,2027),('2027-11-26',202747,11,2027,26,47,202711,2027),('2027-11-27',202747,11,2027,27,47,202711,2027),('2027-11-28',202748,11,2027,28,48,202711,2027),('2027-11-29',202748,11,2027,29,48,202711,2027),('2027-11-30',202748,11,2027,30,48,202711,2027),('2027-12-01',202748,12,2027,1,48,202712,2028),('2027-12-02',202748,12,2027,2,48,202712,2028),('2027-12-03',202748,12,2027,3,48,202712,2028),('2027-12-04',202748,12,2027,4,48,202712,2028),('2027-12-05',202749,12,2027,5,49,202712,2028),('2027-12-06',202749,12,2027,6,49,202712,2028),('2027-12-07',202749,12,2027,7,49,202712,2028),('2027-12-08',202749,12,2027,8,49,202712,2028),('2027-12-09',202749,12,2027,9,49,202712,2028),('2027-12-10',202749,12,2027,10,49,202712,2028),('2027-12-11',202749,12,2027,11,49,202712,2028),('2027-12-12',202750,12,2027,12,50,202712,2028),('2027-12-13',202750,12,2027,13,50,202712,2028),('2027-12-14',202750,12,2027,14,50,202712,2028),('2027-12-15',202750,12,2027,15,50,202712,2028),('2027-12-16',202750,12,2027,16,50,202712,2028),('2027-12-17',202750,12,2027,17,50,202712,2028),('2027-12-18',202750,12,2027,18,50,202712,2028),('2027-12-19',202751,12,2027,19,51,202712,2028),('2027-12-20',202751,12,2027,20,51,202712,2028),('2027-12-21',202751,12,2027,21,51,202712,2028),('2027-12-22',202751,12,2027,22,51,202712,2028),('2027-12-23',202751,12,2027,23,51,202712,2028),('2027-12-24',202751,12,2027,24,51,202712,2028),('2027-12-25',202751,12,2027,25,51,202712,2028),('2027-12-26',202752,12,2027,26,52,202712,2028),('2027-12-27',202752,12,2027,27,52,202712,2028),('2027-12-28',202752,12,2027,28,52,202712,2028),('2027-12-29',202752,12,2027,29,52,202712,2028),('2027-12-30',202752,12,2027,30,52,202712,2028),('2027-12-31',202752,12,2027,31,52,202712,2028),('2028-01-01',202852,1,2028,1,52,202801,2028),('2028-01-02',202853,1,2028,2,1,202801,2028),('2028-01-03',202801,1,2028,3,1,202801,2028),('2028-01-04',202801,1,2028,4,1,202801,2028),('2028-01-05',202801,1,2028,5,1,202801,2028),('2028-01-06',202801,1,2028,6,1,202801,2028),('2028-01-07',202801,1,2028,7,1,202801,2028),('2028-01-08',202801,1,2028,8,1,202801,2028),('2028-01-09',202802,1,2028,9,2,202801,2028),('2028-01-10',202802,1,2028,10,2,202801,2028),('2028-01-11',202802,1,2028,11,2,202801,2028),('2028-01-12',202802,1,2028,12,2,202801,2028),('2028-01-13',202802,1,2028,13,2,202801,2028),('2028-01-14',202802,1,2028,14,2,202801,2028),('2028-01-15',202802,1,2028,15,2,202801,2028),('2028-01-16',202803,1,2028,16,3,202801,2028),('2028-01-17',202803,1,2028,17,3,202801,2028),('2028-01-18',202803,1,2028,18,3,202801,2028),('2028-01-19',202803,1,2028,19,3,202801,2028),('2028-01-20',202803,1,2028,20,3,202801,2028),('2028-01-21',202803,1,2028,21,3,202801,2028),('2028-01-22',202803,1,2028,22,3,202801,2028),('2028-01-23',202804,1,2028,23,4,202801,2028),('2028-01-24',202804,1,2028,24,4,202801,2028),('2028-01-25',202804,1,2028,25,4,202801,2028),('2028-01-26',202804,1,2028,26,4,202801,2028),('2028-01-27',202804,1,2028,27,4,202801,2028),('2028-01-28',202804,1,2028,28,4,202801,2028),('2028-01-29',202804,1,2028,29,4,202801,2028),('2028-01-30',202805,1,2028,30,5,202801,2028),('2028-01-31',202805,1,2028,31,5,202801,2028),('2028-02-01',202805,2,2028,1,5,202802,2028),('2028-02-02',202805,2,2028,2,5,202802,2028),('2028-02-03',202805,2,2028,3,5,202802,2028),('2028-02-04',202805,2,2028,4,5,202802,2028),('2028-02-05',202805,2,2028,5,5,202802,2028),('2028-02-06',202806,2,2028,6,6,202802,2028),('2028-02-07',202806,2,2028,7,6,202802,2028),('2028-02-08',202806,2,2028,8,6,202802,2028),('2028-02-09',202806,2,2028,9,6,202802,2028),('2028-02-10',202806,2,2028,10,6,202802,2028),('2028-02-11',202806,2,2028,11,6,202802,2028),('2028-02-12',202806,2,2028,12,6,202802,2028),('2028-02-13',202807,2,2028,13,7,202802,2028),('2028-02-14',202807,2,2028,14,7,202802,2028),('2028-02-15',202807,2,2028,15,7,202802,2028),('2028-02-16',202807,2,2028,16,7,202802,2028),('2028-02-17',202807,2,2028,17,7,202802,2028),('2028-02-18',202807,2,2028,18,7,202802,2028),('2028-02-19',202807,2,2028,19,7,202802,2028),('2028-02-20',202808,2,2028,20,8,202802,2028),('2028-02-21',202808,2,2028,21,8,202802,2028),('2028-02-22',202808,2,2028,22,8,202802,2028),('2028-02-23',202808,2,2028,23,8,202802,2028),('2028-02-24',202808,2,2028,24,8,202802,2028),('2028-02-25',202808,2,2028,25,8,202802,2028),('2028-02-26',202808,2,2028,26,8,202802,2028),('2028-02-27',202809,2,2028,27,9,202802,2028),('2028-02-28',202809,2,2028,28,9,202802,2028),('2028-02-29',202809,2,2028,29,9,202802,2028),('2028-03-01',202809,3,2028,1,9,202803,2028),('2028-03-02',202809,3,2028,2,9,202803,2028),('2028-03-03',202809,3,2028,3,9,202803,2028),('2028-03-04',202809,3,2028,4,9,202803,2028),('2028-03-05',202810,3,2028,5,10,202803,2028),('2028-03-06',202810,3,2028,6,10,202803,2028),('2028-03-07',202810,3,2028,7,10,202803,2028),('2028-03-08',202810,3,2028,8,10,202803,2028),('2028-03-09',202810,3,2028,9,10,202803,2028),('2028-03-10',202810,3,2028,10,10,202803,2028),('2028-03-11',202810,3,2028,11,10,202803,2028),('2028-03-12',202811,3,2028,12,11,202803,2028),('2028-03-13',202811,3,2028,13,11,202803,2028),('2028-03-14',202811,3,2028,14,11,202803,2028),('2028-03-15',202811,3,2028,15,11,202803,2028),('2028-03-16',202811,3,2028,16,11,202803,2028),('2028-03-17',202811,3,2028,17,11,202803,2028),('2028-03-18',202811,3,2028,18,11,202803,2028),('2028-03-19',202812,3,2028,19,12,202803,2028),('2028-03-20',202812,3,2028,20,12,202803,2028),('2028-03-21',202812,3,2028,21,12,202803,2028),('2028-03-22',202812,3,2028,22,12,202803,2028),('2028-03-23',202812,3,2028,23,12,202803,2028),('2028-03-24',202812,3,2028,24,12,202803,2028),('2028-03-25',202812,3,2028,25,12,202803,2028),('2028-03-26',202813,3,2028,26,13,202803,2028),('2028-03-27',202813,3,2028,27,13,202803,2028),('2028-03-28',202813,3,2028,28,13,202803,2028),('2028-03-29',202813,3,2028,29,13,202803,2028),('2028-03-30',202813,3,2028,30,13,202803,2028),('2028-03-31',202813,3,2028,31,13,202803,2028),('2028-04-01',202813,4,2028,1,13,202804,2028),('2028-04-02',202814,4,2028,2,14,202804,2028),('2028-04-03',202814,4,2028,3,14,202804,2028),('2028-04-04',202814,4,2028,4,14,202804,2028),('2028-04-05',202814,4,2028,5,14,202804,2028),('2028-04-06',202814,4,2028,6,14,202804,2028),('2028-04-07',202814,4,2028,7,14,202804,2028),('2028-04-08',202814,4,2028,8,14,202804,2028),('2028-04-09',202815,4,2028,9,15,202804,2028),('2028-04-10',202815,4,2028,10,15,202804,2028),('2028-04-11',202815,4,2028,11,15,202804,2028),('2028-04-12',202815,4,2028,12,15,202804,2028),('2028-04-13',202815,4,2028,13,15,202804,2028),('2028-04-14',202815,4,2028,14,15,202804,2028),('2028-04-15',202815,4,2028,15,15,202804,2028),('2028-04-16',202816,4,2028,16,16,202804,2028),('2028-04-17',202816,4,2028,17,16,202804,2028),('2028-04-18',202816,4,2028,18,16,202804,2028),('2028-04-19',202816,4,2028,19,16,202804,2028),('2028-04-20',202816,4,2028,20,16,202804,2028),('2028-04-21',202816,4,2028,21,16,202804,2028),('2028-04-22',202816,4,2028,22,16,202804,2028),('2028-04-23',202817,4,2028,23,17,202804,2028),('2028-04-24',202817,4,2028,24,17,202804,2028),('2028-04-25',202817,4,2028,25,17,202804,2028),('2028-04-26',202817,4,2028,26,17,202804,2028),('2028-04-27',202817,4,2028,27,17,202804,2028),('2028-04-28',202817,4,2028,28,17,202804,2028),('2028-04-29',202817,4,2028,29,17,202804,2028),('2028-04-30',202818,4,2028,30,18,202804,2028),('2028-05-01',202818,5,2028,1,18,202805,2028),('2028-05-02',202818,5,2028,2,18,202805,2028),('2028-05-03',202818,5,2028,3,18,202805,2028),('2028-05-04',202818,5,2028,4,18,202805,2028),('2028-05-05',202818,5,2028,5,18,202805,2028),('2028-05-06',202818,5,2028,6,18,202805,2028),('2028-05-07',202819,5,2028,7,19,202805,2028),('2028-05-08',202819,5,2028,8,19,202805,2028),('2028-05-09',202819,5,2028,9,19,202805,2028),('2028-05-10',202819,5,2028,10,19,202805,2028),('2028-05-11',202819,5,2028,11,19,202805,2028),('2028-05-12',202819,5,2028,12,19,202805,2028),('2028-05-13',202819,5,2028,13,19,202805,2028),('2028-05-14',202820,5,2028,14,20,202805,2028),('2028-05-15',202820,5,2028,15,20,202805,2028),('2028-05-16',202820,5,2028,16,20,202805,2028),('2028-05-17',202820,5,2028,17,20,202805,2028),('2028-05-18',202820,5,2028,18,20,202805,2028),('2028-05-19',202820,5,2028,19,20,202805,2028),('2028-05-20',202820,5,2028,20,20,202805,2028),('2028-05-21',202821,5,2028,21,21,202805,2028),('2028-05-22',202821,5,2028,22,21,202805,2028),('2028-05-23',202821,5,2028,23,21,202805,2028),('2028-05-24',202821,5,2028,24,21,202805,2028),('2028-05-25',202821,5,2028,25,21,202805,2028),('2028-05-26',202821,5,2028,26,21,202805,2028),('2028-05-27',202821,5,2028,27,21,202805,2028),('2028-05-28',202822,5,2028,28,22,202805,2028),('2028-05-29',202822,5,2028,29,22,202805,2028),('2028-05-30',202822,5,2028,30,22,202805,2028),('2028-05-31',202822,5,2028,31,22,202805,2028),('2028-06-01',202822,6,2028,1,22,202806,2028),('2028-06-02',202822,6,2028,2,22,202806,2028),('2028-06-03',202822,6,2028,3,22,202806,2028),('2028-06-04',202823,6,2028,4,23,202806,2028),('2028-06-05',202823,6,2028,5,23,202806,2028),('2028-06-06',202823,6,2028,6,23,202806,2028),('2028-06-07',202823,6,2028,7,23,202806,2028),('2028-06-08',202823,6,2028,8,23,202806,2028),('2028-06-09',202823,6,2028,9,23,202806,2028),('2028-06-10',202823,6,2028,10,23,202806,2028),('2028-06-11',202824,6,2028,11,24,202806,2028),('2028-06-12',202824,6,2028,12,24,202806,2028),('2028-06-13',202824,6,2028,13,24,202806,2028),('2028-06-14',202824,6,2028,14,24,202806,2028),('2028-06-15',202824,6,2028,15,24,202806,2028),('2028-06-16',202824,6,2028,16,24,202806,2028),('2028-06-17',202824,6,2028,17,24,202806,2028),('2028-06-18',202825,6,2028,18,25,202806,2028),('2028-06-19',202825,6,2028,19,25,202806,2028),('2028-06-20',202825,6,2028,20,25,202806,2028),('2028-06-21',202825,6,2028,21,25,202806,2028),('2028-06-22',202825,6,2028,22,25,202806,2028),('2028-06-23',202825,6,2028,23,25,202806,2028),('2028-06-24',202825,6,2028,24,25,202806,2028),('2028-06-25',202826,6,2028,25,26,202806,2028),('2028-06-26',202826,6,2028,26,26,202806,2028),('2028-06-27',202826,6,2028,27,26,202806,2028),('2028-06-28',202826,6,2028,28,26,202806,2028),('2028-06-29',202826,6,2028,29,26,202806,2028),('2028-06-30',202826,6,2028,30,26,202806,2028),('2028-07-01',202826,7,2028,1,26,202807,2028),('2028-07-02',202827,7,2028,2,27,202807,2028),('2028-07-03',202827,7,2028,3,27,202807,2028),('2028-07-04',202827,7,2028,4,27,202807,2028),('2028-07-05',202827,7,2028,5,27,202807,2028),('2028-07-06',202827,7,2028,6,27,202807,2028),('2028-07-07',202827,7,2028,7,27,202807,2028),('2028-07-08',202827,7,2028,8,27,202807,2028),('2028-07-09',202828,7,2028,9,28,202807,2028),('2028-07-10',202828,7,2028,10,28,202807,2028),('2028-07-11',202828,7,2028,11,28,202807,2028),('2028-07-12',202828,7,2028,12,28,202807,2028),('2028-07-13',202828,7,2028,13,28,202807,2028),('2028-07-14',202828,7,2028,14,28,202807,2028),('2028-07-15',202828,7,2028,15,28,202807,2028),('2028-07-16',202829,7,2028,16,29,202807,2028),('2028-07-17',202829,7,2028,17,29,202807,2028),('2028-07-18',202829,7,2028,18,29,202807,2028),('2028-07-19',202829,7,2028,19,29,202807,2028),('2028-07-20',202829,7,2028,20,29,202807,2028),('2028-07-21',202829,7,2028,21,29,202807,2028),('2028-07-22',202829,7,2028,22,29,202807,2028),('2028-07-23',202830,7,2028,23,30,202807,2028),('2028-07-24',202830,7,2028,24,30,202807,2028),('2028-07-25',202830,7,2028,25,30,202807,2028),('2028-07-26',202830,7,2028,26,30,202807,2028),('2028-07-27',202830,7,2028,27,30,202807,2028),('2028-07-28',202830,7,2028,28,30,202807,2028),('2028-07-29',202830,7,2028,29,30,202807,2028),('2028-07-30',202831,7,2028,30,31,202807,2028),('2028-07-31',202831,7,2028,31,31,202807,2028),('2028-08-01',202831,8,2028,1,31,202808,2028),('2028-08-02',202831,8,2028,2,31,202808,2028),('2028-08-03',202831,8,2028,3,31,202808,2028),('2028-08-04',202831,8,2028,4,31,202808,2028),('2028-08-05',202831,8,2028,5,31,202808,2028),('2028-08-06',202832,8,2028,6,32,202808,2028),('2028-08-07',202832,8,2028,7,32,202808,2028),('2028-08-08',202832,8,2028,8,32,202808,2028),('2028-08-09',202832,8,2028,9,32,202808,2028),('2028-08-10',202832,8,2028,10,32,202808,2028),('2028-08-11',202832,8,2028,11,32,202808,2028),('2028-08-12',202832,8,2028,12,32,202808,2028),('2028-08-13',202833,8,2028,13,33,202808,2028),('2028-08-14',202833,8,2028,14,33,202808,2028),('2028-08-15',202833,8,2028,15,33,202808,2028),('2028-08-16',202833,8,2028,16,33,202808,2028),('2028-08-17',202833,8,2028,17,33,202808,2028),('2028-08-18',202833,8,2028,18,33,202808,2028),('2028-08-19',202833,8,2028,19,33,202808,2028),('2028-08-20',202834,8,2028,20,34,202808,2028),('2028-08-21',202834,8,2028,21,34,202808,2028),('2028-08-22',202834,8,2028,22,34,202808,2028),('2028-08-23',202834,8,2028,23,34,202808,2028),('2028-08-24',202834,8,2028,24,34,202808,2028),('2028-08-25',202834,8,2028,25,34,202808,2028),('2028-08-26',202834,8,2028,26,34,202808,2028),('2028-08-27',202835,8,2028,27,35,202808,2028),('2028-08-28',202835,8,2028,28,35,202808,2028),('2028-08-29',202835,8,2028,29,35,202808,2028),('2028-08-30',202835,8,2028,30,35,202808,2028),('2028-08-31',202835,8,2028,31,35,202808,2028),('2028-09-01',202835,9,2028,1,35,202809,2028),('2028-09-02',202835,9,2028,2,35,202809,2028),('2028-09-03',202836,9,2028,3,36,202809,2028),('2028-09-04',202836,9,2028,4,36,202809,2028),('2028-09-05',202836,9,2028,5,36,202809,2028),('2028-09-06',202836,9,2028,6,36,202809,2028),('2028-09-07',202836,9,2028,7,36,202809,2028),('2028-09-08',202836,9,2028,8,36,202809,2028),('2028-09-09',202836,9,2028,9,36,202809,2028),('2028-09-10',202837,9,2028,10,37,202809,2028),('2028-09-11',202837,9,2028,11,37,202809,2028),('2028-09-12',202837,9,2028,12,37,202809,2028),('2028-09-13',202837,9,2028,13,37,202809,2028),('2028-09-14',202837,9,2028,14,37,202809,2028),('2028-09-15',202837,9,2028,15,37,202809,2028),('2028-09-16',202837,9,2028,16,37,202809,2028),('2028-09-17',202838,9,2028,17,38,202809,2028),('2028-09-18',202838,9,2028,18,38,202809,2028),('2028-09-19',202838,9,2028,19,38,202809,2028),('2028-09-20',202838,9,2028,20,38,202809,2028),('2028-09-21',202838,9,2028,21,38,202809,2028),('2028-09-22',202838,9,2028,22,38,202809,2028),('2028-09-23',202838,9,2028,23,38,202809,2028),('2028-09-24',202839,9,2028,24,39,202809,2028),('2028-09-25',202839,9,2028,25,39,202809,2028),('2028-09-26',202839,9,2028,26,39,202809,2028),('2028-09-27',202839,9,2028,27,39,202809,2028),('2028-09-28',202839,9,2028,28,39,202809,2028),('2028-09-29',202839,9,2028,29,39,202809,2028),('2028-09-30',202839,9,2028,30,39,202809,2028),('2028-10-01',202840,10,2028,1,40,202810,2028),('2028-10-02',202840,10,2028,2,40,202810,2028),('2028-10-03',202840,10,2028,3,40,202810,2028),('2028-10-04',202840,10,2028,4,40,202810,2028),('2028-10-05',202840,10,2028,5,40,202810,2028),('2028-10-06',202840,10,2028,6,40,202810,2028),('2028-10-07',202840,10,2028,7,40,202810,2028),('2028-10-08',202841,10,2028,8,41,202810,2028),('2028-10-09',202841,10,2028,9,41,202810,2028),('2028-10-10',202841,10,2028,10,41,202810,2028),('2028-10-11',202841,10,2028,11,41,202810,2028),('2028-10-12',202841,10,2028,12,41,202810,2028),('2028-10-13',202841,10,2028,13,41,202810,2028),('2028-10-14',202841,10,2028,14,41,202810,2028),('2028-10-15',202842,10,2028,15,42,202810,2028),('2028-10-16',202842,10,2028,16,42,202810,2028),('2028-10-17',202842,10,2028,17,42,202810,2028),('2028-10-18',202842,10,2028,18,42,202810,2028),('2028-10-19',202842,10,2028,19,42,202810,2028),('2028-10-20',202842,10,2028,20,42,202810,2028),('2028-10-21',202842,10,2028,21,42,202810,2028),('2028-10-22',202843,10,2028,22,43,202810,2028),('2028-10-23',202843,10,2028,23,43,202810,2028),('2028-10-24',202843,10,2028,24,43,202810,2028),('2028-10-25',202843,10,2028,25,43,202810,2028),('2028-10-26',202843,10,2028,26,43,202810,2028),('2028-10-27',202843,10,2028,27,43,202810,2028),('2028-10-28',202843,10,2028,28,43,202810,2028),('2028-10-29',202844,10,2028,29,44,202810,2028),('2028-10-30',202844,10,2028,30,44,202810,2028),('2028-10-31',202844,10,2028,31,44,202810,2028),('2028-11-01',202844,11,2028,1,44,202811,2028),('2028-11-02',202844,11,2028,2,44,202811,2028),('2028-11-03',202844,11,2028,3,44,202811,2028),('2028-11-04',202844,11,2028,4,44,202811,2028),('2028-11-05',202845,11,2028,5,45,202811,2028),('2028-11-06',202845,11,2028,6,45,202811,2028),('2028-11-07',202845,11,2028,7,45,202811,2028),('2028-11-08',202845,11,2028,8,45,202811,2028),('2028-11-09',202845,11,2028,9,45,202811,2028),('2028-11-10',202845,11,2028,10,45,202811,2028),('2028-11-11',202845,11,2028,11,45,202811,2028),('2028-11-12',202846,11,2028,12,46,202811,2028),('2028-11-13',202846,11,2028,13,46,202811,2028),('2028-11-14',202846,11,2028,14,46,202811,2028),('2028-11-15',202846,11,2028,15,46,202811,2028),('2028-11-16',202846,11,2028,16,46,202811,2028),('2028-11-17',202846,11,2028,17,46,202811,2028),('2028-11-18',202846,11,2028,18,46,202811,2028),('2028-11-19',202847,11,2028,19,47,202811,2028),('2028-11-20',202847,11,2028,20,47,202811,2028),('2028-11-21',202847,11,2028,21,47,202811,2028),('2028-11-22',202847,11,2028,22,47,202811,2028),('2028-11-23',202847,11,2028,23,47,202811,2028),('2028-11-24',202847,11,2028,24,47,202811,2028),('2028-11-25',202847,11,2028,25,47,202811,2028),('2028-11-26',202848,11,2028,26,48,202811,2028),('2028-11-27',202848,11,2028,27,48,202811,2028),('2028-11-28',202848,11,2028,28,48,202811,2028),('2028-11-29',202848,11,2028,29,48,202811,2028),('2028-11-30',202848,11,2028,30,48,202811,2028),('2028-12-01',202848,12,2028,1,48,202812,2029),('2028-12-02',202848,12,2028,2,48,202812,2029),('2028-12-03',202849,12,2028,3,49,202812,2029),('2028-12-04',202849,12,2028,4,49,202812,2029),('2028-12-05',202849,12,2028,5,49,202812,2029),('2028-12-06',202849,12,2028,6,49,202812,2029),('2028-12-07',202849,12,2028,7,49,202812,2029),('2028-12-08',202849,12,2028,8,49,202812,2029),('2028-12-09',202849,12,2028,9,49,202812,2029),('2028-12-10',202850,12,2028,10,50,202812,2029),('2028-12-11',202850,12,2028,11,50,202812,2029),('2028-12-12',202850,12,2028,12,50,202812,2029),('2028-12-13',202850,12,2028,13,50,202812,2029),('2028-12-14',202850,12,2028,14,50,202812,2029),('2028-12-15',202850,12,2028,15,50,202812,2029),('2028-12-16',202850,12,2028,16,50,202812,2029),('2028-12-17',202851,12,2028,17,51,202812,2029),('2028-12-18',202851,12,2028,18,51,202812,2029),('2028-12-19',202851,12,2028,19,51,202812,2029),('2028-12-20',202851,12,2028,20,51,202812,2029),('2028-12-21',202851,12,2028,21,51,202812,2029),('2028-12-22',202851,12,2028,22,51,202812,2029),('2028-12-23',202851,12,2028,23,51,202812,2029),('2028-12-24',202852,12,2028,24,52,202812,2029),('2028-12-25',202852,12,2028,25,52,202812,2029),('2028-12-26',202852,12,2028,26,52,202812,2029),('2028-12-27',202852,12,2028,27,52,202812,2029),('2028-12-28',202852,12,2028,28,52,202812,2029),('2028-12-29',202852,12,2028,29,52,202812,2029),('2028-12-30',202852,12,2028,30,52,202812,2029),('2028-12-31',202853,12,2028,31,1,202812,2029),('2029-01-01',202901,1,2029,1,1,202901,2029),('2029-01-02',202901,1,2029,2,1,202901,2029),('2029-01-03',202901,1,2029,3,1,202901,2029),('2029-01-04',202901,1,2029,4,1,202901,2029),('2029-01-05',202901,1,2029,5,1,202901,2029),('2029-01-06',202901,1,2029,6,1,202901,2029),('2029-01-07',202902,1,2029,7,2,202901,2029),('2029-01-08',202902,1,2029,8,2,202901,2029),('2029-01-09',202902,1,2029,9,2,202901,2029),('2029-01-10',202902,1,2029,10,2,202901,2029),('2029-01-11',202902,1,2029,11,2,202901,2029),('2029-01-12',202902,1,2029,12,2,202901,2029),('2029-01-13',202902,1,2029,13,2,202901,2029),('2029-01-14',202903,1,2029,14,3,202901,2029),('2029-01-15',202903,1,2029,15,3,202901,2029),('2029-01-16',202903,1,2029,16,3,202901,2029),('2029-01-17',202903,1,2029,17,3,202901,2029),('2029-01-18',202903,1,2029,18,3,202901,2029),('2029-01-19',202903,1,2029,19,3,202901,2029),('2029-01-20',202903,1,2029,20,3,202901,2029),('2029-01-21',202904,1,2029,21,4,202901,2029),('2029-01-22',202904,1,2029,22,4,202901,2029),('2029-01-23',202904,1,2029,23,4,202901,2029),('2029-01-24',202904,1,2029,24,4,202901,2029),('2029-01-25',202904,1,2029,25,4,202901,2029),('2029-01-26',202904,1,2029,26,4,202901,2029),('2029-01-27',202904,1,2029,27,4,202901,2029),('2029-01-28',202905,1,2029,28,5,202901,2029),('2029-01-29',202905,1,2029,29,5,202901,2029),('2029-01-30',202905,1,2029,30,5,202901,2029),('2029-01-31',202905,1,2029,31,5,202901,2029),('2029-02-01',202905,2,2029,1,5,202902,2029),('2029-02-02',202905,2,2029,2,5,202902,2029),('2029-02-03',202905,2,2029,3,5,202902,2029),('2029-02-04',202906,2,2029,4,6,202902,2029),('2029-02-05',202906,2,2029,5,6,202902,2029),('2029-02-06',202906,2,2029,6,6,202902,2029),('2029-02-07',202906,2,2029,7,6,202902,2029),('2029-02-08',202906,2,2029,8,6,202902,2029),('2029-02-09',202906,2,2029,9,6,202902,2029),('2029-02-10',202906,2,2029,10,6,202902,2029),('2029-02-11',202907,2,2029,11,7,202902,2029),('2029-02-12',202907,2,2029,12,7,202902,2029),('2029-02-13',202907,2,2029,13,7,202902,2029),('2029-02-14',202907,2,2029,14,7,202902,2029),('2029-02-15',202907,2,2029,15,7,202902,2029),('2029-02-16',202907,2,2029,16,7,202902,2029),('2029-02-17',202907,2,2029,17,7,202902,2029),('2029-02-18',202908,2,2029,18,8,202902,2029),('2029-02-19',202908,2,2029,19,8,202902,2029),('2029-02-20',202908,2,2029,20,8,202902,2029),('2029-02-21',202908,2,2029,21,8,202902,2029),('2029-02-22',202908,2,2029,22,8,202902,2029),('2029-02-23',202908,2,2029,23,8,202902,2029),('2029-02-24',202908,2,2029,24,8,202902,2029),('2029-02-25',202909,2,2029,25,9,202902,2029),('2029-02-26',202909,2,2029,26,9,202902,2029),('2029-02-27',202909,2,2029,27,9,202902,2029),('2029-02-28',202909,2,2029,28,9,202902,2029),('2029-03-01',202909,3,2029,1,9,202903,2029),('2029-03-02',202909,3,2029,2,9,202903,2029),('2029-03-03',202909,3,2029,3,9,202903,2029),('2029-03-04',202910,3,2029,4,10,202903,2029),('2029-03-05',202910,3,2029,5,10,202903,2029),('2029-03-06',202910,3,2029,6,10,202903,2029),('2029-03-07',202910,3,2029,7,10,202903,2029),('2029-03-08',202910,3,2029,8,10,202903,2029),('2029-03-09',202910,3,2029,9,10,202903,2029),('2029-03-10',202910,3,2029,10,10,202903,2029),('2029-03-11',202911,3,2029,11,11,202903,2029),('2029-03-12',202911,3,2029,12,11,202903,2029),('2029-03-13',202911,3,2029,13,11,202903,2029),('2029-03-14',202911,3,2029,14,11,202903,2029),('2029-03-15',202911,3,2029,15,11,202903,2029),('2029-03-16',202911,3,2029,16,11,202903,2029),('2029-03-17',202911,3,2029,17,11,202903,2029),('2029-03-18',202912,3,2029,18,12,202903,2029),('2029-03-19',202912,3,2029,19,12,202903,2029),('2029-03-20',202912,3,2029,20,12,202903,2029),('2029-03-21',202912,3,2029,21,12,202903,2029),('2029-03-22',202912,3,2029,22,12,202903,2029),('2029-03-23',202912,3,2029,23,12,202903,2029),('2029-03-24',202912,3,2029,24,12,202903,2029),('2029-03-25',202913,3,2029,25,13,202903,2029),('2029-03-26',202913,3,2029,26,13,202903,2029),('2029-03-27',202913,3,2029,27,13,202903,2029),('2029-03-28',202913,3,2029,28,13,202903,2029),('2029-03-29',202913,3,2029,29,13,202903,2029),('2029-03-30',202913,3,2029,30,13,202903,2029),('2029-03-31',202913,3,2029,31,13,202903,2029),('2029-04-01',202914,4,2029,1,14,202904,2029),('2029-04-02',202914,4,2029,2,14,202904,2029),('2029-04-03',202914,4,2029,3,14,202904,2029),('2029-04-04',202914,4,2029,4,14,202904,2029),('2029-04-05',202914,4,2029,5,14,202904,2029),('2029-04-06',202914,4,2029,6,14,202904,2029),('2029-04-07',202914,4,2029,7,14,202904,2029),('2029-04-08',202915,4,2029,8,15,202904,2029),('2029-04-09',202915,4,2029,9,15,202904,2029),('2029-04-10',202915,4,2029,10,15,202904,2029),('2029-04-11',202915,4,2029,11,15,202904,2029),('2029-04-12',202915,4,2029,12,15,202904,2029),('2029-04-13',202915,4,2029,13,15,202904,2029),('2029-04-14',202915,4,2029,14,15,202904,2029),('2029-04-15',202916,4,2029,15,16,202904,2029),('2029-04-16',202916,4,2029,16,16,202904,2029),('2029-04-17',202916,4,2029,17,16,202904,2029),('2029-04-18',202916,4,2029,18,16,202904,2029),('2029-04-19',202916,4,2029,19,16,202904,2029),('2029-04-20',202916,4,2029,20,16,202904,2029),('2029-04-21',202916,4,2029,21,16,202904,2029),('2029-04-22',202917,4,2029,22,17,202904,2029),('2029-04-23',202917,4,2029,23,17,202904,2029),('2029-04-24',202917,4,2029,24,17,202904,2029),('2029-04-25',202917,4,2029,25,17,202904,2029),('2029-04-26',202917,4,2029,26,17,202904,2029),('2029-04-27',202917,4,2029,27,17,202904,2029),('2029-04-28',202917,4,2029,28,17,202904,2029),('2029-04-29',202918,4,2029,29,18,202904,2029),('2029-04-30',202918,4,2029,30,18,202904,2029),('2029-05-01',202918,5,2029,1,18,202905,2029),('2029-05-02',202918,5,2029,2,18,202905,2029),('2029-05-03',202918,5,2029,3,18,202905,2029),('2029-05-04',202918,5,2029,4,18,202905,2029),('2029-05-05',202918,5,2029,5,18,202905,2029),('2029-05-06',202919,5,2029,6,19,202905,2029),('2029-05-07',202919,5,2029,7,19,202905,2029),('2029-05-08',202919,5,2029,8,19,202905,2029),('2029-05-09',202919,5,2029,9,19,202905,2029),('2029-05-10',202919,5,2029,10,19,202905,2029),('2029-05-11',202919,5,2029,11,19,202905,2029),('2029-05-12',202919,5,2029,12,19,202905,2029),('2029-05-13',202920,5,2029,13,20,202905,2029),('2029-05-14',202920,5,2029,14,20,202905,2029),('2029-05-15',202920,5,2029,15,20,202905,2029),('2029-05-16',202920,5,2029,16,20,202905,2029),('2029-05-17',202920,5,2029,17,20,202905,2029),('2029-05-18',202920,5,2029,18,20,202905,2029),('2029-05-19',202920,5,2029,19,20,202905,2029),('2029-05-20',202921,5,2029,20,21,202905,2029),('2029-05-21',202921,5,2029,21,21,202905,2029),('2029-05-22',202921,5,2029,22,21,202905,2029),('2029-05-23',202921,5,2029,23,21,202905,2029),('2029-05-24',202921,5,2029,24,21,202905,2029),('2029-05-25',202921,5,2029,25,21,202905,2029),('2029-05-26',202921,5,2029,26,21,202905,2029),('2029-05-27',202922,5,2029,27,22,202905,2029),('2029-05-28',202922,5,2029,28,22,202905,2029),('2029-05-29',202922,5,2029,29,22,202905,2029),('2029-05-30',202922,5,2029,30,22,202905,2029),('2029-05-31',202922,5,2029,31,22,202905,2029),('2029-06-01',202922,6,2029,1,22,202906,2029),('2029-06-02',202922,6,2029,2,22,202906,2029),('2029-06-03',202923,6,2029,3,23,202906,2029),('2029-06-04',202923,6,2029,4,23,202906,2029),('2029-06-05',202923,6,2029,5,23,202906,2029),('2029-06-06',202923,6,2029,6,23,202906,2029),('2029-06-07',202923,6,2029,7,23,202906,2029),('2029-06-08',202923,6,2029,8,23,202906,2029),('2029-06-09',202923,6,2029,9,23,202906,2029),('2029-06-10',202924,6,2029,10,24,202906,2029),('2029-06-11',202924,6,2029,11,24,202906,2029),('2029-06-12',202924,6,2029,12,24,202906,2029),('2029-06-13',202924,6,2029,13,24,202906,2029),('2029-06-14',202924,6,2029,14,24,202906,2029),('2029-06-15',202924,6,2029,15,24,202906,2029),('2029-06-16',202924,6,2029,16,24,202906,2029),('2029-06-17',202925,6,2029,17,25,202906,2029),('2029-06-18',202925,6,2029,18,25,202906,2029),('2029-06-19',202925,6,2029,19,25,202906,2029),('2029-06-20',202925,6,2029,20,25,202906,2029),('2029-06-21',202925,6,2029,21,25,202906,2029),('2029-06-22',202925,6,2029,22,25,202906,2029),('2029-06-23',202925,6,2029,23,25,202906,2029),('2029-06-24',202926,6,2029,24,26,202906,2029),('2029-06-25',202926,6,2029,25,26,202906,2029),('2029-06-26',202926,6,2029,26,26,202906,2029),('2029-06-27',202926,6,2029,27,26,202906,2029),('2029-06-28',202926,6,2029,28,26,202906,2029),('2029-06-29',202926,6,2029,29,26,202906,2029),('2029-06-30',202926,6,2029,30,26,202906,2029),('2029-07-01',202927,7,2029,1,27,202907,2029),('2029-07-02',202927,7,2029,2,27,202907,2029),('2029-07-03',202927,7,2029,3,27,202907,2029),('2029-07-04',202927,7,2029,4,27,202907,2029),('2029-07-05',202927,7,2029,5,27,202907,2029),('2029-07-06',202927,7,2029,6,27,202907,2029),('2029-07-07',202927,7,2029,7,27,202907,2029),('2029-07-08',202928,7,2029,8,28,202907,2029),('2029-07-09',202928,7,2029,9,28,202907,2029),('2029-07-10',202928,7,2029,10,28,202907,2029),('2029-07-11',202928,7,2029,11,28,202907,2029),('2029-07-12',202928,7,2029,12,28,202907,2029),('2029-07-13',202928,7,2029,13,28,202907,2029),('2029-07-14',202928,7,2029,14,28,202907,2029),('2029-07-15',202929,7,2029,15,29,202907,2029),('2029-07-16',202929,7,2029,16,29,202907,2029),('2029-07-17',202929,7,2029,17,29,202907,2029),('2029-07-18',202929,7,2029,18,29,202907,2029),('2029-07-19',202929,7,2029,19,29,202907,2029),('2029-07-20',202929,7,2029,20,29,202907,2029),('2029-07-21',202929,7,2029,21,29,202907,2029),('2029-07-22',202930,7,2029,22,30,202907,2029),('2029-07-23',202930,7,2029,23,30,202907,2029),('2029-07-24',202930,7,2029,24,30,202907,2029),('2029-07-25',202930,7,2029,25,30,202907,2029),('2029-07-26',202930,7,2029,26,30,202907,2029),('2029-07-27',202930,7,2029,27,30,202907,2029),('2029-07-28',202930,7,2029,28,30,202907,2029),('2029-07-29',202931,7,2029,29,31,202907,2029),('2029-07-30',202931,7,2029,30,31,202907,2029),('2029-07-31',202931,7,2029,31,31,202907,2029),('2029-08-01',202931,8,2029,1,31,202908,2029),('2029-08-02',202931,8,2029,2,31,202908,2029),('2029-08-03',202931,8,2029,3,31,202908,2029),('2029-08-04',202931,8,2029,4,31,202908,2029),('2029-08-05',202932,8,2029,5,32,202908,2029),('2029-08-06',202932,8,2029,6,32,202908,2029),('2029-08-07',202932,8,2029,7,32,202908,2029),('2029-08-08',202932,8,2029,8,32,202908,2029),('2029-08-09',202932,8,2029,9,32,202908,2029),('2029-08-10',202932,8,2029,10,32,202908,2029),('2029-08-11',202932,8,2029,11,32,202908,2029),('2029-08-12',202933,8,2029,12,33,202908,2029),('2029-08-13',202933,8,2029,13,33,202908,2029),('2029-08-14',202933,8,2029,14,33,202908,2029),('2029-08-15',202933,8,2029,15,33,202908,2029),('2029-08-16',202933,8,2029,16,33,202908,2029),('2029-08-17',202933,8,2029,17,33,202908,2029),('2029-08-18',202933,8,2029,18,33,202908,2029),('2029-08-19',202934,8,2029,19,34,202908,2029),('2029-08-20',202934,8,2029,20,34,202908,2029),('2029-08-21',202934,8,2029,21,34,202908,2029),('2029-08-22',202934,8,2029,22,34,202908,2029),('2029-08-23',202934,8,2029,23,34,202908,2029),('2029-08-24',202934,8,2029,24,34,202908,2029),('2029-08-25',202934,8,2029,25,34,202908,2029),('2029-08-26',202935,8,2029,26,35,202908,2029),('2029-08-27',202935,8,2029,27,35,202908,2029),('2029-08-28',202935,8,2029,28,35,202908,2029),('2029-08-29',202935,8,2029,29,35,202908,2029),('2029-08-30',202935,8,2029,30,35,202908,2029),('2029-08-31',202935,8,2029,31,35,202908,2029),('2029-09-01',202935,9,2029,1,35,202909,2029),('2029-09-02',202936,9,2029,2,36,202909,2029),('2029-09-03',202936,9,2029,3,36,202909,2029),('2029-09-04',202936,9,2029,4,36,202909,2029),('2029-09-05',202936,9,2029,5,36,202909,2029),('2029-09-06',202936,9,2029,6,36,202909,2029),('2029-09-07',202936,9,2029,7,36,202909,2029),('2029-09-08',202936,9,2029,8,36,202909,2029),('2029-09-09',202937,9,2029,9,37,202909,2029),('2029-09-10',202937,9,2029,10,37,202909,2029),('2029-09-11',202937,9,2029,11,37,202909,2029),('2029-09-12',202937,9,2029,12,37,202909,2029),('2029-09-13',202937,9,2029,13,37,202909,2029),('2029-09-14',202937,9,2029,14,37,202909,2029),('2029-09-15',202937,9,2029,15,37,202909,2029),('2029-09-16',202938,9,2029,16,38,202909,2029),('2029-09-17',202938,9,2029,17,38,202909,2029),('2029-09-18',202938,9,2029,18,38,202909,2029),('2029-09-19',202938,9,2029,19,38,202909,2029),('2029-09-20',202938,9,2029,20,38,202909,2029),('2029-09-21',202938,9,2029,21,38,202909,2029),('2029-09-22',202938,9,2029,22,38,202909,2029),('2029-09-23',202939,9,2029,23,39,202909,2029),('2029-09-24',202939,9,2029,24,39,202909,2029),('2029-09-25',202939,9,2029,25,39,202909,2029),('2029-09-26',202939,9,2029,26,39,202909,2029),('2029-09-27',202939,9,2029,27,39,202909,2029),('2029-09-28',202939,9,2029,28,39,202909,2029),('2029-09-29',202939,9,2029,29,39,202909,2029),('2029-09-30',202940,9,2029,30,40,202909,2029),('2029-10-01',202940,10,2029,1,40,202910,2029),('2029-10-02',202940,10,2029,2,40,202910,2029),('2029-10-03',202940,10,2029,3,40,202910,2029),('2029-10-04',202940,10,2029,4,40,202910,2029),('2029-10-05',202940,10,2029,5,40,202910,2029),('2029-10-06',202940,10,2029,6,40,202910,2029),('2029-10-07',202941,10,2029,7,41,202910,2029),('2029-10-08',202941,10,2029,8,41,202910,2029),('2029-10-09',202941,10,2029,9,41,202910,2029),('2029-10-10',202941,10,2029,10,41,202910,2029),('2029-10-11',202941,10,2029,11,41,202910,2029),('2029-10-12',202941,10,2029,12,41,202910,2029),('2029-10-13',202941,10,2029,13,41,202910,2029),('2029-10-14',202942,10,2029,14,42,202910,2029),('2029-10-15',202942,10,2029,15,42,202910,2029),('2029-10-16',202942,10,2029,16,42,202910,2029),('2029-10-17',202942,10,2029,17,42,202910,2029),('2029-10-18',202942,10,2029,18,42,202910,2029),('2029-10-19',202942,10,2029,19,42,202910,2029),('2029-10-20',202942,10,2029,20,42,202910,2029),('2029-10-21',202943,10,2029,21,43,202910,2029),('2029-10-22',202943,10,2029,22,43,202910,2029),('2029-10-23',202943,10,2029,23,43,202910,2029),('2029-10-24',202943,10,2029,24,43,202910,2029),('2029-10-25',202943,10,2029,25,43,202910,2029),('2029-10-26',202943,10,2029,26,43,202910,2029),('2029-10-27',202943,10,2029,27,43,202910,2029),('2029-10-28',202944,10,2029,28,44,202910,2029),('2029-10-29',202944,10,2029,29,44,202910,2029),('2029-10-30',202944,10,2029,30,44,202910,2029),('2029-10-31',202944,10,2029,31,44,202910,2029),('2029-11-01',202944,11,2029,1,44,202911,2029),('2029-11-02',202944,11,2029,2,44,202911,2029),('2029-11-03',202944,11,2029,3,44,202911,2029),('2029-11-04',202945,11,2029,4,45,202911,2029),('2029-11-05',202945,11,2029,5,45,202911,2029),('2029-11-06',202945,11,2029,6,45,202911,2029),('2029-11-07',202945,11,2029,7,45,202911,2029),('2029-11-08',202945,11,2029,8,45,202911,2029),('2029-11-09',202945,11,2029,9,45,202911,2029),('2029-11-10',202945,11,2029,10,45,202911,2029),('2029-11-11',202946,11,2029,11,46,202911,2029),('2029-11-12',202946,11,2029,12,46,202911,2029),('2029-11-13',202946,11,2029,13,46,202911,2029),('2029-11-14',202946,11,2029,14,46,202911,2029),('2029-11-15',202946,11,2029,15,46,202911,2029),('2029-11-16',202946,11,2029,16,46,202911,2029),('2029-11-17',202946,11,2029,17,46,202911,2029),('2029-11-18',202947,11,2029,18,47,202911,2029),('2029-11-19',202947,11,2029,19,47,202911,2029),('2029-11-20',202947,11,2029,20,47,202911,2029),('2029-11-21',202947,11,2029,21,47,202911,2029),('2029-11-22',202947,11,2029,22,47,202911,2029),('2029-11-23',202947,11,2029,23,47,202911,2029),('2029-11-24',202947,11,2029,24,47,202911,2029),('2029-11-25',202948,11,2029,25,48,202911,2029),('2029-11-26',202948,11,2029,26,48,202911,2029),('2029-11-27',202948,11,2029,27,48,202911,2029),('2029-11-28',202948,11,2029,28,48,202911,2029),('2029-11-29',202948,11,2029,29,48,202911,2029),('2029-11-30',202948,11,2029,30,48,202911,2029),('2029-12-01',202948,12,2029,1,48,202912,2030),('2029-12-02',202949,12,2029,2,49,202912,2030),('2029-12-03',202949,12,2029,3,49,202912,2030),('2029-12-04',202949,12,2029,4,49,202912,2030),('2029-12-05',202949,12,2029,5,49,202912,2030),('2029-12-06',202949,12,2029,6,49,202912,2030),('2029-12-07',202949,12,2029,7,49,202912,2030),('2029-12-08',202949,12,2029,8,49,202912,2030),('2029-12-09',202950,12,2029,9,50,202912,2030),('2029-12-10',202950,12,2029,10,50,202912,2030),('2029-12-11',202950,12,2029,11,50,202912,2030),('2029-12-12',202950,12,2029,12,50,202912,2030),('2029-12-13',202950,12,2029,13,50,202912,2030),('2029-12-14',202950,12,2029,14,50,202912,2030),('2029-12-15',202950,12,2029,15,50,202912,2030),('2029-12-16',202951,12,2029,16,51,202912,2030),('2029-12-17',202951,12,2029,17,51,202912,2030),('2029-12-18',202951,12,2029,18,51,202912,2030),('2029-12-19',202951,12,2029,19,51,202912,2030),('2029-12-20',202951,12,2029,20,51,202912,2030),('2029-12-21',202951,12,2029,21,51,202912,2030),('2029-12-22',202951,12,2029,22,51,202912,2030),('2029-12-23',202952,12,2029,23,52,202912,2030),('2029-12-24',202952,12,2029,24,52,202912,2030),('2029-12-25',202952,12,2029,25,52,202912,2030),('2029-12-26',202952,12,2029,26,52,202912,2030),('2029-12-27',202952,12,2029,27,52,202912,2030),('2029-12-28',202952,12,2029,28,52,202912,2030),('2029-12-29',202952,12,2029,29,52,202912,2030),('2029-12-30',202953,12,2029,30,1,202912,2030),('2029-12-31',202901,12,2029,31,1,202912,2030),('2030-01-01',203001,1,2030,1,1,203001,2030),('2030-01-02',203001,1,2030,2,1,203001,2030),('2030-01-03',203001,1,2030,3,1,203001,2030),('2030-01-04',203001,1,2030,4,1,203001,2030),('2030-01-05',203001,1,2030,5,1,203001,2030),('2030-01-06',203002,1,2030,6,2,203001,2030),('2030-01-07',203002,1,2030,7,2,203001,2030),('2030-01-08',203002,1,2030,8,2,203001,2030),('2030-01-09',203002,1,2030,9,2,203001,2030),('2030-01-10',203002,1,2030,10,2,203001,2030),('2030-01-11',203002,1,2030,11,2,203001,2030),('2030-01-12',203002,1,2030,12,2,203001,2030),('2030-01-13',203003,1,2030,13,3,203001,2030),('2030-01-14',203003,1,2030,14,3,203001,2030),('2030-01-15',203003,1,2030,15,3,203001,2030),('2030-01-16',203003,1,2030,16,3,203001,2030),('2030-01-17',203003,1,2030,17,3,203001,2030),('2030-01-18',203003,1,2030,18,3,203001,2030),('2030-01-19',203003,1,2030,19,3,203001,2030),('2030-01-20',203004,1,2030,20,4,203001,2030),('2030-01-21',203004,1,2030,21,4,203001,2030),('2030-01-22',203004,1,2030,22,4,203001,2030),('2030-01-23',203004,1,2030,23,4,203001,2030),('2030-01-24',203004,1,2030,24,4,203001,2030),('2030-01-25',203004,1,2030,25,4,203001,2030),('2030-01-26',203004,1,2030,26,4,203001,2030),('2030-01-27',203005,1,2030,27,5,203001,2030),('2030-01-28',203005,1,2030,28,5,203001,2030),('2030-01-29',203005,1,2030,29,5,203001,2030),('2030-01-30',203005,1,2030,30,5,203001,2030),('2030-01-31',203005,1,2030,31,5,203001,2030),('2030-02-01',203005,2,2030,1,5,203002,2030),('2030-02-02',203005,2,2030,2,5,203002,2030),('2030-02-03',203006,2,2030,3,6,203002,2030),('2030-02-04',203006,2,2030,4,6,203002,2030),('2030-02-05',203006,2,2030,5,6,203002,2030),('2030-02-06',203006,2,2030,6,6,203002,2030),('2030-02-07',203006,2,2030,7,6,203002,2030),('2030-02-08',203006,2,2030,8,6,203002,2030),('2030-02-09',203006,2,2030,9,6,203002,2030),('2030-02-10',203007,2,2030,10,7,203002,2030),('2030-02-11',203007,2,2030,11,7,203002,2030),('2030-02-12',203007,2,2030,12,7,203002,2030),('2030-02-13',203007,2,2030,13,7,203002,2030),('2030-02-14',203007,2,2030,14,7,203002,2030),('2030-02-15',203007,2,2030,15,7,203002,2030),('2030-02-16',203007,2,2030,16,7,203002,2030),('2030-02-17',203008,2,2030,17,8,203002,2030),('2030-02-18',203008,2,2030,18,8,203002,2030),('2030-02-19',203008,2,2030,19,8,203002,2030),('2030-02-20',203008,2,2030,20,8,203002,2030),('2030-02-21',203008,2,2030,21,8,203002,2030),('2030-02-22',203008,2,2030,22,8,203002,2030),('2030-02-23',203008,2,2030,23,8,203002,2030),('2030-02-24',203009,2,2030,24,9,203002,2030),('2030-02-25',203009,2,2030,25,9,203002,2030),('2030-02-26',203009,2,2030,26,9,203002,2030),('2030-02-27',203009,2,2030,27,9,203002,2030),('2030-02-28',203009,2,2030,28,9,203002,2030),('2030-03-01',203009,3,2030,1,9,203003,2030),('2030-03-02',203009,3,2030,2,9,203003,2030),('2030-03-03',203010,3,2030,3,10,203003,2030),('2030-03-04',203010,3,2030,4,10,203003,2030),('2030-03-05',203010,3,2030,5,10,203003,2030),('2030-03-06',203010,3,2030,6,10,203003,2030),('2030-03-07',203010,3,2030,7,10,203003,2030),('2030-03-08',203010,3,2030,8,10,203003,2030),('2030-03-09',203010,3,2030,9,10,203003,2030),('2030-03-10',203011,3,2030,10,11,203003,2030),('2030-03-11',203011,3,2030,11,11,203003,2030),('2030-03-12',203011,3,2030,12,11,203003,2030),('2030-03-13',203011,3,2030,13,11,203003,2030),('2030-03-14',203011,3,2030,14,11,203003,2030),('2030-03-15',203011,3,2030,15,11,203003,2030),('2030-03-16',203011,3,2030,16,11,203003,2030),('2030-03-17',203012,3,2030,17,12,203003,2030),('2030-03-18',203012,3,2030,18,12,203003,2030),('2030-03-19',203012,3,2030,19,12,203003,2030),('2030-03-20',203012,3,2030,20,12,203003,2030),('2030-03-21',203012,3,2030,21,12,203003,2030),('2030-03-22',203012,3,2030,22,12,203003,2030),('2030-03-23',203012,3,2030,23,12,203003,2030),('2030-03-24',203013,3,2030,24,13,203003,2030),('2030-03-25',203013,3,2030,25,13,203003,2030),('2030-03-26',203013,3,2030,26,13,203003,2030),('2030-03-27',203013,3,2030,27,13,203003,2030),('2030-03-28',203013,3,2030,28,13,203003,2030),('2030-03-29',203013,3,2030,29,13,203003,2030),('2030-03-30',203013,3,2030,30,13,203003,2030),('2030-03-31',203014,3,2030,31,14,203003,2030),('2030-04-01',203014,4,2030,1,14,203004,2030),('2030-04-02',203014,4,2030,2,14,203004,2030),('2030-04-03',203014,4,2030,3,14,203004,2030),('2030-04-04',203014,4,2030,4,14,203004,2030),('2030-04-05',203014,4,2030,5,14,203004,2030),('2030-04-06',203014,4,2030,6,14,203004,2030),('2030-04-07',203015,4,2030,7,15,203004,2030),('2030-04-08',203015,4,2030,8,15,203004,2030),('2030-04-09',203015,4,2030,9,15,203004,2030),('2030-04-10',203015,4,2030,10,15,203004,2030),('2030-04-11',203015,4,2030,11,15,203004,2030),('2030-04-12',203015,4,2030,12,15,203004,2030),('2030-04-13',203015,4,2030,13,15,203004,2030),('2030-04-14',203016,4,2030,14,16,203004,2030),('2030-04-15',203016,4,2030,15,16,203004,2030),('2030-04-16',203016,4,2030,16,16,203004,2030),('2030-04-17',203016,4,2030,17,16,203004,2030),('2030-04-18',203016,4,2030,18,16,203004,2030),('2030-04-19',203016,4,2030,19,16,203004,2030),('2030-04-20',203016,4,2030,20,16,203004,2030),('2030-04-21',203017,4,2030,21,17,203004,2030),('2030-04-22',203017,4,2030,22,17,203004,2030),('2030-04-23',203017,4,2030,23,17,203004,2030),('2030-04-24',203017,4,2030,24,17,203004,2030),('2030-04-25',203017,4,2030,25,17,203004,2030),('2030-04-26',203017,4,2030,26,17,203004,2030),('2030-04-27',203017,4,2030,27,17,203004,2030),('2030-04-28',203018,4,2030,28,18,203004,2030),('2030-04-29',203018,4,2030,29,18,203004,2030),('2030-04-30',203018,4,2030,30,18,203004,2030),('2030-05-01',203018,5,2030,1,18,203005,2030),('2030-05-02',203018,5,2030,2,18,203005,2030),('2030-05-03',203018,5,2030,3,18,203005,2030),('2030-05-04',203018,5,2030,4,18,203005,2030),('2030-05-05',203019,5,2030,5,19,203005,2030),('2030-05-06',203019,5,2030,6,19,203005,2030),('2030-05-07',203019,5,2030,7,19,203005,2030),('2030-05-08',203019,5,2030,8,19,203005,2030),('2030-05-09',203019,5,2030,9,19,203005,2030),('2030-05-10',203019,5,2030,10,19,203005,2030),('2030-05-11',203019,5,2030,11,19,203005,2030),('2030-05-12',203020,5,2030,12,20,203005,2030),('2030-05-13',203020,5,2030,13,20,203005,2030),('2030-05-14',203020,5,2030,14,20,203005,2030),('2030-05-15',203020,5,2030,15,20,203005,2030),('2030-05-16',203020,5,2030,16,20,203005,2030),('2030-05-17',203020,5,2030,17,20,203005,2030),('2030-05-18',203020,5,2030,18,20,203005,2030),('2030-05-19',203021,5,2030,19,21,203005,2030),('2030-05-20',203021,5,2030,20,21,203005,2030),('2030-05-21',203021,5,2030,21,21,203005,2030),('2030-05-22',203021,5,2030,22,21,203005,2030),('2030-05-23',203021,5,2030,23,21,203005,2030),('2030-05-24',203021,5,2030,24,21,203005,2030),('2030-05-25',203021,5,2030,25,21,203005,2030),('2030-05-26',203022,5,2030,26,22,203005,2030),('2030-05-27',203022,5,2030,27,22,203005,2030),('2030-05-28',203022,5,2030,28,22,203005,2030),('2030-05-29',203022,5,2030,29,22,203005,2030),('2030-05-30',203022,5,2030,30,22,203005,2030),('2030-05-31',203022,5,2030,31,22,203005,2030),('2030-06-01',203022,6,2030,1,22,203006,2030),('2030-06-02',203023,6,2030,2,23,203006,2030),('2030-06-03',203023,6,2030,3,23,203006,2030),('2030-06-04',203023,6,2030,4,23,203006,2030),('2030-06-05',203023,6,2030,5,23,203006,2030),('2030-06-06',203023,6,2030,6,23,203006,2030),('2030-06-07',203023,6,2030,7,23,203006,2030),('2030-06-08',203023,6,2030,8,23,203006,2030),('2030-06-09',203024,6,2030,9,24,203006,2030),('2030-06-10',203024,6,2030,10,24,203006,2030),('2030-06-11',203024,6,2030,11,24,203006,2030),('2030-06-12',203024,6,2030,12,24,203006,2030),('2030-06-13',203024,6,2030,13,24,203006,2030),('2030-06-14',203024,6,2030,14,24,203006,2030),('2030-06-15',203024,6,2030,15,24,203006,2030),('2030-06-16',203025,6,2030,16,25,203006,2030),('2030-06-17',203025,6,2030,17,25,203006,2030),('2030-06-18',203025,6,2030,18,25,203006,2030),('2030-06-19',203025,6,2030,19,25,203006,2030),('2030-06-20',203025,6,2030,20,25,203006,2030),('2030-06-21',203025,6,2030,21,25,203006,2030),('2030-06-22',203025,6,2030,22,25,203006,2030),('2030-06-23',203026,6,2030,23,26,203006,2030),('2030-06-24',203026,6,2030,24,26,203006,2030),('2030-06-25',203026,6,2030,25,26,203006,2030),('2030-06-26',203026,6,2030,26,26,203006,2030),('2030-06-27',203026,6,2030,27,26,203006,2030),('2030-06-28',203026,6,2030,28,26,203006,2030),('2030-06-29',203026,6,2030,29,26,203006,2030),('2030-06-30',203027,6,2030,30,27,203006,2030),('2030-07-01',203027,7,2030,1,27,203007,2030),('2030-07-02',203027,7,2030,2,27,203007,2030),('2030-07-03',203027,7,2030,3,27,203007,2030),('2030-07-04',203027,7,2030,4,27,203007,2030),('2030-07-05',203027,7,2030,5,27,203007,2030),('2030-07-06',203027,7,2030,6,27,203007,2030),('2030-07-07',203028,7,2030,7,28,203007,2030),('2030-07-08',203028,7,2030,8,28,203007,2030),('2030-07-09',203028,7,2030,9,28,203007,2030),('2030-07-10',203028,7,2030,10,28,203007,2030),('2030-07-11',203028,7,2030,11,28,203007,2030),('2030-07-12',203028,7,2030,12,28,203007,2030),('2030-07-13',203028,7,2030,13,28,203007,2030),('2030-07-14',203029,7,2030,14,29,203007,2030),('2030-07-15',203029,7,2030,15,29,203007,2030),('2030-07-16',203029,7,2030,16,29,203007,2030),('2030-07-17',203029,7,2030,17,29,203007,2030),('2030-07-18',203029,7,2030,18,29,203007,2030),('2030-07-19',203029,7,2030,19,29,203007,2030),('2030-07-20',203029,7,2030,20,29,203007,2030),('2030-07-21',203030,7,2030,21,30,203007,2030),('2030-07-22',203030,7,2030,22,30,203007,2030),('2030-07-23',203030,7,2030,23,30,203007,2030),('2030-07-24',203030,7,2030,24,30,203007,2030),('2030-07-25',203030,7,2030,25,30,203007,2030),('2030-07-26',203030,7,2030,26,30,203007,2030),('2030-07-27',203030,7,2030,27,30,203007,2030),('2030-07-28',203031,7,2030,28,31,203007,2030),('2030-07-29',203031,7,2030,29,31,203007,2030),('2030-07-30',203031,7,2030,30,31,203007,2030),('2030-07-31',203031,7,2030,31,31,203007,2030),('2030-08-01',203031,8,2030,1,31,203008,2030),('2030-08-02',203031,8,2030,2,31,203008,2030),('2030-08-03',203031,8,2030,3,31,203008,2030),('2030-08-04',203032,8,2030,4,32,203008,2030),('2030-08-05',203032,8,2030,5,32,203008,2030),('2030-08-06',203032,8,2030,6,32,203008,2030),('2030-08-07',203032,8,2030,7,32,203008,2030),('2030-08-08',203032,8,2030,8,32,203008,2030),('2030-08-09',203032,8,2030,9,32,203008,2030),('2030-08-10',203032,8,2030,10,32,203008,2030),('2030-08-11',203033,8,2030,11,33,203008,2030),('2030-08-12',203033,8,2030,12,33,203008,2030),('2030-08-13',203033,8,2030,13,33,203008,2030),('2030-08-14',203033,8,2030,14,33,203008,2030),('2030-08-15',203033,8,2030,15,33,203008,2030),('2030-08-16',203033,8,2030,16,33,203008,2030),('2030-08-17',203033,8,2030,17,33,203008,2030),('2030-08-18',203034,8,2030,18,34,203008,2030),('2030-08-19',203034,8,2030,19,34,203008,2030),('2030-08-20',203034,8,2030,20,34,203008,2030),('2030-08-21',203034,8,2030,21,34,203008,2030),('2030-08-22',203034,8,2030,22,34,203008,2030),('2030-08-23',203034,8,2030,23,34,203008,2030),('2030-08-24',203034,8,2030,24,34,203008,2030),('2030-08-25',203035,8,2030,25,35,203008,2030),('2030-08-26',203035,8,2030,26,35,203008,2030),('2030-08-27',203035,8,2030,27,35,203008,2030),('2030-08-28',203035,8,2030,28,35,203008,2030),('2030-08-29',203035,8,2030,29,35,203008,2030),('2030-08-30',203035,8,2030,30,35,203008,2030),('2030-08-31',203035,8,2030,31,35,203008,2030),('2030-09-01',203036,9,2030,1,36,203009,2030),('2030-09-02',203036,9,2030,2,36,203009,2030),('2030-09-03',203036,9,2030,3,36,203009,2030),('2030-09-04',203036,9,2030,4,36,203009,2030),('2030-09-05',203036,9,2030,5,36,203009,2030),('2030-09-06',203036,9,2030,6,36,203009,2030),('2030-09-07',203036,9,2030,7,36,203009,2030),('2030-09-08',203037,9,2030,8,37,203009,2030),('2030-09-09',203037,9,2030,9,37,203009,2030),('2030-09-10',203037,9,2030,10,37,203009,2030),('2030-09-11',203037,9,2030,11,37,203009,2030),('2030-09-12',203037,9,2030,12,37,203009,2030),('2030-09-13',203037,9,2030,13,37,203009,2030),('2030-09-14',203037,9,2030,14,37,203009,2030),('2030-09-15',203038,9,2030,15,38,203009,2030),('2030-09-16',203038,9,2030,16,38,203009,2030),('2030-09-17',203038,9,2030,17,38,203009,2030),('2030-09-18',203038,9,2030,18,38,203009,2030),('2030-09-19',203038,9,2030,19,38,203009,2030),('2030-09-20',203038,9,2030,20,38,203009,2030),('2030-09-21',203038,9,2030,21,38,203009,2030),('2030-09-22',203039,9,2030,22,39,203009,2030),('2030-09-23',203039,9,2030,23,39,203009,2030),('2030-09-24',203039,9,2030,24,39,203009,2030),('2030-09-25',203039,9,2030,25,39,203009,2030),('2030-09-26',203039,9,2030,26,39,203009,2030),('2030-09-27',203039,9,2030,27,39,203009,2030),('2030-09-28',203039,9,2030,28,39,203009,2030),('2030-09-29',203040,9,2030,29,40,203009,2030),('2030-09-30',203040,9,2030,30,40,203009,2030),('2030-10-01',203040,10,2030,1,40,203010,2030),('2030-10-02',203040,10,2030,2,40,203010,2030),('2030-10-03',203040,10,2030,3,40,203010,2030),('2030-10-04',203040,10,2030,4,40,203010,2030),('2030-10-05',203040,10,2030,5,40,203010,2030),('2030-10-06',203041,10,2030,6,41,203010,2030),('2030-10-07',203041,10,2030,7,41,203010,2030),('2030-10-08',203041,10,2030,8,41,203010,2030),('2030-10-09',203041,10,2030,9,41,203010,2030),('2030-10-10',203041,10,2030,10,41,203010,2030),('2030-10-11',203041,10,2030,11,41,203010,2030),('2030-10-12',203041,10,2030,12,41,203010,2030),('2030-10-13',203042,10,2030,13,42,203010,2030),('2030-10-14',203042,10,2030,14,42,203010,2030),('2030-10-15',203042,10,2030,15,42,203010,2030),('2030-10-16',203042,10,2030,16,42,203010,2030),('2030-10-17',203042,10,2030,17,42,203010,2030),('2030-10-18',203042,10,2030,18,42,203010,2030),('2030-10-19',203042,10,2030,19,42,203010,2030),('2030-10-20',203043,10,2030,20,43,203010,2030),('2030-10-21',203043,10,2030,21,43,203010,2030),('2030-10-22',203043,10,2030,22,43,203010,2030),('2030-10-23',203043,10,2030,23,43,203010,2030),('2030-10-24',203043,10,2030,24,43,203010,2030),('2030-10-25',203043,10,2030,25,43,203010,2030),('2030-10-26',203043,10,2030,26,43,203010,2030),('2030-10-27',203044,10,2030,27,44,203010,2030),('2030-10-28',203044,10,2030,28,44,203010,2030),('2030-10-29',203044,10,2030,29,44,203010,2030),('2030-10-30',203044,10,2030,30,44,203010,2030),('2030-10-31',203044,10,2030,31,44,203010,2030),('2030-11-01',203044,11,2030,1,44,203011,2030),('2030-11-02',203044,11,2030,2,44,203011,2030),('2030-11-03',203045,11,2030,3,45,203011,2030),('2030-11-04',203045,11,2030,4,45,203011,2030),('2030-11-05',203045,11,2030,5,45,203011,2030),('2030-11-06',203045,11,2030,6,45,203011,2030),('2030-11-07',203045,11,2030,7,45,203011,2030),('2030-11-08',203045,11,2030,8,45,203011,2030),('2030-11-09',203045,11,2030,9,45,203011,2030),('2030-11-10',203046,11,2030,10,46,203011,2030),('2030-11-11',203046,11,2030,11,46,203011,2030),('2030-11-12',203046,11,2030,12,46,203011,2030),('2030-11-13',203046,11,2030,13,46,203011,2030),('2030-11-14',203046,11,2030,14,46,203011,2030),('2030-11-15',203046,11,2030,15,46,203011,2030),('2030-11-16',203046,11,2030,16,46,203011,2030),('2030-11-17',203047,11,2030,17,47,203011,2030),('2030-11-18',203047,11,2030,18,47,203011,2030),('2030-11-19',203047,11,2030,19,47,203011,2030),('2030-11-20',203047,11,2030,20,47,203011,2030),('2030-11-21',203047,11,2030,21,47,203011,2030),('2030-11-22',203047,11,2030,22,47,203011,2030),('2030-11-23',203047,11,2030,23,47,203011,2030),('2030-11-24',203048,11,2030,24,48,203011,2030),('2030-11-25',203048,11,2030,25,48,203011,2030),('2030-11-26',203048,11,2030,26,48,203011,2030),('2030-11-27',203048,11,2030,27,48,203011,2030),('2030-11-28',203048,11,2030,28,48,203011,2030),('2030-11-29',203048,11,2030,29,48,203011,2030),('2030-11-30',203048,11,2030,30,48,203011,2030),('2030-12-01',203049,12,2030,1,49,203012,2031),('2030-12-02',203049,12,2030,2,49,203012,2031),('2030-12-03',203049,12,2030,3,49,203012,2031),('2030-12-04',203049,12,2030,4,49,203012,2031),('2030-12-05',203049,12,2030,5,49,203012,2031),('2030-12-06',203049,12,2030,6,49,203012,2031),('2030-12-07',203049,12,2030,7,49,203012,2031),('2030-12-08',203050,12,2030,8,50,203012,2031),('2030-12-09',203050,12,2030,9,50,203012,2031),('2030-12-10',203050,12,2030,10,50,203012,2031),('2030-12-11',203050,12,2030,11,50,203012,2031),('2030-12-12',203050,12,2030,12,50,203012,2031),('2030-12-13',203050,12,2030,13,50,203012,2031),('2030-12-14',203050,12,2030,14,50,203012,2031),('2030-12-15',203051,12,2030,15,51,203012,2031),('2030-12-16',203051,12,2030,16,51,203012,2031),('2030-12-17',203051,12,2030,17,51,203012,2031),('2030-12-18',203051,12,2030,18,51,203012,2031),('2030-12-19',203051,12,2030,19,51,203012,2031),('2030-12-20',203051,12,2030,20,51,203012,2031),('2030-12-21',203051,12,2030,21,51,203012,2031),('2030-12-22',203052,12,2030,22,52,203012,2031),('2030-12-23',203052,12,2030,23,52,203012,2031),('2030-12-24',203052,12,2030,24,52,203012,2031),('2030-12-25',203052,12,2030,25,52,203012,2031),('2030-12-26',203052,12,2030,26,52,203012,2031),('2030-12-27',203052,12,2030,27,52,203012,2031),('2030-12-28',203052,12,2030,28,52,203012,2031),('2030-12-29',203053,12,2030,29,1,203012,2031),('2030-12-30',203001,12,2030,30,1,203012,2031),('2030-12-31',203001,12,2030,31,1,203012,2031),('2031-01-01',203101,1,2031,1,1,203101,2031),('2031-01-02',203101,1,2031,2,1,203101,2031),('2031-01-03',203101,1,2031,3,1,203101,2031),('2031-01-04',203101,1,2031,4,1,203101,2031),('2031-01-05',203102,1,2031,5,2,203101,2031),('2031-01-06',203102,1,2031,6,2,203101,2031),('2031-01-07',203102,1,2031,7,2,203101,2031),('2031-01-08',203102,1,2031,8,2,203101,2031),('2031-01-09',203102,1,2031,9,2,203101,2031),('2031-01-10',203102,1,2031,10,2,203101,2031),('2031-01-11',203102,1,2031,11,2,203101,2031),('2031-01-12',203103,1,2031,12,3,203101,2031),('2031-01-13',203103,1,2031,13,3,203101,2031),('2031-01-14',203103,1,2031,14,3,203101,2031),('2031-01-15',203103,1,2031,15,3,203101,2031),('2031-01-16',203103,1,2031,16,3,203101,2031),('2031-01-17',203103,1,2031,17,3,203101,2031),('2031-01-18',203103,1,2031,18,3,203101,2031),('2031-01-19',203104,1,2031,19,4,203101,2031),('2031-01-20',203104,1,2031,20,4,203101,2031),('2031-01-21',203104,1,2031,21,4,203101,2031),('2031-01-22',203104,1,2031,22,4,203101,2031),('2031-01-23',203104,1,2031,23,4,203101,2031),('2031-01-24',203104,1,2031,24,4,203101,2031),('2031-01-25',203104,1,2031,25,4,203101,2031),('2031-01-26',203105,1,2031,26,5,203101,2031),('2031-01-27',203105,1,2031,27,5,203101,2031),('2031-01-28',203105,1,2031,28,5,203101,2031),('2031-01-29',203105,1,2031,29,5,203101,2031),('2031-01-30',203105,1,2031,30,5,203101,2031),('2031-01-31',203105,1,2031,31,5,203101,2031),('2031-02-01',203105,2,2031,1,5,203102,2031),('2031-02-02',203106,2,2031,2,6,203102,2031),('2031-02-03',203106,2,2031,3,6,203102,2031),('2031-02-04',203106,2,2031,4,6,203102,2031),('2031-02-05',203106,2,2031,5,6,203102,2031),('2031-02-06',203106,2,2031,6,6,203102,2031),('2031-02-07',203106,2,2031,7,6,203102,2031),('2031-02-08',203106,2,2031,8,6,203102,2031),('2031-02-09',203107,2,2031,9,7,203102,2031),('2031-02-10',203107,2,2031,10,7,203102,2031),('2031-02-11',203107,2,2031,11,7,203102,2031),('2031-02-12',203107,2,2031,12,7,203102,2031),('2031-02-13',203107,2,2031,13,7,203102,2031),('2031-02-14',203107,2,2031,14,7,203102,2031),('2031-02-15',203107,2,2031,15,7,203102,2031),('2031-02-16',203108,2,2031,16,8,203102,2031),('2031-02-17',203108,2,2031,17,8,203102,2031),('2031-02-18',203108,2,2031,18,8,203102,2031),('2031-02-19',203108,2,2031,19,8,203102,2031),('2031-02-20',203108,2,2031,20,8,203102,2031),('2031-02-21',203108,2,2031,21,8,203102,2031),('2031-02-22',203108,2,2031,22,8,203102,2031),('2031-02-23',203109,2,2031,23,9,203102,2031),('2031-02-24',203109,2,2031,24,9,203102,2031),('2031-02-25',203109,2,2031,25,9,203102,2031),('2031-02-26',203109,2,2031,26,9,203102,2031),('2031-02-27',203109,2,2031,27,9,203102,2031),('2031-02-28',203109,2,2031,28,9,203102,2031),('2031-03-01',203109,3,2031,1,9,203103,2031),('2031-03-02',203110,3,2031,2,10,203103,2031),('2031-03-03',203110,3,2031,3,10,203103,2031),('2031-03-04',203110,3,2031,4,10,203103,2031),('2031-03-05',203110,3,2031,5,10,203103,2031),('2031-03-06',203110,3,2031,6,10,203103,2031),('2031-03-07',203110,3,2031,7,10,203103,2031),('2031-03-08',203110,3,2031,8,10,203103,2031),('2031-03-09',203111,3,2031,9,11,203103,2031),('2031-03-10',203111,3,2031,10,11,203103,2031),('2031-03-11',203111,3,2031,11,11,203103,2031),('2031-03-12',203111,3,2031,12,11,203103,2031),('2031-03-13',203111,3,2031,13,11,203103,2031),('2031-03-14',203111,3,2031,14,11,203103,2031),('2031-03-15',203111,3,2031,15,11,203103,2031),('2031-03-16',203112,3,2031,16,12,203103,2031),('2031-03-17',203112,3,2031,17,12,203103,2031),('2031-03-18',203112,3,2031,18,12,203103,2031),('2031-03-19',203112,3,2031,19,12,203103,2031),('2031-03-20',203112,3,2031,20,12,203103,2031),('2031-03-21',203112,3,2031,21,12,203103,2031),('2031-03-22',203112,3,2031,22,12,203103,2031),('2031-03-23',203113,3,2031,23,13,203103,2031),('2031-03-24',203113,3,2031,24,13,203103,2031),('2031-03-25',203113,3,2031,25,13,203103,2031),('2031-03-26',203113,3,2031,26,13,203103,2031),('2031-03-27',203113,3,2031,27,13,203103,2031),('2031-03-28',203113,3,2031,28,13,203103,2031),('2031-03-29',203113,3,2031,29,13,203103,2031),('2031-03-30',203114,3,2031,30,14,203103,2031),('2031-03-31',203114,3,2031,31,14,203103,2031),('2031-04-01',203114,4,2031,1,14,203104,2031),('2031-04-02',203114,4,2031,2,14,203104,2031),('2031-04-03',203114,4,2031,3,14,203104,2031),('2031-04-04',203114,4,2031,4,14,203104,2031),('2031-04-05',203114,4,2031,5,14,203104,2031),('2031-04-06',203115,4,2031,6,15,203104,2031),('2031-04-07',203115,4,2031,7,15,203104,2031),('2031-04-08',203115,4,2031,8,15,203104,2031),('2031-04-09',203115,4,2031,9,15,203104,2031),('2031-04-10',203115,4,2031,10,15,203104,2031),('2031-04-11',203115,4,2031,11,15,203104,2031),('2031-04-12',203115,4,2031,12,15,203104,2031),('2031-04-13',203116,4,2031,13,16,203104,2031),('2031-04-14',203116,4,2031,14,16,203104,2031),('2031-04-15',203116,4,2031,15,16,203104,2031),('2031-04-16',203116,4,2031,16,16,203104,2031),('2031-04-17',203116,4,2031,17,16,203104,2031),('2031-04-18',203116,4,2031,18,16,203104,2031),('2031-04-19',203116,4,2031,19,16,203104,2031),('2031-04-20',203117,4,2031,20,17,203104,2031),('2031-04-21',203117,4,2031,21,17,203104,2031),('2031-04-22',203117,4,2031,22,17,203104,2031),('2031-04-23',203117,4,2031,23,17,203104,2031),('2031-04-24',203117,4,2031,24,17,203104,2031),('2031-04-25',203117,4,2031,25,17,203104,2031),('2031-04-26',203117,4,2031,26,17,203104,2031),('2031-04-27',203118,4,2031,27,18,203104,2031),('2031-04-28',203118,4,2031,28,18,203104,2031),('2031-04-29',203118,4,2031,29,18,203104,2031),('2031-04-30',203118,4,2031,30,18,203104,2031),('2031-05-01',203118,5,2031,1,18,203105,2031),('2031-05-02',203118,5,2031,2,18,203105,2031),('2031-05-03',203118,5,2031,3,18,203105,2031),('2031-05-04',203119,5,2031,4,19,203105,2031),('2031-05-05',203119,5,2031,5,19,203105,2031),('2031-05-06',203119,5,2031,6,19,203105,2031),('2031-05-07',203119,5,2031,7,19,203105,2031),('2031-05-08',203119,5,2031,8,19,203105,2031),('2031-05-09',203119,5,2031,9,19,203105,2031),('2031-05-10',203119,5,2031,10,19,203105,2031),('2031-05-11',203120,5,2031,11,20,203105,2031),('2031-05-12',203120,5,2031,12,20,203105,2031),('2031-05-13',203120,5,2031,13,20,203105,2031),('2031-05-14',203120,5,2031,14,20,203105,2031),('2031-05-15',203120,5,2031,15,20,203105,2031),('2031-05-16',203120,5,2031,16,20,203105,2031),('2031-05-17',203120,5,2031,17,20,203105,2031),('2031-05-18',203121,5,2031,18,21,203105,2031),('2031-05-19',203121,5,2031,19,21,203105,2031),('2031-05-20',203121,5,2031,20,21,203105,2031),('2031-05-21',203121,5,2031,21,21,203105,2031),('2031-05-22',203121,5,2031,22,21,203105,2031),('2031-05-23',203121,5,2031,23,21,203105,2031),('2031-05-24',203121,5,2031,24,21,203105,2031),('2031-05-25',203122,5,2031,25,22,203105,2031),('2031-05-26',203122,5,2031,26,22,203105,2031),('2031-05-27',203122,5,2031,27,22,203105,2031),('2031-05-28',203122,5,2031,28,22,203105,2031),('2031-05-29',203122,5,2031,29,22,203105,2031),('2031-05-30',203122,5,2031,30,22,203105,2031),('2031-05-31',203122,5,2031,31,22,203105,2031),('2031-06-01',203123,6,2031,1,23,203106,2031),('2031-06-02',203123,6,2031,2,23,203106,2031),('2031-06-03',203123,6,2031,3,23,203106,2031),('2031-06-04',203123,6,2031,4,23,203106,2031),('2031-06-05',203123,6,2031,5,23,203106,2031),('2031-06-06',203123,6,2031,6,23,203106,2031),('2031-06-07',203123,6,2031,7,23,203106,2031),('2031-06-08',203124,6,2031,8,24,203106,2031),('2031-06-09',203124,6,2031,9,24,203106,2031),('2031-06-10',203124,6,2031,10,24,203106,2031),('2031-06-11',203124,6,2031,11,24,203106,2031),('2031-06-12',203124,6,2031,12,24,203106,2031),('2031-06-13',203124,6,2031,13,24,203106,2031),('2031-06-14',203124,6,2031,14,24,203106,2031),('2031-06-15',203125,6,2031,15,25,203106,2031),('2031-06-16',203125,6,2031,16,25,203106,2031),('2031-06-17',203125,6,2031,17,25,203106,2031),('2031-06-18',203125,6,2031,18,25,203106,2031),('2031-06-19',203125,6,2031,19,25,203106,2031),('2031-06-20',203125,6,2031,20,25,203106,2031),('2031-06-21',203125,6,2031,21,25,203106,2031),('2031-06-22',203126,6,2031,22,26,203106,2031),('2031-06-23',203126,6,2031,23,26,203106,2031),('2031-06-24',203126,6,2031,24,26,203106,2031),('2031-06-25',203126,6,2031,25,26,203106,2031),('2031-06-26',203126,6,2031,26,26,203106,2031),('2031-06-27',203126,6,2031,27,26,203106,2031),('2031-06-28',203126,6,2031,28,26,203106,2031),('2031-06-29',203127,6,2031,29,27,203106,2031),('2031-06-30',203127,6,2031,30,27,203106,2031),('2031-07-01',203127,7,2031,1,27,203107,2031),('2031-07-02',203127,7,2031,2,27,203107,2031),('2031-07-03',203127,7,2031,3,27,203107,2031),('2031-07-04',203127,7,2031,4,27,203107,2031),('2031-07-05',203127,7,2031,5,27,203107,2031),('2031-07-06',203128,7,2031,6,28,203107,2031),('2031-07-07',203128,7,2031,7,28,203107,2031),('2031-07-08',203128,7,2031,8,28,203107,2031),('2031-07-09',203128,7,2031,9,28,203107,2031),('2031-07-10',203128,7,2031,10,28,203107,2031),('2031-07-11',203128,7,2031,11,28,203107,2031),('2031-07-12',203128,7,2031,12,28,203107,2031),('2031-07-13',203129,7,2031,13,29,203107,2031),('2031-07-14',203129,7,2031,14,29,203107,2031),('2031-07-15',203129,7,2031,15,29,203107,2031),('2031-07-16',203129,7,2031,16,29,203107,2031),('2031-07-17',203129,7,2031,17,29,203107,2031),('2031-07-18',203129,7,2031,18,29,203107,2031),('2031-07-19',203129,7,2031,19,29,203107,2031),('2031-07-20',203130,7,2031,20,30,203107,2031),('2031-07-21',203130,7,2031,21,30,203107,2031),('2031-07-22',203130,7,2031,22,30,203107,2031),('2031-07-23',203130,7,2031,23,30,203107,2031),('2031-07-24',203130,7,2031,24,30,203107,2031),('2031-07-25',203130,7,2031,25,30,203107,2031),('2031-07-26',203130,7,2031,26,30,203107,2031),('2031-07-27',203131,7,2031,27,31,203107,2031),('2031-07-28',203131,7,2031,28,31,203107,2031),('2031-07-29',203131,7,2031,29,31,203107,2031),('2031-07-30',203131,7,2031,30,31,203107,2031),('2031-07-31',203131,7,2031,31,31,203107,2031),('2031-08-01',203131,8,2031,1,31,203108,2031),('2031-08-02',203131,8,2031,2,31,203108,2031),('2031-08-03',203132,8,2031,3,32,203108,2031),('2031-08-04',203132,8,2031,4,32,203108,2031),('2031-08-05',203132,8,2031,5,32,203108,2031),('2031-08-06',203132,8,2031,6,32,203108,2031),('2031-08-07',203132,8,2031,7,32,203108,2031),('2031-08-08',203132,8,2031,8,32,203108,2031),('2031-08-09',203132,8,2031,9,32,203108,2031),('2031-08-10',203133,8,2031,10,33,203108,2031),('2031-08-11',203133,8,2031,11,33,203108,2031),('2031-08-12',203133,8,2031,12,33,203108,2031),('2031-08-13',203133,8,2031,13,33,203108,2031),('2031-08-14',203133,8,2031,14,33,203108,2031),('2031-08-15',203133,8,2031,15,33,203108,2031),('2031-08-16',203133,8,2031,16,33,203108,2031),('2031-08-17',203134,8,2031,17,34,203108,2031),('2031-08-18',203134,8,2031,18,34,203108,2031),('2031-08-19',203134,8,2031,19,34,203108,2031),('2031-08-20',203134,8,2031,20,34,203108,2031),('2031-08-21',203134,8,2031,21,34,203108,2031),('2031-08-22',203134,8,2031,22,34,203108,2031),('2031-08-23',203134,8,2031,23,34,203108,2031),('2031-08-24',203135,8,2031,24,35,203108,2031),('2031-08-25',203135,8,2031,25,35,203108,2031),('2031-08-26',203135,8,2031,26,35,203108,2031),('2031-08-27',203135,8,2031,27,35,203108,2031),('2031-08-28',203135,8,2031,28,35,203108,2031),('2031-08-29',203135,8,2031,29,35,203108,2031),('2031-08-30',203135,8,2031,30,35,203108,2031),('2031-08-31',203136,8,2031,31,36,203108,2031),('2031-09-01',203136,9,2031,1,36,203109,2031),('2031-09-02',203136,9,2031,2,36,203109,2031),('2031-09-03',203136,9,2031,3,36,203109,2031),('2031-09-04',203136,9,2031,4,36,203109,2031),('2031-09-05',203136,9,2031,5,36,203109,2031),('2031-09-06',203136,9,2031,6,36,203109,2031),('2031-09-07',203137,9,2031,7,37,203109,2031),('2031-09-08',203137,9,2031,8,37,203109,2031),('2031-09-09',203137,9,2031,9,37,203109,2031),('2031-09-10',203137,9,2031,10,37,203109,2031),('2031-09-11',203137,9,2031,11,37,203109,2031),('2031-09-12',203137,9,2031,12,37,203109,2031),('2031-09-13',203137,9,2031,13,37,203109,2031),('2031-09-14',203138,9,2031,14,38,203109,2031),('2031-09-15',203138,9,2031,15,38,203109,2031),('2031-09-16',203138,9,2031,16,38,203109,2031),('2031-09-17',203138,9,2031,17,38,203109,2031),('2031-09-18',203138,9,2031,18,38,203109,2031),('2031-09-19',203138,9,2031,19,38,203109,2031),('2031-09-20',203138,9,2031,20,38,203109,2031),('2031-09-21',203139,9,2031,21,39,203109,2031),('2031-09-22',203139,9,2031,22,39,203109,2031),('2031-09-23',203139,9,2031,23,39,203109,2031),('2031-09-24',203139,9,2031,24,39,203109,2031),('2031-09-25',203139,9,2031,25,39,203109,2031),('2031-09-26',203139,9,2031,26,39,203109,2031),('2031-09-27',203139,9,2031,27,39,203109,2031),('2031-09-28',203140,9,2031,28,40,203109,2031),('2031-09-29',203140,9,2031,29,40,203109,2031),('2031-09-30',203140,9,2031,30,40,203109,2031),('2031-10-01',203140,10,2031,1,40,203110,2031),('2031-10-02',203140,10,2031,2,40,203110,2031),('2031-10-03',203140,10,2031,3,40,203110,2031),('2031-10-04',203140,10,2031,4,40,203110,2031),('2031-10-05',203141,10,2031,5,41,203110,2031),('2031-10-06',203141,10,2031,6,41,203110,2031),('2031-10-07',203141,10,2031,7,41,203110,2031),('2031-10-08',203141,10,2031,8,41,203110,2031),('2031-10-09',203141,10,2031,9,41,203110,2031),('2031-10-10',203141,10,2031,10,41,203110,2031),('2031-10-11',203141,10,2031,11,41,203110,2031),('2031-10-12',203142,10,2031,12,42,203110,2031),('2031-10-13',203142,10,2031,13,42,203110,2031),('2031-10-14',203142,10,2031,14,42,203110,2031),('2031-10-15',203142,10,2031,15,42,203110,2031),('2031-10-16',203142,10,2031,16,42,203110,2031),('2031-10-17',203142,10,2031,17,42,203110,2031),('2031-10-18',203142,10,2031,18,42,203110,2031),('2031-10-19',203143,10,2031,19,43,203110,2031),('2031-10-20',203143,10,2031,20,43,203110,2031),('2031-10-21',203143,10,2031,21,43,203110,2031),('2031-10-22',203143,10,2031,22,43,203110,2031),('2031-10-23',203143,10,2031,23,43,203110,2031),('2031-10-24',203143,10,2031,24,43,203110,2031),('2031-10-25',203143,10,2031,25,43,203110,2031),('2031-10-26',203144,10,2031,26,44,203110,2031),('2031-10-27',203144,10,2031,27,44,203110,2031),('2031-10-28',203144,10,2031,28,44,203110,2031),('2031-10-29',203144,10,2031,29,44,203110,2031),('2031-10-30',203144,10,2031,30,44,203110,2031),('2031-10-31',203144,10,2031,31,44,203110,2031),('2031-11-01',203144,11,2031,1,44,203111,2031),('2031-11-02',203145,11,2031,2,45,203111,2031),('2031-11-03',203145,11,2031,3,45,203111,2031),('2031-11-04',203145,11,2031,4,45,203111,2031),('2031-11-05',203145,11,2031,5,45,203111,2031),('2031-11-06',203145,11,2031,6,45,203111,2031),('2031-11-07',203145,11,2031,7,45,203111,2031),('2031-11-08',203145,11,2031,8,45,203111,2031),('2031-11-09',203146,11,2031,9,46,203111,2031),('2031-11-10',203146,11,2031,10,46,203111,2031),('2031-11-11',203146,11,2031,11,46,203111,2031),('2031-11-12',203146,11,2031,12,46,203111,2031),('2031-11-13',203146,11,2031,13,46,203111,2031),('2031-11-14',203146,11,2031,14,46,203111,2031),('2031-11-15',203146,11,2031,15,46,203111,2031),('2031-11-16',203147,11,2031,16,47,203111,2031),('2031-11-17',203147,11,2031,17,47,203111,2031),('2031-11-18',203147,11,2031,18,47,203111,2031),('2031-11-19',203147,11,2031,19,47,203111,2031),('2031-11-20',203147,11,2031,20,47,203111,2031),('2031-11-21',203147,11,2031,21,47,203111,2031),('2031-11-22',203147,11,2031,22,47,203111,2031),('2031-11-23',203148,11,2031,23,48,203111,2031),('2031-11-24',203148,11,2031,24,48,203111,2031),('2031-11-25',203148,11,2031,25,48,203111,2031),('2031-11-26',203148,11,2031,26,48,203111,2031),('2031-11-27',203148,11,2031,27,48,203111,2031),('2031-11-28',203148,11,2031,28,48,203111,2031),('2031-11-29',203148,11,2031,29,48,203111,2031),('2031-11-30',203149,11,2031,30,49,203111,2031),('2031-12-01',203149,12,2031,1,49,203112,2032),('2031-12-02',203149,12,2031,2,49,203112,2032),('2031-12-03',203149,12,2031,3,49,203112,2032),('2031-12-04',203149,12,2031,4,49,203112,2032),('2031-12-05',203149,12,2031,5,49,203112,2032),('2031-12-06',203149,12,2031,6,49,203112,2032),('2031-12-07',203150,12,2031,7,50,203112,2032),('2031-12-08',203150,12,2031,8,50,203112,2032),('2031-12-09',203150,12,2031,9,50,203112,2032),('2031-12-10',203150,12,2031,10,50,203112,2032),('2031-12-11',203150,12,2031,11,50,203112,2032),('2031-12-12',203150,12,2031,12,50,203112,2032),('2031-12-13',203150,12,2031,13,50,203112,2032),('2031-12-14',203151,12,2031,14,51,203112,2032),('2031-12-15',203151,12,2031,15,51,203112,2032),('2031-12-16',203151,12,2031,16,51,203112,2032),('2031-12-17',203151,12,2031,17,51,203112,2032),('2031-12-18',203151,12,2031,18,51,203112,2032),('2031-12-19',203151,12,2031,19,51,203112,2032),('2031-12-20',203151,12,2031,20,51,203112,2032),('2031-12-21',203152,12,2031,21,52,203112,2032),('2031-12-22',203152,12,2031,22,52,203112,2032),('2031-12-23',203152,12,2031,23,52,203112,2032),('2031-12-24',203152,12,2031,24,52,203112,2032),('2031-12-25',203152,12,2031,25,52,203112,2032),('2031-12-26',203152,12,2031,26,52,203112,2032),('2031-12-27',203152,12,2031,27,52,203112,2032),('2031-12-28',203153,12,2031,28,53,203112,2032),('2031-12-29',203101,12,2031,29,53,203112,2032),('2031-12-30',203101,12,2031,30,53,203112,2032),('2031-12-31',203101,12,2031,31,53,203112,2032),('2032-01-01',203201,1,2032,1,53,203201,2032),('2032-01-02',203201,1,2032,2,53,203201,2032),('2032-01-03',203201,1,2032,3,53,203201,2032),('2032-01-04',203202,1,2032,4,1,203201,2032),('2032-01-05',203202,1,2032,5,1,203201,2032),('2032-01-06',203202,1,2032,6,1,203201,2032),('2032-01-07',203202,1,2032,7,1,203201,2032),('2032-01-08',203202,1,2032,8,1,203201,2032),('2032-01-09',203202,1,2032,9,1,203201,2032),('2032-01-10',203202,1,2032,10,1,203201,2032),('2032-01-11',203203,1,2032,11,2,203201,2032),('2032-01-12',203203,1,2032,12,2,203201,2032),('2032-01-13',203203,1,2032,13,2,203201,2032),('2032-01-14',203203,1,2032,14,2,203201,2032),('2032-01-15',203203,1,2032,15,2,203201,2032),('2032-01-16',203203,1,2032,16,2,203201,2032),('2032-01-17',203203,1,2032,17,2,203201,2032),('2032-01-18',203204,1,2032,18,3,203201,2032),('2032-01-19',203204,1,2032,19,3,203201,2032),('2032-01-20',203204,1,2032,20,3,203201,2032),('2032-01-21',203204,1,2032,21,3,203201,2032),('2032-01-22',203204,1,2032,22,3,203201,2032),('2032-01-23',203204,1,2032,23,3,203201,2032),('2032-01-24',203204,1,2032,24,3,203201,2032),('2032-01-25',203205,1,2032,25,4,203201,2032),('2032-01-26',203205,1,2032,26,4,203201,2032),('2032-01-27',203205,1,2032,27,4,203201,2032),('2032-01-28',203205,1,2032,28,4,203201,2032),('2032-01-29',203205,1,2032,29,4,203201,2032),('2032-01-30',203205,1,2032,30,4,203201,2032),('2032-01-31',203205,1,2032,31,4,203201,2032),('2032-02-01',203206,2,2032,1,5,203202,2032),('2032-02-02',203206,2,2032,2,5,203202,2032),('2032-02-03',203206,2,2032,3,5,203202,2032),('2032-02-04',203206,2,2032,4,5,203202,2032),('2032-02-05',203206,2,2032,5,5,203202,2032),('2032-02-06',203206,2,2032,6,5,203202,2032),('2032-02-07',203206,2,2032,7,5,203202,2032),('2032-02-08',203207,2,2032,8,6,203202,2032),('2032-02-09',203207,2,2032,9,6,203202,2032),('2032-02-10',203207,2,2032,10,6,203202,2032),('2032-02-11',203207,2,2032,11,6,203202,2032),('2032-02-12',203207,2,2032,12,6,203202,2032),('2032-02-13',203207,2,2032,13,6,203202,2032),('2032-02-14',203207,2,2032,14,6,203202,2032),('2032-02-15',203208,2,2032,15,7,203202,2032),('2032-02-16',203208,2,2032,16,7,203202,2032),('2032-02-17',203208,2,2032,17,7,203202,2032),('2032-02-18',203208,2,2032,18,7,203202,2032),('2032-02-19',203208,2,2032,19,7,203202,2032),('2032-02-20',203208,2,2032,20,7,203202,2032),('2032-02-21',203208,2,2032,21,7,203202,2032),('2032-02-22',203209,2,2032,22,8,203202,2032),('2032-02-23',203209,2,2032,23,8,203202,2032),('2032-02-24',203209,2,2032,24,8,203202,2032),('2032-02-25',203209,2,2032,25,8,203202,2032),('2032-02-26',203209,2,2032,26,8,203202,2032),('2032-02-27',203209,2,2032,27,8,203202,2032),('2032-02-28',203209,2,2032,28,8,203202,2032),('2032-02-29',203210,2,2032,29,9,203202,2032),('2032-03-01',203210,3,2032,1,9,203203,2032),('2032-03-02',203210,3,2032,2,9,203203,2032),('2032-03-03',203210,3,2032,3,9,203203,2032),('2032-03-04',203210,3,2032,4,9,203203,2032),('2032-03-05',203210,3,2032,5,9,203203,2032),('2032-03-06',203210,3,2032,6,9,203203,2032),('2032-03-07',203211,3,2032,7,10,203203,2032),('2032-03-08',203211,3,2032,8,10,203203,2032),('2032-03-09',203211,3,2032,9,10,203203,2032),('2032-03-10',203211,3,2032,10,10,203203,2032),('2032-03-11',203211,3,2032,11,10,203203,2032),('2032-03-12',203211,3,2032,12,10,203203,2032),('2032-03-13',203211,3,2032,13,10,203203,2032),('2032-03-14',203212,3,2032,14,11,203203,2032),('2032-03-15',203212,3,2032,15,11,203203,2032),('2032-03-16',203212,3,2032,16,11,203203,2032),('2032-03-17',203212,3,2032,17,11,203203,2032),('2032-03-18',203212,3,2032,18,11,203203,2032),('2032-03-19',203212,3,2032,19,11,203203,2032),('2032-03-20',203212,3,2032,20,11,203203,2032),('2032-03-21',203213,3,2032,21,12,203203,2032),('2032-03-22',203213,3,2032,22,12,203203,2032),('2032-03-23',203213,3,2032,23,12,203203,2032),('2032-03-24',203213,3,2032,24,12,203203,2032),('2032-03-25',203213,3,2032,25,12,203203,2032),('2032-03-26',203213,3,2032,26,12,203203,2032),('2032-03-27',203213,3,2032,27,12,203203,2032),('2032-03-28',203214,3,2032,28,13,203203,2032),('2032-03-29',203214,3,2032,29,13,203203,2032),('2032-03-30',203214,3,2032,30,13,203203,2032),('2032-03-31',203214,3,2032,31,13,203203,2032),('2032-04-01',203214,4,2032,1,13,203204,2032),('2032-04-02',203214,4,2032,2,13,203204,2032),('2032-04-03',203214,4,2032,3,13,203204,2032),('2032-04-04',203215,4,2032,4,14,203204,2032),('2032-04-05',203215,4,2032,5,14,203204,2032),('2032-04-06',203215,4,2032,6,14,203204,2032),('2032-04-07',203215,4,2032,7,14,203204,2032),('2032-04-08',203215,4,2032,8,14,203204,2032),('2032-04-09',203215,4,2032,9,14,203204,2032),('2032-04-10',203215,4,2032,10,14,203204,2032),('2032-04-11',203216,4,2032,11,15,203204,2032),('2032-04-12',203216,4,2032,12,15,203204,2032),('2032-04-13',203216,4,2032,13,15,203204,2032),('2032-04-14',203216,4,2032,14,15,203204,2032),('2032-04-15',203216,4,2032,15,15,203204,2032),('2032-04-16',203216,4,2032,16,15,203204,2032),('2032-04-17',203216,4,2032,17,15,203204,2032),('2032-04-18',203217,4,2032,18,16,203204,2032),('2032-04-19',203217,4,2032,19,16,203204,2032),('2032-04-20',203217,4,2032,20,16,203204,2032),('2032-04-21',203217,4,2032,21,16,203204,2032),('2032-04-22',203217,4,2032,22,16,203204,2032),('2032-04-23',203217,4,2032,23,16,203204,2032),('2032-04-24',203217,4,2032,24,16,203204,2032),('2032-04-25',203218,4,2032,25,17,203204,2032),('2032-04-26',203218,4,2032,26,17,203204,2032),('2032-04-27',203218,4,2032,27,17,203204,2032),('2032-04-28',203218,4,2032,28,17,203204,2032),('2032-04-29',203218,4,2032,29,17,203204,2032),('2032-04-30',203218,4,2032,30,17,203204,2032),('2032-05-01',203218,5,2032,1,17,203205,2032),('2032-05-02',203219,5,2032,2,18,203205,2032),('2032-05-03',203219,5,2032,3,18,203205,2032),('2032-05-04',203219,5,2032,4,18,203205,2032),('2032-05-05',203219,5,2032,5,18,203205,2032),('2032-05-06',203219,5,2032,6,18,203205,2032),('2032-05-07',203219,5,2032,7,18,203205,2032),('2032-05-08',203219,5,2032,8,18,203205,2032),('2032-05-09',203220,5,2032,9,19,203205,2032),('2032-05-10',203220,5,2032,10,19,203205,2032),('2032-05-11',203220,5,2032,11,19,203205,2032),('2032-05-12',203220,5,2032,12,19,203205,2032),('2032-05-13',203220,5,2032,13,19,203205,2032),('2032-05-14',203220,5,2032,14,19,203205,2032),('2032-05-15',203220,5,2032,15,19,203205,2032),('2032-05-16',203221,5,2032,16,20,203205,2032),('2032-05-17',203221,5,2032,17,20,203205,2032),('2032-05-18',203221,5,2032,18,20,203205,2032),('2032-05-19',203221,5,2032,19,20,203205,2032),('2032-05-20',203221,5,2032,20,20,203205,2032),('2032-05-21',203221,5,2032,21,20,203205,2032),('2032-05-22',203221,5,2032,22,20,203205,2032),('2032-05-23',203222,5,2032,23,21,203205,2032),('2032-05-24',203222,5,2032,24,21,203205,2032),('2032-05-25',203222,5,2032,25,21,203205,2032),('2032-05-26',203222,5,2032,26,21,203205,2032),('2032-05-27',203222,5,2032,27,21,203205,2032),('2032-05-28',203222,5,2032,28,21,203205,2032),('2032-05-29',203222,5,2032,29,21,203205,2032),('2032-05-30',203223,5,2032,30,22,203205,2032),('2032-05-31',203223,5,2032,31,22,203205,2032),('2032-06-01',203223,6,2032,1,22,203206,2032),('2032-06-02',203223,6,2032,2,22,203206,2032),('2032-06-03',203223,6,2032,3,22,203206,2032),('2032-06-04',203223,6,2032,4,22,203206,2032),('2032-06-05',203223,6,2032,5,22,203206,2032),('2032-06-06',203224,6,2032,6,23,203206,2032),('2032-06-07',203224,6,2032,7,23,203206,2032),('2032-06-08',203224,6,2032,8,23,203206,2032),('2032-06-09',203224,6,2032,9,23,203206,2032),('2032-06-10',203224,6,2032,10,23,203206,2032),('2032-06-11',203224,6,2032,11,23,203206,2032),('2032-06-12',203224,6,2032,12,23,203206,2032),('2032-06-13',203225,6,2032,13,24,203206,2032),('2032-06-14',203225,6,2032,14,24,203206,2032),('2032-06-15',203225,6,2032,15,24,203206,2032),('2032-06-16',203225,6,2032,16,24,203206,2032),('2032-06-17',203225,6,2032,17,24,203206,2032),('2032-06-18',203225,6,2032,18,24,203206,2032),('2032-06-19',203225,6,2032,19,24,203206,2032),('2032-06-20',203226,6,2032,20,25,203206,2032),('2032-06-21',203226,6,2032,21,25,203206,2032),('2032-06-22',203226,6,2032,22,25,203206,2032),('2032-06-23',203226,6,2032,23,25,203206,2032),('2032-06-24',203226,6,2032,24,25,203206,2032),('2032-06-25',203226,6,2032,25,25,203206,2032),('2032-06-26',203226,6,2032,26,25,203206,2032),('2032-06-27',203227,6,2032,27,26,203206,2032),('2032-06-28',203227,6,2032,28,26,203206,2032),('2032-06-29',203227,6,2032,29,26,203206,2032),('2032-06-30',203227,6,2032,30,26,203206,2032),('2032-07-01',203227,7,2032,1,26,203207,2032),('2032-07-02',203227,7,2032,2,26,203207,2032),('2032-07-03',203227,7,2032,3,26,203207,2032),('2032-07-04',203228,7,2032,4,27,203207,2032),('2032-07-05',203228,7,2032,5,27,203207,2032),('2032-07-06',203228,7,2032,6,27,203207,2032),('2032-07-07',203228,7,2032,7,27,203207,2032),('2032-07-08',203228,7,2032,8,27,203207,2032),('2032-07-09',203228,7,2032,9,27,203207,2032),('2032-07-10',203228,7,2032,10,27,203207,2032),('2032-07-11',203229,7,2032,11,28,203207,2032),('2032-07-12',203229,7,2032,12,28,203207,2032),('2032-07-13',203229,7,2032,13,28,203207,2032),('2032-07-14',203229,7,2032,14,28,203207,2032),('2032-07-15',203229,7,2032,15,28,203207,2032),('2032-07-16',203229,7,2032,16,28,203207,2032),('2032-07-17',203229,7,2032,17,28,203207,2032),('2032-07-18',203230,7,2032,18,29,203207,2032),('2032-07-19',203230,7,2032,19,29,203207,2032),('2032-07-20',203230,7,2032,20,29,203207,2032),('2032-07-21',203230,7,2032,21,29,203207,2032),('2032-07-22',203230,7,2032,22,29,203207,2032),('2032-07-23',203230,7,2032,23,29,203207,2032),('2032-07-24',203230,7,2032,24,29,203207,2032),('2032-07-25',203231,7,2032,25,30,203207,2032),('2032-07-26',203231,7,2032,26,30,203207,2032),('2032-07-27',203231,7,2032,27,30,203207,2032),('2032-07-28',203231,7,2032,28,30,203207,2032),('2032-07-29',203231,7,2032,29,30,203207,2032),('2032-07-30',203231,7,2032,30,30,203207,2032),('2032-07-31',203231,7,2032,31,30,203207,2032),('2032-08-01',203232,8,2032,1,31,203208,2032),('2032-08-02',203232,8,2032,2,31,203208,2032),('2032-08-03',203232,8,2032,3,31,203208,2032),('2032-08-04',203232,8,2032,4,31,203208,2032),('2032-08-05',203232,8,2032,5,31,203208,2032),('2032-08-06',203232,8,2032,6,31,203208,2032),('2032-08-07',203232,8,2032,7,31,203208,2032),('2032-08-08',203233,8,2032,8,32,203208,2032),('2032-08-09',203233,8,2032,9,32,203208,2032),('2032-08-10',203233,8,2032,10,32,203208,2032),('2032-08-11',203233,8,2032,11,32,203208,2032),('2032-08-12',203233,8,2032,12,32,203208,2032),('2032-08-13',203233,8,2032,13,32,203208,2032),('2032-08-14',203233,8,2032,14,32,203208,2032),('2032-08-15',203234,8,2032,15,33,203208,2032),('2032-08-16',203234,8,2032,16,33,203208,2032),('2032-08-17',203234,8,2032,17,33,203208,2032),('2032-08-18',203234,8,2032,18,33,203208,2032),('2032-08-19',203234,8,2032,19,33,203208,2032),('2032-08-20',203234,8,2032,20,33,203208,2032),('2032-08-21',203234,8,2032,21,33,203208,2032),('2032-08-22',203235,8,2032,22,34,203208,2032),('2032-08-23',203235,8,2032,23,34,203208,2032),('2032-08-24',203235,8,2032,24,34,203208,2032),('2032-08-25',203235,8,2032,25,34,203208,2032),('2032-08-26',203235,8,2032,26,34,203208,2032),('2032-08-27',203235,8,2032,27,34,203208,2032),('2032-08-28',203235,8,2032,28,34,203208,2032),('2032-08-29',203236,8,2032,29,35,203208,2032),('2032-08-30',203236,8,2032,30,35,203208,2032),('2032-08-31',203236,8,2032,31,35,203208,2032),('2032-09-01',203236,9,2032,1,35,203209,2032),('2032-09-02',203236,9,2032,2,35,203209,2032),('2032-09-03',203236,9,2032,3,35,203209,2032),('2032-09-04',203236,9,2032,4,35,203209,2032),('2032-09-05',203237,9,2032,5,36,203209,2032),('2032-09-06',203237,9,2032,6,36,203209,2032),('2032-09-07',203237,9,2032,7,36,203209,2032),('2032-09-08',203237,9,2032,8,36,203209,2032),('2032-09-09',203237,9,2032,9,36,203209,2032),('2032-09-10',203237,9,2032,10,36,203209,2032),('2032-09-11',203237,9,2032,11,36,203209,2032),('2032-09-12',203238,9,2032,12,37,203209,2032),('2032-09-13',203238,9,2032,13,37,203209,2032),('2032-09-14',203238,9,2032,14,37,203209,2032),('2032-09-15',203238,9,2032,15,37,203209,2032),('2032-09-16',203238,9,2032,16,37,203209,2032),('2032-09-17',203238,9,2032,17,37,203209,2032),('2032-09-18',203238,9,2032,18,37,203209,2032),('2032-09-19',203239,9,2032,19,38,203209,2032),('2032-09-20',203239,9,2032,20,38,203209,2032),('2032-09-21',203239,9,2032,21,38,203209,2032),('2032-09-22',203239,9,2032,22,38,203209,2032),('2032-09-23',203239,9,2032,23,38,203209,2032),('2032-09-24',203239,9,2032,24,38,203209,2032),('2032-09-25',203239,9,2032,25,38,203209,2032),('2032-09-26',203240,9,2032,26,39,203209,2032),('2032-09-27',203240,9,2032,27,39,203209,2032),('2032-09-28',203240,9,2032,28,39,203209,2032),('2032-09-29',203240,9,2032,29,39,203209,2032),('2032-09-30',203240,9,2032,30,39,203209,2032),('2032-10-01',203240,10,2032,1,39,203210,2032),('2032-10-02',203240,10,2032,2,39,203210,2032),('2032-10-03',203241,10,2032,3,40,203210,2032),('2032-10-04',203241,10,2032,4,40,203210,2032),('2032-10-05',203241,10,2032,5,40,203210,2032),('2032-10-06',203241,10,2032,6,40,203210,2032),('2032-10-07',203241,10,2032,7,40,203210,2032),('2032-10-08',203241,10,2032,8,40,203210,2032),('2032-10-09',203241,10,2032,9,40,203210,2032),('2032-10-10',203242,10,2032,10,41,203210,2032),('2032-10-11',203242,10,2032,11,41,203210,2032),('2032-10-12',203242,10,2032,12,41,203210,2032),('2032-10-13',203242,10,2032,13,41,203210,2032),('2032-10-14',203242,10,2032,14,41,203210,2032),('2032-10-15',203242,10,2032,15,41,203210,2032),('2032-10-16',203242,10,2032,16,41,203210,2032),('2032-10-17',203243,10,2032,17,42,203210,2032),('2032-10-18',203243,10,2032,18,42,203210,2032),('2032-10-19',203243,10,2032,19,42,203210,2032),('2032-10-20',203243,10,2032,20,42,203210,2032),('2032-10-21',203243,10,2032,21,42,203210,2032),('2032-10-22',203243,10,2032,22,42,203210,2032),('2032-10-23',203243,10,2032,23,42,203210,2032),('2032-10-24',203244,10,2032,24,43,203210,2032),('2032-10-25',203244,10,2032,25,43,203210,2032),('2032-10-26',203244,10,2032,26,43,203210,2032),('2032-10-27',203244,10,2032,27,43,203210,2032),('2032-10-28',203244,10,2032,28,43,203210,2032),('2032-10-29',203244,10,2032,29,43,203210,2032),('2032-10-30',203244,10,2032,30,43,203210,2032),('2032-10-31',203245,10,2032,31,44,203210,2032),('2032-11-01',203245,11,2032,1,44,203211,2032),('2032-11-02',203245,11,2032,2,44,203211,2032),('2032-11-03',203245,11,2032,3,44,203211,2032),('2032-11-04',203245,11,2032,4,44,203211,2032),('2032-11-05',203245,11,2032,5,44,203211,2032),('2032-11-06',203245,11,2032,6,44,203211,2032),('2032-11-07',203246,11,2032,7,45,203211,2032),('2032-11-08',203246,11,2032,8,45,203211,2032),('2032-11-09',203246,11,2032,9,45,203211,2032),('2032-11-10',203246,11,2032,10,45,203211,2032),('2032-11-11',203246,11,2032,11,45,203211,2032),('2032-11-12',203246,11,2032,12,45,203211,2032),('2032-11-13',203246,11,2032,13,45,203211,2032),('2032-11-14',203247,11,2032,14,46,203211,2032),('2032-11-15',203247,11,2032,15,46,203211,2032),('2032-11-16',203247,11,2032,16,46,203211,2032),('2032-11-17',203247,11,2032,17,46,203211,2032),('2032-11-18',203247,11,2032,18,46,203211,2032),('2032-11-19',203247,11,2032,19,46,203211,2032),('2032-11-20',203247,11,2032,20,46,203211,2032),('2032-11-21',203248,11,2032,21,47,203211,2032),('2032-11-22',203248,11,2032,22,47,203211,2032),('2032-11-23',203248,11,2032,23,47,203211,2032),('2032-11-24',203248,11,2032,24,47,203211,2032),('2032-11-25',203248,11,2032,25,47,203211,2032),('2032-11-26',203248,11,2032,26,47,203211,2032),('2032-11-27',203248,11,2032,27,47,203211,2032),('2032-11-28',203249,11,2032,28,48,203211,2032),('2032-11-29',203249,11,2032,29,48,203211,2032),('2032-11-30',203249,11,2032,30,48,203211,2032),('2032-12-01',203249,12,2032,1,48,203212,2033),('2032-12-02',203249,12,2032,2,48,203212,2033),('2032-12-03',203249,12,2032,3,48,203212,2033),('2032-12-04',203249,12,2032,4,48,203212,2033),('2032-12-05',203250,12,2032,5,49,203212,2033),('2032-12-06',203250,12,2032,6,49,203212,2033),('2032-12-07',203250,12,2032,7,49,203212,2033),('2032-12-08',203250,12,2032,8,49,203212,2033),('2032-12-09',203250,12,2032,9,49,203212,2033),('2032-12-10',203250,12,2032,10,49,203212,2033),('2032-12-11',203250,12,2032,11,49,203212,2033),('2032-12-12',203251,12,2032,12,50,203212,2033),('2032-12-13',203251,12,2032,13,50,203212,2033),('2032-12-14',203251,12,2032,14,50,203212,2033),('2032-12-15',203251,12,2032,15,50,203212,2033),('2032-12-16',203251,12,2032,16,50,203212,2033),('2032-12-17',203251,12,2032,17,50,203212,2033),('2032-12-18',203251,12,2032,18,50,203212,2033),('2032-12-19',203252,12,2032,19,51,203212,2033),('2032-12-20',203252,12,2032,20,51,203212,2033),('2032-12-21',203252,12,2032,21,51,203212,2033),('2032-12-22',203252,12,2032,22,51,203212,2033),('2032-12-23',203252,12,2032,23,51,203212,2033),('2032-12-24',203252,12,2032,24,51,203212,2033),('2032-12-25',203252,12,2032,25,51,203212,2033),('2032-12-26',203253,12,2032,26,52,203212,2033),('2032-12-27',203253,12,2032,27,52,203212,2033),('2032-12-28',203253,12,2032,28,52,203212,2033),('2032-12-29',203253,12,2032,29,52,203212,2033),('2032-12-30',203253,12,2032,30,52,203212,2033),('2032-12-31',203253,12,2032,31,52,203212,2033),('2033-01-01',203353,1,2033,1,52,203301,2033),('2033-01-02',203354,1,2033,2,1,203301,2033),('2033-01-03',203301,1,2033,3,1,203301,2033),('2033-01-04',203301,1,2033,4,1,203301,2033),('2033-01-05',203301,1,2033,5,1,203301,2033),('2033-01-06',203301,1,2033,6,1,203301,2033),('2033-01-07',203301,1,2033,7,1,203301,2033),('2033-01-08',203301,1,2033,8,1,203301,2033),('2033-01-09',203302,1,2033,9,2,203301,2033),('2033-01-10',203302,1,2033,10,2,203301,2033),('2033-01-11',203302,1,2033,11,2,203301,2033),('2033-01-12',203302,1,2033,12,2,203301,2033),('2033-01-13',203302,1,2033,13,2,203301,2033),('2033-01-14',203302,1,2033,14,2,203301,2033),('2033-01-15',203302,1,2033,15,2,203301,2033),('2033-01-16',203303,1,2033,16,3,203301,2033),('2033-01-17',203303,1,2033,17,3,203301,2033),('2033-01-18',203303,1,2033,18,3,203301,2033),('2033-01-19',203303,1,2033,19,3,203301,2033),('2033-01-20',203303,1,2033,20,3,203301,2033),('2033-01-21',203303,1,2033,21,3,203301,2033),('2033-01-22',203303,1,2033,22,3,203301,2033),('2033-01-23',203304,1,2033,23,4,203301,2033),('2033-01-24',203304,1,2033,24,4,203301,2033),('2033-01-25',203304,1,2033,25,4,203301,2033),('2033-01-26',203304,1,2033,26,4,203301,2033),('2033-01-27',203304,1,2033,27,4,203301,2033),('2033-01-28',203304,1,2033,28,4,203301,2033),('2033-01-29',203304,1,2033,29,4,203301,2033),('2033-01-30',203305,1,2033,30,5,203301,2033),('2033-01-31',203305,1,2033,31,5,203301,2033),('2033-02-01',203305,2,2033,1,5,203302,2033),('2033-02-02',203305,2,2033,2,5,203302,2033),('2033-02-03',203305,2,2033,3,5,203302,2033),('2033-02-04',203305,2,2033,4,5,203302,2033),('2033-02-05',203305,2,2033,5,5,203302,2033),('2033-02-06',203306,2,2033,6,6,203302,2033),('2033-02-07',203306,2,2033,7,6,203302,2033),('2033-02-08',203306,2,2033,8,6,203302,2033),('2033-02-09',203306,2,2033,9,6,203302,2033),('2033-02-10',203306,2,2033,10,6,203302,2033),('2033-02-11',203306,2,2033,11,6,203302,2033),('2033-02-12',203306,2,2033,12,6,203302,2033),('2033-02-13',203307,2,2033,13,7,203302,2033),('2033-02-14',203307,2,2033,14,7,203302,2033),('2033-02-15',203307,2,2033,15,7,203302,2033),('2033-02-16',203307,2,2033,16,7,203302,2033),('2033-02-17',203307,2,2033,17,7,203302,2033),('2033-02-18',203307,2,2033,18,7,203302,2033),('2033-02-19',203307,2,2033,19,7,203302,2033),('2033-02-20',203308,2,2033,20,8,203302,2033),('2033-02-21',203308,2,2033,21,8,203302,2033),('2033-02-22',203308,2,2033,22,8,203302,2033),('2033-02-23',203308,2,2033,23,8,203302,2033),('2033-02-24',203308,2,2033,24,8,203302,2033),('2033-02-25',203308,2,2033,25,8,203302,2033),('2033-02-26',203308,2,2033,26,8,203302,2033),('2033-02-27',203309,2,2033,27,9,203302,2033),('2033-02-28',203309,2,2033,28,9,203302,2033),('2033-03-01',203309,3,2033,1,9,203303,2033),('2033-03-02',203309,3,2033,2,9,203303,2033),('2033-03-03',203309,3,2033,3,9,203303,2033),('2033-03-04',203309,3,2033,4,9,203303,2033),('2033-03-05',203309,3,2033,5,9,203303,2033),('2033-03-06',203310,3,2033,6,10,203303,2033),('2033-03-07',203310,3,2033,7,10,203303,2033),('2033-03-08',203310,3,2033,8,10,203303,2033),('2033-03-09',203310,3,2033,9,10,203303,2033),('2033-03-10',203310,3,2033,10,10,203303,2033),('2033-03-11',203310,3,2033,11,10,203303,2033),('2033-03-12',203310,3,2033,12,10,203303,2033),('2033-03-13',203311,3,2033,13,11,203303,2033),('2033-03-14',203311,3,2033,14,11,203303,2033),('2033-03-15',203311,3,2033,15,11,203303,2033),('2033-03-16',203311,3,2033,16,11,203303,2033),('2033-03-17',203311,3,2033,17,11,203303,2033),('2033-03-18',203311,3,2033,18,11,203303,2033),('2033-03-19',203311,3,2033,19,11,203303,2033),('2033-03-20',203312,3,2033,20,12,203303,2033),('2033-03-21',203312,3,2033,21,12,203303,2033),('2033-03-22',203312,3,2033,22,12,203303,2033),('2033-03-23',203312,3,2033,23,12,203303,2033),('2033-03-24',203312,3,2033,24,12,203303,2033),('2033-03-25',203312,3,2033,25,12,203303,2033),('2033-03-26',203312,3,2033,26,12,203303,2033),('2033-03-27',203313,3,2033,27,13,203303,2033),('2033-03-28',203313,3,2033,28,13,203303,2033),('2033-03-29',203313,3,2033,29,13,203303,2033),('2033-03-30',203313,3,2033,30,13,203303,2033),('2033-03-31',203313,3,2033,31,13,203303,2033),('2033-04-01',203313,4,2033,1,13,203304,2033),('2033-04-02',203313,4,2033,2,13,203304,2033),('2033-04-03',203314,4,2033,3,14,203304,2033),('2033-04-04',203314,4,2033,4,14,203304,2033),('2033-04-05',203314,4,2033,5,14,203304,2033),('2033-04-06',203314,4,2033,6,14,203304,2033),('2033-04-07',203314,4,2033,7,14,203304,2033),('2033-04-08',203314,4,2033,8,14,203304,2033),('2033-04-09',203314,4,2033,9,14,203304,2033),('2033-04-10',203315,4,2033,10,15,203304,2033),('2033-04-11',203315,4,2033,11,15,203304,2033),('2033-04-12',203315,4,2033,12,15,203304,2033),('2033-04-13',203315,4,2033,13,15,203304,2033),('2033-04-14',203315,4,2033,14,15,203304,2033),('2033-04-15',203315,4,2033,15,15,203304,2033),('2033-04-16',203315,4,2033,16,15,203304,2033),('2033-04-17',203316,4,2033,17,16,203304,2033),('2033-04-18',203316,4,2033,18,16,203304,2033),('2033-04-19',203316,4,2033,19,16,203304,2033),('2033-04-20',203316,4,2033,20,16,203304,2033),('2033-04-21',203316,4,2033,21,16,203304,2033),('2033-04-22',203316,4,2033,22,16,203304,2033),('2033-04-23',203316,4,2033,23,16,203304,2033),('2033-04-24',203317,4,2033,24,17,203304,2033),('2033-04-25',203317,4,2033,25,17,203304,2033),('2033-04-26',203317,4,2033,26,17,203304,2033),('2033-04-27',203317,4,2033,27,17,203304,2033),('2033-04-28',203317,4,2033,28,17,203304,2033),('2033-04-29',203317,4,2033,29,17,203304,2033),('2033-04-30',203317,4,2033,30,17,203304,2033),('2033-05-01',203318,5,2033,1,18,203305,2033),('2033-05-02',203318,5,2033,2,18,203305,2033),('2033-05-03',203318,5,2033,3,18,203305,2033),('2033-05-04',203318,5,2033,4,18,203305,2033),('2033-05-05',203318,5,2033,5,18,203305,2033),('2033-05-06',203318,5,2033,6,18,203305,2033),('2033-05-07',203318,5,2033,7,18,203305,2033),('2033-05-08',203319,5,2033,8,19,203305,2033),('2033-05-09',203319,5,2033,9,19,203305,2033),('2033-05-10',203319,5,2033,10,19,203305,2033),('2033-05-11',203319,5,2033,11,19,203305,2033),('2033-05-12',203319,5,2033,12,19,203305,2033),('2033-05-13',203319,5,2033,13,19,203305,2033),('2033-05-14',203319,5,2033,14,19,203305,2033),('2033-05-15',203320,5,2033,15,20,203305,2033),('2033-05-16',203320,5,2033,16,20,203305,2033),('2033-05-17',203320,5,2033,17,20,203305,2033),('2033-05-18',203320,5,2033,18,20,203305,2033),('2033-05-19',203320,5,2033,19,20,203305,2033),('2033-05-20',203320,5,2033,20,20,203305,2033),('2033-05-21',203320,5,2033,21,20,203305,2033),('2033-05-22',203321,5,2033,22,21,203305,2033),('2033-05-23',203321,5,2033,23,21,203305,2033),('2033-05-24',203321,5,2033,24,21,203305,2033),('2033-05-25',203321,5,2033,25,21,203305,2033),('2033-05-26',203321,5,2033,26,21,203305,2033),('2033-05-27',203321,5,2033,27,21,203305,2033),('2033-05-28',203321,5,2033,28,21,203305,2033),('2033-05-29',203322,5,2033,29,22,203305,2033),('2033-05-30',203322,5,2033,30,22,203305,2033),('2033-05-31',203322,5,2033,31,22,203305,2033),('2033-06-01',203322,6,2033,1,22,203306,2033),('2033-06-02',203322,6,2033,2,22,203306,2033),('2033-06-03',203322,6,2033,3,22,203306,2033),('2033-06-04',203322,6,2033,4,22,203306,2033),('2033-06-05',203323,6,2033,5,23,203306,2033),('2033-06-06',203323,6,2033,6,23,203306,2033),('2033-06-07',203323,6,2033,7,23,203306,2033),('2033-06-08',203323,6,2033,8,23,203306,2033),('2033-06-09',203323,6,2033,9,23,203306,2033),('2033-06-10',203323,6,2033,10,23,203306,2033),('2033-06-11',203323,6,2033,11,23,203306,2033),('2033-06-12',203324,6,2033,12,24,203306,2033),('2033-06-13',203324,6,2033,13,24,203306,2033),('2033-06-14',203324,6,2033,14,24,203306,2033),('2033-06-15',203324,6,2033,15,24,203306,2033),('2033-06-16',203324,6,2033,16,24,203306,2033),('2033-06-17',203324,6,2033,17,24,203306,2033),('2033-06-18',203324,6,2033,18,24,203306,2033),('2033-06-19',203325,6,2033,19,25,203306,2033),('2033-06-20',203325,6,2033,20,25,203306,2033),('2033-06-21',203325,6,2033,21,25,203306,2033),('2033-06-22',203325,6,2033,22,25,203306,2033),('2033-06-23',203325,6,2033,23,25,203306,2033),('2033-06-24',203325,6,2033,24,25,203306,2033),('2033-06-25',203325,6,2033,25,25,203306,2033),('2033-06-26',203326,6,2033,26,26,203306,2033),('2033-06-27',203326,6,2033,27,26,203306,2033),('2033-06-28',203326,6,2033,28,26,203306,2033),('2033-06-29',203326,6,2033,29,26,203306,2033),('2033-06-30',203326,6,2033,30,26,203306,2033),('2033-07-01',203326,7,2033,1,26,203307,2033),('2033-07-02',203326,7,2033,2,26,203307,2033),('2033-07-03',203327,7,2033,3,27,203307,2033),('2033-07-04',203327,7,2033,4,27,203307,2033),('2033-07-05',203327,7,2033,5,27,203307,2033),('2033-07-06',203327,7,2033,6,27,203307,2033),('2033-07-07',203327,7,2033,7,27,203307,2033),('2033-07-08',203327,7,2033,8,27,203307,2033),('2033-07-09',203327,7,2033,9,27,203307,2033),('2033-07-10',203328,7,2033,10,28,203307,2033),('2033-07-11',203328,7,2033,11,28,203307,2033),('2033-07-12',203328,7,2033,12,28,203307,2033),('2033-07-13',203328,7,2033,13,28,203307,2033),('2033-07-14',203328,7,2033,14,28,203307,2033),('2033-07-15',203328,7,2033,15,28,203307,2033),('2033-07-16',203328,7,2033,16,28,203307,2033),('2033-07-17',203329,7,2033,17,29,203307,2033),('2033-07-18',203329,7,2033,18,29,203307,2033),('2033-07-19',203329,7,2033,19,29,203307,2033),('2033-07-20',203329,7,2033,20,29,203307,2033),('2033-07-21',203329,7,2033,21,29,203307,2033),('2033-07-22',203329,7,2033,22,29,203307,2033),('2033-07-23',203329,7,2033,23,29,203307,2033),('2033-07-24',203330,7,2033,24,30,203307,2033),('2033-07-25',203330,7,2033,25,30,203307,2033),('2033-07-26',203330,7,2033,26,30,203307,2033),('2033-07-27',203330,7,2033,27,30,203307,2033),('2033-07-28',203330,7,2033,28,30,203307,2033),('2033-07-29',203330,7,2033,29,30,203307,2033),('2033-07-30',203330,7,2033,30,30,203307,2033),('2033-07-31',203331,7,2033,31,31,203307,2033),('2033-08-01',203331,8,2033,1,31,203308,2033),('2033-08-02',203331,8,2033,2,31,203308,2033),('2033-08-03',203331,8,2033,3,31,203308,2033),('2033-08-04',203331,8,2033,4,31,203308,2033),('2033-08-05',203331,8,2033,5,31,203308,2033),('2033-08-06',203331,8,2033,6,31,203308,2033),('2033-08-07',203332,8,2033,7,32,203308,2033),('2033-08-08',203332,8,2033,8,32,203308,2033),('2033-08-09',203332,8,2033,9,32,203308,2033),('2033-08-10',203332,8,2033,10,32,203308,2033),('2033-08-11',203332,8,2033,11,32,203308,2033),('2033-08-12',203332,8,2033,12,32,203308,2033),('2033-08-13',203332,8,2033,13,32,203308,2033),('2033-08-14',203333,8,2033,14,33,203308,2033),('2033-08-15',203333,8,2033,15,33,203308,2033),('2033-08-16',203333,8,2033,16,33,203308,2033),('2033-08-17',203333,8,2033,17,33,203308,2033),('2033-08-18',203333,8,2033,18,33,203308,2033),('2033-08-19',203333,8,2033,19,33,203308,2033),('2033-08-20',203333,8,2033,20,33,203308,2033),('2033-08-21',203334,8,2033,21,34,203308,2033),('2033-08-22',203334,8,2033,22,34,203308,2033),('2033-08-23',203334,8,2033,23,34,203308,2033),('2033-08-24',203334,8,2033,24,34,203308,2033),('2033-08-25',203334,8,2033,25,34,203308,2033),('2033-08-26',203334,8,2033,26,34,203308,2033),('2033-08-27',203334,8,2033,27,34,203308,2033),('2033-08-28',203335,8,2033,28,35,203308,2033),('2033-08-29',203335,8,2033,29,35,203308,2033),('2033-08-30',203335,8,2033,30,35,203308,2033),('2033-08-31',203335,8,2033,31,35,203308,2033),('2033-09-01',203335,9,2033,1,35,203309,2033),('2033-09-02',203335,9,2033,2,35,203309,2033),('2033-09-03',203335,9,2033,3,35,203309,2033),('2033-09-04',203336,9,2033,4,36,203309,2033),('2033-09-05',203336,9,2033,5,36,203309,2033),('2033-09-06',203336,9,2033,6,36,203309,2033),('2033-09-07',203336,9,2033,7,36,203309,2033),('2033-09-08',203336,9,2033,8,36,203309,2033),('2033-09-09',203336,9,2033,9,36,203309,2033),('2033-09-10',203336,9,2033,10,36,203309,2033),('2033-09-11',203337,9,2033,11,37,203309,2033),('2033-09-12',203337,9,2033,12,37,203309,2033),('2033-09-13',203337,9,2033,13,37,203309,2033),('2033-09-14',203337,9,2033,14,37,203309,2033),('2033-09-15',203337,9,2033,15,37,203309,2033),('2033-09-16',203337,9,2033,16,37,203309,2033),('2033-09-17',203337,9,2033,17,37,203309,2033),('2033-09-18',203338,9,2033,18,38,203309,2033),('2033-09-19',203338,9,2033,19,38,203309,2033),('2033-09-20',203338,9,2033,20,38,203309,2033),('2033-09-21',203338,9,2033,21,38,203309,2033),('2033-09-22',203338,9,2033,22,38,203309,2033),('2033-09-23',203338,9,2033,23,38,203309,2033),('2033-09-24',203338,9,2033,24,38,203309,2033),('2033-09-25',203339,9,2033,25,39,203309,2033),('2033-09-26',203339,9,2033,26,39,203309,2033),('2033-09-27',203339,9,2033,27,39,203309,2033),('2033-09-28',203339,9,2033,28,39,203309,2033),('2033-09-29',203339,9,2033,29,39,203309,2033),('2033-09-30',203339,9,2033,30,39,203309,2033),('2033-10-01',203339,10,2033,1,39,203310,2033),('2033-10-02',203340,10,2033,2,40,203310,2033),('2033-10-03',203340,10,2033,3,40,203310,2033),('2033-10-04',203340,10,2033,4,40,203310,2033),('2033-10-05',203340,10,2033,5,40,203310,2033),('2033-10-06',203340,10,2033,6,40,203310,2033),('2033-10-07',203340,10,2033,7,40,203310,2033),('2033-10-08',203340,10,2033,8,40,203310,2033),('2033-10-09',203341,10,2033,9,41,203310,2033),('2033-10-10',203341,10,2033,10,41,203310,2033),('2033-10-11',203341,10,2033,11,41,203310,2033),('2033-10-12',203341,10,2033,12,41,203310,2033),('2033-10-13',203341,10,2033,13,41,203310,2033),('2033-10-14',203341,10,2033,14,41,203310,2033),('2033-10-15',203341,10,2033,15,41,203310,2033),('2033-10-16',203342,10,2033,16,42,203310,2033),('2033-10-17',203342,10,2033,17,42,203310,2033),('2033-10-18',203342,10,2033,18,42,203310,2033),('2033-10-19',203342,10,2033,19,42,203310,2033),('2033-10-20',203342,10,2033,20,42,203310,2033),('2033-10-21',203342,10,2033,21,42,203310,2033),('2033-10-22',203342,10,2033,22,42,203310,2033),('2033-10-23',203343,10,2033,23,43,203310,2033),('2033-10-24',203343,10,2033,24,43,203310,2033),('2033-10-25',203343,10,2033,25,43,203310,2033),('2033-10-26',203343,10,2033,26,43,203310,2033),('2033-10-27',203343,10,2033,27,43,203310,2033),('2033-10-28',203343,10,2033,28,43,203310,2033),('2033-10-29',203343,10,2033,29,43,203310,2033),('2033-10-30',203344,10,2033,30,44,203310,2033),('2033-10-31',203344,10,2033,31,44,203310,2033),('2033-11-01',203344,11,2033,1,44,203311,2033),('2033-11-02',203344,11,2033,2,44,203311,2033),('2033-11-03',203344,11,2033,3,44,203311,2033),('2033-11-04',203344,11,2033,4,44,203311,2033),('2033-11-05',203344,11,2033,5,44,203311,2033),('2033-11-06',203345,11,2033,6,45,203311,2033),('2033-11-07',203345,11,2033,7,45,203311,2033),('2033-11-08',203345,11,2033,8,45,203311,2033),('2033-11-09',203345,11,2033,9,45,203311,2033),('2033-11-10',203345,11,2033,10,45,203311,2033),('2033-11-11',203345,11,2033,11,45,203311,2033),('2033-11-12',203345,11,2033,12,45,203311,2033),('2033-11-13',203346,11,2033,13,46,203311,2033),('2033-11-14',203346,11,2033,14,46,203311,2033),('2033-11-15',203346,11,2033,15,46,203311,2033),('2033-11-16',203346,11,2033,16,46,203311,2033),('2033-11-17',203346,11,2033,17,46,203311,2033),('2033-11-18',203346,11,2033,18,46,203311,2033),('2033-11-19',203346,11,2033,19,46,203311,2033),('2033-11-20',203347,11,2033,20,47,203311,2033),('2033-11-21',203347,11,2033,21,47,203311,2033),('2033-11-22',203347,11,2033,22,47,203311,2033),('2033-11-23',203347,11,2033,23,47,203311,2033),('2033-11-24',203347,11,2033,24,47,203311,2033),('2033-11-25',203347,11,2033,25,47,203311,2033),('2033-11-26',203347,11,2033,26,47,203311,2033),('2033-11-27',203348,11,2033,27,48,203311,2033),('2033-11-28',203348,11,2033,28,48,203311,2033),('2033-11-29',203348,11,2033,29,48,203311,2033),('2033-11-30',203348,11,2033,30,48,203311,2033),('2033-12-01',203348,12,2033,1,48,203312,2034),('2033-12-02',203348,12,2033,2,48,203312,2034),('2033-12-03',203348,12,2033,3,48,203312,2034),('2033-12-04',203349,12,2033,4,49,203312,2034),('2033-12-05',203349,12,2033,5,49,203312,2034),('2033-12-06',203349,12,2033,6,49,203312,2034),('2033-12-07',203349,12,2033,7,49,203312,2034),('2033-12-08',203349,12,2033,8,49,203312,2034),('2033-12-09',203349,12,2033,9,49,203312,2034),('2033-12-10',203349,12,2033,10,49,203312,2034),('2033-12-11',203350,12,2033,11,50,203312,2034),('2033-12-12',203350,12,2033,12,50,203312,2034),('2033-12-13',203350,12,2033,13,50,203312,2034),('2033-12-14',203350,12,2033,14,50,203312,2034),('2033-12-15',203350,12,2033,15,50,203312,2034),('2033-12-16',203350,12,2033,16,50,203312,2034),('2033-12-17',203350,12,2033,17,50,203312,2034),('2033-12-18',203351,12,2033,18,51,203312,2034),('2033-12-19',203351,12,2033,19,51,203312,2034),('2033-12-20',203351,12,2033,20,51,203312,2034),('2033-12-21',203351,12,2033,21,51,203312,2034),('2033-12-22',203351,12,2033,22,51,203312,2034),('2033-12-23',203351,12,2033,23,51,203312,2034),('2033-12-24',203351,12,2033,24,51,203312,2034),('2033-12-25',203352,12,2033,25,52,203312,2034),('2033-12-26',203352,12,2033,26,52,203312,2034),('2033-12-27',203352,12,2033,27,52,203312,2034),('2033-12-28',203352,12,2033,28,52,203312,2034),('2033-12-29',203352,12,2033,29,52,203312,2034),('2033-12-30',203352,12,2033,30,52,203312,2034),('2033-12-31',203352,12,2033,31,52,203312,2034),('2034-01-01',203453,1,2034,1,1,203401,2034),('2034-01-02',203401,1,2034,2,1,203401,2034),('2034-01-03',203401,1,2034,3,1,203401,2034),('2034-01-04',203401,1,2034,4,1,203401,2034),('2034-01-05',203401,1,2034,5,1,203401,2034),('2034-01-06',203401,1,2034,6,1,203401,2034),('2034-01-07',203401,1,2034,7,1,203401,2034),('2034-01-08',203402,1,2034,8,2,203401,2034),('2034-01-09',203402,1,2034,9,2,203401,2034),('2034-01-10',203402,1,2034,10,2,203401,2034),('2034-01-11',203402,1,2034,11,2,203401,2034),('2034-01-12',203402,1,2034,12,2,203401,2034),('2034-01-13',203402,1,2034,13,2,203401,2034),('2034-01-14',203402,1,2034,14,2,203401,2034),('2034-01-15',203403,1,2034,15,3,203401,2034),('2034-01-16',203403,1,2034,16,3,203401,2034),('2034-01-17',203403,1,2034,17,3,203401,2034),('2034-01-18',203403,1,2034,18,3,203401,2034),('2034-01-19',203403,1,2034,19,3,203401,2034),('2034-01-20',203403,1,2034,20,3,203401,2034),('2034-01-21',203403,1,2034,21,3,203401,2034),('2034-01-22',203404,1,2034,22,4,203401,2034),('2034-01-23',203404,1,2034,23,4,203401,2034),('2034-01-24',203404,1,2034,24,4,203401,2034),('2034-01-25',203404,1,2034,25,4,203401,2034),('2034-01-26',203404,1,2034,26,4,203401,2034),('2034-01-27',203404,1,2034,27,4,203401,2034),('2034-01-28',203404,1,2034,28,4,203401,2034),('2034-01-29',203405,1,2034,29,5,203401,2034),('2034-01-30',203405,1,2034,30,5,203401,2034),('2034-01-31',203405,1,2034,31,5,203401,2034),('2034-02-01',203405,2,2034,1,5,203402,2034),('2034-02-02',203405,2,2034,2,5,203402,2034),('2034-02-03',203405,2,2034,3,5,203402,2034),('2034-02-04',203405,2,2034,4,5,203402,2034),('2034-02-05',203406,2,2034,5,6,203402,2034),('2034-02-06',203406,2,2034,6,6,203402,2034),('2034-02-07',203406,2,2034,7,6,203402,2034),('2034-02-08',203406,2,2034,8,6,203402,2034),('2034-02-09',203406,2,2034,9,6,203402,2034),('2034-02-10',203406,2,2034,10,6,203402,2034),('2034-02-11',203406,2,2034,11,6,203402,2034),('2034-02-12',203407,2,2034,12,7,203402,2034),('2034-02-13',203407,2,2034,13,7,203402,2034),('2034-02-14',203407,2,2034,14,7,203402,2034),('2034-02-15',203407,2,2034,15,7,203402,2034),('2034-02-16',203407,2,2034,16,7,203402,2034),('2034-02-17',203407,2,2034,17,7,203402,2034),('2034-02-18',203407,2,2034,18,7,203402,2034),('2034-02-19',203408,2,2034,19,8,203402,2034),('2034-02-20',203408,2,2034,20,8,203402,2034),('2034-02-21',203408,2,2034,21,8,203402,2034),('2034-02-22',203408,2,2034,22,8,203402,2034),('2034-02-23',203408,2,2034,23,8,203402,2034),('2034-02-24',203408,2,2034,24,8,203402,2034),('2034-02-25',203408,2,2034,25,8,203402,2034),('2034-02-26',203409,2,2034,26,9,203402,2034),('2034-02-27',203409,2,2034,27,9,203402,2034),('2034-02-28',203409,2,2034,28,9,203402,2034),('2034-03-01',203409,3,2034,1,9,203403,2034),('2034-03-02',203409,3,2034,2,9,203403,2034),('2034-03-03',203409,3,2034,3,9,203403,2034),('2034-03-04',203409,3,2034,4,9,203403,2034),('2034-03-05',203410,3,2034,5,10,203403,2034),('2034-03-06',203410,3,2034,6,10,203403,2034),('2034-03-07',203410,3,2034,7,10,203403,2034),('2034-03-08',203410,3,2034,8,10,203403,2034),('2034-03-09',203410,3,2034,9,10,203403,2034),('2034-03-10',203410,3,2034,10,10,203403,2034),('2034-03-11',203410,3,2034,11,10,203403,2034),('2034-03-12',203411,3,2034,12,11,203403,2034),('2034-03-13',203411,3,2034,13,11,203403,2034),('2034-03-14',203411,3,2034,14,11,203403,2034),('2034-03-15',203411,3,2034,15,11,203403,2034),('2034-03-16',203411,3,2034,16,11,203403,2034),('2034-03-17',203411,3,2034,17,11,203403,2034),('2034-03-18',203411,3,2034,18,11,203403,2034),('2034-03-19',203412,3,2034,19,12,203403,2034),('2034-03-20',203412,3,2034,20,12,203403,2034),('2034-03-21',203412,3,2034,21,12,203403,2034),('2034-03-22',203412,3,2034,22,12,203403,2034),('2034-03-23',203412,3,2034,23,12,203403,2034),('2034-03-24',203412,3,2034,24,12,203403,2034),('2034-03-25',203412,3,2034,25,12,203403,2034),('2034-03-26',203413,3,2034,26,13,203403,2034),('2034-03-27',203413,3,2034,27,13,203403,2034),('2034-03-28',203413,3,2034,28,13,203403,2034),('2034-03-29',203413,3,2034,29,13,203403,2034),('2034-03-30',203413,3,2034,30,13,203403,2034),('2034-03-31',203413,3,2034,31,13,203403,2034),('2034-04-01',203413,4,2034,1,13,203404,2034),('2034-04-02',203414,4,2034,2,14,203404,2034),('2034-04-03',203414,4,2034,3,14,203404,2034),('2034-04-04',203414,4,2034,4,14,203404,2034),('2034-04-05',203414,4,2034,5,14,203404,2034),('2034-04-06',203414,4,2034,6,14,203404,2034),('2034-04-07',203414,4,2034,7,14,203404,2034),('2034-04-08',203414,4,2034,8,14,203404,2034),('2034-04-09',203415,4,2034,9,15,203404,2034),('2034-04-10',203415,4,2034,10,15,203404,2034),('2034-04-11',203415,4,2034,11,15,203404,2034),('2034-04-12',203415,4,2034,12,15,203404,2034),('2034-04-13',203415,4,2034,13,15,203404,2034),('2034-04-14',203415,4,2034,14,15,203404,2034),('2034-04-15',203415,4,2034,15,15,203404,2034),('2034-04-16',203416,4,2034,16,16,203404,2034),('2034-04-17',203416,4,2034,17,16,203404,2034),('2034-04-18',203416,4,2034,18,16,203404,2034),('2034-04-19',203416,4,2034,19,16,203404,2034),('2034-04-20',203416,4,2034,20,16,203404,2034),('2034-04-21',203416,4,2034,21,16,203404,2034),('2034-04-22',203416,4,2034,22,16,203404,2034),('2034-04-23',203417,4,2034,23,17,203404,2034),('2034-04-24',203417,4,2034,24,17,203404,2034),('2034-04-25',203417,4,2034,25,17,203404,2034),('2034-04-26',203417,4,2034,26,17,203404,2034),('2034-04-27',203417,4,2034,27,17,203404,2034),('2034-04-28',203417,4,2034,28,17,203404,2034),('2034-04-29',203417,4,2034,29,17,203404,2034),('2034-04-30',203418,4,2034,30,18,203404,2034),('2034-05-01',203418,5,2034,1,18,203405,2034),('2034-05-02',203418,5,2034,2,18,203405,2034),('2034-05-03',203418,5,2034,3,18,203405,2034),('2034-05-04',203418,5,2034,4,18,203405,2034),('2034-05-05',203418,5,2034,5,18,203405,2034),('2034-05-06',203418,5,2034,6,18,203405,2034),('2034-05-07',203419,5,2034,7,19,203405,2034),('2034-05-08',203419,5,2034,8,19,203405,2034),('2034-05-09',203419,5,2034,9,19,203405,2034),('2034-05-10',203419,5,2034,10,19,203405,2034),('2034-05-11',203419,5,2034,11,19,203405,2034),('2034-05-12',203419,5,2034,12,19,203405,2034),('2034-05-13',203419,5,2034,13,19,203405,2034),('2034-05-14',203420,5,2034,14,20,203405,2034),('2034-05-15',203420,5,2034,15,20,203405,2034),('2034-05-16',203420,5,2034,16,20,203405,2034),('2034-05-17',203420,5,2034,17,20,203405,2034),('2034-05-18',203420,5,2034,18,20,203405,2034),('2034-05-19',203420,5,2034,19,20,203405,2034),('2034-05-20',203420,5,2034,20,20,203405,2034),('2034-05-21',203421,5,2034,21,21,203405,2034),('2034-05-22',203421,5,2034,22,21,203405,2034),('2034-05-23',203421,5,2034,23,21,203405,2034),('2034-05-24',203421,5,2034,24,21,203405,2034),('2034-05-25',203421,5,2034,25,21,203405,2034),('2034-05-26',203421,5,2034,26,21,203405,2034),('2034-05-27',203421,5,2034,27,21,203405,2034),('2034-05-28',203422,5,2034,28,22,203405,2034),('2034-05-29',203422,5,2034,29,22,203405,2034),('2034-05-30',203422,5,2034,30,22,203405,2034),('2034-05-31',203422,5,2034,31,22,203405,2034),('2034-06-01',203422,6,2034,1,22,203406,2034),('2034-06-02',203422,6,2034,2,22,203406,2034),('2034-06-03',203422,6,2034,3,22,203406,2034),('2034-06-04',203423,6,2034,4,23,203406,2034),('2034-06-05',203423,6,2034,5,23,203406,2034),('2034-06-06',203423,6,2034,6,23,203406,2034),('2034-06-07',203423,6,2034,7,23,203406,2034),('2034-06-08',203423,6,2034,8,23,203406,2034),('2034-06-09',203423,6,2034,9,23,203406,2034),('2034-06-10',203423,6,2034,10,23,203406,2034),('2034-06-11',203424,6,2034,11,24,203406,2034),('2034-06-12',203424,6,2034,12,24,203406,2034),('2034-06-13',203424,6,2034,13,24,203406,2034),('2034-06-14',203424,6,2034,14,24,203406,2034),('2034-06-15',203424,6,2034,15,24,203406,2034),('2034-06-16',203424,6,2034,16,24,203406,2034),('2034-06-17',203424,6,2034,17,24,203406,2034),('2034-06-18',203425,6,2034,18,25,203406,2034),('2034-06-19',203425,6,2034,19,25,203406,2034),('2034-06-20',203425,6,2034,20,25,203406,2034),('2034-06-21',203425,6,2034,21,25,203406,2034),('2034-06-22',203425,6,2034,22,25,203406,2034),('2034-06-23',203425,6,2034,23,25,203406,2034),('2034-06-24',203425,6,2034,24,25,203406,2034),('2034-06-25',203426,6,2034,25,26,203406,2034),('2034-06-26',203426,6,2034,26,26,203406,2034),('2034-06-27',203426,6,2034,27,26,203406,2034),('2034-06-28',203426,6,2034,28,26,203406,2034),('2034-06-29',203426,6,2034,29,26,203406,2034),('2034-06-30',203426,6,2034,30,26,203406,2034),('2034-07-01',203426,7,2034,1,26,203407,2034),('2034-07-02',203427,7,2034,2,27,203407,2034),('2034-07-03',203427,7,2034,3,27,203407,2034),('2034-07-04',203427,7,2034,4,27,203407,2034),('2034-07-05',203427,7,2034,5,27,203407,2034),('2034-07-06',203427,7,2034,6,27,203407,2034),('2034-07-07',203427,7,2034,7,27,203407,2034),('2034-07-08',203427,7,2034,8,27,203407,2034),('2034-07-09',203428,7,2034,9,28,203407,2034),('2034-07-10',203428,7,2034,10,28,203407,2034),('2034-07-11',203428,7,2034,11,28,203407,2034),('2034-07-12',203428,7,2034,12,28,203407,2034),('2034-07-13',203428,7,2034,13,28,203407,2034),('2034-07-14',203428,7,2034,14,28,203407,2034),('2034-07-15',203428,7,2034,15,28,203407,2034),('2034-07-16',203429,7,2034,16,29,203407,2034),('2034-07-17',203429,7,2034,17,29,203407,2034),('2034-07-18',203429,7,2034,18,29,203407,2034),('2034-07-19',203429,7,2034,19,29,203407,2034),('2034-07-20',203429,7,2034,20,29,203407,2034),('2034-07-21',203429,7,2034,21,29,203407,2034),('2034-07-22',203429,7,2034,22,29,203407,2034),('2034-07-23',203430,7,2034,23,30,203407,2034),('2034-07-24',203430,7,2034,24,30,203407,2034),('2034-07-25',203430,7,2034,25,30,203407,2034),('2034-07-26',203430,7,2034,26,30,203407,2034),('2034-07-27',203430,7,2034,27,30,203407,2034),('2034-07-28',203430,7,2034,28,30,203407,2034),('2034-07-29',203430,7,2034,29,30,203407,2034),('2034-07-30',203431,7,2034,30,31,203407,2034),('2034-07-31',203431,7,2034,31,31,203407,2034),('2034-08-01',203431,8,2034,1,31,203408,2034),('2034-08-02',203431,8,2034,2,31,203408,2034),('2034-08-03',203431,8,2034,3,31,203408,2034),('2034-08-04',203431,8,2034,4,31,203408,2034),('2034-08-05',203431,8,2034,5,31,203408,2034),('2034-08-06',203432,8,2034,6,32,203408,2034),('2034-08-07',203432,8,2034,7,32,203408,2034),('2034-08-08',203432,8,2034,8,32,203408,2034),('2034-08-09',203432,8,2034,9,32,203408,2034),('2034-08-10',203432,8,2034,10,32,203408,2034),('2034-08-11',203432,8,2034,11,32,203408,2034),('2034-08-12',203432,8,2034,12,32,203408,2034),('2034-08-13',203433,8,2034,13,33,203408,2034),('2034-08-14',203433,8,2034,14,33,203408,2034),('2034-08-15',203433,8,2034,15,33,203408,2034),('2034-08-16',203433,8,2034,16,33,203408,2034),('2034-08-17',203433,8,2034,17,33,203408,2034),('2034-08-18',203433,8,2034,18,33,203408,2034),('2034-08-19',203433,8,2034,19,33,203408,2034),('2034-08-20',203434,8,2034,20,34,203408,2034),('2034-08-21',203434,8,2034,21,34,203408,2034),('2034-08-22',203434,8,2034,22,34,203408,2034),('2034-08-23',203434,8,2034,23,34,203408,2034),('2034-08-24',203434,8,2034,24,34,203408,2034),('2034-08-25',203434,8,2034,25,34,203408,2034),('2034-08-26',203434,8,2034,26,34,203408,2034),('2034-08-27',203435,8,2034,27,35,203408,2034),('2034-08-28',203435,8,2034,28,35,203408,2034),('2034-08-29',203435,8,2034,29,35,203408,2034),('2034-08-30',203435,8,2034,30,35,203408,2034),('2034-08-31',203435,8,2034,31,35,203408,2034),('2034-09-01',203435,9,2034,1,35,203409,2034),('2034-09-02',203435,9,2034,2,35,203409,2034),('2034-09-03',203436,9,2034,3,36,203409,2034),('2034-09-04',203436,9,2034,4,36,203409,2034),('2034-09-05',203436,9,2034,5,36,203409,2034),('2034-09-06',203436,9,2034,6,36,203409,2034),('2034-09-07',203436,9,2034,7,36,203409,2034),('2034-09-08',203436,9,2034,8,36,203409,2034),('2034-09-09',203436,9,2034,9,36,203409,2034),('2034-09-10',203437,9,2034,10,37,203409,2034),('2034-09-11',203437,9,2034,11,37,203409,2034),('2034-09-12',203437,9,2034,12,37,203409,2034),('2034-09-13',203437,9,2034,13,37,203409,2034),('2034-09-14',203437,9,2034,14,37,203409,2034),('2034-09-15',203437,9,2034,15,37,203409,2034),('2034-09-16',203437,9,2034,16,37,203409,2034),('2034-09-17',203438,9,2034,17,38,203409,2034),('2034-09-18',203438,9,2034,18,38,203409,2034),('2034-09-19',203438,9,2034,19,38,203409,2034),('2034-09-20',203438,9,2034,20,38,203409,2034),('2034-09-21',203438,9,2034,21,38,203409,2034),('2034-09-22',203438,9,2034,22,38,203409,2034),('2034-09-23',203438,9,2034,23,38,203409,2034),('2034-09-24',203439,9,2034,24,39,203409,2034),('2034-09-25',203439,9,2034,25,39,203409,2034),('2034-09-26',203439,9,2034,26,39,203409,2034),('2034-09-27',203439,9,2034,27,39,203409,2034),('2034-09-28',203439,9,2034,28,39,203409,2034),('2034-09-29',203439,9,2034,29,39,203409,2034),('2034-09-30',203439,9,2034,30,39,203409,2034),('2034-10-01',203440,10,2034,1,40,203410,2034),('2034-10-02',203440,10,2034,2,40,203410,2034),('2034-10-03',203440,10,2034,3,40,203410,2034),('2034-10-04',203440,10,2034,4,40,203410,2034),('2034-10-05',203440,10,2034,5,40,203410,2034),('2034-10-06',203440,10,2034,6,40,203410,2034),('2034-10-07',203440,10,2034,7,40,203410,2034),('2034-10-08',203441,10,2034,8,41,203410,2034),('2034-10-09',203441,10,2034,9,41,203410,2034),('2034-10-10',203441,10,2034,10,41,203410,2034),('2034-10-11',203441,10,2034,11,41,203410,2034),('2034-10-12',203441,10,2034,12,41,203410,2034),('2034-10-13',203441,10,2034,13,41,203410,2034),('2034-10-14',203441,10,2034,14,41,203410,2034),('2034-10-15',203442,10,2034,15,42,203410,2034),('2034-10-16',203442,10,2034,16,42,203410,2034),('2034-10-17',203442,10,2034,17,42,203410,2034),('2034-10-18',203442,10,2034,18,42,203410,2034),('2034-10-19',203442,10,2034,19,42,203410,2034),('2034-10-20',203442,10,2034,20,42,203410,2034),('2034-10-21',203442,10,2034,21,42,203410,2034),('2034-10-22',203443,10,2034,22,43,203410,2034),('2034-10-23',203443,10,2034,23,43,203410,2034),('2034-10-24',203443,10,2034,24,43,203410,2034),('2034-10-25',203443,10,2034,25,43,203410,2034),('2034-10-26',203443,10,2034,26,43,203410,2034),('2034-10-27',203443,10,2034,27,43,203410,2034),('2034-10-28',203443,10,2034,28,43,203410,2034),('2034-10-29',203444,10,2034,29,44,203410,2034),('2034-10-30',203444,10,2034,30,44,203410,2034),('2034-10-31',203444,10,2034,31,44,203410,2034),('2034-11-01',203444,11,2034,1,44,203411,2034),('2034-11-02',203444,11,2034,2,44,203411,2034),('2034-11-03',203444,11,2034,3,44,203411,2034),('2034-11-04',203444,11,2034,4,44,203411,2034),('2034-11-05',203445,11,2034,5,45,203411,2034),('2034-11-06',203445,11,2034,6,45,203411,2034),('2034-11-07',203445,11,2034,7,45,203411,2034),('2034-11-08',203445,11,2034,8,45,203411,2034),('2034-11-09',203445,11,2034,9,45,203411,2034),('2034-11-10',203445,11,2034,10,45,203411,2034),('2034-11-11',203445,11,2034,11,45,203411,2034),('2034-11-12',203446,11,2034,12,46,203411,2034),('2034-11-13',203446,11,2034,13,46,203411,2034),('2034-11-14',203446,11,2034,14,46,203411,2034),('2034-11-15',203446,11,2034,15,46,203411,2034),('2034-11-16',203446,11,2034,16,46,203411,2034),('2034-11-17',203446,11,2034,17,46,203411,2034),('2034-11-18',203446,11,2034,18,46,203411,2034),('2034-11-19',203447,11,2034,19,47,203411,2034),('2034-11-20',203447,11,2034,20,47,203411,2034),('2034-11-21',203447,11,2034,21,47,203411,2034),('2034-11-22',203447,11,2034,22,47,203411,2034),('2034-11-23',203447,11,2034,23,47,203411,2034),('2034-11-24',203447,11,2034,24,47,203411,2034),('2034-11-25',203447,11,2034,25,47,203411,2034),('2034-11-26',203448,11,2034,26,48,203411,2034),('2034-11-27',203448,11,2034,27,48,203411,2034),('2034-11-28',203448,11,2034,28,48,203411,2034),('2034-11-29',203448,11,2034,29,48,203411,2034),('2034-11-30',203448,11,2034,30,48,203411,2034),('2034-12-01',203448,12,2034,1,48,203412,2035),('2034-12-02',203448,12,2034,2,48,203412,2035),('2034-12-03',203449,12,2034,3,49,203412,2035),('2034-12-04',203449,12,2034,4,49,203412,2035),('2034-12-05',203449,12,2034,5,49,203412,2035),('2034-12-06',203449,12,2034,6,49,203412,2035),('2034-12-07',203449,12,2034,7,49,203412,2035),('2034-12-08',203449,12,2034,8,49,203412,2035),('2034-12-09',203449,12,2034,9,49,203412,2035),('2034-12-10',203450,12,2034,10,50,203412,2035),('2034-12-11',203450,12,2034,11,50,203412,2035),('2034-12-12',203450,12,2034,12,50,203412,2035),('2034-12-13',203450,12,2034,13,50,203412,2035),('2034-12-14',203450,12,2034,14,50,203412,2035),('2034-12-15',203450,12,2034,15,50,203412,2035),('2034-12-16',203450,12,2034,16,50,203412,2035),('2034-12-17',203451,12,2034,17,51,203412,2035),('2034-12-18',203451,12,2034,18,51,203412,2035),('2034-12-19',203451,12,2034,19,51,203412,2035),('2034-12-20',203451,12,2034,20,51,203412,2035),('2034-12-21',203451,12,2034,21,51,203412,2035),('2034-12-22',203451,12,2034,22,51,203412,2035),('2034-12-23',203451,12,2034,23,51,203412,2035),('2034-12-24',203452,12,2034,24,52,203412,2035),('2034-12-25',203452,12,2034,25,52,203412,2035),('2034-12-26',203452,12,2034,26,52,203412,2035),('2034-12-27',203452,12,2034,27,52,203412,2035),('2034-12-28',203452,12,2034,28,52,203412,2035),('2034-12-29',203452,12,2034,29,52,203412,2035),('2034-12-30',203452,12,2034,30,52,203412,2035),('2034-12-31',203453,12,2034,31,1,203412,2035),('2035-01-01',203501,1,2035,1,1,203501,2035),('2035-01-02',203501,1,2035,2,1,203501,2035),('2035-01-03',203501,1,2035,3,1,203501,2035),('2035-01-04',203501,1,2035,4,1,203501,2035),('2035-01-05',203501,1,2035,5,1,203501,2035),('2035-01-06',203501,1,2035,6,1,203501,2035),('2035-01-07',203502,1,2035,7,2,203501,2035),('2035-01-08',203502,1,2035,8,2,203501,2035),('2035-01-09',203502,1,2035,9,2,203501,2035),('2035-01-10',203502,1,2035,10,2,203501,2035),('2035-01-11',203502,1,2035,11,2,203501,2035),('2035-01-12',203502,1,2035,12,2,203501,2035),('2035-01-13',203502,1,2035,13,2,203501,2035),('2035-01-14',203503,1,2035,14,3,203501,2035),('2035-01-15',203503,1,2035,15,3,203501,2035),('2035-01-16',203503,1,2035,16,3,203501,2035),('2035-01-17',203503,1,2035,17,3,203501,2035),('2035-01-18',203503,1,2035,18,3,203501,2035),('2035-01-19',203503,1,2035,19,3,203501,2035),('2035-01-20',203503,1,2035,20,3,203501,2035),('2035-01-21',203504,1,2035,21,4,203501,2035),('2035-01-22',203504,1,2035,22,4,203501,2035),('2035-01-23',203504,1,2035,23,4,203501,2035),('2035-01-24',203504,1,2035,24,4,203501,2035),('2035-01-25',203504,1,2035,25,4,203501,2035),('2035-01-26',203504,1,2035,26,4,203501,2035),('2035-01-27',203504,1,2035,27,4,203501,2035),('2035-01-28',203505,1,2035,28,5,203501,2035),('2035-01-29',203505,1,2035,29,5,203501,2035),('2035-01-30',203505,1,2035,30,5,203501,2035),('2035-01-31',203505,1,2035,31,5,203501,2035),('2035-02-01',203505,2,2035,1,5,203502,2035),('2035-02-02',203505,2,2035,2,5,203502,2035),('2035-02-03',203505,2,2035,3,5,203502,2035),('2035-02-04',203506,2,2035,4,6,203502,2035),('2035-02-05',203506,2,2035,5,6,203502,2035),('2035-02-06',203506,2,2035,6,6,203502,2035),('2035-02-07',203506,2,2035,7,6,203502,2035),('2035-02-08',203506,2,2035,8,6,203502,2035),('2035-02-09',203506,2,2035,9,6,203502,2035),('2035-02-10',203506,2,2035,10,6,203502,2035),('2035-02-11',203507,2,2035,11,7,203502,2035),('2035-02-12',203507,2,2035,12,7,203502,2035),('2035-02-13',203507,2,2035,13,7,203502,2035),('2035-02-14',203507,2,2035,14,7,203502,2035),('2035-02-15',203507,2,2035,15,7,203502,2035),('2035-02-16',203507,2,2035,16,7,203502,2035),('2035-02-17',203507,2,2035,17,7,203502,2035),('2035-02-18',203508,2,2035,18,8,203502,2035),('2035-02-19',203508,2,2035,19,8,203502,2035),('2035-02-20',203508,2,2035,20,8,203502,2035),('2035-02-21',203508,2,2035,21,8,203502,2035),('2035-02-22',203508,2,2035,22,8,203502,2035),('2035-02-23',203508,2,2035,23,8,203502,2035),('2035-02-24',203508,2,2035,24,8,203502,2035),('2035-02-25',203509,2,2035,25,9,203502,2035),('2035-02-26',203509,2,2035,26,9,203502,2035),('2035-02-27',203509,2,2035,27,9,203502,2035),('2035-02-28',203509,2,2035,28,9,203502,2035),('2035-03-01',203509,3,2035,1,9,203503,2035),('2035-03-02',203509,3,2035,2,9,203503,2035),('2035-03-03',203509,3,2035,3,9,203503,2035),('2035-03-04',203510,3,2035,4,10,203503,2035),('2035-03-05',203510,3,2035,5,10,203503,2035),('2035-03-06',203510,3,2035,6,10,203503,2035),('2035-03-07',203510,3,2035,7,10,203503,2035),('2035-03-08',203510,3,2035,8,10,203503,2035),('2035-03-09',203510,3,2035,9,10,203503,2035),('2035-03-10',203510,3,2035,10,10,203503,2035),('2035-03-11',203511,3,2035,11,11,203503,2035),('2035-03-12',203511,3,2035,12,11,203503,2035),('2035-03-13',203511,3,2035,13,11,203503,2035),('2035-03-14',203511,3,2035,14,11,203503,2035),('2035-03-15',203511,3,2035,15,11,203503,2035),('2035-03-16',203511,3,2035,16,11,203503,2035),('2035-03-17',203511,3,2035,17,11,203503,2035),('2035-03-18',203512,3,2035,18,12,203503,2035),('2035-03-19',203512,3,2035,19,12,203503,2035),('2035-03-20',203512,3,2035,20,12,203503,2035),('2035-03-21',203512,3,2035,21,12,203503,2035),('2035-03-22',203512,3,2035,22,12,203503,2035),('2035-03-23',203512,3,2035,23,12,203503,2035),('2035-03-24',203512,3,2035,24,12,203503,2035),('2035-03-25',203513,3,2035,25,13,203503,2035),('2035-03-26',203513,3,2035,26,13,203503,2035),('2035-03-27',203513,3,2035,27,13,203503,2035),('2035-03-28',203513,3,2035,28,13,203503,2035),('2035-03-29',203513,3,2035,29,13,203503,2035),('2035-03-30',203513,3,2035,30,13,203503,2035),('2035-03-31',203513,3,2035,31,13,203503,2035),('2035-04-01',203514,4,2035,1,14,203504,2035),('2035-04-02',203514,4,2035,2,14,203504,2035),('2035-04-03',203514,4,2035,3,14,203504,2035),('2035-04-04',203514,4,2035,4,14,203504,2035),('2035-04-05',203514,4,2035,5,14,203504,2035),('2035-04-06',203514,4,2035,6,14,203504,2035),('2035-04-07',203514,4,2035,7,14,203504,2035),('2035-04-08',203515,4,2035,8,15,203504,2035),('2035-04-09',203515,4,2035,9,15,203504,2035),('2035-04-10',203515,4,2035,10,15,203504,2035),('2035-04-11',203515,4,2035,11,15,203504,2035),('2035-04-12',203515,4,2035,12,15,203504,2035),('2035-04-13',203515,4,2035,13,15,203504,2035),('2035-04-14',203515,4,2035,14,15,203504,2035),('2035-04-15',203516,4,2035,15,16,203504,2035),('2035-04-16',203516,4,2035,16,16,203504,2035),('2035-04-17',203516,4,2035,17,16,203504,2035),('2035-04-18',203516,4,2035,18,16,203504,2035),('2035-04-19',203516,4,2035,19,16,203504,2035),('2035-04-20',203516,4,2035,20,16,203504,2035),('2035-04-21',203516,4,2035,21,16,203504,2035),('2035-04-22',203517,4,2035,22,17,203504,2035),('2035-04-23',203517,4,2035,23,17,203504,2035),('2035-04-24',203517,4,2035,24,17,203504,2035),('2035-04-25',203517,4,2035,25,17,203504,2035),('2035-04-26',203517,4,2035,26,17,203504,2035),('2035-04-27',203517,4,2035,27,17,203504,2035),('2035-04-28',203517,4,2035,28,17,203504,2035),('2035-04-29',203518,4,2035,29,18,203504,2035),('2035-04-30',203518,4,2035,30,18,203504,2035),('2035-05-01',203518,5,2035,1,18,203505,2035),('2035-05-02',203518,5,2035,2,18,203505,2035),('2035-05-03',203518,5,2035,3,18,203505,2035),('2035-05-04',203518,5,2035,4,18,203505,2035),('2035-05-05',203518,5,2035,5,18,203505,2035),('2035-05-06',203519,5,2035,6,19,203505,2035),('2035-05-07',203519,5,2035,7,19,203505,2035),('2035-05-08',203519,5,2035,8,19,203505,2035),('2035-05-09',203519,5,2035,9,19,203505,2035),('2035-05-10',203519,5,2035,10,19,203505,2035),('2035-05-11',203519,5,2035,11,19,203505,2035),('2035-05-12',203519,5,2035,12,19,203505,2035),('2035-05-13',203520,5,2035,13,20,203505,2035),('2035-05-14',203520,5,2035,14,20,203505,2035),('2035-05-15',203520,5,2035,15,20,203505,2035),('2035-05-16',203520,5,2035,16,20,203505,2035),('2035-05-17',203520,5,2035,17,20,203505,2035),('2035-05-18',203520,5,2035,18,20,203505,2035),('2035-05-19',203520,5,2035,19,20,203505,2035),('2035-05-20',203521,5,2035,20,21,203505,2035),('2035-05-21',203521,5,2035,21,21,203505,2035),('2035-05-22',203521,5,2035,22,21,203505,2035),('2035-05-23',203521,5,2035,23,21,203505,2035),('2035-05-24',203521,5,2035,24,21,203505,2035),('2035-05-25',203521,5,2035,25,21,203505,2035),('2035-05-26',203521,5,2035,26,21,203505,2035),('2035-05-27',203522,5,2035,27,22,203505,2035),('2035-05-28',203522,5,2035,28,22,203505,2035),('2035-05-29',203522,5,2035,29,22,203505,2035),('2035-05-30',203522,5,2035,30,22,203505,2035),('2035-05-31',203522,5,2035,31,22,203505,2035),('2035-06-01',203522,6,2035,1,22,203506,2035),('2035-06-02',203522,6,2035,2,22,203506,2035),('2035-06-03',203523,6,2035,3,23,203506,2035),('2035-06-04',203523,6,2035,4,23,203506,2035),('2035-06-05',203523,6,2035,5,23,203506,2035),('2035-06-06',203523,6,2035,6,23,203506,2035),('2035-06-07',203523,6,2035,7,23,203506,2035),('2035-06-08',203523,6,2035,8,23,203506,2035),('2035-06-09',203523,6,2035,9,23,203506,2035),('2035-06-10',203524,6,2035,10,24,203506,2035),('2035-06-11',203524,6,2035,11,24,203506,2035),('2035-06-12',203524,6,2035,12,24,203506,2035),('2035-06-13',203524,6,2035,13,24,203506,2035),('2035-06-14',203524,6,2035,14,24,203506,2035),('2035-06-15',203524,6,2035,15,24,203506,2035),('2035-06-16',203524,6,2035,16,24,203506,2035),('2035-06-17',203525,6,2035,17,25,203506,2035),('2035-06-18',203525,6,2035,18,25,203506,2035),('2035-06-19',203525,6,2035,19,25,203506,2035),('2035-06-20',203525,6,2035,20,25,203506,2035),('2035-06-21',203525,6,2035,21,25,203506,2035),('2035-06-22',203525,6,2035,22,25,203506,2035),('2035-06-23',203525,6,2035,23,25,203506,2035),('2035-06-24',203526,6,2035,24,26,203506,2035),('2035-06-25',203526,6,2035,25,26,203506,2035),('2035-06-26',203526,6,2035,26,26,203506,2035),('2035-06-27',203526,6,2035,27,26,203506,2035),('2035-06-28',203526,6,2035,28,26,203506,2035),('2035-06-29',203526,6,2035,29,26,203506,2035),('2035-06-30',203526,6,2035,30,26,203506,2035),('2035-07-01',203527,7,2035,1,27,203507,2035),('2035-07-02',203527,7,2035,2,27,203507,2035),('2035-07-03',203527,7,2035,3,27,203507,2035),('2035-07-04',203527,7,2035,4,27,203507,2035),('2035-07-05',203527,7,2035,5,27,203507,2035),('2035-07-06',203527,7,2035,6,27,203507,2035),('2035-07-07',203527,7,2035,7,27,203507,2035),('2035-07-08',203528,7,2035,8,28,203507,2035),('2035-07-09',203528,7,2035,9,28,203507,2035),('2035-07-10',203528,7,2035,10,28,203507,2035),('2035-07-11',203528,7,2035,11,28,203507,2035),('2035-07-12',203528,7,2035,12,28,203507,2035),('2035-07-13',203528,7,2035,13,28,203507,2035),('2035-07-14',203528,7,2035,14,28,203507,2035),('2035-07-15',203529,7,2035,15,29,203507,2035),('2035-07-16',203529,7,2035,16,29,203507,2035),('2035-07-17',203529,7,2035,17,29,203507,2035),('2035-07-18',203529,7,2035,18,29,203507,2035),('2035-07-19',203529,7,2035,19,29,203507,2035),('2035-07-20',203529,7,2035,20,29,203507,2035),('2035-07-21',203529,7,2035,21,29,203507,2035),('2035-07-22',203530,7,2035,22,30,203507,2035),('2035-07-23',203530,7,2035,23,30,203507,2035),('2035-07-24',203530,7,2035,24,30,203507,2035),('2035-07-25',203530,7,2035,25,30,203507,2035),('2035-07-26',203530,7,2035,26,30,203507,2035),('2035-07-27',203530,7,2035,27,30,203507,2035),('2035-07-28',203530,7,2035,28,30,203507,2035),('2035-07-29',203531,7,2035,29,31,203507,2035),('2035-07-30',203531,7,2035,30,31,203507,2035),('2035-07-31',203531,7,2035,31,31,203507,2035),('2035-08-01',203531,8,2035,1,31,203508,2035),('2035-08-02',203531,8,2035,2,31,203508,2035),('2035-08-03',203531,8,2035,3,31,203508,2035),('2035-08-04',203531,8,2035,4,31,203508,2035),('2035-08-05',203532,8,2035,5,32,203508,2035),('2035-08-06',203532,8,2035,6,32,203508,2035),('2035-08-07',203532,8,2035,7,32,203508,2035),('2035-08-08',203532,8,2035,8,32,203508,2035),('2035-08-09',203532,8,2035,9,32,203508,2035),('2035-08-10',203532,8,2035,10,32,203508,2035),('2035-08-11',203532,8,2035,11,32,203508,2035),('2035-08-12',203533,8,2035,12,33,203508,2035),('2035-08-13',203533,8,2035,13,33,203508,2035),('2035-08-14',203533,8,2035,14,33,203508,2035),('2035-08-15',203533,8,2035,15,33,203508,2035),('2035-08-16',203533,8,2035,16,33,203508,2035),('2035-08-17',203533,8,2035,17,33,203508,2035),('2035-08-18',203533,8,2035,18,33,203508,2035),('2035-08-19',203534,8,2035,19,34,203508,2035),('2035-08-20',203534,8,2035,20,34,203508,2035),('2035-08-21',203534,8,2035,21,34,203508,2035),('2035-08-22',203534,8,2035,22,34,203508,2035),('2035-08-23',203534,8,2035,23,34,203508,2035),('2035-08-24',203534,8,2035,24,34,203508,2035),('2035-08-25',203534,8,2035,25,34,203508,2035),('2035-08-26',203535,8,2035,26,35,203508,2035),('2035-08-27',203535,8,2035,27,35,203508,2035),('2035-08-28',203535,8,2035,28,35,203508,2035),('2035-08-29',203535,8,2035,29,35,203508,2035),('2035-08-30',203535,8,2035,30,35,203508,2035),('2035-08-31',203535,8,2035,31,35,203508,2035),('2035-09-01',203535,9,2035,1,35,203509,2035),('2035-09-02',203536,9,2035,2,36,203509,2035),('2035-09-03',203536,9,2035,3,36,203509,2035),('2035-09-04',203536,9,2035,4,36,203509,2035),('2035-09-05',203536,9,2035,5,36,203509,2035),('2035-09-06',203536,9,2035,6,36,203509,2035),('2035-09-07',203536,9,2035,7,36,203509,2035),('2035-09-08',203536,9,2035,8,36,203509,2035),('2035-09-09',203537,9,2035,9,37,203509,2035),('2035-09-10',203537,9,2035,10,37,203509,2035),('2035-09-11',203537,9,2035,11,37,203509,2035),('2035-09-12',203537,9,2035,12,37,203509,2035),('2035-09-13',203537,9,2035,13,37,203509,2035),('2035-09-14',203537,9,2035,14,37,203509,2035),('2035-09-15',203537,9,2035,15,37,203509,2035),('2035-09-16',203538,9,2035,16,38,203509,2035),('2035-09-17',203538,9,2035,17,38,203509,2035),('2035-09-18',203538,9,2035,18,38,203509,2035),('2035-09-19',203538,9,2035,19,38,203509,2035),('2035-09-20',203538,9,2035,20,38,203509,2035),('2035-09-21',203538,9,2035,21,38,203509,2035),('2035-09-22',203538,9,2035,22,38,203509,2035),('2035-09-23',203539,9,2035,23,39,203509,2035),('2035-09-24',203539,9,2035,24,39,203509,2035),('2035-09-25',203539,9,2035,25,39,203509,2035),('2035-09-26',203539,9,2035,26,39,203509,2035),('2035-09-27',203539,9,2035,27,39,203509,2035),('2035-09-28',203539,9,2035,28,39,203509,2035),('2035-09-29',203539,9,2035,29,39,203509,2035),('2035-09-30',203540,9,2035,30,40,203509,2035),('2035-10-01',203540,10,2035,1,40,203510,2035),('2035-10-02',203540,10,2035,2,40,203510,2035),('2035-10-03',203540,10,2035,3,40,203510,2035),('2035-10-04',203540,10,2035,4,40,203510,2035),('2035-10-05',203540,10,2035,5,40,203510,2035),('2035-10-06',203540,10,2035,6,40,203510,2035),('2035-10-07',203541,10,2035,7,41,203510,2035),('2035-10-08',203541,10,2035,8,41,203510,2035),('2035-10-09',203541,10,2035,9,41,203510,2035),('2035-10-10',203541,10,2035,10,41,203510,2035),('2035-10-11',203541,10,2035,11,41,203510,2035),('2035-10-12',203541,10,2035,12,41,203510,2035),('2035-10-13',203541,10,2035,13,41,203510,2035),('2035-10-14',203542,10,2035,14,42,203510,2035),('2035-10-15',203542,10,2035,15,42,203510,2035),('2035-10-16',203542,10,2035,16,42,203510,2035),('2035-10-17',203542,10,2035,17,42,203510,2035),('2035-10-18',203542,10,2035,18,42,203510,2035),('2035-10-19',203542,10,2035,19,42,203510,2035),('2035-10-20',203542,10,2035,20,42,203510,2035),('2035-10-21',203543,10,2035,21,43,203510,2035),('2035-10-22',203543,10,2035,22,43,203510,2035),('2035-10-23',203543,10,2035,23,43,203510,2035),('2035-10-24',203543,10,2035,24,43,203510,2035),('2035-10-25',203543,10,2035,25,43,203510,2035),('2035-10-26',203543,10,2035,26,43,203510,2035),('2035-10-27',203543,10,2035,27,43,203510,2035),('2035-10-28',203544,10,2035,28,44,203510,2035),('2035-10-29',203544,10,2035,29,44,203510,2035),('2035-10-30',203544,10,2035,30,44,203510,2035),('2035-10-31',203544,10,2035,31,44,203510,2035),('2035-11-01',203544,11,2035,1,44,203511,2035),('2035-11-02',203544,11,2035,2,44,203511,2035),('2035-11-03',203544,11,2035,3,44,203511,2035),('2035-11-04',203545,11,2035,4,45,203511,2035),('2035-11-05',203545,11,2035,5,45,203511,2035),('2035-11-06',203545,11,2035,6,45,203511,2035),('2035-11-07',203545,11,2035,7,45,203511,2035),('2035-11-08',203545,11,2035,8,45,203511,2035),('2035-11-09',203545,11,2035,9,45,203511,2035),('2035-11-10',203545,11,2035,10,45,203511,2035),('2035-11-11',203546,11,2035,11,46,203511,2035),('2035-11-12',203546,11,2035,12,46,203511,2035),('2035-11-13',203546,11,2035,13,46,203511,2035),('2035-11-14',203546,11,2035,14,46,203511,2035),('2035-11-15',203546,11,2035,15,46,203511,2035),('2035-11-16',203546,11,2035,16,46,203511,2035),('2035-11-17',203546,11,2035,17,46,203511,2035),('2035-11-18',203547,11,2035,18,47,203511,2035),('2035-11-19',203547,11,2035,19,47,203511,2035),('2035-11-20',203547,11,2035,20,47,203511,2035),('2035-11-21',203547,11,2035,21,47,203511,2035),('2035-11-22',203547,11,2035,22,47,203511,2035),('2035-11-23',203547,11,2035,23,47,203511,2035),('2035-11-24',203547,11,2035,24,47,203511,2035),('2035-11-25',203548,11,2035,25,48,203511,2035),('2035-11-26',203548,11,2035,26,48,203511,2035),('2035-11-27',203548,11,2035,27,48,203511,2035),('2035-11-28',203548,11,2035,28,48,203511,2035),('2035-11-29',203548,11,2035,29,48,203511,2035),('2035-11-30',203548,11,2035,30,48,203511,2035),('2035-12-01',203548,12,2035,1,48,203512,2036),('2035-12-02',203549,12,2035,2,49,203512,2036),('2035-12-03',203549,12,2035,3,49,203512,2036),('2035-12-04',203549,12,2035,4,49,203512,2036),('2035-12-05',203549,12,2035,5,49,203512,2036),('2035-12-06',203549,12,2035,6,49,203512,2036),('2035-12-07',203549,12,2035,7,49,203512,2036),('2035-12-08',203549,12,2035,8,49,203512,2036),('2035-12-09',203550,12,2035,9,50,203512,2036),('2035-12-10',203550,12,2035,10,50,203512,2036),('2035-12-11',203550,12,2035,11,50,203512,2036),('2035-12-12',203550,12,2035,12,50,203512,2036),('2035-12-13',203550,12,2035,13,50,203512,2036),('2035-12-14',203550,12,2035,14,50,203512,2036),('2035-12-15',203550,12,2035,15,50,203512,2036),('2035-12-16',203551,12,2035,16,51,203512,2036),('2035-12-17',203551,12,2035,17,51,203512,2036),('2035-12-18',203551,12,2035,18,51,203512,2036),('2035-12-19',203551,12,2035,19,51,203512,2036),('2035-12-20',203551,12,2035,20,51,203512,2036),('2035-12-21',203551,12,2035,21,51,203512,2036),('2035-12-22',203551,12,2035,22,51,203512,2036),('2035-12-23',203552,12,2035,23,52,203512,2036),('2035-12-24',203552,12,2035,24,52,203512,2036),('2035-12-25',203552,12,2035,25,52,203512,2036),('2035-12-26',203552,12,2035,26,52,203512,2036),('2035-12-27',203552,12,2035,27,52,203512,2036),('2035-12-28',203552,12,2035,28,52,203512,2036),('2035-12-29',203552,12,2035,29,52,203512,2036),('2035-12-30',203553,12,2035,30,1,203512,2036),('2035-12-31',203501,12,2035,31,1,203512,2036),('2036-01-01',203601,1,2036,1,1,203601,2036),('2036-01-02',203601,1,2036,2,1,203601,2036),('2036-01-03',203601,1,2036,3,1,203601,2036),('2036-01-04',203601,1,2036,4,1,203601,2036),('2036-01-05',203601,1,2036,5,1,203601,2036),('2036-01-06',203602,1,2036,6,2,203601,2036),('2036-01-07',203602,1,2036,7,2,203601,2036),('2036-01-08',203602,1,2036,8,2,203601,2036),('2036-01-09',203602,1,2036,9,2,203601,2036),('2036-01-10',203602,1,2036,10,2,203601,2036),('2036-01-11',203602,1,2036,11,2,203601,2036),('2036-01-12',203602,1,2036,12,2,203601,2036),('2036-01-13',203603,1,2036,13,3,203601,2036),('2036-01-14',203603,1,2036,14,3,203601,2036),('2036-01-15',203603,1,2036,15,3,203601,2036),('2036-01-16',203603,1,2036,16,3,203601,2036),('2036-01-17',203603,1,2036,17,3,203601,2036),('2036-01-18',203603,1,2036,18,3,203601,2036),('2036-01-19',203603,1,2036,19,3,203601,2036),('2036-01-20',203604,1,2036,20,4,203601,2036),('2036-01-21',203604,1,2036,21,4,203601,2036),('2036-01-22',203604,1,2036,22,4,203601,2036),('2036-01-23',203604,1,2036,23,4,203601,2036),('2036-01-24',203604,1,2036,24,4,203601,2036),('2036-01-25',203604,1,2036,25,4,203601,2036),('2036-01-26',203604,1,2036,26,4,203601,2036),('2036-01-27',203605,1,2036,27,5,203601,2036),('2036-01-28',203605,1,2036,28,5,203601,2036),('2036-01-29',203605,1,2036,29,5,203601,2036),('2036-01-30',203605,1,2036,30,5,203601,2036),('2036-01-31',203605,1,2036,31,5,203601,2036),('2036-02-01',203605,2,2036,1,5,203602,2036),('2036-02-02',203605,2,2036,2,5,203602,2036),('2036-02-03',203606,2,2036,3,6,203602,2036),('2036-02-04',203606,2,2036,4,6,203602,2036),('2036-02-05',203606,2,2036,5,6,203602,2036),('2036-02-06',203606,2,2036,6,6,203602,2036),('2036-02-07',203606,2,2036,7,6,203602,2036),('2036-02-08',203606,2,2036,8,6,203602,2036),('2036-02-09',203606,2,2036,9,6,203602,2036),('2036-02-10',203607,2,2036,10,7,203602,2036),('2036-02-11',203607,2,2036,11,7,203602,2036),('2036-02-12',203607,2,2036,12,7,203602,2036),('2036-02-13',203607,2,2036,13,7,203602,2036),('2036-02-14',203607,2,2036,14,7,203602,2036),('2036-02-15',203607,2,2036,15,7,203602,2036),('2036-02-16',203607,2,2036,16,7,203602,2036),('2036-02-17',203608,2,2036,17,8,203602,2036),('2036-02-18',203608,2,2036,18,8,203602,2036),('2036-02-19',203608,2,2036,19,8,203602,2036),('2036-02-20',203608,2,2036,20,8,203602,2036),('2036-02-21',203608,2,2036,21,8,203602,2036),('2036-02-22',203608,2,2036,22,8,203602,2036),('2036-02-23',203608,2,2036,23,8,203602,2036),('2036-02-24',203609,2,2036,24,9,203602,2036),('2036-02-25',203609,2,2036,25,9,203602,2036),('2036-02-26',203609,2,2036,26,9,203602,2036),('2036-02-27',203609,2,2036,27,9,203602,2036),('2036-02-28',203609,2,2036,28,9,203602,2036),('2036-02-29',203609,2,2036,29,9,203602,2036),('2036-03-01',203609,3,2036,1,9,203603,2036),('2036-03-02',203610,3,2036,2,10,203603,2036),('2036-03-03',203610,3,2036,3,10,203603,2036),('2036-03-04',203610,3,2036,4,10,203603,2036),('2036-03-05',203610,3,2036,5,10,203603,2036),('2036-03-06',203610,3,2036,6,10,203603,2036),('2036-03-07',203610,3,2036,7,10,203603,2036),('2036-03-08',203610,3,2036,8,10,203603,2036),('2036-03-09',203611,3,2036,9,11,203603,2036),('2036-03-10',203611,3,2036,10,11,203603,2036),('2036-03-11',203611,3,2036,11,11,203603,2036),('2036-03-12',203611,3,2036,12,11,203603,2036),('2036-03-13',203611,3,2036,13,11,203603,2036),('2036-03-14',203611,3,2036,14,11,203603,2036),('2036-03-15',203611,3,2036,15,11,203603,2036),('2036-03-16',203612,3,2036,16,12,203603,2036),('2036-03-17',203612,3,2036,17,12,203603,2036),('2036-03-18',203612,3,2036,18,12,203603,2036),('2036-03-19',203612,3,2036,19,12,203603,2036),('2036-03-20',203612,3,2036,20,12,203603,2036),('2036-03-21',203612,3,2036,21,12,203603,2036),('2036-03-22',203612,3,2036,22,12,203603,2036),('2036-03-23',203613,3,2036,23,13,203603,2036),('2036-03-24',203613,3,2036,24,13,203603,2036),('2036-03-25',203613,3,2036,25,13,203603,2036),('2036-03-26',203613,3,2036,26,13,203603,2036),('2036-03-27',203613,3,2036,27,13,203603,2036),('2036-03-28',203613,3,2036,28,13,203603,2036),('2036-03-29',203613,3,2036,29,13,203603,2036),('2036-03-30',203614,3,2036,30,14,203603,2036),('2036-03-31',203614,3,2036,31,14,203603,2036),('2036-04-01',203614,4,2036,1,14,203604,2036),('2036-04-02',203614,4,2036,2,14,203604,2036),('2036-04-03',203614,4,2036,3,14,203604,2036),('2036-04-04',203614,4,2036,4,14,203604,2036),('2036-04-05',203614,4,2036,5,14,203604,2036),('2036-04-06',203615,4,2036,6,15,203604,2036),('2036-04-07',203615,4,2036,7,15,203604,2036),('2036-04-08',203615,4,2036,8,15,203604,2036),('2036-04-09',203615,4,2036,9,15,203604,2036),('2036-04-10',203615,4,2036,10,15,203604,2036),('2036-04-11',203615,4,2036,11,15,203604,2036),('2036-04-12',203615,4,2036,12,15,203604,2036),('2036-04-13',203616,4,2036,13,16,203604,2036),('2036-04-14',203616,4,2036,14,16,203604,2036),('2036-04-15',203616,4,2036,15,16,203604,2036),('2036-04-16',203616,4,2036,16,16,203604,2036),('2036-04-17',203616,4,2036,17,16,203604,2036),('2036-04-18',203616,4,2036,18,16,203604,2036),('2036-04-19',203616,4,2036,19,16,203604,2036),('2036-04-20',203617,4,2036,20,17,203604,2036),('2036-04-21',203617,4,2036,21,17,203604,2036),('2036-04-22',203617,4,2036,22,17,203604,2036),('2036-04-23',203617,4,2036,23,17,203604,2036),('2036-04-24',203617,4,2036,24,17,203604,2036),('2036-04-25',203617,4,2036,25,17,203604,2036),('2036-04-26',203617,4,2036,26,17,203604,2036),('2036-04-27',203618,4,2036,27,18,203604,2036),('2036-04-28',203618,4,2036,28,18,203604,2036),('2036-04-29',203618,4,2036,29,18,203604,2036),('2036-04-30',203618,4,2036,30,18,203604,2036),('2036-05-01',203618,5,2036,1,18,203605,2036),('2036-05-02',203618,5,2036,2,18,203605,2036),('2036-05-03',203618,5,2036,3,18,203605,2036),('2036-05-04',203619,5,2036,4,19,203605,2036),('2036-05-05',203619,5,2036,5,19,203605,2036),('2036-05-06',203619,5,2036,6,19,203605,2036),('2036-05-07',203619,5,2036,7,19,203605,2036),('2036-05-08',203619,5,2036,8,19,203605,2036),('2036-05-09',203619,5,2036,9,19,203605,2036),('2036-05-10',203619,5,2036,10,19,203605,2036),('2036-05-11',203620,5,2036,11,20,203605,2036),('2036-05-12',203620,5,2036,12,20,203605,2036),('2036-05-13',203620,5,2036,13,20,203605,2036),('2036-05-14',203620,5,2036,14,20,203605,2036),('2036-05-15',203620,5,2036,15,20,203605,2036),('2036-05-16',203620,5,2036,16,20,203605,2036),('2036-05-17',203620,5,2036,17,20,203605,2036),('2036-05-18',203621,5,2036,18,21,203605,2036),('2036-05-19',203621,5,2036,19,21,203605,2036),('2036-05-20',203621,5,2036,20,21,203605,2036),('2036-05-21',203621,5,2036,21,21,203605,2036),('2036-05-22',203621,5,2036,22,21,203605,2036),('2036-05-23',203621,5,2036,23,21,203605,2036),('2036-05-24',203621,5,2036,24,21,203605,2036),('2036-05-25',203622,5,2036,25,22,203605,2036),('2036-05-26',203622,5,2036,26,22,203605,2036),('2036-05-27',203622,5,2036,27,22,203605,2036),('2036-05-28',203622,5,2036,28,22,203605,2036),('2036-05-29',203622,5,2036,29,22,203605,2036),('2036-05-30',203622,5,2036,30,22,203605,2036),('2036-05-31',203622,5,2036,31,22,203605,2036),('2036-06-01',203623,6,2036,1,23,203606,2036),('2036-06-02',203623,6,2036,2,23,203606,2036),('2036-06-03',203623,6,2036,3,23,203606,2036),('2036-06-04',203623,6,2036,4,23,203606,2036),('2036-06-05',203623,6,2036,5,23,203606,2036),('2036-06-06',203623,6,2036,6,23,203606,2036),('2036-06-07',203623,6,2036,7,23,203606,2036),('2036-06-08',203624,6,2036,8,24,203606,2036),('2036-06-09',203624,6,2036,9,24,203606,2036),('2036-06-10',203624,6,2036,10,24,203606,2036),('2036-06-11',203624,6,2036,11,24,203606,2036),('2036-06-12',203624,6,2036,12,24,203606,2036),('2036-06-13',203624,6,2036,13,24,203606,2036),('2036-06-14',203624,6,2036,14,24,203606,2036),('2036-06-15',203625,6,2036,15,25,203606,2036),('2036-06-16',203625,6,2036,16,25,203606,2036),('2036-06-17',203625,6,2036,17,25,203606,2036),('2036-06-18',203625,6,2036,18,25,203606,2036),('2036-06-19',203625,6,2036,19,25,203606,2036),('2036-06-20',203625,6,2036,20,25,203606,2036),('2036-06-21',203625,6,2036,21,25,203606,2036),('2036-06-22',203626,6,2036,22,26,203606,2036),('2036-06-23',203626,6,2036,23,26,203606,2036),('2036-06-24',203626,6,2036,24,26,203606,2036),('2036-06-25',203626,6,2036,25,26,203606,2036),('2036-06-26',203626,6,2036,26,26,203606,2036),('2036-06-27',203626,6,2036,27,26,203606,2036),('2036-06-28',203626,6,2036,28,26,203606,2036),('2036-06-29',203627,6,2036,29,27,203606,2036),('2036-06-30',203627,6,2036,30,27,203606,2036),('2036-07-01',203627,7,2036,1,27,203607,2036),('2036-07-02',203627,7,2036,2,27,203607,2036),('2036-07-03',203627,7,2036,3,27,203607,2036),('2036-07-04',203627,7,2036,4,27,203607,2036),('2036-07-05',203627,7,2036,5,27,203607,2036),('2036-07-06',203628,7,2036,6,28,203607,2036),('2036-07-07',203628,7,2036,7,28,203607,2036),('2036-07-08',203628,7,2036,8,28,203607,2036),('2036-07-09',203628,7,2036,9,28,203607,2036),('2036-07-10',203628,7,2036,10,28,203607,2036),('2036-07-11',203628,7,2036,11,28,203607,2036),('2036-07-12',203628,7,2036,12,28,203607,2036),('2036-07-13',203629,7,2036,13,29,203607,2036),('2036-07-14',203629,7,2036,14,29,203607,2036),('2036-07-15',203629,7,2036,15,29,203607,2036),('2036-07-16',203629,7,2036,16,29,203607,2036),('2036-07-17',203629,7,2036,17,29,203607,2036),('2036-07-18',203629,7,2036,18,29,203607,2036),('2036-07-19',203629,7,2036,19,29,203607,2036),('2036-07-20',203630,7,2036,20,30,203607,2036),('2036-07-21',203630,7,2036,21,30,203607,2036),('2036-07-22',203630,7,2036,22,30,203607,2036),('2036-07-23',203630,7,2036,23,30,203607,2036),('2036-07-24',203630,7,2036,24,30,203607,2036),('2036-07-25',203630,7,2036,25,30,203607,2036),('2036-07-26',203630,7,2036,26,30,203607,2036),('2036-07-27',203631,7,2036,27,31,203607,2036),('2036-07-28',203631,7,2036,28,31,203607,2036),('2036-07-29',203631,7,2036,29,31,203607,2036),('2036-07-30',203631,7,2036,30,31,203607,2036),('2036-07-31',203631,7,2036,31,31,203607,2036),('2036-08-01',203631,8,2036,1,31,203608,2036),('2036-08-02',203631,8,2036,2,31,203608,2036),('2036-08-03',203632,8,2036,3,32,203608,2036),('2036-08-04',203632,8,2036,4,32,203608,2036),('2036-08-05',203632,8,2036,5,32,203608,2036),('2036-08-06',203632,8,2036,6,32,203608,2036),('2036-08-07',203632,8,2036,7,32,203608,2036),('2036-08-08',203632,8,2036,8,32,203608,2036),('2036-08-09',203632,8,2036,9,32,203608,2036),('2036-08-10',203633,8,2036,10,33,203608,2036),('2036-08-11',203633,8,2036,11,33,203608,2036),('2036-08-12',203633,8,2036,12,33,203608,2036),('2036-08-13',203633,8,2036,13,33,203608,2036),('2036-08-14',203633,8,2036,14,33,203608,2036),('2036-08-15',203633,8,2036,15,33,203608,2036),('2036-08-16',203633,8,2036,16,33,203608,2036),('2036-08-17',203634,8,2036,17,34,203608,2036),('2036-08-18',203634,8,2036,18,34,203608,2036),('2036-08-19',203634,8,2036,19,34,203608,2036),('2036-08-20',203634,8,2036,20,34,203608,2036),('2036-08-21',203634,8,2036,21,34,203608,2036),('2036-08-22',203634,8,2036,22,34,203608,2036),('2036-08-23',203634,8,2036,23,34,203608,2036),('2036-08-24',203635,8,2036,24,35,203608,2036),('2036-08-25',203635,8,2036,25,35,203608,2036),('2036-08-26',203635,8,2036,26,35,203608,2036),('2036-08-27',203635,8,2036,27,35,203608,2036),('2036-08-28',203635,8,2036,28,35,203608,2036),('2036-08-29',203635,8,2036,29,35,203608,2036),('2036-08-30',203635,8,2036,30,35,203608,2036),('2036-08-31',203636,8,2036,31,36,203608,2036),('2036-09-01',203636,9,2036,1,36,203609,2036),('2036-09-02',203636,9,2036,2,36,203609,2036),('2036-09-03',203636,9,2036,3,36,203609,2036),('2036-09-04',203636,9,2036,4,36,203609,2036),('2036-09-05',203636,9,2036,5,36,203609,2036),('2036-09-06',203636,9,2036,6,36,203609,2036),('2036-09-07',203637,9,2036,7,37,203609,2036),('2036-09-08',203637,9,2036,8,37,203609,2036),('2036-09-09',203637,9,2036,9,37,203609,2036),('2036-09-10',203637,9,2036,10,37,203609,2036),('2036-09-11',203637,9,2036,11,37,203609,2036),('2036-09-12',203637,9,2036,12,37,203609,2036),('2036-09-13',203637,9,2036,13,37,203609,2036),('2036-09-14',203638,9,2036,14,38,203609,2036),('2036-09-15',203638,9,2036,15,38,203609,2036),('2036-09-16',203638,9,2036,16,38,203609,2036),('2036-09-17',203638,9,2036,17,38,203609,2036),('2036-09-18',203638,9,2036,18,38,203609,2036),('2036-09-19',203638,9,2036,19,38,203609,2036),('2036-09-20',203638,9,2036,20,38,203609,2036),('2036-09-21',203639,9,2036,21,39,203609,2036),('2036-09-22',203639,9,2036,22,39,203609,2036),('2036-09-23',203639,9,2036,23,39,203609,2036),('2036-09-24',203639,9,2036,24,39,203609,2036),('2036-09-25',203639,9,2036,25,39,203609,2036),('2036-09-26',203639,9,2036,26,39,203609,2036),('2036-09-27',203639,9,2036,27,39,203609,2036),('2036-09-28',203640,9,2036,28,40,203609,2036),('2036-09-29',203640,9,2036,29,40,203609,2036),('2036-09-30',203640,9,2036,30,40,203609,2036),('2036-10-01',203640,10,2036,1,40,203610,2036),('2036-10-02',203640,10,2036,2,40,203610,2036),('2036-10-03',203640,10,2036,3,40,203610,2036),('2036-10-04',203640,10,2036,4,40,203610,2036),('2036-10-05',203641,10,2036,5,41,203610,2036),('2036-10-06',203641,10,2036,6,41,203610,2036),('2036-10-07',203641,10,2036,7,41,203610,2036),('2036-10-08',203641,10,2036,8,41,203610,2036),('2036-10-09',203641,10,2036,9,41,203610,2036),('2036-10-10',203641,10,2036,10,41,203610,2036),('2036-10-11',203641,10,2036,11,41,203610,2036),('2036-10-12',203642,10,2036,12,42,203610,2036),('2036-10-13',203642,10,2036,13,42,203610,2036),('2036-10-14',203642,10,2036,14,42,203610,2036),('2036-10-15',203642,10,2036,15,42,203610,2036),('2036-10-16',203642,10,2036,16,42,203610,2036),('2036-10-17',203642,10,2036,17,42,203610,2036),('2036-10-18',203642,10,2036,18,42,203610,2036),('2036-10-19',203643,10,2036,19,43,203610,2036),('2036-10-20',203643,10,2036,20,43,203610,2036),('2036-10-21',203643,10,2036,21,43,203610,2036),('2036-10-22',203643,10,2036,22,43,203610,2036),('2036-10-23',203643,10,2036,23,43,203610,2036),('2036-10-24',203643,10,2036,24,43,203610,2036),('2036-10-25',203643,10,2036,25,43,203610,2036),('2036-10-26',203644,10,2036,26,44,203610,2036),('2036-10-27',203644,10,2036,27,44,203610,2036),('2036-10-28',203644,10,2036,28,44,203610,2036),('2036-10-29',203644,10,2036,29,44,203610,2036),('2036-10-30',203644,10,2036,30,44,203610,2036),('2036-10-31',203644,10,2036,31,44,203610,2036),('2036-11-01',203644,11,2036,1,44,203611,2036),('2036-11-02',203645,11,2036,2,45,203611,2036),('2036-11-03',203645,11,2036,3,45,203611,2036),('2036-11-04',203645,11,2036,4,45,203611,2036),('2036-11-05',203645,11,2036,5,45,203611,2036),('2036-11-06',203645,11,2036,6,45,203611,2036),('2036-11-07',203645,11,2036,7,45,203611,2036),('2036-11-08',203645,11,2036,8,45,203611,2036),('2036-11-09',203646,11,2036,9,46,203611,2036),('2036-11-10',203646,11,2036,10,46,203611,2036),('2036-11-11',203646,11,2036,11,46,203611,2036),('2036-11-12',203646,11,2036,12,46,203611,2036),('2036-11-13',203646,11,2036,13,46,203611,2036),('2036-11-14',203646,11,2036,14,46,203611,2036),('2036-11-15',203646,11,2036,15,46,203611,2036),('2036-11-16',203647,11,2036,16,47,203611,2036),('2036-11-17',203647,11,2036,17,47,203611,2036),('2036-11-18',203647,11,2036,18,47,203611,2036),('2036-11-19',203647,11,2036,19,47,203611,2036),('2036-11-20',203647,11,2036,20,47,203611,2036),('2036-11-21',203647,11,2036,21,47,203611,2036),('2036-11-22',203647,11,2036,22,47,203611,2036),('2036-11-23',203648,11,2036,23,48,203611,2036),('2036-11-24',203648,11,2036,24,48,203611,2036),('2036-11-25',203648,11,2036,25,48,203611,2036),('2036-11-26',203648,11,2036,26,48,203611,2036),('2036-11-27',203648,11,2036,27,48,203611,2036),('2036-11-28',203648,11,2036,28,48,203611,2036),('2036-11-29',203648,11,2036,29,48,203611,2036),('2036-11-30',203649,11,2036,30,49,203611,2036),('2036-12-01',203649,12,2036,1,49,203612,2037),('2036-12-02',203649,12,2036,2,49,203612,2037),('2036-12-03',203649,12,2036,3,49,203612,2037),('2036-12-04',203649,12,2036,4,49,203612,2037),('2036-12-05',203649,12,2036,5,49,203612,2037),('2036-12-06',203649,12,2036,6,49,203612,2037),('2036-12-07',203650,12,2036,7,50,203612,2037),('2036-12-08',203650,12,2036,8,50,203612,2037),('2036-12-09',203650,12,2036,9,50,203612,2037),('2036-12-10',203650,12,2036,10,50,203612,2037),('2036-12-11',203650,12,2036,11,50,203612,2037),('2036-12-12',203650,12,2036,12,50,203612,2037),('2036-12-13',203650,12,2036,13,50,203612,2037),('2036-12-14',203651,12,2036,14,51,203612,2037),('2036-12-15',203651,12,2036,15,51,203612,2037),('2036-12-16',203651,12,2036,16,51,203612,2037),('2036-12-17',203651,12,2036,17,51,203612,2037),('2036-12-18',203651,12,2036,18,51,203612,2037),('2036-12-19',203651,12,2036,19,51,203612,2037),('2036-12-20',203651,12,2036,20,51,203612,2037),('2036-12-21',203652,12,2036,21,52,203612,2037),('2036-12-22',203652,12,2036,22,52,203612,2037),('2036-12-23',203652,12,2036,23,52,203612,2037),('2036-12-24',203652,12,2036,24,52,203612,2037),('2036-12-25',203652,12,2036,25,52,203612,2037),('2036-12-26',203652,12,2036,26,52,203612,2037),('2036-12-27',203652,12,2036,27,52,203612,2037),('2036-12-28',203653,12,2036,28,53,203612,2037),('2036-12-29',203601,12,2036,29,53,203612,2037),('2036-12-30',203601,12,2036,30,53,203612,2037); +INSERT INTO `time` VALUES ('2007-12-31',200801,12,2007,31,1,200712,2008),('2008-01-01',200801,1,2008,1,1,200801,2008),('2008-01-02',200801,1,2008,2,1,200801,2008),('2008-01-03',200801,1,2008,3,1,200801,2008),('2008-01-04',200801,1,2008,4,1,200801,2008),('2008-01-05',200801,1,2008,5,1,200801,2008),('2008-01-06',200802,1,2008,6,2,200801,2008),('2008-01-07',200802,1,2008,7,2,200801,2008),('2008-01-08',200802,1,2008,8,2,200801,2008),('2008-01-09',200802,1,2008,9,2,200801,2008),('2008-01-10',200802,1,2008,10,2,200801,2008),('2008-01-11',200802,1,2008,11,2,200801,2008),('2008-01-12',200802,1,2008,12,2,200801,2008),('2008-01-13',200803,1,2008,13,3,200801,2008),('2008-01-14',200803,1,2008,14,3,200801,2008),('2008-01-15',200803,1,2008,15,3,200801,2008),('2008-01-16',200803,1,2008,16,3,200801,2008),('2008-01-17',200803,1,2008,17,3,200801,2008),('2008-01-18',200803,1,2008,18,3,200801,2008),('2008-01-19',200803,1,2008,19,3,200801,2008),('2008-01-20',200804,1,2008,20,4,200801,2008),('2008-01-21',200804,1,2008,21,4,200801,2008),('2008-01-22',200804,1,2008,22,4,200801,2008),('2008-01-23',200804,1,2008,23,4,200801,2008),('2008-01-24',200804,1,2008,24,4,200801,2008),('2008-01-25',200804,1,2008,25,4,200801,2008),('2008-01-26',200804,1,2008,26,4,200801,2008),('2008-01-27',200805,1,2008,27,5,200801,2008),('2008-01-28',200805,1,2008,28,5,200801,2008),('2008-01-29',200805,1,2008,29,5,200801,2008),('2008-01-30',200805,1,2008,30,5,200801,2008),('2008-01-31',200805,1,2008,31,5,200801,2008),('2008-02-01',200805,2,2008,1,5,200802,2008),('2008-02-02',200805,2,2008,2,5,200802,2008),('2008-02-03',200806,2,2008,3,6,200802,2008),('2008-02-04',200806,2,2008,4,6,200802,2008),('2008-02-05',200806,2,2008,5,6,200802,2008),('2008-02-06',200806,2,2008,6,6,200802,2008),('2008-02-07',200806,2,2008,7,6,200802,2008),('2008-02-08',200806,2,2008,8,6,200802,2008),('2008-02-09',200806,2,2008,9,6,200802,2008),('2008-02-10',200807,2,2008,10,7,200802,2008),('2008-02-11',200807,2,2008,11,7,200802,2008),('2008-02-12',200807,2,2008,12,7,200802,2008),('2008-02-13',200807,2,2008,13,7,200802,2008),('2008-02-14',200807,2,2008,14,7,200802,2008),('2008-02-15',200807,2,2008,15,7,200802,2008),('2008-02-16',200807,2,2008,16,7,200802,2008),('2008-02-17',200808,2,2008,17,8,200802,2008),('2008-02-18',200808,2,2008,18,8,200802,2008),('2008-02-19',200808,2,2008,19,8,200802,2008),('2008-02-20',200808,2,2008,20,8,200802,2008),('2008-02-21',200808,2,2008,21,8,200802,2008),('2008-02-22',200808,2,2008,22,8,200802,2008),('2008-02-23',200808,2,2008,23,8,200802,2008),('2008-02-24',200809,2,2008,24,9,200802,2008),('2008-02-25',200809,2,2008,25,9,200802,2008),('2008-02-26',200809,2,2008,26,9,200802,2008),('2008-02-27',200809,2,2008,27,9,200802,2008),('2008-02-28',200809,2,2008,28,9,200802,2008),('2008-02-29',200809,2,2008,29,9,200802,2008),('2008-03-01',200809,3,2008,1,9,200803,2008),('2008-03-02',200810,3,2008,2,10,200803,2008),('2008-03-03',200810,3,2008,3,10,200803,2008),('2008-03-04',200810,3,2008,4,10,200803,2008),('2008-03-05',200810,3,2008,5,10,200803,2008),('2008-03-06',200810,3,2008,6,10,200803,2008),('2008-03-07',200810,3,2008,7,10,200803,2008),('2008-03-08',200810,3,2008,8,10,200803,2008),('2008-03-09',200811,3,2008,9,11,200803,2008),('2008-03-10',200811,3,2008,10,11,200803,2008),('2008-03-11',200811,3,2008,11,11,200803,2008),('2008-03-12',200811,3,2008,12,11,200803,2008),('2008-03-13',200811,3,2008,13,11,200803,2008),('2008-03-14',200811,3,2008,14,11,200803,2008),('2008-03-15',200811,3,2008,15,11,200803,2008),('2008-03-16',200812,3,2008,16,12,200803,2008),('2008-03-17',200812,3,2008,17,12,200803,2008),('2008-03-18',200812,3,2008,18,12,200803,2008),('2008-03-19',200812,3,2008,19,12,200803,2008),('2008-03-20',200812,3,2008,20,12,200803,2008),('2008-03-21',200812,3,2008,21,12,200803,2008),('2008-03-22',200812,3,2008,22,12,200803,2008),('2008-03-23',200813,3,2008,23,13,200803,2008),('2008-03-24',200813,3,2008,24,13,200803,2008),('2008-03-25',200813,3,2008,25,13,200803,2008),('2008-03-26',200813,3,2008,26,13,200803,2008),('2008-03-27',200813,3,2008,27,13,200803,2008),('2008-03-28',200813,3,2008,28,13,200803,2008),('2008-03-29',200813,3,2008,29,13,200803,2008),('2008-03-30',200814,3,2008,30,14,200803,2008),('2008-03-31',200814,3,2008,31,14,200803,2008),('2008-04-01',200814,4,2008,1,14,200804,2008),('2008-04-02',200814,4,2008,2,14,200804,2008),('2008-04-03',200814,4,2008,3,14,200804,2008),('2008-04-04',200814,4,2008,4,14,200804,2008),('2008-04-05',200814,4,2008,5,14,200804,2008),('2008-04-06',200815,4,2008,6,15,200804,2008),('2008-04-07',200815,4,2008,7,15,200804,2008),('2008-04-08',200815,4,2008,8,15,200804,2008),('2008-04-09',200815,4,2008,9,15,200804,2008),('2008-04-10',200815,4,2008,10,15,200804,2008),('2008-04-11',200815,4,2008,11,15,200804,2008),('2008-04-12',200815,4,2008,12,15,200804,2008),('2008-04-13',200816,4,2008,13,16,200804,2008),('2008-04-14',200816,4,2008,14,16,200804,2008),('2008-04-15',200816,4,2008,15,16,200804,2008),('2008-04-16',200816,4,2008,16,16,200804,2008),('2008-04-17',200816,4,2008,17,16,200804,2008),('2008-04-18',200816,4,2008,18,16,200804,2008),('2008-04-19',200816,4,2008,19,16,200804,2008),('2008-04-20',200817,4,2008,20,17,200804,2008),('2008-04-21',200817,4,2008,21,17,200804,2008),('2008-04-22',200817,4,2008,22,17,200804,2008),('2008-04-23',200817,4,2008,23,17,200804,2008),('2008-04-24',200817,4,2008,24,17,200804,2008),('2008-04-25',200817,4,2008,25,17,200804,2008),('2008-04-26',200817,4,2008,26,17,200804,2008),('2008-04-27',200818,4,2008,27,18,200804,2008),('2008-04-28',200818,4,2008,28,18,200804,2008),('2008-04-29',200818,4,2008,29,18,200804,2008),('2008-04-30',200818,4,2008,30,18,200804,2008),('2008-05-01',200818,5,2008,1,18,200805,2008),('2008-05-02',200818,5,2008,2,18,200805,2008),('2008-05-03',200818,5,2008,3,18,200805,2008),('2008-05-04',200819,5,2008,4,19,200805,2008),('2008-05-05',200819,5,2008,5,19,200805,2008),('2008-05-06',200819,5,2008,6,19,200805,2008),('2008-05-07',200819,5,2008,7,19,200805,2008),('2008-05-08',200819,5,2008,8,19,200805,2008),('2008-05-09',200819,5,2008,9,19,200805,2008),('2008-05-10',200819,5,2008,10,19,200805,2008),('2008-05-11',200820,5,2008,11,20,200805,2008),('2008-05-12',200820,5,2008,12,20,200805,2008),('2008-05-13',200820,5,2008,13,20,200805,2008),('2008-05-14',200820,5,2008,14,20,200805,2008),('2008-05-15',200820,5,2008,15,20,200805,2008),('2008-05-16',200820,5,2008,16,20,200805,2008),('2008-05-17',200820,5,2008,17,20,200805,2008),('2008-05-18',200821,5,2008,18,21,200805,2008),('2008-05-19',200821,5,2008,19,21,200805,2008),('2008-05-20',200821,5,2008,20,21,200805,2008),('2008-05-21',200821,5,2008,21,21,200805,2008),('2008-05-22',200821,5,2008,22,21,200805,2008),('2008-05-23',200821,5,2008,23,21,200805,2008),('2008-05-24',200821,5,2008,24,21,200805,2008),('2008-05-25',200822,5,2008,25,22,200805,2008),('2008-05-26',200822,5,2008,26,22,200805,2008),('2008-05-27',200822,5,2008,27,22,200805,2008),('2008-05-28',200822,5,2008,28,22,200805,2008),('2008-05-29',200822,5,2008,29,22,200805,2008),('2008-05-30',200822,5,2008,30,22,200805,2008),('2008-05-31',200822,5,2008,31,22,200805,2008),('2008-06-01',200823,6,2008,1,23,200806,2008),('2008-06-02',200823,6,2008,2,23,200806,2008),('2008-06-03',200823,6,2008,3,23,200806,2008),('2008-06-04',200823,6,2008,4,23,200806,2008),('2008-06-05',200823,6,2008,5,23,200806,2008),('2008-06-06',200823,6,2008,6,23,200806,2008),('2008-06-07',200823,6,2008,7,23,200806,2008),('2008-06-08',200824,6,2008,8,24,200806,2008),('2008-06-09',200824,6,2008,9,24,200806,2008),('2008-06-10',200824,6,2008,10,24,200806,2008),('2008-06-11',200824,6,2008,11,24,200806,2008),('2008-06-12',200824,6,2008,12,24,200806,2008),('2008-06-13',200824,6,2008,13,24,200806,2008),('2008-06-14',200824,6,2008,14,24,200806,2008),('2008-06-15',200825,6,2008,15,25,200806,2008),('2008-06-16',200825,6,2008,16,25,200806,2008),('2008-06-17',200825,6,2008,17,25,200806,2008),('2008-06-18',200825,6,2008,18,25,200806,2008),('2008-06-19',200825,6,2008,19,25,200806,2008),('2008-06-20',200825,6,2008,20,25,200806,2008),('2008-06-21',200825,6,2008,21,25,200806,2008),('2008-06-22',200826,6,2008,22,26,200806,2008),('2008-06-23',200826,6,2008,23,26,200806,2008),('2008-06-24',200826,6,2008,24,26,200806,2008),('2008-06-25',200826,6,2008,25,26,200806,2008),('2008-06-26',200826,6,2008,26,26,200806,2008),('2008-06-27',200826,6,2008,27,26,200806,2008),('2008-06-28',200826,6,2008,28,26,200806,2008),('2008-06-29',200827,6,2008,29,27,200806,2008),('2008-06-30',200827,6,2008,30,27,200806,2008),('2008-07-01',200827,7,2008,1,27,200807,2008),('2008-07-02',200827,7,2008,2,27,200807,2008),('2008-07-03',200827,7,2008,3,27,200807,2008),('2008-07-04',200827,7,2008,4,27,200807,2008),('2008-07-05',200827,7,2008,5,27,200807,2008),('2008-07-06',200828,7,2008,6,28,200807,2008),('2008-07-07',200828,7,2008,7,28,200807,2008),('2008-07-08',200828,7,2008,8,28,200807,2008),('2008-07-09',200828,7,2008,9,28,200807,2008),('2008-07-10',200828,7,2008,10,28,200807,2008),('2008-07-11',200828,7,2008,11,28,200807,2008),('2008-07-12',200828,7,2008,12,28,200807,2008),('2008-07-13',200829,7,2008,13,29,200807,2008),('2008-07-14',200829,7,2008,14,29,200807,2008),('2008-07-15',200829,7,2008,15,29,200807,2008),('2008-07-16',200829,7,2008,16,29,200807,2008),('2008-07-17',200829,7,2008,17,29,200807,2008),('2008-07-18',200829,7,2008,18,29,200807,2008),('2008-07-19',200829,7,2008,19,29,200807,2008),('2008-07-20',200830,7,2008,20,30,200807,2008),('2008-07-21',200830,7,2008,21,30,200807,2008),('2008-07-22',200830,7,2008,22,30,200807,2008),('2008-07-23',200830,7,2008,23,30,200807,2008),('2008-07-24',200830,7,2008,24,30,200807,2008),('2008-07-25',200830,7,2008,25,30,200807,2008),('2008-07-26',200830,7,2008,26,30,200807,2008),('2008-07-27',200831,7,2008,27,31,200807,2008),('2008-07-28',200831,7,2008,28,31,200807,2008),('2008-07-29',200831,7,2008,29,31,200807,2008),('2008-07-30',200831,7,2008,30,31,200807,2008),('2008-07-31',200831,7,2008,31,31,200807,2008),('2008-08-01',200831,8,2008,1,31,200808,2008),('2008-08-02',200831,8,2008,2,31,200808,2008),('2008-08-03',200832,8,2008,3,32,200808,2008),('2008-08-04',200832,8,2008,4,32,200808,2008),('2008-08-05',200832,8,2008,5,32,200808,2008),('2008-08-06',200832,8,2008,6,32,200808,2008),('2008-08-07',200832,8,2008,7,32,200808,2008),('2008-08-08',200832,8,2008,8,32,200808,2008),('2008-08-09',200832,8,2008,9,32,200808,2008),('2008-08-10',200833,8,2008,10,33,200808,2008),('2008-08-11',200833,8,2008,11,33,200808,2008),('2008-08-12',200833,8,2008,12,33,200808,2008),('2008-08-13',200833,8,2008,13,33,200808,2008),('2008-08-14',200833,8,2008,14,33,200808,2008),('2008-08-15',200833,8,2008,15,33,200808,2008),('2008-08-16',200833,8,2008,16,33,200808,2008),('2008-08-17',200834,8,2008,17,34,200808,2008),('2008-08-18',200834,8,2008,18,34,200808,2008),('2008-08-19',200834,8,2008,19,34,200808,2008),('2008-08-20',200834,8,2008,20,34,200808,2008),('2008-08-21',200834,8,2008,21,34,200808,2008),('2008-08-22',200834,8,2008,22,34,200808,2008),('2008-08-23',200834,8,2008,23,34,200808,2008),('2008-08-24',200835,8,2008,24,35,200808,2008),('2008-08-25',200835,8,2008,25,35,200808,2008),('2008-08-26',200835,8,2008,26,35,200808,2008),('2008-08-27',200835,8,2008,27,35,200808,2008),('2008-08-28',200835,8,2008,28,35,200808,2008),('2008-08-29',200835,8,2008,29,35,200808,2008),('2008-08-30',200835,8,2008,30,35,200808,2008),('2008-08-31',200836,8,2008,31,36,200808,2008),('2008-09-01',200836,9,2008,1,36,200809,2008),('2008-09-02',200836,9,2008,2,36,200809,2008),('2008-09-03',200836,9,2008,3,36,200809,2008),('2008-09-04',200836,9,2008,4,36,200809,2008),('2008-09-05',200836,9,2008,5,36,200809,2008),('2008-09-06',200836,9,2008,6,36,200809,2008),('2008-09-07',200837,9,2008,7,37,200809,2008),('2008-09-08',200837,9,2008,8,37,200809,2008),('2008-09-09',200837,9,2008,9,37,200809,2008),('2008-09-10',200837,9,2008,10,37,200809,2008),('2008-09-11',200837,9,2008,11,37,200809,2008),('2008-09-12',200837,9,2008,12,37,200809,2008),('2008-09-13',200837,9,2008,13,37,200809,2008),('2008-09-14',200838,9,2008,14,38,200809,2008),('2008-09-15',200838,9,2008,15,38,200809,2008),('2008-09-16',200838,9,2008,16,38,200809,2008),('2008-09-17',200838,9,2008,17,38,200809,2008),('2008-09-18',200838,9,2008,18,38,200809,2008),('2008-09-19',200838,9,2008,19,38,200809,2008),('2008-09-20',200838,9,2008,20,38,200809,2008),('2008-09-21',200839,9,2008,21,39,200809,2008),('2008-09-22',200839,9,2008,22,39,200809,2008),('2008-09-23',200839,9,2008,23,39,200809,2008),('2008-09-24',200839,9,2008,24,39,200809,2008),('2008-09-25',200839,9,2008,25,39,200809,2008),('2008-09-26',200839,9,2008,26,39,200809,2008),('2008-09-27',200839,9,2008,27,39,200809,2008),('2008-09-28',200840,9,2008,28,40,200809,2008),('2008-09-29',200840,9,2008,29,40,200809,2008),('2008-09-30',200840,9,2008,30,40,200809,2008),('2008-10-01',200840,10,2008,1,40,200810,2008),('2008-10-02',200840,10,2008,2,40,200810,2008),('2008-10-03',200840,10,2008,3,40,200810,2008),('2008-10-04',200840,10,2008,4,40,200810,2008),('2008-10-05',200841,10,2008,5,41,200810,2008),('2008-10-06',200841,10,2008,6,41,200810,2008),('2008-10-07',200841,10,2008,7,41,200810,2008),('2008-10-08',200841,10,2008,8,41,200810,2008),('2008-10-09',200841,10,2008,9,41,200810,2008),('2008-10-10',200841,10,2008,10,41,200810,2008),('2008-10-11',200841,10,2008,11,41,200810,2008),('2008-10-12',200842,10,2008,12,42,200810,2008),('2008-10-13',200842,10,2008,13,42,200810,2008),('2008-10-14',200842,10,2008,14,42,200810,2008),('2008-10-15',200842,10,2008,15,42,200810,2008),('2008-10-16',200842,10,2008,16,42,200810,2008),('2008-10-17',200842,10,2008,17,42,200810,2008),('2008-10-18',200842,10,2008,18,42,200810,2008),('2008-10-19',200843,10,2008,19,43,200810,2008),('2008-10-20',200843,10,2008,20,43,200810,2008),('2008-10-21',200843,10,2008,21,43,200810,2008),('2008-10-22',200843,10,2008,22,43,200810,2008),('2008-10-23',200843,10,2008,23,43,200810,2008),('2008-10-24',200843,10,2008,24,43,200810,2008),('2008-10-25',200843,10,2008,25,43,200810,2008),('2008-10-26',200844,10,2008,26,44,200810,2008),('2008-10-27',200844,10,2008,27,44,200810,2008),('2008-10-28',200844,10,2008,28,44,200810,2008),('2008-10-29',200844,10,2008,29,44,200810,2008),('2008-10-30',200844,10,2008,30,44,200810,2008),('2008-10-31',200844,10,2008,31,44,200810,2008),('2008-11-01',200844,11,2008,1,44,200811,2008),('2008-11-02',200845,11,2008,2,45,200811,2008),('2008-11-03',200845,11,2008,3,45,200811,2008),('2008-11-04',200845,11,2008,4,45,200811,2008),('2008-11-05',200845,11,2008,5,45,200811,2008),('2008-11-06',200845,11,2008,6,45,200811,2008),('2008-11-07',200845,11,2008,7,45,200811,2008),('2008-11-08',200845,11,2008,8,45,200811,2008),('2008-11-09',200846,11,2008,9,46,200811,2008),('2008-11-10',200846,11,2008,10,46,200811,2008),('2008-11-11',200846,11,2008,11,46,200811,2008),('2008-11-12',200846,11,2008,12,46,200811,2008),('2008-11-13',200846,11,2008,13,46,200811,2008),('2008-11-14',200846,11,2008,14,46,200811,2008),('2008-11-15',200846,11,2008,15,46,200811,2008),('2008-11-16',200847,11,2008,16,47,200811,2008),('2008-11-17',200847,11,2008,17,47,200811,2008),('2008-11-18',200847,11,2008,18,47,200811,2008),('2008-11-19',200847,11,2008,19,47,200811,2008),('2008-11-20',200847,11,2008,20,47,200811,2008),('2008-11-21',200847,11,2008,21,47,200811,2008),('2008-11-22',200847,11,2008,22,47,200811,2008),('2008-11-23',200848,11,2008,23,48,200811,2008),('2008-11-24',200848,11,2008,24,48,200811,2008),('2008-11-25',200848,11,2008,25,48,200811,2008),('2008-11-26',200848,11,2008,26,48,200811,2008),('2008-11-27',200848,11,2008,27,48,200811,2008),('2008-11-28',200848,11,2008,28,48,200811,2008),('2008-11-29',200848,11,2008,29,48,200811,2008),('2008-11-30',200849,11,2008,30,49,200811,2008),('2008-12-01',200849,12,2008,1,49,200812,2009),('2008-12-02',200849,12,2008,2,49,200812,2009),('2008-12-03',200849,12,2008,3,49,200812,2009),('2008-12-04',200849,12,2008,4,49,200812,2009),('2008-12-05',200849,12,2008,5,49,200812,2009),('2008-12-06',200849,12,2008,6,49,200812,2009),('2008-12-07',200850,12,2008,7,50,200812,2009),('2008-12-08',200850,12,2008,8,50,200812,2009),('2008-12-09',200850,12,2008,9,50,200812,2009),('2008-12-10',200850,12,2008,10,50,200812,2009),('2008-12-11',200850,12,2008,11,50,200812,2009),('2008-12-12',200850,12,2008,12,50,200812,2009),('2008-12-13',200850,12,2008,13,50,200812,2009),('2008-12-14',200851,12,2008,14,51,200812,2009),('2008-12-15',200851,12,2008,15,51,200812,2009),('2008-12-16',200851,12,2008,16,51,200812,2009),('2008-12-17',200851,12,2008,17,51,200812,2009),('2008-12-18',200851,12,2008,18,51,200812,2009),('2008-12-19',200851,12,2008,19,51,200812,2009),('2008-12-20',200851,12,2008,20,51,200812,2009),('2008-12-21',200852,12,2008,21,52,200812,2009),('2008-12-22',200852,12,2008,22,52,200812,2009),('2008-12-23',200852,12,2008,23,52,200812,2009),('2008-12-24',200852,12,2008,24,52,200812,2009),('2008-12-25',200852,12,2008,25,52,200812,2009),('2008-12-26',200852,12,2008,26,52,200812,2009),('2008-12-27',200852,12,2008,27,52,200812,2009),('2008-12-28',200853,12,2008,28,53,200812,2009),('2008-12-29',200901,12,2008,29,53,200812,2009),('2008-12-30',200901,12,2008,30,53,200812,2009),('2008-12-31',200901,12,2008,31,53,200812,2009),('2009-01-01',200901,1,2009,1,53,200901,2009),('2009-01-02',200901,1,2009,2,53,200901,2009),('2009-01-03',200901,1,2009,3,53,200901,2009),('2009-01-04',200902,1,2009,4,1,200901,2009),('2009-01-05',200902,1,2009,5,1,200901,2009),('2009-01-06',200902,1,2009,6,1,200901,2009),('2009-01-07',200902,1,2009,7,1,200901,2009),('2009-01-08',200902,1,2009,8,1,200901,2009),('2009-01-09',200902,1,2009,9,1,200901,2009),('2009-01-10',200902,1,2009,10,1,200901,2009),('2009-01-11',200903,1,2009,11,2,200901,2009),('2009-01-12',200903,1,2009,12,2,200901,2009),('2009-01-13',200903,1,2009,13,2,200901,2009),('2009-01-14',200903,1,2009,14,2,200901,2009),('2009-01-15',200903,1,2009,15,2,200901,2009),('2009-01-16',200903,1,2009,16,2,200901,2009),('2009-01-17',200903,1,2009,17,2,200901,2009),('2009-01-18',200904,1,2009,18,3,200901,2009),('2009-01-19',200904,1,2009,19,3,200901,2009),('2009-01-20',200904,1,2009,20,3,200901,2009),('2009-01-21',200904,1,2009,21,3,200901,2009),('2009-01-22',200904,1,2009,22,3,200901,2009),('2009-01-23',200904,1,2009,23,3,200901,2009),('2009-01-24',200904,1,2009,24,3,200901,2009),('2009-01-25',200905,1,2009,25,4,200901,2009),('2009-01-26',200905,1,2009,26,4,200901,2009),('2009-01-27',200905,1,2009,27,4,200901,2009),('2009-01-28',200905,1,2009,28,4,200901,2009),('2009-01-29',200905,1,2009,29,4,200901,2009),('2009-01-30',200905,1,2009,30,4,200901,2009),('2009-01-31',200905,1,2009,31,4,200901,2009),('2009-02-01',200906,2,2009,1,5,200902,2009),('2009-02-02',200906,2,2009,2,5,200902,2009),('2009-02-03',200906,2,2009,3,5,200902,2009),('2009-02-04',200906,2,2009,4,5,200902,2009),('2009-02-05',200906,2,2009,5,5,200902,2009),('2009-02-06',200906,2,2009,6,5,200902,2009),('2009-02-07',200906,2,2009,7,5,200902,2009),('2009-02-08',200907,2,2009,8,6,200902,2009),('2009-02-09',200907,2,2009,9,6,200902,2009),('2009-02-10',200907,2,2009,10,6,200902,2009),('2009-02-11',200907,2,2009,11,6,200902,2009),('2009-02-12',200907,2,2009,12,6,200902,2009),('2009-02-13',200907,2,2009,13,6,200902,2009),('2009-02-14',200907,2,2009,14,6,200902,2009),('2009-02-15',200908,2,2009,15,7,200902,2009),('2009-02-16',200908,2,2009,16,7,200902,2009),('2009-02-17',200908,2,2009,17,7,200902,2009),('2009-02-18',200908,2,2009,18,7,200902,2009),('2009-02-19',200908,2,2009,19,7,200902,2009),('2009-02-20',200908,2,2009,20,7,200902,2009),('2009-02-21',200908,2,2009,21,7,200902,2009),('2009-02-22',200909,2,2009,22,8,200902,2009),('2009-02-23',200909,2,2009,23,8,200902,2009),('2009-02-24',200909,2,2009,24,8,200902,2009),('2009-02-25',200909,2,2009,25,8,200902,2009),('2009-02-26',200909,2,2009,26,8,200902,2009),('2009-02-27',200909,2,2009,27,8,200902,2009),('2009-02-28',200909,2,2009,28,8,200902,2009),('2009-03-01',200910,3,2009,1,9,200903,2009),('2009-03-02',200910,3,2009,2,9,200903,2009),('2009-03-03',200910,3,2009,3,9,200903,2009),('2009-03-04',200910,3,2009,4,9,200903,2009),('2009-03-05',200910,3,2009,5,9,200903,2009),('2009-03-06',200910,3,2009,6,9,200903,2009),('2009-03-07',200910,3,2009,7,9,200903,2009),('2009-03-08',200911,3,2009,8,10,200903,2009),('2009-03-09',200911,3,2009,9,10,200903,2009),('2009-03-10',200911,3,2009,10,10,200903,2009),('2009-03-11',200911,3,2009,11,10,200903,2009),('2009-03-12',200911,3,2009,12,10,200903,2009),('2009-03-13',200911,3,2009,13,10,200903,2009),('2009-03-14',200911,3,2009,14,10,200903,2009),('2009-03-15',200912,3,2009,15,11,200903,2009),('2009-03-16',200912,3,2009,16,11,200903,2009),('2009-03-17',200912,3,2009,17,11,200903,2009),('2009-03-18',200912,3,2009,18,11,200903,2009),('2009-03-19',200912,3,2009,19,11,200903,2009),('2009-03-20',200912,3,2009,20,11,200903,2009),('2009-03-21',200912,3,2009,21,11,200903,2009),('2009-03-22',200913,3,2009,22,12,200903,2009),('2009-03-23',200913,3,2009,23,12,200903,2009),('2009-03-24',200913,3,2009,24,12,200903,2009),('2009-03-25',200913,3,2009,25,12,200903,2009),('2009-03-26',200913,3,2009,26,12,200903,2009),('2009-03-27',200913,3,2009,27,12,200903,2009),('2009-03-28',200913,3,2009,28,12,200903,2009),('2009-03-29',200914,3,2009,29,13,200903,2009),('2009-03-30',200914,3,2009,30,13,200903,2009),('2009-03-31',200914,3,2009,31,13,200903,2009),('2009-04-01',200914,4,2009,1,13,200904,2009),('2009-04-02',200914,4,2009,2,13,200904,2009),('2009-04-03',200914,4,2009,3,13,200904,2009),('2009-04-04',200914,4,2009,4,13,200904,2009),('2009-04-05',200915,4,2009,5,14,200904,2009),('2009-04-06',200915,4,2009,6,14,200904,2009),('2009-04-07',200915,4,2009,7,14,200904,2009),('2009-04-08',200915,4,2009,8,14,200904,2009),('2009-04-09',200915,4,2009,9,14,200904,2009),('2009-04-10',200915,4,2009,10,14,200904,2009),('2009-04-11',200915,4,2009,11,14,200904,2009),('2009-04-12',200916,4,2009,12,15,200904,2009),('2009-04-13',200916,4,2009,13,15,200904,2009),('2009-04-14',200916,4,2009,14,15,200904,2009),('2009-04-15',200916,4,2009,15,15,200904,2009),('2009-04-16',200916,4,2009,16,15,200904,2009),('2009-04-17',200916,4,2009,17,15,200904,2009),('2009-04-18',200916,4,2009,18,15,200904,2009),('2009-04-19',200917,4,2009,19,16,200904,2009),('2009-04-20',200917,4,2009,20,16,200904,2009),('2009-04-21',200917,4,2009,21,16,200904,2009),('2009-04-22',200917,4,2009,22,16,200904,2009),('2009-04-23',200917,4,2009,23,16,200904,2009),('2009-04-24',200917,4,2009,24,16,200904,2009),('2009-04-25',200917,4,2009,25,16,200904,2009),('2009-04-26',200918,4,2009,26,17,200904,2009),('2009-04-27',200918,4,2009,27,17,200904,2009),('2009-04-28',200918,4,2009,28,17,200904,2009),('2009-04-29',200918,4,2009,29,17,200904,2009),('2009-04-30',200918,4,2009,30,17,200904,2009),('2009-05-01',200918,5,2009,1,17,200905,2009),('2009-05-02',200918,5,2009,2,17,200905,2009),('2009-05-03',200919,5,2009,3,18,200905,2009),('2009-05-04',200919,5,2009,4,18,200905,2009),('2009-05-05',200919,5,2009,5,18,200905,2009),('2009-05-06',200919,5,2009,6,18,200905,2009),('2009-05-07',200919,5,2009,7,18,200905,2009),('2009-05-08',200919,5,2009,8,18,200905,2009),('2009-05-09',200919,5,2009,9,18,200905,2009),('2009-05-10',200920,5,2009,10,19,200905,2009),('2009-05-11',200920,5,2009,11,19,200905,2009),('2009-05-12',200920,5,2009,12,19,200905,2009),('2009-05-13',200920,5,2009,13,19,200905,2009),('2009-05-14',200920,5,2009,14,19,200905,2009),('2009-05-15',200920,5,2009,15,19,200905,2009),('2009-05-16',200920,5,2009,16,19,200905,2009),('2009-05-17',200921,5,2009,17,20,200905,2009),('2009-05-18',200921,5,2009,18,20,200905,2009),('2009-05-19',200921,5,2009,19,20,200905,2009),('2009-05-20',200921,5,2009,20,20,200905,2009),('2009-05-21',200921,5,2009,21,20,200905,2009),('2009-05-22',200921,5,2009,22,20,200905,2009),('2009-05-23',200921,5,2009,23,20,200905,2009),('2009-05-24',200922,5,2009,24,21,200905,2009),('2009-05-25',200922,5,2009,25,21,200905,2009),('2009-05-26',200922,5,2009,26,21,200905,2009),('2009-05-27',200922,5,2009,27,21,200905,2009),('2009-05-28',200922,5,2009,28,21,200905,2009),('2009-05-29',200922,5,2009,29,21,200905,2009),('2009-05-30',200922,5,2009,30,21,200905,2009),('2009-05-31',200923,5,2009,31,22,200905,2009),('2009-06-01',200923,6,2009,1,22,200906,2009),('2009-06-02',200923,6,2009,2,22,200906,2009),('2009-06-03',200923,6,2009,3,22,200906,2009),('2009-06-04',200923,6,2009,4,22,200906,2009),('2009-06-05',200923,6,2009,5,22,200906,2009),('2009-06-06',200923,6,2009,6,22,200906,2009),('2009-06-07',200924,6,2009,7,23,200906,2009),('2009-06-08',200924,6,2009,8,23,200906,2009),('2009-06-09',200924,6,2009,9,23,200906,2009),('2009-06-10',200924,6,2009,10,23,200906,2009),('2009-06-11',200924,6,2009,11,23,200906,2009),('2009-06-12',200924,6,2009,12,23,200906,2009),('2009-06-13',200924,6,2009,13,23,200906,2009),('2009-06-14',200925,6,2009,14,24,200906,2009),('2009-06-15',200925,6,2009,15,24,200906,2009),('2009-06-16',200925,6,2009,16,24,200906,2009),('2009-06-17',200925,6,2009,17,24,200906,2009),('2009-06-18',200925,6,2009,18,24,200906,2009),('2009-06-19',200925,6,2009,19,24,200906,2009),('2009-06-20',200925,6,2009,20,24,200906,2009),('2009-06-21',200926,6,2009,21,25,200906,2009),('2009-06-22',200926,6,2009,22,25,200906,2009),('2009-06-23',200926,6,2009,23,25,200906,2009),('2009-06-24',200926,6,2009,24,25,200906,2009),('2009-06-25',200926,6,2009,25,25,200906,2009),('2009-06-26',200926,6,2009,26,25,200906,2009),('2009-06-27',200926,6,2009,27,25,200906,2009),('2009-06-28',200927,6,2009,28,26,200906,2009),('2009-06-29',200927,6,2009,29,26,200906,2009),('2009-06-30',200927,6,2009,30,26,200906,2009),('2009-07-01',200927,7,2009,1,26,200907,2009),('2009-07-02',200927,7,2009,2,26,200907,2009),('2009-07-03',200927,7,2009,3,26,200907,2009),('2009-07-04',200927,7,2009,4,26,200907,2009),('2009-07-05',200928,7,2009,5,27,200907,2009),('2009-07-06',200928,7,2009,6,27,200907,2009),('2009-07-07',200928,7,2009,7,27,200907,2009),('2009-07-08',200928,7,2009,8,27,200907,2009),('2009-07-09',200928,7,2009,9,27,200907,2009),('2009-07-10',200928,7,2009,10,27,200907,2009),('2009-07-11',200928,7,2009,11,27,200907,2009),('2009-07-12',200929,7,2009,12,28,200907,2009),('2009-07-13',200929,7,2009,13,28,200907,2009),('2009-07-14',200929,7,2009,14,28,200907,2009),('2009-07-15',200929,7,2009,15,28,200907,2009),('2009-07-16',200929,7,2009,16,28,200907,2009),('2009-07-17',200929,7,2009,17,28,200907,2009),('2009-07-18',200929,7,2009,18,28,200907,2009),('2009-07-19',200930,7,2009,19,29,200907,2009),('2009-07-20',200930,7,2009,20,29,200907,2009),('2009-07-21',200930,7,2009,21,29,200907,2009),('2009-07-22',200930,7,2009,22,29,200907,2009),('2009-07-23',200930,7,2009,23,29,200907,2009),('2009-07-24',200930,7,2009,24,29,200907,2009),('2009-07-25',200930,7,2009,25,29,200907,2009),('2009-07-26',200931,7,2009,26,30,200907,2009),('2009-07-27',200931,7,2009,27,30,200907,2009),('2009-07-28',200931,7,2009,28,30,200907,2009),('2009-07-29',200931,7,2009,29,30,200907,2009),('2009-07-30',200931,7,2009,30,30,200907,2009),('2009-07-31',200931,7,2009,31,30,200907,2009),('2009-08-01',200931,8,2009,1,30,200908,2009),('2009-08-02',200932,8,2009,2,31,200908,2009),('2009-08-03',200932,8,2009,3,31,200908,2009),('2009-08-04',200932,8,2009,4,31,200908,2009),('2009-08-05',200932,8,2009,5,31,200908,2009),('2009-08-06',200932,8,2009,6,31,200908,2009),('2009-08-07',200932,8,2009,7,31,200908,2009),('2009-08-08',200932,8,2009,8,31,200908,2009),('2009-08-09',200933,8,2009,9,32,200908,2009),('2009-08-10',200933,8,2009,10,32,200908,2009),('2009-08-11',200933,8,2009,11,32,200908,2009),('2009-08-12',200933,8,2009,12,32,200908,2009),('2009-08-13',200933,8,2009,13,32,200908,2009),('2009-08-14',200933,8,2009,14,32,200908,2009),('2009-08-15',200933,8,2009,15,32,200908,2009),('2009-08-16',200934,8,2009,16,33,200908,2009),('2009-08-17',200934,8,2009,17,33,200908,2009),('2009-08-18',200934,8,2009,18,33,200908,2009),('2009-08-19',200934,8,2009,19,33,200908,2009),('2009-08-20',200934,8,2009,20,33,200908,2009),('2009-08-21',200934,8,2009,21,33,200908,2009),('2009-08-22',200934,8,2009,22,33,200908,2009),('2009-08-23',200935,8,2009,23,34,200908,2009),('2009-08-24',200935,8,2009,24,34,200908,2009),('2009-08-25',200935,8,2009,25,34,200908,2009),('2009-08-26',200935,8,2009,26,34,200908,2009),('2009-08-27',200935,8,2009,27,34,200908,2009),('2009-08-28',200935,8,2009,28,34,200908,2009),('2009-08-29',200935,8,2009,29,34,200908,2009),('2009-08-30',200936,8,2009,30,35,200908,2009),('2009-08-31',200936,8,2009,31,35,200908,2009),('2009-09-01',200936,9,2009,1,35,200909,2009),('2009-09-02',200936,9,2009,2,35,200909,2009),('2009-09-03',200936,9,2009,3,35,200909,2009),('2009-09-04',200936,9,2009,4,35,200909,2009),('2009-09-05',200936,9,2009,5,35,200909,2009),('2009-09-06',200937,9,2009,6,36,200909,2009),('2009-09-07',200937,9,2009,7,36,200909,2009),('2009-09-08',200937,9,2009,8,36,200909,2009),('2009-09-09',200937,9,2009,9,36,200909,2009),('2009-09-10',200937,9,2009,10,36,200909,2009),('2009-09-11',200937,9,2009,11,36,200909,2009),('2009-09-12',200937,9,2009,12,36,200909,2009),('2009-09-13',200938,9,2009,13,37,200909,2009),('2009-09-14',200938,9,2009,14,37,200909,2009),('2009-09-15',200938,9,2009,15,37,200909,2009),('2009-09-16',200938,9,2009,16,37,200909,2009),('2009-09-17',200938,9,2009,17,37,200909,2009),('2009-09-18',200938,9,2009,18,37,200909,2009),('2009-09-19',200938,9,2009,19,37,200909,2009),('2009-09-20',200939,9,2009,20,38,200909,2009),('2009-09-21',200939,9,2009,21,38,200909,2009),('2009-09-22',200939,9,2009,22,38,200909,2009),('2009-09-23',200939,9,2009,23,38,200909,2009),('2009-09-24',200939,9,2009,24,38,200909,2009),('2009-09-25',200939,9,2009,25,38,200909,2009),('2009-09-26',200939,9,2009,26,38,200909,2009),('2009-09-27',200940,9,2009,27,39,200909,2009),('2009-09-28',200940,9,2009,28,39,200909,2009),('2009-09-29',200940,9,2009,29,39,200909,2009),('2009-09-30',200940,9,2009,30,39,200909,2009),('2009-10-01',200940,10,2009,1,39,200910,2009),('2009-10-02',200940,10,2009,2,39,200910,2009),('2009-10-03',200940,10,2009,3,39,200910,2009),('2009-10-04',200941,10,2009,4,40,200910,2009),('2009-10-05',200941,10,2009,5,40,200910,2009),('2009-10-06',200941,10,2009,6,40,200910,2009),('2009-10-07',200941,10,2009,7,40,200910,2009),('2009-10-08',200941,10,2009,8,40,200910,2009),('2009-10-09',200941,10,2009,9,40,200910,2009),('2009-10-10',200941,10,2009,10,40,200910,2009),('2009-10-11',200942,10,2009,11,41,200910,2009),('2009-10-12',200942,10,2009,12,41,200910,2009),('2009-10-13',200942,10,2009,13,41,200910,2009),('2009-10-14',200942,10,2009,14,41,200910,2009),('2009-10-15',200942,10,2009,15,41,200910,2009),('2009-10-16',200942,10,2009,16,41,200910,2009),('2009-10-17',200942,10,2009,17,41,200910,2009),('2009-10-18',200943,10,2009,18,42,200910,2009),('2009-10-19',200943,10,2009,19,42,200910,2009),('2009-10-20',200943,10,2009,20,42,200910,2009),('2009-10-21',200943,10,2009,21,42,200910,2009),('2009-10-22',200943,10,2009,22,42,200910,2009),('2009-10-23',200943,10,2009,23,42,200910,2009),('2009-10-24',200943,10,2009,24,42,200910,2009),('2009-10-25',200944,10,2009,25,43,200910,2009),('2009-10-26',200944,10,2009,26,43,200910,2009),('2009-10-27',200944,10,2009,27,43,200910,2009),('2009-10-28',200944,10,2009,28,43,200910,2009),('2009-10-29',200944,10,2009,29,43,200910,2009),('2009-10-30',200944,10,2009,30,43,200910,2009),('2009-10-31',200944,10,2009,31,43,200910,2009),('2009-11-01',200945,11,2009,1,44,200911,2009),('2009-11-02',200945,11,2009,2,44,200911,2009),('2009-11-03',200945,11,2009,3,44,200911,2009),('2009-11-04',200945,11,2009,4,44,200911,2009),('2009-11-05',200945,11,2009,5,44,200911,2009),('2009-11-06',200945,11,2009,6,44,200911,2009),('2009-11-07',200945,11,2009,7,44,200911,2009),('2009-11-08',200946,11,2009,8,45,200911,2009),('2009-11-09',200946,11,2009,9,45,200911,2009),('2009-11-10',200946,11,2009,10,45,200911,2009),('2009-11-11',200946,11,2009,11,45,200911,2009),('2009-11-12',200946,11,2009,12,45,200911,2009),('2009-11-13',200946,11,2009,13,45,200911,2009),('2009-11-14',200946,11,2009,14,45,200911,2009),('2009-11-15',200947,11,2009,15,46,200911,2009),('2009-11-16',200947,11,2009,16,46,200911,2009),('2009-11-17',200947,11,2009,17,46,200911,2009),('2009-11-18',200947,11,2009,18,46,200911,2009),('2009-11-19',200947,11,2009,19,46,200911,2009),('2009-11-20',200947,11,2009,20,46,200911,2009),('2009-11-21',200947,11,2009,21,46,200911,2009),('2009-11-22',200948,11,2009,22,47,200911,2009),('2009-11-23',200948,11,2009,23,47,200911,2009),('2009-11-24',200948,11,2009,24,47,200911,2009),('2009-11-25',200948,11,2009,25,47,200911,2009),('2009-11-26',200948,11,2009,26,47,200911,2009),('2009-11-27',200948,11,2009,27,47,200911,2009),('2009-11-28',200948,11,2009,28,47,200911,2009),('2009-11-29',200949,11,2009,29,48,200911,2009),('2009-11-30',200949,11,2009,30,48,200911,2009),('2009-12-01',200949,12,2009,1,48,200912,2010),('2009-12-02',200949,12,2009,2,48,200912,2010),('2009-12-03',200949,12,2009,3,48,200912,2010),('2009-12-04',200949,12,2009,4,48,200912,2010),('2009-12-05',200949,12,2009,5,48,200912,2010),('2009-12-06',200950,12,2009,6,49,200912,2010),('2009-12-07',200950,12,2009,7,49,200912,2010),('2009-12-08',200950,12,2009,8,49,200912,2010),('2009-12-09',200950,12,2009,9,49,200912,2010),('2009-12-10',200950,12,2009,10,49,200912,2010),('2009-12-11',200950,12,2009,11,49,200912,2010),('2009-12-12',200950,12,2009,12,49,200912,2010),('2009-12-13',200951,12,2009,13,50,200912,2010),('2009-12-14',200951,12,2009,14,50,200912,2010),('2009-12-15',200951,12,2009,15,50,200912,2010),('2009-12-16',200951,12,2009,16,50,200912,2010),('2009-12-17',200951,12,2009,17,50,200912,2010),('2009-12-18',200951,12,2009,18,50,200912,2010),('2009-12-19',200951,12,2009,19,50,200912,2010),('2009-12-20',200952,12,2009,20,51,200912,2010),('2009-12-21',200952,12,2009,21,51,200912,2010),('2009-12-22',200952,12,2009,22,51,200912,2010),('2009-12-23',200952,12,2009,23,51,200912,2010),('2009-12-24',200952,12,2009,24,51,200912,2010),('2009-12-25',200952,12,2009,25,51,200912,2010),('2009-12-26',200952,12,2009,26,51,200912,2010),('2009-12-27',200953,12,2009,27,52,200912,2010),('2009-12-28',200952,12,2009,28,52,200912,2010),('2009-12-29',200952,12,2009,29,52,200912,2010),('2009-12-30',200952,12,2009,30,52,200912,2010),('2009-12-31',200952,12,2009,31,52,200912,2010),('2010-01-01',201001,1,2010,1,52,201001,2010),('2010-01-02',201001,1,2010,2,52,201001,2010),('2010-01-03',201002,1,2010,3,1,201001,2010),('2010-01-04',201001,1,2010,4,1,201001,2010),('2010-01-05',201001,1,2010,5,1,201001,2010),('2010-01-06',201001,1,2010,6,1,201001,2010),('2010-01-07',201001,1,2010,7,1,201001,2010),('2010-01-08',201001,1,2010,8,1,201001,2010),('2010-01-09',201001,1,2010,9,1,201001,2010),('2010-01-10',201002,1,2010,10,2,201001,2010),('2010-01-11',201002,1,2010,11,2,201001,2010),('2010-01-12',201002,1,2010,12,2,201001,2010),('2010-01-13',201002,1,2010,13,2,201001,2010),('2010-01-14',201002,1,2010,14,2,201001,2010),('2010-01-15',201002,1,2010,15,2,201001,2010),('2010-01-16',201002,1,2010,16,2,201001,2010),('2010-01-17',201003,1,2010,17,3,201001,2010),('2010-01-18',201003,1,2010,18,3,201001,2010),('2010-01-19',201003,1,2010,19,3,201001,2010),('2010-01-20',201003,1,2010,20,3,201001,2010),('2010-01-21',201003,1,2010,21,3,201001,2010),('2010-01-22',201003,1,2010,22,3,201001,2010),('2010-01-23',201003,1,2010,23,3,201001,2010),('2010-01-24',201004,1,2010,24,4,201001,2010),('2010-01-25',201004,1,2010,25,4,201001,2010),('2010-01-26',201004,1,2010,26,4,201001,2010),('2010-01-27',201004,1,2010,27,4,201001,2010),('2010-01-28',201004,1,2010,28,4,201001,2010),('2010-01-29',201004,1,2010,29,4,201001,2010),('2010-01-30',201004,1,2010,30,4,201001,2010),('2010-01-31',201005,1,2010,31,5,201001,2010),('2010-02-01',201005,2,2010,1,5,201002,2010),('2010-02-02',201005,2,2010,2,5,201002,2010),('2010-02-03',201005,2,2010,3,5,201002,2010),('2010-02-04',201005,2,2010,4,5,201002,2010),('2010-02-05',201005,2,2010,5,5,201002,2010),('2010-02-06',201005,2,2010,6,5,201002,2010),('2010-02-07',201006,2,2010,7,6,201002,2010),('2010-02-08',201006,2,2010,8,6,201002,2010),('2010-02-09',201006,2,2010,9,6,201002,2010),('2010-02-10',201006,2,2010,10,6,201002,2010),('2010-02-11',201006,2,2010,11,6,201002,2010),('2010-02-12',201006,2,2010,12,6,201002,2010),('2010-02-13',201006,2,2010,13,6,201002,2010),('2010-02-14',201007,2,2010,14,7,201002,2010),('2010-02-15',201007,2,2010,15,7,201002,2010),('2010-02-16',201007,2,2010,16,7,201002,2010),('2010-02-17',201007,2,2010,17,7,201002,2010),('2010-02-18',201007,2,2010,18,7,201002,2010),('2010-02-19',201007,2,2010,19,7,201002,2010),('2010-02-20',201007,2,2010,20,7,201002,2010),('2010-02-21',201008,2,2010,21,8,201002,2010),('2010-02-22',201008,2,2010,22,8,201002,2010),('2010-02-23',201008,2,2010,23,8,201002,2010),('2010-02-24',201008,2,2010,24,8,201002,2010),('2010-02-25',201008,2,2010,25,8,201002,2010),('2010-02-26',201008,2,2010,26,8,201002,2010),('2010-02-27',201008,2,2010,27,8,201002,2010),('2010-02-28',201009,2,2010,28,9,201002,2010),('2010-03-01',201009,3,2010,1,9,201003,2010),('2010-03-02',201009,3,2010,2,9,201003,2010),('2010-03-03',201009,3,2010,3,9,201003,2010),('2010-03-04',201009,3,2010,4,9,201003,2010),('2010-03-05',201009,3,2010,5,9,201003,2010),('2010-03-06',201009,3,2010,6,9,201003,2010),('2010-03-07',201010,3,2010,7,10,201003,2010),('2010-03-08',201010,3,2010,8,10,201003,2010),('2010-03-09',201010,3,2010,9,10,201003,2010),('2010-03-10',201010,3,2010,10,10,201003,2010),('2010-03-11',201010,3,2010,11,10,201003,2010),('2010-03-12',201010,3,2010,12,10,201003,2010),('2010-03-13',201010,3,2010,13,10,201003,2010),('2010-03-14',201011,3,2010,14,11,201003,2010),('2010-03-15',201011,3,2010,15,11,201003,2010),('2010-03-16',201011,3,2010,16,11,201003,2010),('2010-03-17',201011,3,2010,17,11,201003,2010),('2010-03-18',201011,3,2010,18,11,201003,2010),('2010-03-19',201011,3,2010,19,11,201003,2010),('2010-03-20',201011,3,2010,20,11,201003,2010),('2010-03-21',201012,3,2010,21,12,201003,2010),('2010-03-22',201012,3,2010,22,12,201003,2010),('2010-03-23',201012,3,2010,23,12,201003,2010),('2010-03-24',201012,3,2010,24,12,201003,2010),('2010-03-25',201012,3,2010,25,12,201003,2010),('2010-03-26',201012,3,2010,26,12,201003,2010),('2010-03-27',201012,3,2010,27,12,201003,2010),('2010-03-28',201013,3,2010,28,13,201003,2010),('2010-03-29',201013,3,2010,29,13,201003,2010),('2010-03-30',201013,3,2010,30,13,201003,2010),('2010-03-31',201013,3,2010,31,13,201003,2010),('2010-04-01',201013,4,2010,1,13,201004,2010),('2010-04-02',201013,4,2010,2,13,201004,2010),('2010-04-03',201013,4,2010,3,13,201004,2010),('2010-04-04',201014,4,2010,4,14,201004,2010),('2010-04-05',201014,4,2010,5,14,201004,2010),('2010-04-06',201014,4,2010,6,14,201004,2010),('2010-04-07',201014,4,2010,7,14,201004,2010),('2010-04-08',201014,4,2010,8,14,201004,2010),('2010-04-09',201014,4,2010,9,14,201004,2010),('2010-04-10',201014,4,2010,10,14,201004,2010),('2010-04-11',201015,4,2010,11,15,201004,2010),('2010-04-12',201015,4,2010,12,15,201004,2010),('2010-04-13',201015,4,2010,13,15,201004,2010),('2010-04-14',201015,4,2010,14,15,201004,2010),('2010-04-15',201015,4,2010,15,15,201004,2010),('2010-04-16',201015,4,2010,16,15,201004,2010),('2010-04-17',201015,4,2010,17,15,201004,2010),('2010-04-18',201016,4,2010,18,16,201004,2010),('2010-04-19',201016,4,2010,19,16,201004,2010),('2010-04-20',201016,4,2010,20,16,201004,2010),('2010-04-21',201016,4,2010,21,16,201004,2010),('2010-04-22',201016,4,2010,22,16,201004,2010),('2010-04-23',201016,4,2010,23,16,201004,2010),('2010-04-24',201016,4,2010,24,16,201004,2010),('2010-04-25',201017,4,2010,25,17,201004,2010),('2010-04-26',201017,4,2010,26,17,201004,2010),('2010-04-27',201017,4,2010,27,17,201004,2010),('2010-04-28',201017,4,2010,28,17,201004,2010),('2010-04-29',201017,4,2010,29,17,201004,2010),('2010-04-30',201017,4,2010,30,17,201004,2010),('2010-05-01',201017,5,2010,1,17,201005,2010),('2010-05-02',201018,5,2010,2,18,201005,2010),('2010-05-03',201018,5,2010,3,18,201005,2010),('2010-05-04',201018,5,2010,4,18,201005,2010),('2010-05-05',201018,5,2010,5,18,201005,2010),('2010-05-06',201018,5,2010,6,18,201005,2010),('2010-05-07',201018,5,2010,7,18,201005,2010),('2010-05-08',201018,5,2010,8,18,201005,2010),('2010-05-09',201019,5,2010,9,19,201005,2010),('2010-05-10',201019,5,2010,10,19,201005,2010),('2010-05-11',201019,5,2010,11,19,201005,2010),('2010-05-12',201019,5,2010,12,19,201005,2010),('2010-05-13',201019,5,2010,13,19,201005,2010),('2010-05-14',201019,5,2010,14,19,201005,2010),('2010-05-15',201019,5,2010,15,19,201005,2010),('2010-05-16',201020,5,2010,16,20,201005,2010),('2010-05-17',201020,5,2010,17,20,201005,2010),('2010-05-18',201020,5,2010,18,20,201005,2010),('2010-05-19',201020,5,2010,19,20,201005,2010),('2010-05-20',201020,5,2010,20,20,201005,2010),('2010-05-21',201020,5,2010,21,20,201005,2010),('2010-05-22',201020,5,2010,22,20,201005,2010),('2010-05-23',201021,5,2010,23,21,201005,2010),('2010-05-24',201021,5,2010,24,21,201005,2010),('2010-05-25',201021,5,2010,25,21,201005,2010),('2010-05-26',201021,5,2010,26,21,201005,2010),('2010-05-27',201021,5,2010,27,21,201005,2010),('2010-05-28',201021,5,2010,28,21,201005,2010),('2010-05-29',201021,5,2010,29,21,201005,2010),('2010-05-30',201022,5,2010,30,22,201005,2010),('2010-05-31',201022,5,2010,31,22,201005,2010),('2010-06-01',201022,6,2010,1,22,201006,2010),('2010-06-02',201022,6,2010,2,22,201006,2010),('2010-06-03',201022,6,2010,3,22,201006,2010),('2010-06-04',201022,6,2010,4,22,201006,2010),('2010-06-05',201022,6,2010,5,22,201006,2010),('2010-06-06',201023,6,2010,6,23,201006,2010),('2010-06-07',201023,6,2010,7,23,201006,2010),('2010-06-08',201023,6,2010,8,23,201006,2010),('2010-06-09',201023,6,2010,9,23,201006,2010),('2010-06-10',201023,6,2010,10,23,201006,2010),('2010-06-11',201023,6,2010,11,23,201006,2010),('2010-06-12',201023,6,2010,12,23,201006,2010),('2010-06-13',201024,6,2010,13,24,201006,2010),('2010-06-14',201024,6,2010,14,24,201006,2010),('2010-06-15',201024,6,2010,15,24,201006,2010),('2010-06-16',201024,6,2010,16,24,201006,2010),('2010-06-17',201024,6,2010,17,24,201006,2010),('2010-06-18',201024,6,2010,18,24,201006,2010),('2010-06-19',201024,6,2010,19,24,201006,2010),('2010-06-20',201025,6,2010,20,25,201006,2010),('2010-06-21',201025,6,2010,21,25,201006,2010),('2010-06-22',201025,6,2010,22,25,201006,2010),('2010-06-23',201025,6,2010,23,25,201006,2010),('2010-06-24',201025,6,2010,24,25,201006,2010),('2010-06-25',201025,6,2010,25,25,201006,2010),('2010-06-26',201025,6,2010,26,25,201006,2010),('2010-06-27',201026,6,2010,27,26,201006,2010),('2010-06-28',201026,6,2010,28,26,201006,2010),('2010-06-29',201026,6,2010,29,26,201006,2010),('2010-06-30',201026,6,2010,30,26,201006,2010),('2010-07-01',201026,7,2010,1,26,201007,2010),('2010-07-02',201026,7,2010,2,26,201007,2010),('2010-07-03',201026,7,2010,3,26,201007,2010),('2010-07-04',201027,7,2010,4,27,201007,2010),('2010-07-05',201027,7,2010,5,27,201007,2010),('2010-07-06',201027,7,2010,6,27,201007,2010),('2010-07-07',201027,7,2010,7,27,201007,2010),('2010-07-08',201027,7,2010,8,27,201007,2010),('2010-07-09',201027,7,2010,9,27,201007,2010),('2010-07-10',201027,7,2010,10,27,201007,2010),('2010-07-11',201028,7,2010,11,28,201007,2010),('2010-07-12',201028,7,2010,12,28,201007,2010),('2010-07-13',201028,7,2010,13,28,201007,2010),('2010-07-14',201028,7,2010,14,28,201007,2010),('2010-07-15',201028,7,2010,15,28,201007,2010),('2010-07-16',201028,7,2010,16,28,201007,2010),('2010-07-17',201028,7,2010,17,28,201007,2010),('2010-07-18',201029,7,2010,18,29,201007,2010),('2010-07-19',201029,7,2010,19,29,201007,2010),('2010-07-20',201029,7,2010,20,29,201007,2010),('2010-07-21',201029,7,2010,21,29,201007,2010),('2010-07-22',201029,7,2010,22,29,201007,2010),('2010-07-23',201029,7,2010,23,29,201007,2010),('2010-07-24',201029,7,2010,24,29,201007,2010),('2010-07-25',201030,7,2010,25,30,201007,2010),('2010-07-26',201030,7,2010,26,30,201007,2010),('2010-07-27',201030,7,2010,27,30,201007,2010),('2010-07-28',201030,7,2010,28,30,201007,2010),('2010-07-29',201030,7,2010,29,30,201007,2010),('2010-07-30',201030,7,2010,30,30,201007,2010),('2010-07-31',201030,7,2010,31,30,201007,2010),('2010-08-01',201031,8,2010,1,31,201008,2010),('2010-08-02',201031,8,2010,2,31,201008,2010),('2010-08-03',201031,8,2010,3,31,201008,2010),('2010-08-04',201031,8,2010,4,31,201008,2010),('2010-08-05',201031,8,2010,5,31,201008,2010),('2010-08-06',201031,8,2010,6,31,201008,2010),('2010-08-07',201031,8,2010,7,31,201008,2010),('2010-08-08',201032,8,2010,8,32,201008,2010),('2010-08-09',201032,8,2010,9,32,201008,2010),('2010-08-10',201032,8,2010,10,32,201008,2010),('2010-08-11',201032,8,2010,11,32,201008,2010),('2010-08-12',201032,8,2010,12,32,201008,2010),('2010-08-13',201032,8,2010,13,32,201008,2010),('2010-08-14',201032,8,2010,14,32,201008,2010),('2010-08-15',201033,8,2010,15,33,201008,2010),('2010-08-16',201033,8,2010,16,33,201008,2010),('2010-08-17',201033,8,2010,17,33,201008,2010),('2010-08-18',201033,8,2010,18,33,201008,2010),('2010-08-19',201033,8,2010,19,33,201008,2010),('2010-08-20',201033,8,2010,20,33,201008,2010),('2010-08-21',201033,8,2010,21,33,201008,2010),('2010-08-22',201034,8,2010,22,34,201008,2010),('2010-08-23',201034,8,2010,23,34,201008,2010),('2010-08-24',201034,8,2010,24,34,201008,2010),('2010-08-25',201034,8,2010,25,34,201008,2010),('2010-08-26',201034,8,2010,26,34,201008,2010),('2010-08-27',201034,8,2010,27,34,201008,2010),('2010-08-28',201034,8,2010,28,34,201008,2010),('2010-08-29',201035,8,2010,29,35,201008,2010),('2010-08-30',201035,8,2010,30,35,201008,2010),('2010-08-31',201035,8,2010,31,35,201008,2010),('2010-09-01',201035,9,2010,1,35,201009,2010),('2010-09-02',201035,9,2010,2,35,201009,2010),('2010-09-03',201035,9,2010,3,35,201009,2010),('2010-09-04',201035,9,2010,4,35,201009,2010),('2010-09-05',201036,9,2010,5,36,201009,2010),('2010-09-06',201036,9,2010,6,36,201009,2010),('2010-09-07',201036,9,2010,7,36,201009,2010),('2010-09-08',201036,9,2010,8,36,201009,2010),('2010-09-09',201036,9,2010,9,36,201009,2010),('2010-09-10',201036,9,2010,10,36,201009,2010),('2010-09-11',201036,9,2010,11,36,201009,2010),('2010-09-12',201037,9,2010,12,37,201009,2010),('2010-09-13',201037,9,2010,13,37,201009,2010),('2010-09-14',201037,9,2010,14,37,201009,2010),('2010-09-15',201037,9,2010,15,37,201009,2010),('2010-09-16',201037,9,2010,16,37,201009,2010),('2010-09-17',201037,9,2010,17,37,201009,2010),('2010-09-18',201037,9,2010,18,37,201009,2010),('2010-09-19',201038,9,2010,19,38,201009,2010),('2010-09-20',201038,9,2010,20,38,201009,2010),('2010-09-21',201038,9,2010,21,38,201009,2010),('2010-09-22',201038,9,2010,22,38,201009,2010),('2010-09-23',201038,9,2010,23,38,201009,2010),('2010-09-24',201038,9,2010,24,38,201009,2010),('2010-09-25',201038,9,2010,25,38,201009,2010),('2010-09-26',201039,9,2010,26,39,201009,2010),('2010-09-27',201039,9,2010,27,39,201009,2010),('2010-09-28',201039,9,2010,28,39,201009,2010),('2010-09-29',201039,9,2010,29,39,201009,2010),('2010-09-30',201039,9,2010,30,39,201009,2010),('2010-10-01',201039,10,2010,1,39,201010,2010),('2010-10-02',201039,10,2010,2,39,201010,2010),('2010-10-03',201040,10,2010,3,40,201010,2010),('2010-10-04',201040,10,2010,4,40,201010,2010),('2010-10-05',201040,10,2010,5,40,201010,2010),('2010-10-06',201040,10,2010,6,40,201010,2010),('2010-10-07',201040,10,2010,7,40,201010,2010),('2010-10-08',201040,10,2010,8,40,201010,2010),('2010-10-09',201040,10,2010,9,40,201010,2010),('2010-10-10',201041,10,2010,10,41,201010,2010),('2010-10-11',201041,10,2010,11,41,201010,2010),('2010-10-12',201041,10,2010,12,41,201010,2010),('2010-10-13',201041,10,2010,13,41,201010,2010),('2010-10-14',201041,10,2010,14,41,201010,2010),('2010-10-15',201041,10,2010,15,41,201010,2010),('2010-10-16',201041,10,2010,16,41,201010,2010),('2010-10-17',201042,10,2010,17,42,201010,2010),('2010-10-18',201042,10,2010,18,42,201010,2010),('2010-10-19',201042,10,2010,19,42,201010,2010),('2010-10-20',201042,10,2010,20,42,201010,2010),('2010-10-21',201042,10,2010,21,42,201010,2010),('2010-10-22',201042,10,2010,22,42,201010,2010),('2010-10-23',201042,10,2010,23,42,201010,2010),('2010-10-24',201043,10,2010,24,43,201010,2010),('2010-10-25',201043,10,2010,25,43,201010,2010),('2010-10-26',201043,10,2010,26,43,201010,2010),('2010-10-27',201043,10,2010,27,43,201010,2010),('2010-10-28',201043,10,2010,28,43,201010,2010),('2010-10-29',201043,10,2010,29,43,201010,2010),('2010-10-30',201043,10,2010,30,43,201010,2010),('2010-10-31',201044,10,2010,31,44,201010,2010),('2010-11-01',201044,11,2010,1,44,201011,2010),('2010-11-02',201044,11,2010,2,44,201011,2010),('2010-11-03',201044,11,2010,3,44,201011,2010),('2010-11-04',201044,11,2010,4,44,201011,2010),('2010-11-05',201044,11,2010,5,44,201011,2010),('2010-11-06',201044,11,2010,6,44,201011,2010),('2010-11-07',201045,11,2010,7,45,201011,2010),('2010-11-08',201045,11,2010,8,45,201011,2010),('2010-11-09',201045,11,2010,9,45,201011,2010),('2010-11-10',201045,11,2010,10,45,201011,2010),('2010-11-11',201045,11,2010,11,45,201011,2010),('2010-11-12',201045,11,2010,12,45,201011,2010),('2010-11-13',201045,11,2010,13,45,201011,2010),('2010-11-14',201046,11,2010,14,46,201011,2010),('2010-11-15',201046,11,2010,15,46,201011,2010),('2010-11-16',201046,11,2010,16,46,201011,2010),('2010-11-17',201046,11,2010,17,46,201011,2010),('2010-11-18',201046,11,2010,18,46,201011,2010),('2010-11-19',201046,11,2010,19,46,201011,2010),('2010-11-20',201046,11,2010,20,46,201011,2010),('2010-11-21',201047,11,2010,21,47,201011,2010),('2010-11-22',201047,11,2010,22,47,201011,2010),('2010-11-23',201047,11,2010,23,47,201011,2010),('2010-11-24',201047,11,2010,24,47,201011,2010),('2010-11-25',201047,11,2010,25,47,201011,2010),('2010-11-26',201047,11,2010,26,47,201011,2010),('2010-11-27',201047,11,2010,27,47,201011,2010),('2010-11-28',201048,11,2010,28,48,201011,2010),('2010-11-29',201048,11,2010,29,48,201011,2010),('2010-11-30',201048,11,2010,30,48,201011,2010),('2010-12-01',201048,12,2010,1,48,201012,2011),('2010-12-02',201048,12,2010,2,48,201012,2011),('2010-12-03',201048,12,2010,3,48,201012,2011),('2010-12-04',201048,12,2010,4,48,201012,2011),('2010-12-05',201049,12,2010,5,49,201012,2011),('2010-12-06',201049,12,2010,6,49,201012,2011),('2010-12-07',201049,12,2010,7,49,201012,2011),('2010-12-08',201049,12,2010,8,49,201012,2011),('2010-12-09',201049,12,2010,9,49,201012,2011),('2010-12-10',201049,12,2010,10,49,201012,2011),('2010-12-11',201049,12,2010,11,49,201012,2011),('2010-12-12',201050,12,2010,12,50,201012,2011),('2010-12-13',201050,12,2010,13,50,201012,2011),('2010-12-14',201050,12,2010,14,50,201012,2011),('2010-12-15',201050,12,2010,15,50,201012,2011),('2010-12-16',201050,12,2010,16,50,201012,2011),('2010-12-17',201050,12,2010,17,50,201012,2011),('2010-12-18',201050,12,2010,18,50,201012,2011),('2010-12-19',201051,12,2010,19,51,201012,2011),('2010-12-20',201051,12,2010,20,51,201012,2011),('2010-12-21',201051,12,2010,21,51,201012,2011),('2010-12-22',201051,12,2010,22,51,201012,2011),('2010-12-23',201051,12,2010,23,51,201012,2011),('2010-12-24',201051,12,2010,24,51,201012,2011),('2010-12-25',201051,12,2010,25,51,201012,2011),('2010-12-26',201052,12,2010,26,52,201012,2011),('2010-12-27',201052,12,2010,27,52,201012,2011),('2010-12-28',201052,12,2010,28,52,201012,2011),('2010-12-29',201052,12,2010,29,52,201012,2011),('2010-12-30',201052,12,2010,30,52,201012,2011),('2010-12-31',201052,12,2010,31,52,201012,2011),('2011-01-01',201052,1,2011,1,52,201101,2011),('2011-01-02',201053,1,2011,2,1,201101,2011),('2011-01-03',201101,1,2011,3,1,201101,2011),('2011-01-04',201101,1,2011,4,1,201101,2011),('2011-01-05',201101,1,2011,5,1,201101,2011),('2011-01-06',201101,1,2011,6,1,201101,2011),('2011-01-07',201101,1,2011,7,1,201101,2011),('2011-01-08',201101,1,2011,8,1,201101,2011),('2011-01-09',201102,1,2011,9,2,201101,2011),('2011-01-10',201102,1,2011,10,2,201101,2011),('2011-01-11',201102,1,2011,11,2,201101,2011),('2011-01-12',201102,1,2011,12,2,201101,2011),('2011-01-13',201102,1,2011,13,2,201101,2011),('2011-01-14',201102,1,2011,14,2,201101,2011),('2011-01-15',201102,1,2011,15,2,201101,2011),('2011-01-16',201103,1,2011,16,3,201101,2011),('2011-01-17',201103,1,2011,17,3,201101,2011),('2011-01-18',201103,1,2011,18,3,201101,2011),('2011-01-19',201103,1,2011,19,3,201101,2011),('2011-01-20',201103,1,2011,20,3,201101,2011),('2011-01-21',201103,1,2011,21,3,201101,2011),('2011-01-22',201103,1,2011,22,3,201101,2011),('2011-01-23',201104,1,2011,23,4,201101,2011),('2011-01-24',201104,1,2011,24,4,201101,2011),('2011-01-25',201104,1,2011,25,4,201101,2011),('2011-01-26',201104,1,2011,26,4,201101,2011),('2011-01-27',201104,1,2011,27,4,201101,2011),('2011-01-28',201104,1,2011,28,4,201101,2011),('2011-01-29',201104,1,2011,29,4,201101,2011),('2011-01-30',201105,1,2011,30,5,201101,2011),('2011-01-31',201105,1,2011,31,5,201101,2011),('2011-02-01',201105,2,2011,1,5,201102,2011),('2011-02-02',201105,2,2011,2,5,201102,2011),('2011-02-03',201105,2,2011,3,5,201102,2011),('2011-02-04',201105,2,2011,4,5,201102,2011),('2011-02-05',201105,2,2011,5,5,201102,2011),('2011-02-06',201106,2,2011,6,6,201102,2011),('2011-02-07',201106,2,2011,7,6,201102,2011),('2011-02-08',201106,2,2011,8,6,201102,2011),('2011-02-09',201106,2,2011,9,6,201102,2011),('2011-02-10',201106,2,2011,10,6,201102,2011),('2011-02-11',201106,2,2011,11,6,201102,2011),('2011-02-12',201106,2,2011,12,6,201102,2011),('2011-02-13',201107,2,2011,13,7,201102,2011),('2011-02-14',201107,2,2011,14,7,201102,2011),('2011-02-15',201107,2,2011,15,7,201102,2011),('2011-02-16',201107,2,2011,16,7,201102,2011),('2011-02-17',201107,2,2011,17,7,201102,2011),('2011-02-18',201107,2,2011,18,7,201102,2011),('2011-02-19',201107,2,2011,19,7,201102,2011),('2011-02-20',201108,2,2011,20,8,201102,2011),('2011-02-21',201108,2,2011,21,8,201102,2011),('2011-02-22',201108,2,2011,22,8,201102,2011),('2011-02-23',201108,2,2011,23,8,201102,2011),('2011-02-24',201108,2,2011,24,8,201102,2011),('2011-02-25',201108,2,2011,25,8,201102,2011),('2011-02-26',201108,2,2011,26,8,201102,2011),('2011-02-27',201109,2,2011,27,9,201102,2011),('2011-02-28',201109,2,2011,28,9,201102,2011),('2011-03-01',201109,3,2011,1,9,201103,2011),('2011-03-02',201109,3,2011,2,9,201103,2011),('2011-03-03',201109,3,2011,3,9,201103,2011),('2011-03-04',201109,3,2011,4,9,201103,2011),('2011-03-05',201109,3,2011,5,9,201103,2011),('2011-03-06',201110,3,2011,6,10,201103,2011),('2011-03-07',201110,3,2011,7,10,201103,2011),('2011-03-08',201110,3,2011,8,10,201103,2011),('2011-03-09',201110,3,2011,9,10,201103,2011),('2011-03-10',201110,3,2011,10,10,201103,2011),('2011-03-11',201110,3,2011,11,10,201103,2011),('2011-03-12',201110,3,2011,12,10,201103,2011),('2011-03-13',201111,3,2011,13,11,201103,2011),('2011-03-14',201111,3,2011,14,11,201103,2011),('2011-03-15',201111,3,2011,15,11,201103,2011),('2011-03-16',201111,3,2011,16,11,201103,2011),('2011-03-17',201111,3,2011,17,11,201103,2011),('2011-03-18',201111,3,2011,18,11,201103,2011),('2011-03-19',201111,3,2011,19,11,201103,2011),('2011-03-20',201112,3,2011,20,12,201103,2011),('2011-03-21',201112,3,2011,21,12,201103,2011),('2011-03-22',201112,3,2011,22,12,201103,2011),('2011-03-23',201112,3,2011,23,12,201103,2011),('2011-03-24',201112,3,2011,24,12,201103,2011),('2011-03-25',201112,3,2011,25,12,201103,2011),('2011-03-26',201112,3,2011,26,12,201103,2011),('2011-03-27',201113,3,2011,27,13,201103,2011),('2011-03-28',201113,3,2011,28,13,201103,2011),('2011-03-29',201113,3,2011,29,13,201103,2011),('2011-03-30',201113,3,2011,30,13,201103,2011),('2011-03-31',201113,3,2011,31,13,201103,2011),('2011-04-01',201113,4,2011,1,13,201104,2011),('2011-04-02',201113,4,2011,2,13,201104,2011),('2011-04-03',201114,4,2011,3,14,201104,2011),('2011-04-04',201114,4,2011,4,14,201104,2011),('2011-04-05',201114,4,2011,5,14,201104,2011),('2011-04-06',201114,4,2011,6,14,201104,2011),('2011-04-07',201114,4,2011,7,14,201104,2011),('2011-04-08',201114,4,2011,8,14,201104,2011),('2011-04-09',201114,4,2011,9,14,201104,2011),('2011-04-10',201115,4,2011,10,15,201104,2011),('2011-04-11',201115,4,2011,11,15,201104,2011),('2011-04-12',201115,4,2011,12,15,201104,2011),('2011-04-13',201115,4,2011,13,15,201104,2011),('2011-04-14',201115,4,2011,14,15,201104,2011),('2011-04-15',201115,4,2011,15,15,201104,2011),('2011-04-16',201115,4,2011,16,15,201104,2011),('2011-04-17',201116,4,2011,17,16,201104,2011),('2011-04-18',201116,4,2011,18,16,201104,2011),('2011-04-19',201116,4,2011,19,16,201104,2011),('2011-04-20',201116,4,2011,20,16,201104,2011),('2011-04-21',201116,4,2011,21,16,201104,2011),('2011-04-22',201116,4,2011,22,16,201104,2011),('2011-04-23',201116,4,2011,23,16,201104,2011),('2011-04-24',201117,4,2011,24,17,201104,2011),('2011-04-25',201117,4,2011,25,17,201104,2011),('2011-04-26',201117,4,2011,26,17,201104,2011),('2011-04-27',201117,4,2011,27,17,201104,2011),('2011-04-28',201117,4,2011,28,17,201104,2011),('2011-04-29',201117,4,2011,29,17,201104,2011),('2011-04-30',201117,4,2011,30,17,201104,2011),('2011-05-01',201118,5,2011,1,18,201105,2011),('2011-05-02',201118,5,2011,2,18,201105,2011),('2011-05-03',201118,5,2011,3,18,201105,2011),('2011-05-04',201118,5,2011,4,18,201105,2011),('2011-05-05',201118,5,2011,5,18,201105,2011),('2011-05-06',201118,5,2011,6,18,201105,2011),('2011-05-07',201118,5,2011,7,18,201105,2011),('2011-05-08',201119,5,2011,8,19,201105,2011),('2011-05-09',201119,5,2011,9,19,201105,2011),('2011-05-10',201119,5,2011,10,19,201105,2011),('2011-05-11',201119,5,2011,11,19,201105,2011),('2011-05-12',201119,5,2011,12,19,201105,2011),('2011-05-13',201119,5,2011,13,19,201105,2011),('2011-05-14',201119,5,2011,14,19,201105,2011),('2011-05-15',201120,5,2011,15,20,201105,2011),('2011-05-16',201120,5,2011,16,20,201105,2011),('2011-05-17',201120,5,2011,17,20,201105,2011),('2011-05-18',201120,5,2011,18,20,201105,2011),('2011-05-19',201120,5,2011,19,20,201105,2011),('2011-05-20',201120,5,2011,20,20,201105,2011),('2011-05-21',201120,5,2011,21,20,201105,2011),('2011-05-22',201121,5,2011,22,21,201105,2011),('2011-05-23',201121,5,2011,23,21,201105,2011),('2011-05-24',201121,5,2011,24,21,201105,2011),('2011-05-25',201121,5,2011,25,21,201105,2011),('2011-05-26',201121,5,2011,26,21,201105,2011),('2011-05-27',201121,5,2011,27,21,201105,2011),('2011-05-28',201121,5,2011,28,21,201105,2011),('2011-05-29',201122,5,2011,29,22,201105,2011),('2011-05-30',201122,5,2011,30,22,201105,2011),('2011-05-31',201122,5,2011,31,22,201105,2011),('2011-06-01',201122,6,2011,1,22,201106,2011),('2011-06-02',201122,6,2011,2,22,201106,2011),('2011-06-03',201122,6,2011,3,22,201106,2011),('2011-06-04',201122,6,2011,4,22,201106,2011),('2011-06-05',201123,6,2011,5,23,201106,2011),('2011-06-06',201123,6,2011,6,23,201106,2011),('2011-06-07',201123,6,2011,7,23,201106,2011),('2011-06-08',201123,6,2011,8,23,201106,2011),('2011-06-09',201123,6,2011,9,23,201106,2011),('2011-06-10',201123,6,2011,10,23,201106,2011),('2011-06-11',201123,6,2011,11,23,201106,2011),('2011-06-12',201124,6,2011,12,24,201106,2011),('2011-06-13',201124,6,2011,13,24,201106,2011),('2011-06-14',201124,6,2011,14,24,201106,2011),('2011-06-15',201124,6,2011,15,24,201106,2011),('2011-06-16',201124,6,2011,16,24,201106,2011),('2011-06-17',201124,6,2011,17,24,201106,2011),('2011-06-18',201124,6,2011,18,24,201106,2011),('2011-06-19',201125,6,2011,19,25,201106,2011),('2011-06-20',201125,6,2011,20,25,201106,2011),('2011-06-21',201125,6,2011,21,25,201106,2011),('2011-06-22',201125,6,2011,22,25,201106,2011),('2011-06-23',201125,6,2011,23,25,201106,2011),('2011-06-24',201125,6,2011,24,25,201106,2011),('2011-06-25',201125,6,2011,25,25,201106,2011),('2011-06-26',201126,6,2011,26,26,201106,2011),('2011-06-27',201126,6,2011,27,26,201106,2011),('2011-06-28',201126,6,2011,28,26,201106,2011),('2011-06-29',201126,6,2011,29,26,201106,2011),('2011-06-30',201126,6,2011,30,26,201106,2011),('2011-07-01',201126,7,2011,1,26,201107,2011),('2011-07-02',201126,7,2011,2,26,201107,2011),('2011-07-03',201127,7,2011,3,27,201107,2011),('2011-07-04',201127,7,2011,4,27,201107,2011),('2011-07-05',201127,7,2011,5,27,201107,2011),('2011-07-06',201127,7,2011,6,27,201107,2011),('2011-07-07',201127,7,2011,7,27,201107,2011),('2011-07-08',201127,7,2011,8,27,201107,2011),('2011-07-09',201127,7,2011,9,27,201107,2011),('2011-07-10',201128,7,2011,10,28,201107,2011),('2011-07-11',201128,7,2011,11,28,201107,2011),('2011-07-12',201128,7,2011,12,28,201107,2011),('2011-07-13',201128,7,2011,13,28,201107,2011),('2011-07-14',201128,7,2011,14,28,201107,2011),('2011-07-15',201128,7,2011,15,28,201107,2011),('2011-07-16',201128,7,2011,16,28,201107,2011),('2011-07-17',201129,7,2011,17,29,201107,2011),('2011-07-18',201129,7,2011,18,29,201107,2011),('2011-07-19',201129,7,2011,19,29,201107,2011),('2011-07-20',201129,7,2011,20,29,201107,2011),('2011-07-21',201129,7,2011,21,29,201107,2011),('2011-07-22',201129,7,2011,22,29,201107,2011),('2011-07-23',201129,7,2011,23,29,201107,2011),('2011-07-24',201130,7,2011,24,30,201107,2011),('2011-07-25',201130,7,2011,25,30,201107,2011),('2011-07-26',201130,7,2011,26,30,201107,2011),('2011-07-27',201130,7,2011,27,30,201107,2011),('2011-07-28',201130,7,2011,28,30,201107,2011),('2011-07-29',201130,7,2011,29,30,201107,2011),('2011-07-30',201130,7,2011,30,30,201107,2011),('2011-07-31',201131,7,2011,31,31,201107,2011),('2011-08-01',201131,8,2011,1,31,201108,2011),('2011-08-02',201131,8,2011,2,31,201108,2011),('2011-08-03',201131,8,2011,3,31,201108,2011),('2011-08-04',201131,8,2011,4,31,201108,2011),('2011-08-05',201131,8,2011,5,31,201108,2011),('2011-08-06',201131,8,2011,6,31,201108,2011),('2011-08-07',201132,8,2011,7,32,201108,2011),('2011-08-08',201132,8,2011,8,32,201108,2011),('2011-08-09',201132,8,2011,9,32,201108,2011),('2011-08-10',201132,8,2011,10,32,201108,2011),('2011-08-11',201132,8,2011,11,32,201108,2011),('2011-08-12',201132,8,2011,12,32,201108,2011),('2011-08-13',201132,8,2011,13,32,201108,2011),('2011-08-14',201133,8,2011,14,33,201108,2011),('2011-08-15',201133,8,2011,15,33,201108,2011),('2011-08-16',201133,8,2011,16,33,201108,2011),('2011-08-17',201133,8,2011,17,33,201108,2011),('2011-08-18',201133,8,2011,18,33,201108,2011),('2011-08-19',201133,8,2011,19,33,201108,2011),('2011-08-20',201133,8,2011,20,33,201108,2011),('2011-08-21',201134,8,2011,21,34,201108,2011),('2011-08-22',201134,8,2011,22,34,201108,2011),('2011-08-23',201134,8,2011,23,34,201108,2011),('2011-08-24',201134,8,2011,24,34,201108,2011),('2011-08-25',201134,8,2011,25,34,201108,2011),('2011-08-26',201134,8,2011,26,34,201108,2011),('2011-08-27',201134,8,2011,27,34,201108,2011),('2011-08-28',201135,8,2011,28,35,201108,2011),('2011-08-29',201135,8,2011,29,35,201108,2011),('2011-08-30',201135,8,2011,30,35,201108,2011),('2011-08-31',201135,8,2011,31,35,201108,2011),('2011-09-01',201135,9,2011,1,35,201109,2011),('2011-09-02',201135,9,2011,2,35,201109,2011),('2011-09-03',201135,9,2011,3,35,201109,2011),('2011-09-04',201136,9,2011,4,36,201109,2011),('2011-09-05',201136,9,2011,5,36,201109,2011),('2011-09-06',201136,9,2011,6,36,201109,2011),('2011-09-07',201136,9,2011,7,36,201109,2011),('2011-09-08',201136,9,2011,8,36,201109,2011),('2011-09-09',201136,9,2011,9,36,201109,2011),('2011-09-10',201136,9,2011,10,36,201109,2011),('2011-09-11',201137,9,2011,11,37,201109,2011),('2011-09-12',201137,9,2011,12,37,201109,2011),('2011-09-13',201137,9,2011,13,37,201109,2011),('2011-09-14',201137,9,2011,14,37,201109,2011),('2011-09-15',201137,9,2011,15,37,201109,2011),('2011-09-16',201137,9,2011,16,37,201109,2011),('2011-09-17',201137,9,2011,17,37,201109,2011),('2011-09-18',201138,9,2011,18,38,201109,2011),('2011-09-19',201138,9,2011,19,38,201109,2011),('2011-09-20',201138,9,2011,20,38,201109,2011),('2011-09-21',201138,9,2011,21,38,201109,2011),('2011-09-22',201138,9,2011,22,38,201109,2011),('2011-09-23',201138,9,2011,23,38,201109,2011),('2011-09-24',201138,9,2011,24,38,201109,2011),('2011-09-25',201139,9,2011,25,39,201109,2011),('2011-09-26',201139,9,2011,26,39,201109,2011),('2011-09-27',201139,9,2011,27,39,201109,2011),('2011-09-28',201139,9,2011,28,39,201109,2011),('2011-09-29',201139,9,2011,29,39,201109,2011),('2011-09-30',201139,9,2011,30,39,201109,2011),('2011-10-01',201139,10,2011,1,39,201110,2011),('2011-10-02',201140,10,2011,2,40,201110,2011),('2011-10-03',201140,10,2011,3,40,201110,2011),('2011-10-04',201140,10,2011,4,40,201110,2011),('2011-10-05',201140,10,2011,5,40,201110,2011),('2011-10-06',201140,10,2011,6,40,201110,2011),('2011-10-07',201140,10,2011,7,40,201110,2011),('2011-10-08',201140,10,2011,8,40,201110,2011),('2011-10-09',201141,10,2011,9,41,201110,2011),('2011-10-10',201141,10,2011,10,41,201110,2011),('2011-10-11',201141,10,2011,11,41,201110,2011),('2011-10-12',201141,10,2011,12,41,201110,2011),('2011-10-13',201141,10,2011,13,41,201110,2011),('2011-10-14',201141,10,2011,14,41,201110,2011),('2011-10-15',201141,10,2011,15,41,201110,2011),('2011-10-16',201142,10,2011,16,42,201110,2011),('2011-10-17',201142,10,2011,17,42,201110,2011),('2011-10-18',201142,10,2011,18,42,201110,2011),('2011-10-19',201142,10,2011,19,42,201110,2011),('2011-10-20',201142,10,2011,20,42,201110,2011),('2011-10-21',201142,10,2011,21,42,201110,2011),('2011-10-22',201142,10,2011,22,42,201110,2011),('2011-10-23',201143,10,2011,23,43,201110,2011),('2011-10-24',201143,10,2011,24,43,201110,2011),('2011-10-25',201143,10,2011,25,43,201110,2011),('2011-10-26',201143,10,2011,26,43,201110,2011),('2011-10-27',201143,10,2011,27,43,201110,2011),('2011-10-28',201143,10,2011,28,43,201110,2011),('2011-10-29',201143,10,2011,29,43,201110,2011),('2011-10-30',201144,10,2011,30,44,201110,2011),('2011-10-31',201144,10,2011,31,44,201110,2011),('2011-11-01',201144,11,2011,1,44,201111,2011),('2011-11-02',201144,11,2011,2,44,201111,2011),('2011-11-03',201144,11,2011,3,44,201111,2011),('2011-11-04',201144,11,2011,4,44,201111,2011),('2011-11-05',201144,11,2011,5,44,201111,2011),('2011-11-06',201145,11,2011,6,45,201111,2011),('2011-11-07',201145,11,2011,7,45,201111,2011),('2011-11-08',201145,11,2011,8,45,201111,2011),('2011-11-09',201145,11,2011,9,45,201111,2011),('2011-11-10',201145,11,2011,10,45,201111,2011),('2011-11-11',201145,11,2011,11,45,201111,2011),('2011-11-12',201145,11,2011,12,45,201111,2011),('2011-11-13',201146,11,2011,13,46,201111,2011),('2011-11-14',201146,11,2011,14,46,201111,2011),('2011-11-15',201146,11,2011,15,46,201111,2011),('2011-11-16',201146,11,2011,16,46,201111,2011),('2011-11-17',201146,11,2011,17,46,201111,2011),('2011-11-18',201146,11,2011,18,46,201111,2011),('2011-11-19',201146,11,2011,19,46,201111,2011),('2011-11-20',201147,11,2011,20,47,201111,2011),('2011-11-21',201147,11,2011,21,47,201111,2011),('2011-11-22',201147,11,2011,22,47,201111,2011),('2011-11-23',201147,11,2011,23,47,201111,2011),('2011-11-24',201147,11,2011,24,47,201111,2011),('2011-11-25',201147,11,2011,25,47,201111,2011),('2011-11-26',201147,11,2011,26,47,201111,2011),('2011-11-27',201148,11,2011,27,48,201111,2011),('2011-11-28',201148,11,2011,28,48,201111,2011),('2011-11-29',201148,11,2011,29,48,201111,2011),('2011-11-30',201148,11,2011,30,48,201111,2011),('2011-12-01',201148,12,2011,1,48,201112,2012),('2011-12-02',201148,12,2011,2,48,201112,2012),('2011-12-03',201148,12,2011,3,48,201112,2012),('2011-12-04',201149,12,2011,4,49,201112,2012),('2011-12-05',201149,12,2011,5,49,201112,2012),('2011-12-06',201149,12,2011,6,49,201112,2012),('2011-12-07',201149,12,2011,7,49,201112,2012),('2011-12-08',201149,12,2011,8,49,201112,2012),('2011-12-09',201149,12,2011,9,49,201112,2012),('2011-12-10',201149,12,2011,10,49,201112,2012),('2011-12-11',201150,12,2011,11,50,201112,2012),('2011-12-12',201150,12,2011,12,50,201112,2012),('2011-12-13',201150,12,2011,13,50,201112,2012),('2011-12-14',201150,12,2011,14,50,201112,2012),('2011-12-15',201150,12,2011,15,50,201112,2012),('2011-12-16',201150,12,2011,16,50,201112,2012),('2011-12-17',201150,12,2011,17,50,201112,2012),('2011-12-18',201151,12,2011,18,51,201112,2012),('2011-12-19',201151,12,2011,19,51,201112,2012),('2011-12-20',201151,12,2011,20,51,201112,2012),('2011-12-21',201151,12,2011,21,51,201112,2012),('2011-12-22',201151,12,2011,22,51,201112,2012),('2011-12-23',201151,12,2011,23,51,201112,2012),('2011-12-24',201151,12,2011,24,51,201112,2012),('2011-12-25',201152,12,2011,25,52,201112,2012),('2011-12-26',201152,12,2011,26,52,201112,2012),('2011-12-27',201152,12,2011,27,52,201112,2012),('2011-12-28',201152,12,2011,28,52,201112,2012),('2011-12-29',201152,12,2011,29,52,201112,2012),('2011-12-30',201152,12,2011,30,52,201112,2012),('2011-12-31',201152,12,2011,31,52,201112,2012),('2012-01-01',201153,1,2012,1,1,201201,2012),('2012-01-02',201201,1,2012,2,1,201201,2012),('2012-01-03',201201,1,2012,3,1,201201,2012),('2012-01-04',201201,1,2012,4,1,201201,2012),('2012-01-05',201201,1,2012,5,1,201201,2012),('2012-01-06',201201,1,2012,6,1,201201,2012),('2012-01-07',201201,1,2012,7,1,201201,2012),('2012-01-08',201202,1,2012,8,2,201201,2012),('2012-01-09',201202,1,2012,9,2,201201,2012),('2012-01-10',201202,1,2012,10,2,201201,2012),('2012-01-11',201202,1,2012,11,2,201201,2012),('2012-01-12',201202,1,2012,12,2,201201,2012),('2012-01-13',201202,1,2012,13,2,201201,2012),('2012-01-14',201202,1,2012,14,2,201201,2012),('2012-01-15',201203,1,2012,15,3,201201,2012),('2012-01-16',201203,1,2012,16,3,201201,2012),('2012-01-17',201203,1,2012,17,3,201201,2012),('2012-01-18',201203,1,2012,18,3,201201,2012),('2012-01-19',201203,1,2012,19,3,201201,2012),('2012-01-20',201203,1,2012,20,3,201201,2012),('2012-01-21',201203,1,2012,21,3,201201,2012),('2012-01-22',201204,1,2012,22,4,201201,2012),('2012-01-23',201204,1,2012,23,4,201201,2012),('2012-01-24',201204,1,2012,24,4,201201,2012),('2012-01-25',201204,1,2012,25,4,201201,2012),('2012-01-26',201204,1,2012,26,4,201201,2012),('2012-01-27',201204,1,2012,27,4,201201,2012),('2012-01-28',201204,1,2012,28,4,201201,2012),('2012-01-29',201205,1,2012,29,5,201201,2012),('2012-01-30',201205,1,2012,30,5,201201,2012),('2012-01-31',201205,1,2012,31,5,201201,2012),('2012-02-01',201205,2,2012,1,5,201202,2012),('2012-02-02',201205,2,2012,2,5,201202,2012),('2012-02-03',201205,2,2012,3,5,201202,2012),('2012-02-04',201205,2,2012,4,5,201202,2012),('2012-02-05',201206,2,2012,5,6,201202,2012),('2012-02-06',201206,2,2012,6,6,201202,2012),('2012-02-07',201206,2,2012,7,6,201202,2012),('2012-02-08',201206,2,2012,8,6,201202,2012),('2012-02-09',201206,2,2012,9,6,201202,2012),('2012-02-10',201206,2,2012,10,6,201202,2012),('2012-02-11',201206,2,2012,11,6,201202,2012),('2012-02-12',201207,2,2012,12,7,201202,2012),('2012-02-13',201207,2,2012,13,7,201202,2012),('2012-02-14',201207,2,2012,14,7,201202,2012),('2012-02-15',201207,2,2012,15,7,201202,2012),('2012-02-16',201207,2,2012,16,7,201202,2012),('2012-02-17',201207,2,2012,17,7,201202,2012),('2012-02-18',201207,2,2012,18,7,201202,2012),('2012-02-19',201208,2,2012,19,8,201202,2012),('2012-02-20',201208,2,2012,20,8,201202,2012),('2012-02-21',201208,2,2012,21,8,201202,2012),('2012-02-22',201208,2,2012,22,8,201202,2012),('2012-02-23',201208,2,2012,23,8,201202,2012),('2012-02-24',201208,2,2012,24,8,201202,2012),('2012-02-25',201208,2,2012,25,8,201202,2012),('2012-02-26',201209,2,2012,26,9,201202,2012),('2012-02-27',201209,2,2012,27,9,201202,2012),('2012-02-28',201209,2,2012,28,9,201202,2012),('2012-02-29',201209,2,2012,29,9,201202,2012),('2012-03-01',201209,3,2012,1,9,201203,2012),('2012-03-02',201209,3,2012,2,9,201203,2012),('2012-03-03',201209,3,2012,3,9,201203,2012),('2012-03-04',201210,3,2012,4,10,201203,2012),('2012-03-05',201210,3,2012,5,10,201203,2012),('2012-03-06',201210,3,2012,6,10,201203,2012),('2012-03-07',201210,3,2012,7,10,201203,2012),('2012-03-08',201210,3,2012,8,10,201203,2012),('2012-03-09',201210,3,2012,9,10,201203,2012),('2012-03-10',201210,3,2012,10,10,201203,2012),('2012-03-11',201211,3,2012,11,11,201203,2012),('2012-03-12',201211,3,2012,12,11,201203,2012),('2012-03-13',201211,3,2012,13,11,201203,2012),('2012-03-14',201211,3,2012,14,11,201203,2012),('2012-03-15',201211,3,2012,15,11,201203,2012),('2012-03-16',201211,3,2012,16,11,201203,2012),('2012-03-17',201211,3,2012,17,11,201203,2012),('2012-03-18',201212,3,2012,18,12,201203,2012),('2012-03-19',201212,3,2012,19,12,201203,2012),('2012-03-20',201212,3,2012,20,12,201203,2012),('2012-03-21',201212,3,2012,21,12,201203,2012),('2012-03-22',201212,3,2012,22,12,201203,2012),('2012-03-23',201212,3,2012,23,12,201203,2012),('2012-03-24',201212,3,2012,24,12,201203,2012),('2012-03-25',201213,3,2012,25,13,201203,2012),('2012-03-26',201213,3,2012,26,13,201203,2012),('2012-03-27',201213,3,2012,27,13,201203,2012),('2012-03-28',201213,3,2012,28,13,201203,2012),('2012-03-29',201213,3,2012,29,13,201203,2012),('2012-03-30',201213,3,2012,30,13,201203,2012),('2012-03-31',201213,3,2012,31,13,201203,2012),('2012-04-01',201214,4,2012,1,14,201204,2012),('2012-04-02',201214,4,2012,2,14,201204,2012),('2012-04-03',201214,4,2012,3,14,201204,2012),('2012-04-04',201214,4,2012,4,14,201204,2012),('2012-04-05',201214,4,2012,5,14,201204,2012),('2012-04-06',201214,4,2012,6,14,201204,2012),('2012-04-07',201214,4,2012,7,14,201204,2012),('2012-04-08',201215,4,2012,8,15,201204,2012),('2012-04-09',201215,4,2012,9,15,201204,2012),('2012-04-10',201215,4,2012,10,15,201204,2012),('2012-04-11',201215,4,2012,11,15,201204,2012),('2012-04-12',201215,4,2012,12,15,201204,2012),('2012-04-13',201215,4,2012,13,15,201204,2012),('2012-04-14',201215,4,2012,14,15,201204,2012),('2012-04-15',201216,4,2012,15,16,201204,2012),('2012-04-16',201216,4,2012,16,16,201204,2012),('2012-04-17',201216,4,2012,17,16,201204,2012),('2012-04-18',201216,4,2012,18,16,201204,2012),('2012-04-19',201216,4,2012,19,16,201204,2012),('2012-04-20',201216,4,2012,20,16,201204,2012),('2012-04-21',201216,4,2012,21,16,201204,2012),('2012-04-22',201217,4,2012,22,17,201204,2012),('2012-04-23',201217,4,2012,23,17,201204,2012),('2012-04-24',201217,4,2012,24,17,201204,2012),('2012-04-25',201217,4,2012,25,17,201204,2012),('2012-04-26',201217,4,2012,26,17,201204,2012),('2012-04-27',201217,4,2012,27,17,201204,2012),('2012-04-28',201217,4,2012,28,17,201204,2012),('2012-04-29',201218,4,2012,29,18,201204,2012),('2012-04-30',201218,4,2012,30,18,201204,2012),('2012-05-01',201218,5,2012,1,18,201205,2012),('2012-05-02',201218,5,2012,2,18,201205,2012),('2012-05-03',201218,5,2012,3,18,201205,2012),('2012-05-04',201218,5,2012,4,18,201205,2012),('2012-05-05',201218,5,2012,5,18,201205,2012),('2012-05-06',201219,5,2012,6,19,201205,2012),('2012-05-07',201219,5,2012,7,19,201205,2012),('2012-05-08',201219,5,2012,8,19,201205,2012),('2012-05-09',201219,5,2012,9,19,201205,2012),('2012-05-10',201219,5,2012,10,19,201205,2012),('2012-05-11',201219,5,2012,11,19,201205,2012),('2012-05-12',201219,5,2012,12,19,201205,2012),('2012-05-13',201220,5,2012,13,20,201205,2012),('2012-05-14',201220,5,2012,14,20,201205,2012),('2012-05-15',201220,5,2012,15,20,201205,2012),('2012-05-16',201220,5,2012,16,20,201205,2012),('2012-05-17',201220,5,2012,17,20,201205,2012),('2012-05-18',201220,5,2012,18,20,201205,2012),('2012-05-19',201220,5,2012,19,20,201205,2012),('2012-05-20',201221,5,2012,20,21,201205,2012),('2012-05-21',201221,5,2012,21,21,201205,2012),('2012-05-22',201221,5,2012,22,21,201205,2012),('2012-05-23',201221,5,2012,23,21,201205,2012),('2012-05-24',201221,5,2012,24,21,201205,2012),('2012-05-25',201221,5,2012,25,21,201205,2012),('2012-05-26',201221,5,2012,26,21,201205,2012),('2012-05-27',201222,5,2012,27,22,201205,2012),('2012-05-28',201222,5,2012,28,22,201205,2012),('2012-05-29',201222,5,2012,29,22,201205,2012),('2012-05-30',201222,5,2012,30,22,201205,2012),('2012-05-31',201222,5,2012,31,22,201205,2012),('2012-06-01',201222,6,2012,1,22,201206,2012),('2012-06-02',201222,6,2012,2,22,201206,2012),('2012-06-03',201223,6,2012,3,23,201206,2012),('2012-06-04',201223,6,2012,4,23,201206,2012),('2012-06-05',201223,6,2012,5,23,201206,2012),('2012-06-06',201223,6,2012,6,23,201206,2012),('2012-06-07',201223,6,2012,7,23,201206,2012),('2012-06-08',201223,6,2012,8,23,201206,2012),('2012-06-09',201223,6,2012,9,23,201206,2012),('2012-06-10',201224,6,2012,10,24,201206,2012),('2012-06-11',201224,6,2012,11,24,201206,2012),('2012-06-12',201224,6,2012,12,24,201206,2012),('2012-06-13',201224,6,2012,13,24,201206,2012),('2012-06-14',201224,6,2012,14,24,201206,2012),('2012-06-15',201224,6,2012,15,24,201206,2012),('2012-06-16',201224,6,2012,16,24,201206,2012),('2012-06-17',201225,6,2012,17,25,201206,2012),('2012-06-18',201225,6,2012,18,25,201206,2012),('2012-06-19',201225,6,2012,19,25,201206,2012),('2012-06-20',201225,6,2012,20,25,201206,2012),('2012-06-21',201225,6,2012,21,25,201206,2012),('2012-06-22',201225,6,2012,22,25,201206,2012),('2012-06-23',201225,6,2012,23,25,201206,2012),('2012-06-24',201226,6,2012,24,26,201206,2012),('2012-06-25',201226,6,2012,25,26,201206,2012),('2012-06-26',201226,6,2012,26,26,201206,2012),('2012-06-27',201226,6,2012,27,26,201206,2012),('2012-06-28',201226,6,2012,28,26,201206,2012),('2012-06-29',201226,6,2012,29,26,201206,2012),('2012-06-30',201226,6,2012,30,26,201206,2012),('2012-07-01',201227,7,2012,1,27,201207,2012),('2012-07-02',201227,7,2012,2,27,201207,2012),('2012-07-03',201227,7,2012,3,27,201207,2012),('2012-07-04',201227,7,2012,4,27,201207,2012),('2012-07-05',201227,7,2012,5,27,201207,2012),('2012-07-06',201227,7,2012,6,27,201207,2012),('2012-07-07',201227,7,2012,7,27,201207,2012),('2012-07-08',201228,7,2012,8,28,201207,2012),('2012-07-09',201228,7,2012,9,28,201207,2012),('2012-07-10',201228,7,2012,10,28,201207,2012),('2012-07-11',201228,7,2012,11,28,201207,2012),('2012-07-12',201228,7,2012,12,28,201207,2012),('2012-07-13',201228,7,2012,13,28,201207,2012),('2012-07-14',201228,7,2012,14,28,201207,2012),('2012-07-15',201229,7,2012,15,29,201207,2012),('2012-07-16',201229,7,2012,16,29,201207,2012),('2012-07-17',201229,7,2012,17,29,201207,2012),('2012-07-18',201229,7,2012,18,29,201207,2012),('2012-07-19',201229,7,2012,19,29,201207,2012),('2012-07-20',201229,7,2012,20,29,201207,2012),('2012-07-21',201229,7,2012,21,29,201207,2012),('2012-07-22',201230,7,2012,22,30,201207,2012),('2012-07-23',201230,7,2012,23,30,201207,2012),('2012-07-24',201230,7,2012,24,30,201207,2012),('2012-07-25',201230,7,2012,25,30,201207,2012),('2012-07-26',201230,7,2012,26,30,201207,2012),('2012-07-27',201230,7,2012,27,30,201207,2012),('2012-07-28',201230,7,2012,28,30,201207,2012),('2012-07-29',201231,7,2012,29,31,201207,2012),('2012-07-30',201231,7,2012,30,31,201207,2012),('2012-07-31',201231,7,2012,31,31,201207,2012),('2012-08-01',201231,8,2012,1,31,201208,2012),('2012-08-02',201231,8,2012,2,31,201208,2012),('2012-08-03',201231,8,2012,3,31,201208,2012),('2012-08-04',201231,8,2012,4,31,201208,2012),('2012-08-05',201232,8,2012,5,32,201208,2012),('2012-08-06',201232,8,2012,6,32,201208,2012),('2012-08-07',201232,8,2012,7,32,201208,2012),('2012-08-08',201232,8,2012,8,32,201208,2012),('2012-08-09',201232,8,2012,9,32,201208,2012),('2012-08-10',201232,8,2012,10,32,201208,2012),('2012-08-11',201232,8,2012,11,32,201208,2012),('2012-08-12',201233,8,2012,12,33,201208,2012),('2012-08-13',201233,8,2012,13,33,201208,2012),('2012-08-14',201233,8,2012,14,33,201208,2012),('2012-08-15',201233,8,2012,15,33,201208,2012),('2012-08-16',201233,8,2012,16,33,201208,2012),('2012-08-17',201233,8,2012,17,33,201208,2012),('2012-08-18',201233,8,2012,18,33,201208,2012),('2012-08-19',201234,8,2012,19,34,201208,2012),('2012-08-20',201234,8,2012,20,34,201208,2012),('2012-08-21',201234,8,2012,21,34,201208,2012),('2012-08-22',201234,8,2012,22,34,201208,2012),('2012-08-23',201234,8,2012,23,34,201208,2012),('2012-08-24',201234,8,2012,24,34,201208,2012),('2012-08-25',201234,8,2012,25,34,201208,2012),('2012-08-26',201235,8,2012,26,35,201208,2012),('2012-08-27',201235,8,2012,27,35,201208,2012),('2012-08-28',201235,8,2012,28,35,201208,2012),('2012-08-29',201235,8,2012,29,35,201208,2012),('2012-08-30',201235,8,2012,30,35,201208,2012),('2012-08-31',201235,8,2012,31,35,201208,2012),('2012-09-01',201235,9,2012,1,35,201209,2012),('2012-09-02',201236,9,2012,2,36,201209,2012),('2012-09-03',201236,9,2012,3,36,201209,2012),('2012-09-04',201236,9,2012,4,36,201209,2012),('2012-09-05',201236,9,2012,5,36,201209,2012),('2012-09-06',201236,9,2012,6,36,201209,2012),('2012-09-07',201236,9,2012,7,36,201209,2012),('2012-09-08',201236,9,2012,8,36,201209,2012),('2012-09-09',201237,9,2012,9,37,201209,2012),('2012-09-10',201237,9,2012,10,37,201209,2012),('2012-09-11',201237,9,2012,11,37,201209,2012),('2012-09-12',201237,9,2012,12,37,201209,2012),('2012-09-13',201237,9,2012,13,37,201209,2012),('2012-09-14',201237,9,2012,14,37,201209,2012),('2012-09-15',201237,9,2012,15,37,201209,2012),('2012-09-16',201238,9,2012,16,38,201209,2012),('2012-09-17',201238,9,2012,17,38,201209,2012),('2012-09-18',201238,9,2012,18,38,201209,2012),('2012-09-19',201238,9,2012,19,38,201209,2012),('2012-09-20',201238,9,2012,20,38,201209,2012),('2012-09-21',201238,9,2012,21,38,201209,2012),('2012-09-22',201238,9,2012,22,38,201209,2012),('2012-09-23',201239,9,2012,23,39,201209,2012),('2012-09-24',201239,9,2012,24,39,201209,2012),('2012-09-25',201239,9,2012,25,39,201209,2012),('2012-09-26',201239,9,2012,26,39,201209,2012),('2012-09-27',201239,9,2012,27,39,201209,2012),('2012-09-28',201239,9,2012,28,39,201209,2012),('2012-09-29',201239,9,2012,29,39,201209,2012),('2012-09-30',201240,9,2012,30,40,201209,2012),('2012-10-01',201240,10,2012,1,40,201210,2012),('2012-10-02',201240,10,2012,2,40,201210,2012),('2012-10-03',201240,10,2012,3,40,201210,2012),('2012-10-04',201240,10,2012,4,40,201210,2012),('2012-10-05',201240,10,2012,5,40,201210,2012),('2012-10-06',201240,10,2012,6,40,201210,2012),('2012-10-07',201241,10,2012,7,41,201210,2012),('2012-10-08',201241,10,2012,8,41,201210,2012),('2012-10-09',201241,10,2012,9,41,201210,2012),('2012-10-10',201241,10,2012,10,41,201210,2012),('2012-10-11',201241,10,2012,11,41,201210,2012),('2012-10-12',201241,10,2012,12,41,201210,2012),('2012-10-13',201241,10,2012,13,41,201210,2012),('2012-10-14',201242,10,2012,14,42,201210,2012),('2012-10-15',201242,10,2012,15,42,201210,2012),('2012-10-16',201242,10,2012,16,42,201210,2012),('2012-10-17',201242,10,2012,17,42,201210,2012),('2012-10-18',201242,10,2012,18,42,201210,2012),('2012-10-19',201242,10,2012,19,42,201210,2012),('2012-10-20',201242,10,2012,20,42,201210,2012),('2012-10-21',201243,10,2012,21,43,201210,2012),('2012-10-22',201243,10,2012,22,43,201210,2012),('2012-10-23',201243,10,2012,23,43,201210,2012),('2012-10-24',201243,10,2012,24,43,201210,2012),('2012-10-25',201243,10,2012,25,43,201210,2012),('2012-10-26',201243,10,2012,26,43,201210,2012),('2012-10-27',201243,10,2012,27,43,201210,2012),('2012-10-28',201244,10,2012,28,44,201210,2012),('2012-10-29',201244,10,2012,29,44,201210,2012),('2012-10-30',201244,10,2012,30,44,201210,2012),('2012-10-31',201244,10,2012,31,44,201210,2012),('2012-11-01',201244,11,2012,1,44,201211,2012),('2012-11-02',201244,11,2012,2,44,201211,2012),('2012-11-03',201244,11,2012,3,44,201211,2012),('2012-11-04',201245,11,2012,4,45,201211,2012),('2012-11-05',201245,11,2012,5,45,201211,2012),('2012-11-06',201245,11,2012,6,45,201211,2012),('2012-11-07',201245,11,2012,7,45,201211,2012),('2012-11-08',201245,11,2012,8,45,201211,2012),('2012-11-09',201245,11,2012,9,45,201211,2012),('2012-11-10',201245,11,2012,10,45,201211,2012),('2012-11-11',201246,11,2012,11,46,201211,2012),('2012-11-12',201246,11,2012,12,46,201211,2012),('2012-11-13',201246,11,2012,13,46,201211,2012),('2012-11-14',201246,11,2012,14,46,201211,2012),('2012-11-15',201246,11,2012,15,46,201211,2012),('2012-11-16',201246,11,2012,16,46,201211,2012),('2012-11-17',201246,11,2012,17,46,201211,2012),('2012-11-18',201247,11,2012,18,47,201211,2012),('2012-11-19',201247,11,2012,19,47,201211,2012),('2012-11-20',201247,11,2012,20,47,201211,2012),('2012-11-21',201247,11,2012,21,47,201211,2012),('2012-11-22',201247,11,2012,22,47,201211,2012),('2012-11-23',201247,11,2012,23,47,201211,2012),('2012-11-24',201247,11,2012,24,47,201211,2012),('2012-11-25',201248,11,2012,25,48,201211,2012),('2012-11-26',201248,11,2012,26,48,201211,2012),('2012-11-27',201248,11,2012,27,48,201211,2012),('2012-11-28',201248,11,2012,28,48,201211,2012),('2012-11-29',201248,11,2012,29,48,201211,2012),('2012-11-30',201248,11,2012,30,48,201211,2012),('2012-12-01',201248,12,2012,1,48,201212,2013),('2012-12-02',201249,12,2012,2,49,201212,2013),('2012-12-03',201249,12,2012,3,49,201212,2013),('2012-12-04',201249,12,2012,4,49,201212,2013),('2012-12-05',201249,12,2012,5,49,201212,2013),('2012-12-06',201249,12,2012,6,49,201212,2013),('2012-12-07',201249,12,2012,7,49,201212,2013),('2012-12-08',201249,12,2012,8,49,201212,2013),('2012-12-09',201250,12,2012,9,50,201212,2013),('2012-12-10',201250,12,2012,10,50,201212,2013),('2012-12-11',201250,12,2012,11,50,201212,2013),('2012-12-12',201250,12,2012,12,50,201212,2013),('2012-12-13',201250,12,2012,13,50,201212,2013),('2012-12-14',201250,12,2012,14,50,201212,2013),('2012-12-15',201250,12,2012,15,50,201212,2013),('2012-12-16',201251,12,2012,16,51,201212,2013),('2012-12-17',201251,12,2012,17,51,201212,2013),('2012-12-18',201251,12,2012,18,51,201212,2013),('2012-12-19',201251,12,2012,19,51,201212,2013),('2012-12-20',201251,12,2012,20,51,201212,2013),('2012-12-21',201251,12,2012,21,51,201212,2013),('2012-12-22',201251,12,2012,22,51,201212,2013),('2012-12-23',201252,12,2012,23,52,201212,2013),('2012-12-24',201252,12,2012,24,52,201212,2013),('2012-12-25',201252,12,2012,25,52,201212,2013),('2012-12-26',201252,12,2012,26,52,201212,2013),('2012-12-27',201252,12,2012,27,52,201212,2013),('2012-12-28',201252,12,2012,28,52,201212,2013),('2012-12-29',201252,12,2012,29,52,201212,2013),('2012-12-30',201301,12,2012,30,1,201212,2013),('2012-12-31',201301,12,2012,31,1,201212,2013),('2013-01-01',201301,1,2013,1,1,201301,2013),('2013-01-02',201301,1,2013,2,1,201301,2013),('2013-01-03',201301,1,2013,3,1,201301,2013),('2013-01-04',201301,1,2013,4,1,201301,2013),('2013-01-05',201301,1,2013,5,1,201301,2013),('2013-01-06',201302,1,2013,6,2,201301,2013),('2013-01-07',201302,1,2013,7,2,201301,2013),('2013-01-08',201302,1,2013,8,2,201301,2013),('2013-01-09',201302,1,2013,9,2,201301,2013),('2013-01-10',201302,1,2013,10,2,201301,2013),('2013-01-11',201302,1,2013,11,2,201301,2013),('2013-01-12',201302,1,2013,12,2,201301,2013),('2013-01-13',201303,1,2013,13,3,201301,2013),('2013-01-14',201303,1,2013,14,3,201301,2013),('2013-01-15',201303,1,2013,15,3,201301,2013),('2013-01-16',201303,1,2013,16,3,201301,2013),('2013-01-17',201303,1,2013,17,3,201301,2013),('2013-01-18',201303,1,2013,18,3,201301,2013),('2013-01-19',201303,1,2013,19,3,201301,2013),('2013-01-20',201304,1,2013,20,4,201301,2013),('2013-01-21',201304,1,2013,21,4,201301,2013),('2013-01-22',201304,1,2013,22,4,201301,2013),('2013-01-23',201304,1,2013,23,4,201301,2013),('2013-01-24',201304,1,2013,24,4,201301,2013),('2013-01-25',201304,1,2013,25,4,201301,2013),('2013-01-26',201304,1,2013,26,4,201301,2013),('2013-01-27',201305,1,2013,27,5,201301,2013),('2013-01-28',201305,1,2013,28,5,201301,2013),('2013-01-29',201305,1,2013,29,5,201301,2013),('2013-01-30',201305,1,2013,30,5,201301,2013),('2013-01-31',201305,1,2013,31,5,201301,2013),('2013-02-01',201305,2,2013,1,5,201302,2013),('2013-02-02',201305,2,2013,2,5,201302,2013),('2013-02-03',201306,2,2013,3,6,201302,2013),('2013-02-04',201306,2,2013,4,6,201302,2013),('2013-02-05',201306,2,2013,5,6,201302,2013),('2013-02-06',201306,2,2013,6,6,201302,2013),('2013-02-07',201306,2,2013,7,6,201302,2013),('2013-02-08',201306,2,2013,8,6,201302,2013),('2013-02-09',201306,2,2013,9,6,201302,2013),('2013-02-10',201307,2,2013,10,7,201302,2013),('2013-02-11',201307,2,2013,11,7,201302,2013),('2013-02-12',201307,2,2013,12,7,201302,2013),('2013-02-13',201307,2,2013,13,7,201302,2013),('2013-02-14',201307,2,2013,14,7,201302,2013),('2013-02-15',201307,2,2013,15,7,201302,2013),('2013-02-16',201307,2,2013,16,7,201302,2013),('2013-02-17',201308,2,2013,17,8,201302,2013),('2013-02-18',201308,2,2013,18,8,201302,2013),('2013-02-19',201308,2,2013,19,8,201302,2013),('2013-02-20',201308,2,2013,20,8,201302,2013),('2013-02-21',201308,2,2013,21,8,201302,2013),('2013-02-22',201308,2,2013,22,8,201302,2013),('2013-02-23',201308,2,2013,23,8,201302,2013),('2013-02-24',201309,2,2013,24,9,201302,2013),('2013-02-25',201309,2,2013,25,9,201302,2013),('2013-02-26',201309,2,2013,26,9,201302,2013),('2013-02-27',201309,2,2013,27,9,201302,2013),('2013-02-28',201309,2,2013,28,9,201302,2013),('2013-03-01',201309,3,2013,1,9,201303,2013),('2013-03-02',201309,3,2013,2,9,201303,2013),('2013-03-03',201310,3,2013,3,10,201303,2013),('2013-03-04',201310,3,2013,4,10,201303,2013),('2013-03-05',201310,3,2013,5,10,201303,2013),('2013-03-06',201310,3,2013,6,10,201303,2013),('2013-03-07',201310,3,2013,7,10,201303,2013),('2013-03-08',201310,3,2013,8,10,201303,2013),('2013-03-09',201310,3,2013,9,10,201303,2013),('2013-03-10',201311,3,2013,10,11,201303,2013),('2013-03-11',201311,3,2013,11,11,201303,2013),('2013-03-12',201311,3,2013,12,11,201303,2013),('2013-03-13',201311,3,2013,13,11,201303,2013),('2013-03-14',201311,3,2013,14,11,201303,2013),('2013-03-15',201311,3,2013,15,11,201303,2013),('2013-03-16',201311,3,2013,16,11,201303,2013),('2013-03-17',201312,3,2013,17,12,201303,2013),('2013-03-18',201312,3,2013,18,12,201303,2013),('2013-03-19',201312,3,2013,19,12,201303,2013),('2013-03-20',201312,3,2013,20,12,201303,2013),('2013-03-21',201312,3,2013,21,12,201303,2013),('2013-03-22',201312,3,2013,22,12,201303,2013),('2013-03-23',201312,3,2013,23,12,201303,2013),('2013-03-24',201313,3,2013,24,13,201303,2013),('2013-03-25',201313,3,2013,25,13,201303,2013),('2013-03-26',201313,3,2013,26,13,201303,2013),('2013-03-27',201313,3,2013,27,13,201303,2013),('2013-03-28',201313,3,2013,28,13,201303,2013),('2013-03-29',201313,3,2013,29,13,201303,2013),('2013-03-30',201313,3,2013,30,13,201303,2013),('2013-03-31',201314,3,2013,31,14,201303,2013),('2013-04-01',201314,4,2013,1,14,201304,2013),('2013-04-02',201314,4,2013,2,14,201304,2013),('2013-04-03',201314,4,2013,3,14,201304,2013),('2013-04-04',201314,4,2013,4,14,201304,2013),('2013-04-05',201314,4,2013,5,14,201304,2013),('2013-04-06',201314,4,2013,6,14,201304,2013),('2013-04-07',201315,4,2013,7,15,201304,2013),('2013-04-08',201315,4,2013,8,15,201304,2013),('2013-04-09',201315,4,2013,9,15,201304,2013),('2013-04-10',201315,4,2013,10,15,201304,2013),('2013-04-11',201315,4,2013,11,15,201304,2013),('2013-04-12',201315,4,2013,12,15,201304,2013),('2013-04-13',201315,4,2013,13,15,201304,2013),('2013-04-14',201316,4,2013,14,16,201304,2013),('2013-04-15',201316,4,2013,15,16,201304,2013),('2013-04-16',201316,4,2013,16,16,201304,2013),('2013-04-17',201316,4,2013,17,16,201304,2013),('2013-04-18',201316,4,2013,18,16,201304,2013),('2013-04-19',201316,4,2013,19,16,201304,2013),('2013-04-20',201316,4,2013,20,16,201304,2013),('2013-04-21',201317,4,2013,21,17,201304,2013),('2013-04-22',201317,4,2013,22,17,201304,2013),('2013-04-23',201317,4,2013,23,17,201304,2013),('2013-04-24',201317,4,2013,24,17,201304,2013),('2013-04-25',201317,4,2013,25,17,201304,2013),('2013-04-26',201317,4,2013,26,17,201304,2013),('2013-04-27',201317,4,2013,27,17,201304,2013),('2013-04-28',201318,4,2013,28,18,201304,2013),('2013-04-29',201318,4,2013,29,18,201304,2013),('2013-04-30',201318,4,2013,30,18,201304,2013),('2013-05-01',201318,5,2013,1,18,201305,2013),('2013-05-02',201318,5,2013,2,18,201305,2013),('2013-05-03',201318,5,2013,3,18,201305,2013),('2013-05-04',201318,5,2013,4,18,201305,2013),('2013-05-05',201319,5,2013,5,19,201305,2013),('2013-05-06',201319,5,2013,6,19,201305,2013),('2013-05-07',201319,5,2013,7,19,201305,2013),('2013-05-08',201319,5,2013,8,19,201305,2013),('2013-05-09',201319,5,2013,9,19,201305,2013),('2013-05-10',201319,5,2013,10,19,201305,2013),('2013-05-11',201319,5,2013,11,19,201305,2013),('2013-05-12',201320,5,2013,12,20,201305,2013),('2013-05-13',201320,5,2013,13,20,201305,2013),('2013-05-14',201320,5,2013,14,20,201305,2013),('2013-05-15',201320,5,2013,15,20,201305,2013),('2013-05-16',201320,5,2013,16,20,201305,2013),('2013-05-17',201320,5,2013,17,20,201305,2013),('2013-05-18',201320,5,2013,18,20,201305,2013),('2013-05-19',201321,5,2013,19,21,201305,2013),('2013-05-20',201321,5,2013,20,21,201305,2013),('2013-05-21',201321,5,2013,21,21,201305,2013),('2013-05-22',201321,5,2013,22,21,201305,2013),('2013-05-23',201321,5,2013,23,21,201305,2013),('2013-05-24',201321,5,2013,24,21,201305,2013),('2013-05-25',201321,5,2013,25,21,201305,2013),('2013-05-26',201322,5,2013,26,22,201305,2013),('2013-05-27',201322,5,2013,27,22,201305,2013),('2013-05-28',201322,5,2013,28,22,201305,2013),('2013-05-29',201322,5,2013,29,22,201305,2013),('2013-05-30',201322,5,2013,30,22,201305,2013),('2013-05-31',201322,5,2013,31,22,201305,2013),('2013-06-01',201322,6,2013,1,22,201306,2013),('2013-06-02',201323,6,2013,2,23,201306,2013),('2013-06-03',201323,6,2013,3,23,201306,2013),('2013-06-04',201323,6,2013,4,23,201306,2013),('2013-06-05',201323,6,2013,5,23,201306,2013),('2013-06-06',201323,6,2013,6,23,201306,2013),('2013-06-07',201323,6,2013,7,23,201306,2013),('2013-06-08',201323,6,2013,8,23,201306,2013),('2013-06-09',201324,6,2013,9,24,201306,2013),('2013-06-10',201324,6,2013,10,24,201306,2013),('2013-06-11',201324,6,2013,11,24,201306,2013),('2013-06-12',201324,6,2013,12,24,201306,2013),('2013-06-13',201324,6,2013,13,24,201306,2013),('2013-06-14',201324,6,2013,14,24,201306,2013),('2013-06-15',201324,6,2013,15,24,201306,2013),('2013-06-16',201325,6,2013,16,25,201306,2013),('2013-06-17',201325,6,2013,17,25,201306,2013),('2013-06-18',201325,6,2013,18,25,201306,2013),('2013-06-19',201325,6,2013,19,25,201306,2013),('2013-06-20',201325,6,2013,20,25,201306,2013),('2013-06-21',201325,6,2013,21,25,201306,2013),('2013-06-22',201325,6,2013,22,25,201306,2013),('2013-06-23',201326,6,2013,23,26,201306,2013),('2013-06-24',201326,6,2013,24,26,201306,2013),('2013-06-25',201326,6,2013,25,26,201306,2013),('2013-06-26',201326,6,2013,26,26,201306,2013),('2013-06-27',201326,6,2013,27,26,201306,2013),('2013-06-28',201326,6,2013,28,26,201306,2013),('2013-06-29',201326,6,2013,29,26,201306,2013),('2013-06-30',201327,6,2013,30,27,201306,2013),('2013-07-01',201327,7,2013,1,27,201307,2013),('2013-07-02',201327,7,2013,2,27,201307,2013),('2013-07-03',201327,7,2013,3,27,201307,2013),('2013-07-04',201327,7,2013,4,27,201307,2013),('2013-07-05',201327,7,2013,5,27,201307,2013),('2013-07-06',201327,7,2013,6,27,201307,2013),('2013-07-07',201328,7,2013,7,28,201307,2013),('2013-07-08',201328,7,2013,8,28,201307,2013),('2013-07-09',201328,7,2013,9,28,201307,2013),('2013-07-10',201328,7,2013,10,28,201307,2013),('2013-07-11',201328,7,2013,11,28,201307,2013),('2013-07-12',201328,7,2013,12,28,201307,2013),('2013-07-13',201328,7,2013,13,28,201307,2013),('2013-07-14',201329,7,2013,14,29,201307,2013),('2013-07-15',201329,7,2013,15,29,201307,2013),('2013-07-16',201329,7,2013,16,29,201307,2013),('2013-07-17',201329,7,2013,17,29,201307,2013),('2013-07-18',201329,7,2013,18,29,201307,2013),('2013-07-19',201329,7,2013,19,29,201307,2013),('2013-07-20',201329,7,2013,20,29,201307,2013),('2013-07-21',201330,7,2013,21,30,201307,2013),('2013-07-22',201330,7,2013,22,30,201307,2013),('2013-07-23',201330,7,2013,23,30,201307,2013),('2013-07-24',201330,7,2013,24,30,201307,2013),('2013-07-25',201330,7,2013,25,30,201307,2013),('2013-07-26',201330,7,2013,26,30,201307,2013),('2013-07-27',201330,7,2013,27,30,201307,2013),('2013-07-28',201331,7,2013,28,31,201307,2013),('2013-07-29',201331,7,2013,29,31,201307,2013),('2013-07-30',201331,7,2013,30,31,201307,2013),('2013-07-31',201331,7,2013,31,31,201307,2013),('2013-08-01',201331,8,2013,1,31,201308,2013),('2013-08-02',201331,8,2013,2,31,201308,2013),('2013-08-03',201331,8,2013,3,31,201308,2013),('2013-08-04',201332,8,2013,4,32,201308,2013),('2013-08-05',201332,8,2013,5,32,201308,2013),('2013-08-06',201332,8,2013,6,32,201308,2013),('2013-08-07',201332,8,2013,7,32,201308,2013),('2013-08-08',201332,8,2013,8,32,201308,2013),('2013-08-09',201332,8,2013,9,32,201308,2013),('2013-08-10',201332,8,2013,10,32,201308,2013),('2013-08-11',201333,8,2013,11,33,201308,2013),('2013-08-12',201333,8,2013,12,33,201308,2013),('2013-08-13',201333,8,2013,13,33,201308,2013),('2013-08-14',201333,8,2013,14,33,201308,2013),('2013-08-15',201333,8,2013,15,33,201308,2013),('2013-08-16',201333,8,2013,16,33,201308,2013),('2013-08-17',201333,8,2013,17,33,201308,2013),('2013-08-18',201334,8,2013,18,34,201308,2013),('2013-08-19',201334,8,2013,19,34,201308,2013),('2013-08-20',201334,8,2013,20,34,201308,2013),('2013-08-21',201334,8,2013,21,34,201308,2013),('2013-08-22',201334,8,2013,22,34,201308,2013),('2013-08-23',201334,8,2013,23,34,201308,2013),('2013-08-24',201334,8,2013,24,34,201308,2013),('2013-08-25',201335,8,2013,25,35,201308,2013),('2013-08-26',201335,8,2013,26,35,201308,2013),('2013-08-27',201335,8,2013,27,35,201308,2013),('2013-08-28',201335,8,2013,28,35,201308,2013),('2013-08-29',201335,8,2013,29,35,201308,2013),('2013-08-30',201335,8,2013,30,35,201308,2013),('2013-08-31',201335,8,2013,31,35,201308,2013),('2013-09-01',201336,9,2013,1,36,201309,2013),('2013-09-02',201336,9,2013,2,36,201309,2013),('2013-09-03',201336,9,2013,3,36,201309,2013),('2013-09-04',201336,9,2013,4,36,201309,2013),('2013-09-05',201336,9,2013,5,36,201309,2013),('2013-09-06',201336,9,2013,6,36,201309,2013),('2013-09-07',201336,9,2013,7,36,201309,2013),('2013-09-08',201337,9,2013,8,37,201309,2013),('2013-09-09',201337,9,2013,9,37,201309,2013),('2013-09-10',201337,9,2013,10,37,201309,2013),('2013-09-11',201337,9,2013,11,37,201309,2013),('2013-09-12',201337,9,2013,12,37,201309,2013),('2013-09-13',201337,9,2013,13,37,201309,2013),('2013-09-14',201337,9,2013,14,37,201309,2013),('2013-09-15',201338,9,2013,15,38,201309,2013),('2013-09-16',201338,9,2013,16,38,201309,2013),('2013-09-17',201338,9,2013,17,38,201309,2013),('2013-09-18',201338,9,2013,18,38,201309,2013),('2013-09-19',201338,9,2013,19,38,201309,2013),('2013-09-20',201338,9,2013,20,38,201309,2013),('2013-09-21',201338,9,2013,21,38,201309,2013),('2013-09-22',201339,9,2013,22,39,201309,2013),('2013-09-23',201339,9,2013,23,39,201309,2013),('2013-09-24',201339,9,2013,24,39,201309,2013),('2013-09-25',201339,9,2013,25,39,201309,2013),('2013-09-26',201339,9,2013,26,39,201309,2013),('2013-09-27',201339,9,2013,27,39,201309,2013),('2013-09-28',201339,9,2013,28,39,201309,2013),('2013-09-29',201340,9,2013,29,40,201309,2013),('2013-09-30',201340,9,2013,30,40,201309,2013),('2013-10-01',201340,10,2013,1,40,201310,2013),('2013-10-02',201340,10,2013,2,40,201310,2013),('2013-10-03',201340,10,2013,3,40,201310,2013),('2013-10-04',201340,10,2013,4,40,201310,2013),('2013-10-05',201340,10,2013,5,40,201310,2013),('2013-10-06',201341,10,2013,6,41,201310,2013),('2013-10-07',201341,10,2013,7,41,201310,2013),('2013-10-08',201341,10,2013,8,41,201310,2013),('2013-10-09',201341,10,2013,9,41,201310,2013),('2013-10-10',201341,10,2013,10,41,201310,2013),('2013-10-11',201341,10,2013,11,41,201310,2013),('2013-10-12',201341,10,2013,12,41,201310,2013),('2013-10-13',201342,10,2013,13,42,201310,2013),('2013-10-14',201342,10,2013,14,42,201310,2013),('2013-10-15',201342,10,2013,15,42,201310,2013),('2013-10-16',201342,10,2013,16,42,201310,2013),('2013-10-17',201342,10,2013,17,42,201310,2013),('2013-10-18',201342,10,2013,18,42,201310,2013),('2013-10-19',201342,10,2013,19,42,201310,2013),('2013-10-20',201343,10,2013,20,43,201310,2013),('2013-10-21',201343,10,2013,21,43,201310,2013),('2013-10-22',201343,10,2013,22,43,201310,2013),('2013-10-23',201343,10,2013,23,43,201310,2013),('2013-10-24',201343,10,2013,24,43,201310,2013),('2013-10-25',201343,10,2013,25,43,201310,2013),('2013-10-26',201343,10,2013,26,43,201310,2013),('2013-10-27',201344,10,2013,27,44,201310,2013),('2013-10-28',201344,10,2013,28,44,201310,2013),('2013-10-29',201344,10,2013,29,44,201310,2013),('2013-10-30',201344,10,2013,30,44,201310,2013),('2013-10-31',201344,10,2013,31,44,201310,2013),('2013-11-01',201344,11,2013,1,44,201311,2013),('2013-11-02',201344,11,2013,2,44,201311,2013),('2013-11-03',201345,11,2013,3,45,201311,2013),('2013-11-04',201345,11,2013,4,45,201311,2013),('2013-11-05',201345,11,2013,5,45,201311,2013),('2013-11-06',201345,11,2013,6,45,201311,2013),('2013-11-07',201345,11,2013,7,45,201311,2013),('2013-11-08',201345,11,2013,8,45,201311,2013),('2013-11-09',201345,11,2013,9,45,201311,2013),('2013-11-10',201346,11,2013,10,46,201311,2013),('2013-11-11',201346,11,2013,11,46,201311,2013),('2013-11-12',201346,11,2013,12,46,201311,2013),('2013-11-13',201346,11,2013,13,46,201311,2013),('2013-11-14',201346,11,2013,14,46,201311,2013),('2013-11-15',201346,11,2013,15,46,201311,2013),('2013-11-16',201346,11,2013,16,46,201311,2013),('2013-11-17',201347,11,2013,17,47,201311,2013),('2013-11-18',201347,11,2013,18,47,201311,2013),('2013-11-19',201347,11,2013,19,47,201311,2013),('2013-11-20',201347,11,2013,20,47,201311,2013),('2013-11-21',201347,11,2013,21,47,201311,2013),('2013-11-22',201347,11,2013,22,47,201311,2013),('2013-11-23',201347,11,2013,23,47,201311,2013),('2013-11-24',201348,11,2013,24,48,201311,2013),('2013-11-25',201348,11,2013,25,48,201311,2013),('2013-11-26',201348,11,2013,26,48,201311,2013),('2013-11-27',201348,11,2013,27,48,201311,2013),('2013-11-28',201348,11,2013,28,48,201311,2013),('2013-11-29',201348,11,2013,29,48,201311,2013),('2013-11-30',201348,11,2013,30,48,201311,2013),('2013-12-01',201349,12,2013,1,49,201312,2014),('2013-12-02',201349,12,2013,2,49,201312,2014),('2013-12-03',201349,12,2013,3,49,201312,2014),('2013-12-04',201349,12,2013,4,49,201312,2014),('2013-12-05',201349,12,2013,5,49,201312,2014),('2013-12-06',201349,12,2013,6,49,201312,2014),('2013-12-07',201349,12,2013,7,49,201312,2014),('2013-12-08',201350,12,2013,8,50,201312,2014),('2013-12-09',201350,12,2013,9,50,201312,2014),('2013-12-10',201350,12,2013,10,50,201312,2014),('2013-12-11',201350,12,2013,11,50,201312,2014),('2013-12-12',201350,12,2013,12,50,201312,2014),('2013-12-13',201350,12,2013,13,50,201312,2014),('2013-12-14',201350,12,2013,14,50,201312,2014),('2013-12-15',201351,12,2013,15,51,201312,2014),('2013-12-16',201351,12,2013,16,51,201312,2014),('2013-12-17',201351,12,2013,17,51,201312,2014),('2013-12-18',201351,12,2013,18,51,201312,2014),('2013-12-19',201351,12,2013,19,51,201312,2014),('2013-12-20',201351,12,2013,20,51,201312,2014),('2013-12-21',201351,12,2013,21,51,201312,2014),('2013-12-22',201352,12,2013,22,52,201312,2014),('2013-12-23',201352,12,2013,23,52,201312,2014),('2013-12-24',201352,12,2013,24,52,201312,2014),('2013-12-25',201352,12,2013,25,52,201312,2014),('2013-12-26',201352,12,2013,26,52,201312,2014),('2013-12-27',201352,12,2013,27,52,201312,2014),('2013-12-28',201352,12,2013,28,52,201312,2014),('2013-12-29',201401,12,2013,29,1,201312,2014),('2013-12-30',201401,12,2013,30,1,201312,2014),('2013-12-31',201401,12,2013,31,1,201312,2014),('2014-01-01',201401,1,2014,1,1,201401,2014),('2014-01-02',201401,1,2014,2,1,201401,2014),('2014-01-03',201401,1,2014,3,1,201401,2014),('2014-01-04',201401,1,2014,4,1,201401,2014),('2014-01-05',201402,1,2014,5,2,201401,2014),('2014-01-06',201402,1,2014,6,2,201401,2014),('2014-01-07',201402,1,2014,7,2,201401,2014),('2014-01-08',201402,1,2014,8,2,201401,2014),('2014-01-09',201402,1,2014,9,2,201401,2014),('2014-01-10',201402,1,2014,10,2,201401,2014),('2014-01-11',201402,1,2014,11,2,201401,2014),('2014-01-12',201403,1,2014,12,3,201401,2014),('2014-01-13',201403,1,2014,13,3,201401,2014),('2014-01-14',201403,1,2014,14,3,201401,2014),('2014-01-15',201403,1,2014,15,3,201401,2014),('2014-01-16',201403,1,2014,16,3,201401,2014),('2014-01-17',201403,1,2014,17,3,201401,2014),('2014-01-18',201403,1,2014,18,3,201401,2014),('2014-01-19',201404,1,2014,19,4,201401,2014),('2014-01-20',201404,1,2014,20,4,201401,2014),('2014-01-21',201404,1,2014,21,4,201401,2014),('2014-01-22',201404,1,2014,22,4,201401,2014),('2014-01-23',201404,1,2014,23,4,201401,2014),('2014-01-24',201404,1,2014,24,4,201401,2014),('2014-01-25',201404,1,2014,25,4,201401,2014),('2014-01-26',201405,1,2014,26,5,201401,2014),('2014-01-27',201405,1,2014,27,5,201401,2014),('2014-01-28',201405,1,2014,28,5,201401,2014),('2014-01-29',201405,1,2014,29,5,201401,2014),('2014-01-30',201405,1,2014,30,5,201401,2014),('2014-01-31',201405,1,2014,31,5,201401,2014),('2014-02-01',201405,2,2014,1,5,201402,2014),('2014-02-02',201406,2,2014,2,6,201402,2014),('2014-02-03',201406,2,2014,3,6,201402,2014),('2014-02-04',201406,2,2014,4,6,201402,2014),('2014-02-05',201406,2,2014,5,6,201402,2014),('2014-02-06',201406,2,2014,6,6,201402,2014),('2014-02-07',201406,2,2014,7,6,201402,2014),('2014-02-08',201406,2,2014,8,6,201402,2014),('2014-02-09',201407,2,2014,9,7,201402,2014),('2014-02-10',201407,2,2014,10,7,201402,2014),('2014-02-11',201407,2,2014,11,7,201402,2014),('2014-02-12',201407,2,2014,12,7,201402,2014),('2014-02-13',201407,2,2014,13,7,201402,2014),('2014-02-14',201407,2,2014,14,7,201402,2014),('2014-02-15',201407,2,2014,15,7,201402,2014),('2014-02-16',201408,2,2014,16,8,201402,2014),('2014-02-17',201408,2,2014,17,8,201402,2014),('2014-02-18',201408,2,2014,18,8,201402,2014),('2014-02-19',201408,2,2014,19,8,201402,2014),('2014-02-20',201408,2,2014,20,8,201402,2014),('2014-02-21',201408,2,2014,21,8,201402,2014),('2014-02-22',201408,2,2014,22,8,201402,2014),('2014-02-23',201409,2,2014,23,9,201402,2014),('2014-02-24',201409,2,2014,24,9,201402,2014),('2014-02-25',201409,2,2014,25,9,201402,2014),('2014-02-26',201409,2,2014,26,9,201402,2014),('2014-02-27',201409,2,2014,27,9,201402,2014),('2014-02-28',201409,2,2014,28,9,201402,2014),('2014-03-01',201409,3,2014,1,9,201403,2014),('2014-03-02',201410,3,2014,2,10,201403,2014),('2014-03-03',201410,3,2014,3,10,201403,2014),('2014-03-04',201410,3,2014,4,10,201403,2014),('2014-03-05',201410,3,2014,5,10,201403,2014),('2014-03-06',201410,3,2014,6,10,201403,2014),('2014-03-07',201410,3,2014,7,10,201403,2014),('2014-03-08',201410,3,2014,8,10,201403,2014),('2014-03-09',201411,3,2014,9,11,201403,2014),('2014-03-10',201411,3,2014,10,11,201403,2014),('2014-03-11',201411,3,2014,11,11,201403,2014),('2014-03-12',201411,3,2014,12,11,201403,2014),('2014-03-13',201411,3,2014,13,11,201403,2014),('2014-03-14',201411,3,2014,14,11,201403,2014),('2014-03-15',201411,3,2014,15,11,201403,2014),('2014-03-16',201412,3,2014,16,12,201403,2014),('2014-03-17',201412,3,2014,17,12,201403,2014),('2014-03-18',201412,3,2014,18,12,201403,2014),('2014-03-19',201412,3,2014,19,12,201403,2014),('2014-03-20',201412,3,2014,20,12,201403,2014),('2014-03-21',201412,3,2014,21,12,201403,2014),('2014-03-22',201412,3,2014,22,12,201403,2014),('2014-03-23',201413,3,2014,23,13,201403,2014),('2014-03-24',201413,3,2014,24,13,201403,2014),('2014-03-25',201413,3,2014,25,13,201403,2014),('2014-03-26',201413,3,2014,26,13,201403,2014),('2014-03-27',201413,3,2014,27,13,201403,2014),('2014-03-28',201413,3,2014,28,13,201403,2014),('2014-03-29',201413,3,2014,29,13,201403,2014),('2014-03-30',201414,3,2014,30,14,201403,2014),('2014-03-31',201414,3,2014,31,14,201403,2014),('2014-04-01',201414,4,2014,1,14,201404,2014),('2014-04-02',201414,4,2014,2,14,201404,2014),('2014-04-03',201414,4,2014,3,14,201404,2014),('2014-04-04',201414,4,2014,4,14,201404,2014),('2014-04-05',201414,4,2014,5,14,201404,2014),('2014-04-06',201415,4,2014,6,15,201404,2014),('2014-04-07',201415,4,2014,7,15,201404,2014),('2014-04-08',201415,4,2014,8,15,201404,2014),('2014-04-09',201415,4,2014,9,15,201404,2014),('2014-04-10',201415,4,2014,10,15,201404,2014),('2014-04-11',201415,4,2014,11,15,201404,2014),('2014-04-12',201415,4,2014,12,15,201404,2014),('2014-04-13',201416,4,2014,13,16,201404,2014),('2014-04-14',201416,4,2014,14,16,201404,2014),('2014-04-15',201416,4,2014,15,16,201404,2014),('2014-04-16',201416,4,2014,16,16,201404,2014),('2014-04-17',201416,4,2014,17,16,201404,2014),('2014-04-18',201416,4,2014,18,16,201404,2014),('2014-04-19',201416,4,2014,19,16,201404,2014),('2014-04-20',201417,4,2014,20,17,201404,2014),('2014-04-21',201417,4,2014,21,17,201404,2014),('2014-04-22',201417,4,2014,22,17,201404,2014),('2014-04-23',201417,4,2014,23,17,201404,2014),('2014-04-24',201417,4,2014,24,17,201404,2014),('2014-04-25',201417,4,2014,25,17,201404,2014),('2014-04-26',201417,4,2014,26,17,201404,2014),('2014-04-27',201418,4,2014,27,18,201404,2014),('2014-04-28',201418,4,2014,28,18,201404,2014),('2014-04-29',201418,4,2014,29,18,201404,2014),('2014-04-30',201418,4,2014,30,18,201404,2014),('2014-05-01',201418,5,2014,1,18,201405,2014),('2014-05-02',201418,5,2014,2,18,201405,2014),('2014-05-03',201418,5,2014,3,18,201405,2014),('2014-05-04',201419,5,2014,4,19,201405,2014),('2014-05-05',201419,5,2014,5,19,201405,2014),('2014-05-06',201419,5,2014,6,19,201405,2014),('2014-05-07',201419,5,2014,7,19,201405,2014),('2014-05-08',201419,5,2014,8,19,201405,2014),('2014-05-09',201419,5,2014,9,19,201405,2014),('2014-05-10',201419,5,2014,10,19,201405,2014),('2014-05-11',201420,5,2014,11,20,201405,2014),('2014-05-12',201420,5,2014,12,20,201405,2014),('2014-05-13',201420,5,2014,13,20,201405,2014),('2014-05-14',201420,5,2014,14,20,201405,2014),('2014-05-15',201420,5,2014,15,20,201405,2014),('2014-05-16',201420,5,2014,16,20,201405,2014),('2014-05-17',201420,5,2014,17,20,201405,2014),('2014-05-18',201421,5,2014,18,21,201405,2014),('2014-05-19',201421,5,2014,19,21,201405,2014),('2014-05-20',201421,5,2014,20,21,201405,2014),('2014-05-21',201421,5,2014,21,21,201405,2014),('2014-05-22',201421,5,2014,22,21,201405,2014),('2014-05-23',201421,5,2014,23,21,201405,2014),('2014-05-24',201421,5,2014,24,21,201405,2014),('2014-05-25',201422,5,2014,25,22,201405,2014),('2014-05-26',201422,5,2014,26,22,201405,2014),('2014-05-27',201422,5,2014,27,22,201405,2014),('2014-05-28',201422,5,2014,28,22,201405,2014),('2014-05-29',201422,5,2014,29,22,201405,2014),('2014-05-30',201422,5,2014,30,22,201405,2014),('2014-05-31',201422,5,2014,31,22,201405,2014),('2014-06-01',201423,6,2014,1,23,201406,2014),('2014-06-02',201423,6,2014,2,23,201406,2014),('2014-06-03',201423,6,2014,3,23,201406,2014),('2014-06-04',201423,6,2014,4,23,201406,2014),('2014-06-05',201423,6,2014,5,23,201406,2014),('2014-06-06',201423,6,2014,6,23,201406,2014),('2014-06-07',201423,6,2014,7,23,201406,2014),('2014-06-08',201424,6,2014,8,24,201406,2014),('2014-06-09',201424,6,2014,9,24,201406,2014),('2014-06-10',201424,6,2014,10,24,201406,2014),('2014-06-11',201424,6,2014,11,24,201406,2014),('2014-06-12',201424,6,2014,12,24,201406,2014),('2014-06-13',201424,6,2014,13,24,201406,2014),('2014-06-14',201424,6,2014,14,24,201406,2014),('2014-06-15',201425,6,2014,15,25,201406,2014),('2014-06-16',201425,6,2014,16,25,201406,2014),('2014-06-17',201425,6,2014,17,25,201406,2014),('2014-06-18',201425,6,2014,18,25,201406,2014),('2014-06-19',201425,6,2014,19,25,201406,2014),('2014-06-20',201425,6,2014,20,25,201406,2014),('2014-06-21',201425,6,2014,21,25,201406,2014),('2014-06-22',201426,6,2014,22,26,201406,2014),('2014-06-23',201426,6,2014,23,26,201406,2014),('2014-06-24',201426,6,2014,24,26,201406,2014),('2014-06-25',201426,6,2014,25,26,201406,2014),('2014-06-26',201426,6,2014,26,26,201406,2014),('2014-06-27',201426,6,2014,27,26,201406,2014),('2014-06-28',201426,6,2014,28,26,201406,2014),('2014-06-29',201427,6,2014,29,27,201406,2014),('2014-06-30',201427,6,2014,30,27,201406,2014),('2014-07-01',201427,7,2014,1,27,201407,2014),('2014-07-02',201427,7,2014,2,27,201407,2014),('2014-07-03',201427,7,2014,3,27,201407,2014),('2014-07-04',201427,7,2014,4,27,201407,2014),('2014-07-05',201427,7,2014,5,27,201407,2014),('2014-07-06',201428,7,2014,6,28,201407,2014),('2014-07-07',201428,7,2014,7,28,201407,2014),('2014-07-08',201428,7,2014,8,28,201407,2014),('2014-07-09',201428,7,2014,9,28,201407,2014),('2014-07-10',201428,7,2014,10,28,201407,2014),('2014-07-11',201428,7,2014,11,28,201407,2014),('2014-07-12',201428,7,2014,12,28,201407,2014),('2014-07-13',201429,7,2014,13,29,201407,2014),('2014-07-14',201429,7,2014,14,29,201407,2014),('2014-07-15',201429,7,2014,15,29,201407,2014),('2014-07-16',201429,7,2014,16,29,201407,2014),('2014-07-17',201429,7,2014,17,29,201407,2014),('2014-07-18',201429,7,2014,18,29,201407,2014),('2014-07-19',201429,7,2014,19,29,201407,2014),('2014-07-20',201430,7,2014,20,30,201407,2014),('2014-07-21',201430,7,2014,21,30,201407,2014),('2014-07-22',201430,7,2014,22,30,201407,2014),('2014-07-23',201430,7,2014,23,30,201407,2014),('2014-07-24',201430,7,2014,24,30,201407,2014),('2014-07-25',201430,7,2014,25,30,201407,2014),('2014-07-26',201430,7,2014,26,30,201407,2014),('2014-07-27',201431,7,2014,27,31,201407,2014),('2014-07-28',201431,7,2014,28,31,201407,2014),('2014-07-29',201431,7,2014,29,31,201407,2014),('2014-07-30',201431,7,2014,30,31,201407,2014),('2014-07-31',201431,7,2014,31,31,201407,2014),('2014-08-01',201431,8,2014,1,31,201408,2014),('2014-08-02',201431,8,2014,2,31,201408,2014),('2014-08-03',201432,8,2014,3,32,201408,2014),('2014-08-04',201432,8,2014,4,32,201408,2014),('2014-08-05',201432,8,2014,5,32,201408,2014),('2014-08-06',201432,8,2014,6,32,201408,2014),('2014-08-07',201432,8,2014,7,32,201408,2014),('2014-08-08',201432,8,2014,8,32,201408,2014),('2014-08-09',201432,8,2014,9,32,201408,2014),('2014-08-10',201433,8,2014,10,33,201408,2014),('2014-08-11',201433,8,2014,11,33,201408,2014),('2014-08-12',201433,8,2014,12,33,201408,2014),('2014-08-13',201433,8,2014,13,33,201408,2014),('2014-08-14',201433,8,2014,14,33,201408,2014),('2014-08-15',201433,8,2014,15,33,201408,2014),('2014-08-16',201433,8,2014,16,33,201408,2014),('2014-08-17',201434,8,2014,17,34,201408,2014),('2014-08-18',201434,8,2014,18,34,201408,2014),('2014-08-19',201434,8,2014,19,34,201408,2014),('2014-08-20',201434,8,2014,20,34,201408,2014),('2014-08-21',201434,8,2014,21,34,201408,2014),('2014-08-22',201434,8,2014,22,34,201408,2014),('2014-08-23',201434,8,2014,23,34,201408,2014),('2014-08-24',201435,8,2014,24,35,201408,2014),('2014-08-25',201435,8,2014,25,35,201408,2014),('2014-08-26',201435,8,2014,26,35,201408,2014),('2014-08-27',201435,8,2014,27,35,201408,2014),('2014-08-28',201435,8,2014,28,35,201408,2014),('2014-08-29',201435,8,2014,29,35,201408,2014),('2014-08-30',201435,8,2014,30,35,201408,2014),('2014-08-31',201436,8,2014,31,36,201408,2014),('2014-09-01',201436,9,2014,1,36,201409,2014),('2014-09-02',201436,9,2014,2,36,201409,2014),('2014-09-03',201436,9,2014,3,36,201409,2014),('2014-09-04',201436,9,2014,4,36,201409,2014),('2014-09-05',201436,9,2014,5,36,201409,2014),('2014-09-06',201436,9,2014,6,36,201409,2014),('2014-09-07',201437,9,2014,7,37,201409,2014),('2014-09-08',201437,9,2014,8,37,201409,2014),('2014-09-09',201437,9,2014,9,37,201409,2014),('2014-09-10',201437,9,2014,10,37,201409,2014),('2014-09-11',201437,9,2014,11,37,201409,2014),('2014-09-12',201437,9,2014,12,37,201409,2014),('2014-09-13',201437,9,2014,13,37,201409,2014),('2014-09-14',201438,9,2014,14,38,201409,2014),('2014-09-15',201438,9,2014,15,38,201409,2014),('2014-09-16',201438,9,2014,16,38,201409,2014),('2014-09-17',201438,9,2014,17,38,201409,2014),('2014-09-18',201438,9,2014,18,38,201409,2014),('2014-09-19',201438,9,2014,19,38,201409,2014),('2014-09-20',201438,9,2014,20,38,201409,2014),('2014-09-21',201439,9,2014,21,39,201409,2014),('2014-09-22',201439,9,2014,22,39,201409,2014),('2014-09-23',201439,9,2014,23,39,201409,2014),('2014-09-24',201439,9,2014,24,39,201409,2014),('2014-09-25',201439,9,2014,25,39,201409,2014),('2014-09-26',201439,9,2014,26,39,201409,2014),('2014-09-27',201439,9,2014,27,39,201409,2014),('2014-09-28',201440,9,2014,28,40,201409,2014),('2014-09-29',201440,9,2014,29,40,201409,2014),('2014-09-30',201440,9,2014,30,40,201409,2014),('2014-10-01',201440,10,2014,1,40,201410,2014),('2014-10-02',201440,10,2014,2,40,201410,2014),('2014-10-03',201440,10,2014,3,40,201410,2014),('2014-10-04',201440,10,2014,4,40,201410,2014),('2014-10-05',201441,10,2014,5,41,201410,2014),('2014-10-06',201441,10,2014,6,41,201410,2014),('2014-10-07',201441,10,2014,7,41,201410,2014),('2014-10-08',201441,10,2014,8,41,201410,2014),('2014-10-09',201441,10,2014,9,41,201410,2014),('2014-10-10',201441,10,2014,10,41,201410,2014),('2014-10-11',201441,10,2014,11,41,201410,2014),('2014-10-12',201442,10,2014,12,42,201410,2014),('2014-10-13',201442,10,2014,13,42,201410,2014),('2014-10-14',201442,10,2014,14,42,201410,2014),('2014-10-15',201442,10,2014,15,42,201410,2014),('2014-10-16',201442,10,2014,16,42,201410,2014),('2014-10-17',201442,10,2014,17,42,201410,2014),('2014-10-18',201442,10,2014,18,42,201410,2014),('2014-10-19',201443,10,2014,19,43,201410,2014),('2014-10-20',201443,10,2014,20,43,201410,2014),('2014-10-21',201443,10,2014,21,43,201410,2014),('2014-10-22',201443,10,2014,22,43,201410,2014),('2014-10-23',201443,10,2014,23,43,201410,2014),('2014-10-24',201443,10,2014,24,43,201410,2014),('2014-10-25',201443,10,2014,25,43,201410,2014),('2014-10-26',201444,10,2014,26,44,201410,2014),('2014-10-27',201444,10,2014,27,44,201410,2014),('2014-10-28',201444,10,2014,28,44,201410,2014),('2014-10-29',201444,10,2014,29,44,201410,2014),('2014-10-30',201444,10,2014,30,44,201410,2014),('2014-10-31',201444,10,2014,31,44,201410,2014),('2014-11-01',201444,11,2014,1,44,201411,2014),('2014-11-02',201445,11,2014,2,45,201411,2014),('2014-11-03',201445,11,2014,3,45,201411,2014),('2014-11-04',201445,11,2014,4,45,201411,2014),('2014-11-05',201445,11,2014,5,45,201411,2014),('2014-11-06',201445,11,2014,6,45,201411,2014),('2014-11-07',201445,11,2014,7,45,201411,2014),('2014-11-08',201445,11,2014,8,45,201411,2014),('2014-11-09',201446,11,2014,9,46,201411,2014),('2014-11-10',201446,11,2014,10,46,201411,2014),('2014-11-11',201446,11,2014,11,46,201411,2014),('2014-11-12',201446,11,2014,12,46,201411,2014),('2014-11-13',201446,11,2014,13,46,201411,2014),('2014-11-14',201446,11,2014,14,46,201411,2014),('2014-11-15',201446,11,2014,15,46,201411,2014),('2014-11-16',201447,11,2014,16,47,201411,2014),('2014-11-17',201447,11,2014,17,47,201411,2014),('2014-11-18',201447,11,2014,18,47,201411,2014),('2014-11-19',201447,11,2014,19,47,201411,2014),('2014-11-20',201447,11,2014,20,47,201411,2014),('2014-11-21',201447,11,2014,21,47,201411,2014),('2014-11-22',201447,11,2014,22,47,201411,2014),('2014-11-23',201448,11,2014,23,48,201411,2014),('2014-11-24',201448,11,2014,24,48,201411,2014),('2014-11-25',201448,11,2014,25,48,201411,2014),('2014-11-26',201448,11,2014,26,48,201411,2014),('2014-11-27',201448,11,2014,27,48,201411,2014),('2014-11-28',201448,11,2014,28,48,201411,2014),('2014-11-29',201448,11,2014,29,48,201411,2014),('2014-11-30',201449,11,2014,30,49,201411,2014),('2014-12-01',201449,12,2014,1,49,201412,2015),('2014-12-02',201449,12,2014,2,49,201412,2015),('2014-12-03',201449,12,2014,3,49,201412,2015),('2014-12-04',201449,12,2014,4,49,201412,2015),('2014-12-05',201449,12,2014,5,49,201412,2015),('2014-12-06',201449,12,2014,6,49,201412,2015),('2014-12-07',201450,12,2014,7,50,201412,2015),('2014-12-08',201450,12,2014,8,50,201412,2015),('2014-12-09',201450,12,2014,9,50,201412,2015),('2014-12-10',201450,12,2014,10,50,201412,2015),('2014-12-11',201450,12,2014,11,50,201412,2015),('2014-12-12',201450,12,2014,12,50,201412,2015),('2014-12-13',201450,12,2014,13,50,201412,2015),('2014-12-14',201451,12,2014,14,51,201412,2015),('2014-12-15',201451,12,2014,15,51,201412,2015),('2014-12-16',201451,12,2014,16,51,201412,2015),('2014-12-17',201451,12,2014,17,51,201412,2015),('2014-12-18',201451,12,2014,18,51,201412,2015),('2014-12-19',201451,12,2014,19,51,201412,2015),('2014-12-20',201451,12,2014,20,51,201412,2015),('2014-12-21',201452,12,2014,21,52,201412,2015),('2014-12-22',201452,12,2014,22,52,201412,2015),('2014-12-23',201452,12,2014,23,52,201412,2015),('2014-12-24',201452,12,2014,24,52,201412,2015),('2014-12-25',201452,12,2014,25,52,201412,2015),('2014-12-26',201452,12,2014,26,52,201412,2015),('2014-12-27',201452,12,2014,27,52,201412,2015),('2014-12-28',201453,12,2014,28,53,201412,2015),('2014-12-29',201453,12,2014,29,53,201412,2015),('2014-12-30',201453,12,2014,30,53,201412,2015),('2014-12-31',201453,12,2014,31,53,201412,2015),('2015-01-01',201453,1,2015,1,53,201501,2015),('2015-01-02',201453,1,2015,2,53,201501,2015),('2015-01-03',201453,1,2015,3,53,201501,2015),('2015-01-04',201501,1,2015,4,1,201501,2015),('2015-01-05',201501,1,2015,5,1,201501,2015),('2015-01-06',201501,1,2015,6,1,201501,2015),('2015-01-07',201501,1,2015,7,1,201501,2015),('2015-01-08',201501,1,2015,8,1,201501,2015),('2015-01-09',201501,1,2015,9,1,201501,2015),('2015-01-10',201501,1,2015,10,1,201501,2015),('2015-01-11',201502,1,2015,11,2,201501,2015),('2015-01-12',201502,1,2015,12,2,201501,2015),('2015-01-13',201502,1,2015,13,2,201501,2015),('2015-01-14',201502,1,2015,14,2,201501,2015),('2015-01-15',201502,1,2015,15,2,201501,2015),('2015-01-16',201502,1,2015,16,2,201501,2015),('2015-01-17',201502,1,2015,17,2,201501,2015),('2015-01-18',201503,1,2015,18,3,201501,2015),('2015-01-19',201503,1,2015,19,3,201501,2015),('2015-01-20',201503,1,2015,20,3,201501,2015),('2015-01-21',201503,1,2015,21,3,201501,2015),('2015-01-22',201503,1,2015,22,3,201501,2015),('2015-01-23',201503,1,2015,23,3,201501,2015),('2015-01-24',201503,1,2015,24,3,201501,2015),('2015-01-25',201504,1,2015,25,4,201501,2015),('2015-01-26',201504,1,2015,26,4,201501,2015),('2015-01-27',201504,1,2015,27,4,201501,2015),('2015-01-28',201504,1,2015,28,4,201501,2015),('2015-01-29',201504,1,2015,29,4,201501,2015),('2015-01-30',201504,1,2015,30,4,201501,2015),('2015-01-31',201504,1,2015,31,4,201501,2015),('2015-02-01',201505,2,2015,1,5,201502,2015),('2015-02-02',201505,2,2015,2,5,201502,2015),('2015-02-03',201505,2,2015,3,5,201502,2015),('2015-02-04',201505,2,2015,4,5,201502,2015),('2015-02-05',201505,2,2015,5,5,201502,2015),('2015-02-06',201505,2,2015,6,5,201502,2015),('2015-02-07',201505,2,2015,7,5,201502,2015),('2015-02-08',201506,2,2015,8,6,201502,2015),('2015-02-09',201506,2,2015,9,6,201502,2015),('2015-02-10',201506,2,2015,10,6,201502,2015),('2015-02-11',201506,2,2015,11,6,201502,2015),('2015-02-12',201506,2,2015,12,6,201502,2015),('2015-02-13',201506,2,2015,13,6,201502,2015),('2015-02-14',201506,2,2015,14,6,201502,2015),('2015-02-15',201507,2,2015,15,7,201502,2015),('2015-02-16',201507,2,2015,16,7,201502,2015),('2015-02-17',201507,2,2015,17,7,201502,2015),('2015-02-18',201507,2,2015,18,7,201502,2015),('2015-02-19',201507,2,2015,19,7,201502,2015),('2015-02-20',201507,2,2015,20,7,201502,2015),('2015-02-21',201507,2,2015,21,7,201502,2015),('2015-02-22',201508,2,2015,22,8,201502,2015),('2015-02-23',201508,2,2015,23,8,201502,2015),('2015-02-24',201508,2,2015,24,8,201502,2015),('2015-02-25',201508,2,2015,25,8,201502,2015),('2015-02-26',201508,2,2015,26,8,201502,2015),('2015-02-27',201508,2,2015,27,8,201502,2015),('2015-02-28',201508,2,2015,28,8,201502,2015),('2015-03-01',201509,3,2015,1,9,201503,2015),('2015-03-02',201509,3,2015,2,9,201503,2015),('2015-03-03',201509,3,2015,3,9,201503,2015),('2015-03-04',201509,3,2015,4,9,201503,2015),('2015-03-05',201509,3,2015,5,9,201503,2015),('2015-03-06',201509,3,2015,6,9,201503,2015),('2015-03-07',201509,3,2015,7,9,201503,2015),('2015-03-08',201510,3,2015,8,10,201503,2015),('2015-03-09',201510,3,2015,9,10,201503,2015),('2015-03-10',201510,3,2015,10,10,201503,2015),('2015-03-11',201510,3,2015,11,10,201503,2015),('2015-03-12',201510,3,2015,12,10,201503,2015),('2015-03-13',201510,3,2015,13,10,201503,2015),('2015-03-14',201510,3,2015,14,10,201503,2015),('2015-03-15',201511,3,2015,15,11,201503,2015),('2015-03-16',201511,3,2015,16,11,201503,2015),('2015-03-17',201511,3,2015,17,11,201503,2015),('2015-03-18',201511,3,2015,18,11,201503,2015),('2015-03-19',201511,3,2015,19,11,201503,2015),('2015-03-20',201511,3,2015,20,11,201503,2015),('2015-03-21',201511,3,2015,21,11,201503,2015),('2015-03-22',201512,3,2015,22,12,201503,2015),('2015-03-23',201512,3,2015,23,12,201503,2015),('2015-03-24',201512,3,2015,24,12,201503,2015),('2015-03-25',201512,3,2015,25,12,201503,2015),('2015-03-26',201512,3,2015,26,12,201503,2015),('2015-03-27',201512,3,2015,27,12,201503,2015),('2015-03-28',201512,3,2015,28,12,201503,2015),('2015-03-29',201513,3,2015,29,13,201503,2015),('2015-03-30',201513,3,2015,30,13,201503,2015),('2015-03-31',201513,3,2015,31,13,201503,2015),('2015-04-01',201513,4,2015,1,13,201504,2015),('2015-04-02',201513,4,2015,2,13,201504,2015),('2015-04-03',201513,4,2015,3,13,201504,2015),('2015-04-04',201513,4,2015,4,13,201504,2015),('2015-04-05',201514,4,2015,5,14,201504,2015),('2015-04-06',201514,4,2015,6,14,201504,2015),('2015-04-07',201514,4,2015,7,14,201504,2015),('2015-04-08',201514,4,2015,8,14,201504,2015),('2015-04-09',201514,4,2015,9,14,201504,2015),('2015-04-10',201514,4,2015,10,14,201504,2015),('2015-04-11',201514,4,2015,11,14,201504,2015),('2015-04-12',201515,4,2015,12,15,201504,2015),('2015-04-13',201515,4,2015,13,15,201504,2015),('2015-04-14',201515,4,2015,14,15,201504,2015),('2015-04-15',201515,4,2015,15,15,201504,2015),('2015-04-16',201515,4,2015,16,15,201504,2015),('2015-04-17',201515,4,2015,17,15,201504,2015),('2015-04-18',201515,4,2015,18,15,201504,2015),('2015-04-19',201516,4,2015,19,16,201504,2015),('2015-04-20',201516,4,2015,20,16,201504,2015),('2015-04-21',201516,4,2015,21,16,201504,2015),('2015-04-22',201516,4,2015,22,16,201504,2015),('2015-04-23',201516,4,2015,23,16,201504,2015),('2015-04-24',201516,4,2015,24,16,201504,2015),('2015-04-25',201516,4,2015,25,16,201504,2015),('2015-04-26',201517,4,2015,26,17,201504,2015),('2015-04-27',201517,4,2015,27,17,201504,2015),('2015-04-28',201517,4,2015,28,17,201504,2015),('2015-04-29',201517,4,2015,29,17,201504,2015),('2015-04-30',201517,4,2015,30,17,201504,2015),('2015-05-01',201517,5,2015,1,17,201505,2015),('2015-05-02',201517,5,2015,2,17,201505,2015),('2015-05-03',201518,5,2015,3,18,201505,2015),('2015-05-04',201518,5,2015,4,18,201505,2015),('2015-05-05',201518,5,2015,5,18,201505,2015),('2015-05-06',201518,5,2015,6,18,201505,2015),('2015-05-07',201518,5,2015,7,18,201505,2015),('2015-05-08',201518,5,2015,8,18,201505,2015),('2015-05-09',201518,5,2015,9,18,201505,2015),('2015-05-10',201519,5,2015,10,19,201505,2015),('2015-05-11',201519,5,2015,11,19,201505,2015),('2015-05-12',201519,5,2015,12,19,201505,2015),('2015-05-13',201519,5,2015,13,19,201505,2015),('2015-05-14',201519,5,2015,14,19,201505,2015),('2015-05-15',201519,5,2015,15,19,201505,2015),('2015-05-16',201519,5,2015,16,19,201505,2015),('2015-05-17',201520,5,2015,17,20,201505,2015),('2015-05-18',201520,5,2015,18,20,201505,2015),('2015-05-19',201520,5,2015,19,20,201505,2015),('2015-05-20',201520,5,2015,20,20,201505,2015),('2015-05-21',201520,5,2015,21,20,201505,2015),('2015-05-22',201520,5,2015,22,20,201505,2015),('2015-05-23',201520,5,2015,23,20,201505,2015),('2015-05-24',201521,5,2015,24,21,201505,2015),('2015-05-25',201521,5,2015,25,21,201505,2015),('2015-05-26',201521,5,2015,26,21,201505,2015),('2015-05-27',201521,5,2015,27,21,201505,2015),('2015-05-28',201521,5,2015,28,21,201505,2015),('2015-05-29',201521,5,2015,29,21,201505,2015),('2015-05-30',201521,5,2015,30,21,201505,2015),('2015-05-31',201522,5,2015,31,22,201505,2015),('2015-06-01',201522,6,2015,1,22,201506,2015),('2015-06-02',201522,6,2015,2,22,201506,2015),('2015-06-03',201522,6,2015,3,22,201506,2015),('2015-06-04',201522,6,2015,4,22,201506,2015),('2015-06-05',201522,6,2015,5,22,201506,2015),('2015-06-06',201522,6,2015,6,22,201506,2015),('2015-06-07',201523,6,2015,7,23,201506,2015),('2015-06-08',201523,6,2015,8,23,201506,2015),('2015-06-09',201523,6,2015,9,23,201506,2015),('2015-06-10',201523,6,2015,10,23,201506,2015),('2015-06-11',201523,6,2015,11,23,201506,2015),('2015-06-12',201523,6,2015,12,23,201506,2015),('2015-06-13',201523,6,2015,13,23,201506,2015),('2015-06-14',201524,6,2015,14,24,201506,2015),('2015-06-15',201524,6,2015,15,24,201506,2015),('2015-06-16',201524,6,2015,16,24,201506,2015),('2015-06-17',201524,6,2015,17,24,201506,2015),('2015-06-18',201524,6,2015,18,24,201506,2015),('2015-06-19',201524,6,2015,19,24,201506,2015),('2015-06-20',201524,6,2015,20,24,201506,2015),('2015-06-21',201525,6,2015,21,25,201506,2015),('2015-06-22',201525,6,2015,22,25,201506,2015),('2015-06-23',201525,6,2015,23,25,201506,2015),('2015-06-24',201525,6,2015,24,25,201506,2015),('2015-06-25',201525,6,2015,25,25,201506,2015),('2015-06-26',201525,6,2015,26,25,201506,2015),('2015-06-27',201525,6,2015,27,25,201506,2015),('2015-06-28',201526,6,2015,28,26,201506,2015),('2015-06-29',201526,6,2015,29,26,201506,2015),('2015-06-30',201526,6,2015,30,26,201506,2015),('2015-07-01',201526,7,2015,1,26,201507,2015),('2015-07-02',201526,7,2015,2,26,201507,2015),('2015-07-03',201526,7,2015,3,26,201507,2015),('2015-07-04',201526,7,2015,4,26,201507,2015),('2015-07-05',201527,7,2015,5,27,201507,2015),('2015-07-06',201527,7,2015,6,27,201507,2015),('2015-07-07',201527,7,2015,7,27,201507,2015),('2015-07-08',201527,7,2015,8,27,201507,2015),('2015-07-09',201527,7,2015,9,27,201507,2015),('2015-07-10',201527,7,2015,10,27,201507,2015),('2015-07-11',201527,7,2015,11,27,201507,2015),('2015-07-12',201528,7,2015,12,28,201507,2015),('2015-07-13',201528,7,2015,13,28,201507,2015),('2015-07-14',201528,7,2015,14,28,201507,2015),('2015-07-15',201528,7,2015,15,28,201507,2015),('2015-07-16',201528,7,2015,16,28,201507,2015),('2015-07-17',201528,7,2015,17,28,201507,2015),('2015-07-18',201528,7,2015,18,28,201507,2015),('2015-07-19',201529,7,2015,19,29,201507,2015),('2015-07-20',201529,7,2015,20,29,201507,2015),('2015-07-21',201529,7,2015,21,29,201507,2015),('2015-07-22',201529,7,2015,22,29,201507,2015),('2015-07-23',201529,7,2015,23,29,201507,2015),('2015-07-24',201529,7,2015,24,29,201507,2015),('2015-07-25',201529,7,2015,25,29,201507,2015),('2015-07-26',201530,7,2015,26,30,201507,2015),('2015-07-27',201530,7,2015,27,30,201507,2015),('2015-07-28',201530,7,2015,28,30,201507,2015),('2015-07-29',201530,7,2015,29,30,201507,2015),('2015-07-30',201530,7,2015,30,30,201507,2015),('2015-07-31',201530,7,2015,31,30,201507,2015),('2015-08-01',201530,8,2015,1,30,201508,2015),('2015-08-02',201531,8,2015,2,31,201508,2015),('2015-08-03',201531,8,2015,3,31,201508,2015),('2015-08-04',201531,8,2015,4,31,201508,2015),('2015-08-05',201531,8,2015,5,31,201508,2015),('2015-08-06',201531,8,2015,6,31,201508,2015),('2015-08-07',201531,8,2015,7,31,201508,2015),('2015-08-08',201531,8,2015,8,31,201508,2015),('2015-08-09',201532,8,2015,9,32,201508,2015),('2015-08-10',201532,8,2015,10,32,201508,2015),('2015-08-11',201532,8,2015,11,32,201508,2015),('2015-08-12',201532,8,2015,12,32,201508,2015),('2015-08-13',201532,8,2015,13,32,201508,2015),('2015-08-14',201532,8,2015,14,32,201508,2015),('2015-08-15',201532,8,2015,15,32,201508,2015),('2015-08-16',201533,8,2015,16,33,201508,2015),('2015-08-17',201533,8,2015,17,33,201508,2015),('2015-08-18',201533,8,2015,18,33,201508,2015),('2015-08-19',201533,8,2015,19,33,201508,2015),('2015-08-20',201533,8,2015,20,33,201508,2015),('2015-08-21',201533,8,2015,21,33,201508,2015),('2015-08-22',201533,8,2015,22,33,201508,2015),('2015-08-23',201534,8,2015,23,34,201508,2015),('2015-08-24',201534,8,2015,24,34,201508,2015),('2015-08-25',201534,8,2015,25,34,201508,2015),('2015-08-26',201534,8,2015,26,34,201508,2015),('2015-08-27',201534,8,2015,27,34,201508,2015),('2015-08-28',201534,8,2015,28,34,201508,2015),('2015-08-29',201534,8,2015,29,34,201508,2015),('2015-08-30',201535,8,2015,30,35,201508,2015),('2015-08-31',201535,8,2015,31,35,201508,2015),('2015-09-01',201535,9,2015,1,35,201509,2015),('2015-09-02',201535,9,2015,2,35,201509,2015),('2015-09-03',201535,9,2015,3,35,201509,2015),('2015-09-04',201535,9,2015,4,35,201509,2015),('2015-09-05',201535,9,2015,5,35,201509,2015),('2015-09-06',201536,9,2015,6,36,201509,2015),('2015-09-07',201536,9,2015,7,36,201509,2015),('2015-09-08',201536,9,2015,8,36,201509,2015),('2015-09-09',201536,9,2015,9,36,201509,2015),('2015-09-10',201536,9,2015,10,36,201509,2015),('2015-09-11',201536,9,2015,11,36,201509,2015),('2015-09-12',201536,9,2015,12,36,201509,2015),('2015-09-13',201537,9,2015,13,37,201509,2015),('2015-09-14',201537,9,2015,14,37,201509,2015),('2015-09-15',201537,9,2015,15,37,201509,2015),('2015-09-16',201537,9,2015,16,37,201509,2015),('2015-09-17',201537,9,2015,17,37,201509,2015),('2015-09-18',201537,9,2015,18,37,201509,2015),('2015-09-19',201537,9,2015,19,37,201509,2015),('2015-09-20',201538,9,2015,20,38,201509,2015),('2015-09-21',201538,9,2015,21,38,201509,2015),('2015-09-22',201538,9,2015,22,38,201509,2015),('2015-09-23',201538,9,2015,23,38,201509,2015),('2015-09-24',201538,9,2015,24,38,201509,2015),('2015-09-25',201538,9,2015,25,38,201509,2015),('2015-09-26',201538,9,2015,26,38,201509,2015),('2015-09-27',201539,9,2015,27,39,201509,2015),('2015-09-28',201539,9,2015,28,39,201509,2015),('2015-09-29',201539,9,2015,29,39,201509,2015),('2015-09-30',201539,9,2015,30,39,201509,2015),('2015-10-01',201539,10,2015,1,39,201510,2015),('2015-10-02',201539,10,2015,2,39,201510,2015),('2015-10-03',201539,10,2015,3,39,201510,2015),('2015-10-04',201540,10,2015,4,40,201510,2015),('2015-10-05',201540,10,2015,5,40,201510,2015),('2015-10-06',201540,10,2015,6,40,201510,2015),('2015-10-07',201540,10,2015,7,40,201510,2015),('2015-10-08',201540,10,2015,8,40,201510,2015),('2015-10-09',201540,10,2015,9,40,201510,2015),('2015-10-10',201540,10,2015,10,40,201510,2015),('2015-10-11',201541,10,2015,11,41,201510,2015),('2015-10-12',201541,10,2015,12,41,201510,2015),('2015-10-13',201541,10,2015,13,41,201510,2015),('2015-10-14',201541,10,2015,14,41,201510,2015),('2015-10-15',201541,10,2015,15,41,201510,2015),('2015-10-16',201541,10,2015,16,41,201510,2015),('2015-10-17',201541,10,2015,17,41,201510,2015),('2015-10-18',201542,10,2015,18,42,201510,2015),('2015-10-19',201542,10,2015,19,42,201510,2015),('2015-10-20',201542,10,2015,20,42,201510,2015),('2015-10-21',201542,10,2015,21,42,201510,2015),('2015-10-22',201542,10,2015,22,42,201510,2015),('2015-10-23',201542,10,2015,23,42,201510,2015),('2015-10-24',201542,10,2015,24,42,201510,2015),('2015-10-25',201543,10,2015,25,43,201510,2015),('2015-10-26',201543,10,2015,26,43,201510,2015),('2015-10-27',201543,10,2015,27,43,201510,2015),('2015-10-28',201543,10,2015,28,43,201510,2015),('2015-10-29',201543,10,2015,29,43,201510,2015),('2015-10-30',201543,10,2015,30,43,201510,2015),('2015-10-31',201543,10,2015,31,43,201510,2015),('2015-11-01',201544,11,2015,1,44,201511,2015),('2015-11-02',201544,11,2015,2,44,201511,2015),('2015-11-03',201544,11,2015,3,44,201511,2015),('2015-11-04',201544,11,2015,4,44,201511,2015),('2015-11-05',201544,11,2015,5,44,201511,2015),('2015-11-06',201544,11,2015,6,44,201511,2015),('2015-11-07',201544,11,2015,7,44,201511,2015),('2015-11-08',201545,11,2015,8,45,201511,2015),('2015-11-09',201545,11,2015,9,45,201511,2015),('2015-11-10',201545,11,2015,10,45,201511,2015),('2015-11-11',201545,11,2015,11,45,201511,2015),('2015-11-12',201545,11,2015,12,45,201511,2015),('2015-11-13',201545,11,2015,13,45,201511,2015),('2015-11-14',201545,11,2015,14,45,201511,2015),('2015-11-15',201546,11,2015,15,46,201511,2015),('2015-11-16',201546,11,2015,16,46,201511,2015),('2015-11-17',201546,11,2015,17,46,201511,2015),('2015-11-18',201546,11,2015,18,46,201511,2015),('2015-11-19',201546,11,2015,19,46,201511,2015),('2015-11-20',201546,11,2015,20,46,201511,2015),('2015-11-21',201546,11,2015,21,46,201511,2015),('2015-11-22',201547,11,2015,22,47,201511,2015),('2015-11-23',201547,11,2015,23,47,201511,2015),('2015-11-24',201547,11,2015,24,47,201511,2015),('2015-11-25',201547,11,2015,25,47,201511,2015),('2015-11-26',201547,11,2015,26,47,201511,2015),('2015-11-27',201547,11,2015,27,47,201511,2015),('2015-11-28',201547,11,2015,28,47,201511,2015),('2015-11-29',201548,11,2015,29,48,201511,2015),('2015-11-30',201548,11,2015,30,48,201511,2015),('2015-12-01',201548,12,2015,1,48,201512,2016),('2015-12-02',201548,12,2015,2,48,201512,2016),('2015-12-03',201548,12,2015,3,48,201512,2016),('2015-12-04',201548,12,2015,4,48,201512,2016),('2015-12-05',201548,12,2015,5,48,201512,2016),('2015-12-06',201549,12,2015,6,49,201512,2016),('2015-12-07',201549,12,2015,7,49,201512,2016),('2015-12-08',201549,12,2015,8,49,201512,2016),('2015-12-09',201549,12,2015,9,49,201512,2016),('2015-12-10',201549,12,2015,10,49,201512,2016),('2015-12-11',201549,12,2015,11,49,201512,2016),('2015-12-12',201549,12,2015,12,49,201512,2016),('2015-12-13',201550,12,2015,13,50,201512,2016),('2015-12-14',201550,12,2015,14,50,201512,2016),('2015-12-15',201550,12,2015,15,50,201512,2016),('2015-12-16',201550,12,2015,16,50,201512,2016),('2015-12-17',201550,12,2015,17,50,201512,2016),('2015-12-18',201550,12,2015,18,50,201512,2016),('2015-12-19',201550,12,2015,19,50,201512,2016),('2015-12-20',201551,12,2015,20,51,201512,2016),('2015-12-21',201551,12,2015,21,51,201512,2016),('2015-12-22',201551,12,2015,22,51,201512,2016),('2015-12-23',201551,12,2015,23,51,201512,2016),('2015-12-24',201551,12,2015,24,51,201512,2016),('2015-12-25',201551,12,2015,25,51,201512,2016),('2015-12-26',201551,12,2015,26,51,201512,2016),('2015-12-27',201552,12,2015,27,52,201512,2016),('2015-12-28',201552,12,2015,28,52,201512,2016),('2015-12-29',201552,12,2015,29,52,201512,2016),('2015-12-30',201552,12,2015,30,52,201512,2016),('2015-12-31',201552,12,2015,31,52,201512,2016),('2016-01-01',201552,1,2016,1,1,201601,2016),('2016-01-02',201552,1,2016,2,1,201601,2016),('2016-01-03',201601,1,2016,3,1,201601,2016),('2016-01-04',201601,1,2016,4,1,201601,2016),('2016-01-05',201601,1,2016,5,1,201601,2016),('2016-01-06',201601,1,2016,6,1,201601,2016),('2016-01-07',201601,1,2016,7,1,201601,2016),('2016-01-08',201601,1,2016,8,1,201601,2016),('2016-01-09',201601,1,2016,9,1,201601,2016),('2016-01-10',201602,1,2016,10,2,201601,2016),('2016-01-11',201602,1,2016,11,2,201601,2016),('2016-01-12',201602,1,2016,12,2,201601,2016),('2016-01-13',201602,1,2016,13,2,201601,2016),('2016-01-14',201602,1,2016,14,2,201601,2016),('2016-01-15',201602,1,2016,15,2,201601,2016),('2016-01-16',201602,1,2016,16,2,201601,2016),('2016-01-17',201603,1,2016,17,3,201601,2016),('2016-01-18',201603,1,2016,18,3,201601,2016),('2016-01-19',201603,1,2016,19,3,201601,2016),('2016-01-20',201603,1,2016,20,3,201601,2016),('2016-01-21',201603,1,2016,21,3,201601,2016),('2016-01-22',201603,1,2016,22,3,201601,2016),('2016-01-23',201603,1,2016,23,3,201601,2016),('2016-01-24',201604,1,2016,24,4,201601,2016),('2016-01-25',201604,1,2016,25,4,201601,2016),('2016-01-26',201604,1,2016,26,4,201601,2016),('2016-01-27',201604,1,2016,27,4,201601,2016),('2016-01-28',201604,1,2016,28,4,201601,2016),('2016-01-29',201604,1,2016,29,4,201601,2016),('2016-01-30',201604,1,2016,30,4,201601,2016),('2016-01-31',201605,1,2016,31,5,201601,2016),('2016-02-01',201605,2,2016,1,5,201602,2016),('2016-02-02',201605,2,2016,2,5,201602,2016),('2016-02-03',201605,2,2016,3,5,201602,2016),('2016-02-04',201605,2,2016,4,5,201602,2016),('2016-02-05',201605,2,2016,5,5,201602,2016),('2016-02-06',201605,2,2016,6,5,201602,2016),('2016-02-07',201606,2,2016,7,6,201602,2016),('2016-02-08',201606,2,2016,8,6,201602,2016),('2016-02-09',201606,2,2016,9,6,201602,2016),('2016-02-10',201606,2,2016,10,6,201602,2016),('2016-02-11',201606,2,2016,11,6,201602,2016),('2016-02-12',201606,2,2016,12,6,201602,2016),('2016-02-13',201606,2,2016,13,6,201602,2016),('2016-02-14',201607,2,2016,14,7,201602,2016),('2016-02-15',201607,2,2016,15,7,201602,2016),('2016-02-16',201607,2,2016,16,7,201602,2016),('2016-02-17',201607,2,2016,17,7,201602,2016),('2016-02-18',201607,2,2016,18,7,201602,2016),('2016-02-19',201607,2,2016,19,7,201602,2016),('2016-02-20',201607,2,2016,20,7,201602,2016),('2016-02-21',201608,2,2016,21,8,201602,2016),('2016-02-22',201608,2,2016,22,8,201602,2016),('2016-02-23',201608,2,2016,23,8,201602,2016),('2016-02-24',201608,2,2016,24,8,201602,2016),('2016-02-25',201608,2,2016,25,8,201602,2016),('2016-02-26',201608,2,2016,26,8,201602,2016),('2016-02-27',201608,2,2016,27,8,201602,2016),('2016-02-28',201609,2,2016,28,9,201602,2016),('2016-02-29',201609,2,2016,29,9,201602,2016),('2016-03-01',201609,3,2016,1,9,201603,2016),('2016-03-02',201609,3,2016,2,9,201603,2016),('2016-03-03',201609,3,2016,3,9,201603,2016),('2016-03-04',201609,3,2016,4,9,201603,2016),('2016-03-05',201609,3,2016,5,9,201603,2016),('2016-03-06',201610,3,2016,6,10,201603,2016),('2016-03-07',201610,3,2016,7,10,201603,2016),('2016-03-08',201610,3,2016,8,10,201603,2016),('2016-03-09',201610,3,2016,9,10,201603,2016),('2016-03-10',201610,3,2016,10,10,201603,2016),('2016-03-11',201610,3,2016,11,10,201603,2016),('2016-03-12',201610,3,2016,12,10,201603,2016),('2016-03-13',201611,3,2016,13,11,201603,2016),('2016-03-14',201611,3,2016,14,11,201603,2016),('2016-03-15',201611,3,2016,15,11,201603,2016),('2016-03-16',201611,3,2016,16,11,201603,2016),('2016-03-17',201611,3,2016,17,11,201603,2016),('2016-03-18',201611,3,2016,18,11,201603,2016),('2016-03-19',201611,3,2016,19,11,201603,2016),('2016-03-20',201612,3,2016,20,12,201603,2016),('2016-03-21',201612,3,2016,21,12,201603,2016),('2016-03-22',201612,3,2016,22,12,201603,2016),('2016-03-23',201612,3,2016,23,12,201603,2016),('2016-03-24',201612,3,2016,24,12,201603,2016),('2016-03-25',201612,3,2016,25,12,201603,2016),('2016-03-26',201612,3,2016,26,12,201603,2016),('2016-03-27',201613,3,2016,27,13,201603,2016),('2016-03-28',201613,3,2016,28,13,201603,2016),('2016-03-29',201613,3,2016,29,13,201603,2016),('2016-03-30',201613,3,2016,30,13,201603,2016),('2016-03-31',201613,3,2016,31,13,201603,2016),('2016-04-01',201613,4,2016,1,13,201604,2016),('2016-04-02',201613,4,2016,2,13,201604,2016),('2016-04-03',201614,4,2016,3,14,201604,2016),('2016-04-04',201614,4,2016,4,14,201604,2016),('2016-04-05',201614,4,2016,5,14,201604,2016),('2016-04-06',201614,4,2016,6,14,201604,2016),('2016-04-07',201614,4,2016,7,14,201604,2016),('2016-04-08',201614,4,2016,8,14,201604,2016),('2016-04-09',201614,4,2016,9,14,201604,2016),('2016-04-10',201615,4,2016,10,15,201604,2016),('2016-04-11',201615,4,2016,11,15,201604,2016),('2016-04-12',201615,4,2016,12,15,201604,2016),('2016-04-13',201615,4,2016,13,15,201604,2016),('2016-04-14',201615,4,2016,14,15,201604,2016),('2016-04-15',201615,4,2016,15,15,201604,2016),('2016-04-16',201615,4,2016,16,15,201604,2016),('2016-04-17',201616,4,2016,17,16,201604,2016),('2016-04-18',201616,4,2016,18,16,201604,2016),('2016-04-19',201616,4,2016,19,16,201604,2016),('2016-04-20',201616,4,2016,20,16,201604,2016),('2016-04-21',201616,4,2016,21,16,201604,2016),('2016-04-22',201616,4,2016,22,16,201604,2016),('2016-04-23',201616,4,2016,23,16,201604,2016),('2016-04-24',201617,4,2016,24,17,201604,2016),('2016-04-25',201617,4,2016,25,17,201604,2016),('2016-04-26',201617,4,2016,26,17,201604,2016),('2016-04-27',201617,4,2016,27,17,201604,2016),('2016-04-28',201617,4,2016,28,17,201604,2016),('2016-04-29',201617,4,2016,29,17,201604,2016),('2016-04-30',201617,4,2016,30,17,201604,2016),('2016-05-01',201618,5,2016,1,18,201605,2016),('2016-05-02',201618,5,2016,2,18,201605,2016),('2016-05-03',201618,5,2016,3,18,201605,2016),('2016-05-04',201618,5,2016,4,18,201605,2016),('2016-05-05',201618,5,2016,5,18,201605,2016),('2016-05-06',201618,5,2016,6,18,201605,2016),('2016-05-07',201618,5,2016,7,18,201605,2016),('2016-05-08',201619,5,2016,8,19,201605,2016),('2016-05-09',201619,5,2016,9,19,201605,2016),('2016-05-10',201619,5,2016,10,19,201605,2016),('2016-05-11',201619,5,2016,11,19,201605,2016),('2016-05-12',201619,5,2016,12,19,201605,2016),('2016-05-13',201619,5,2016,13,19,201605,2016),('2016-05-14',201619,5,2016,14,19,201605,2016),('2016-05-15',201620,5,2016,15,20,201605,2016),('2016-05-16',201620,5,2016,16,20,201605,2016),('2016-05-17',201620,5,2016,17,20,201605,2016),('2016-05-18',201620,5,2016,18,20,201605,2016),('2016-05-19',201620,5,2016,19,20,201605,2016),('2016-05-20',201620,5,2016,20,20,201605,2016),('2016-05-21',201620,5,2016,21,20,201605,2016),('2016-05-22',201621,5,2016,22,21,201605,2016),('2016-05-23',201621,5,2016,23,21,201605,2016),('2016-05-24',201621,5,2016,24,21,201605,2016),('2016-05-25',201621,5,2016,25,21,201605,2016),('2016-05-26',201621,5,2016,26,21,201605,2016),('2016-05-27',201621,5,2016,27,21,201605,2016),('2016-05-28',201621,5,2016,28,21,201605,2016),('2016-05-29',201622,5,2016,29,22,201605,2016),('2016-05-30',201622,5,2016,30,22,201605,2016),('2016-05-31',201622,5,2016,31,22,201605,2016),('2016-06-01',201622,6,2016,1,22,201606,2016),('2016-06-02',201622,6,2016,2,22,201606,2016),('2016-06-03',201622,6,2016,3,22,201606,2016),('2016-06-04',201622,6,2016,4,22,201606,2016),('2016-06-05',201623,6,2016,5,23,201606,2016),('2016-06-06',201623,6,2016,6,23,201606,2016),('2016-06-07',201623,6,2016,7,23,201606,2016),('2016-06-08',201623,6,2016,8,23,201606,2016),('2016-06-09',201623,6,2016,9,23,201606,2016),('2016-06-10',201623,6,2016,10,23,201606,2016),('2016-06-11',201623,6,2016,11,23,201606,2016),('2016-06-12',201624,6,2016,12,24,201606,2016),('2016-06-13',201624,6,2016,13,24,201606,2016),('2016-06-14',201624,6,2016,14,24,201606,2016),('2016-06-15',201624,6,2016,15,24,201606,2016),('2016-06-16',201624,6,2016,16,24,201606,2016),('2016-06-17',201624,6,2016,17,24,201606,2016),('2016-06-18',201624,6,2016,18,24,201606,2016),('2016-06-19',201625,6,2016,19,25,201606,2016),('2016-06-20',201625,6,2016,20,25,201606,2016),('2016-06-21',201625,6,2016,21,25,201606,2016),('2016-06-22',201625,6,2016,22,25,201606,2016),('2016-06-23',201625,6,2016,23,25,201606,2016),('2016-06-24',201625,6,2016,24,25,201606,2016),('2016-06-25',201625,6,2016,25,25,201606,2016),('2016-06-26',201626,6,2016,26,26,201606,2016),('2016-06-27',201626,6,2016,27,26,201606,2016),('2016-06-28',201626,6,2016,28,26,201606,2016),('2016-06-29',201626,6,2016,29,26,201606,2016),('2016-06-30',201626,6,2016,30,26,201606,2016),('2016-07-01',201626,7,2016,1,26,201607,2016),('2016-07-02',201626,7,2016,2,26,201607,2016),('2016-07-03',201627,7,2016,3,27,201607,2016),('2016-07-04',201627,7,2016,4,27,201607,2016),('2016-07-05',201627,7,2016,5,27,201607,2016),('2016-07-06',201627,7,2016,6,27,201607,2016),('2016-07-07',201627,7,2016,7,27,201607,2016),('2016-07-08',201627,7,2016,8,27,201607,2016),('2016-07-09',201627,7,2016,9,27,201607,2016),('2016-07-10',201628,7,2016,10,28,201607,2016),('2016-07-11',201628,7,2016,11,28,201607,2016),('2016-07-12',201628,7,2016,12,28,201607,2016),('2016-07-13',201628,7,2016,13,28,201607,2016),('2016-07-14',201628,7,2016,14,28,201607,2016),('2016-07-15',201628,7,2016,15,28,201607,2016),('2016-07-16',201628,7,2016,16,28,201607,2016),('2016-07-17',201629,7,2016,17,29,201607,2016),('2016-07-18',201629,7,2016,18,29,201607,2016),('2016-07-19',201629,7,2016,19,29,201607,2016),('2016-07-20',201629,7,2016,20,29,201607,2016),('2016-07-21',201629,7,2016,21,29,201607,2016),('2016-07-22',201629,7,2016,22,29,201607,2016),('2016-07-23',201629,7,2016,23,29,201607,2016),('2016-07-24',201630,7,2016,24,30,201607,2016),('2016-07-25',201630,7,2016,25,30,201607,2016),('2016-07-26',201630,7,2016,26,30,201607,2016),('2016-07-27',201630,7,2016,27,30,201607,2016),('2016-07-28',201630,7,2016,28,30,201607,2016),('2016-07-29',201630,7,2016,29,30,201607,2016),('2016-07-30',201630,7,2016,30,30,201607,2016),('2016-07-31',201631,7,2016,31,31,201607,2016),('2016-08-01',201631,8,2016,1,31,201608,2016),('2016-08-02',201631,8,2016,2,31,201608,2016),('2016-08-03',201631,8,2016,3,31,201608,2016),('2016-08-04',201631,8,2016,4,31,201608,2016),('2016-08-05',201631,8,2016,5,31,201608,2016),('2016-08-06',201631,8,2016,6,31,201608,2016),('2016-08-07',201632,8,2016,7,32,201608,2016),('2016-08-08',201632,8,2016,8,32,201608,2016),('2016-08-09',201632,8,2016,9,32,201608,2016),('2016-08-10',201632,8,2016,10,32,201608,2016),('2016-08-11',201632,8,2016,11,32,201608,2016),('2016-08-12',201632,8,2016,12,32,201608,2016),('2016-08-13',201632,8,2016,13,32,201608,2016),('2016-08-14',201633,8,2016,14,33,201608,2016),('2016-08-15',201633,8,2016,15,33,201608,2016),('2016-08-16',201633,8,2016,16,33,201608,2016),('2016-08-17',201633,8,2016,17,33,201608,2016),('2016-08-18',201633,8,2016,18,33,201608,2016),('2016-08-19',201633,8,2016,19,33,201608,2016),('2016-08-20',201633,8,2016,20,33,201608,2016),('2016-08-21',201634,8,2016,21,34,201608,2016),('2016-08-22',201634,8,2016,22,34,201608,2016),('2016-08-23',201634,8,2016,23,34,201608,2016),('2016-08-24',201634,8,2016,24,34,201608,2016),('2016-08-25',201634,8,2016,25,34,201608,2016),('2016-08-26',201634,8,2016,26,34,201608,2016),('2016-08-27',201634,8,2016,27,34,201608,2016),('2016-08-28',201635,8,2016,28,35,201608,2016),('2016-08-29',201635,8,2016,29,35,201608,2016),('2016-08-30',201635,8,2016,30,35,201608,2016),('2016-08-31',201635,8,2016,31,35,201608,2016),('2016-09-01',201635,9,2016,1,35,201609,2016),('2016-09-02',201635,9,2016,2,35,201609,2016),('2016-09-03',201635,9,2016,3,35,201609,2016),('2016-09-04',201636,9,2016,4,36,201609,2016),('2016-09-05',201636,9,2016,5,36,201609,2016),('2016-09-06',201636,9,2016,6,36,201609,2016),('2016-09-07',201636,9,2016,7,36,201609,2016),('2016-09-08',201636,9,2016,8,36,201609,2016),('2016-09-09',201636,9,2016,9,36,201609,2016),('2016-09-10',201636,9,2016,10,36,201609,2016),('2016-09-11',201637,9,2016,11,37,201609,2016),('2016-09-12',201637,9,2016,12,37,201609,2016),('2016-09-13',201637,9,2016,13,37,201609,2016),('2016-09-14',201637,9,2016,14,37,201609,2016),('2016-09-15',201637,9,2016,15,37,201609,2016),('2016-09-16',201637,9,2016,16,37,201609,2016),('2016-09-17',201637,9,2016,17,37,201609,2016),('2016-09-18',201638,9,2016,18,38,201609,2016),('2016-09-19',201638,9,2016,19,38,201609,2016),('2016-09-20',201638,9,2016,20,38,201609,2016),('2016-09-21',201638,9,2016,21,38,201609,2016),('2016-09-22',201638,9,2016,22,38,201609,2016),('2016-09-23',201638,9,2016,23,38,201609,2016),('2016-09-24',201638,9,2016,24,38,201609,2016),('2016-09-25',201639,9,2016,25,39,201609,2016),('2016-09-26',201639,9,2016,26,39,201609,2016),('2016-09-27',201639,9,2016,27,39,201609,2016),('2016-09-28',201639,9,2016,28,39,201609,2016),('2016-09-29',201639,9,2016,29,39,201609,2016),('2016-09-30',201639,9,2016,30,39,201609,2016),('2016-10-01',201639,10,2016,1,39,201610,2016),('2016-10-02',201640,10,2016,2,40,201610,2016),('2016-10-03',201640,10,2016,3,40,201610,2016),('2016-10-04',201640,10,2016,4,40,201610,2016),('2016-10-05',201640,10,2016,5,40,201610,2016),('2016-10-06',201640,10,2016,6,40,201610,2016),('2016-10-07',201640,10,2016,7,40,201610,2016),('2016-10-08',201640,10,2016,8,40,201610,2016),('2016-10-09',201641,10,2016,9,41,201610,2016),('2016-10-10',201641,10,2016,10,41,201610,2016),('2016-10-11',201641,10,2016,11,41,201610,2016),('2016-10-12',201641,10,2016,12,41,201610,2016),('2016-10-13',201641,10,2016,13,41,201610,2016),('2016-10-14',201641,10,2016,14,41,201610,2016),('2016-10-15',201641,10,2016,15,41,201610,2016),('2016-10-16',201642,10,2016,16,42,201610,2016),('2016-10-17',201642,10,2016,17,42,201610,2016),('2016-10-18',201642,10,2016,18,42,201610,2016),('2016-10-19',201642,10,2016,19,42,201610,2016),('2016-10-20',201642,10,2016,20,42,201610,2016),('2016-10-21',201642,10,2016,21,42,201610,2016),('2016-10-22',201642,10,2016,22,42,201610,2016),('2016-10-23',201643,10,2016,23,43,201610,2016),('2016-10-24',201643,10,2016,24,43,201610,2016),('2016-10-25',201643,10,2016,25,43,201610,2016),('2016-10-26',201643,10,2016,26,43,201610,2016),('2016-10-27',201643,10,2016,27,43,201610,2016),('2016-10-28',201643,10,2016,28,43,201610,2016),('2016-10-29',201643,10,2016,29,43,201610,2016),('2016-10-30',201644,10,2016,30,44,201610,2016),('2016-10-31',201644,10,2016,31,44,201610,2016),('2016-11-01',201644,11,2016,1,44,201611,2016),('2016-11-02',201644,11,2016,2,44,201611,2016),('2016-11-03',201644,11,2016,3,44,201611,2016),('2016-11-04',201644,11,2016,4,44,201611,2016),('2016-11-05',201644,11,2016,5,44,201611,2016),('2016-11-06',201645,11,2016,6,45,201611,2016),('2016-11-07',201645,11,2016,7,45,201611,2016),('2016-11-08',201645,11,2016,8,45,201611,2016),('2016-11-09',201645,11,2016,9,45,201611,2016),('2016-11-10',201645,11,2016,10,45,201611,2016),('2016-11-11',201645,11,2016,11,45,201611,2016),('2016-11-12',201645,11,2016,12,45,201611,2016),('2016-11-13',201646,11,2016,13,46,201611,2016),('2016-11-14',201646,11,2016,14,46,201611,2016),('2016-11-15',201646,11,2016,15,46,201611,2016),('2016-11-16',201646,11,2016,16,46,201611,2016),('2016-11-17',201646,11,2016,17,46,201611,2016),('2016-11-18',201646,11,2016,18,46,201611,2016),('2016-11-19',201646,11,2016,19,46,201611,2016),('2016-11-20',201647,11,2016,20,47,201611,2016),('2016-11-21',201647,11,2016,21,47,201611,2016),('2016-11-22',201647,11,2016,22,47,201611,2016),('2016-11-23',201647,11,2016,23,47,201611,2016),('2016-11-24',201647,11,2016,24,47,201611,2016),('2016-11-25',201647,11,2016,25,47,201611,2016),('2016-11-26',201647,11,2016,26,47,201611,2016),('2016-11-27',201648,11,2016,27,48,201611,2016),('2016-11-28',201648,11,2016,28,48,201611,2016),('2016-11-29',201648,11,2016,29,48,201611,2016),('2016-11-30',201648,11,2016,30,48,201611,2016),('2016-12-01',201648,12,2016,1,48,201612,2017),('2016-12-02',201648,12,2016,2,48,201612,2017),('2016-12-03',201648,12,2016,3,48,201612,2017),('2016-12-04',201649,12,2016,4,49,201612,2017),('2016-12-05',201649,12,2016,5,49,201612,2017),('2016-12-06',201649,12,2016,6,49,201612,2017),('2016-12-07',201649,12,2016,7,49,201612,2017),('2016-12-08',201649,12,2016,8,49,201612,2017),('2016-12-09',201649,12,2016,9,49,201612,2017),('2016-12-10',201649,12,2016,10,49,201612,2017),('2016-12-11',201650,12,2016,11,50,201612,2017),('2016-12-12',201650,12,2016,12,50,201612,2017),('2016-12-13',201650,12,2016,13,50,201612,2017),('2016-12-14',201650,12,2016,14,50,201612,2017),('2016-12-15',201650,12,2016,15,50,201612,2017),('2016-12-16',201650,12,2016,16,50,201612,2017),('2016-12-17',201650,12,2016,17,50,201612,2017),('2016-12-18',201651,12,2016,18,51,201612,2017),('2016-12-19',201651,12,2016,19,51,201612,2017),('2016-12-20',201651,12,2016,20,51,201612,2017),('2016-12-21',201651,12,2016,21,51,201612,2017),('2016-12-22',201651,12,2016,22,51,201612,2017),('2016-12-23',201651,12,2016,23,51,201612,2017),('2016-12-24',201651,12,2016,24,51,201612,2017),('2016-12-25',201652,12,2016,25,52,201612,2017),('2016-12-26',201652,12,2016,26,52,201612,2017),('2016-12-27',201652,12,2016,27,52,201612,2017),('2016-12-28',201652,12,2016,28,52,201612,2017),('2016-12-29',201652,12,2016,29,52,201612,2017),('2016-12-30',201652,12,2016,30,52,201612,2017),('2016-12-31',201652,12,2016,31,52,201612,2017),('2017-01-01',201701,1,2017,1,1,201701,2017),('2017-01-02',201701,1,2017,2,1,201701,2017),('2017-01-03',201701,1,2017,3,1,201701,2017),('2017-01-04',201701,1,2017,4,1,201701,2017),('2017-01-05',201701,1,2017,5,1,201701,2017),('2017-01-06',201701,1,2017,6,1,201701,2017),('2017-01-07',201701,1,2017,7,1,201701,2017),('2017-01-08',201702,1,2017,8,2,201701,2017),('2017-01-09',201702,1,2017,9,2,201701,2017),('2017-01-10',201702,1,2017,10,2,201701,2017),('2017-01-11',201702,1,2017,11,2,201701,2017),('2017-01-12',201702,1,2017,12,2,201701,2017),('2017-01-13',201702,1,2017,13,2,201701,2017),('2017-01-14',201702,1,2017,14,2,201701,2017),('2017-01-15',201703,1,2017,15,3,201701,2017),('2017-01-16',201703,1,2017,16,3,201701,2017),('2017-01-17',201703,1,2017,17,3,201701,2017),('2017-01-18',201703,1,2017,18,3,201701,2017),('2017-01-19',201703,1,2017,19,3,201701,2017),('2017-01-20',201703,1,2017,20,3,201701,2017),('2017-01-21',201703,1,2017,21,3,201701,2017),('2017-01-22',201704,1,2017,22,4,201701,2017),('2017-01-23',201704,1,2017,23,4,201701,2017),('2017-01-24',201704,1,2017,24,4,201701,2017),('2017-01-25',201704,1,2017,25,4,201701,2017),('2017-01-26',201704,1,2017,26,4,201701,2017),('2017-01-27',201704,1,2017,27,4,201701,2017),('2017-01-28',201704,1,2017,28,4,201701,2017),('2017-01-29',201705,1,2017,29,5,201701,2017),('2017-01-30',201705,1,2017,30,5,201701,2017),('2017-01-31',201705,1,2017,31,5,201701,2017),('2017-02-01',201705,2,2017,1,5,201702,2017),('2017-02-02',201705,2,2017,2,5,201702,2017),('2017-02-03',201705,2,2017,3,5,201702,2017),('2017-02-04',201705,2,2017,4,5,201702,2017),('2017-02-05',201706,2,2017,5,6,201702,2017),('2017-02-06',201706,2,2017,6,6,201702,2017),('2017-02-07',201706,2,2017,7,6,201702,2017),('2017-02-08',201706,2,2017,8,6,201702,2017),('2017-02-09',201706,2,2017,9,6,201702,2017),('2017-02-10',201706,2,2017,10,6,201702,2017),('2017-02-11',201706,2,2017,11,6,201702,2017),('2017-02-12',201707,2,2017,12,7,201702,2017),('2017-02-13',201707,2,2017,13,7,201702,2017),('2017-02-14',201707,2,2017,14,7,201702,2017),('2017-02-15',201707,2,2017,15,7,201702,2017),('2017-02-16',201707,2,2017,16,7,201702,2017),('2017-02-17',201707,2,2017,17,7,201702,2017),('2017-02-18',201707,2,2017,18,7,201702,2017),('2017-02-19',201708,2,2017,19,8,201702,2017),('2017-02-20',201708,2,2017,20,8,201702,2017),('2017-02-21',201708,2,2017,21,8,201702,2017),('2017-02-22',201708,2,2017,22,8,201702,2017),('2017-02-23',201708,2,2017,23,8,201702,2017),('2017-02-24',201708,2,2017,24,8,201702,2017),('2017-02-25',201708,2,2017,25,8,201702,2017),('2017-02-26',201709,2,2017,26,9,201702,2017),('2017-02-27',201709,2,2017,27,9,201702,2017),('2017-02-28',201709,2,2017,28,9,201702,2017),('2017-03-01',201709,3,2017,1,9,201703,2017),('2017-03-02',201709,3,2017,2,9,201703,2017),('2017-03-03',201709,3,2017,3,9,201703,2017),('2017-03-04',201709,3,2017,4,9,201703,2017),('2017-03-05',201710,3,2017,5,10,201703,2017),('2017-03-06',201710,3,2017,6,10,201703,2017),('2017-03-07',201710,3,2017,7,10,201703,2017),('2017-03-08',201710,3,2017,8,10,201703,2017),('2017-03-09',201710,3,2017,9,10,201703,2017),('2017-03-10',201710,3,2017,10,10,201703,2017),('2017-03-11',201710,3,2017,11,10,201703,2017),('2017-03-12',201711,3,2017,12,11,201703,2017),('2017-03-13',201711,3,2017,13,11,201703,2017),('2017-03-14',201711,3,2017,14,11,201703,2017),('2017-03-15',201711,3,2017,15,11,201703,2017),('2017-03-16',201711,3,2017,16,11,201703,2017),('2017-03-17',201711,3,2017,17,11,201703,2017),('2017-03-18',201711,3,2017,18,11,201703,2017),('2017-03-19',201712,3,2017,19,12,201703,2017),('2017-03-20',201712,3,2017,20,12,201703,2017),('2017-03-21',201712,3,2017,21,12,201703,2017),('2017-03-22',201712,3,2017,22,12,201703,2017),('2017-03-23',201712,3,2017,23,12,201703,2017),('2017-03-24',201712,3,2017,24,12,201703,2017),('2017-03-25',201712,3,2017,25,12,201703,2017),('2017-03-26',201713,3,2017,26,13,201703,2017),('2017-03-27',201713,3,2017,27,13,201703,2017),('2017-03-28',201713,3,2017,28,13,201703,2017),('2017-03-29',201713,3,2017,29,13,201703,2017),('2017-03-30',201713,3,2017,30,13,201703,2017),('2017-03-31',201713,3,2017,31,13,201703,2017),('2017-04-01',201713,4,2017,1,13,201704,2017),('2017-04-02',201714,4,2017,2,14,201704,2017),('2017-04-03',201714,4,2017,3,14,201704,2017),('2017-04-04',201714,4,2017,4,14,201704,2017),('2017-04-05',201714,4,2017,5,14,201704,2017),('2017-04-06',201714,4,2017,6,14,201704,2017),('2017-04-07',201714,4,2017,7,14,201704,2017),('2017-04-08',201714,4,2017,8,14,201704,2017),('2017-04-09',201715,4,2017,9,15,201704,2017),('2017-04-10',201715,4,2017,10,15,201704,2017),('2017-04-11',201715,4,2017,11,15,201704,2017),('2017-04-12',201715,4,2017,12,15,201704,2017),('2017-04-13',201715,4,2017,13,15,201704,2017),('2017-04-14',201715,4,2017,14,15,201704,2017),('2017-04-15',201715,4,2017,15,15,201704,2017),('2017-04-16',201716,4,2017,16,16,201704,2017),('2017-04-17',201716,4,2017,17,16,201704,2017),('2017-04-18',201716,4,2017,18,16,201704,2017),('2017-04-19',201716,4,2017,19,16,201704,2017),('2017-04-20',201716,4,2017,20,16,201704,2017),('2017-04-21',201716,4,2017,21,16,201704,2017),('2017-04-22',201716,4,2017,22,16,201704,2017),('2017-04-23',201717,4,2017,23,17,201704,2017),('2017-04-24',201717,4,2017,24,17,201704,2017),('2017-04-25',201717,4,2017,25,17,201704,2017),('2017-04-26',201717,4,2017,26,17,201704,2017),('2017-04-27',201717,4,2017,27,17,201704,2017),('2017-04-28',201717,4,2017,28,17,201704,2017),('2017-04-29',201717,4,2017,29,17,201704,2017),('2017-04-30',201718,4,2017,30,18,201704,2017),('2017-05-01',201718,5,2017,1,18,201705,2017),('2017-05-02',201718,5,2017,2,18,201705,2017),('2017-05-03',201718,5,2017,3,18,201705,2017),('2017-05-04',201718,5,2017,4,18,201705,2017),('2017-05-05',201718,5,2017,5,18,201705,2017),('2017-05-06',201718,5,2017,6,18,201705,2017),('2017-05-07',201719,5,2017,7,19,201705,2017),('2017-05-08',201719,5,2017,8,19,201705,2017),('2017-05-09',201719,5,2017,9,19,201705,2017),('2017-05-10',201719,5,2017,10,19,201705,2017),('2017-05-11',201719,5,2017,11,19,201705,2017),('2017-05-12',201719,5,2017,12,19,201705,2017),('2017-05-13',201719,5,2017,13,19,201705,2017),('2017-05-14',201720,5,2017,14,20,201705,2017),('2017-05-15',201720,5,2017,15,20,201705,2017),('2017-05-16',201720,5,2017,16,20,201705,2017),('2017-05-17',201720,5,2017,17,20,201705,2017),('2017-05-18',201720,5,2017,18,20,201705,2017),('2017-05-19',201720,5,2017,19,20,201705,2017),('2017-05-20',201720,5,2017,20,20,201705,2017),('2017-05-21',201721,5,2017,21,21,201705,2017),('2017-05-22',201721,5,2017,22,21,201705,2017),('2017-05-23',201721,5,2017,23,21,201705,2017),('2017-05-24',201721,5,2017,24,21,201705,2017),('2017-05-25',201721,5,2017,25,21,201705,2017),('2017-05-26',201721,5,2017,26,21,201705,2017),('2017-05-27',201721,5,2017,27,21,201705,2017),('2017-05-28',201722,5,2017,28,22,201705,2017),('2017-05-29',201722,5,2017,29,22,201705,2017),('2017-05-30',201722,5,2017,30,22,201705,2017),('2017-05-31',201722,5,2017,31,22,201705,2017),('2017-06-01',201722,6,2017,1,22,201706,2017),('2017-06-02',201722,6,2017,2,22,201706,2017),('2017-06-03',201722,6,2017,3,22,201706,2017),('2017-06-04',201723,6,2017,4,23,201706,2017),('2017-06-05',201723,6,2017,5,23,201706,2017),('2017-06-06',201723,6,2017,6,23,201706,2017),('2017-06-07',201723,6,2017,7,23,201706,2017),('2017-06-08',201723,6,2017,8,23,201706,2017),('2017-06-09',201723,6,2017,9,23,201706,2017),('2017-06-10',201723,6,2017,10,23,201706,2017),('2017-06-11',201724,6,2017,11,24,201706,2017),('2017-06-12',201724,6,2017,12,24,201706,2017),('2017-06-13',201724,6,2017,13,24,201706,2017),('2017-06-14',201724,6,2017,14,24,201706,2017),('2017-06-15',201724,6,2017,15,24,201706,2017),('2017-06-16',201724,6,2017,16,24,201706,2017),('2017-06-17',201724,6,2017,17,24,201706,2017),('2017-06-18',201725,6,2017,18,25,201706,2017),('2017-06-19',201725,6,2017,19,25,201706,2017),('2017-06-20',201725,6,2017,20,25,201706,2017),('2017-06-21',201725,6,2017,21,25,201706,2017),('2017-06-22',201725,6,2017,22,25,201706,2017),('2017-06-23',201725,6,2017,23,25,201706,2017),('2017-06-24',201725,6,2017,24,25,201706,2017),('2017-06-25',201726,6,2017,25,26,201706,2017),('2017-06-26',201726,6,2017,26,26,201706,2017),('2017-06-27',201726,6,2017,27,26,201706,2017),('2017-06-28',201726,6,2017,28,26,201706,2017),('2017-06-29',201726,6,2017,29,26,201706,2017),('2017-06-30',201726,6,2017,30,26,201706,2017),('2017-07-01',201726,7,2017,1,26,201707,2017),('2017-07-02',201727,7,2017,2,27,201707,2017),('2017-07-03',201727,7,2017,3,27,201707,2017),('2017-07-04',201727,7,2017,4,27,201707,2017),('2017-07-05',201727,7,2017,5,27,201707,2017),('2017-07-06',201727,7,2017,6,27,201707,2017),('2017-07-07',201727,7,2017,7,27,201707,2017),('2017-07-08',201727,7,2017,8,27,201707,2017),('2017-07-09',201728,7,2017,9,28,201707,2017),('2017-07-10',201728,7,2017,10,28,201707,2017),('2017-07-11',201728,7,2017,11,28,201707,2017),('2017-07-12',201728,7,2017,12,28,201707,2017),('2017-07-13',201728,7,2017,13,28,201707,2017),('2017-07-14',201728,7,2017,14,28,201707,2017),('2017-07-15',201728,7,2017,15,28,201707,2017),('2017-07-16',201729,7,2017,16,29,201707,2017),('2017-07-17',201729,7,2017,17,29,201707,2017),('2017-07-18',201729,7,2017,18,29,201707,2017),('2017-07-19',201729,7,2017,19,29,201707,2017),('2017-07-20',201729,7,2017,20,29,201707,2017),('2017-07-21',201729,7,2017,21,29,201707,2017),('2017-07-22',201729,7,2017,22,29,201707,2017),('2017-07-23',201730,7,2017,23,30,201707,2017),('2017-07-24',201730,7,2017,24,30,201707,2017),('2017-07-25',201730,7,2017,25,30,201707,2017),('2017-07-26',201730,7,2017,26,30,201707,2017),('2017-07-27',201730,7,2017,27,30,201707,2017),('2017-07-28',201730,7,2017,28,30,201707,2017),('2017-07-29',201730,7,2017,29,30,201707,2017),('2017-07-30',201731,7,2017,30,31,201707,2017),('2017-07-31',201731,7,2017,31,31,201707,2017),('2017-08-01',201731,8,2017,1,31,201708,2017),('2017-08-02',201731,8,2017,2,31,201708,2017),('2017-08-03',201731,8,2017,3,31,201708,2017),('2017-08-04',201731,8,2017,4,31,201708,2017),('2017-08-05',201731,8,2017,5,31,201708,2017),('2017-08-06',201732,8,2017,6,32,201708,2017),('2017-08-07',201732,8,2017,7,32,201708,2017),('2017-08-08',201732,8,2017,8,32,201708,2017),('2017-08-09',201732,8,2017,9,32,201708,2017),('2017-08-10',201732,8,2017,10,32,201708,2017),('2017-08-11',201732,8,2017,11,32,201708,2017),('2017-08-12',201732,8,2017,12,32,201708,2017),('2017-08-13',201733,8,2017,13,33,201708,2017),('2017-08-14',201733,8,2017,14,33,201708,2017),('2017-08-15',201733,8,2017,15,33,201708,2017),('2017-08-16',201733,8,2017,16,33,201708,2017),('2017-08-17',201733,8,2017,17,33,201708,2017),('2017-08-18',201733,8,2017,18,33,201708,2017),('2017-08-19',201733,8,2017,19,33,201708,2017),('2017-08-20',201734,8,2017,20,34,201708,2017),('2017-08-21',201734,8,2017,21,34,201708,2017),('2017-08-22',201734,8,2017,22,34,201708,2017),('2017-08-23',201734,8,2017,23,34,201708,2017),('2017-08-24',201734,8,2017,24,34,201708,2017),('2017-08-25',201734,8,2017,25,34,201708,2017),('2017-08-26',201734,8,2017,26,34,201708,2017),('2017-08-27',201735,8,2017,27,35,201708,2017),('2017-08-28',201735,8,2017,28,35,201708,2017),('2017-08-29',201735,8,2017,29,35,201708,2017),('2017-08-30',201735,8,2017,30,35,201708,2017),('2017-08-31',201735,8,2017,31,35,201708,2017),('2017-09-01',201735,9,2017,1,35,201709,2017),('2017-09-02',201735,9,2017,2,35,201709,2017),('2017-09-03',201736,9,2017,3,36,201709,2017),('2017-09-04',201736,9,2017,4,36,201709,2017),('2017-09-05',201736,9,2017,5,36,201709,2017),('2017-09-06',201736,9,2017,6,36,201709,2017),('2017-09-07',201736,9,2017,7,36,201709,2017),('2017-09-08',201736,9,2017,8,36,201709,2017),('2017-09-09',201736,9,2017,9,36,201709,2017),('2017-09-10',201737,9,2017,10,37,201709,2017),('2017-09-11',201737,9,2017,11,37,201709,2017),('2017-09-12',201737,9,2017,12,37,201709,2017),('2017-09-13',201737,9,2017,13,37,201709,2017),('2017-09-14',201737,9,2017,14,37,201709,2017),('2017-09-15',201737,9,2017,15,37,201709,2017),('2017-09-16',201737,9,2017,16,37,201709,2017),('2017-09-17',201738,9,2017,17,38,201709,2017),('2017-09-18',201738,9,2017,18,38,201709,2017),('2017-09-19',201738,9,2017,19,38,201709,2017),('2017-09-20',201738,9,2017,20,38,201709,2017),('2017-09-21',201738,9,2017,21,38,201709,2017),('2017-09-22',201738,9,2017,22,38,201709,2017),('2017-09-23',201738,9,2017,23,38,201709,2017),('2017-09-24',201739,9,2017,24,39,201709,2017),('2017-09-25',201739,9,2017,25,39,201709,2017),('2017-09-26',201739,9,2017,26,39,201709,2017),('2017-09-27',201739,9,2017,27,39,201709,2017),('2017-09-28',201739,9,2017,28,39,201709,2017),('2017-09-29',201739,9,2017,29,39,201709,2017),('2017-09-30',201739,9,2017,30,39,201709,2017),('2017-10-01',201740,10,2017,1,40,201710,2017),('2017-10-02',201740,10,2017,2,40,201710,2017),('2017-10-03',201740,10,2017,3,40,201710,2017),('2017-10-04',201740,10,2017,4,40,201710,2017),('2017-10-05',201740,10,2017,5,40,201710,2017),('2017-10-06',201740,10,2017,6,40,201710,2017),('2017-10-07',201740,10,2017,7,40,201710,2017),('2017-10-08',201741,10,2017,8,41,201710,2017),('2017-10-09',201741,10,2017,9,41,201710,2017),('2017-10-10',201741,10,2017,10,41,201710,2017),('2017-10-11',201741,10,2017,11,41,201710,2017),('2017-10-12',201741,10,2017,12,41,201710,2017),('2017-10-13',201741,10,2017,13,41,201710,2017),('2017-10-14',201741,10,2017,14,41,201710,2017),('2017-10-15',201742,10,2017,15,42,201710,2017),('2017-10-16',201742,10,2017,16,42,201710,2017),('2017-10-17',201742,10,2017,17,42,201710,2017),('2017-10-18',201742,10,2017,18,42,201710,2017),('2017-10-19',201742,10,2017,19,42,201710,2017),('2017-10-20',201742,10,2017,20,42,201710,2017),('2017-10-21',201742,10,2017,21,42,201710,2017),('2017-10-22',201743,10,2017,22,43,201710,2017),('2017-10-23',201743,10,2017,23,43,201710,2017),('2017-10-24',201743,10,2017,24,43,201710,2017),('2017-10-25',201743,10,2017,25,43,201710,2017),('2017-10-26',201743,10,2017,26,43,201710,2017),('2017-10-27',201743,10,2017,27,43,201710,2017),('2017-10-28',201743,10,2017,28,43,201710,2017),('2017-10-29',201744,10,2017,29,44,201710,2017),('2017-10-30',201744,10,2017,30,44,201710,2017),('2017-10-31',201744,10,2017,31,44,201710,2017),('2017-11-01',201744,11,2017,1,44,201711,2017),('2017-11-02',201744,11,2017,2,44,201711,2017),('2017-11-03',201744,11,2017,3,44,201711,2017),('2017-11-04',201744,11,2017,4,44,201711,2017),('2017-11-05',201745,11,2017,5,45,201711,2017),('2017-11-06',201745,11,2017,6,45,201711,2017),('2017-11-07',201745,11,2017,7,45,201711,2017),('2017-11-08',201745,11,2017,8,45,201711,2017),('2017-11-09',201745,11,2017,9,45,201711,2017),('2017-11-10',201745,11,2017,10,45,201711,2017),('2017-11-11',201745,11,2017,11,45,201711,2017),('2017-11-12',201746,11,2017,12,46,201711,2017),('2017-11-13',201746,11,2017,13,46,201711,2017),('2017-11-14',201746,11,2017,14,46,201711,2017),('2017-11-15',201746,11,2017,15,46,201711,2017),('2017-11-16',201746,11,2017,16,46,201711,2017),('2017-11-17',201746,11,2017,17,46,201711,2017),('2017-11-18',201746,11,2017,18,46,201711,2017),('2017-11-19',201747,11,2017,19,47,201711,2017),('2017-11-20',201747,11,2017,20,47,201711,2017),('2017-11-21',201747,11,2017,21,47,201711,2017),('2017-11-22',201747,11,2017,22,47,201711,2017),('2017-11-23',201747,11,2017,23,47,201711,2017),('2017-11-24',201747,11,2017,24,47,201711,2017),('2017-11-25',201747,11,2017,25,47,201711,2017),('2017-11-26',201748,11,2017,26,48,201711,2017),('2017-11-27',201748,11,2017,27,48,201711,2017),('2017-11-28',201748,11,2017,28,48,201711,2017),('2017-11-29',201748,11,2017,29,48,201711,2017),('2017-11-30',201748,11,2017,30,48,201711,2017),('2017-12-01',201748,12,2017,1,48,201712,2018),('2017-12-02',201748,12,2017,2,48,201712,2018),('2017-12-03',201749,12,2017,3,49,201712,2018),('2017-12-04',201749,12,2017,4,49,201712,2018),('2017-12-05',201749,12,2017,5,49,201712,2018),('2017-12-06',201749,12,2017,6,49,201712,2018),('2017-12-07',201749,12,2017,7,49,201712,2018),('2017-12-08',201749,12,2017,8,49,201712,2018),('2017-12-09',201749,12,2017,9,49,201712,2018),('2017-12-10',201750,12,2017,10,50,201712,2018),('2017-12-11',201750,12,2017,11,50,201712,2018),('2017-12-12',201750,12,2017,12,50,201712,2018),('2017-12-13',201750,12,2017,13,50,201712,2018),('2017-12-14',201750,12,2017,14,50,201712,2018),('2017-12-15',201750,12,2017,15,50,201712,2018),('2017-12-16',201750,12,2017,16,50,201712,2018),('2017-12-17',201751,12,2017,17,51,201712,2018),('2017-12-18',201751,12,2017,18,51,201712,2018),('2017-12-19',201751,12,2017,19,51,201712,2018),('2017-12-20',201751,12,2017,20,51,201712,2018),('2017-12-21',201751,12,2017,21,51,201712,2018),('2017-12-22',201751,12,2017,22,51,201712,2018),('2017-12-23',201751,12,2017,23,51,201712,2018),('2017-12-24',201752,12,2017,24,52,201712,2018),('2017-12-25',201752,12,2017,25,52,201712,2018),('2017-12-26',201752,12,2017,26,52,201712,2018),('2017-12-27',201752,12,2017,27,52,201712,2018),('2017-12-28',201752,12,2017,28,52,201712,2018),('2017-12-29',201752,12,2017,29,52,201712,2018),('2017-12-30',201752,12,2017,30,52,201712,2018),('2017-12-31',201801,12,2017,31,1,201712,2018),('2018-01-01',201801,1,2018,1,1,201801,2018),('2018-01-02',201801,1,2018,2,1,201801,2018),('2018-01-03',201801,1,2018,3,1,201801,2018),('2018-01-04',201801,1,2018,4,1,201801,2018),('2018-01-05',201801,1,2018,5,1,201801,2018),('2018-01-06',201801,1,2018,6,1,201801,2018),('2018-01-07',201802,1,2018,7,2,201801,2018),('2018-01-08',201802,1,2018,8,2,201801,2018),('2018-01-09',201802,1,2018,9,2,201801,2018),('2018-01-10',201802,1,2018,10,2,201801,2018),('2018-01-11',201802,1,2018,11,2,201801,2018),('2018-01-12',201802,1,2018,12,2,201801,2018),('2018-01-13',201802,1,2018,13,2,201801,2018),('2018-01-14',201803,1,2018,14,3,201801,2018),('2018-01-15',201803,1,2018,15,3,201801,2018),('2018-01-16',201803,1,2018,16,3,201801,2018),('2018-01-17',201803,1,2018,17,3,201801,2018),('2018-01-18',201803,1,2018,18,3,201801,2018),('2018-01-19',201803,1,2018,19,3,201801,2018),('2018-01-20',201803,1,2018,20,3,201801,2018),('2018-01-21',201804,1,2018,21,4,201801,2018),('2018-01-22',201804,1,2018,22,4,201801,2018),('2018-01-23',201804,1,2018,23,4,201801,2018),('2018-01-24',201804,1,2018,24,4,201801,2018),('2018-01-25',201804,1,2018,25,4,201801,2018),('2018-01-26',201804,1,2018,26,4,201801,2018),('2018-01-27',201804,1,2018,27,4,201801,2018),('2018-01-28',201805,1,2018,28,5,201801,2018),('2018-01-29',201805,1,2018,29,5,201801,2018),('2018-01-30',201805,1,2018,30,5,201801,2018),('2018-01-31',201805,1,2018,31,5,201801,2018),('2018-02-01',201805,2,2018,1,5,201802,2018),('2018-02-02',201805,2,2018,2,5,201802,2018),('2018-02-03',201805,2,2018,3,5,201802,2018),('2018-02-04',201806,2,2018,4,6,201802,2018),('2018-02-05',201806,2,2018,5,6,201802,2018),('2018-02-06',201806,2,2018,6,6,201802,2018),('2018-02-07',201806,2,2018,7,6,201802,2018),('2018-02-08',201806,2,2018,8,6,201802,2018),('2018-02-09',201806,2,2018,9,6,201802,2018),('2018-02-10',201806,2,2018,10,6,201802,2018),('2018-02-11',201807,2,2018,11,7,201802,2018),('2018-02-12',201807,2,2018,12,7,201802,2018),('2018-02-13',201807,2,2018,13,7,201802,2018),('2018-02-14',201807,2,2018,14,7,201802,2018),('2018-02-15',201807,2,2018,15,7,201802,2018),('2018-02-16',201807,2,2018,16,7,201802,2018),('2018-02-17',201807,2,2018,17,7,201802,2018),('2018-02-18',201808,2,2018,18,8,201802,2018),('2018-02-19',201808,2,2018,19,8,201802,2018),('2018-02-20',201808,2,2018,20,8,201802,2018),('2018-02-21',201808,2,2018,21,8,201802,2018),('2018-02-22',201808,2,2018,22,8,201802,2018),('2018-02-23',201808,2,2018,23,8,201802,2018),('2018-02-24',201808,2,2018,24,8,201802,2018),('2018-02-25',201809,2,2018,25,9,201802,2018),('2018-02-26',201809,2,2018,26,9,201802,2018),('2018-02-27',201809,2,2018,27,9,201802,2018),('2018-02-28',201809,2,2018,28,9,201802,2018),('2018-03-01',201809,3,2018,1,9,201803,2018),('2018-03-02',201809,3,2018,2,9,201803,2018),('2018-03-03',201809,3,2018,3,9,201803,2018),('2018-03-04',201810,3,2018,4,10,201803,2018),('2018-03-05',201810,3,2018,5,10,201803,2018),('2018-03-06',201810,3,2018,6,10,201803,2018),('2018-03-07',201810,3,2018,7,10,201803,2018),('2018-03-08',201810,3,2018,8,10,201803,2018),('2018-03-09',201810,3,2018,9,10,201803,2018),('2018-03-10',201810,3,2018,10,10,201803,2018),('2018-03-11',201811,3,2018,11,11,201803,2018),('2018-03-12',201811,3,2018,12,11,201803,2018),('2018-03-13',201811,3,2018,13,11,201803,2018),('2018-03-14',201811,3,2018,14,11,201803,2018),('2018-03-15',201811,3,2018,15,11,201803,2018),('2018-03-16',201811,3,2018,16,11,201803,2018),('2018-03-17',201811,3,2018,17,11,201803,2018),('2018-03-18',201812,3,2018,18,12,201803,2018),('2018-03-19',201812,3,2018,19,12,201803,2018),('2018-03-20',201812,3,2018,20,12,201803,2018),('2018-03-21',201812,3,2018,21,12,201803,2018),('2018-03-22',201812,3,2018,22,12,201803,2018),('2018-03-23',201812,3,2018,23,12,201803,2018),('2018-03-24',201812,3,2018,24,12,201803,2018),('2018-03-25',201813,3,2018,25,13,201803,2018),('2018-03-26',201813,3,2018,26,13,201803,2018),('2018-03-27',201813,3,2018,27,13,201803,2018),('2018-03-28',201813,3,2018,28,13,201803,2018),('2018-03-29',201813,3,2018,29,13,201803,2018),('2018-03-30',201813,3,2018,30,13,201803,2018),('2018-03-31',201813,3,2018,31,13,201803,2018),('2018-04-01',201814,4,2018,1,14,201804,2018),('2018-04-02',201814,4,2018,2,14,201804,2018),('2018-04-03',201814,4,2018,3,14,201804,2018),('2018-04-04',201814,4,2018,4,14,201804,2018),('2018-04-05',201814,4,2018,5,14,201804,2018),('2018-04-06',201814,4,2018,6,14,201804,2018),('2018-04-07',201814,4,2018,7,14,201804,2018),('2018-04-08',201815,4,2018,8,15,201804,2018),('2018-04-09',201815,4,2018,9,15,201804,2018),('2018-04-10',201815,4,2018,10,15,201804,2018),('2018-04-11',201815,4,2018,11,15,201804,2018),('2018-04-12',201815,4,2018,12,15,201804,2018),('2018-04-13',201815,4,2018,13,15,201804,2018),('2018-04-14',201815,4,2018,14,15,201804,2018),('2018-04-15',201816,4,2018,15,16,201804,2018),('2018-04-16',201816,4,2018,16,16,201804,2018),('2018-04-17',201816,4,2018,17,16,201804,2018),('2018-04-18',201816,4,2018,18,16,201804,2018),('2018-04-19',201816,4,2018,19,16,201804,2018),('2018-04-20',201816,4,2018,20,16,201804,2018),('2018-04-21',201816,4,2018,21,16,201804,2018),('2018-04-22',201817,4,2018,22,17,201804,2018),('2018-04-23',201817,4,2018,23,17,201804,2018),('2018-04-24',201817,4,2018,24,17,201804,2018),('2018-04-25',201817,4,2018,25,17,201804,2018),('2018-04-26',201817,4,2018,26,17,201804,2018),('2018-04-27',201817,4,2018,27,17,201804,2018),('2018-04-28',201817,4,2018,28,17,201804,2018),('2018-04-29',201818,4,2018,29,18,201804,2018),('2018-04-30',201818,4,2018,30,18,201804,2018),('2018-05-01',201818,5,2018,1,18,201805,2018),('2018-05-02',201818,5,2018,2,18,201805,2018),('2018-05-03',201818,5,2018,3,18,201805,2018),('2018-05-04',201818,5,2018,4,18,201805,2018),('2018-05-05',201818,5,2018,5,18,201805,2018),('2018-05-06',201819,5,2018,6,19,201805,2018),('2018-05-07',201819,5,2018,7,19,201805,2018),('2018-05-08',201819,5,2018,8,19,201805,2018),('2018-05-09',201819,5,2018,9,19,201805,2018),('2018-05-10',201819,5,2018,10,19,201805,2018),('2018-05-11',201819,5,2018,11,19,201805,2018),('2018-05-12',201819,5,2018,12,19,201805,2018),('2018-05-13',201820,5,2018,13,20,201805,2018),('2018-05-14',201820,5,2018,14,20,201805,2018),('2018-05-15',201820,5,2018,15,20,201805,2018),('2018-05-16',201820,5,2018,16,20,201805,2018),('2018-05-17',201820,5,2018,17,20,201805,2018),('2018-05-18',201820,5,2018,18,20,201805,2018),('2018-05-19',201820,5,2018,19,20,201805,2018),('2018-05-20',201821,5,2018,20,21,201805,2018),('2018-05-21',201821,5,2018,21,21,201805,2018),('2018-05-22',201821,5,2018,22,21,201805,2018),('2018-05-23',201821,5,2018,23,21,201805,2018),('2018-05-24',201821,5,2018,24,21,201805,2018),('2018-05-25',201821,5,2018,25,21,201805,2018),('2018-05-26',201821,5,2018,26,21,201805,2018),('2018-05-27',201822,5,2018,27,22,201805,2018),('2018-05-28',201822,5,2018,28,22,201805,2018),('2018-05-29',201822,5,2018,29,22,201805,2018),('2018-05-30',201822,5,2018,30,22,201805,2018),('2018-05-31',201822,5,2018,31,22,201805,2018),('2018-06-01',201822,6,2018,1,22,201806,2018),('2018-06-02',201822,6,2018,2,22,201806,2018),('2018-06-03',201823,6,2018,3,23,201806,2018),('2018-06-04',201823,6,2018,4,23,201806,2018),('2018-06-05',201823,6,2018,5,23,201806,2018),('2018-06-06',201823,6,2018,6,23,201806,2018),('2018-06-07',201823,6,2018,7,23,201806,2018),('2018-06-08',201823,6,2018,8,23,201806,2018),('2018-06-09',201823,6,2018,9,23,201806,2018),('2018-06-10',201824,6,2018,10,24,201806,2018),('2018-06-11',201824,6,2018,11,24,201806,2018),('2018-06-12',201824,6,2018,12,24,201806,2018),('2018-06-13',201824,6,2018,13,24,201806,2018),('2018-06-14',201824,6,2018,14,24,201806,2018),('2018-06-15',201824,6,2018,15,24,201806,2018),('2018-06-16',201824,6,2018,16,24,201806,2018),('2018-06-17',201825,6,2018,17,25,201806,2018),('2018-06-18',201825,6,2018,18,25,201806,2018),('2018-06-19',201825,6,2018,19,25,201806,2018),('2018-06-20',201825,6,2018,20,25,201806,2018),('2018-06-21',201825,6,2018,21,25,201806,2018),('2018-06-22',201825,6,2018,22,25,201806,2018),('2018-06-23',201825,6,2018,23,25,201806,2018),('2018-06-24',201826,6,2018,24,26,201806,2018),('2018-06-25',201826,6,2018,25,26,201806,2018),('2018-06-26',201826,6,2018,26,26,201806,2018),('2018-06-27',201826,6,2018,27,26,201806,2018),('2018-06-28',201826,6,2018,28,26,201806,2018),('2018-06-29',201826,6,2018,29,26,201806,2018),('2018-06-30',201826,6,2018,30,26,201806,2018),('2018-07-01',201827,7,2018,1,27,201807,2018),('2018-07-02',201827,7,2018,2,27,201807,2018),('2018-07-03',201827,7,2018,3,27,201807,2018),('2018-07-04',201827,7,2018,4,27,201807,2018),('2018-07-05',201827,7,2018,5,27,201807,2018),('2018-07-06',201827,7,2018,6,27,201807,2018),('2018-07-07',201827,7,2018,7,27,201807,2018),('2018-07-08',201828,7,2018,8,28,201807,2018),('2018-07-09',201828,7,2018,9,28,201807,2018),('2018-07-10',201828,7,2018,10,28,201807,2018),('2018-07-11',201828,7,2018,11,28,201807,2018),('2018-07-12',201828,7,2018,12,28,201807,2018),('2018-07-13',201828,7,2018,13,28,201807,2018),('2018-07-14',201828,7,2018,14,28,201807,2018),('2018-07-15',201829,7,2018,15,29,201807,2018),('2018-07-16',201829,7,2018,16,29,201807,2018),('2018-07-17',201829,7,2018,17,29,201807,2018),('2018-07-18',201829,7,2018,18,29,201807,2018),('2018-07-19',201829,7,2018,19,29,201807,2018),('2018-07-20',201829,7,2018,20,29,201807,2018),('2018-07-21',201829,7,2018,21,29,201807,2018),('2018-07-22',201830,7,2018,22,30,201807,2018),('2018-07-23',201830,7,2018,23,30,201807,2018),('2018-07-24',201830,7,2018,24,30,201807,2018),('2018-07-25',201830,7,2018,25,30,201807,2018),('2018-07-26',201830,7,2018,26,30,201807,2018),('2018-07-27',201830,7,2018,27,30,201807,2018),('2018-07-28',201830,7,2018,28,30,201807,2018),('2018-07-29',201831,7,2018,29,31,201807,2018),('2018-07-30',201831,7,2018,30,31,201807,2018),('2018-07-31',201831,7,2018,31,31,201807,2018),('2018-08-01',201831,8,2018,1,31,201808,2018),('2018-08-02',201831,8,2018,2,31,201808,2018),('2018-08-03',201831,8,2018,3,31,201808,2018),('2018-08-04',201831,8,2018,4,31,201808,2018),('2018-08-05',201832,8,2018,5,32,201808,2018),('2018-08-06',201832,8,2018,6,32,201808,2018),('2018-08-07',201832,8,2018,7,32,201808,2018),('2018-08-08',201832,8,2018,8,32,201808,2018),('2018-08-09',201832,8,2018,9,32,201808,2018),('2018-08-10',201832,8,2018,10,32,201808,2018),('2018-08-11',201832,8,2018,11,32,201808,2018),('2018-08-12',201833,8,2018,12,33,201808,2018),('2018-08-13',201833,8,2018,13,33,201808,2018),('2018-08-14',201833,8,2018,14,33,201808,2018),('2018-08-15',201833,8,2018,15,33,201808,2018),('2018-08-16',201833,8,2018,16,33,201808,2018),('2018-08-17',201833,8,2018,17,33,201808,2018),('2018-08-18',201833,8,2018,18,33,201808,2018),('2018-08-19',201834,8,2018,19,34,201808,2018),('2018-08-20',201834,8,2018,20,34,201808,2018),('2018-08-21',201834,8,2018,21,34,201808,2018),('2018-08-22',201834,8,2018,22,34,201808,2018),('2018-08-23',201834,8,2018,23,34,201808,2018),('2018-08-24',201834,8,2018,24,34,201808,2018),('2018-08-25',201834,8,2018,25,34,201808,2018),('2018-08-26',201835,8,2018,26,35,201808,2018),('2018-08-27',201835,8,2018,27,35,201808,2018),('2018-08-28',201835,8,2018,28,35,201808,2018),('2018-08-29',201835,8,2018,29,35,201808,2018),('2018-08-30',201835,8,2018,30,35,201808,2018),('2018-08-31',201835,8,2018,31,35,201808,2018),('2018-09-01',201835,9,2018,1,35,201809,2018),('2018-09-02',201836,9,2018,2,36,201809,2018),('2018-09-03',201836,9,2018,3,36,201809,2018),('2018-09-04',201836,9,2018,4,36,201809,2018),('2018-09-05',201836,9,2018,5,36,201809,2018),('2018-09-06',201836,9,2018,6,36,201809,2018),('2018-09-07',201836,9,2018,7,36,201809,2018),('2018-09-08',201836,9,2018,8,36,201809,2018),('2018-09-09',201837,9,2018,9,37,201809,2018),('2018-09-10',201837,9,2018,10,37,201809,2018),('2018-09-11',201837,9,2018,11,37,201809,2018),('2018-09-12',201837,9,2018,12,37,201809,2018),('2018-09-13',201837,9,2018,13,37,201809,2018),('2018-09-14',201837,9,2018,14,37,201809,2018),('2018-09-15',201837,9,2018,15,37,201809,2018),('2018-09-16',201838,9,2018,16,38,201809,2018),('2018-09-17',201838,9,2018,17,38,201809,2018),('2018-09-18',201838,9,2018,18,38,201809,2018),('2018-09-19',201838,9,2018,19,38,201809,2018),('2018-09-20',201838,9,2018,20,38,201809,2018),('2018-09-21',201838,9,2018,21,38,201809,2018),('2018-09-22',201838,9,2018,22,38,201809,2018),('2018-09-23',201839,9,2018,23,39,201809,2018),('2018-09-24',201839,9,2018,24,39,201809,2018),('2018-09-25',201839,9,2018,25,39,201809,2018),('2018-09-26',201839,9,2018,26,39,201809,2018),('2018-09-27',201839,9,2018,27,39,201809,2018),('2018-09-28',201839,9,2018,28,39,201809,2018),('2018-09-29',201839,9,2018,29,39,201809,2018),('2018-09-30',201840,9,2018,30,40,201809,2018),('2018-10-01',201840,10,2018,1,40,201810,2018),('2018-10-02',201840,10,2018,2,40,201810,2018),('2018-10-03',201840,10,2018,3,40,201810,2018),('2018-10-04',201840,10,2018,4,40,201810,2018),('2018-10-05',201840,10,2018,5,40,201810,2018),('2018-10-06',201840,10,2018,6,40,201810,2018),('2018-10-07',201841,10,2018,7,41,201810,2018),('2018-10-08',201841,10,2018,8,41,201810,2018),('2018-10-09',201841,10,2018,9,41,201810,2018),('2018-10-10',201841,10,2018,10,41,201810,2018),('2018-10-11',201841,10,2018,11,41,201810,2018),('2018-10-12',201841,10,2018,12,41,201810,2018),('2018-10-13',201841,10,2018,13,41,201810,2018),('2018-10-14',201842,10,2018,14,42,201810,2018),('2018-10-15',201842,10,2018,15,42,201810,2018),('2018-10-16',201842,10,2018,16,42,201810,2018),('2018-10-17',201842,10,2018,17,42,201810,2018),('2018-10-18',201842,10,2018,18,42,201810,2018),('2018-10-19',201842,10,2018,19,42,201810,2018),('2018-10-20',201842,10,2018,20,42,201810,2018),('2018-10-21',201843,10,2018,21,43,201810,2018),('2018-10-22',201843,10,2018,22,43,201810,2018),('2018-10-23',201843,10,2018,23,43,201810,2018),('2018-10-24',201843,10,2018,24,43,201810,2018),('2018-10-25',201843,10,2018,25,43,201810,2018),('2018-10-26',201843,10,2018,26,43,201810,2018),('2018-10-27',201843,10,2018,27,43,201810,2018),('2018-10-28',201844,10,2018,28,44,201810,2018),('2018-10-29',201844,10,2018,29,44,201810,2018),('2018-10-30',201844,10,2018,30,44,201810,2018),('2018-10-31',201844,10,2018,31,44,201810,2018),('2018-11-01',201844,11,2018,1,44,201811,2018),('2018-11-02',201844,11,2018,2,44,201811,2018),('2018-11-03',201844,11,2018,3,44,201811,2018),('2018-11-04',201845,11,2018,4,45,201811,2018),('2018-11-05',201845,11,2018,5,45,201811,2018),('2018-11-06',201845,11,2018,6,45,201811,2018),('2018-11-07',201845,11,2018,7,45,201811,2018),('2018-11-08',201845,11,2018,8,45,201811,2018),('2018-11-09',201845,11,2018,9,45,201811,2018),('2018-11-10',201845,11,2018,10,45,201811,2018),('2018-11-11',201846,11,2018,11,46,201811,2018),('2018-11-12',201846,11,2018,12,46,201811,2018),('2018-11-13',201846,11,2018,13,46,201811,2018),('2018-11-14',201846,11,2018,14,46,201811,2018),('2018-11-15',201846,11,2018,15,46,201811,2018),('2018-11-16',201846,11,2018,16,46,201811,2018),('2018-11-17',201846,11,2018,17,46,201811,2018),('2018-11-18',201847,11,2018,18,47,201811,2018),('2018-11-19',201847,11,2018,19,47,201811,2018),('2018-11-20',201847,11,2018,20,47,201811,2018),('2018-11-21',201847,11,2018,21,47,201811,2018),('2018-11-22',201847,11,2018,22,47,201811,2018),('2018-11-23',201847,11,2018,23,47,201811,2018),('2018-11-24',201847,11,2018,24,47,201811,2018),('2018-11-25',201848,11,2018,25,48,201811,2018),('2018-11-26',201848,11,2018,26,48,201811,2018),('2018-11-27',201848,11,2018,27,48,201811,2018),('2018-11-28',201848,11,2018,28,48,201811,2018),('2018-11-29',201848,11,2018,29,48,201811,2018),('2018-11-30',201848,11,2018,30,48,201811,2018),('2018-12-01',201848,12,2018,1,48,201812,2019),('2018-12-02',201849,12,2018,2,49,201812,2019),('2018-12-03',201849,12,2018,3,49,201812,2019),('2018-12-04',201849,12,2018,4,49,201812,2019),('2018-12-05',201849,12,2018,5,49,201812,2019),('2018-12-06',201849,12,2018,6,49,201812,2019),('2018-12-07',201849,12,2018,7,49,201812,2019),('2018-12-08',201849,12,2018,8,49,201812,2019),('2018-12-09',201850,12,2018,9,50,201812,2019),('2018-12-10',201850,12,2018,10,50,201812,2019),('2018-12-11',201850,12,2018,11,50,201812,2019),('2018-12-12',201850,12,2018,12,50,201812,2019),('2018-12-13',201850,12,2018,13,50,201812,2019),('2018-12-14',201850,12,2018,14,50,201812,2019),('2018-12-15',201850,12,2018,15,50,201812,2019),('2018-12-16',201851,12,2018,16,51,201812,2019),('2018-12-17',201851,12,2018,17,51,201812,2019),('2018-12-18',201851,12,2018,18,51,201812,2019),('2018-12-19',201851,12,2018,19,51,201812,2019),('2018-12-20',201851,12,2018,20,51,201812,2019),('2018-12-21',201851,12,2018,21,51,201812,2019),('2018-12-22',201851,12,2018,22,51,201812,2019),('2018-12-23',201852,12,2018,23,52,201812,2019),('2018-12-24',201852,12,2018,24,52,201812,2019),('2018-12-25',201852,12,2018,25,52,201812,2019),('2018-12-26',201852,12,2018,26,52,201812,2019),('2018-12-27',201852,12,2018,27,52,201812,2019),('2018-12-28',201852,12,2018,28,52,201812,2019),('2018-12-29',201852,12,2018,29,52,201812,2019),('2018-12-30',201901,12,2019,30,1,201812,2019),('2018-12-31',201901,12,2019,31,1,201812,2019),('2019-01-01',201901,1,2019,1,1,201901,2019),('2019-01-02',201901,1,2019,2,1,201901,2019),('2019-01-03',201901,1,2019,3,1,201901,2019),('2019-01-04',201901,1,2019,4,1,201901,2019),('2019-01-05',201901,1,2019,5,1,201901,2019),('2019-01-06',201902,1,2019,6,2,201901,2019),('2019-01-07',201902,1,2019,7,2,201901,2019),('2019-01-08',201902,1,2019,8,2,201901,2019),('2019-01-09',201902,1,2019,9,2,201901,2019),('2019-01-10',201902,1,2019,10,2,201901,2019),('2019-01-11',201902,1,2019,11,2,201901,2019),('2019-01-12',201902,1,2019,12,2,201901,2019),('2019-01-13',201903,1,2019,13,3,201901,2019),('2019-01-14',201903,1,2019,14,3,201901,2019),('2019-01-15',201903,1,2019,15,3,201901,2019),('2019-01-16',201903,1,2019,16,3,201901,2019),('2019-01-17',201903,1,2019,17,3,201901,2019),('2019-01-18',201903,1,2019,18,3,201901,2019),('2019-01-19',201903,1,2019,19,3,201901,2019),('2019-01-20',201904,1,2019,20,4,201901,2019),('2019-01-21',201904,1,2019,21,4,201901,2019),('2019-01-22',201904,1,2019,22,4,201901,2019),('2019-01-23',201904,1,2019,23,4,201901,2019),('2019-01-24',201904,1,2019,24,4,201901,2019),('2019-01-25',201904,1,2019,25,4,201901,2019),('2019-01-26',201904,1,2019,26,4,201901,2019),('2019-01-27',201905,1,2019,27,5,201901,2019),('2019-01-28',201905,1,2019,28,5,201901,2019),('2019-01-29',201905,1,2019,29,5,201901,2019),('2019-01-30',201905,1,2019,30,5,201901,2019),('2019-01-31',201905,1,2019,31,5,201901,2019),('2019-02-01',201905,2,2019,1,5,201902,2019),('2019-02-02',201905,2,2019,2,5,201902,2019),('2019-02-03',201906,2,2019,3,6,201902,2019),('2019-02-04',201906,2,2019,4,6,201902,2019),('2019-02-05',201906,2,2019,5,6,201902,2019),('2019-02-06',201906,2,2019,6,6,201902,2019),('2019-02-07',201906,2,2019,7,6,201902,2019),('2019-02-08',201906,2,2019,8,6,201902,2019),('2019-02-09',201906,2,2019,9,6,201902,2019),('2019-02-10',201907,2,2019,10,7,201902,2019),('2019-02-11',201907,2,2019,11,7,201902,2019),('2019-02-12',201907,2,2019,12,7,201902,2019),('2019-02-13',201907,2,2019,13,7,201902,2019),('2019-02-14',201907,2,2019,14,7,201902,2019),('2019-02-15',201907,2,2019,15,7,201902,2019),('2019-02-16',201907,2,2019,16,7,201902,2019),('2019-02-17',201908,2,2019,17,8,201902,2019),('2019-02-18',201908,2,2019,18,8,201902,2019),('2019-02-19',201908,2,2019,19,8,201902,2019),('2019-02-20',201908,2,2019,20,8,201902,2019),('2019-02-21',201908,2,2019,21,8,201902,2019),('2019-02-22',201908,2,2019,22,8,201902,2019),('2019-02-23',201908,2,2019,23,8,201902,2019),('2019-02-24',201909,2,2019,24,9,201902,2019),('2019-02-25',201909,2,2019,25,9,201902,2019),('2019-02-26',201909,2,2019,26,9,201902,2019),('2019-02-27',201909,2,2019,27,9,201902,2019),('2019-02-28',201909,2,2019,28,9,201902,2019),('2019-03-01',201909,3,2019,1,9,201903,2019),('2019-03-02',201909,3,2019,2,9,201903,2019),('2019-03-03',201910,3,2019,3,10,201903,2019),('2019-03-04',201910,3,2019,4,10,201903,2019),('2019-03-05',201910,3,2019,5,10,201903,2019),('2019-03-06',201910,3,2019,6,10,201903,2019),('2019-03-07',201910,3,2019,7,10,201903,2019),('2019-03-08',201910,3,2019,8,10,201903,2019),('2019-03-09',201910,3,2019,9,10,201903,2019),('2019-03-10',201911,3,2019,10,11,201903,2019),('2019-03-11',201911,3,2019,11,11,201903,2019),('2019-03-12',201911,3,2019,12,11,201903,2019),('2019-03-13',201911,3,2019,13,11,201903,2019),('2019-03-14',201911,3,2019,14,11,201903,2019),('2019-03-15',201911,3,2019,15,11,201903,2019),('2019-03-16',201911,3,2019,16,11,201903,2019),('2019-03-17',201912,3,2019,17,12,201903,2019),('2019-03-18',201912,3,2019,18,12,201903,2019),('2019-03-19',201912,3,2019,19,12,201903,2019),('2019-03-20',201912,3,2019,20,12,201903,2019),('2019-03-21',201912,3,2019,21,12,201903,2019),('2019-03-22',201912,3,2019,22,12,201903,2019),('2019-03-23',201912,3,2019,23,12,201903,2019),('2019-03-24',201913,3,2019,24,13,201903,2019),('2019-03-25',201913,3,2019,25,13,201903,2019),('2019-03-26',201913,3,2019,26,13,201903,2019),('2019-03-27',201913,3,2019,27,13,201903,2019),('2019-03-28',201913,3,2019,28,13,201903,2019),('2019-03-29',201913,3,2019,29,13,201903,2019),('2019-03-30',201913,3,2019,30,13,201903,2019),('2019-03-31',201914,3,2019,31,14,201903,2019),('2019-04-01',201914,4,2019,1,14,201904,2019),('2019-04-02',201914,4,2019,2,14,201904,2019),('2019-04-03',201914,4,2019,3,14,201904,2019),('2019-04-04',201914,4,2019,4,14,201904,2019),('2019-04-05',201914,4,2019,5,14,201904,2019),('2019-04-06',201914,4,2019,6,14,201904,2019),('2019-04-07',201915,4,2019,7,15,201904,2019),('2019-04-08',201915,4,2019,8,15,201904,2019),('2019-04-09',201915,4,2019,9,15,201904,2019),('2019-04-10',201915,4,2019,10,15,201904,2019),('2019-04-11',201915,4,2019,11,15,201904,2019),('2019-04-12',201915,4,2019,12,15,201904,2019),('2019-04-13',201915,4,2019,13,15,201904,2019),('2019-04-14',201916,4,2019,14,16,201904,2019),('2019-04-15',201916,4,2019,15,16,201904,2019),('2019-04-16',201916,4,2019,16,16,201904,2019),('2019-04-17',201916,4,2019,17,16,201904,2019),('2019-04-18',201916,4,2019,18,16,201904,2019),('2019-04-19',201916,4,2019,19,16,201904,2019),('2019-04-20',201916,4,2019,20,16,201904,2019),('2019-04-21',201917,4,2019,21,17,201904,2019),('2019-04-22',201917,4,2019,22,17,201904,2019),('2019-04-23',201917,4,2019,23,17,201904,2019),('2019-04-24',201917,4,2019,24,17,201904,2019),('2019-04-25',201917,4,2019,25,17,201904,2019),('2019-04-26',201917,4,2019,26,17,201904,2019),('2019-04-27',201917,4,2019,27,17,201904,2019),('2019-04-28',201918,4,2019,28,18,201904,2019),('2019-04-29',201918,4,2019,29,18,201904,2019),('2019-04-30',201918,4,2019,30,18,201904,2019),('2019-05-01',201918,5,2019,1,18,201905,2019),('2019-05-02',201918,5,2019,2,18,201905,2019),('2019-05-03',201918,5,2019,3,18,201905,2019),('2019-05-04',201918,5,2019,4,18,201905,2019),('2019-05-05',201919,5,2019,5,19,201905,2019),('2019-05-06',201919,5,2019,6,19,201905,2019),('2019-05-07',201919,5,2019,7,19,201905,2019),('2019-05-08',201919,5,2019,8,19,201905,2019),('2019-05-09',201919,5,2019,9,19,201905,2019),('2019-05-10',201919,5,2019,10,19,201905,2019),('2019-05-11',201919,5,2019,11,19,201905,2019),('2019-05-12',201920,5,2019,12,20,201905,2019),('2019-05-13',201920,5,2019,13,20,201905,2019),('2019-05-14',201920,5,2019,14,20,201905,2019),('2019-05-15',201920,5,2019,15,20,201905,2019),('2019-05-16',201920,5,2019,16,20,201905,2019),('2019-05-17',201920,5,2019,17,20,201905,2019),('2019-05-18',201920,5,2019,18,20,201905,2019),('2019-05-19',201921,5,2019,19,21,201905,2019),('2019-05-20',201921,5,2019,20,21,201905,2019),('2019-05-21',201921,5,2019,21,21,201905,2019),('2019-05-22',201921,5,2019,22,21,201905,2019),('2019-05-23',201921,5,2019,23,21,201905,2019),('2019-05-24',201921,5,2019,24,21,201905,2019),('2019-05-25',201921,5,2019,25,21,201905,2019),('2019-05-26',201922,5,2019,26,22,201905,2019),('2019-05-27',201922,5,2019,27,22,201905,2019),('2019-05-28',201922,5,2019,28,22,201905,2019),('2019-05-29',201922,5,2019,29,22,201905,2019),('2019-05-30',201922,5,2019,30,22,201905,2019),('2019-05-31',201922,5,2019,31,22,201905,2019),('2019-06-01',201922,6,2019,1,22,201906,2019),('2019-06-02',201923,6,2019,2,23,201906,2019),('2019-06-03',201923,6,2019,3,23,201906,2019),('2019-06-04',201923,6,2019,4,23,201906,2019),('2019-06-05',201923,6,2019,5,23,201906,2019),('2019-06-06',201923,6,2019,6,23,201906,2019),('2019-06-07',201923,6,2019,7,23,201906,2019),('2019-06-08',201923,6,2019,8,23,201906,2019),('2019-06-09',201924,6,2019,9,24,201906,2019),('2019-06-10',201924,6,2019,10,24,201906,2019),('2019-06-11',201924,6,2019,11,24,201906,2019),('2019-06-12',201924,6,2019,12,24,201906,2019),('2019-06-13',201924,6,2019,13,24,201906,2019),('2019-06-14',201924,6,2019,14,24,201906,2019),('2019-06-15',201924,6,2019,15,24,201906,2019),('2019-06-16',201925,6,2019,16,25,201906,2019),('2019-06-17',201925,6,2019,17,25,201906,2019),('2019-06-18',201925,6,2019,18,25,201906,2019),('2019-06-19',201925,6,2019,19,25,201906,2019),('2019-06-20',201925,6,2019,20,25,201906,2019),('2019-06-21',201925,6,2019,21,25,201906,2019),('2019-06-22',201925,6,2019,22,25,201906,2019),('2019-06-23',201926,6,2019,23,26,201906,2019),('2019-06-24',201926,6,2019,24,26,201906,2019),('2019-06-25',201926,6,2019,25,26,201906,2019),('2019-06-26',201926,6,2019,26,26,201906,2019),('2019-06-27',201926,6,2019,27,26,201906,2019),('2019-06-28',201926,6,2019,28,26,201906,2019),('2019-06-29',201926,6,2019,29,26,201906,2019),('2019-06-30',201927,6,2019,30,27,201906,2019),('2019-07-01',201927,7,2019,1,27,201907,2019),('2019-07-02',201927,7,2019,2,27,201907,2019),('2019-07-03',201927,7,2019,3,27,201907,2019),('2019-07-04',201927,7,2019,4,27,201907,2019),('2019-07-05',201927,7,2019,5,27,201907,2019),('2019-07-06',201927,7,2019,6,27,201907,2019),('2019-07-07',201928,7,2019,7,28,201907,2019),('2019-07-08',201928,7,2019,8,28,201907,2019),('2019-07-09',201928,7,2019,9,28,201907,2019),('2019-07-10',201928,7,2019,10,28,201907,2019),('2019-07-11',201928,7,2019,11,28,201907,2019),('2019-07-12',201928,7,2019,12,28,201907,2019),('2019-07-13',201928,7,2019,13,28,201907,2019),('2019-07-14',201929,7,2019,14,29,201907,2019),('2019-07-15',201929,7,2019,15,29,201907,2019),('2019-07-16',201929,7,2019,16,29,201907,2019),('2019-07-17',201929,7,2019,17,29,201907,2019),('2019-07-18',201929,7,2019,18,29,201907,2019),('2019-07-19',201929,7,2019,19,29,201907,2019),('2019-07-20',201929,7,2019,20,29,201907,2019),('2019-07-21',201930,7,2019,21,30,201907,2019),('2019-07-22',201930,7,2019,22,30,201907,2019),('2019-07-23',201930,7,2019,23,30,201907,2019),('2019-07-24',201930,7,2019,24,30,201907,2019),('2019-07-25',201930,7,2019,25,30,201907,2019),('2019-07-26',201930,7,2019,26,30,201907,2019),('2019-07-27',201930,7,2019,27,30,201907,2019),('2019-07-28',201931,7,2019,28,31,201907,2019),('2019-07-29',201931,7,2019,29,31,201907,2019),('2019-07-30',201931,7,2019,30,31,201907,2019),('2019-07-31',201931,7,2019,31,31,201907,2019),('2019-08-01',201931,8,2019,1,31,201908,2019),('2019-08-02',201931,8,2019,2,31,201908,2019),('2019-08-03',201931,8,2019,3,31,201908,2019),('2019-08-04',201932,8,2019,4,32,201908,2019),('2019-08-05',201932,8,2019,5,32,201908,2019),('2019-08-06',201932,8,2019,6,32,201908,2019),('2019-08-07',201932,8,2019,7,32,201908,2019),('2019-08-08',201932,8,2019,8,32,201908,2019),('2019-08-09',201932,8,2019,9,32,201908,2019),('2019-08-10',201932,8,2019,10,32,201908,2019),('2019-08-11',201933,8,2019,11,33,201908,2019),('2019-08-12',201933,8,2019,12,33,201908,2019),('2019-08-13',201933,8,2019,13,33,201908,2019),('2019-08-14',201933,8,2019,14,33,201908,2019),('2019-08-15',201933,8,2019,15,33,201908,2019),('2019-08-16',201933,8,2019,16,33,201908,2019),('2019-08-17',201933,8,2019,17,33,201908,2019),('2019-08-18',201934,8,2019,18,34,201908,2019),('2019-08-19',201934,8,2019,19,34,201908,2019),('2019-08-20',201934,8,2019,20,34,201908,2019),('2019-08-21',201934,8,2019,21,34,201908,2019),('2019-08-22',201934,8,2019,22,34,201908,2019),('2019-08-23',201934,8,2019,23,34,201908,2019),('2019-08-24',201934,8,2019,24,34,201908,2019),('2019-08-25',201935,8,2019,25,35,201908,2019),('2019-08-26',201935,8,2019,26,35,201908,2019),('2019-08-27',201935,8,2019,27,35,201908,2019),('2019-08-28',201935,8,2019,28,35,201908,2019),('2019-08-29',201935,8,2019,29,35,201908,2019),('2019-08-30',201935,8,2019,30,35,201908,2019),('2019-08-31',201935,8,2019,31,35,201908,2019),('2019-09-01',201936,9,2019,1,36,201909,2019),('2019-09-02',201936,9,2019,2,36,201909,2019),('2019-09-03',201936,9,2019,3,36,201909,2019),('2019-09-04',201936,9,2019,4,36,201909,2019),('2019-09-05',201936,9,2019,5,36,201909,2019),('2019-09-06',201936,9,2019,6,36,201909,2019),('2019-09-07',201936,9,2019,7,36,201909,2019),('2019-09-08',201937,9,2019,8,37,201909,2019),('2019-09-09',201937,9,2019,9,37,201909,2019),('2019-09-10',201937,9,2019,10,37,201909,2019),('2019-09-11',201937,9,2019,11,37,201909,2019),('2019-09-12',201937,9,2019,12,37,201909,2019),('2019-09-13',201937,9,2019,13,37,201909,2019),('2019-09-14',201937,9,2019,14,37,201909,2019),('2019-09-15',201938,9,2019,15,38,201909,2019),('2019-09-16',201938,9,2019,16,38,201909,2019),('2019-09-17',201938,9,2019,17,38,201909,2019),('2019-09-18',201938,9,2019,18,38,201909,2019),('2019-09-19',201938,9,2019,19,38,201909,2019),('2019-09-20',201938,9,2019,20,38,201909,2019),('2019-09-21',201938,9,2019,21,38,201909,2019),('2019-09-22',201939,9,2019,22,39,201909,2019),('2019-09-23',201939,9,2019,23,39,201909,2019),('2019-09-24',201939,9,2019,24,39,201909,2019),('2019-09-25',201939,9,2019,25,39,201909,2019),('2019-09-26',201939,9,2019,26,39,201909,2019),('2019-09-27',201939,9,2019,27,39,201909,2019),('2019-09-28',201939,9,2019,28,39,201909,2019),('2019-09-29',201940,9,2019,29,40,201909,2019),('2019-09-30',201940,9,2019,30,40,201909,2019),('2019-10-01',201940,10,2019,1,40,201910,2019),('2019-10-02',201940,10,2019,2,40,201910,2019),('2019-10-03',201940,10,2019,3,40,201910,2019),('2019-10-04',201940,10,2019,4,40,201910,2019),('2019-10-05',201940,10,2019,5,40,201910,2019),('2019-10-06',201941,10,2019,6,41,201910,2019),('2019-10-07',201941,10,2019,7,41,201910,2019),('2019-10-08',201941,10,2019,8,41,201910,2019),('2019-10-09',201941,10,2019,9,41,201910,2019),('2019-10-10',201941,10,2019,10,41,201910,2019),('2019-10-11',201941,10,2019,11,41,201910,2019),('2019-10-12',201941,10,2019,12,41,201910,2019),('2019-10-13',201942,10,2019,13,42,201910,2019),('2019-10-14',201942,10,2019,14,42,201910,2019),('2019-10-15',201942,10,2019,15,42,201910,2019),('2019-10-16',201942,10,2019,16,42,201910,2019),('2019-10-17',201942,10,2019,17,42,201910,2019),('2019-10-18',201942,10,2019,18,42,201910,2019),('2019-10-19',201942,10,2019,19,42,201910,2019),('2019-10-20',201943,10,2019,20,43,201910,2019),('2019-10-21',201943,10,2019,21,43,201910,2019),('2019-10-22',201943,10,2019,22,43,201910,2019),('2019-10-23',201943,10,2019,23,43,201910,2019),('2019-10-24',201943,10,2019,24,43,201910,2019),('2019-10-25',201943,10,2019,25,43,201910,2019),('2019-10-26',201943,10,2019,26,43,201910,2019),('2019-10-27',201944,10,2019,27,44,201910,2019),('2019-10-28',201944,10,2019,28,44,201910,2019),('2019-10-29',201944,10,2019,29,44,201910,2019),('2019-10-30',201944,10,2019,30,44,201910,2019),('2019-10-31',201944,10,2019,31,44,201910,2019),('2019-11-01',201944,11,2019,1,44,201911,2019),('2019-11-02',201944,11,2019,2,44,201911,2019),('2019-11-03',201945,11,2019,3,45,201911,2019),('2019-11-04',201945,11,2019,4,45,201911,2019),('2019-11-05',201945,11,2019,5,45,201911,2019),('2019-11-06',201945,11,2019,6,45,201911,2019),('2019-11-07',201945,11,2019,7,45,201911,2019),('2019-11-08',201945,11,2019,8,45,201911,2019),('2019-11-09',201945,11,2019,9,45,201911,2019),('2019-11-10',201946,11,2019,10,46,201911,2019),('2019-11-11',201946,11,2019,11,46,201911,2019),('2019-11-12',201946,11,2019,12,46,201911,2019),('2019-11-13',201946,11,2019,13,46,201911,2019),('2019-11-14',201946,11,2019,14,46,201911,2019),('2019-11-15',201946,11,2019,15,46,201911,2019),('2019-11-16',201946,11,2019,16,46,201911,2019),('2019-11-17',201947,11,2019,17,47,201911,2019),('2019-11-18',201947,11,2019,18,47,201911,2019),('2019-11-19',201947,11,2019,19,47,201911,2019),('2019-11-20',201947,11,2019,20,47,201911,2019),('2019-11-21',201947,11,2019,21,47,201911,2019),('2019-11-22',201947,11,2019,22,47,201911,2019),('2019-11-23',201947,11,2019,23,47,201911,2019),('2019-11-24',201948,11,2019,24,48,201911,2019),('2019-11-25',201948,11,2019,25,48,201911,2019),('2019-11-26',201948,11,2019,26,48,201911,2019),('2019-11-27',201948,11,2019,27,48,201911,2019),('2019-11-28',201948,11,2019,28,48,201911,2019),('2019-11-29',201948,11,2019,29,48,201911,2019),('2019-11-30',201948,11,2019,30,48,201911,2019),('2019-12-01',201949,12,2019,1,49,201912,2020),('2019-12-02',201949,12,2019,2,49,201912,2020),('2019-12-03',201949,12,2019,3,49,201912,2020),('2019-12-04',201949,12,2019,4,49,201912,2020),('2019-12-05',201949,12,2019,5,49,201912,2020),('2019-12-06',201949,12,2019,6,49,201912,2020),('2019-12-07',201949,12,2019,7,49,201912,2020),('2019-12-08',201950,12,2019,8,50,201912,2020),('2019-12-09',201950,12,2019,9,50,201912,2020),('2019-12-10',201950,12,2019,10,50,201912,2020),('2019-12-11',201950,12,2019,11,50,201912,2020),('2019-12-12',201950,12,2019,12,50,201912,2020),('2019-12-13',201950,12,2019,13,50,201912,2020),('2019-12-14',201950,12,2019,14,50,201912,2020),('2019-12-15',201951,12,2019,15,51,201912,2020),('2019-12-16',201951,12,2019,16,51,201912,2020),('2019-12-17',201951,12,2019,17,51,201912,2020),('2019-12-18',201951,12,2019,18,51,201912,2020),('2019-12-19',201951,12,2019,19,51,201912,2020),('2019-12-20',201951,12,2019,20,51,201912,2020),('2019-12-21',201951,12,2019,21,51,201912,2020),('2019-12-22',201952,12,2019,22,52,201912,2020),('2019-12-23',201952,12,2019,23,52,201912,2020),('2019-12-24',201952,12,2019,24,52,201912,2020),('2019-12-25',201952,12,2019,25,52,201912,2020),('2019-12-26',201952,12,2019,26,52,201912,2020),('2019-12-27',201952,12,2019,27,52,201912,2020),('2019-12-28',201952,12,2019,28,52,201912,2020),('2019-12-29',201953,12,2019,29,1,201912,2020),('2019-12-30',201953,12,2019,30,1,201912,2020),('2019-12-31',201953,12,2019,31,1,201912,2020),('2020-01-01',201953,1,2020,1,1,202001,2020),('2020-01-02',201953,1,2020,2,1,202001,2020),('2020-01-03',201953,1,2020,3,1,202001,2020),('2020-01-04',201953,1,2020,4,1,202001,2020),('2020-01-05',202001,1,2020,5,2,202001,2020),('2020-01-06',202001,1,2020,6,2,202001,2020),('2020-01-07',202001,1,2020,7,2,202001,2020),('2020-01-08',202001,1,2020,8,2,202001,2020),('2020-01-09',202001,1,2020,9,2,202001,2020),('2020-01-10',202001,1,2020,10,2,202001,2020),('2020-01-11',202001,1,2020,11,2,202001,2020),('2020-01-12',202002,1,2020,12,3,202001,2020),('2020-01-13',202002,1,2020,13,3,202001,2020),('2020-01-14',202002,1,2020,14,3,202001,2020),('2020-01-15',202002,1,2020,15,3,202001,2020),('2020-01-16',202002,1,2020,16,3,202001,2020),('2020-01-17',202002,1,2020,17,3,202001,2020),('2020-01-18',202002,1,2020,18,3,202001,2020),('2020-01-19',202003,1,2020,19,4,202001,2020),('2020-01-20',202003,1,2020,20,4,202001,2020),('2020-01-21',202003,1,2020,21,4,202001,2020),('2020-01-22',202003,1,2020,22,4,202001,2020),('2020-01-23',202003,1,2020,23,4,202001,2020),('2020-01-24',202003,1,2020,24,4,202001,2020),('2020-01-25',202003,1,2020,25,4,202001,2020),('2020-01-26',202004,1,2020,26,5,202001,2020),('2020-01-27',202004,1,2020,27,5,202001,2020),('2020-01-28',202004,1,2020,28,5,202001,2020),('2020-01-29',202004,1,2020,29,5,202001,2020),('2020-01-30',202004,1,2020,30,5,202001,2020),('2020-01-31',202004,1,2020,31,5,202001,2020),('2020-02-01',202004,2,2020,1,5,202002,2020),('2020-02-02',202005,2,2020,2,6,202002,2020),('2020-02-03',202005,2,2020,3,6,202002,2020),('2020-02-04',202005,2,2020,4,6,202002,2020),('2020-02-05',202005,2,2020,5,6,202002,2020),('2020-02-06',202005,2,2020,6,6,202002,2020),('2020-02-07',202005,2,2020,7,6,202002,2020),('2020-02-08',202005,2,2020,8,6,202002,2020),('2020-02-09',202006,2,2020,9,7,202002,2020),('2020-02-10',202006,2,2020,10,7,202002,2020),('2020-02-11',202006,2,2020,11,7,202002,2020),('2020-02-12',202006,2,2020,12,7,202002,2020),('2020-02-13',202006,2,2020,13,7,202002,2020),('2020-02-14',202006,2,2020,14,7,202002,2020),('2020-02-15',202006,2,2020,15,7,202002,2020),('2020-02-16',202007,2,2020,16,8,202002,2020),('2020-02-17',202007,2,2020,17,8,202002,2020),('2020-02-18',202007,2,2020,18,8,202002,2020),('2020-02-19',202007,2,2020,19,8,202002,2020),('2020-02-20',202007,2,2020,20,8,202002,2020),('2020-02-21',202007,2,2020,21,8,202002,2020),('2020-02-22',202007,2,2020,22,8,202002,2020),('2020-02-23',202008,2,2020,23,9,202002,2020),('2020-02-24',202008,2,2020,24,9,202002,2020),('2020-02-25',202008,2,2020,25,9,202002,2020),('2020-02-26',202008,2,2020,26,9,202002,2020),('2020-02-27',202008,2,2020,27,9,202002,2020),('2020-02-28',202008,2,2020,28,9,202002,2020),('2020-02-29',202008,2,2020,29,9,202002,2020),('2020-03-01',202009,3,2020,1,10,202003,2020),('2020-03-02',202009,3,2020,2,10,202003,2020),('2020-03-03',202009,3,2020,3,10,202003,2020),('2020-03-04',202009,3,2020,4,10,202003,2020),('2020-03-05',202009,3,2020,5,10,202003,2020),('2020-03-06',202009,3,2020,6,10,202003,2020),('2020-03-07',202009,3,2020,7,10,202003,2020),('2020-03-08',202010,3,2020,8,11,202003,2020),('2020-03-09',202010,3,2020,9,11,202003,2020),('2020-03-10',202010,3,2020,10,11,202003,2020),('2020-03-11',202010,3,2020,11,11,202003,2020),('2020-03-12',202010,3,2020,12,11,202003,2020),('2020-03-13',202010,3,2020,13,11,202003,2020),('2020-03-14',202010,3,2020,14,11,202003,2020),('2020-03-15',202011,3,2020,15,12,202003,2020),('2020-03-16',202011,3,2020,16,12,202003,2020),('2020-03-17',202011,3,2020,17,12,202003,2020),('2020-03-18',202011,3,2020,18,12,202003,2020),('2020-03-19',202011,3,2020,19,12,202003,2020),('2020-03-20',202011,3,2020,20,12,202003,2020),('2020-03-21',202011,3,2020,21,12,202003,2020),('2020-03-22',202012,3,2020,22,13,202003,2020),('2020-03-23',202012,3,2020,23,13,202003,2020),('2020-03-24',202012,3,2020,24,13,202003,2020),('2020-03-25',202012,3,2020,25,13,202003,2020),('2020-03-26',202012,3,2020,26,13,202003,2020),('2020-03-27',202012,3,2020,27,13,202003,2020),('2020-03-28',202012,3,2020,28,13,202003,2020),('2020-03-29',202013,3,2020,29,14,202003,2020),('2020-03-30',202013,3,2020,30,14,202003,2020),('2020-03-31',202013,3,2020,31,14,202003,2020),('2020-04-01',202013,4,2020,1,14,202004,2020),('2020-04-02',202013,4,2020,2,14,202004,2020),('2020-04-03',202013,4,2020,3,14,202004,2020),('2020-04-04',202013,4,2020,4,14,202004,2020),('2020-04-05',202014,4,2020,5,15,202004,2020),('2020-04-06',202014,4,2020,6,15,202004,2020),('2020-04-07',202014,4,2020,7,15,202004,2020),('2020-04-08',202014,4,2020,8,15,202004,2020),('2020-04-09',202014,4,2020,9,15,202004,2020),('2020-04-10',202014,4,2020,10,15,202004,2020),('2020-04-11',202014,4,2020,11,15,202004,2020),('2020-04-12',202015,4,2020,12,16,202004,2020),('2020-04-13',202015,4,2020,13,16,202004,2020),('2020-04-14',202015,4,2020,14,16,202004,2020),('2020-04-15',202015,4,2020,15,16,202004,2020),('2020-04-16',202015,4,2020,16,16,202004,2020),('2020-04-17',202015,4,2020,17,16,202004,2020),('2020-04-18',202015,4,2020,18,16,202004,2020),('2020-04-19',202016,4,2020,19,17,202004,2020),('2020-04-20',202016,4,2020,20,17,202004,2020),('2020-04-21',202016,4,2020,21,17,202004,2020),('2020-04-22',202016,4,2020,22,17,202004,2020),('2020-04-23',202016,4,2020,23,17,202004,2020),('2020-04-24',202016,4,2020,24,17,202004,2020),('2020-04-25',202016,4,2020,25,17,202004,2020),('2020-04-26',202017,4,2020,26,18,202004,2020),('2020-04-27',202017,4,2020,27,18,202004,2020),('2020-04-28',202017,4,2020,28,18,202004,2020),('2020-04-29',202017,4,2020,29,18,202004,2020),('2020-04-30',202017,4,2020,30,18,202004,2020),('2020-05-01',202017,5,2020,1,18,202005,2020),('2020-05-02',202017,5,2020,2,18,202005,2020),('2020-05-03',202018,5,2020,3,19,202005,2020),('2020-05-04',202018,5,2020,4,19,202005,2020),('2020-05-05',202018,5,2020,5,19,202005,2020),('2020-05-06',202018,5,2020,6,19,202005,2020),('2020-05-07',202018,5,2020,7,19,202005,2020),('2020-05-08',202018,5,2020,8,19,202005,2020),('2020-05-09',202018,5,2020,9,19,202005,2020),('2020-05-10',202019,5,2020,10,20,202005,2020),('2020-05-11',202019,5,2020,11,20,202005,2020),('2020-05-12',202019,5,2020,12,20,202005,2020),('2020-05-13',202019,5,2020,13,20,202005,2020),('2020-05-14',202019,5,2020,14,20,202005,2020),('2020-05-15',202019,5,2020,15,20,202005,2020),('2020-05-16',202019,5,2020,16,20,202005,2020),('2020-05-17',202020,5,2020,17,21,202005,2020),('2020-05-18',202020,5,2020,18,21,202005,2020),('2020-05-19',202020,5,2020,19,21,202005,2020),('2020-05-20',202020,5,2020,20,21,202005,2020),('2020-05-21',202020,5,2020,21,21,202005,2020),('2020-05-22',202020,5,2020,22,21,202005,2020),('2020-05-23',202020,5,2020,23,21,202005,2020),('2020-05-24',202021,5,2020,24,22,202005,2020),('2020-05-25',202021,5,2020,25,22,202005,2020),('2020-05-26',202021,5,2020,26,22,202005,2020),('2020-05-27',202021,5,2020,27,22,202005,2020),('2020-05-28',202021,5,2020,28,22,202005,2020),('2020-05-29',202021,5,2020,29,22,202005,2020),('2020-05-30',202021,5,2020,30,22,202005,2020),('2020-05-31',202022,5,2020,31,23,202005,2020),('2020-06-01',202022,6,2020,1,23,202006,2020),('2020-06-02',202022,6,2020,2,23,202006,2020),('2020-06-03',202022,6,2020,3,23,202006,2020),('2020-06-04',202022,6,2020,4,23,202006,2020),('2020-06-05',202022,6,2020,5,23,202006,2020),('2020-06-06',202022,6,2020,6,23,202006,2020),('2020-06-07',202023,6,2020,7,24,202006,2020),('2020-06-08',202023,6,2020,8,24,202006,2020),('2020-06-09',202023,6,2020,9,24,202006,2020),('2020-06-10',202023,6,2020,10,24,202006,2020),('2020-06-11',202023,6,2020,11,24,202006,2020),('2020-06-12',202023,6,2020,12,24,202006,2020),('2020-06-13',202023,6,2020,13,24,202006,2020),('2020-06-14',202024,6,2020,14,25,202006,2020),('2020-06-15',202024,6,2020,15,25,202006,2020),('2020-06-16',202024,6,2020,16,25,202006,2020),('2020-06-17',202024,6,2020,17,25,202006,2020),('2020-06-18',202024,6,2020,18,25,202006,2020),('2020-06-19',202024,6,2020,19,25,202006,2020),('2020-06-20',202024,6,2020,20,25,202006,2020),('2020-06-21',202025,6,2020,21,26,202006,2020),('2020-06-22',202025,6,2020,22,26,202006,2020),('2020-06-23',202025,6,2020,23,26,202006,2020),('2020-06-24',202025,6,2020,24,26,202006,2020),('2020-06-25',202025,6,2020,25,26,202006,2020),('2020-06-26',202025,6,2020,26,26,202006,2020),('2020-06-27',202025,6,2020,27,26,202006,2020),('2020-06-28',202026,6,2020,28,27,202006,2020),('2020-06-29',202026,6,2020,29,27,202006,2020),('2020-06-30',202026,6,2020,30,27,202006,2020),('2020-07-01',202026,7,2020,1,27,202007,2020),('2020-07-02',202026,7,2020,2,27,202007,2020),('2020-07-03',202026,7,2020,3,27,202007,2020),('2020-07-04',202026,7,2020,4,27,202007,2020),('2020-07-05',202027,7,2020,5,28,202007,2020),('2020-07-06',202027,7,2020,6,28,202007,2020),('2020-07-07',202027,7,2020,7,28,202007,2020),('2020-07-08',202027,7,2020,8,28,202007,2020),('2020-07-09',202027,7,2020,9,28,202007,2020),('2020-07-10',202027,7,2020,10,28,202007,2020),('2020-07-11',202027,7,2020,11,28,202007,2020),('2020-07-12',202028,7,2020,12,29,202007,2020),('2020-07-13',202028,7,2020,13,29,202007,2020),('2020-07-14',202028,7,2020,14,29,202007,2020),('2020-07-15',202028,7,2020,15,29,202007,2020),('2020-07-16',202028,7,2020,16,29,202007,2020),('2020-07-17',202028,7,2020,17,29,202007,2020),('2020-07-18',202028,7,2020,18,29,202007,2020),('2020-07-19',202029,7,2020,19,30,202007,2020),('2020-07-20',202029,7,2020,20,30,202007,2020),('2020-07-21',202029,7,2020,21,30,202007,2020),('2020-07-22',202029,7,2020,22,30,202007,2020),('2020-07-23',202029,7,2020,23,30,202007,2020),('2020-07-24',202029,7,2020,24,30,202007,2020),('2020-07-25',202029,7,2020,25,30,202007,2020),('2020-07-26',202030,7,2020,26,31,202007,2020),('2020-07-27',202030,7,2020,27,31,202007,2020),('2020-07-28',202030,7,2020,28,31,202007,2020),('2020-07-29',202030,7,2020,29,31,202007,2020),('2020-07-30',202030,7,2020,30,31,202007,2020),('2020-07-31',202030,7,2020,31,31,202007,2020),('2020-08-01',202030,8,2020,1,31,202008,2020),('2020-08-02',202031,8,2020,2,32,202008,2020),('2020-08-03',202031,8,2020,3,32,202008,2020),('2020-08-04',202031,8,2020,4,32,202008,2020),('2020-08-05',202031,8,2020,5,32,202008,2020),('2020-08-06',202031,8,2020,6,32,202008,2020),('2020-08-07',202031,8,2020,7,32,202008,2020),('2020-08-08',202031,8,2020,8,32,202008,2020),('2020-08-09',202032,8,2020,9,33,202008,2020),('2020-08-10',202032,8,2020,10,33,202008,2020),('2020-08-11',202032,8,2020,11,33,202008,2020),('2020-08-12',202032,8,2020,12,33,202008,2020),('2020-08-13',202032,8,2020,13,33,202008,2020),('2020-08-14',202032,8,2020,14,33,202008,2020),('2020-08-15',202032,8,2020,15,33,202008,2020),('2020-08-16',202033,8,2020,16,34,202008,2020),('2020-08-17',202033,8,2020,17,34,202008,2020),('2020-08-18',202033,8,2020,18,34,202008,2020),('2020-08-19',202033,8,2020,19,34,202008,2020),('2020-08-20',202033,8,2020,20,34,202008,2020),('2020-08-21',202033,8,2020,21,34,202008,2020),('2020-08-22',202033,8,2020,22,34,202008,2020),('2020-08-23',202034,8,2020,23,35,202008,2020),('2020-08-24',202034,8,2020,24,35,202008,2020),('2020-08-25',202034,8,2020,25,35,202008,2020),('2020-08-26',202034,8,2020,26,35,202008,2020),('2020-08-27',202034,8,2020,27,35,202008,2020),('2020-08-28',202034,8,2020,28,35,202008,2020),('2020-08-29',202034,8,2020,29,35,202008,2020),('2020-08-30',202035,8,2020,30,36,202008,2020),('2020-08-31',202035,8,2020,31,36,202008,2020),('2020-09-01',202035,9,2020,1,36,202009,2020),('2020-09-02',202035,9,2020,2,36,202009,2020),('2020-09-03',202035,9,2020,3,36,202009,2020),('2020-09-04',202035,9,2020,4,36,202009,2020),('2020-09-05',202035,9,2020,5,36,202009,2020),('2020-09-06',202036,9,2020,6,37,202009,2020),('2020-09-07',202036,9,2020,7,37,202009,2020),('2020-09-08',202036,9,2020,8,37,202009,2020),('2020-09-09',202036,9,2020,9,37,202009,2020),('2020-09-10',202036,9,2020,10,37,202009,2020),('2020-09-11',202036,9,2020,11,37,202009,2020),('2020-09-12',202036,9,2020,12,37,202009,2020),('2020-09-13',202037,9,2020,13,38,202009,2020),('2020-09-14',202037,9,2020,14,38,202009,2020),('2020-09-15',202037,9,2020,15,38,202009,2020),('2020-09-16',202037,9,2020,16,38,202009,2020),('2020-09-17',202037,9,2020,17,38,202009,2020),('2020-09-18',202037,9,2020,18,38,202009,2020),('2020-09-19',202037,9,2020,19,38,202009,2020),('2020-09-20',202038,9,2020,20,39,202009,2020),('2020-09-21',202038,9,2020,21,39,202009,2020),('2020-09-22',202038,9,2020,22,39,202009,2020),('2020-09-23',202038,9,2020,23,39,202009,2020),('2020-09-24',202038,9,2020,24,39,202009,2020),('2020-09-25',202038,9,2020,25,39,202009,2020),('2020-09-26',202038,9,2020,26,39,202009,2020),('2020-09-27',202039,9,2020,27,40,202009,2020),('2020-09-28',202039,9,2020,28,40,202009,2020),('2020-09-29',202039,9,2020,29,40,202009,2020),('2020-09-30',202039,9,2020,30,40,202009,2020),('2020-10-01',202039,10,2020,1,40,202010,2020),('2020-10-02',202039,10,2020,2,40,202010,2020),('2020-10-03',202039,10,2020,3,40,202010,2020),('2020-10-04',202040,10,2020,4,41,202010,2020),('2020-10-05',202040,10,2020,5,41,202010,2020),('2020-10-06',202040,10,2020,6,41,202010,2020),('2020-10-07',202040,10,2020,7,41,202010,2020),('2020-10-08',202040,10,2020,8,41,202010,2020),('2020-10-09',202040,10,2020,9,41,202010,2020),('2020-10-10',202040,10,2020,10,41,202010,2020),('2020-10-11',202041,10,2020,11,42,202010,2020),('2020-10-12',202041,10,2020,12,42,202010,2020),('2020-10-13',202041,10,2020,13,42,202010,2020),('2020-10-14',202041,10,2020,14,42,202010,2020),('2020-10-15',202041,10,2020,15,42,202010,2020),('2020-10-16',202041,10,2020,16,42,202010,2020),('2020-10-17',202041,10,2020,17,42,202010,2020),('2020-10-18',202042,10,2020,18,43,202010,2020),('2020-10-19',202042,10,2020,19,43,202010,2020),('2020-10-20',202042,10,2020,20,43,202010,2020),('2020-10-21',202042,10,2020,21,43,202010,2020),('2020-10-22',202042,10,2020,22,43,202010,2020),('2020-10-23',202042,10,2020,23,43,202010,2020),('2020-10-24',202042,10,2020,24,43,202010,2020),('2020-10-25',202043,10,2020,25,44,202010,2020),('2020-10-26',202043,10,2020,26,44,202010,2020),('2020-10-27',202043,10,2020,27,44,202010,2020),('2020-10-28',202043,10,2020,28,44,202010,2020),('2020-10-29',202043,10,2020,29,44,202010,2020),('2020-10-30',202043,10,2020,30,44,202010,2020),('2020-10-31',202043,10,2020,31,44,202010,2020),('2020-11-01',202044,11,2020,1,45,202011,2020),('2020-11-02',202044,11,2020,2,45,202011,2020),('2020-11-03',202044,11,2020,3,45,202011,2020),('2020-11-04',202044,11,2020,4,45,202011,2020),('2020-11-05',202044,11,2020,5,45,202011,2020),('2020-11-06',202044,11,2020,6,45,202011,2020),('2020-11-07',202044,11,2020,7,45,202011,2020),('2020-11-08',202045,11,2020,8,46,202011,2020),('2020-11-09',202045,11,2020,9,46,202011,2020),('2020-11-10',202045,11,2020,10,46,202011,2020),('2020-11-11',202045,11,2020,11,46,202011,2020),('2020-11-12',202045,11,2020,12,46,202011,2020),('2020-11-13',202045,11,2020,13,46,202011,2020),('2020-11-14',202045,11,2020,14,46,202011,2020),('2020-11-15',202046,11,2020,15,47,202011,2020),('2020-11-16',202046,11,2020,16,47,202011,2020),('2020-11-17',202046,11,2020,17,47,202011,2020),('2020-11-18',202046,11,2020,18,47,202011,2020),('2020-11-19',202046,11,2020,19,47,202011,2020),('2020-11-20',202046,11,2020,20,47,202011,2020),('2020-11-21',202046,11,2020,21,47,202011,2020),('2020-11-22',202047,11,2020,22,48,202011,2020),('2020-11-23',202047,11,2020,23,48,202011,2020),('2020-11-24',202047,11,2020,24,48,202011,2020),('2020-11-25',202047,11,2020,25,48,202011,2020),('2020-11-26',202047,11,2020,26,48,202011,2020),('2020-11-27',202047,11,2020,27,48,202011,2020),('2020-11-28',202047,11,2020,28,48,202011,2020),('2020-11-29',202048,11,2020,29,49,202011,2020),('2020-11-30',202048,11,2020,30,49,202011,2020),('2020-12-01',202048,12,2020,1,49,202012,2021),('2020-12-02',202048,12,2020,2,49,202012,2021),('2020-12-03',202048,12,2020,3,49,202012,2021),('2020-12-04',202048,12,2020,4,49,202012,2021),('2020-12-05',202048,12,2020,5,49,202012,2021),('2020-12-06',202049,12,2020,6,50,202012,2021),('2020-12-07',202049,12,2020,7,50,202012,2021),('2020-12-08',202049,12,2020,8,50,202012,2021),('2020-12-09',202049,12,2020,9,50,202012,2021),('2020-12-10',202049,12,2020,10,50,202012,2021),('2020-12-11',202049,12,2020,11,50,202012,2021),('2020-12-12',202049,12,2020,12,50,202012,2021),('2020-12-13',202050,12,2020,13,51,202012,2021),('2020-12-14',202050,12,2020,14,51,202012,2021),('2020-12-15',202050,12,2020,15,51,202012,2021),('2020-12-16',202050,12,2020,16,51,202012,2021),('2020-12-17',202050,12,2020,17,51,202012,2021),('2020-12-18',202050,12,2020,18,51,202012,2021),('2020-12-19',202050,12,2020,19,51,202012,2021),('2020-12-20',202051,12,2020,20,52,202012,2021),('2020-12-21',202051,12,2020,21,52,202012,2021),('2020-12-22',202051,12,2020,22,52,202012,2021),('2020-12-23',202051,12,2020,23,52,202012,2021),('2020-12-24',202051,12,2020,24,52,202012,2021),('2020-12-25',202051,12,2020,25,52,202012,2021),('2020-12-26',202051,12,2020,26,52,202012,2021),('2020-12-27',202052,12,2020,27,53,202012,2021),('2020-12-28',202052,12,2020,28,53,202012,2021),('2020-12-29',202052,12,2020,29,53,202012,2021),('2020-12-30',202052,12,2020,30,53,202012,2021),('2020-12-31',202052,12,2020,31,53,202012,2021),('2021-01-01',202101,1,2021,1,1,202101,2021),('2021-01-02',202101,1,2021,2,1,202101,2021),('2021-01-03',202101,1,2021,3,1,202101,2021),('2021-01-04',202101,1,2021,4,1,202101,2021),('2021-01-05',202101,1,2021,5,1,202101,2021),('2021-01-06',202101,1,2021,6,1,202101,2021),('2021-01-07',202101,1,2021,7,1,202101,2021),('2021-01-08',202101,1,2021,8,1,202101,2021),('2021-01-09',202101,1,2021,9,1,202101,2021),('2021-01-10',202102,1,2021,10,2,202101,2021),('2021-01-11',202102,1,2021,11,2,202101,2021),('2021-01-12',202102,1,2021,12,2,202101,2021),('2021-01-13',202102,1,2021,13,2,202101,2021),('2021-01-14',202102,1,2021,14,2,202101,2021),('2021-01-15',202102,1,2021,15,2,202101,2021),('2021-01-16',202102,1,2021,16,2,202101,2021),('2021-01-17',202103,1,2021,17,3,202101,2021),('2021-01-18',202103,1,2021,18,3,202101,2021),('2021-01-19',202103,1,2021,19,3,202101,2021),('2021-01-20',202103,1,2021,20,3,202101,2021),('2021-01-21',202103,1,2021,21,3,202101,2021),('2021-01-22',202103,1,2021,22,3,202101,2021),('2021-01-23',202103,1,2021,23,3,202101,2021),('2021-01-24',202104,1,2021,24,4,202101,2021),('2021-01-25',202104,1,2021,25,4,202101,2021),('2021-01-26',202104,1,2021,26,4,202101,2021),('2021-01-27',202104,1,2021,27,4,202101,2021),('2021-01-28',202104,1,2021,28,4,202101,2021),('2021-01-29',202104,1,2021,29,4,202101,2021),('2021-01-30',202104,1,2021,30,4,202101,2021),('2021-01-31',202105,1,2021,31,5,202101,2021),('2021-02-01',202105,2,2021,1,5,202102,2021),('2021-02-02',202105,2,2021,2,5,202102,2021),('2021-02-03',202105,2,2021,3,5,202102,2021),('2021-02-04',202105,2,2021,4,5,202102,2021),('2021-02-05',202105,2,2021,5,5,202102,2021),('2021-02-06',202105,2,2021,6,5,202102,2021),('2021-02-07',202106,2,2021,7,6,202102,2021),('2021-02-08',202106,2,2021,8,6,202102,2021),('2021-02-09',202106,2,2021,9,6,202102,2021),('2021-02-10',202106,2,2021,10,6,202102,2021),('2021-02-11',202106,2,2021,11,6,202102,2021),('2021-02-12',202106,2,2021,12,6,202102,2021),('2021-02-13',202106,2,2021,13,6,202102,2021),('2021-02-14',202107,2,2021,14,7,202102,2021),('2021-02-15',202107,2,2021,15,7,202102,2021),('2021-02-16',202107,2,2021,16,7,202102,2021),('2021-02-17',202107,2,2021,17,7,202102,2021),('2021-02-18',202107,2,2021,18,7,202102,2021),('2021-02-19',202107,2,2021,19,7,202102,2021),('2021-02-20',202107,2,2021,20,7,202102,2021),('2021-02-21',202108,2,2021,21,8,202102,2021),('2021-02-22',202108,2,2021,22,8,202102,2021),('2021-02-23',202108,2,2021,23,8,202102,2021),('2021-02-24',202108,2,2021,24,8,202102,2021),('2021-02-25',202108,2,2021,25,8,202102,2021),('2021-02-26',202108,2,2021,26,8,202102,2021),('2021-02-27',202108,2,2021,27,8,202102,2021),('2021-02-28',202109,2,2021,28,9,202102,2021),('2021-03-01',202109,3,2021,1,9,202103,2021),('2021-03-02',202109,3,2021,2,9,202103,2021),('2021-03-03',202109,3,2021,3,9,202103,2021),('2021-03-04',202109,3,2021,4,9,202103,2021),('2021-03-05',202109,3,2021,5,9,202103,2021),('2021-03-06',202109,3,2021,6,9,202103,2021),('2021-03-07',202110,3,2021,7,10,202103,2021),('2021-03-08',202110,3,2021,8,10,202103,2021),('2021-03-09',202110,3,2021,9,10,202103,2021),('2021-03-10',202110,3,2021,10,10,202103,2021),('2021-03-11',202110,3,2021,11,10,202103,2021),('2021-03-12',202110,3,2021,12,10,202103,2021),('2021-03-13',202110,3,2021,13,10,202103,2021),('2021-03-14',202111,3,2021,14,11,202103,2021),('2021-03-15',202111,3,2021,15,11,202103,2021),('2021-03-16',202111,3,2021,16,11,202103,2021),('2021-03-17',202111,3,2021,17,11,202103,2021),('2021-03-18',202111,3,2021,18,11,202103,2021),('2021-03-19',202111,3,2021,19,11,202103,2021),('2021-03-20',202111,3,2021,20,11,202103,2021),('2021-03-21',202112,3,2021,21,12,202103,2021),('2021-03-22',202112,3,2021,22,12,202103,2021),('2021-03-23',202112,3,2021,23,12,202103,2021),('2021-03-24',202112,3,2021,24,12,202103,2021),('2021-03-25',202112,3,2021,25,12,202103,2021),('2021-03-26',202112,3,2021,26,12,202103,2021),('2021-03-27',202112,3,2021,27,12,202103,2021),('2021-03-28',202113,3,2021,28,13,202103,2021),('2021-03-29',202113,3,2021,29,13,202103,2021),('2021-03-30',202113,3,2021,30,13,202103,2021),('2021-03-31',202113,3,2021,31,13,202103,2021),('2021-04-01',202113,4,2021,1,13,202104,2021),('2021-04-02',202113,4,2021,2,13,202104,2021),('2021-04-03',202113,4,2021,3,13,202104,2021),('2021-04-04',202114,4,2021,4,14,202104,2021),('2021-04-05',202114,4,2021,5,14,202104,2021),('2021-04-06',202114,4,2021,6,14,202104,2021),('2021-04-07',202114,4,2021,7,14,202104,2021),('2021-04-08',202114,4,2021,8,14,202104,2021),('2021-04-09',202114,4,2021,9,14,202104,2021),('2021-04-10',202114,4,2021,10,14,202104,2021),('2021-04-11',202115,4,2021,11,15,202104,2021),('2021-04-12',202115,4,2021,12,15,202104,2021),('2021-04-13',202115,4,2021,13,15,202104,2021),('2021-04-14',202115,4,2021,14,15,202104,2021),('2021-04-15',202115,4,2021,15,15,202104,2021),('2021-04-16',202115,4,2021,16,15,202104,2021),('2021-04-17',202115,4,2021,17,15,202104,2021),('2021-04-18',202116,4,2021,18,16,202104,2021),('2021-04-19',202116,4,2021,19,16,202104,2021),('2021-04-20',202116,4,2021,20,16,202104,2021),('2021-04-21',202116,4,2021,21,16,202104,2021),('2021-04-22',202116,4,2021,22,16,202104,2021),('2021-04-23',202116,4,2021,23,16,202104,2021),('2021-04-24',202116,4,2021,24,16,202104,2021),('2021-04-25',202117,4,2021,25,17,202104,2021),('2021-04-26',202117,4,2021,26,17,202104,2021),('2021-04-27',202117,4,2021,27,17,202104,2021),('2021-04-28',202117,4,2021,28,17,202104,2021),('2021-04-29',202117,4,2021,29,17,202104,2021),('2021-04-30',202117,4,2021,30,17,202104,2021),('2021-05-01',202117,5,2021,1,17,202105,2021),('2021-05-02',202118,5,2021,2,18,202105,2021),('2021-05-03',202118,5,2021,3,18,202105,2021),('2021-05-04',202118,5,2021,4,18,202105,2021),('2021-05-05',202118,5,2021,5,18,202105,2021),('2021-05-06',202118,5,2021,6,18,202105,2021),('2021-05-07',202118,5,2021,7,18,202105,2021),('2021-05-08',202118,5,2021,8,18,202105,2021),('2021-05-09',202119,5,2021,9,19,202105,2021),('2021-05-10',202119,5,2021,10,19,202105,2021),('2021-05-11',202119,5,2021,11,19,202105,2021),('2021-05-12',202119,5,2021,12,19,202105,2021),('2021-05-13',202119,5,2021,13,19,202105,2021),('2021-05-14',202119,5,2021,14,19,202105,2021),('2021-05-15',202119,5,2021,15,19,202105,2021),('2021-05-16',202120,5,2021,16,20,202105,2021),('2021-05-17',202120,5,2021,17,20,202105,2021),('2021-05-18',202120,5,2021,18,20,202105,2021),('2021-05-19',202120,5,2021,19,20,202105,2021),('2021-05-20',202120,5,2021,20,20,202105,2021),('2021-05-21',202120,5,2021,21,20,202105,2021),('2021-05-22',202120,5,2021,22,20,202105,2021),('2021-05-23',202121,5,2021,23,21,202105,2021),('2021-05-24',202121,5,2021,24,21,202105,2021),('2021-05-25',202121,5,2021,25,21,202105,2021),('2021-05-26',202121,5,2021,26,21,202105,2021),('2021-05-27',202121,5,2021,27,21,202105,2021),('2021-05-28',202121,5,2021,28,21,202105,2021),('2021-05-29',202121,5,2021,29,21,202105,2021),('2021-05-30',202122,5,2021,30,22,202105,2021),('2021-05-31',202122,5,2021,31,22,202105,2021),('2021-06-01',202122,6,2021,1,22,202106,2021),('2021-06-02',202122,6,2021,2,22,202106,2021),('2021-06-03',202122,6,2021,3,22,202106,2021),('2021-06-04',202122,6,2021,4,22,202106,2021),('2021-06-05',202122,6,2021,5,22,202106,2021),('2021-06-06',202123,6,2021,6,23,202106,2021),('2021-06-07',202123,6,2021,7,23,202106,2021),('2021-06-08',202123,6,2021,8,23,202106,2021),('2021-06-09',202123,6,2021,9,23,202106,2021),('2021-06-10',202123,6,2021,10,23,202106,2021),('2021-06-11',202123,6,2021,11,23,202106,2021),('2021-06-12',202123,6,2021,12,23,202106,2021),('2021-06-13',202124,6,2021,13,24,202106,2021),('2021-06-14',202124,6,2021,14,24,202106,2021),('2021-06-15',202124,6,2021,15,24,202106,2021),('2021-06-16',202124,6,2021,16,24,202106,2021),('2021-06-17',202124,6,2021,17,24,202106,2021),('2021-06-18',202124,6,2021,18,24,202106,2021),('2021-06-19',202124,6,2021,19,24,202106,2021),('2021-06-20',202125,6,2021,20,25,202106,2021),('2021-06-21',202125,6,2021,21,25,202106,2021),('2021-06-22',202125,6,2021,22,25,202106,2021),('2021-06-23',202125,6,2021,23,25,202106,2021),('2021-06-24',202125,6,2021,24,25,202106,2021),('2021-06-25',202125,6,2021,25,25,202106,2021),('2021-06-26',202125,6,2021,26,25,202106,2021),('2021-06-27',202126,6,2021,27,26,202106,2021),('2021-06-28',202126,6,2021,28,26,202106,2021),('2021-06-29',202126,6,2021,29,26,202106,2021),('2021-06-30',202126,6,2021,30,26,202106,2021),('2021-07-01',202126,7,2021,1,26,202107,2021),('2021-07-02',202126,7,2021,2,26,202107,2021),('2021-07-03',202126,7,2021,3,26,202107,2021),('2021-07-04',202127,7,2021,4,27,202107,2021),('2021-07-05',202127,7,2021,5,27,202107,2021),('2021-07-06',202127,7,2021,6,27,202107,2021),('2021-07-07',202127,7,2021,7,27,202107,2021),('2021-07-08',202127,7,2021,8,27,202107,2021),('2021-07-09',202127,7,2021,9,27,202107,2021),('2021-07-10',202127,7,2021,10,27,202107,2021),('2021-07-11',202128,7,2021,11,28,202107,2021),('2021-07-12',202128,7,2021,12,28,202107,2021),('2021-07-13',202128,7,2021,13,28,202107,2021),('2021-07-14',202128,7,2021,14,28,202107,2021),('2021-07-15',202128,7,2021,15,28,202107,2021),('2021-07-16',202128,7,2021,16,28,202107,2021),('2021-07-17',202128,7,2021,17,28,202107,2021),('2021-07-18',202129,7,2021,18,29,202107,2021),('2021-07-19',202129,7,2021,19,29,202107,2021),('2021-07-20',202129,7,2021,20,29,202107,2021),('2021-07-21',202129,7,2021,21,29,202107,2021),('2021-07-22',202129,7,2021,22,29,202107,2021),('2021-07-23',202129,7,2021,23,29,202107,2021),('2021-07-24',202129,7,2021,24,29,202107,2021),('2021-07-25',202130,7,2021,25,30,202107,2021),('2021-07-26',202130,7,2021,26,30,202107,2021),('2021-07-27',202130,7,2021,27,30,202107,2021),('2021-07-28',202130,7,2021,28,30,202107,2021),('2021-07-29',202130,7,2021,29,30,202107,2021),('2021-07-30',202130,7,2021,30,30,202107,2021),('2021-07-31',202130,7,2021,31,30,202107,2021),('2021-08-01',202131,8,2021,1,31,202108,2021),('2021-08-02',202131,8,2021,2,31,202108,2021),('2021-08-03',202131,8,2021,3,31,202108,2021),('2021-08-04',202131,8,2021,4,31,202108,2021),('2021-08-05',202131,8,2021,5,31,202108,2021),('2021-08-06',202131,8,2021,6,31,202108,2021),('2021-08-07',202131,8,2021,7,31,202108,2021),('2021-08-08',202132,8,2021,8,32,202108,2021),('2021-08-09',202132,8,2021,9,32,202108,2021),('2021-08-10',202132,8,2021,10,32,202108,2021),('2021-08-11',202132,8,2021,11,32,202108,2021),('2021-08-12',202132,8,2021,12,32,202108,2021),('2021-08-13',202132,8,2021,13,32,202108,2021),('2021-08-14',202132,8,2021,14,32,202108,2021),('2021-08-15',202133,8,2021,15,33,202108,2021),('2021-08-16',202133,8,2021,16,33,202108,2021),('2021-08-17',202133,8,2021,17,33,202108,2021),('2021-08-18',202133,8,2021,18,33,202108,2021),('2021-08-19',202133,8,2021,19,33,202108,2021),('2021-08-20',202133,8,2021,20,33,202108,2021),('2021-08-21',202133,8,2021,21,33,202108,2021),('2021-08-22',202134,8,2021,22,34,202108,2021),('2021-08-23',202134,8,2021,23,34,202108,2021),('2021-08-24',202134,8,2021,24,34,202108,2021),('2021-08-25',202134,8,2021,25,34,202108,2021),('2021-08-26',202134,8,2021,26,34,202108,2021),('2021-08-27',202134,8,2021,27,34,202108,2021),('2021-08-28',202134,8,2021,28,34,202108,2021),('2021-08-29',202135,8,2021,29,35,202108,2021),('2021-08-30',202135,8,2021,30,35,202108,2021),('2021-08-31',202135,8,2021,31,35,202108,2021),('2021-09-01',202135,9,2021,1,35,202109,2021),('2021-09-02',202135,9,2021,2,35,202109,2021),('2021-09-03',202135,9,2021,3,35,202109,2021),('2021-09-04',202135,9,2021,4,35,202109,2021),('2021-09-05',202136,9,2021,5,36,202109,2021),('2021-09-06',202136,9,2021,6,36,202109,2021),('2021-09-07',202136,9,2021,7,36,202109,2021),('2021-09-08',202136,9,2021,8,36,202109,2021),('2021-09-09',202136,9,2021,9,36,202109,2021),('2021-09-10',202136,9,2021,10,36,202109,2021),('2021-09-11',202136,9,2021,11,36,202109,2021),('2021-09-12',202137,9,2021,12,37,202109,2021),('2021-09-13',202137,9,2021,13,37,202109,2021),('2021-09-14',202137,9,2021,14,37,202109,2021),('2021-09-15',202137,9,2021,15,37,202109,2021),('2021-09-16',202137,9,2021,16,37,202109,2021),('2021-09-17',202137,9,2021,17,37,202109,2021),('2021-09-18',202137,9,2021,18,37,202109,2021),('2021-09-19',202138,9,2021,19,38,202109,2021),('2021-09-20',202138,9,2021,20,38,202109,2021),('2021-09-21',202138,9,2021,21,38,202109,2021),('2021-09-22',202138,9,2021,22,38,202109,2021),('2021-09-23',202138,9,2021,23,38,202109,2021),('2021-09-24',202138,9,2021,24,38,202109,2021),('2021-09-25',202138,9,2021,25,38,202109,2021),('2021-09-26',202139,9,2021,26,39,202109,2021),('2021-09-27',202139,9,2021,27,39,202109,2021),('2021-09-28',202139,9,2021,28,39,202109,2021),('2021-09-29',202139,9,2021,29,39,202109,2021),('2021-09-30',202139,9,2021,30,39,202109,2021),('2021-10-01',202139,10,2021,1,39,202110,2021),('2021-10-02',202139,10,2021,2,39,202110,2021),('2021-10-03',202140,10,2021,3,40,202110,2021),('2021-10-04',202140,10,2021,4,40,202110,2021),('2021-10-05',202140,10,2021,5,40,202110,2021),('2021-10-06',202140,10,2021,6,40,202110,2021),('2021-10-07',202140,10,2021,7,40,202110,2021),('2021-10-08',202140,10,2021,8,40,202110,2021),('2021-10-09',202140,10,2021,9,40,202110,2021),('2021-10-10',202141,10,2021,10,41,202110,2021),('2021-10-11',202141,10,2021,11,41,202110,2021),('2021-10-12',202141,10,2021,12,41,202110,2021),('2021-10-13',202141,10,2021,13,41,202110,2021),('2021-10-14',202141,10,2021,14,41,202110,2021),('2021-10-15',202141,10,2021,15,41,202110,2021),('2021-10-16',202141,10,2021,16,41,202110,2021),('2021-10-17',202142,10,2021,17,42,202110,2021),('2021-10-18',202142,10,2021,18,42,202110,2021),('2021-10-19',202142,10,2021,19,42,202110,2021),('2021-10-20',202142,10,2021,20,42,202110,2021),('2021-10-21',202142,10,2021,21,42,202110,2021),('2021-10-22',202142,10,2021,22,42,202110,2021),('2021-10-23',202142,10,2021,23,42,202110,2021),('2021-10-24',202143,10,2021,24,43,202110,2021),('2021-10-25',202143,10,2021,25,43,202110,2021),('2021-10-26',202143,10,2021,26,43,202110,2021),('2021-10-27',202143,10,2021,27,43,202110,2021),('2021-10-28',202143,10,2021,28,43,202110,2021),('2021-10-29',202143,10,2021,29,43,202110,2021),('2021-10-30',202143,10,2021,30,43,202110,2021),('2021-10-31',202144,10,2021,31,44,202110,2021),('2021-11-01',202144,11,2021,1,44,202111,2021),('2021-11-02',202144,11,2021,2,44,202111,2021),('2021-11-03',202144,11,2021,3,44,202111,2021),('2021-11-04',202144,11,2021,4,44,202111,2021),('2021-11-05',202144,11,2021,5,44,202111,2021),('2021-11-06',202144,11,2021,6,44,202111,2021),('2021-11-07',202145,11,2021,7,45,202111,2021),('2021-11-08',202145,11,2021,8,45,202111,2021),('2021-11-09',202145,11,2021,9,45,202111,2021),('2021-11-10',202145,11,2021,10,45,202111,2021),('2021-11-11',202145,11,2021,11,45,202111,2021),('2021-11-12',202145,11,2021,12,45,202111,2021),('2021-11-13',202145,11,2021,13,45,202111,2021),('2021-11-14',202146,11,2021,14,46,202111,2021),('2021-11-15',202146,11,2021,15,46,202111,2021),('2021-11-16',202146,11,2021,16,46,202111,2021),('2021-11-17',202146,11,2021,17,46,202111,2021),('2021-11-18',202146,11,2021,18,46,202111,2021),('2021-11-19',202146,11,2021,19,46,202111,2021),('2021-11-20',202146,11,2021,20,46,202111,2021),('2021-11-21',202147,11,2021,21,47,202111,2021),('2021-11-22',202147,11,2021,22,47,202111,2021),('2021-11-23',202147,11,2021,23,47,202111,2021),('2021-11-24',202147,11,2021,24,47,202111,2021),('2021-11-25',202147,11,2021,25,47,202111,2021),('2021-11-26',202147,11,2021,26,47,202111,2021),('2021-11-27',202147,11,2021,27,47,202111,2021),('2021-11-28',202148,11,2021,28,48,202111,2021),('2021-11-29',202148,11,2021,29,48,202111,2021),('2021-11-30',202148,11,2021,30,48,202111,2021),('2021-12-01',202148,12,2021,1,48,202112,2022),('2021-12-02',202148,12,2021,2,48,202112,2022),('2021-12-03',202148,12,2021,3,48,202112,2022),('2021-12-04',202148,12,2021,4,48,202112,2022),('2021-12-05',202149,12,2021,5,49,202112,2022),('2021-12-06',202149,12,2021,6,49,202112,2022),('2021-12-07',202149,12,2021,7,49,202112,2022),('2021-12-08',202149,12,2021,8,49,202112,2022),('2021-12-09',202149,12,2021,9,49,202112,2022),('2021-12-10',202149,12,2021,10,49,202112,2022),('2021-12-11',202149,12,2021,11,49,202112,2022),('2021-12-12',202150,12,2021,12,50,202112,2022),('2021-12-13',202150,12,2021,13,50,202112,2022),('2021-12-14',202150,12,2021,14,50,202112,2022),('2021-12-15',202150,12,2021,15,50,202112,2022),('2021-12-16',202150,12,2021,16,50,202112,2022),('2021-12-17',202150,12,2021,17,50,202112,2022),('2021-12-18',202150,12,2021,18,50,202112,2022),('2021-12-19',202151,12,2021,19,51,202112,2022),('2021-12-20',202151,12,2021,20,51,202112,2022),('2021-12-21',202151,12,2021,21,51,202112,2022),('2021-12-22',202151,12,2021,22,51,202112,2022),('2021-12-23',202151,12,2021,23,51,202112,2022),('2021-12-24',202151,12,2021,24,51,202112,2022),('2021-12-25',202151,12,2021,25,51,202112,2022),('2021-12-26',202152,12,2021,26,52,202112,2022),('2021-12-27',202152,12,2021,27,52,202112,2022),('2021-12-28',202152,12,2021,28,52,202112,2022),('2021-12-29',202152,12,2021,29,52,202112,2022),('2021-12-30',202152,12,2021,30,52,202112,2022),('2021-12-31',202152,12,2021,31,52,202112,2022),('2022-01-01',202152,1,2021,1,52,202201,2022),('2022-01-02',202201,1,2022,2,1,202201,2022),('2022-01-03',202201,1,2022,3,1,202201,2022),('2022-01-04',202201,1,2022,4,1,202201,2022),('2022-01-05',202201,1,2022,5,1,202201,2022),('2022-01-06',202201,1,2022,6,1,202201,2022),('2022-01-07',202201,1,2022,7,1,202201,2022),('2022-01-08',202201,1,2022,8,1,202201,2022),('2022-01-09',202202,1,2022,9,2,202201,2022),('2022-01-10',202202,1,2022,10,2,202201,2022),('2022-01-11',202202,1,2022,11,2,202201,2022),('2022-01-12',202202,1,2022,12,2,202201,2022),('2022-01-13',202202,1,2022,13,2,202201,2022),('2022-01-14',202202,1,2022,14,2,202201,2022),('2022-01-15',202202,1,2022,15,2,202201,2022),('2022-01-16',202203,1,2022,16,3,202201,2022),('2022-01-17',202203,1,2022,17,3,202201,2022),('2022-01-18',202203,1,2022,18,3,202201,2022),('2022-01-19',202203,1,2022,19,3,202201,2022),('2022-01-20',202203,1,2022,20,3,202201,2022),('2022-01-21',202203,1,2022,21,3,202201,2022),('2022-01-22',202203,1,2022,22,3,202201,2022),('2022-01-23',202204,1,2022,23,4,202201,2022),('2022-01-24',202204,1,2022,24,4,202201,2022),('2022-01-25',202204,1,2022,25,4,202201,2022),('2022-01-26',202204,1,2022,26,4,202201,2022),('2022-01-27',202204,1,2022,27,4,202201,2022),('2022-01-28',202204,1,2022,28,4,202201,2022),('2022-01-29',202204,1,2022,29,4,202201,2022),('2022-01-30',202205,1,2022,30,5,202201,2022),('2022-01-31',202205,1,2022,31,5,202201,2022),('2022-02-01',202205,2,2022,1,5,202202,2022),('2022-02-02',202205,2,2022,2,5,202202,2022),('2022-02-03',202205,2,2022,3,5,202202,2022),('2022-02-04',202205,2,2022,4,5,202202,2022),('2022-02-05',202205,2,2022,5,5,202202,2022),('2022-02-06',202206,2,2022,6,6,202202,2022),('2022-02-07',202206,2,2022,7,6,202202,2022),('2022-02-08',202206,2,2022,8,6,202202,2022),('2022-02-09',202206,2,2022,9,6,202202,2022),('2022-02-10',202206,2,2022,10,6,202202,2022),('2022-02-11',202206,2,2022,11,6,202202,2022),('2022-02-12',202206,2,2022,12,6,202202,2022),('2022-02-13',202207,2,2022,13,7,202202,2022),('2022-02-14',202207,2,2022,14,7,202202,2022),('2022-02-15',202207,2,2022,15,7,202202,2022),('2022-02-16',202207,2,2022,16,7,202202,2022),('2022-02-17',202207,2,2022,17,7,202202,2022),('2022-02-18',202207,2,2022,18,7,202202,2022),('2022-02-19',202207,2,2022,19,7,202202,2022),('2022-02-20',202208,2,2022,20,8,202202,2022),('2022-02-21',202208,2,2022,21,8,202202,2022),('2022-02-22',202208,2,2022,22,8,202202,2022),('2022-02-23',202208,2,2022,23,8,202202,2022),('2022-02-24',202208,2,2022,24,8,202202,2022),('2022-02-25',202208,2,2022,25,8,202202,2022),('2022-02-26',202208,2,2022,26,8,202202,2022),('2022-02-27',202209,2,2022,27,9,202202,2022),('2022-02-28',202209,2,2022,28,9,202202,2022),('2022-03-01',202209,3,2022,1,9,202203,2022),('2022-03-02',202209,3,2022,2,9,202203,2022),('2022-03-03',202209,3,2022,3,9,202203,2022),('2022-03-04',202209,3,2022,4,9,202203,2022),('2022-03-05',202209,3,2022,5,9,202203,2022),('2022-03-06',202210,3,2022,6,10,202203,2022),('2022-03-07',202210,3,2022,7,10,202203,2022),('2022-03-08',202210,3,2022,8,10,202203,2022),('2022-03-09',202210,3,2022,9,10,202203,2022),('2022-03-10',202210,3,2022,10,10,202203,2022),('2022-03-11',202210,3,2022,11,10,202203,2022),('2022-03-12',202210,3,2022,12,10,202203,2022),('2022-03-13',202211,3,2022,13,11,202203,2022),('2022-03-14',202211,3,2022,14,11,202203,2022),('2022-03-15',202211,3,2022,15,11,202203,2022),('2022-03-16',202211,3,2022,16,11,202203,2022),('2022-03-17',202211,3,2022,17,11,202203,2022),('2022-03-18',202211,3,2022,18,11,202203,2022),('2022-03-19',202211,3,2022,19,11,202203,2022),('2022-03-20',202212,3,2022,20,12,202203,2022),('2022-03-21',202212,3,2022,21,12,202203,2022),('2022-03-22',202212,3,2022,22,12,202203,2022),('2022-03-23',202212,3,2022,23,12,202203,2022),('2022-03-24',202212,3,2022,24,12,202203,2022),('2022-03-25',202212,3,2022,25,12,202203,2022),('2022-03-26',202212,3,2022,26,12,202203,2022),('2022-03-27',202213,3,2022,27,13,202203,2022),('2022-03-28',202213,3,2022,28,13,202203,2022),('2022-03-29',202213,3,2022,29,13,202203,2022),('2022-03-30',202213,3,2022,30,13,202203,2022),('2022-03-31',202213,3,2022,31,13,202203,2022),('2022-04-01',202213,4,2022,1,13,202204,2022),('2022-04-02',202213,4,2022,2,13,202204,2022),('2022-04-03',202214,4,2022,3,14,202204,2022),('2022-04-04',202214,4,2022,4,14,202204,2022),('2022-04-05',202214,4,2022,5,14,202204,2022),('2022-04-06',202214,4,2022,6,14,202204,2022),('2022-04-07',202214,4,2022,7,14,202204,2022),('2022-04-08',202214,4,2022,8,14,202204,2022),('2022-04-09',202214,4,2022,9,14,202204,2022),('2022-04-10',202215,4,2022,10,15,202204,2022),('2022-04-11',202215,4,2022,11,15,202204,2022),('2022-04-12',202215,4,2022,12,15,202204,2022),('2022-04-13',202215,4,2022,13,15,202204,2022),('2022-04-14',202215,4,2022,14,15,202204,2022),('2022-04-15',202215,4,2022,15,15,202204,2022),('2022-04-16',202215,4,2022,16,15,202204,2022),('2022-04-17',202216,4,2022,17,16,202204,2022),('2022-04-18',202216,4,2022,18,16,202204,2022),('2022-04-19',202216,4,2022,19,16,202204,2022),('2022-04-20',202216,4,2022,20,16,202204,2022),('2022-04-21',202216,4,2022,21,16,202204,2022),('2022-04-22',202216,4,2022,22,16,202204,2022),('2022-04-23',202216,4,2022,23,16,202204,2022),('2022-04-24',202217,4,2022,24,17,202204,2022),('2022-04-25',202217,4,2022,25,17,202204,2022),('2022-04-26',202217,4,2022,26,17,202204,2022),('2022-04-27',202217,4,2022,27,17,202204,2022),('2022-04-28',202217,4,2022,28,17,202204,2022),('2022-04-29',202217,4,2022,29,17,202204,2022),('2022-04-30',202217,4,2022,30,17,202204,2022),('2022-05-01',202218,5,2022,1,18,202205,2022),('2022-05-02',202218,5,2022,2,18,202205,2022),('2022-05-03',202218,5,2022,3,18,202205,2022),('2022-05-04',202218,5,2022,4,18,202205,2022),('2022-05-05',202218,5,2022,5,18,202205,2022),('2022-05-06',202218,5,2022,6,18,202205,2022),('2022-05-07',202218,5,2022,7,18,202205,2022),('2022-05-08',202219,5,2022,8,19,202205,2022),('2022-05-09',202219,5,2022,9,19,202205,2022),('2022-05-10',202219,5,2022,10,19,202205,2022),('2022-05-11',202219,5,2022,11,19,202205,2022),('2022-05-12',202219,5,2022,12,19,202205,2022),('2022-05-13',202219,5,2022,13,19,202205,2022),('2022-05-14',202219,5,2022,14,19,202205,2022),('2022-05-15',202220,5,2022,15,20,202205,2022),('2022-05-16',202220,5,2022,16,20,202205,2022),('2022-05-17',202220,5,2022,17,20,202205,2022),('2022-05-18',202220,5,2022,18,20,202205,2022),('2022-05-19',202220,5,2022,19,20,202205,2022),('2022-05-20',202220,5,2022,20,20,202205,2022),('2022-05-21',202220,5,2022,21,20,202205,2022),('2022-05-22',202221,5,2022,22,21,202205,2022),('2022-05-23',202221,5,2022,23,21,202205,2022),('2022-05-24',202221,5,2022,24,21,202205,2022),('2022-05-25',202221,5,2022,25,21,202205,2022),('2022-05-26',202221,5,2022,26,21,202205,2022),('2022-05-27',202221,5,2022,27,21,202205,2022),('2022-05-28',202221,5,2022,28,21,202205,2022),('2022-05-29',202222,5,2022,29,22,202205,2022),('2022-05-30',202222,5,2022,30,22,202205,2022),('2022-05-31',202222,5,2022,31,22,202205,2022),('2022-06-01',202222,6,2022,1,22,202206,2022),('2022-06-02',202222,6,2022,2,22,202206,2022),('2022-06-03',202222,6,2022,3,22,202206,2022),('2022-06-04',202222,6,2022,4,22,202206,2022),('2022-06-05',202223,6,2022,5,23,202206,2022),('2022-06-06',202223,6,2022,6,23,202206,2022),('2022-06-07',202223,6,2022,7,23,202206,2022),('2022-06-08',202223,6,2022,8,23,202206,2022),('2022-06-09',202223,6,2022,9,23,202206,2022),('2022-06-10',202223,6,2022,10,23,202206,2022),('2022-06-11',202223,6,2022,11,23,202206,2022),('2022-06-12',202224,6,2022,12,24,202206,2022),('2022-06-13',202224,6,2022,13,24,202206,2022),('2022-06-14',202224,6,2022,14,24,202206,2022),('2022-06-15',202224,6,2022,15,24,202206,2022),('2022-06-16',202224,6,2022,16,24,202206,2022),('2022-06-17',202224,6,2022,17,24,202206,2022),('2022-06-18',202224,6,2022,18,24,202206,2022),('2022-06-19',202225,6,2022,19,25,202206,2022),('2022-06-20',202225,6,2022,20,25,202206,2022),('2022-06-21',202225,6,2022,21,25,202206,2022),('2022-06-22',202225,6,2022,22,25,202206,2022),('2022-06-23',202225,6,2022,23,25,202206,2022),('2022-06-24',202225,6,2022,24,25,202206,2022),('2022-06-25',202225,6,2022,25,25,202206,2022),('2022-06-26',202226,6,2022,26,26,202206,2022),('2022-06-27',202226,6,2022,27,26,202206,2022),('2022-06-28',202226,6,2022,28,26,202206,2022),('2022-06-29',202226,6,2022,29,26,202206,2022),('2022-06-30',202226,6,2022,30,26,202206,2022),('2022-07-01',202226,7,2022,1,26,202207,2022),('2022-07-02',202226,7,2022,2,26,202207,2022),('2022-07-03',202227,7,2022,3,27,202207,2022),('2022-07-04',202227,7,2022,4,27,202207,2022),('2022-07-05',202227,7,2022,5,27,202207,2022),('2022-07-06',202227,7,2022,6,27,202207,2022),('2022-07-07',202227,7,2022,7,27,202207,2022),('2022-07-08',202227,7,2022,8,27,202207,2022),('2022-07-09',202227,7,2022,9,27,202207,2022),('2022-07-10',202228,7,2022,10,28,202207,2022),('2022-07-11',202228,7,2022,11,28,202207,2022),('2022-07-12',202228,7,2022,12,28,202207,2022),('2022-07-13',202228,7,2022,13,28,202207,2022),('2022-07-14',202228,7,2022,14,28,202207,2022),('2022-07-15',202228,7,2022,15,28,202207,2022),('2022-07-16',202228,7,2022,16,28,202207,2022),('2022-07-17',202229,7,2022,17,29,202207,2022),('2022-07-18',202229,7,2022,18,29,202207,2022),('2022-07-19',202229,7,2022,19,29,202207,2022),('2022-07-20',202229,7,2022,20,29,202207,2022),('2022-07-21',202229,7,2022,21,29,202207,2022),('2022-07-22',202229,7,2022,22,29,202207,2022),('2022-07-23',202229,7,2022,23,29,202207,2022),('2022-07-24',202230,7,2022,24,30,202207,2022),('2022-07-25',202230,7,2022,25,30,202207,2022),('2022-07-26',202230,7,2022,26,30,202207,2022),('2022-07-27',202230,7,2022,27,30,202207,2022),('2022-07-28',202230,7,2022,28,30,202207,2022),('2022-07-29',202230,7,2022,29,30,202207,2022),('2022-07-30',202230,7,2022,30,30,202207,2022),('2022-07-31',202231,7,2022,31,31,202207,2022),('2022-08-01',202231,8,2022,1,31,202208,2022),('2022-08-02',202231,8,2022,2,31,202208,2022),('2022-08-03',202231,8,2022,3,31,202208,2022),('2022-08-04',202231,8,2022,4,31,202208,2022),('2022-08-05',202231,8,2022,5,31,202208,2022),('2022-08-06',202231,8,2022,6,31,202208,2022),('2022-08-07',202232,8,2022,7,32,202208,2022),('2022-08-08',202232,8,2022,8,32,202208,2022),('2022-08-09',202232,8,2022,9,32,202208,2022),('2022-08-10',202232,8,2022,10,32,202208,2022),('2022-08-11',202232,8,2022,11,32,202208,2022),('2022-08-12',202232,8,2022,12,32,202208,2022),('2022-08-13',202232,8,2022,13,32,202208,2022),('2022-08-14',202233,8,2022,14,33,202208,2022),('2022-08-15',202233,8,2022,15,33,202208,2022),('2022-08-16',202233,8,2022,16,33,202208,2022),('2022-08-17',202233,8,2022,17,33,202208,2022),('2022-08-18',202233,8,2022,18,33,202208,2022),('2022-08-19',202233,8,2022,19,33,202208,2022),('2022-08-20',202233,8,2022,20,33,202208,2022),('2022-08-21',202234,8,2022,21,34,202208,2022),('2022-08-22',202234,8,2022,22,34,202208,2022),('2022-08-23',202234,8,2022,23,34,202208,2022),('2022-08-24',202234,8,2022,24,34,202208,2022),('2022-08-25',202234,8,2022,25,34,202208,2022),('2022-08-26',202234,8,2022,26,34,202208,2022),('2022-08-27',202234,8,2022,27,34,202208,2022),('2022-08-28',202235,8,2022,28,35,202208,2022),('2022-08-29',202235,8,2022,29,35,202208,2022),('2022-08-30',202235,8,2022,30,35,202208,2022),('2022-08-31',202235,8,2022,31,35,202208,2022),('2022-09-01',202235,9,2022,1,35,202209,2022),('2022-09-02',202235,9,2022,2,35,202209,2022),('2022-09-03',202235,9,2022,3,35,202209,2022),('2022-09-04',202236,9,2022,4,36,202209,2022),('2022-09-05',202236,9,2022,5,36,202209,2022),('2022-09-06',202236,9,2022,6,36,202209,2022),('2022-09-07',202236,9,2022,7,36,202209,2022),('2022-09-08',202236,9,2022,8,36,202209,2022),('2022-09-09',202236,9,2022,9,36,202209,2022),('2022-09-10',202236,9,2022,10,36,202209,2022),('2022-09-11',202237,9,2022,11,37,202209,2022),('2022-09-12',202237,9,2022,12,37,202209,2022),('2022-09-13',202237,9,2022,13,37,202209,2022),('2022-09-14',202237,9,2022,14,37,202209,2022),('2022-09-15',202237,9,2022,15,37,202209,2022),('2022-09-16',202237,9,2022,16,37,202209,2022),('2022-09-17',202237,9,2022,17,37,202209,2022),('2022-09-18',202238,9,2022,18,38,202209,2022),('2022-09-19',202238,9,2022,19,38,202209,2022),('2022-09-20',202238,9,2022,20,38,202209,2022),('2022-09-21',202238,9,2022,21,38,202209,2022),('2022-09-22',202238,9,2022,22,38,202209,2022),('2022-09-23',202238,9,2022,23,38,202209,2022),('2022-09-24',202238,9,2022,24,38,202209,2022),('2022-09-25',202239,9,2022,25,39,202209,2022),('2022-09-26',202239,9,2022,26,39,202209,2022),('2022-09-27',202239,9,2022,27,39,202209,2022),('2022-09-28',202239,9,2022,28,39,202209,2022),('2022-09-29',202239,9,2022,29,39,202209,2022),('2022-09-30',202239,9,2022,30,39,202209,2022),('2022-10-01',202239,10,2022,1,39,202210,2022),('2022-10-02',202240,10,2022,2,40,202210,2022),('2022-10-03',202240,10,2022,3,40,202210,2022),('2022-10-04',202240,10,2022,4,40,202210,2022),('2022-10-05',202240,10,2022,5,40,202210,2022),('2022-10-06',202240,10,2022,6,40,202210,2022),('2022-10-07',202240,10,2022,7,40,202210,2022),('2022-10-08',202240,10,2022,8,40,202210,2022),('2022-10-09',202241,10,2022,9,41,202210,2022),('2022-10-10',202241,10,2022,10,41,202210,2022),('2022-10-11',202241,10,2022,11,41,202210,2022),('2022-10-12',202241,10,2022,12,41,202210,2022),('2022-10-13',202241,10,2022,13,41,202210,2022),('2022-10-14',202241,10,2022,14,41,202210,2022),('2022-10-15',202241,10,2022,15,41,202210,2022),('2022-10-16',202242,10,2022,16,42,202210,2022),('2022-10-17',202242,10,2022,17,42,202210,2022),('2022-10-18',202242,10,2022,18,42,202210,2022),('2022-10-19',202242,10,2022,19,42,202210,2022),('2022-10-20',202242,10,2022,20,42,202210,2022),('2022-10-21',202242,10,2022,21,42,202210,2022),('2022-10-22',202242,10,2022,22,42,202210,2022),('2022-10-23',202243,10,2022,23,43,202210,2022),('2022-10-24',202243,10,2022,24,43,202210,2022),('2022-10-25',202243,10,2022,25,43,202210,2022),('2022-10-26',202243,10,2022,26,43,202210,2022),('2022-10-27',202243,10,2022,27,43,202210,2022),('2022-10-28',202243,10,2022,28,43,202210,2022),('2022-10-29',202243,10,2022,29,43,202210,2022),('2022-10-30',202244,10,2022,30,44,202210,2022),('2022-10-31',202244,10,2022,31,44,202210,2022),('2022-11-01',202244,11,2022,1,44,202211,2022),('2022-11-02',202244,11,2022,2,44,202211,2022),('2022-11-03',202244,11,2022,3,44,202211,2022),('2022-11-04',202244,11,2022,4,44,202211,2022),('2022-11-05',202244,11,2022,5,44,202211,2022),('2022-11-06',202245,11,2022,6,45,202211,2022),('2022-11-07',202245,11,2022,7,45,202211,2022),('2022-11-08',202245,11,2022,8,45,202211,2022),('2022-11-09',202245,11,2022,9,45,202211,2022),('2022-11-10',202245,11,2022,10,45,202211,2022),('2022-11-11',202245,11,2022,11,45,202211,2022),('2022-11-12',202245,11,2022,12,45,202211,2022),('2022-11-13',202246,11,2022,13,46,202211,2022),('2022-11-14',202246,11,2022,14,46,202211,2022),('2022-11-15',202246,11,2022,15,46,202211,2022),('2022-11-16',202246,11,2022,16,46,202211,2022),('2022-11-17',202246,11,2022,17,46,202211,2022),('2022-11-18',202246,11,2022,18,46,202211,2022),('2022-11-19',202246,11,2022,19,46,202211,2022),('2022-11-20',202247,11,2022,20,47,202211,2022),('2022-11-21',202247,11,2022,21,47,202211,2022),('2022-11-22',202247,11,2022,22,47,202211,2022),('2022-11-23',202247,11,2022,23,47,202211,2022),('2022-11-24',202247,11,2022,24,47,202211,2022),('2022-11-25',202247,11,2022,25,47,202211,2022),('2022-11-26',202247,11,2022,26,47,202211,2022),('2022-11-27',202248,11,2022,27,48,202211,2022),('2022-11-28',202248,11,2022,28,48,202211,2022),('2022-11-29',202248,11,2022,29,48,202211,2022),('2022-11-30',202248,11,2022,30,48,202211,2022),('2022-12-01',202248,12,2022,1,48,202212,2023),('2022-12-02',202248,12,2022,2,48,202212,2023),('2022-12-03',202248,12,2022,3,48,202212,2023),('2022-12-04',202249,12,2022,4,49,202212,2023),('2022-12-05',202249,12,2022,5,49,202212,2023),('2022-12-06',202249,12,2022,6,49,202212,2023),('2022-12-07',202249,12,2022,7,49,202212,2023),('2022-12-08',202249,12,2022,8,49,202212,2023),('2022-12-09',202249,12,2022,9,49,202212,2023),('2022-12-10',202249,12,2022,10,49,202212,2023),('2022-12-11',202250,12,2022,11,50,202212,2023),('2022-12-12',202250,12,2022,12,50,202212,2023),('2022-12-13',202250,12,2022,13,50,202212,2023),('2022-12-14',202250,12,2022,14,50,202212,2023),('2022-12-15',202250,12,2022,15,50,202212,2023),('2022-12-16',202250,12,2022,16,50,202212,2023),('2022-12-17',202250,12,2022,17,50,202212,2023),('2022-12-18',202251,12,2022,18,51,202212,2023),('2022-12-19',202251,12,2022,19,51,202212,2023),('2022-12-20',202251,12,2022,20,51,202212,2023),('2022-12-21',202251,12,2022,21,51,202212,2023),('2022-12-22',202251,12,2022,22,51,202212,2023),('2022-12-23',202251,12,2022,23,51,202212,2023),('2022-12-24',202251,12,2022,24,51,202212,2023),('2022-12-25',202252,12,2022,25,52,202212,2023),('2022-12-26',202252,12,2022,26,52,202212,2023),('2022-12-27',202252,12,2022,27,52,202212,2023),('2022-12-28',202252,12,2022,28,52,202212,2023),('2022-12-29',202252,12,2022,29,52,202212,2023),('2022-12-30',202252,12,2022,30,52,202212,2023),('2022-12-31',202252,12,2022,31,52,202212,2023),('2023-01-01',202353,1,2023,1,1,202301,2023),('2023-01-02',202301,1,2023,2,1,202301,2023),('2023-01-03',202301,1,2023,3,1,202301,2023),('2023-01-04',202301,1,2023,4,1,202301,2023),('2023-01-05',202301,1,2023,5,1,202301,2023),('2023-01-06',202301,1,2023,6,1,202301,2023),('2023-01-07',202301,1,2023,7,1,202301,2023),('2023-01-08',202302,1,2023,8,2,202301,2023),('2023-01-09',202302,1,2023,9,2,202301,2023),('2023-01-10',202302,1,2023,10,2,202301,2023),('2023-01-11',202302,1,2023,11,2,202301,2023),('2023-01-12',202302,1,2023,12,2,202301,2023),('2023-01-13',202302,1,2023,13,2,202301,2023),('2023-01-14',202302,1,2023,14,2,202301,2023),('2023-01-15',202303,1,2023,15,3,202301,2023),('2023-01-16',202303,1,2023,16,3,202301,2023),('2023-01-17',202303,1,2023,17,3,202301,2023),('2023-01-18',202303,1,2023,18,3,202301,2023),('2023-01-19',202303,1,2023,19,3,202301,2023),('2023-01-20',202303,1,2023,20,3,202301,2023),('2023-01-21',202303,1,2023,21,3,202301,2023),('2023-01-22',202304,1,2023,22,4,202301,2023),('2023-01-23',202304,1,2023,23,4,202301,2023),('2023-01-24',202304,1,2023,24,4,202301,2023),('2023-01-25',202304,1,2023,25,4,202301,2023),('2023-01-26',202304,1,2023,26,4,202301,2023),('2023-01-27',202304,1,2023,27,4,202301,2023),('2023-01-28',202304,1,2023,28,4,202301,2023),('2023-01-29',202305,1,2023,29,5,202301,2023),('2023-01-30',202305,1,2023,30,5,202301,2023),('2023-01-31',202305,1,2023,31,5,202301,2023),('2023-02-01',202305,2,2023,1,5,202302,2023),('2023-02-02',202305,2,2023,2,5,202302,2023),('2023-02-03',202305,2,2023,3,5,202302,2023),('2023-02-04',202305,2,2023,4,5,202302,2023),('2023-02-05',202306,2,2023,5,6,202302,2023),('2023-02-06',202306,2,2023,6,6,202302,2023),('2023-02-07',202306,2,2023,7,6,202302,2023),('2023-02-08',202306,2,2023,8,6,202302,2023),('2023-02-09',202306,2,2023,9,6,202302,2023),('2023-02-10',202306,2,2023,10,6,202302,2023),('2023-02-11',202306,2,2023,11,6,202302,2023),('2023-02-12',202307,2,2023,12,7,202302,2023),('2023-02-13',202307,2,2023,13,7,202302,2023),('2023-02-14',202307,2,2023,14,7,202302,2023),('2023-02-15',202307,2,2023,15,7,202302,2023),('2023-02-16',202307,2,2023,16,7,202302,2023),('2023-02-17',202307,2,2023,17,7,202302,2023),('2023-02-18',202307,2,2023,18,7,202302,2023),('2023-02-19',202308,2,2023,19,8,202302,2023),('2023-02-20',202308,2,2023,20,8,202302,2023),('2023-02-21',202308,2,2023,21,8,202302,2023),('2023-02-22',202308,2,2023,22,8,202302,2023),('2023-02-23',202308,2,2023,23,8,202302,2023),('2023-02-24',202308,2,2023,24,8,202302,2023),('2023-02-25',202308,2,2023,25,8,202302,2023),('2023-02-26',202309,2,2023,26,9,202302,2023),('2023-02-27',202309,2,2023,27,9,202302,2023),('2023-02-28',202309,2,2023,28,9,202302,2023),('2023-03-01',202309,3,2023,1,9,202303,2023),('2023-03-02',202309,3,2023,2,9,202303,2023),('2023-03-03',202309,3,2023,3,9,202303,2023),('2023-03-04',202309,3,2023,4,9,202303,2023),('2023-03-05',202310,3,2023,5,10,202303,2023),('2023-03-06',202310,3,2023,6,10,202303,2023),('2023-03-07',202310,3,2023,7,10,202303,2023),('2023-03-08',202310,3,2023,8,10,202303,2023),('2023-03-09',202310,3,2023,9,10,202303,2023),('2023-03-10',202310,3,2023,10,10,202303,2023),('2023-03-11',202310,3,2023,11,10,202303,2023),('2023-03-12',202311,3,2023,12,11,202303,2023),('2023-03-13',202311,3,2023,13,11,202303,2023),('2023-03-14',202311,3,2023,14,11,202303,2023),('2023-03-15',202311,3,2023,15,11,202303,2023),('2023-03-16',202311,3,2023,16,11,202303,2023),('2023-03-17',202311,3,2023,17,11,202303,2023),('2023-03-18',202311,3,2023,18,11,202303,2023),('2023-03-19',202312,3,2023,19,12,202303,2023),('2023-03-20',202312,3,2023,20,12,202303,2023),('2023-03-21',202312,3,2023,21,12,202303,2023),('2023-03-22',202312,3,2023,22,12,202303,2023),('2023-03-23',202312,3,2023,23,12,202303,2023),('2023-03-24',202312,3,2023,24,12,202303,2023),('2023-03-25',202312,3,2023,25,12,202303,2023),('2023-03-26',202313,3,2023,26,13,202303,2023),('2023-03-27',202313,3,2023,27,13,202303,2023),('2023-03-28',202313,3,2023,28,13,202303,2023),('2023-03-29',202313,3,2023,29,13,202303,2023),('2023-03-30',202313,3,2023,30,13,202303,2023),('2023-03-31',202313,3,2023,31,13,202303,2023),('2023-04-01',202313,4,2023,1,13,202304,2023),('2023-04-02',202314,4,2023,2,14,202304,2023),('2023-04-03',202314,4,2023,3,14,202304,2023),('2023-04-04',202314,4,2023,4,14,202304,2023),('2023-04-05',202314,4,2023,5,14,202304,2023),('2023-04-06',202314,4,2023,6,14,202304,2023),('2023-04-07',202314,4,2023,7,14,202304,2023),('2023-04-08',202314,4,2023,8,14,202304,2023),('2023-04-09',202315,4,2023,9,15,202304,2023),('2023-04-10',202315,4,2023,10,15,202304,2023),('2023-04-11',202315,4,2023,11,15,202304,2023),('2023-04-12',202315,4,2023,12,15,202304,2023),('2023-04-13',202315,4,2023,13,15,202304,2023),('2023-04-14',202315,4,2023,14,15,202304,2023),('2023-04-15',202315,4,2023,15,15,202304,2023),('2023-04-16',202316,4,2023,16,16,202304,2023),('2023-04-17',202316,4,2023,17,16,202304,2023),('2023-04-18',202316,4,2023,18,16,202304,2023),('2023-04-19',202316,4,2023,19,16,202304,2023),('2023-04-20',202316,4,2023,20,16,202304,2023),('2023-04-21',202316,4,2023,21,16,202304,2023),('2023-04-22',202316,4,2023,22,16,202304,2023),('2023-04-23',202317,4,2023,23,17,202304,2023),('2023-04-24',202317,4,2023,24,17,202304,2023),('2023-04-25',202317,4,2023,25,17,202304,2023),('2023-04-26',202317,4,2023,26,17,202304,2023),('2023-04-27',202317,4,2023,27,17,202304,2023),('2023-04-28',202317,4,2023,28,17,202304,2023),('2023-04-29',202317,4,2023,29,17,202304,2023),('2023-04-30',202318,4,2023,30,18,202304,2023),('2023-05-01',202318,5,2023,1,18,202305,2023),('2023-05-02',202318,5,2023,2,18,202305,2023),('2023-05-03',202318,5,2023,3,18,202305,2023),('2023-05-04',202318,5,2023,4,18,202305,2023),('2023-05-05',202318,5,2023,5,18,202305,2023),('2023-05-06',202318,5,2023,6,18,202305,2023),('2023-05-07',202319,5,2023,7,19,202305,2023),('2023-05-08',202319,5,2023,8,19,202305,2023),('2023-05-09',202319,5,2023,9,19,202305,2023),('2023-05-10',202319,5,2023,10,19,202305,2023),('2023-05-11',202319,5,2023,11,19,202305,2023),('2023-05-12',202319,5,2023,12,19,202305,2023),('2023-05-13',202319,5,2023,13,19,202305,2023),('2023-05-14',202320,5,2023,14,20,202305,2023),('2023-05-15',202320,5,2023,15,20,202305,2023),('2023-05-16',202320,5,2023,16,20,202305,2023),('2023-05-17',202320,5,2023,17,20,202305,2023),('2023-05-18',202320,5,2023,18,20,202305,2023),('2023-05-19',202320,5,2023,19,20,202305,2023),('2023-05-20',202320,5,2023,20,20,202305,2023),('2023-05-21',202321,5,2023,21,21,202305,2023),('2023-05-22',202321,5,2023,22,21,202305,2023),('2023-05-23',202321,5,2023,23,21,202305,2023),('2023-05-24',202321,5,2023,24,21,202305,2023),('2023-05-25',202321,5,2023,25,21,202305,2023),('2023-05-26',202321,5,2023,26,21,202305,2023),('2023-05-27',202321,5,2023,27,21,202305,2023),('2023-05-28',202322,5,2023,28,22,202305,2023),('2023-05-29',202322,5,2023,29,22,202305,2023),('2023-05-30',202322,5,2023,30,22,202305,2023),('2023-05-31',202322,5,2023,31,22,202305,2023),('2023-06-01',202322,6,2023,1,22,202306,2023),('2023-06-02',202322,6,2023,2,22,202306,2023),('2023-06-03',202322,6,2023,3,22,202306,2023),('2023-06-04',202323,6,2023,4,23,202306,2023),('2023-06-05',202323,6,2023,5,23,202306,2023),('2023-06-06',202323,6,2023,6,23,202306,2023),('2023-06-07',202323,6,2023,7,23,202306,2023),('2023-06-08',202323,6,2023,8,23,202306,2023),('2023-06-09',202323,6,2023,9,23,202306,2023),('2023-06-10',202323,6,2023,10,23,202306,2023),('2023-06-11',202324,6,2023,11,24,202306,2023),('2023-06-12',202324,6,2023,12,24,202306,2023),('2023-06-13',202324,6,2023,13,24,202306,2023),('2023-06-14',202324,6,2023,14,24,202306,2023),('2023-06-15',202324,6,2023,15,24,202306,2023),('2023-06-16',202324,6,2023,16,24,202306,2023),('2023-06-17',202324,6,2023,17,24,202306,2023),('2023-06-18',202325,6,2023,18,25,202306,2023),('2023-06-19',202325,6,2023,19,25,202306,2023),('2023-06-20',202325,6,2023,20,25,202306,2023),('2023-06-21',202325,6,2023,21,25,202306,2023),('2023-06-22',202325,6,2023,22,25,202306,2023),('2023-06-23',202325,6,2023,23,25,202306,2023),('2023-06-24',202325,6,2023,24,25,202306,2023),('2023-06-25',202326,6,2023,25,26,202306,2023),('2023-06-26',202326,6,2023,26,26,202306,2023),('2023-06-27',202326,6,2023,27,26,202306,2023),('2023-06-28',202326,6,2023,28,26,202306,2023),('2023-06-29',202326,6,2023,29,26,202306,2023),('2023-06-30',202326,6,2023,30,26,202306,2023),('2023-07-01',202326,7,2023,1,26,202307,2023),('2023-07-02',202327,7,2023,2,27,202307,2023),('2023-07-03',202327,7,2023,3,27,202307,2023),('2023-07-04',202327,7,2023,4,27,202307,2023),('2023-07-05',202327,7,2023,5,27,202307,2023),('2023-07-06',202327,7,2023,6,27,202307,2023),('2023-07-07',202327,7,2023,7,27,202307,2023),('2023-07-08',202327,7,2023,8,27,202307,2023),('2023-07-09',202328,7,2023,9,28,202307,2023),('2023-07-10',202328,7,2023,10,28,202307,2023),('2023-07-11',202328,7,2023,11,28,202307,2023),('2023-07-12',202328,7,2023,12,28,202307,2023),('2023-07-13',202328,7,2023,13,28,202307,2023),('2023-07-14',202328,7,2023,14,28,202307,2023),('2023-07-15',202328,7,2023,15,28,202307,2023),('2023-07-16',202329,7,2023,16,29,202307,2023),('2023-07-17',202329,7,2023,17,29,202307,2023),('2023-07-18',202329,7,2023,18,29,202307,2023),('2023-07-19',202329,7,2023,19,29,202307,2023),('2023-07-20',202329,7,2023,20,29,202307,2023),('2023-07-21',202329,7,2023,21,29,202307,2023),('2023-07-22',202329,7,2023,22,29,202307,2023),('2023-07-23',202330,7,2023,23,30,202307,2023),('2023-07-24',202330,7,2023,24,30,202307,2023),('2023-07-25',202330,7,2023,25,30,202307,2023),('2023-07-26',202330,7,2023,26,30,202307,2023),('2023-07-27',202330,7,2023,27,30,202307,2023),('2023-07-28',202330,7,2023,28,30,202307,2023),('2023-07-29',202330,7,2023,29,30,202307,2023),('2023-07-30',202331,7,2023,30,31,202307,2023),('2023-07-31',202331,7,2023,31,31,202307,2023),('2023-08-01',202331,8,2023,1,31,202308,2023),('2023-08-02',202331,8,2023,2,31,202308,2023),('2023-08-03',202331,8,2023,3,31,202308,2023),('2023-08-04',202331,8,2023,4,31,202308,2023),('2023-08-05',202331,8,2023,5,31,202308,2023),('2023-08-06',202332,8,2023,6,32,202308,2023),('2023-08-07',202332,8,2023,7,32,202308,2023),('2023-08-08',202332,8,2023,8,32,202308,2023),('2023-08-09',202332,8,2023,9,32,202308,2023),('2023-08-10',202332,8,2023,10,32,202308,2023),('2023-08-11',202332,8,2023,11,32,202308,2023),('2023-08-12',202332,8,2023,12,32,202308,2023),('2023-08-13',202333,8,2023,13,33,202308,2023),('2023-08-14',202333,8,2023,14,33,202308,2023),('2023-08-15',202333,8,2023,15,33,202308,2023),('2023-08-16',202333,8,2023,16,33,202308,2023),('2023-08-17',202333,8,2023,17,33,202308,2023),('2023-08-18',202333,8,2023,18,33,202308,2023),('2023-08-19',202333,8,2023,19,33,202308,2023),('2023-08-20',202334,8,2023,20,34,202308,2023),('2023-08-21',202334,8,2023,21,34,202308,2023),('2023-08-22',202334,8,2023,22,34,202308,2023),('2023-08-23',202334,8,2023,23,34,202308,2023),('2023-08-24',202334,8,2023,24,34,202308,2023),('2023-08-25',202334,8,2023,25,34,202308,2023),('2023-08-26',202334,8,2023,26,34,202308,2023),('2023-08-27',202335,8,2023,27,35,202308,2023),('2023-08-28',202335,8,2023,28,35,202308,2023),('2023-08-29',202335,8,2023,29,35,202308,2023),('2023-08-30',202335,8,2023,30,35,202308,2023),('2023-08-31',202335,8,2023,31,35,202308,2023),('2023-09-01',202335,9,2023,1,35,202309,2023),('2023-09-02',202335,9,2023,2,35,202309,2023),('2023-09-03',202336,9,2023,3,36,202309,2023),('2023-09-04',202336,9,2023,4,36,202309,2023),('2023-09-05',202336,9,2023,5,36,202309,2023),('2023-09-06',202336,9,2023,6,36,202309,2023),('2023-09-07',202336,9,2023,7,36,202309,2023),('2023-09-08',202336,9,2023,8,36,202309,2023),('2023-09-09',202336,9,2023,9,36,202309,2023),('2023-09-10',202337,9,2023,10,37,202309,2023),('2023-09-11',202337,9,2023,11,37,202309,2023),('2023-09-12',202337,9,2023,12,37,202309,2023),('2023-09-13',202337,9,2023,13,37,202309,2023),('2023-09-14',202337,9,2023,14,37,202309,2023),('2023-09-15',202337,9,2023,15,37,202309,2023),('2023-09-16',202337,9,2023,16,37,202309,2023),('2023-09-17',202338,9,2023,17,38,202309,2023),('2023-09-18',202338,9,2023,18,38,202309,2023),('2023-09-19',202338,9,2023,19,38,202309,2023),('2023-09-20',202338,9,2023,20,38,202309,2023),('2023-09-21',202338,9,2023,21,38,202309,2023),('2023-09-22',202338,9,2023,22,38,202309,2023),('2023-09-23',202338,9,2023,23,38,202309,2023),('2023-09-24',202339,9,2023,24,39,202309,2023),('2023-09-25',202339,9,2023,25,39,202309,2023),('2023-09-26',202339,9,2023,26,39,202309,2023),('2023-09-27',202339,9,2023,27,39,202309,2023),('2023-09-28',202339,9,2023,28,39,202309,2023),('2023-09-29',202339,9,2023,29,39,202309,2023),('2023-09-30',202339,9,2023,30,39,202309,2023),('2023-10-01',202340,10,2023,1,40,202310,2023),('2023-10-02',202340,10,2023,2,40,202310,2023),('2023-10-03',202340,10,2023,3,40,202310,2023),('2023-10-04',202340,10,2023,4,40,202310,2023),('2023-10-05',202340,10,2023,5,40,202310,2023),('2023-10-06',202340,10,2023,6,40,202310,2023),('2023-10-07',202340,10,2023,7,40,202310,2023),('2023-10-08',202341,10,2023,8,41,202310,2023),('2023-10-09',202341,10,2023,9,41,202310,2023),('2023-10-10',202341,10,2023,10,41,202310,2023),('2023-10-11',202341,10,2023,11,41,202310,2023),('2023-10-12',202341,10,2023,12,41,202310,2023),('2023-10-13',202341,10,2023,13,41,202310,2023),('2023-10-14',202341,10,2023,14,41,202310,2023),('2023-10-15',202342,10,2023,15,42,202310,2023),('2023-10-16',202342,10,2023,16,42,202310,2023),('2023-10-17',202342,10,2023,17,42,202310,2023),('2023-10-18',202342,10,2023,18,42,202310,2023),('2023-10-19',202342,10,2023,19,42,202310,2023),('2023-10-20',202342,10,2023,20,42,202310,2023),('2023-10-21',202342,10,2023,21,42,202310,2023),('2023-10-22',202343,10,2023,22,43,202310,2023),('2023-10-23',202343,10,2023,23,43,202310,2023),('2023-10-24',202343,10,2023,24,43,202310,2023),('2023-10-25',202343,10,2023,25,43,202310,2023),('2023-10-26',202343,10,2023,26,43,202310,2023),('2023-10-27',202343,10,2023,27,43,202310,2023),('2023-10-28',202343,10,2023,28,43,202310,2023),('2023-10-29',202344,10,2023,29,44,202310,2023),('2023-10-30',202344,10,2023,30,44,202310,2023),('2023-10-31',202344,10,2023,31,44,202310,2023),('2023-11-01',202344,11,2023,1,44,202311,2023),('2023-11-02',202344,11,2023,2,44,202311,2023),('2023-11-03',202344,11,2023,3,44,202311,2023),('2023-11-04',202344,11,2023,4,44,202311,2023),('2023-11-05',202345,11,2023,5,45,202311,2023),('2023-11-06',202345,11,2023,6,45,202311,2023),('2023-11-07',202345,11,2023,7,45,202311,2023),('2023-11-08',202345,11,2023,8,45,202311,2023),('2023-11-09',202345,11,2023,9,45,202311,2023),('2023-11-10',202345,11,2023,10,45,202311,2023),('2023-11-11',202345,11,2023,11,45,202311,2023),('2023-11-12',202346,11,2023,12,46,202311,2023),('2023-11-13',202346,11,2023,13,46,202311,2023),('2023-11-14',202346,11,2023,14,46,202311,2023),('2023-11-15',202346,11,2023,15,46,202311,2023),('2023-11-16',202346,11,2023,16,46,202311,2023),('2023-11-17',202346,11,2023,17,46,202311,2023),('2023-11-18',202346,11,2023,18,46,202311,2023),('2023-11-19',202347,11,2023,19,47,202311,2023),('2023-11-20',202347,11,2023,20,47,202311,2023),('2023-11-21',202347,11,2023,21,47,202311,2023),('2023-11-22',202347,11,2023,22,47,202311,2023),('2023-11-23',202347,11,2023,23,47,202311,2023),('2023-11-24',202347,11,2023,24,47,202311,2023),('2023-11-25',202347,11,2023,25,47,202311,2023),('2023-11-26',202348,11,2023,26,48,202311,2023),('2023-11-27',202348,11,2023,27,48,202311,2023),('2023-11-28',202348,11,2023,28,48,202311,2023),('2023-11-29',202348,11,2023,29,48,202311,2023),('2023-11-30',202348,11,2023,30,48,202311,2023),('2023-12-01',202348,12,2023,1,48,202312,2024),('2023-12-02',202348,12,2023,2,48,202312,2024),('2023-12-03',202349,12,2023,3,49,202312,2024),('2023-12-04',202349,12,2023,4,49,202312,2024),('2023-12-05',202349,12,2023,5,49,202312,2024),('2023-12-06',202349,12,2023,6,49,202312,2024),('2023-12-07',202349,12,2023,7,49,202312,2024),('2023-12-08',202349,12,2023,8,49,202312,2024),('2023-12-09',202349,12,2023,9,49,202312,2024),('2023-12-10',202350,12,2023,10,50,202312,2024),('2023-12-11',202350,12,2023,11,50,202312,2024),('2023-12-12',202350,12,2023,12,50,202312,2024),('2023-12-13',202350,12,2023,13,50,202312,2024),('2023-12-14',202350,12,2023,14,50,202312,2024),('2023-12-15',202350,12,2023,15,50,202312,2024),('2023-12-16',202350,12,2023,16,50,202312,2024),('2023-12-17',202351,12,2023,17,51,202312,2024),('2023-12-18',202351,12,2023,18,51,202312,2024),('2023-12-19',202351,12,2023,19,51,202312,2024),('2023-12-20',202351,12,2023,20,51,202312,2024),('2023-12-21',202351,12,2023,21,51,202312,2024),('2023-12-22',202351,12,2023,22,51,202312,2024),('2023-12-23',202351,12,2023,23,51,202312,2024),('2023-12-24',202352,12,2023,24,52,202312,2024),('2023-12-25',202352,12,2023,25,52,202312,2024),('2023-12-26',202352,12,2023,26,52,202312,2024),('2023-12-27',202352,12,2023,27,52,202312,2024),('2023-12-28',202352,12,2023,28,52,202312,2024),('2023-12-29',202352,12,2023,29,52,202312,2024),('2023-12-30',202352,12,2023,30,52,202312,2024),('2023-12-31',202353,12,2023,31,1,202312,2024),('2024-01-01',202401,1,2024,1,1,202401,2024),('2024-01-02',202401,1,2024,2,1,202401,2024),('2024-01-03',202401,1,2024,3,1,202401,2024),('2024-01-04',202401,1,2024,4,1,202401,2024),('2024-01-05',202401,1,2024,5,1,202401,2024),('2024-01-06',202401,1,2024,6,1,202401,2024),('2024-01-07',202402,1,2024,7,2,202401,2024),('2024-01-08',202402,1,2024,8,2,202401,2024),('2024-01-09',202402,1,2024,9,2,202401,2024),('2024-01-10',202402,1,2024,10,2,202401,2024),('2024-01-11',202402,1,2024,11,2,202401,2024),('2024-01-12',202402,1,2024,12,2,202401,2024),('2024-01-13',202402,1,2024,13,2,202401,2024),('2024-01-14',202403,1,2024,14,3,202401,2024),('2024-01-15',202403,1,2024,15,3,202401,2024),('2024-01-16',202403,1,2024,16,3,202401,2024),('2024-01-17',202403,1,2024,17,3,202401,2024),('2024-01-18',202403,1,2024,18,3,202401,2024),('2024-01-19',202403,1,2024,19,3,202401,2024),('2024-01-20',202403,1,2024,20,3,202401,2024),('2024-01-21',202404,1,2024,21,4,202401,2024),('2024-01-22',202404,1,2024,22,4,202401,2024),('2024-01-23',202404,1,2024,23,4,202401,2024),('2024-01-24',202404,1,2024,24,4,202401,2024),('2024-01-25',202404,1,2024,25,4,202401,2024),('2024-01-26',202404,1,2024,26,4,202401,2024),('2024-01-27',202404,1,2024,27,4,202401,2024),('2024-01-28',202405,1,2024,28,5,202401,2024),('2024-01-29',202405,1,2024,29,5,202401,2024),('2024-01-30',202405,1,2024,30,5,202401,2024),('2024-01-31',202405,1,2024,31,5,202401,2024),('2024-02-01',202405,2,2024,1,5,202402,2024),('2024-02-02',202405,2,2024,2,5,202402,2024),('2024-02-03',202405,2,2024,3,5,202402,2024),('2024-02-04',202406,2,2024,4,6,202402,2024),('2024-02-05',202406,2,2024,5,6,202402,2024),('2024-02-06',202406,2,2024,6,6,202402,2024),('2024-02-07',202406,2,2024,7,6,202402,2024),('2024-02-08',202406,2,2024,8,6,202402,2024),('2024-02-09',202406,2,2024,9,6,202402,2024),('2024-02-10',202406,2,2024,10,6,202402,2024),('2024-02-11',202407,2,2024,11,7,202402,2024),('2024-02-12',202407,2,2024,12,7,202402,2024),('2024-02-13',202407,2,2024,13,7,202402,2024),('2024-02-14',202407,2,2024,14,7,202402,2024),('2024-02-15',202407,2,2024,15,7,202402,2024),('2024-02-16',202407,2,2024,16,7,202402,2024),('2024-02-17',202407,2,2024,17,7,202402,2024),('2024-02-18',202408,2,2024,18,8,202402,2024),('2024-02-19',202408,2,2024,19,8,202402,2024),('2024-02-20',202408,2,2024,20,8,202402,2024),('2024-02-21',202408,2,2024,21,8,202402,2024),('2024-02-22',202408,2,2024,22,8,202402,2024),('2024-02-23',202408,2,2024,23,8,202402,2024),('2024-02-24',202408,2,2024,24,8,202402,2024),('2024-02-25',202409,2,2024,25,9,202402,2024),('2024-02-26',202409,2,2024,26,9,202402,2024),('2024-02-27',202409,2,2024,27,9,202402,2024),('2024-02-28',202409,2,2024,28,9,202402,2024),('2024-02-29',202409,2,2024,29,9,202402,2024),('2024-03-01',202409,3,2024,1,9,202403,2024),('2024-03-02',202409,3,2024,2,9,202403,2024),('2024-03-03',202410,3,2024,3,10,202403,2024),('2024-03-04',202410,3,2024,4,10,202403,2024),('2024-03-05',202410,3,2024,5,10,202403,2024),('2024-03-06',202410,3,2024,6,10,202403,2024),('2024-03-07',202410,3,2024,7,10,202403,2024),('2024-03-08',202410,3,2024,8,10,202403,2024),('2024-03-09',202410,3,2024,9,10,202403,2024),('2024-03-10',202411,3,2024,10,11,202403,2024),('2024-03-11',202411,3,2024,11,11,202403,2024),('2024-03-12',202411,3,2024,12,11,202403,2024),('2024-03-13',202411,3,2024,13,11,202403,2024),('2024-03-14',202411,3,2024,14,11,202403,2024),('2024-03-15',202411,3,2024,15,11,202403,2024),('2024-03-16',202411,3,2024,16,11,202403,2024),('2024-03-17',202412,3,2024,17,12,202403,2024),('2024-03-18',202412,3,2024,18,12,202403,2024),('2024-03-19',202412,3,2024,19,12,202403,2024),('2024-03-20',202412,3,2024,20,12,202403,2024),('2024-03-21',202412,3,2024,21,12,202403,2024),('2024-03-22',202412,3,2024,22,12,202403,2024),('2024-03-23',202412,3,2024,23,12,202403,2024),('2024-03-24',202413,3,2024,24,13,202403,2024),('2024-03-25',202413,3,2024,25,13,202403,2024),('2024-03-26',202413,3,2024,26,13,202403,2024),('2024-03-27',202413,3,2024,27,13,202403,2024),('2024-03-28',202413,3,2024,28,13,202403,2024),('2024-03-29',202413,3,2024,29,13,202403,2024),('2024-03-30',202413,3,2024,30,13,202403,2024),('2024-03-31',202414,3,2024,31,14,202403,2024),('2024-04-01',202414,4,2024,1,14,202404,2024),('2024-04-02',202414,4,2024,2,14,202404,2024),('2024-04-03',202414,4,2024,3,14,202404,2024),('2024-04-04',202414,4,2024,4,14,202404,2024),('2024-04-05',202414,4,2024,5,14,202404,2024),('2024-04-06',202414,4,2024,6,14,202404,2024),('2024-04-07',202415,4,2024,7,15,202404,2024),('2024-04-08',202415,4,2024,8,15,202404,2024),('2024-04-09',202415,4,2024,9,15,202404,2024),('2024-04-10',202415,4,2024,10,15,202404,2024),('2024-04-11',202415,4,2024,11,15,202404,2024),('2024-04-12',202415,4,2024,12,15,202404,2024),('2024-04-13',202415,4,2024,13,15,202404,2024),('2024-04-14',202416,4,2024,14,16,202404,2024),('2024-04-15',202416,4,2024,15,16,202404,2024),('2024-04-16',202416,4,2024,16,16,202404,2024),('2024-04-17',202416,4,2024,17,16,202404,2024),('2024-04-18',202416,4,2024,18,16,202404,2024),('2024-04-19',202416,4,2024,19,16,202404,2024),('2024-04-20',202416,4,2024,20,16,202404,2024),('2024-04-21',202417,4,2024,21,17,202404,2024),('2024-04-22',202417,4,2024,22,17,202404,2024),('2024-04-23',202417,4,2024,23,17,202404,2024),('2024-04-24',202417,4,2024,24,17,202404,2024),('2024-04-25',202417,4,2024,25,17,202404,2024),('2024-04-26',202417,4,2024,26,17,202404,2024),('2024-04-27',202417,4,2024,27,17,202404,2024),('2024-04-28',202418,4,2024,28,18,202404,2024),('2024-04-29',202418,4,2024,29,18,202404,2024),('2024-04-30',202418,4,2024,30,18,202404,2024),('2024-05-01',202418,5,2024,1,18,202405,2024),('2024-05-02',202418,5,2024,2,18,202405,2024),('2024-05-03',202418,5,2024,3,18,202405,2024),('2024-05-04',202418,5,2024,4,18,202405,2024),('2024-05-05',202419,5,2024,5,19,202405,2024),('2024-05-06',202419,5,2024,6,19,202405,2024),('2024-05-07',202419,5,2024,7,19,202405,2024),('2024-05-08',202419,5,2024,8,19,202405,2024),('2024-05-09',202419,5,2024,9,19,202405,2024),('2024-05-10',202419,5,2024,10,19,202405,2024),('2024-05-11',202419,5,2024,11,19,202405,2024),('2024-05-12',202420,5,2024,12,20,202405,2024),('2024-05-13',202420,5,2024,13,20,202405,2024),('2024-05-14',202420,5,2024,14,20,202405,2024),('2024-05-15',202420,5,2024,15,20,202405,2024),('2024-05-16',202420,5,2024,16,20,202405,2024),('2024-05-17',202420,5,2024,17,20,202405,2024),('2024-05-18',202420,5,2024,18,20,202405,2024),('2024-05-19',202421,5,2024,19,21,202405,2024),('2024-05-20',202421,5,2024,20,21,202405,2024),('2024-05-21',202421,5,2024,21,21,202405,2024),('2024-05-22',202421,5,2024,22,21,202405,2024),('2024-05-23',202421,5,2024,23,21,202405,2024),('2024-05-24',202421,5,2024,24,21,202405,2024),('2024-05-25',202421,5,2024,25,21,202405,2024),('2024-05-26',202422,5,2024,26,22,202405,2024),('2024-05-27',202422,5,2024,27,22,202405,2024),('2024-05-28',202422,5,2024,28,22,202405,2024),('2024-05-29',202422,5,2024,29,22,202405,2024),('2024-05-30',202422,5,2024,30,22,202405,2024),('2024-05-31',202422,5,2024,31,22,202405,2024),('2024-06-01',202422,6,2024,1,22,202406,2024),('2024-06-02',202423,6,2024,2,23,202406,2024),('2024-06-03',202423,6,2024,3,23,202406,2024),('2024-06-04',202423,6,2024,4,23,202406,2024),('2024-06-05',202423,6,2024,5,23,202406,2024),('2024-06-06',202423,6,2024,6,23,202406,2024),('2024-06-07',202423,6,2024,7,23,202406,2024),('2024-06-08',202423,6,2024,8,23,202406,2024),('2024-06-09',202424,6,2024,9,24,202406,2024),('2024-06-10',202424,6,2024,10,24,202406,2024),('2024-06-11',202424,6,2024,11,24,202406,2024),('2024-06-12',202424,6,2024,12,24,202406,2024),('2024-06-13',202424,6,2024,13,24,202406,2024),('2024-06-14',202424,6,2024,14,24,202406,2024),('2024-06-15',202424,6,2024,15,24,202406,2024),('2024-06-16',202425,6,2024,16,25,202406,2024),('2024-06-17',202425,6,2024,17,25,202406,2024),('2024-06-18',202425,6,2024,18,25,202406,2024),('2024-06-19',202425,6,2024,19,25,202406,2024),('2024-06-20',202425,6,2024,20,25,202406,2024),('2024-06-21',202425,6,2024,21,25,202406,2024),('2024-06-22',202425,6,2024,22,25,202406,2024),('2024-06-23',202426,6,2024,23,26,202406,2024),('2024-06-24',202426,6,2024,24,26,202406,2024),('2024-06-25',202426,6,2024,25,26,202406,2024),('2024-06-26',202426,6,2024,26,26,202406,2024),('2024-06-27',202426,6,2024,27,26,202406,2024),('2024-06-28',202426,6,2024,28,26,202406,2024),('2024-06-29',202426,6,2024,29,26,202406,2024),('2024-06-30',202427,6,2024,30,27,202406,2024),('2024-07-01',202427,7,2024,1,27,202407,2024),('2024-07-02',202427,7,2024,2,27,202407,2024),('2024-07-03',202427,7,2024,3,27,202407,2024),('2024-07-04',202427,7,2024,4,27,202407,2024),('2024-07-05',202427,7,2024,5,27,202407,2024),('2024-07-06',202427,7,2024,6,27,202407,2024),('2024-07-07',202428,7,2024,7,28,202407,2024),('2024-07-08',202428,7,2024,8,28,202407,2024),('2024-07-09',202428,7,2024,9,28,202407,2024),('2024-07-10',202428,7,2024,10,28,202407,2024),('2024-07-11',202428,7,2024,11,28,202407,2024),('2024-07-12',202428,7,2024,12,28,202407,2024),('2024-07-13',202428,7,2024,13,28,202407,2024),('2024-07-14',202429,7,2024,14,29,202407,2024),('2024-07-15',202429,7,2024,15,29,202407,2024),('2024-07-16',202429,7,2024,16,29,202407,2024),('2024-07-17',202429,7,2024,17,29,202407,2024),('2024-07-18',202429,7,2024,18,29,202407,2024),('2024-07-19',202429,7,2024,19,29,202407,2024),('2024-07-20',202429,7,2024,20,29,202407,2024),('2024-07-21',202430,7,2024,21,30,202407,2024),('2024-07-22',202430,7,2024,22,30,202407,2024),('2024-07-23',202430,7,2024,23,30,202407,2024),('2024-07-24',202430,7,2024,24,30,202407,2024),('2024-07-25',202430,7,2024,25,30,202407,2024),('2024-07-26',202430,7,2024,26,30,202407,2024),('2024-07-27',202430,7,2024,27,30,202407,2024),('2024-07-28',202431,7,2024,28,31,202407,2024),('2024-07-29',202431,7,2024,29,31,202407,2024),('2024-07-30',202431,7,2024,30,31,202407,2024),('2024-07-31',202431,7,2024,31,31,202407,2024),('2024-08-01',202431,8,2024,1,31,202408,2024),('2024-08-02',202431,8,2024,2,31,202408,2024),('2024-08-03',202431,8,2024,3,31,202408,2024),('2024-08-04',202432,8,2024,4,32,202408,2024),('2024-08-05',202432,8,2024,5,32,202408,2024),('2024-08-06',202432,8,2024,6,32,202408,2024),('2024-08-07',202432,8,2024,7,32,202408,2024),('2024-08-08',202432,8,2024,8,32,202408,2024),('2024-08-09',202432,8,2024,9,32,202408,2024),('2024-08-10',202432,8,2024,10,32,202408,2024),('2024-08-11',202433,8,2024,11,33,202408,2024),('2024-08-12',202433,8,2024,12,33,202408,2024),('2024-08-13',202433,8,2024,13,33,202408,2024),('2024-08-14',202433,8,2024,14,33,202408,2024),('2024-08-15',202433,8,2024,15,33,202408,2024),('2024-08-16',202433,8,2024,16,33,202408,2024),('2024-08-17',202433,8,2024,17,33,202408,2024),('2024-08-18',202434,8,2024,18,34,202408,2024),('2024-08-19',202434,8,2024,19,34,202408,2024),('2024-08-20',202434,8,2024,20,34,202408,2024),('2024-08-21',202434,8,2024,21,34,202408,2024),('2024-08-22',202434,8,2024,22,34,202408,2024),('2024-08-23',202434,8,2024,23,34,202408,2024),('2024-08-24',202434,8,2024,24,34,202408,2024),('2024-08-25',202435,8,2024,25,35,202408,2024),('2024-08-26',202435,8,2024,26,35,202408,2024),('2024-08-27',202435,8,2024,27,35,202408,2024),('2024-08-28',202435,8,2024,28,35,202408,2024),('2024-08-29',202435,8,2024,29,35,202408,2024),('2024-08-30',202435,8,2024,30,35,202408,2024),('2024-08-31',202435,8,2024,31,35,202408,2024),('2024-09-01',202436,9,2024,1,36,202409,2024),('2024-09-02',202436,9,2024,2,36,202409,2024),('2024-09-03',202436,9,2024,3,36,202409,2024),('2024-09-04',202436,9,2024,4,36,202409,2024),('2024-09-05',202436,9,2024,5,36,202409,2024),('2024-09-06',202436,9,2024,6,36,202409,2024),('2024-09-07',202436,9,2024,7,36,202409,2024),('2024-09-08',202437,9,2024,8,37,202409,2024),('2024-09-09',202437,9,2024,9,37,202409,2024),('2024-09-10',202437,9,2024,10,37,202409,2024),('2024-09-11',202437,9,2024,11,37,202409,2024),('2024-09-12',202437,9,2024,12,37,202409,2024),('2024-09-13',202437,9,2024,13,37,202409,2024),('2024-09-14',202437,9,2024,14,37,202409,2024),('2024-09-15',202438,9,2024,15,38,202409,2024),('2024-09-16',202438,9,2024,16,38,202409,2024),('2024-09-17',202438,9,2024,17,38,202409,2024),('2024-09-18',202438,9,2024,18,38,202409,2024),('2024-09-19',202438,9,2024,19,38,202409,2024),('2024-09-20',202438,9,2024,20,38,202409,2024),('2024-09-21',202438,9,2024,21,38,202409,2024),('2024-09-22',202439,9,2024,22,39,202409,2024),('2024-09-23',202439,9,2024,23,39,202409,2024),('2024-09-24',202439,9,2024,24,39,202409,2024),('2024-09-25',202439,9,2024,25,39,202409,2024),('2024-09-26',202439,9,2024,26,39,202409,2024),('2024-09-27',202439,9,2024,27,39,202409,2024),('2024-09-28',202439,9,2024,28,39,202409,2024),('2024-09-29',202440,9,2024,29,40,202409,2024),('2024-09-30',202440,9,2024,30,40,202409,2024),('2024-10-01',202440,10,2024,1,40,202410,2024),('2024-10-02',202440,10,2024,2,40,202410,2024),('2024-10-03',202440,10,2024,3,40,202410,2024),('2024-10-04',202440,10,2024,4,40,202410,2024),('2024-10-05',202440,10,2024,5,40,202410,2024),('2024-10-06',202441,10,2024,6,41,202410,2024),('2024-10-07',202441,10,2024,7,41,202410,2024),('2024-10-08',202441,10,2024,8,41,202410,2024),('2024-10-09',202441,10,2024,9,41,202410,2024),('2024-10-10',202441,10,2024,10,41,202410,2024),('2024-10-11',202441,10,2024,11,41,202410,2024),('2024-10-12',202441,10,2024,12,41,202410,2024),('2024-10-13',202442,10,2024,13,42,202410,2024),('2024-10-14',202442,10,2024,14,42,202410,2024),('2024-10-15',202442,10,2024,15,42,202410,2024),('2024-10-16',202442,10,2024,16,42,202410,2024),('2024-10-17',202442,10,2024,17,42,202410,2024),('2024-10-18',202442,10,2024,18,42,202410,2024),('2024-10-19',202442,10,2024,19,42,202410,2024),('2024-10-20',202443,10,2024,20,43,202410,2024),('2024-10-21',202443,10,2024,21,43,202410,2024),('2024-10-22',202443,10,2024,22,43,202410,2024),('2024-10-23',202443,10,2024,23,43,202410,2024),('2024-10-24',202443,10,2024,24,43,202410,2024),('2024-10-25',202443,10,2024,25,43,202410,2024),('2024-10-26',202443,10,2024,26,43,202410,2024),('2024-10-27',202444,10,2024,27,44,202410,2024),('2024-10-28',202444,10,2024,28,44,202410,2024),('2024-10-29',202444,10,2024,29,44,202410,2024),('2024-10-30',202444,10,2024,30,44,202410,2024),('2024-10-31',202444,10,2024,31,44,202410,2024),('2024-11-01',202444,11,2024,1,44,202411,2024),('2024-11-02',202444,11,2024,2,44,202411,2024),('2024-11-03',202445,11,2024,3,45,202411,2024),('2024-11-04',202445,11,2024,4,45,202411,2024),('2024-11-05',202445,11,2024,5,45,202411,2024),('2024-11-06',202445,11,2024,6,45,202411,2024),('2024-11-07',202445,11,2024,7,45,202411,2024),('2024-11-08',202445,11,2024,8,45,202411,2024),('2024-11-09',202445,11,2024,9,45,202411,2024),('2024-11-10',202446,11,2024,10,46,202411,2024),('2024-11-11',202446,11,2024,11,46,202411,2024),('2024-11-12',202446,11,2024,12,46,202411,2024),('2024-11-13',202446,11,2024,13,46,202411,2024),('2024-11-14',202446,11,2024,14,46,202411,2024),('2024-11-15',202446,11,2024,15,46,202411,2024),('2024-11-16',202446,11,2024,16,46,202411,2024),('2024-11-17',202447,11,2024,17,47,202411,2024),('2024-11-18',202447,11,2024,18,47,202411,2024),('2024-11-19',202447,11,2024,19,47,202411,2024),('2024-11-20',202447,11,2024,20,47,202411,2024),('2024-11-21',202447,11,2024,21,47,202411,2024),('2024-11-22',202447,11,2024,22,47,202411,2024),('2024-11-23',202447,11,2024,23,47,202411,2024),('2024-11-24',202448,11,2024,24,48,202411,2024),('2024-11-25',202448,11,2024,25,48,202411,2024),('2024-11-26',202448,11,2024,26,48,202411,2024),('2024-11-27',202448,11,2024,27,48,202411,2024),('2024-11-28',202448,11,2024,28,48,202411,2024),('2024-11-29',202448,11,2024,29,48,202411,2024),('2024-11-30',202448,11,2024,30,48,202411,2024),('2024-12-01',202449,12,2024,1,49,202412,2025),('2024-12-02',202449,12,2024,2,49,202412,2025),('2024-12-03',202449,12,2024,3,49,202412,2025),('2024-12-04',202449,12,2024,4,49,202412,2025),('2024-12-05',202449,12,2024,5,49,202412,2025),('2024-12-06',202449,12,2024,6,49,202412,2025),('2024-12-07',202449,12,2024,7,49,202412,2025),('2024-12-08',202450,12,2024,8,50,202412,2025),('2024-12-09',202450,12,2024,9,50,202412,2025),('2024-12-10',202450,12,2024,10,50,202412,2025),('2024-12-11',202450,12,2024,11,50,202412,2025),('2024-12-12',202450,12,2024,12,50,202412,2025),('2024-12-13',202450,12,2024,13,50,202412,2025),('2024-12-14',202450,12,2024,14,50,202412,2025),('2024-12-15',202451,12,2024,15,51,202412,2025),('2024-12-16',202451,12,2024,16,51,202412,2025),('2024-12-17',202451,12,2024,17,51,202412,2025),('2024-12-18',202451,12,2024,18,51,202412,2025),('2024-12-19',202451,12,2024,19,51,202412,2025),('2024-12-20',202451,12,2024,20,51,202412,2025),('2024-12-21',202451,12,2024,21,51,202412,2025),('2024-12-22',202452,12,2024,22,52,202412,2025),('2024-12-23',202452,12,2024,23,52,202412,2025),('2024-12-24',202452,12,2024,24,52,202412,2025),('2024-12-25',202452,12,2024,25,52,202412,2025),('2024-12-26',202452,12,2024,26,52,202412,2025),('2024-12-27',202452,12,2024,27,52,202412,2025),('2024-12-28',202452,12,2024,28,52,202412,2025),('2024-12-29',202453,12,2024,29,1,202412,2025),('2024-12-30',202401,12,2024,30,1,202412,2025),('2024-12-31',202401,12,2024,31,1,202412,2025),('2025-01-01',202501,1,2025,1,1,202501,2025),('2025-01-02',202501,1,2025,2,1,202501,2025),('2025-01-03',202501,1,2025,3,1,202501,2025),('2025-01-04',202501,1,2025,4,1,202501,2025),('2025-01-05',202502,1,2025,5,2,202501,2025),('2025-01-06',202502,1,2025,6,2,202501,2025),('2025-01-07',202502,1,2025,7,2,202501,2025),('2025-01-08',202502,1,2025,8,2,202501,2025),('2025-01-09',202502,1,2025,9,2,202501,2025),('2025-01-10',202502,1,2025,10,2,202501,2025),('2025-01-11',202502,1,2025,11,2,202501,2025),('2025-01-12',202503,1,2025,12,3,202501,2025),('2025-01-13',202503,1,2025,13,3,202501,2025),('2025-01-14',202503,1,2025,14,3,202501,2025),('2025-01-15',202503,1,2025,15,3,202501,2025),('2025-01-16',202503,1,2025,16,3,202501,2025),('2025-01-17',202503,1,2025,17,3,202501,2025),('2025-01-18',202503,1,2025,18,3,202501,2025),('2025-01-19',202504,1,2025,19,4,202501,2025),('2025-01-20',202504,1,2025,20,4,202501,2025),('2025-01-21',202504,1,2025,21,4,202501,2025),('2025-01-22',202504,1,2025,22,4,202501,2025),('2025-01-23',202504,1,2025,23,4,202501,2025),('2025-01-24',202504,1,2025,24,4,202501,2025),('2025-01-25',202504,1,2025,25,4,202501,2025),('2025-01-26',202505,1,2025,26,5,202501,2025),('2025-01-27',202505,1,2025,27,5,202501,2025),('2025-01-28',202505,1,2025,28,5,202501,2025),('2025-01-29',202505,1,2025,29,5,202501,2025),('2025-01-30',202505,1,2025,30,5,202501,2025),('2025-01-31',202505,1,2025,31,5,202501,2025),('2025-02-01',202505,2,2025,1,5,202502,2025),('2025-02-02',202506,2,2025,2,6,202502,2025),('2025-02-03',202506,2,2025,3,6,202502,2025),('2025-02-04',202506,2,2025,4,6,202502,2025),('2025-02-05',202506,2,2025,5,6,202502,2025),('2025-02-06',202506,2,2025,6,6,202502,2025),('2025-02-07',202506,2,2025,7,6,202502,2025),('2025-02-08',202506,2,2025,8,6,202502,2025),('2025-02-09',202507,2,2025,9,7,202502,2025),('2025-02-10',202507,2,2025,10,7,202502,2025),('2025-02-11',202507,2,2025,11,7,202502,2025),('2025-02-12',202507,2,2025,12,7,202502,2025),('2025-02-13',202507,2,2025,13,7,202502,2025),('2025-02-14',202507,2,2025,14,7,202502,2025),('2025-02-15',202507,2,2025,15,7,202502,2025),('2025-02-16',202508,2,2025,16,8,202502,2025),('2025-02-17',202508,2,2025,17,8,202502,2025),('2025-02-18',202508,2,2025,18,8,202502,2025),('2025-02-19',202508,2,2025,19,8,202502,2025),('2025-02-20',202508,2,2025,20,8,202502,2025),('2025-02-21',202508,2,2025,21,8,202502,2025),('2025-02-22',202508,2,2025,22,8,202502,2025),('2025-02-23',202509,2,2025,23,9,202502,2025),('2025-02-24',202509,2,2025,24,9,202502,2025),('2025-02-25',202509,2,2025,25,9,202502,2025),('2025-02-26',202509,2,2025,26,9,202502,2025),('2025-02-27',202509,2,2025,27,9,202502,2025),('2025-02-28',202509,2,2025,28,9,202502,2025),('2025-03-01',202509,3,2025,1,9,202503,2025),('2025-03-02',202510,3,2025,2,10,202503,2025),('2025-03-03',202510,3,2025,3,10,202503,2025),('2025-03-04',202510,3,2025,4,10,202503,2025),('2025-03-05',202510,3,2025,5,10,202503,2025),('2025-03-06',202510,3,2025,6,10,202503,2025),('2025-03-07',202510,3,2025,7,10,202503,2025),('2025-03-08',202510,3,2025,8,10,202503,2025),('2025-03-09',202511,3,2025,9,11,202503,2025),('2025-03-10',202511,3,2025,10,11,202503,2025),('2025-03-11',202511,3,2025,11,11,202503,2025),('2025-03-12',202511,3,2025,12,11,202503,2025),('2025-03-13',202511,3,2025,13,11,202503,2025),('2025-03-14',202511,3,2025,14,11,202503,2025),('2025-03-15',202511,3,2025,15,11,202503,2025),('2025-03-16',202512,3,2025,16,12,202503,2025),('2025-03-17',202512,3,2025,17,12,202503,2025),('2025-03-18',202512,3,2025,18,12,202503,2025),('2025-03-19',202512,3,2025,19,12,202503,2025),('2025-03-20',202512,3,2025,20,12,202503,2025),('2025-03-21',202512,3,2025,21,12,202503,2025),('2025-03-22',202512,3,2025,22,12,202503,2025),('2025-03-23',202513,3,2025,23,13,202503,2025),('2025-03-24',202513,3,2025,24,13,202503,2025),('2025-03-25',202513,3,2025,25,13,202503,2025),('2025-03-26',202513,3,2025,26,13,202503,2025),('2025-03-27',202513,3,2025,27,13,202503,2025),('2025-03-28',202513,3,2025,28,13,202503,2025),('2025-03-29',202513,3,2025,29,13,202503,2025),('2025-03-30',202514,3,2025,30,14,202503,2025),('2025-03-31',202514,3,2025,31,14,202503,2025),('2025-04-01',202514,4,2025,1,14,202504,2025),('2025-04-02',202514,4,2025,2,14,202504,2025),('2025-04-03',202514,4,2025,3,14,202504,2025),('2025-04-04',202514,4,2025,4,14,202504,2025),('2025-04-05',202514,4,2025,5,14,202504,2025),('2025-04-06',202515,4,2025,6,15,202504,2025),('2025-04-07',202515,4,2025,7,15,202504,2025),('2025-04-08',202515,4,2025,8,15,202504,2025),('2025-04-09',202515,4,2025,9,15,202504,2025),('2025-04-10',202515,4,2025,10,15,202504,2025),('2025-04-11',202515,4,2025,11,15,202504,2025),('2025-04-12',202515,4,2025,12,15,202504,2025),('2025-04-13',202516,4,2025,13,16,202504,2025),('2025-04-14',202516,4,2025,14,16,202504,2025),('2025-04-15',202516,4,2025,15,16,202504,2025),('2025-04-16',202516,4,2025,16,16,202504,2025),('2025-04-17',202516,4,2025,17,16,202504,2025),('2025-04-18',202516,4,2025,18,16,202504,2025),('2025-04-19',202516,4,2025,19,16,202504,2025),('2025-04-20',202517,4,2025,20,17,202504,2025),('2025-04-21',202517,4,2025,21,17,202504,2025),('2025-04-22',202517,4,2025,22,17,202504,2025),('2025-04-23',202517,4,2025,23,17,202504,2025),('2025-04-24',202517,4,2025,24,17,202504,2025),('2025-04-25',202517,4,2025,25,17,202504,2025),('2025-04-26',202517,4,2025,26,17,202504,2025),('2025-04-27',202518,4,2025,27,18,202504,2025),('2025-04-28',202518,4,2025,28,18,202504,2025),('2025-04-29',202518,4,2025,29,18,202504,2025),('2025-04-30',202518,4,2025,30,18,202504,2025),('2025-05-01',202518,5,2025,1,18,202505,2025),('2025-05-02',202518,5,2025,2,18,202505,2025),('2025-05-03',202518,5,2025,3,18,202505,2025),('2025-05-04',202519,5,2025,4,19,202505,2025),('2025-05-05',202519,5,2025,5,19,202505,2025),('2025-05-06',202519,5,2025,6,19,202505,2025),('2025-05-07',202519,5,2025,7,19,202505,2025),('2025-05-08',202519,5,2025,8,19,202505,2025),('2025-05-09',202519,5,2025,9,19,202505,2025),('2025-05-10',202519,5,2025,10,19,202505,2025),('2025-05-11',202520,5,2025,11,20,202505,2025),('2025-05-12',202520,5,2025,12,20,202505,2025),('2025-05-13',202520,5,2025,13,20,202505,2025),('2025-05-14',202520,5,2025,14,20,202505,2025),('2025-05-15',202520,5,2025,15,20,202505,2025),('2025-05-16',202520,5,2025,16,20,202505,2025),('2025-05-17',202520,5,2025,17,20,202505,2025),('2025-05-18',202521,5,2025,18,21,202505,2025),('2025-05-19',202521,5,2025,19,21,202505,2025),('2025-05-20',202521,5,2025,20,21,202505,2025),('2025-05-21',202521,5,2025,21,21,202505,2025),('2025-05-22',202521,5,2025,22,21,202505,2025),('2025-05-23',202521,5,2025,23,21,202505,2025),('2025-05-24',202521,5,2025,24,21,202505,2025),('2025-05-25',202522,5,2025,25,22,202505,2025),('2025-05-26',202522,5,2025,26,22,202505,2025),('2025-05-27',202522,5,2025,27,22,202505,2025),('2025-05-28',202522,5,2025,28,22,202505,2025),('2025-05-29',202522,5,2025,29,22,202505,2025),('2025-05-30',202522,5,2025,30,22,202505,2025),('2025-05-31',202522,5,2025,31,22,202505,2025),('2025-06-01',202523,6,2025,1,23,202506,2025),('2025-06-02',202523,6,2025,2,23,202506,2025),('2025-06-03',202523,6,2025,3,23,202506,2025),('2025-06-04',202523,6,2025,4,23,202506,2025),('2025-06-05',202523,6,2025,5,23,202506,2025),('2025-06-06',202523,6,2025,6,23,202506,2025),('2025-06-07',202523,6,2025,7,23,202506,2025),('2025-06-08',202524,6,2025,8,24,202506,2025),('2025-06-09',202524,6,2025,9,24,202506,2025),('2025-06-10',202524,6,2025,10,24,202506,2025),('2025-06-11',202524,6,2025,11,24,202506,2025),('2025-06-12',202524,6,2025,12,24,202506,2025),('2025-06-13',202524,6,2025,13,24,202506,2025),('2025-06-14',202524,6,2025,14,24,202506,2025),('2025-06-15',202525,6,2025,15,25,202506,2025),('2025-06-16',202525,6,2025,16,25,202506,2025),('2025-06-17',202525,6,2025,17,25,202506,2025),('2025-06-18',202525,6,2025,18,25,202506,2025),('2025-06-19',202525,6,2025,19,25,202506,2025),('2025-06-20',202525,6,2025,20,25,202506,2025),('2025-06-21',202525,6,2025,21,25,202506,2025),('2025-06-22',202526,6,2025,22,26,202506,2025),('2025-06-23',202526,6,2025,23,26,202506,2025),('2025-06-24',202526,6,2025,24,26,202506,2025),('2025-06-25',202526,6,2025,25,26,202506,2025),('2025-06-26',202526,6,2025,26,26,202506,2025),('2025-06-27',202526,6,2025,27,26,202506,2025),('2025-06-28',202526,6,2025,28,26,202506,2025),('2025-06-29',202527,6,2025,29,27,202506,2025),('2025-06-30',202527,6,2025,30,27,202506,2025),('2025-07-01',202527,7,2025,1,27,202507,2025),('2025-07-02',202527,7,2025,2,27,202507,2025),('2025-07-03',202527,7,2025,3,27,202507,2025),('2025-07-04',202527,7,2025,4,27,202507,2025),('2025-07-05',202527,7,2025,5,27,202507,2025),('2025-07-06',202528,7,2025,6,28,202507,2025),('2025-07-07',202528,7,2025,7,28,202507,2025),('2025-07-08',202528,7,2025,8,28,202507,2025),('2025-07-09',202528,7,2025,9,28,202507,2025),('2025-07-10',202528,7,2025,10,28,202507,2025),('2025-07-11',202528,7,2025,11,28,202507,2025),('2025-07-12',202528,7,2025,12,28,202507,2025),('2025-07-13',202529,7,2025,13,29,202507,2025),('2025-07-14',202529,7,2025,14,29,202507,2025),('2025-07-15',202529,7,2025,15,29,202507,2025),('2025-07-16',202529,7,2025,16,29,202507,2025),('2025-07-17',202529,7,2025,17,29,202507,2025),('2025-07-18',202529,7,2025,18,29,202507,2025),('2025-07-19',202529,7,2025,19,29,202507,2025),('2025-07-20',202530,7,2025,20,30,202507,2025),('2025-07-21',202530,7,2025,21,30,202507,2025),('2025-07-22',202530,7,2025,22,30,202507,2025),('2025-07-23',202530,7,2025,23,30,202507,2025),('2025-07-24',202530,7,2025,24,30,202507,2025),('2025-07-25',202530,7,2025,25,30,202507,2025),('2025-07-26',202530,7,2025,26,30,202507,2025),('2025-07-27',202531,7,2025,27,31,202507,2025),('2025-07-28',202531,7,2025,28,31,202507,2025),('2025-07-29',202531,7,2025,29,31,202507,2025),('2025-07-30',202531,7,2025,30,31,202507,2025),('2025-07-31',202531,7,2025,31,31,202507,2025),('2025-08-01',202531,8,2025,1,31,202508,2025),('2025-08-02',202531,8,2025,2,31,202508,2025),('2025-08-03',202532,8,2025,3,32,202508,2025),('2025-08-04',202532,8,2025,4,32,202508,2025),('2025-08-05',202532,8,2025,5,32,202508,2025),('2025-08-06',202532,8,2025,6,32,202508,2025),('2025-08-07',202532,8,2025,7,32,202508,2025),('2025-08-08',202532,8,2025,8,32,202508,2025),('2025-08-09',202532,8,2025,9,32,202508,2025),('2025-08-10',202533,8,2025,10,33,202508,2025),('2025-08-11',202533,8,2025,11,33,202508,2025),('2025-08-12',202533,8,2025,12,33,202508,2025),('2025-08-13',202533,8,2025,13,33,202508,2025),('2025-08-14',202533,8,2025,14,33,202508,2025),('2025-08-15',202533,8,2025,15,33,202508,2025),('2025-08-16',202533,8,2025,16,33,202508,2025),('2025-08-17',202534,8,2025,17,34,202508,2025),('2025-08-18',202534,8,2025,18,34,202508,2025),('2025-08-19',202534,8,2025,19,34,202508,2025),('2025-08-20',202534,8,2025,20,34,202508,2025),('2025-08-21',202534,8,2025,21,34,202508,2025),('2025-08-22',202534,8,2025,22,34,202508,2025),('2025-08-23',202534,8,2025,23,34,202508,2025),('2025-08-24',202535,8,2025,24,35,202508,2025),('2025-08-25',202535,8,2025,25,35,202508,2025),('2025-08-26',202535,8,2025,26,35,202508,2025),('2025-08-27',202535,8,2025,27,35,202508,2025),('2025-08-28',202535,8,2025,28,35,202508,2025),('2025-08-29',202535,8,2025,29,35,202508,2025),('2025-08-30',202535,8,2025,30,35,202508,2025),('2025-08-31',202536,8,2025,31,36,202508,2025),('2025-09-01',202536,9,2025,1,36,202509,2025),('2025-09-02',202536,9,2025,2,36,202509,2025),('2025-09-03',202536,9,2025,3,36,202509,2025),('2025-09-04',202536,9,2025,4,36,202509,2025),('2025-09-05',202536,9,2025,5,36,202509,2025),('2025-09-06',202536,9,2025,6,36,202509,2025),('2025-09-07',202537,9,2025,7,37,202509,2025),('2025-09-08',202537,9,2025,8,37,202509,2025),('2025-09-09',202537,9,2025,9,37,202509,2025),('2025-09-10',202537,9,2025,10,37,202509,2025),('2025-09-11',202537,9,2025,11,37,202509,2025),('2025-09-12',202537,9,2025,12,37,202509,2025),('2025-09-13',202537,9,2025,13,37,202509,2025),('2025-09-14',202538,9,2025,14,38,202509,2025),('2025-09-15',202538,9,2025,15,38,202509,2025),('2025-09-16',202538,9,2025,16,38,202509,2025),('2025-09-17',202538,9,2025,17,38,202509,2025),('2025-09-18',202538,9,2025,18,38,202509,2025),('2025-09-19',202538,9,2025,19,38,202509,2025),('2025-09-20',202538,9,2025,20,38,202509,2025),('2025-09-21',202539,9,2025,21,39,202509,2025),('2025-09-22',202539,9,2025,22,39,202509,2025),('2025-09-23',202539,9,2025,23,39,202509,2025),('2025-09-24',202539,9,2025,24,39,202509,2025),('2025-09-25',202539,9,2025,25,39,202509,2025),('2025-09-26',202539,9,2025,26,39,202509,2025),('2025-09-27',202539,9,2025,27,39,202509,2025),('2025-09-28',202540,9,2025,28,40,202509,2025),('2025-09-29',202540,9,2025,29,40,202509,2025),('2025-09-30',202540,9,2025,30,40,202509,2025),('2025-10-01',202540,10,2025,1,40,202510,2025),('2025-10-02',202540,10,2025,2,40,202510,2025),('2025-10-03',202540,10,2025,3,40,202510,2025),('2025-10-04',202540,10,2025,4,40,202510,2025),('2025-10-05',202541,10,2025,5,41,202510,2025),('2025-10-06',202541,10,2025,6,41,202510,2025),('2025-10-07',202541,10,2025,7,41,202510,2025),('2025-10-08',202541,10,2025,8,41,202510,2025),('2025-10-09',202541,10,2025,9,41,202510,2025),('2025-10-10',202541,10,2025,10,41,202510,2025),('2025-10-11',202541,10,2025,11,41,202510,2025),('2025-10-12',202542,10,2025,12,42,202510,2025),('2025-10-13',202542,10,2025,13,42,202510,2025),('2025-10-14',202542,10,2025,14,42,202510,2025),('2025-10-15',202542,10,2025,15,42,202510,2025),('2025-10-16',202542,10,2025,16,42,202510,2025),('2025-10-17',202542,10,2025,17,42,202510,2025),('2025-10-18',202542,10,2025,18,42,202510,2025),('2025-10-19',202543,10,2025,19,43,202510,2025),('2025-10-20',202543,10,2025,20,43,202510,2025),('2025-10-21',202543,10,2025,21,43,202510,2025),('2025-10-22',202543,10,2025,22,43,202510,2025),('2025-10-23',202543,10,2025,23,43,202510,2025),('2025-10-24',202543,10,2025,24,43,202510,2025),('2025-10-25',202543,10,2025,25,43,202510,2025),('2025-10-26',202544,10,2025,26,44,202510,2025),('2025-10-27',202544,10,2025,27,44,202510,2025),('2025-10-28',202544,10,2025,28,44,202510,2025),('2025-10-29',202544,10,2025,29,44,202510,2025),('2025-10-30',202544,10,2025,30,44,202510,2025),('2025-10-31',202544,10,2025,31,44,202510,2025),('2025-11-01',202544,11,2025,1,44,202511,2025),('2025-11-02',202545,11,2025,2,45,202511,2025),('2025-11-03',202545,11,2025,3,45,202511,2025),('2025-11-04',202545,11,2025,4,45,202511,2025),('2025-11-05',202545,11,2025,5,45,202511,2025),('2025-11-06',202545,11,2025,6,45,202511,2025),('2025-11-07',202545,11,2025,7,45,202511,2025),('2025-11-08',202545,11,2025,8,45,202511,2025),('2025-11-09',202546,11,2025,9,46,202511,2025),('2025-11-10',202546,11,2025,10,46,202511,2025),('2025-11-11',202546,11,2025,11,46,202511,2025),('2025-11-12',202546,11,2025,12,46,202511,2025),('2025-11-13',202546,11,2025,13,46,202511,2025),('2025-11-14',202546,11,2025,14,46,202511,2025),('2025-11-15',202546,11,2025,15,46,202511,2025),('2025-11-16',202547,11,2025,16,47,202511,2025),('2025-11-17',202547,11,2025,17,47,202511,2025),('2025-11-18',202547,11,2025,18,47,202511,2025),('2025-11-19',202547,11,2025,19,47,202511,2025),('2025-11-20',202547,11,2025,20,47,202511,2025),('2025-11-21',202547,11,2025,21,47,202511,2025),('2025-11-22',202547,11,2025,22,47,202511,2025),('2025-11-23',202548,11,2025,23,48,202511,2025),('2025-11-24',202548,11,2025,24,48,202511,2025),('2025-11-25',202548,11,2025,25,48,202511,2025),('2025-11-26',202548,11,2025,26,48,202511,2025),('2025-11-27',202548,11,2025,27,48,202511,2025),('2025-11-28',202548,11,2025,28,48,202511,2025),('2025-11-29',202548,11,2025,29,48,202511,2025),('2025-11-30',202549,11,2025,30,49,202511,2025),('2025-12-01',202549,12,2025,1,49,202512,2026),('2025-12-02',202549,12,2025,2,49,202512,2026),('2025-12-03',202549,12,2025,3,49,202512,2026),('2025-12-04',202549,12,2025,4,49,202512,2026),('2025-12-05',202549,12,2025,5,49,202512,2026),('2025-12-06',202549,12,2025,6,49,202512,2026),('2025-12-07',202550,12,2025,7,50,202512,2026),('2025-12-08',202550,12,2025,8,50,202512,2026),('2025-12-09',202550,12,2025,9,50,202512,2026),('2025-12-10',202550,12,2025,10,50,202512,2026),('2025-12-11',202550,12,2025,11,50,202512,2026),('2025-12-12',202550,12,2025,12,50,202512,2026),('2025-12-13',202550,12,2025,13,50,202512,2026),('2025-12-14',202551,12,2025,14,51,202512,2026),('2025-12-15',202551,12,2025,15,51,202512,2026),('2025-12-16',202551,12,2025,16,51,202512,2026),('2025-12-17',202551,12,2025,17,51,202512,2026),('2025-12-18',202551,12,2025,18,51,202512,2026),('2025-12-19',202551,12,2025,19,51,202512,2026),('2025-12-20',202551,12,2025,20,51,202512,2026),('2025-12-21',202552,12,2025,21,52,202512,2026),('2025-12-22',202552,12,2025,22,52,202512,2026),('2025-12-23',202552,12,2025,23,52,202512,2026),('2025-12-24',202552,12,2025,24,52,202512,2026),('2025-12-25',202552,12,2025,25,52,202512,2026),('2025-12-26',202552,12,2025,26,52,202512,2026),('2025-12-27',202552,12,2025,27,52,202512,2026),('2025-12-28',202553,12,2025,28,53,202512,2026),('2025-12-29',202501,12,2025,29,53,202512,2026),('2025-12-30',202501,12,2025,30,53,202512,2026),('2025-12-31',202501,12,2025,31,53,202512,2026),('2026-01-01',202601,1,2026,1,53,202601,2026),('2026-01-02',202601,1,2026,2,53,202601,2026),('2026-01-03',202601,1,2026,3,53,202601,2026),('2026-01-04',202602,1,2026,4,1,202601,2026),('2026-01-05',202602,1,2026,5,1,202601,2026),('2026-01-06',202602,1,2026,6,1,202601,2026),('2026-01-07',202602,1,2026,7,1,202601,2026),('2026-01-08',202602,1,2026,8,1,202601,2026),('2026-01-09',202602,1,2026,9,1,202601,2026),('2026-01-10',202602,1,2026,10,1,202601,2026),('2026-01-11',202603,1,2026,11,2,202601,2026),('2026-01-12',202603,1,2026,12,2,202601,2026),('2026-01-13',202603,1,2026,13,2,202601,2026),('2026-01-14',202603,1,2026,14,2,202601,2026),('2026-01-15',202603,1,2026,15,2,202601,2026),('2026-01-16',202603,1,2026,16,2,202601,2026),('2026-01-17',202603,1,2026,17,2,202601,2026),('2026-01-18',202604,1,2026,18,3,202601,2026),('2026-01-19',202604,1,2026,19,3,202601,2026),('2026-01-20',202604,1,2026,20,3,202601,2026),('2026-01-21',202604,1,2026,21,3,202601,2026),('2026-01-22',202604,1,2026,22,3,202601,2026),('2026-01-23',202604,1,2026,23,3,202601,2026),('2026-01-24',202604,1,2026,24,3,202601,2026),('2026-01-25',202605,1,2026,25,4,202601,2026),('2026-01-26',202605,1,2026,26,4,202601,2026),('2026-01-27',202605,1,2026,27,4,202601,2026),('2026-01-28',202605,1,2026,28,4,202601,2026),('2026-01-29',202605,1,2026,29,4,202601,2026),('2026-01-30',202605,1,2026,30,4,202601,2026),('2026-01-31',202605,1,2026,31,4,202601,2026),('2026-02-01',202606,2,2026,1,5,202602,2026),('2026-02-02',202606,2,2026,2,5,202602,2026),('2026-02-03',202606,2,2026,3,5,202602,2026),('2026-02-04',202606,2,2026,4,5,202602,2026),('2026-02-05',202606,2,2026,5,5,202602,2026),('2026-02-06',202606,2,2026,6,5,202602,2026),('2026-02-07',202606,2,2026,7,5,202602,2026),('2026-02-08',202607,2,2026,8,6,202602,2026),('2026-02-09',202607,2,2026,9,6,202602,2026),('2026-02-10',202607,2,2026,10,6,202602,2026),('2026-02-11',202607,2,2026,11,6,202602,2026),('2026-02-12',202607,2,2026,12,6,202602,2026),('2026-02-13',202607,2,2026,13,6,202602,2026),('2026-02-14',202607,2,2026,14,6,202602,2026),('2026-02-15',202608,2,2026,15,7,202602,2026),('2026-02-16',202608,2,2026,16,7,202602,2026),('2026-02-17',202608,2,2026,17,7,202602,2026),('2026-02-18',202608,2,2026,18,7,202602,2026),('2026-02-19',202608,2,2026,19,7,202602,2026),('2026-02-20',202608,2,2026,20,7,202602,2026),('2026-02-21',202608,2,2026,21,7,202602,2026),('2026-02-22',202609,2,2026,22,8,202602,2026),('2026-02-23',202609,2,2026,23,8,202602,2026),('2026-02-24',202609,2,2026,24,8,202602,2026),('2026-02-25',202609,2,2026,25,8,202602,2026),('2026-02-26',202609,2,2026,26,8,202602,2026),('2026-02-27',202609,2,2026,27,8,202602,2026),('2026-02-28',202609,2,2026,28,8,202602,2026),('2026-03-01',202610,3,2026,1,9,202603,2026),('2026-03-02',202610,3,2026,2,9,202603,2026),('2026-03-03',202610,3,2026,3,9,202603,2026),('2026-03-04',202610,3,2026,4,9,202603,2026),('2026-03-05',202610,3,2026,5,9,202603,2026),('2026-03-06',202610,3,2026,6,9,202603,2026),('2026-03-07',202610,3,2026,7,9,202603,2026),('2026-03-08',202611,3,2026,8,10,202603,2026),('2026-03-09',202611,3,2026,9,10,202603,2026),('2026-03-10',202611,3,2026,10,10,202603,2026),('2026-03-11',202611,3,2026,11,10,202603,2026),('2026-03-12',202611,3,2026,12,10,202603,2026),('2026-03-13',202611,3,2026,13,10,202603,2026),('2026-03-14',202611,3,2026,14,10,202603,2026),('2026-03-15',202612,3,2026,15,11,202603,2026),('2026-03-16',202612,3,2026,16,11,202603,2026),('2026-03-17',202612,3,2026,17,11,202603,2026),('2026-03-18',202612,3,2026,18,11,202603,2026),('2026-03-19',202612,3,2026,19,11,202603,2026),('2026-03-20',202612,3,2026,20,11,202603,2026),('2026-03-21',202612,3,2026,21,11,202603,2026),('2026-03-22',202613,3,2026,22,12,202603,2026),('2026-03-23',202613,3,2026,23,12,202603,2026),('2026-03-24',202613,3,2026,24,12,202603,2026),('2026-03-25',202613,3,2026,25,12,202603,2026),('2026-03-26',202613,3,2026,26,12,202603,2026),('2026-03-27',202613,3,2026,27,12,202603,2026),('2026-03-28',202613,3,2026,28,12,202603,2026),('2026-03-29',202614,3,2026,29,13,202603,2026),('2026-03-30',202614,3,2026,30,13,202603,2026),('2026-03-31',202614,3,2026,31,13,202603,2026),('2026-04-01',202614,4,2026,1,13,202604,2026),('2026-04-02',202614,4,2026,2,13,202604,2026),('2026-04-03',202614,4,2026,3,13,202604,2026),('2026-04-04',202614,4,2026,4,13,202604,2026),('2026-04-05',202615,4,2026,5,14,202604,2026),('2026-04-06',202615,4,2026,6,14,202604,2026),('2026-04-07',202615,4,2026,7,14,202604,2026),('2026-04-08',202615,4,2026,8,14,202604,2026),('2026-04-09',202615,4,2026,9,14,202604,2026),('2026-04-10',202615,4,2026,10,14,202604,2026),('2026-04-11',202615,4,2026,11,14,202604,2026),('2026-04-12',202616,4,2026,12,15,202604,2026),('2026-04-13',202616,4,2026,13,15,202604,2026),('2026-04-14',202616,4,2026,14,15,202604,2026),('2026-04-15',202616,4,2026,15,15,202604,2026),('2026-04-16',202616,4,2026,16,15,202604,2026),('2026-04-17',202616,4,2026,17,15,202604,2026),('2026-04-18',202616,4,2026,18,15,202604,2026),('2026-04-19',202617,4,2026,19,16,202604,2026),('2026-04-20',202617,4,2026,20,16,202604,2026),('2026-04-21',202617,4,2026,21,16,202604,2026),('2026-04-22',202617,4,2026,22,16,202604,2026),('2026-04-23',202617,4,2026,23,16,202604,2026),('2026-04-24',202617,4,2026,24,16,202604,2026),('2026-04-25',202617,4,2026,25,16,202604,2026),('2026-04-26',202618,4,2026,26,17,202604,2026),('2026-04-27',202618,4,2026,27,17,202604,2026),('2026-04-28',202618,4,2026,28,17,202604,2026),('2026-04-29',202618,4,2026,29,17,202604,2026),('2026-04-30',202618,4,2026,30,17,202604,2026),('2026-05-01',202618,5,2026,1,17,202605,2026),('2026-05-02',202618,5,2026,2,17,202605,2026),('2026-05-03',202619,5,2026,3,18,202605,2026),('2026-05-04',202619,5,2026,4,18,202605,2026),('2026-05-05',202619,5,2026,5,18,202605,2026),('2026-05-06',202619,5,2026,6,18,202605,2026),('2026-05-07',202619,5,2026,7,18,202605,2026),('2026-05-08',202619,5,2026,8,18,202605,2026),('2026-05-09',202619,5,2026,9,18,202605,2026),('2026-05-10',202620,5,2026,10,19,202605,2026),('2026-05-11',202620,5,2026,11,19,202605,2026),('2026-05-12',202620,5,2026,12,19,202605,2026),('2026-05-13',202620,5,2026,13,19,202605,2026),('2026-05-14',202620,5,2026,14,19,202605,2026),('2026-05-15',202620,5,2026,15,19,202605,2026),('2026-05-16',202620,5,2026,16,19,202605,2026),('2026-05-17',202621,5,2026,17,20,202605,2026),('2026-05-18',202621,5,2026,18,20,202605,2026),('2026-05-19',202621,5,2026,19,20,202605,2026),('2026-05-20',202621,5,2026,20,20,202605,2026),('2026-05-21',202621,5,2026,21,20,202605,2026),('2026-05-22',202621,5,2026,22,20,202605,2026),('2026-05-23',202621,5,2026,23,20,202605,2026),('2026-05-24',202622,5,2026,24,21,202605,2026),('2026-05-25',202622,5,2026,25,21,202605,2026),('2026-05-26',202622,5,2026,26,21,202605,2026),('2026-05-27',202622,5,2026,27,21,202605,2026),('2026-05-28',202622,5,2026,28,21,202605,2026),('2026-05-29',202622,5,2026,29,21,202605,2026),('2026-05-30',202622,5,2026,30,21,202605,2026),('2026-05-31',202623,5,2026,31,22,202605,2026),('2026-06-01',202623,6,2026,1,22,202606,2026),('2026-06-02',202623,6,2026,2,22,202606,2026),('2026-06-03',202623,6,2026,3,22,202606,2026),('2026-06-04',202623,6,2026,4,22,202606,2026),('2026-06-05',202623,6,2026,5,22,202606,2026),('2026-06-06',202623,6,2026,6,22,202606,2026),('2026-06-07',202624,6,2026,7,23,202606,2026),('2026-06-08',202624,6,2026,8,23,202606,2026),('2026-06-09',202624,6,2026,9,23,202606,2026),('2026-06-10',202624,6,2026,10,23,202606,2026),('2026-06-11',202624,6,2026,11,23,202606,2026),('2026-06-12',202624,6,2026,12,23,202606,2026),('2026-06-13',202624,6,2026,13,23,202606,2026),('2026-06-14',202625,6,2026,14,24,202606,2026),('2026-06-15',202625,6,2026,15,24,202606,2026),('2026-06-16',202625,6,2026,16,24,202606,2026),('2026-06-17',202625,6,2026,17,24,202606,2026),('2026-06-18',202625,6,2026,18,24,202606,2026),('2026-06-19',202625,6,2026,19,24,202606,2026),('2026-06-20',202625,6,2026,20,24,202606,2026),('2026-06-21',202626,6,2026,21,25,202606,2026),('2026-06-22',202626,6,2026,22,25,202606,2026),('2026-06-23',202626,6,2026,23,25,202606,2026),('2026-06-24',202626,6,2026,24,25,202606,2026),('2026-06-25',202626,6,2026,25,25,202606,2026),('2026-06-26',202626,6,2026,26,25,202606,2026),('2026-06-27',202626,6,2026,27,25,202606,2026),('2026-06-28',202627,6,2026,28,26,202606,2026),('2026-06-29',202627,6,2026,29,26,202606,2026),('2026-06-30',202627,6,2026,30,26,202606,2026),('2026-07-01',202627,7,2026,1,26,202607,2026),('2026-07-02',202627,7,2026,2,26,202607,2026),('2026-07-03',202627,7,2026,3,26,202607,2026),('2026-07-04',202627,7,2026,4,26,202607,2026),('2026-07-05',202628,7,2026,5,27,202607,2026),('2026-07-06',202628,7,2026,6,27,202607,2026),('2026-07-07',202628,7,2026,7,27,202607,2026),('2026-07-08',202628,7,2026,8,27,202607,2026),('2026-07-09',202628,7,2026,9,27,202607,2026),('2026-07-10',202628,7,2026,10,27,202607,2026),('2026-07-11',202628,7,2026,11,27,202607,2026),('2026-07-12',202629,7,2026,12,28,202607,2026),('2026-07-13',202629,7,2026,13,28,202607,2026),('2026-07-14',202629,7,2026,14,28,202607,2026),('2026-07-15',202629,7,2026,15,28,202607,2026),('2026-07-16',202629,7,2026,16,28,202607,2026),('2026-07-17',202629,7,2026,17,28,202607,2026),('2026-07-18',202629,7,2026,18,28,202607,2026),('2026-07-19',202630,7,2026,19,29,202607,2026),('2026-07-20',202630,7,2026,20,29,202607,2026),('2026-07-21',202630,7,2026,21,29,202607,2026),('2026-07-22',202630,7,2026,22,29,202607,2026),('2026-07-23',202630,7,2026,23,29,202607,2026),('2026-07-24',202630,7,2026,24,29,202607,2026),('2026-07-25',202630,7,2026,25,29,202607,2026),('2026-07-26',202631,7,2026,26,30,202607,2026),('2026-07-27',202631,7,2026,27,30,202607,2026),('2026-07-28',202631,7,2026,28,30,202607,2026),('2026-07-29',202631,7,2026,29,30,202607,2026),('2026-07-30',202631,7,2026,30,30,202607,2026),('2026-07-31',202631,7,2026,31,30,202607,2026),('2026-08-01',202631,8,2026,1,30,202608,2026),('2026-08-02',202632,8,2026,2,31,202608,2026),('2026-08-03',202632,8,2026,3,31,202608,2026),('2026-08-04',202632,8,2026,4,31,202608,2026),('2026-08-05',202632,8,2026,5,31,202608,2026),('2026-08-06',202632,8,2026,6,31,202608,2026),('2026-08-07',202632,8,2026,7,31,202608,2026),('2026-08-08',202632,8,2026,8,31,202608,2026),('2026-08-09',202633,8,2026,9,32,202608,2026),('2026-08-10',202633,8,2026,10,32,202608,2026),('2026-08-11',202633,8,2026,11,32,202608,2026),('2026-08-12',202633,8,2026,12,32,202608,2026),('2026-08-13',202633,8,2026,13,32,202608,2026),('2026-08-14',202633,8,2026,14,32,202608,2026),('2026-08-15',202633,8,2026,15,32,202608,2026),('2026-08-16',202634,8,2026,16,33,202608,2026),('2026-08-17',202634,8,2026,17,33,202608,2026),('2026-08-18',202634,8,2026,18,33,202608,2026),('2026-08-19',202634,8,2026,19,33,202608,2026),('2026-08-20',202634,8,2026,20,33,202608,2026),('2026-08-21',202634,8,2026,21,33,202608,2026),('2026-08-22',202634,8,2026,22,33,202608,2026),('2026-08-23',202635,8,2026,23,34,202608,2026),('2026-08-24',202635,8,2026,24,34,202608,2026),('2026-08-25',202635,8,2026,25,34,202608,2026),('2026-08-26',202635,8,2026,26,34,202608,2026),('2026-08-27',202635,8,2026,27,34,202608,2026),('2026-08-28',202635,8,2026,28,34,202608,2026),('2026-08-29',202635,8,2026,29,34,202608,2026),('2026-08-30',202636,8,2026,30,35,202608,2026),('2026-08-31',202636,8,2026,31,35,202608,2026),('2026-09-01',202636,9,2026,1,35,202609,2026),('2026-09-02',202636,9,2026,2,35,202609,2026),('2026-09-03',202636,9,2026,3,35,202609,2026),('2026-09-04',202636,9,2026,4,35,202609,2026),('2026-09-05',202636,9,2026,5,35,202609,2026),('2026-09-06',202637,9,2026,6,36,202609,2026),('2026-09-07',202637,9,2026,7,36,202609,2026),('2026-09-08',202637,9,2026,8,36,202609,2026),('2026-09-09',202637,9,2026,9,36,202609,2026),('2026-09-10',202637,9,2026,10,36,202609,2026),('2026-09-11',202637,9,2026,11,36,202609,2026),('2026-09-12',202637,9,2026,12,36,202609,2026),('2026-09-13',202638,9,2026,13,37,202609,2026),('2026-09-14',202638,9,2026,14,37,202609,2026),('2026-09-15',202638,9,2026,15,37,202609,2026),('2026-09-16',202638,9,2026,16,37,202609,2026),('2026-09-17',202638,9,2026,17,37,202609,2026),('2026-09-18',202638,9,2026,18,37,202609,2026),('2026-09-19',202638,9,2026,19,37,202609,2026),('2026-09-20',202639,9,2026,20,38,202609,2026),('2026-09-21',202639,9,2026,21,38,202609,2026),('2026-09-22',202639,9,2026,22,38,202609,2026),('2026-09-23',202639,9,2026,23,38,202609,2026),('2026-09-24',202639,9,2026,24,38,202609,2026),('2026-09-25',202639,9,2026,25,38,202609,2026),('2026-09-26',202639,9,2026,26,38,202609,2026),('2026-09-27',202640,9,2026,27,39,202609,2026),('2026-09-28',202640,9,2026,28,39,202609,2026),('2026-09-29',202640,9,2026,29,39,202609,2026),('2026-09-30',202640,9,2026,30,39,202609,2026),('2026-10-01',202640,10,2026,1,39,202610,2026),('2026-10-02',202640,10,2026,2,39,202610,2026),('2026-10-03',202640,10,2026,3,39,202610,2026),('2026-10-04',202641,10,2026,4,40,202610,2026),('2026-10-05',202641,10,2026,5,40,202610,2026),('2026-10-06',202641,10,2026,6,40,202610,2026),('2026-10-07',202641,10,2026,7,40,202610,2026),('2026-10-08',202641,10,2026,8,40,202610,2026),('2026-10-09',202641,10,2026,9,40,202610,2026),('2026-10-10',202641,10,2026,10,40,202610,2026),('2026-10-11',202642,10,2026,11,41,202610,2026),('2026-10-12',202642,10,2026,12,41,202610,2026),('2026-10-13',202642,10,2026,13,41,202610,2026),('2026-10-14',202642,10,2026,14,41,202610,2026),('2026-10-15',202642,10,2026,15,41,202610,2026),('2026-10-16',202642,10,2026,16,41,202610,2026),('2026-10-17',202642,10,2026,17,41,202610,2026),('2026-10-18',202643,10,2026,18,42,202610,2026),('2026-10-19',202643,10,2026,19,42,202610,2026),('2026-10-20',202643,10,2026,20,42,202610,2026),('2026-10-21',202643,10,2026,21,42,202610,2026),('2026-10-22',202643,10,2026,22,42,202610,2026),('2026-10-23',202643,10,2026,23,42,202610,2026),('2026-10-24',202643,10,2026,24,42,202610,2026),('2026-10-25',202644,10,2026,25,43,202610,2026),('2026-10-26',202644,10,2026,26,43,202610,2026),('2026-10-27',202644,10,2026,27,43,202610,2026),('2026-10-28',202644,10,2026,28,43,202610,2026),('2026-10-29',202644,10,2026,29,43,202610,2026),('2026-10-30',202644,10,2026,30,43,202610,2026),('2026-10-31',202644,10,2026,31,43,202610,2026),('2026-11-01',202645,11,2026,1,44,202611,2026),('2026-11-02',202645,11,2026,2,44,202611,2026),('2026-11-03',202645,11,2026,3,44,202611,2026),('2026-11-04',202645,11,2026,4,44,202611,2026),('2026-11-05',202645,11,2026,5,44,202611,2026),('2026-11-06',202645,11,2026,6,44,202611,2026),('2026-11-07',202645,11,2026,7,44,202611,2026),('2026-11-08',202646,11,2026,8,45,202611,2026),('2026-11-09',202646,11,2026,9,45,202611,2026),('2026-11-10',202646,11,2026,10,45,202611,2026),('2026-11-11',202646,11,2026,11,45,202611,2026),('2026-11-12',202646,11,2026,12,45,202611,2026),('2026-11-13',202646,11,2026,13,45,202611,2026),('2026-11-14',202646,11,2026,14,45,202611,2026),('2026-11-15',202647,11,2026,15,46,202611,2026),('2026-11-16',202647,11,2026,16,46,202611,2026),('2026-11-17',202647,11,2026,17,46,202611,2026),('2026-11-18',202647,11,2026,18,46,202611,2026),('2026-11-19',202647,11,2026,19,46,202611,2026),('2026-11-20',202647,11,2026,20,46,202611,2026),('2026-11-21',202647,11,2026,21,46,202611,2026),('2026-11-22',202648,11,2026,22,47,202611,2026),('2026-11-23',202648,11,2026,23,47,202611,2026),('2026-11-24',202648,11,2026,24,47,202611,2026),('2026-11-25',202648,11,2026,25,47,202611,2026),('2026-11-26',202648,11,2026,26,47,202611,2026),('2026-11-27',202648,11,2026,27,47,202611,2026),('2026-11-28',202648,11,2026,28,47,202611,2026),('2026-11-29',202649,11,2026,29,48,202611,2026),('2026-11-30',202649,11,2026,30,48,202611,2026),('2026-12-01',202649,12,2026,1,48,202612,2027),('2026-12-02',202649,12,2026,2,48,202612,2027),('2026-12-03',202649,12,2026,3,48,202612,2027),('2026-12-04',202649,12,2026,4,48,202612,2027),('2026-12-05',202649,12,2026,5,48,202612,2027),('2026-12-06',202650,12,2026,6,49,202612,2027),('2026-12-07',202650,12,2026,7,49,202612,2027),('2026-12-08',202650,12,2026,8,49,202612,2027),('2026-12-09',202650,12,2026,9,49,202612,2027),('2026-12-10',202650,12,2026,10,49,202612,2027),('2026-12-11',202650,12,2026,11,49,202612,2027),('2026-12-12',202650,12,2026,12,49,202612,2027),('2026-12-13',202651,12,2026,13,50,202612,2027),('2026-12-14',202651,12,2026,14,50,202612,2027),('2026-12-15',202651,12,2026,15,50,202612,2027),('2026-12-16',202651,12,2026,16,50,202612,2027),('2026-12-17',202651,12,2026,17,50,202612,2027),('2026-12-18',202651,12,2026,18,50,202612,2027),('2026-12-19',202651,12,2026,19,50,202612,2027),('2026-12-20',202652,12,2026,20,51,202612,2027),('2026-12-21',202652,12,2026,21,51,202612,2027),('2026-12-22',202652,12,2026,22,51,202612,2027),('2026-12-23',202652,12,2026,23,51,202612,2027),('2026-12-24',202652,12,2026,24,51,202612,2027),('2026-12-25',202652,12,2026,25,51,202612,2027),('2026-12-26',202652,12,2026,26,51,202612,2027),('2026-12-27',202653,12,2026,27,52,202612,2027),('2026-12-28',202653,12,2026,28,52,202612,2027),('2026-12-29',202653,12,2026,29,52,202612,2027),('2026-12-30',202653,12,2026,30,52,202612,2027),('2026-12-31',202653,12,2026,31,52,202612,2027),('2027-01-01',202753,1,2027,1,52,202701,2027),('2027-01-02',202753,1,2027,2,52,202701,2027),('2027-01-03',202754,1,2027,3,1,202701,2027),('2027-01-04',202701,1,2027,4,1,202701,2027),('2027-01-05',202701,1,2027,5,1,202701,2027),('2027-01-06',202701,1,2027,6,1,202701,2027),('2027-01-07',202701,1,2027,7,1,202701,2027),('2027-01-08',202701,1,2027,8,1,202701,2027),('2027-01-09',202701,1,2027,9,1,202701,2027),('2027-01-10',202702,1,2027,10,2,202701,2027),('2027-01-11',202702,1,2027,11,2,202701,2027),('2027-01-12',202702,1,2027,12,2,202701,2027),('2027-01-13',202702,1,2027,13,2,202701,2027),('2027-01-14',202702,1,2027,14,2,202701,2027),('2027-01-15',202702,1,2027,15,2,202701,2027),('2027-01-16',202702,1,2027,16,2,202701,2027),('2027-01-17',202703,1,2027,17,3,202701,2027),('2027-01-18',202703,1,2027,18,3,202701,2027),('2027-01-19',202703,1,2027,19,3,202701,2027),('2027-01-20',202703,1,2027,20,3,202701,2027),('2027-01-21',202703,1,2027,21,3,202701,2027),('2027-01-22',202703,1,2027,22,3,202701,2027),('2027-01-23',202703,1,2027,23,3,202701,2027),('2027-01-24',202704,1,2027,24,4,202701,2027),('2027-01-25',202704,1,2027,25,4,202701,2027),('2027-01-26',202704,1,2027,26,4,202701,2027),('2027-01-27',202704,1,2027,27,4,202701,2027),('2027-01-28',202704,1,2027,28,4,202701,2027),('2027-01-29',202704,1,2027,29,4,202701,2027),('2027-01-30',202704,1,2027,30,4,202701,2027),('2027-01-31',202705,1,2027,31,5,202701,2027),('2027-02-01',202705,2,2027,1,5,202702,2027),('2027-02-02',202705,2,2027,2,5,202702,2027),('2027-02-03',202705,2,2027,3,5,202702,2027),('2027-02-04',202705,2,2027,4,5,202702,2027),('2027-02-05',202705,2,2027,5,5,202702,2027),('2027-02-06',202705,2,2027,6,5,202702,2027),('2027-02-07',202706,2,2027,7,6,202702,2027),('2027-02-08',202706,2,2027,8,6,202702,2027),('2027-02-09',202706,2,2027,9,6,202702,2027),('2027-02-10',202706,2,2027,10,6,202702,2027),('2027-02-11',202706,2,2027,11,6,202702,2027),('2027-02-12',202706,2,2027,12,6,202702,2027),('2027-02-13',202706,2,2027,13,6,202702,2027),('2027-02-14',202707,2,2027,14,7,202702,2027),('2027-02-15',202707,2,2027,15,7,202702,2027),('2027-02-16',202707,2,2027,16,7,202702,2027),('2027-02-17',202707,2,2027,17,7,202702,2027),('2027-02-18',202707,2,2027,18,7,202702,2027),('2027-02-19',202707,2,2027,19,7,202702,2027),('2027-02-20',202707,2,2027,20,7,202702,2027),('2027-02-21',202708,2,2027,21,8,202702,2027),('2027-02-22',202708,2,2027,22,8,202702,2027),('2027-02-23',202708,2,2027,23,8,202702,2027),('2027-02-24',202708,2,2027,24,8,202702,2027),('2027-02-25',202708,2,2027,25,8,202702,2027),('2027-02-26',202708,2,2027,26,8,202702,2027),('2027-02-27',202708,2,2027,27,8,202702,2027),('2027-02-28',202709,2,2027,28,9,202702,2027),('2027-03-01',202709,3,2027,1,9,202703,2027),('2027-03-02',202709,3,2027,2,9,202703,2027),('2027-03-03',202709,3,2027,3,9,202703,2027),('2027-03-04',202709,3,2027,4,9,202703,2027),('2027-03-05',202709,3,2027,5,9,202703,2027),('2027-03-06',202709,3,2027,6,9,202703,2027),('2027-03-07',202710,3,2027,7,10,202703,2027),('2027-03-08',202710,3,2027,8,10,202703,2027),('2027-03-09',202710,3,2027,9,10,202703,2027),('2027-03-10',202710,3,2027,10,10,202703,2027),('2027-03-11',202710,3,2027,11,10,202703,2027),('2027-03-12',202710,3,2027,12,10,202703,2027),('2027-03-13',202710,3,2027,13,10,202703,2027),('2027-03-14',202711,3,2027,14,11,202703,2027),('2027-03-15',202711,3,2027,15,11,202703,2027),('2027-03-16',202711,3,2027,16,11,202703,2027),('2027-03-17',202711,3,2027,17,11,202703,2027),('2027-03-18',202711,3,2027,18,11,202703,2027),('2027-03-19',202711,3,2027,19,11,202703,2027),('2027-03-20',202711,3,2027,20,11,202703,2027),('2027-03-21',202712,3,2027,21,12,202703,2027),('2027-03-22',202712,3,2027,22,12,202703,2027),('2027-03-23',202712,3,2027,23,12,202703,2027),('2027-03-24',202712,3,2027,24,12,202703,2027),('2027-03-25',202712,3,2027,25,12,202703,2027),('2027-03-26',202712,3,2027,26,12,202703,2027),('2027-03-27',202712,3,2027,27,12,202703,2027),('2027-03-28',202713,3,2027,28,13,202703,2027),('2027-03-29',202713,3,2027,29,13,202703,2027),('2027-03-30',202713,3,2027,30,13,202703,2027),('2027-03-31',202713,3,2027,31,13,202703,2027),('2027-04-01',202713,4,2027,1,13,202704,2027),('2027-04-02',202713,4,2027,2,13,202704,2027),('2027-04-03',202713,4,2027,3,13,202704,2027),('2027-04-04',202714,4,2027,4,14,202704,2027),('2027-04-05',202714,4,2027,5,14,202704,2027),('2027-04-06',202714,4,2027,6,14,202704,2027),('2027-04-07',202714,4,2027,7,14,202704,2027),('2027-04-08',202714,4,2027,8,14,202704,2027),('2027-04-09',202714,4,2027,9,14,202704,2027),('2027-04-10',202714,4,2027,10,14,202704,2027),('2027-04-11',202715,4,2027,11,15,202704,2027),('2027-04-12',202715,4,2027,12,15,202704,2027),('2027-04-13',202715,4,2027,13,15,202704,2027),('2027-04-14',202715,4,2027,14,15,202704,2027),('2027-04-15',202715,4,2027,15,15,202704,2027),('2027-04-16',202715,4,2027,16,15,202704,2027),('2027-04-17',202715,4,2027,17,15,202704,2027),('2027-04-18',202716,4,2027,18,16,202704,2027),('2027-04-19',202716,4,2027,19,16,202704,2027),('2027-04-20',202716,4,2027,20,16,202704,2027),('2027-04-21',202716,4,2027,21,16,202704,2027),('2027-04-22',202716,4,2027,22,16,202704,2027),('2027-04-23',202716,4,2027,23,16,202704,2027),('2027-04-24',202716,4,2027,24,16,202704,2027),('2027-04-25',202717,4,2027,25,17,202704,2027),('2027-04-26',202717,4,2027,26,17,202704,2027),('2027-04-27',202717,4,2027,27,17,202704,2027),('2027-04-28',202717,4,2027,28,17,202704,2027),('2027-04-29',202717,4,2027,29,17,202704,2027),('2027-04-30',202717,4,2027,30,17,202704,2027),('2027-05-01',202717,5,2027,1,17,202705,2027),('2027-05-02',202718,5,2027,2,18,202705,2027),('2027-05-03',202718,5,2027,3,18,202705,2027),('2027-05-04',202718,5,2027,4,18,202705,2027),('2027-05-05',202718,5,2027,5,18,202705,2027),('2027-05-06',202718,5,2027,6,18,202705,2027),('2027-05-07',202718,5,2027,7,18,202705,2027),('2027-05-08',202718,5,2027,8,18,202705,2027),('2027-05-09',202719,5,2027,9,19,202705,2027),('2027-05-10',202719,5,2027,10,19,202705,2027),('2027-05-11',202719,5,2027,11,19,202705,2027),('2027-05-12',202719,5,2027,12,19,202705,2027),('2027-05-13',202719,5,2027,13,19,202705,2027),('2027-05-14',202719,5,2027,14,19,202705,2027),('2027-05-15',202719,5,2027,15,19,202705,2027),('2027-05-16',202720,5,2027,16,20,202705,2027),('2027-05-17',202720,5,2027,17,20,202705,2027),('2027-05-18',202720,5,2027,18,20,202705,2027),('2027-05-19',202720,5,2027,19,20,202705,2027),('2027-05-20',202720,5,2027,20,20,202705,2027),('2027-05-21',202720,5,2027,21,20,202705,2027),('2027-05-22',202720,5,2027,22,20,202705,2027),('2027-05-23',202721,5,2027,23,21,202705,2027),('2027-05-24',202721,5,2027,24,21,202705,2027),('2027-05-25',202721,5,2027,25,21,202705,2027),('2027-05-26',202721,5,2027,26,21,202705,2027),('2027-05-27',202721,5,2027,27,21,202705,2027),('2027-05-28',202721,5,2027,28,21,202705,2027),('2027-05-29',202721,5,2027,29,21,202705,2027),('2027-05-30',202722,5,2027,30,22,202705,2027),('2027-05-31',202722,5,2027,31,22,202705,2027),('2027-06-01',202722,6,2027,1,22,202706,2027),('2027-06-02',202722,6,2027,2,22,202706,2027),('2027-06-03',202722,6,2027,3,22,202706,2027),('2027-06-04',202722,6,2027,4,22,202706,2027),('2027-06-05',202722,6,2027,5,22,202706,2027),('2027-06-06',202723,6,2027,6,23,202706,2027),('2027-06-07',202723,6,2027,7,23,202706,2027),('2027-06-08',202723,6,2027,8,23,202706,2027),('2027-06-09',202723,6,2027,9,23,202706,2027),('2027-06-10',202723,6,2027,10,23,202706,2027),('2027-06-11',202723,6,2027,11,23,202706,2027),('2027-06-12',202723,6,2027,12,23,202706,2027),('2027-06-13',202724,6,2027,13,24,202706,2027),('2027-06-14',202724,6,2027,14,24,202706,2027),('2027-06-15',202724,6,2027,15,24,202706,2027),('2027-06-16',202724,6,2027,16,24,202706,2027),('2027-06-17',202724,6,2027,17,24,202706,2027),('2027-06-18',202724,6,2027,18,24,202706,2027),('2027-06-19',202724,6,2027,19,24,202706,2027),('2027-06-20',202725,6,2027,20,25,202706,2027),('2027-06-21',202725,6,2027,21,25,202706,2027),('2027-06-22',202725,6,2027,22,25,202706,2027),('2027-06-23',202725,6,2027,23,25,202706,2027),('2027-06-24',202725,6,2027,24,25,202706,2027),('2027-06-25',202725,6,2027,25,25,202706,2027),('2027-06-26',202725,6,2027,26,25,202706,2027),('2027-06-27',202726,6,2027,27,26,202706,2027),('2027-06-28',202726,6,2027,28,26,202706,2027),('2027-06-29',202726,6,2027,29,26,202706,2027),('2027-06-30',202726,6,2027,30,26,202706,2027),('2027-07-01',202726,7,2027,1,26,202707,2027),('2027-07-02',202726,7,2027,2,26,202707,2027),('2027-07-03',202726,7,2027,3,26,202707,2027),('2027-07-04',202727,7,2027,4,27,202707,2027),('2027-07-05',202727,7,2027,5,27,202707,2027),('2027-07-06',202727,7,2027,6,27,202707,2027),('2027-07-07',202727,7,2027,7,27,202707,2027),('2027-07-08',202727,7,2027,8,27,202707,2027),('2027-07-09',202727,7,2027,9,27,202707,2027),('2027-07-10',202727,7,2027,10,27,202707,2027),('2027-07-11',202728,7,2027,11,28,202707,2027),('2027-07-12',202728,7,2027,12,28,202707,2027),('2027-07-13',202728,7,2027,13,28,202707,2027),('2027-07-14',202728,7,2027,14,28,202707,2027),('2027-07-15',202728,7,2027,15,28,202707,2027),('2027-07-16',202728,7,2027,16,28,202707,2027),('2027-07-17',202728,7,2027,17,28,202707,2027),('2027-07-18',202729,7,2027,18,29,202707,2027),('2027-07-19',202729,7,2027,19,29,202707,2027),('2027-07-20',202729,7,2027,20,29,202707,2027),('2027-07-21',202729,7,2027,21,29,202707,2027),('2027-07-22',202729,7,2027,22,29,202707,2027),('2027-07-23',202729,7,2027,23,29,202707,2027),('2027-07-24',202729,7,2027,24,29,202707,2027),('2027-07-25',202730,7,2027,25,30,202707,2027),('2027-07-26',202730,7,2027,26,30,202707,2027),('2027-07-27',202730,7,2027,27,30,202707,2027),('2027-07-28',202730,7,2027,28,30,202707,2027),('2027-07-29',202730,7,2027,29,30,202707,2027),('2027-07-30',202730,7,2027,30,30,202707,2027),('2027-07-31',202730,7,2027,31,30,202707,2027),('2027-08-01',202731,8,2027,1,31,202708,2027),('2027-08-02',202731,8,2027,2,31,202708,2027),('2027-08-03',202731,8,2027,3,31,202708,2027),('2027-08-04',202731,8,2027,4,31,202708,2027),('2027-08-05',202731,8,2027,5,31,202708,2027),('2027-08-06',202731,8,2027,6,31,202708,2027),('2027-08-07',202731,8,2027,7,31,202708,2027),('2027-08-08',202732,8,2027,8,32,202708,2027),('2027-08-09',202732,8,2027,9,32,202708,2027),('2027-08-10',202732,8,2027,10,32,202708,2027),('2027-08-11',202732,8,2027,11,32,202708,2027),('2027-08-12',202732,8,2027,12,32,202708,2027),('2027-08-13',202732,8,2027,13,32,202708,2027),('2027-08-14',202732,8,2027,14,32,202708,2027),('2027-08-15',202733,8,2027,15,33,202708,2027),('2027-08-16',202733,8,2027,16,33,202708,2027),('2027-08-17',202733,8,2027,17,33,202708,2027),('2027-08-18',202733,8,2027,18,33,202708,2027),('2027-08-19',202733,8,2027,19,33,202708,2027),('2027-08-20',202733,8,2027,20,33,202708,2027),('2027-08-21',202733,8,2027,21,33,202708,2027),('2027-08-22',202734,8,2027,22,34,202708,2027),('2027-08-23',202734,8,2027,23,34,202708,2027),('2027-08-24',202734,8,2027,24,34,202708,2027),('2027-08-25',202734,8,2027,25,34,202708,2027),('2027-08-26',202734,8,2027,26,34,202708,2027),('2027-08-27',202734,8,2027,27,34,202708,2027),('2027-08-28',202734,8,2027,28,34,202708,2027),('2027-08-29',202735,8,2027,29,35,202708,2027),('2027-08-30',202735,8,2027,30,35,202708,2027),('2027-08-31',202735,8,2027,31,35,202708,2027),('2027-09-01',202735,9,2027,1,35,202709,2027),('2027-09-02',202735,9,2027,2,35,202709,2027),('2027-09-03',202735,9,2027,3,35,202709,2027),('2027-09-04',202735,9,2027,4,35,202709,2027),('2027-09-05',202736,9,2027,5,36,202709,2027),('2027-09-06',202736,9,2027,6,36,202709,2027),('2027-09-07',202736,9,2027,7,36,202709,2027),('2027-09-08',202736,9,2027,8,36,202709,2027),('2027-09-09',202736,9,2027,9,36,202709,2027),('2027-09-10',202736,9,2027,10,36,202709,2027),('2027-09-11',202736,9,2027,11,36,202709,2027),('2027-09-12',202737,9,2027,12,37,202709,2027),('2027-09-13',202737,9,2027,13,37,202709,2027),('2027-09-14',202737,9,2027,14,37,202709,2027),('2027-09-15',202737,9,2027,15,37,202709,2027),('2027-09-16',202737,9,2027,16,37,202709,2027),('2027-09-17',202737,9,2027,17,37,202709,2027),('2027-09-18',202737,9,2027,18,37,202709,2027),('2027-09-19',202738,9,2027,19,38,202709,2027),('2027-09-20',202738,9,2027,20,38,202709,2027),('2027-09-21',202738,9,2027,21,38,202709,2027),('2027-09-22',202738,9,2027,22,38,202709,2027),('2027-09-23',202738,9,2027,23,38,202709,2027),('2027-09-24',202738,9,2027,24,38,202709,2027),('2027-09-25',202738,9,2027,25,38,202709,2027),('2027-09-26',202739,9,2027,26,39,202709,2027),('2027-09-27',202739,9,2027,27,39,202709,2027),('2027-09-28',202739,9,2027,28,39,202709,2027),('2027-09-29',202739,9,2027,29,39,202709,2027),('2027-09-30',202739,9,2027,30,39,202709,2027),('2027-10-01',202739,10,2027,1,39,202710,2027),('2027-10-02',202739,10,2027,2,39,202710,2027),('2027-10-03',202740,10,2027,3,40,202710,2027),('2027-10-04',202740,10,2027,4,40,202710,2027),('2027-10-05',202740,10,2027,5,40,202710,2027),('2027-10-06',202740,10,2027,6,40,202710,2027),('2027-10-07',202740,10,2027,7,40,202710,2027),('2027-10-08',202740,10,2027,8,40,202710,2027),('2027-10-09',202740,10,2027,9,40,202710,2027),('2027-10-10',202741,10,2027,10,41,202710,2027),('2027-10-11',202741,10,2027,11,41,202710,2027),('2027-10-12',202741,10,2027,12,41,202710,2027),('2027-10-13',202741,10,2027,13,41,202710,2027),('2027-10-14',202741,10,2027,14,41,202710,2027),('2027-10-15',202741,10,2027,15,41,202710,2027),('2027-10-16',202741,10,2027,16,41,202710,2027),('2027-10-17',202742,10,2027,17,42,202710,2027),('2027-10-18',202742,10,2027,18,42,202710,2027),('2027-10-19',202742,10,2027,19,42,202710,2027),('2027-10-20',202742,10,2027,20,42,202710,2027),('2027-10-21',202742,10,2027,21,42,202710,2027),('2027-10-22',202742,10,2027,22,42,202710,2027),('2027-10-23',202742,10,2027,23,42,202710,2027),('2027-10-24',202743,10,2027,24,43,202710,2027),('2027-10-25',202743,10,2027,25,43,202710,2027),('2027-10-26',202743,10,2027,26,43,202710,2027),('2027-10-27',202743,10,2027,27,43,202710,2027),('2027-10-28',202743,10,2027,28,43,202710,2027),('2027-10-29',202743,10,2027,29,43,202710,2027),('2027-10-30',202743,10,2027,30,43,202710,2027),('2027-10-31',202744,10,2027,31,44,202710,2027),('2027-11-01',202744,11,2027,1,44,202711,2027),('2027-11-02',202744,11,2027,2,44,202711,2027),('2027-11-03',202744,11,2027,3,44,202711,2027),('2027-11-04',202744,11,2027,4,44,202711,2027),('2027-11-05',202744,11,2027,5,44,202711,2027),('2027-11-06',202744,11,2027,6,44,202711,2027),('2027-11-07',202745,11,2027,7,45,202711,2027),('2027-11-08',202745,11,2027,8,45,202711,2027),('2027-11-09',202745,11,2027,9,45,202711,2027),('2027-11-10',202745,11,2027,10,45,202711,2027),('2027-11-11',202745,11,2027,11,45,202711,2027),('2027-11-12',202745,11,2027,12,45,202711,2027),('2027-11-13',202745,11,2027,13,45,202711,2027),('2027-11-14',202746,11,2027,14,46,202711,2027),('2027-11-15',202746,11,2027,15,46,202711,2027),('2027-11-16',202746,11,2027,16,46,202711,2027),('2027-11-17',202746,11,2027,17,46,202711,2027),('2027-11-18',202746,11,2027,18,46,202711,2027),('2027-11-19',202746,11,2027,19,46,202711,2027),('2027-11-20',202746,11,2027,20,46,202711,2027),('2027-11-21',202747,11,2027,21,47,202711,2027),('2027-11-22',202747,11,2027,22,47,202711,2027),('2027-11-23',202747,11,2027,23,47,202711,2027),('2027-11-24',202747,11,2027,24,47,202711,2027),('2027-11-25',202747,11,2027,25,47,202711,2027),('2027-11-26',202747,11,2027,26,47,202711,2027),('2027-11-27',202747,11,2027,27,47,202711,2027),('2027-11-28',202748,11,2027,28,48,202711,2027),('2027-11-29',202748,11,2027,29,48,202711,2027),('2027-11-30',202748,11,2027,30,48,202711,2027),('2027-12-01',202748,12,2027,1,48,202712,2028),('2027-12-02',202748,12,2027,2,48,202712,2028),('2027-12-03',202748,12,2027,3,48,202712,2028),('2027-12-04',202748,12,2027,4,48,202712,2028),('2027-12-05',202749,12,2027,5,49,202712,2028),('2027-12-06',202749,12,2027,6,49,202712,2028),('2027-12-07',202749,12,2027,7,49,202712,2028),('2027-12-08',202749,12,2027,8,49,202712,2028),('2027-12-09',202749,12,2027,9,49,202712,2028),('2027-12-10',202749,12,2027,10,49,202712,2028),('2027-12-11',202749,12,2027,11,49,202712,2028),('2027-12-12',202750,12,2027,12,50,202712,2028),('2027-12-13',202750,12,2027,13,50,202712,2028),('2027-12-14',202750,12,2027,14,50,202712,2028),('2027-12-15',202750,12,2027,15,50,202712,2028),('2027-12-16',202750,12,2027,16,50,202712,2028),('2027-12-17',202750,12,2027,17,50,202712,2028),('2027-12-18',202750,12,2027,18,50,202712,2028),('2027-12-19',202751,12,2027,19,51,202712,2028),('2027-12-20',202751,12,2027,20,51,202712,2028),('2027-12-21',202751,12,2027,21,51,202712,2028),('2027-12-22',202751,12,2027,22,51,202712,2028),('2027-12-23',202751,12,2027,23,51,202712,2028),('2027-12-24',202751,12,2027,24,51,202712,2028),('2027-12-25',202751,12,2027,25,51,202712,2028),('2027-12-26',202752,12,2027,26,52,202712,2028),('2027-12-27',202752,12,2027,27,52,202712,2028),('2027-12-28',202752,12,2027,28,52,202712,2028),('2027-12-29',202752,12,2027,29,52,202712,2028),('2027-12-30',202752,12,2027,30,52,202712,2028),('2027-12-31',202752,12,2027,31,52,202712,2028),('2028-01-01',202852,1,2028,1,52,202801,2028),('2028-01-02',202853,1,2028,2,1,202801,2028),('2028-01-03',202801,1,2028,3,1,202801,2028),('2028-01-04',202801,1,2028,4,1,202801,2028),('2028-01-05',202801,1,2028,5,1,202801,2028),('2028-01-06',202801,1,2028,6,1,202801,2028),('2028-01-07',202801,1,2028,7,1,202801,2028),('2028-01-08',202801,1,2028,8,1,202801,2028),('2028-01-09',202802,1,2028,9,2,202801,2028),('2028-01-10',202802,1,2028,10,2,202801,2028),('2028-01-11',202802,1,2028,11,2,202801,2028),('2028-01-12',202802,1,2028,12,2,202801,2028),('2028-01-13',202802,1,2028,13,2,202801,2028),('2028-01-14',202802,1,2028,14,2,202801,2028),('2028-01-15',202802,1,2028,15,2,202801,2028),('2028-01-16',202803,1,2028,16,3,202801,2028),('2028-01-17',202803,1,2028,17,3,202801,2028),('2028-01-18',202803,1,2028,18,3,202801,2028),('2028-01-19',202803,1,2028,19,3,202801,2028),('2028-01-20',202803,1,2028,20,3,202801,2028),('2028-01-21',202803,1,2028,21,3,202801,2028),('2028-01-22',202803,1,2028,22,3,202801,2028),('2028-01-23',202804,1,2028,23,4,202801,2028),('2028-01-24',202804,1,2028,24,4,202801,2028),('2028-01-25',202804,1,2028,25,4,202801,2028),('2028-01-26',202804,1,2028,26,4,202801,2028),('2028-01-27',202804,1,2028,27,4,202801,2028),('2028-01-28',202804,1,2028,28,4,202801,2028),('2028-01-29',202804,1,2028,29,4,202801,2028),('2028-01-30',202805,1,2028,30,5,202801,2028),('2028-01-31',202805,1,2028,31,5,202801,2028),('2028-02-01',202805,2,2028,1,5,202802,2028),('2028-02-02',202805,2,2028,2,5,202802,2028),('2028-02-03',202805,2,2028,3,5,202802,2028),('2028-02-04',202805,2,2028,4,5,202802,2028),('2028-02-05',202805,2,2028,5,5,202802,2028),('2028-02-06',202806,2,2028,6,6,202802,2028),('2028-02-07',202806,2,2028,7,6,202802,2028),('2028-02-08',202806,2,2028,8,6,202802,2028),('2028-02-09',202806,2,2028,9,6,202802,2028),('2028-02-10',202806,2,2028,10,6,202802,2028),('2028-02-11',202806,2,2028,11,6,202802,2028),('2028-02-12',202806,2,2028,12,6,202802,2028),('2028-02-13',202807,2,2028,13,7,202802,2028),('2028-02-14',202807,2,2028,14,7,202802,2028),('2028-02-15',202807,2,2028,15,7,202802,2028),('2028-02-16',202807,2,2028,16,7,202802,2028),('2028-02-17',202807,2,2028,17,7,202802,2028),('2028-02-18',202807,2,2028,18,7,202802,2028),('2028-02-19',202807,2,2028,19,7,202802,2028),('2028-02-20',202808,2,2028,20,8,202802,2028),('2028-02-21',202808,2,2028,21,8,202802,2028),('2028-02-22',202808,2,2028,22,8,202802,2028),('2028-02-23',202808,2,2028,23,8,202802,2028),('2028-02-24',202808,2,2028,24,8,202802,2028),('2028-02-25',202808,2,2028,25,8,202802,2028),('2028-02-26',202808,2,2028,26,8,202802,2028),('2028-02-27',202809,2,2028,27,9,202802,2028),('2028-02-28',202809,2,2028,28,9,202802,2028),('2028-02-29',202809,2,2028,29,9,202802,2028),('2028-03-01',202809,3,2028,1,9,202803,2028),('2028-03-02',202809,3,2028,2,9,202803,2028),('2028-03-03',202809,3,2028,3,9,202803,2028),('2028-03-04',202809,3,2028,4,9,202803,2028),('2028-03-05',202810,3,2028,5,10,202803,2028),('2028-03-06',202810,3,2028,6,10,202803,2028),('2028-03-07',202810,3,2028,7,10,202803,2028),('2028-03-08',202810,3,2028,8,10,202803,2028),('2028-03-09',202810,3,2028,9,10,202803,2028),('2028-03-10',202810,3,2028,10,10,202803,2028),('2028-03-11',202810,3,2028,11,10,202803,2028),('2028-03-12',202811,3,2028,12,11,202803,2028),('2028-03-13',202811,3,2028,13,11,202803,2028),('2028-03-14',202811,3,2028,14,11,202803,2028),('2028-03-15',202811,3,2028,15,11,202803,2028),('2028-03-16',202811,3,2028,16,11,202803,2028),('2028-03-17',202811,3,2028,17,11,202803,2028),('2028-03-18',202811,3,2028,18,11,202803,2028),('2028-03-19',202812,3,2028,19,12,202803,2028),('2028-03-20',202812,3,2028,20,12,202803,2028),('2028-03-21',202812,3,2028,21,12,202803,2028),('2028-03-22',202812,3,2028,22,12,202803,2028),('2028-03-23',202812,3,2028,23,12,202803,2028),('2028-03-24',202812,3,2028,24,12,202803,2028),('2028-03-25',202812,3,2028,25,12,202803,2028),('2028-03-26',202813,3,2028,26,13,202803,2028),('2028-03-27',202813,3,2028,27,13,202803,2028),('2028-03-28',202813,3,2028,28,13,202803,2028),('2028-03-29',202813,3,2028,29,13,202803,2028),('2028-03-30',202813,3,2028,30,13,202803,2028),('2028-03-31',202813,3,2028,31,13,202803,2028),('2028-04-01',202813,4,2028,1,13,202804,2028),('2028-04-02',202814,4,2028,2,14,202804,2028),('2028-04-03',202814,4,2028,3,14,202804,2028),('2028-04-04',202814,4,2028,4,14,202804,2028),('2028-04-05',202814,4,2028,5,14,202804,2028),('2028-04-06',202814,4,2028,6,14,202804,2028),('2028-04-07',202814,4,2028,7,14,202804,2028),('2028-04-08',202814,4,2028,8,14,202804,2028),('2028-04-09',202815,4,2028,9,15,202804,2028),('2028-04-10',202815,4,2028,10,15,202804,2028),('2028-04-11',202815,4,2028,11,15,202804,2028),('2028-04-12',202815,4,2028,12,15,202804,2028),('2028-04-13',202815,4,2028,13,15,202804,2028),('2028-04-14',202815,4,2028,14,15,202804,2028),('2028-04-15',202815,4,2028,15,15,202804,2028),('2028-04-16',202816,4,2028,16,16,202804,2028),('2028-04-17',202816,4,2028,17,16,202804,2028),('2028-04-18',202816,4,2028,18,16,202804,2028),('2028-04-19',202816,4,2028,19,16,202804,2028),('2028-04-20',202816,4,2028,20,16,202804,2028),('2028-04-21',202816,4,2028,21,16,202804,2028),('2028-04-22',202816,4,2028,22,16,202804,2028),('2028-04-23',202817,4,2028,23,17,202804,2028),('2028-04-24',202817,4,2028,24,17,202804,2028),('2028-04-25',202817,4,2028,25,17,202804,2028),('2028-04-26',202817,4,2028,26,17,202804,2028),('2028-04-27',202817,4,2028,27,17,202804,2028),('2028-04-28',202817,4,2028,28,17,202804,2028),('2028-04-29',202817,4,2028,29,17,202804,2028),('2028-04-30',202818,4,2028,30,18,202804,2028),('2028-05-01',202818,5,2028,1,18,202805,2028),('2028-05-02',202818,5,2028,2,18,202805,2028),('2028-05-03',202818,5,2028,3,18,202805,2028),('2028-05-04',202818,5,2028,4,18,202805,2028),('2028-05-05',202818,5,2028,5,18,202805,2028),('2028-05-06',202818,5,2028,6,18,202805,2028),('2028-05-07',202819,5,2028,7,19,202805,2028),('2028-05-08',202819,5,2028,8,19,202805,2028),('2028-05-09',202819,5,2028,9,19,202805,2028),('2028-05-10',202819,5,2028,10,19,202805,2028),('2028-05-11',202819,5,2028,11,19,202805,2028),('2028-05-12',202819,5,2028,12,19,202805,2028),('2028-05-13',202819,5,2028,13,19,202805,2028),('2028-05-14',202820,5,2028,14,20,202805,2028),('2028-05-15',202820,5,2028,15,20,202805,2028),('2028-05-16',202820,5,2028,16,20,202805,2028),('2028-05-17',202820,5,2028,17,20,202805,2028),('2028-05-18',202820,5,2028,18,20,202805,2028),('2028-05-19',202820,5,2028,19,20,202805,2028),('2028-05-20',202820,5,2028,20,20,202805,2028),('2028-05-21',202821,5,2028,21,21,202805,2028),('2028-05-22',202821,5,2028,22,21,202805,2028),('2028-05-23',202821,5,2028,23,21,202805,2028),('2028-05-24',202821,5,2028,24,21,202805,2028),('2028-05-25',202821,5,2028,25,21,202805,2028),('2028-05-26',202821,5,2028,26,21,202805,2028),('2028-05-27',202821,5,2028,27,21,202805,2028),('2028-05-28',202822,5,2028,28,22,202805,2028),('2028-05-29',202822,5,2028,29,22,202805,2028),('2028-05-30',202822,5,2028,30,22,202805,2028),('2028-05-31',202822,5,2028,31,22,202805,2028),('2028-06-01',202822,6,2028,1,22,202806,2028),('2028-06-02',202822,6,2028,2,22,202806,2028),('2028-06-03',202822,6,2028,3,22,202806,2028),('2028-06-04',202823,6,2028,4,23,202806,2028),('2028-06-05',202823,6,2028,5,23,202806,2028),('2028-06-06',202823,6,2028,6,23,202806,2028),('2028-06-07',202823,6,2028,7,23,202806,2028),('2028-06-08',202823,6,2028,8,23,202806,2028),('2028-06-09',202823,6,2028,9,23,202806,2028),('2028-06-10',202823,6,2028,10,23,202806,2028),('2028-06-11',202824,6,2028,11,24,202806,2028),('2028-06-12',202824,6,2028,12,24,202806,2028),('2028-06-13',202824,6,2028,13,24,202806,2028),('2028-06-14',202824,6,2028,14,24,202806,2028),('2028-06-15',202824,6,2028,15,24,202806,2028),('2028-06-16',202824,6,2028,16,24,202806,2028),('2028-06-17',202824,6,2028,17,24,202806,2028),('2028-06-18',202825,6,2028,18,25,202806,2028),('2028-06-19',202825,6,2028,19,25,202806,2028),('2028-06-20',202825,6,2028,20,25,202806,2028),('2028-06-21',202825,6,2028,21,25,202806,2028),('2028-06-22',202825,6,2028,22,25,202806,2028),('2028-06-23',202825,6,2028,23,25,202806,2028),('2028-06-24',202825,6,2028,24,25,202806,2028),('2028-06-25',202826,6,2028,25,26,202806,2028),('2028-06-26',202826,6,2028,26,26,202806,2028),('2028-06-27',202826,6,2028,27,26,202806,2028),('2028-06-28',202826,6,2028,28,26,202806,2028),('2028-06-29',202826,6,2028,29,26,202806,2028),('2028-06-30',202826,6,2028,30,26,202806,2028),('2028-07-01',202826,7,2028,1,26,202807,2028),('2028-07-02',202827,7,2028,2,27,202807,2028),('2028-07-03',202827,7,2028,3,27,202807,2028),('2028-07-04',202827,7,2028,4,27,202807,2028),('2028-07-05',202827,7,2028,5,27,202807,2028),('2028-07-06',202827,7,2028,6,27,202807,2028),('2028-07-07',202827,7,2028,7,27,202807,2028),('2028-07-08',202827,7,2028,8,27,202807,2028),('2028-07-09',202828,7,2028,9,28,202807,2028),('2028-07-10',202828,7,2028,10,28,202807,2028),('2028-07-11',202828,7,2028,11,28,202807,2028),('2028-07-12',202828,7,2028,12,28,202807,2028),('2028-07-13',202828,7,2028,13,28,202807,2028),('2028-07-14',202828,7,2028,14,28,202807,2028),('2028-07-15',202828,7,2028,15,28,202807,2028),('2028-07-16',202829,7,2028,16,29,202807,2028),('2028-07-17',202829,7,2028,17,29,202807,2028),('2028-07-18',202829,7,2028,18,29,202807,2028),('2028-07-19',202829,7,2028,19,29,202807,2028),('2028-07-20',202829,7,2028,20,29,202807,2028),('2028-07-21',202829,7,2028,21,29,202807,2028),('2028-07-22',202829,7,2028,22,29,202807,2028),('2028-07-23',202830,7,2028,23,30,202807,2028),('2028-07-24',202830,7,2028,24,30,202807,2028),('2028-07-25',202830,7,2028,25,30,202807,2028),('2028-07-26',202830,7,2028,26,30,202807,2028),('2028-07-27',202830,7,2028,27,30,202807,2028),('2028-07-28',202830,7,2028,28,30,202807,2028),('2028-07-29',202830,7,2028,29,30,202807,2028),('2028-07-30',202831,7,2028,30,31,202807,2028),('2028-07-31',202831,7,2028,31,31,202807,2028),('2028-08-01',202831,8,2028,1,31,202808,2028),('2028-08-02',202831,8,2028,2,31,202808,2028),('2028-08-03',202831,8,2028,3,31,202808,2028),('2028-08-04',202831,8,2028,4,31,202808,2028),('2028-08-05',202831,8,2028,5,31,202808,2028),('2028-08-06',202832,8,2028,6,32,202808,2028),('2028-08-07',202832,8,2028,7,32,202808,2028),('2028-08-08',202832,8,2028,8,32,202808,2028),('2028-08-09',202832,8,2028,9,32,202808,2028),('2028-08-10',202832,8,2028,10,32,202808,2028),('2028-08-11',202832,8,2028,11,32,202808,2028),('2028-08-12',202832,8,2028,12,32,202808,2028),('2028-08-13',202833,8,2028,13,33,202808,2028),('2028-08-14',202833,8,2028,14,33,202808,2028),('2028-08-15',202833,8,2028,15,33,202808,2028),('2028-08-16',202833,8,2028,16,33,202808,2028),('2028-08-17',202833,8,2028,17,33,202808,2028),('2028-08-18',202833,8,2028,18,33,202808,2028),('2028-08-19',202833,8,2028,19,33,202808,2028),('2028-08-20',202834,8,2028,20,34,202808,2028),('2028-08-21',202834,8,2028,21,34,202808,2028),('2028-08-22',202834,8,2028,22,34,202808,2028),('2028-08-23',202834,8,2028,23,34,202808,2028),('2028-08-24',202834,8,2028,24,34,202808,2028),('2028-08-25',202834,8,2028,25,34,202808,2028),('2028-08-26',202834,8,2028,26,34,202808,2028),('2028-08-27',202835,8,2028,27,35,202808,2028),('2028-08-28',202835,8,2028,28,35,202808,2028),('2028-08-29',202835,8,2028,29,35,202808,2028),('2028-08-30',202835,8,2028,30,35,202808,2028),('2028-08-31',202835,8,2028,31,35,202808,2028),('2028-09-01',202835,9,2028,1,35,202809,2028),('2028-09-02',202835,9,2028,2,35,202809,2028),('2028-09-03',202836,9,2028,3,36,202809,2028),('2028-09-04',202836,9,2028,4,36,202809,2028),('2028-09-05',202836,9,2028,5,36,202809,2028),('2028-09-06',202836,9,2028,6,36,202809,2028),('2028-09-07',202836,9,2028,7,36,202809,2028),('2028-09-08',202836,9,2028,8,36,202809,2028),('2028-09-09',202836,9,2028,9,36,202809,2028),('2028-09-10',202837,9,2028,10,37,202809,2028),('2028-09-11',202837,9,2028,11,37,202809,2028),('2028-09-12',202837,9,2028,12,37,202809,2028),('2028-09-13',202837,9,2028,13,37,202809,2028),('2028-09-14',202837,9,2028,14,37,202809,2028),('2028-09-15',202837,9,2028,15,37,202809,2028),('2028-09-16',202837,9,2028,16,37,202809,2028),('2028-09-17',202838,9,2028,17,38,202809,2028),('2028-09-18',202838,9,2028,18,38,202809,2028),('2028-09-19',202838,9,2028,19,38,202809,2028),('2028-09-20',202838,9,2028,20,38,202809,2028),('2028-09-21',202838,9,2028,21,38,202809,2028),('2028-09-22',202838,9,2028,22,38,202809,2028),('2028-09-23',202838,9,2028,23,38,202809,2028),('2028-09-24',202839,9,2028,24,39,202809,2028),('2028-09-25',202839,9,2028,25,39,202809,2028),('2028-09-26',202839,9,2028,26,39,202809,2028),('2028-09-27',202839,9,2028,27,39,202809,2028),('2028-09-28',202839,9,2028,28,39,202809,2028),('2028-09-29',202839,9,2028,29,39,202809,2028),('2028-09-30',202839,9,2028,30,39,202809,2028),('2028-10-01',202840,10,2028,1,40,202810,2028),('2028-10-02',202840,10,2028,2,40,202810,2028),('2028-10-03',202840,10,2028,3,40,202810,2028),('2028-10-04',202840,10,2028,4,40,202810,2028),('2028-10-05',202840,10,2028,5,40,202810,2028),('2028-10-06',202840,10,2028,6,40,202810,2028),('2028-10-07',202840,10,2028,7,40,202810,2028),('2028-10-08',202841,10,2028,8,41,202810,2028),('2028-10-09',202841,10,2028,9,41,202810,2028),('2028-10-10',202841,10,2028,10,41,202810,2028),('2028-10-11',202841,10,2028,11,41,202810,2028),('2028-10-12',202841,10,2028,12,41,202810,2028),('2028-10-13',202841,10,2028,13,41,202810,2028),('2028-10-14',202841,10,2028,14,41,202810,2028),('2028-10-15',202842,10,2028,15,42,202810,2028),('2028-10-16',202842,10,2028,16,42,202810,2028),('2028-10-17',202842,10,2028,17,42,202810,2028),('2028-10-18',202842,10,2028,18,42,202810,2028),('2028-10-19',202842,10,2028,19,42,202810,2028),('2028-10-20',202842,10,2028,20,42,202810,2028),('2028-10-21',202842,10,2028,21,42,202810,2028),('2028-10-22',202843,10,2028,22,43,202810,2028),('2028-10-23',202843,10,2028,23,43,202810,2028),('2028-10-24',202843,10,2028,24,43,202810,2028),('2028-10-25',202843,10,2028,25,43,202810,2028),('2028-10-26',202843,10,2028,26,43,202810,2028),('2028-10-27',202843,10,2028,27,43,202810,2028),('2028-10-28',202843,10,2028,28,43,202810,2028),('2028-10-29',202844,10,2028,29,44,202810,2028),('2028-10-30',202844,10,2028,30,44,202810,2028),('2028-10-31',202844,10,2028,31,44,202810,2028),('2028-11-01',202844,11,2028,1,44,202811,2028),('2028-11-02',202844,11,2028,2,44,202811,2028),('2028-11-03',202844,11,2028,3,44,202811,2028),('2028-11-04',202844,11,2028,4,44,202811,2028),('2028-11-05',202845,11,2028,5,45,202811,2028),('2028-11-06',202845,11,2028,6,45,202811,2028),('2028-11-07',202845,11,2028,7,45,202811,2028),('2028-11-08',202845,11,2028,8,45,202811,2028),('2028-11-09',202845,11,2028,9,45,202811,2028),('2028-11-10',202845,11,2028,10,45,202811,2028),('2028-11-11',202845,11,2028,11,45,202811,2028),('2028-11-12',202846,11,2028,12,46,202811,2028),('2028-11-13',202846,11,2028,13,46,202811,2028),('2028-11-14',202846,11,2028,14,46,202811,2028),('2028-11-15',202846,11,2028,15,46,202811,2028),('2028-11-16',202846,11,2028,16,46,202811,2028),('2028-11-17',202846,11,2028,17,46,202811,2028),('2028-11-18',202846,11,2028,18,46,202811,2028),('2028-11-19',202847,11,2028,19,47,202811,2028),('2028-11-20',202847,11,2028,20,47,202811,2028),('2028-11-21',202847,11,2028,21,47,202811,2028),('2028-11-22',202847,11,2028,22,47,202811,2028),('2028-11-23',202847,11,2028,23,47,202811,2028),('2028-11-24',202847,11,2028,24,47,202811,2028),('2028-11-25',202847,11,2028,25,47,202811,2028),('2028-11-26',202848,11,2028,26,48,202811,2028),('2028-11-27',202848,11,2028,27,48,202811,2028),('2028-11-28',202848,11,2028,28,48,202811,2028),('2028-11-29',202848,11,2028,29,48,202811,2028),('2028-11-30',202848,11,2028,30,48,202811,2028),('2028-12-01',202848,12,2028,1,48,202812,2029),('2028-12-02',202848,12,2028,2,48,202812,2029),('2028-12-03',202849,12,2028,3,49,202812,2029),('2028-12-04',202849,12,2028,4,49,202812,2029),('2028-12-05',202849,12,2028,5,49,202812,2029),('2028-12-06',202849,12,2028,6,49,202812,2029),('2028-12-07',202849,12,2028,7,49,202812,2029),('2028-12-08',202849,12,2028,8,49,202812,2029),('2028-12-09',202849,12,2028,9,49,202812,2029),('2028-12-10',202850,12,2028,10,50,202812,2029),('2028-12-11',202850,12,2028,11,50,202812,2029),('2028-12-12',202850,12,2028,12,50,202812,2029),('2028-12-13',202850,12,2028,13,50,202812,2029),('2028-12-14',202850,12,2028,14,50,202812,2029),('2028-12-15',202850,12,2028,15,50,202812,2029),('2028-12-16',202850,12,2028,16,50,202812,2029),('2028-12-17',202851,12,2028,17,51,202812,2029),('2028-12-18',202851,12,2028,18,51,202812,2029),('2028-12-19',202851,12,2028,19,51,202812,2029),('2028-12-20',202851,12,2028,20,51,202812,2029),('2028-12-21',202851,12,2028,21,51,202812,2029),('2028-12-22',202851,12,2028,22,51,202812,2029),('2028-12-23',202851,12,2028,23,51,202812,2029),('2028-12-24',202852,12,2028,24,52,202812,2029),('2028-12-25',202852,12,2028,25,52,202812,2029),('2028-12-26',202852,12,2028,26,52,202812,2029),('2028-12-27',202852,12,2028,27,52,202812,2029),('2028-12-28',202852,12,2028,28,52,202812,2029),('2028-12-29',202852,12,2028,29,52,202812,2029),('2028-12-30',202852,12,2028,30,52,202812,2029),('2028-12-31',202853,12,2028,31,1,202812,2029),('2029-01-01',202901,1,2029,1,1,202901,2029),('2029-01-02',202901,1,2029,2,1,202901,2029),('2029-01-03',202901,1,2029,3,1,202901,2029),('2029-01-04',202901,1,2029,4,1,202901,2029),('2029-01-05',202901,1,2029,5,1,202901,2029),('2029-01-06',202901,1,2029,6,1,202901,2029),('2029-01-07',202902,1,2029,7,2,202901,2029),('2029-01-08',202902,1,2029,8,2,202901,2029),('2029-01-09',202902,1,2029,9,2,202901,2029),('2029-01-10',202902,1,2029,10,2,202901,2029),('2029-01-11',202902,1,2029,11,2,202901,2029),('2029-01-12',202902,1,2029,12,2,202901,2029),('2029-01-13',202902,1,2029,13,2,202901,2029),('2029-01-14',202903,1,2029,14,3,202901,2029),('2029-01-15',202903,1,2029,15,3,202901,2029),('2029-01-16',202903,1,2029,16,3,202901,2029),('2029-01-17',202903,1,2029,17,3,202901,2029),('2029-01-18',202903,1,2029,18,3,202901,2029),('2029-01-19',202903,1,2029,19,3,202901,2029),('2029-01-20',202903,1,2029,20,3,202901,2029),('2029-01-21',202904,1,2029,21,4,202901,2029),('2029-01-22',202904,1,2029,22,4,202901,2029),('2029-01-23',202904,1,2029,23,4,202901,2029),('2029-01-24',202904,1,2029,24,4,202901,2029),('2029-01-25',202904,1,2029,25,4,202901,2029),('2029-01-26',202904,1,2029,26,4,202901,2029),('2029-01-27',202904,1,2029,27,4,202901,2029),('2029-01-28',202905,1,2029,28,5,202901,2029),('2029-01-29',202905,1,2029,29,5,202901,2029),('2029-01-30',202905,1,2029,30,5,202901,2029),('2029-01-31',202905,1,2029,31,5,202901,2029),('2029-02-01',202905,2,2029,1,5,202902,2029),('2029-02-02',202905,2,2029,2,5,202902,2029),('2029-02-03',202905,2,2029,3,5,202902,2029),('2029-02-04',202906,2,2029,4,6,202902,2029),('2029-02-05',202906,2,2029,5,6,202902,2029),('2029-02-06',202906,2,2029,6,6,202902,2029),('2029-02-07',202906,2,2029,7,6,202902,2029),('2029-02-08',202906,2,2029,8,6,202902,2029),('2029-02-09',202906,2,2029,9,6,202902,2029),('2029-02-10',202906,2,2029,10,6,202902,2029),('2029-02-11',202907,2,2029,11,7,202902,2029),('2029-02-12',202907,2,2029,12,7,202902,2029),('2029-02-13',202907,2,2029,13,7,202902,2029),('2029-02-14',202907,2,2029,14,7,202902,2029),('2029-02-15',202907,2,2029,15,7,202902,2029),('2029-02-16',202907,2,2029,16,7,202902,2029),('2029-02-17',202907,2,2029,17,7,202902,2029),('2029-02-18',202908,2,2029,18,8,202902,2029),('2029-02-19',202908,2,2029,19,8,202902,2029),('2029-02-20',202908,2,2029,20,8,202902,2029),('2029-02-21',202908,2,2029,21,8,202902,2029),('2029-02-22',202908,2,2029,22,8,202902,2029),('2029-02-23',202908,2,2029,23,8,202902,2029),('2029-02-24',202908,2,2029,24,8,202902,2029),('2029-02-25',202909,2,2029,25,9,202902,2029),('2029-02-26',202909,2,2029,26,9,202902,2029),('2029-02-27',202909,2,2029,27,9,202902,2029),('2029-02-28',202909,2,2029,28,9,202902,2029),('2029-03-01',202909,3,2029,1,9,202903,2029),('2029-03-02',202909,3,2029,2,9,202903,2029),('2029-03-03',202909,3,2029,3,9,202903,2029),('2029-03-04',202910,3,2029,4,10,202903,2029),('2029-03-05',202910,3,2029,5,10,202903,2029),('2029-03-06',202910,3,2029,6,10,202903,2029),('2029-03-07',202910,3,2029,7,10,202903,2029),('2029-03-08',202910,3,2029,8,10,202903,2029),('2029-03-09',202910,3,2029,9,10,202903,2029),('2029-03-10',202910,3,2029,10,10,202903,2029),('2029-03-11',202911,3,2029,11,11,202903,2029),('2029-03-12',202911,3,2029,12,11,202903,2029),('2029-03-13',202911,3,2029,13,11,202903,2029),('2029-03-14',202911,3,2029,14,11,202903,2029),('2029-03-15',202911,3,2029,15,11,202903,2029),('2029-03-16',202911,3,2029,16,11,202903,2029),('2029-03-17',202911,3,2029,17,11,202903,2029),('2029-03-18',202912,3,2029,18,12,202903,2029),('2029-03-19',202912,3,2029,19,12,202903,2029),('2029-03-20',202912,3,2029,20,12,202903,2029),('2029-03-21',202912,3,2029,21,12,202903,2029),('2029-03-22',202912,3,2029,22,12,202903,2029),('2029-03-23',202912,3,2029,23,12,202903,2029),('2029-03-24',202912,3,2029,24,12,202903,2029),('2029-03-25',202913,3,2029,25,13,202903,2029),('2029-03-26',202913,3,2029,26,13,202903,2029),('2029-03-27',202913,3,2029,27,13,202903,2029),('2029-03-28',202913,3,2029,28,13,202903,2029),('2029-03-29',202913,3,2029,29,13,202903,2029),('2029-03-30',202913,3,2029,30,13,202903,2029),('2029-03-31',202913,3,2029,31,13,202903,2029),('2029-04-01',202914,4,2029,1,14,202904,2029),('2029-04-02',202914,4,2029,2,14,202904,2029),('2029-04-03',202914,4,2029,3,14,202904,2029),('2029-04-04',202914,4,2029,4,14,202904,2029),('2029-04-05',202914,4,2029,5,14,202904,2029),('2029-04-06',202914,4,2029,6,14,202904,2029),('2029-04-07',202914,4,2029,7,14,202904,2029),('2029-04-08',202915,4,2029,8,15,202904,2029),('2029-04-09',202915,4,2029,9,15,202904,2029),('2029-04-10',202915,4,2029,10,15,202904,2029),('2029-04-11',202915,4,2029,11,15,202904,2029),('2029-04-12',202915,4,2029,12,15,202904,2029),('2029-04-13',202915,4,2029,13,15,202904,2029),('2029-04-14',202915,4,2029,14,15,202904,2029),('2029-04-15',202916,4,2029,15,16,202904,2029),('2029-04-16',202916,4,2029,16,16,202904,2029),('2029-04-17',202916,4,2029,17,16,202904,2029),('2029-04-18',202916,4,2029,18,16,202904,2029),('2029-04-19',202916,4,2029,19,16,202904,2029),('2029-04-20',202916,4,2029,20,16,202904,2029),('2029-04-21',202916,4,2029,21,16,202904,2029),('2029-04-22',202917,4,2029,22,17,202904,2029),('2029-04-23',202917,4,2029,23,17,202904,2029),('2029-04-24',202917,4,2029,24,17,202904,2029),('2029-04-25',202917,4,2029,25,17,202904,2029),('2029-04-26',202917,4,2029,26,17,202904,2029),('2029-04-27',202917,4,2029,27,17,202904,2029),('2029-04-28',202917,4,2029,28,17,202904,2029),('2029-04-29',202918,4,2029,29,18,202904,2029),('2029-04-30',202918,4,2029,30,18,202904,2029),('2029-05-01',202918,5,2029,1,18,202905,2029),('2029-05-02',202918,5,2029,2,18,202905,2029),('2029-05-03',202918,5,2029,3,18,202905,2029),('2029-05-04',202918,5,2029,4,18,202905,2029),('2029-05-05',202918,5,2029,5,18,202905,2029),('2029-05-06',202919,5,2029,6,19,202905,2029),('2029-05-07',202919,5,2029,7,19,202905,2029),('2029-05-08',202919,5,2029,8,19,202905,2029),('2029-05-09',202919,5,2029,9,19,202905,2029),('2029-05-10',202919,5,2029,10,19,202905,2029),('2029-05-11',202919,5,2029,11,19,202905,2029),('2029-05-12',202919,5,2029,12,19,202905,2029),('2029-05-13',202920,5,2029,13,20,202905,2029),('2029-05-14',202920,5,2029,14,20,202905,2029),('2029-05-15',202920,5,2029,15,20,202905,2029),('2029-05-16',202920,5,2029,16,20,202905,2029),('2029-05-17',202920,5,2029,17,20,202905,2029),('2029-05-18',202920,5,2029,18,20,202905,2029),('2029-05-19',202920,5,2029,19,20,202905,2029),('2029-05-20',202921,5,2029,20,21,202905,2029),('2029-05-21',202921,5,2029,21,21,202905,2029),('2029-05-22',202921,5,2029,22,21,202905,2029),('2029-05-23',202921,5,2029,23,21,202905,2029),('2029-05-24',202921,5,2029,24,21,202905,2029),('2029-05-25',202921,5,2029,25,21,202905,2029),('2029-05-26',202921,5,2029,26,21,202905,2029),('2029-05-27',202922,5,2029,27,22,202905,2029),('2029-05-28',202922,5,2029,28,22,202905,2029),('2029-05-29',202922,5,2029,29,22,202905,2029),('2029-05-30',202922,5,2029,30,22,202905,2029),('2029-05-31',202922,5,2029,31,22,202905,2029),('2029-06-01',202922,6,2029,1,22,202906,2029),('2029-06-02',202922,6,2029,2,22,202906,2029),('2029-06-03',202923,6,2029,3,23,202906,2029),('2029-06-04',202923,6,2029,4,23,202906,2029),('2029-06-05',202923,6,2029,5,23,202906,2029),('2029-06-06',202923,6,2029,6,23,202906,2029),('2029-06-07',202923,6,2029,7,23,202906,2029),('2029-06-08',202923,6,2029,8,23,202906,2029),('2029-06-09',202923,6,2029,9,23,202906,2029),('2029-06-10',202924,6,2029,10,24,202906,2029),('2029-06-11',202924,6,2029,11,24,202906,2029),('2029-06-12',202924,6,2029,12,24,202906,2029),('2029-06-13',202924,6,2029,13,24,202906,2029),('2029-06-14',202924,6,2029,14,24,202906,2029),('2029-06-15',202924,6,2029,15,24,202906,2029),('2029-06-16',202924,6,2029,16,24,202906,2029),('2029-06-17',202925,6,2029,17,25,202906,2029),('2029-06-18',202925,6,2029,18,25,202906,2029),('2029-06-19',202925,6,2029,19,25,202906,2029),('2029-06-20',202925,6,2029,20,25,202906,2029),('2029-06-21',202925,6,2029,21,25,202906,2029),('2029-06-22',202925,6,2029,22,25,202906,2029),('2029-06-23',202925,6,2029,23,25,202906,2029),('2029-06-24',202926,6,2029,24,26,202906,2029),('2029-06-25',202926,6,2029,25,26,202906,2029),('2029-06-26',202926,6,2029,26,26,202906,2029),('2029-06-27',202926,6,2029,27,26,202906,2029),('2029-06-28',202926,6,2029,28,26,202906,2029),('2029-06-29',202926,6,2029,29,26,202906,2029),('2029-06-30',202926,6,2029,30,26,202906,2029),('2029-07-01',202927,7,2029,1,27,202907,2029),('2029-07-02',202927,7,2029,2,27,202907,2029),('2029-07-03',202927,7,2029,3,27,202907,2029),('2029-07-04',202927,7,2029,4,27,202907,2029),('2029-07-05',202927,7,2029,5,27,202907,2029),('2029-07-06',202927,7,2029,6,27,202907,2029),('2029-07-07',202927,7,2029,7,27,202907,2029),('2029-07-08',202928,7,2029,8,28,202907,2029),('2029-07-09',202928,7,2029,9,28,202907,2029),('2029-07-10',202928,7,2029,10,28,202907,2029),('2029-07-11',202928,7,2029,11,28,202907,2029),('2029-07-12',202928,7,2029,12,28,202907,2029),('2029-07-13',202928,7,2029,13,28,202907,2029),('2029-07-14',202928,7,2029,14,28,202907,2029),('2029-07-15',202929,7,2029,15,29,202907,2029),('2029-07-16',202929,7,2029,16,29,202907,2029),('2029-07-17',202929,7,2029,17,29,202907,2029),('2029-07-18',202929,7,2029,18,29,202907,2029),('2029-07-19',202929,7,2029,19,29,202907,2029),('2029-07-20',202929,7,2029,20,29,202907,2029),('2029-07-21',202929,7,2029,21,29,202907,2029),('2029-07-22',202930,7,2029,22,30,202907,2029),('2029-07-23',202930,7,2029,23,30,202907,2029),('2029-07-24',202930,7,2029,24,30,202907,2029),('2029-07-25',202930,7,2029,25,30,202907,2029),('2029-07-26',202930,7,2029,26,30,202907,2029),('2029-07-27',202930,7,2029,27,30,202907,2029),('2029-07-28',202930,7,2029,28,30,202907,2029),('2029-07-29',202931,7,2029,29,31,202907,2029),('2029-07-30',202931,7,2029,30,31,202907,2029),('2029-07-31',202931,7,2029,31,31,202907,2029),('2029-08-01',202931,8,2029,1,31,202908,2029),('2029-08-02',202931,8,2029,2,31,202908,2029),('2029-08-03',202931,8,2029,3,31,202908,2029),('2029-08-04',202931,8,2029,4,31,202908,2029),('2029-08-05',202932,8,2029,5,32,202908,2029),('2029-08-06',202932,8,2029,6,32,202908,2029),('2029-08-07',202932,8,2029,7,32,202908,2029),('2029-08-08',202932,8,2029,8,32,202908,2029),('2029-08-09',202932,8,2029,9,32,202908,2029),('2029-08-10',202932,8,2029,10,32,202908,2029),('2029-08-11',202932,8,2029,11,32,202908,2029),('2029-08-12',202933,8,2029,12,33,202908,2029),('2029-08-13',202933,8,2029,13,33,202908,2029),('2029-08-14',202933,8,2029,14,33,202908,2029),('2029-08-15',202933,8,2029,15,33,202908,2029),('2029-08-16',202933,8,2029,16,33,202908,2029),('2029-08-17',202933,8,2029,17,33,202908,2029),('2029-08-18',202933,8,2029,18,33,202908,2029),('2029-08-19',202934,8,2029,19,34,202908,2029),('2029-08-20',202934,8,2029,20,34,202908,2029),('2029-08-21',202934,8,2029,21,34,202908,2029),('2029-08-22',202934,8,2029,22,34,202908,2029),('2029-08-23',202934,8,2029,23,34,202908,2029),('2029-08-24',202934,8,2029,24,34,202908,2029),('2029-08-25',202934,8,2029,25,34,202908,2029),('2029-08-26',202935,8,2029,26,35,202908,2029),('2029-08-27',202935,8,2029,27,35,202908,2029),('2029-08-28',202935,8,2029,28,35,202908,2029),('2029-08-29',202935,8,2029,29,35,202908,2029),('2029-08-30',202935,8,2029,30,35,202908,2029),('2029-08-31',202935,8,2029,31,35,202908,2029),('2029-09-01',202935,9,2029,1,35,202909,2029),('2029-09-02',202936,9,2029,2,36,202909,2029),('2029-09-03',202936,9,2029,3,36,202909,2029),('2029-09-04',202936,9,2029,4,36,202909,2029),('2029-09-05',202936,9,2029,5,36,202909,2029),('2029-09-06',202936,9,2029,6,36,202909,2029),('2029-09-07',202936,9,2029,7,36,202909,2029),('2029-09-08',202936,9,2029,8,36,202909,2029),('2029-09-09',202937,9,2029,9,37,202909,2029),('2029-09-10',202937,9,2029,10,37,202909,2029),('2029-09-11',202937,9,2029,11,37,202909,2029),('2029-09-12',202937,9,2029,12,37,202909,2029),('2029-09-13',202937,9,2029,13,37,202909,2029),('2029-09-14',202937,9,2029,14,37,202909,2029),('2029-09-15',202937,9,2029,15,37,202909,2029),('2029-09-16',202938,9,2029,16,38,202909,2029),('2029-09-17',202938,9,2029,17,38,202909,2029),('2029-09-18',202938,9,2029,18,38,202909,2029),('2029-09-19',202938,9,2029,19,38,202909,2029),('2029-09-20',202938,9,2029,20,38,202909,2029),('2029-09-21',202938,9,2029,21,38,202909,2029),('2029-09-22',202938,9,2029,22,38,202909,2029),('2029-09-23',202939,9,2029,23,39,202909,2029),('2029-09-24',202939,9,2029,24,39,202909,2029),('2029-09-25',202939,9,2029,25,39,202909,2029),('2029-09-26',202939,9,2029,26,39,202909,2029),('2029-09-27',202939,9,2029,27,39,202909,2029),('2029-09-28',202939,9,2029,28,39,202909,2029),('2029-09-29',202939,9,2029,29,39,202909,2029),('2029-09-30',202940,9,2029,30,40,202909,2029),('2029-10-01',202940,10,2029,1,40,202910,2029),('2029-10-02',202940,10,2029,2,40,202910,2029),('2029-10-03',202940,10,2029,3,40,202910,2029),('2029-10-04',202940,10,2029,4,40,202910,2029),('2029-10-05',202940,10,2029,5,40,202910,2029),('2029-10-06',202940,10,2029,6,40,202910,2029),('2029-10-07',202941,10,2029,7,41,202910,2029),('2029-10-08',202941,10,2029,8,41,202910,2029),('2029-10-09',202941,10,2029,9,41,202910,2029),('2029-10-10',202941,10,2029,10,41,202910,2029),('2029-10-11',202941,10,2029,11,41,202910,2029),('2029-10-12',202941,10,2029,12,41,202910,2029),('2029-10-13',202941,10,2029,13,41,202910,2029),('2029-10-14',202942,10,2029,14,42,202910,2029),('2029-10-15',202942,10,2029,15,42,202910,2029),('2029-10-16',202942,10,2029,16,42,202910,2029),('2029-10-17',202942,10,2029,17,42,202910,2029),('2029-10-18',202942,10,2029,18,42,202910,2029),('2029-10-19',202942,10,2029,19,42,202910,2029),('2029-10-20',202942,10,2029,20,42,202910,2029),('2029-10-21',202943,10,2029,21,43,202910,2029),('2029-10-22',202943,10,2029,22,43,202910,2029),('2029-10-23',202943,10,2029,23,43,202910,2029),('2029-10-24',202943,10,2029,24,43,202910,2029),('2029-10-25',202943,10,2029,25,43,202910,2029),('2029-10-26',202943,10,2029,26,43,202910,2029),('2029-10-27',202943,10,2029,27,43,202910,2029),('2029-10-28',202944,10,2029,28,44,202910,2029),('2029-10-29',202944,10,2029,29,44,202910,2029),('2029-10-30',202944,10,2029,30,44,202910,2029),('2029-10-31',202944,10,2029,31,44,202910,2029),('2029-11-01',202944,11,2029,1,44,202911,2029),('2029-11-02',202944,11,2029,2,44,202911,2029),('2029-11-03',202944,11,2029,3,44,202911,2029),('2029-11-04',202945,11,2029,4,45,202911,2029),('2029-11-05',202945,11,2029,5,45,202911,2029),('2029-11-06',202945,11,2029,6,45,202911,2029),('2029-11-07',202945,11,2029,7,45,202911,2029),('2029-11-08',202945,11,2029,8,45,202911,2029),('2029-11-09',202945,11,2029,9,45,202911,2029),('2029-11-10',202945,11,2029,10,45,202911,2029),('2029-11-11',202946,11,2029,11,46,202911,2029),('2029-11-12',202946,11,2029,12,46,202911,2029),('2029-11-13',202946,11,2029,13,46,202911,2029),('2029-11-14',202946,11,2029,14,46,202911,2029),('2029-11-15',202946,11,2029,15,46,202911,2029),('2029-11-16',202946,11,2029,16,46,202911,2029),('2029-11-17',202946,11,2029,17,46,202911,2029),('2029-11-18',202947,11,2029,18,47,202911,2029),('2029-11-19',202947,11,2029,19,47,202911,2029),('2029-11-20',202947,11,2029,20,47,202911,2029),('2029-11-21',202947,11,2029,21,47,202911,2029),('2029-11-22',202947,11,2029,22,47,202911,2029),('2029-11-23',202947,11,2029,23,47,202911,2029),('2029-11-24',202947,11,2029,24,47,202911,2029),('2029-11-25',202948,11,2029,25,48,202911,2029),('2029-11-26',202948,11,2029,26,48,202911,2029),('2029-11-27',202948,11,2029,27,48,202911,2029),('2029-11-28',202948,11,2029,28,48,202911,2029),('2029-11-29',202948,11,2029,29,48,202911,2029),('2029-11-30',202948,11,2029,30,48,202911,2029),('2029-12-01',202948,12,2029,1,48,202912,2030),('2029-12-02',202949,12,2029,2,49,202912,2030),('2029-12-03',202949,12,2029,3,49,202912,2030),('2029-12-04',202949,12,2029,4,49,202912,2030),('2029-12-05',202949,12,2029,5,49,202912,2030),('2029-12-06',202949,12,2029,6,49,202912,2030),('2029-12-07',202949,12,2029,7,49,202912,2030),('2029-12-08',202949,12,2029,8,49,202912,2030),('2029-12-09',202950,12,2029,9,50,202912,2030),('2029-12-10',202950,12,2029,10,50,202912,2030),('2029-12-11',202950,12,2029,11,50,202912,2030),('2029-12-12',202950,12,2029,12,50,202912,2030),('2029-12-13',202950,12,2029,13,50,202912,2030),('2029-12-14',202950,12,2029,14,50,202912,2030),('2029-12-15',202950,12,2029,15,50,202912,2030),('2029-12-16',202951,12,2029,16,51,202912,2030),('2029-12-17',202951,12,2029,17,51,202912,2030),('2029-12-18',202951,12,2029,18,51,202912,2030),('2029-12-19',202951,12,2029,19,51,202912,2030),('2029-12-20',202951,12,2029,20,51,202912,2030),('2029-12-21',202951,12,2029,21,51,202912,2030),('2029-12-22',202951,12,2029,22,51,202912,2030),('2029-12-23',202952,12,2029,23,52,202912,2030),('2029-12-24',202952,12,2029,24,52,202912,2030),('2029-12-25',202952,12,2029,25,52,202912,2030),('2029-12-26',202952,12,2029,26,52,202912,2030),('2029-12-27',202952,12,2029,27,52,202912,2030),('2029-12-28',202952,12,2029,28,52,202912,2030),('2029-12-29',202952,12,2029,29,52,202912,2030),('2029-12-30',202953,12,2029,30,1,202912,2030),('2029-12-31',202901,12,2029,31,1,202912,2030),('2030-01-01',203001,1,2030,1,1,203001,2030),('2030-01-02',203001,1,2030,2,1,203001,2030),('2030-01-03',203001,1,2030,3,1,203001,2030),('2030-01-04',203001,1,2030,4,1,203001,2030),('2030-01-05',203001,1,2030,5,1,203001,2030),('2030-01-06',203002,1,2030,6,2,203001,2030),('2030-01-07',203002,1,2030,7,2,203001,2030),('2030-01-08',203002,1,2030,8,2,203001,2030),('2030-01-09',203002,1,2030,9,2,203001,2030),('2030-01-10',203002,1,2030,10,2,203001,2030),('2030-01-11',203002,1,2030,11,2,203001,2030),('2030-01-12',203002,1,2030,12,2,203001,2030),('2030-01-13',203003,1,2030,13,3,203001,2030),('2030-01-14',203003,1,2030,14,3,203001,2030),('2030-01-15',203003,1,2030,15,3,203001,2030),('2030-01-16',203003,1,2030,16,3,203001,2030),('2030-01-17',203003,1,2030,17,3,203001,2030),('2030-01-18',203003,1,2030,18,3,203001,2030),('2030-01-19',203003,1,2030,19,3,203001,2030),('2030-01-20',203004,1,2030,20,4,203001,2030),('2030-01-21',203004,1,2030,21,4,203001,2030),('2030-01-22',203004,1,2030,22,4,203001,2030),('2030-01-23',203004,1,2030,23,4,203001,2030),('2030-01-24',203004,1,2030,24,4,203001,2030),('2030-01-25',203004,1,2030,25,4,203001,2030),('2030-01-26',203004,1,2030,26,4,203001,2030),('2030-01-27',203005,1,2030,27,5,203001,2030),('2030-01-28',203005,1,2030,28,5,203001,2030),('2030-01-29',203005,1,2030,29,5,203001,2030),('2030-01-30',203005,1,2030,30,5,203001,2030),('2030-01-31',203005,1,2030,31,5,203001,2030),('2030-02-01',203005,2,2030,1,5,203002,2030),('2030-02-02',203005,2,2030,2,5,203002,2030),('2030-02-03',203006,2,2030,3,6,203002,2030),('2030-02-04',203006,2,2030,4,6,203002,2030),('2030-02-05',203006,2,2030,5,6,203002,2030),('2030-02-06',203006,2,2030,6,6,203002,2030),('2030-02-07',203006,2,2030,7,6,203002,2030),('2030-02-08',203006,2,2030,8,6,203002,2030),('2030-02-09',203006,2,2030,9,6,203002,2030),('2030-02-10',203007,2,2030,10,7,203002,2030),('2030-02-11',203007,2,2030,11,7,203002,2030),('2030-02-12',203007,2,2030,12,7,203002,2030),('2030-02-13',203007,2,2030,13,7,203002,2030),('2030-02-14',203007,2,2030,14,7,203002,2030),('2030-02-15',203007,2,2030,15,7,203002,2030),('2030-02-16',203007,2,2030,16,7,203002,2030),('2030-02-17',203008,2,2030,17,8,203002,2030),('2030-02-18',203008,2,2030,18,8,203002,2030),('2030-02-19',203008,2,2030,19,8,203002,2030),('2030-02-20',203008,2,2030,20,8,203002,2030),('2030-02-21',203008,2,2030,21,8,203002,2030),('2030-02-22',203008,2,2030,22,8,203002,2030),('2030-02-23',203008,2,2030,23,8,203002,2030),('2030-02-24',203009,2,2030,24,9,203002,2030),('2030-02-25',203009,2,2030,25,9,203002,2030),('2030-02-26',203009,2,2030,26,9,203002,2030),('2030-02-27',203009,2,2030,27,9,203002,2030),('2030-02-28',203009,2,2030,28,9,203002,2030),('2030-03-01',203009,3,2030,1,9,203003,2030),('2030-03-02',203009,3,2030,2,9,203003,2030),('2030-03-03',203010,3,2030,3,10,203003,2030),('2030-03-04',203010,3,2030,4,10,203003,2030),('2030-03-05',203010,3,2030,5,10,203003,2030),('2030-03-06',203010,3,2030,6,10,203003,2030),('2030-03-07',203010,3,2030,7,10,203003,2030),('2030-03-08',203010,3,2030,8,10,203003,2030),('2030-03-09',203010,3,2030,9,10,203003,2030),('2030-03-10',203011,3,2030,10,11,203003,2030),('2030-03-11',203011,3,2030,11,11,203003,2030),('2030-03-12',203011,3,2030,12,11,203003,2030),('2030-03-13',203011,3,2030,13,11,203003,2030),('2030-03-14',203011,3,2030,14,11,203003,2030),('2030-03-15',203011,3,2030,15,11,203003,2030),('2030-03-16',203011,3,2030,16,11,203003,2030),('2030-03-17',203012,3,2030,17,12,203003,2030),('2030-03-18',203012,3,2030,18,12,203003,2030),('2030-03-19',203012,3,2030,19,12,203003,2030),('2030-03-20',203012,3,2030,20,12,203003,2030),('2030-03-21',203012,3,2030,21,12,203003,2030),('2030-03-22',203012,3,2030,22,12,203003,2030),('2030-03-23',203012,3,2030,23,12,203003,2030),('2030-03-24',203013,3,2030,24,13,203003,2030),('2030-03-25',203013,3,2030,25,13,203003,2030),('2030-03-26',203013,3,2030,26,13,203003,2030),('2030-03-27',203013,3,2030,27,13,203003,2030),('2030-03-28',203013,3,2030,28,13,203003,2030),('2030-03-29',203013,3,2030,29,13,203003,2030),('2030-03-30',203013,3,2030,30,13,203003,2030),('2030-03-31',203014,3,2030,31,14,203003,2030),('2030-04-01',203014,4,2030,1,14,203004,2030),('2030-04-02',203014,4,2030,2,14,203004,2030),('2030-04-03',203014,4,2030,3,14,203004,2030),('2030-04-04',203014,4,2030,4,14,203004,2030),('2030-04-05',203014,4,2030,5,14,203004,2030),('2030-04-06',203014,4,2030,6,14,203004,2030),('2030-04-07',203015,4,2030,7,15,203004,2030),('2030-04-08',203015,4,2030,8,15,203004,2030),('2030-04-09',203015,4,2030,9,15,203004,2030),('2030-04-10',203015,4,2030,10,15,203004,2030),('2030-04-11',203015,4,2030,11,15,203004,2030),('2030-04-12',203015,4,2030,12,15,203004,2030),('2030-04-13',203015,4,2030,13,15,203004,2030),('2030-04-14',203016,4,2030,14,16,203004,2030),('2030-04-15',203016,4,2030,15,16,203004,2030),('2030-04-16',203016,4,2030,16,16,203004,2030),('2030-04-17',203016,4,2030,17,16,203004,2030),('2030-04-18',203016,4,2030,18,16,203004,2030),('2030-04-19',203016,4,2030,19,16,203004,2030),('2030-04-20',203016,4,2030,20,16,203004,2030),('2030-04-21',203017,4,2030,21,17,203004,2030),('2030-04-22',203017,4,2030,22,17,203004,2030),('2030-04-23',203017,4,2030,23,17,203004,2030),('2030-04-24',203017,4,2030,24,17,203004,2030),('2030-04-25',203017,4,2030,25,17,203004,2030),('2030-04-26',203017,4,2030,26,17,203004,2030),('2030-04-27',203017,4,2030,27,17,203004,2030),('2030-04-28',203018,4,2030,28,18,203004,2030),('2030-04-29',203018,4,2030,29,18,203004,2030),('2030-04-30',203018,4,2030,30,18,203004,2030),('2030-05-01',203018,5,2030,1,18,203005,2030),('2030-05-02',203018,5,2030,2,18,203005,2030),('2030-05-03',203018,5,2030,3,18,203005,2030),('2030-05-04',203018,5,2030,4,18,203005,2030),('2030-05-05',203019,5,2030,5,19,203005,2030),('2030-05-06',203019,5,2030,6,19,203005,2030),('2030-05-07',203019,5,2030,7,19,203005,2030),('2030-05-08',203019,5,2030,8,19,203005,2030),('2030-05-09',203019,5,2030,9,19,203005,2030),('2030-05-10',203019,5,2030,10,19,203005,2030),('2030-05-11',203019,5,2030,11,19,203005,2030),('2030-05-12',203020,5,2030,12,20,203005,2030),('2030-05-13',203020,5,2030,13,20,203005,2030),('2030-05-14',203020,5,2030,14,20,203005,2030),('2030-05-15',203020,5,2030,15,20,203005,2030),('2030-05-16',203020,5,2030,16,20,203005,2030),('2030-05-17',203020,5,2030,17,20,203005,2030),('2030-05-18',203020,5,2030,18,20,203005,2030),('2030-05-19',203021,5,2030,19,21,203005,2030),('2030-05-20',203021,5,2030,20,21,203005,2030),('2030-05-21',203021,5,2030,21,21,203005,2030),('2030-05-22',203021,5,2030,22,21,203005,2030),('2030-05-23',203021,5,2030,23,21,203005,2030),('2030-05-24',203021,5,2030,24,21,203005,2030),('2030-05-25',203021,5,2030,25,21,203005,2030),('2030-05-26',203022,5,2030,26,22,203005,2030),('2030-05-27',203022,5,2030,27,22,203005,2030),('2030-05-28',203022,5,2030,28,22,203005,2030),('2030-05-29',203022,5,2030,29,22,203005,2030),('2030-05-30',203022,5,2030,30,22,203005,2030),('2030-05-31',203022,5,2030,31,22,203005,2030),('2030-06-01',203022,6,2030,1,22,203006,2030),('2030-06-02',203023,6,2030,2,23,203006,2030),('2030-06-03',203023,6,2030,3,23,203006,2030),('2030-06-04',203023,6,2030,4,23,203006,2030),('2030-06-05',203023,6,2030,5,23,203006,2030),('2030-06-06',203023,6,2030,6,23,203006,2030),('2030-06-07',203023,6,2030,7,23,203006,2030),('2030-06-08',203023,6,2030,8,23,203006,2030),('2030-06-09',203024,6,2030,9,24,203006,2030),('2030-06-10',203024,6,2030,10,24,203006,2030),('2030-06-11',203024,6,2030,11,24,203006,2030),('2030-06-12',203024,6,2030,12,24,203006,2030),('2030-06-13',203024,6,2030,13,24,203006,2030),('2030-06-14',203024,6,2030,14,24,203006,2030),('2030-06-15',203024,6,2030,15,24,203006,2030),('2030-06-16',203025,6,2030,16,25,203006,2030),('2030-06-17',203025,6,2030,17,25,203006,2030),('2030-06-18',203025,6,2030,18,25,203006,2030),('2030-06-19',203025,6,2030,19,25,203006,2030),('2030-06-20',203025,6,2030,20,25,203006,2030),('2030-06-21',203025,6,2030,21,25,203006,2030),('2030-06-22',203025,6,2030,22,25,203006,2030),('2030-06-23',203026,6,2030,23,26,203006,2030),('2030-06-24',203026,6,2030,24,26,203006,2030),('2030-06-25',203026,6,2030,25,26,203006,2030),('2030-06-26',203026,6,2030,26,26,203006,2030),('2030-06-27',203026,6,2030,27,26,203006,2030),('2030-06-28',203026,6,2030,28,26,203006,2030),('2030-06-29',203026,6,2030,29,26,203006,2030),('2030-06-30',203027,6,2030,30,27,203006,2030),('2030-07-01',203027,7,2030,1,27,203007,2030),('2030-07-02',203027,7,2030,2,27,203007,2030),('2030-07-03',203027,7,2030,3,27,203007,2030),('2030-07-04',203027,7,2030,4,27,203007,2030),('2030-07-05',203027,7,2030,5,27,203007,2030),('2030-07-06',203027,7,2030,6,27,203007,2030),('2030-07-07',203028,7,2030,7,28,203007,2030),('2030-07-08',203028,7,2030,8,28,203007,2030),('2030-07-09',203028,7,2030,9,28,203007,2030),('2030-07-10',203028,7,2030,10,28,203007,2030),('2030-07-11',203028,7,2030,11,28,203007,2030),('2030-07-12',203028,7,2030,12,28,203007,2030),('2030-07-13',203028,7,2030,13,28,203007,2030),('2030-07-14',203029,7,2030,14,29,203007,2030),('2030-07-15',203029,7,2030,15,29,203007,2030),('2030-07-16',203029,7,2030,16,29,203007,2030),('2030-07-17',203029,7,2030,17,29,203007,2030),('2030-07-18',203029,7,2030,18,29,203007,2030),('2030-07-19',203029,7,2030,19,29,203007,2030),('2030-07-20',203029,7,2030,20,29,203007,2030),('2030-07-21',203030,7,2030,21,30,203007,2030),('2030-07-22',203030,7,2030,22,30,203007,2030),('2030-07-23',203030,7,2030,23,30,203007,2030),('2030-07-24',203030,7,2030,24,30,203007,2030),('2030-07-25',203030,7,2030,25,30,203007,2030),('2030-07-26',203030,7,2030,26,30,203007,2030),('2030-07-27',203030,7,2030,27,30,203007,2030),('2030-07-28',203031,7,2030,28,31,203007,2030),('2030-07-29',203031,7,2030,29,31,203007,2030),('2030-07-30',203031,7,2030,30,31,203007,2030),('2030-07-31',203031,7,2030,31,31,203007,2030),('2030-08-01',203031,8,2030,1,31,203008,2030),('2030-08-02',203031,8,2030,2,31,203008,2030),('2030-08-03',203031,8,2030,3,31,203008,2030),('2030-08-04',203032,8,2030,4,32,203008,2030),('2030-08-05',203032,8,2030,5,32,203008,2030),('2030-08-06',203032,8,2030,6,32,203008,2030),('2030-08-07',203032,8,2030,7,32,203008,2030),('2030-08-08',203032,8,2030,8,32,203008,2030),('2030-08-09',203032,8,2030,9,32,203008,2030),('2030-08-10',203032,8,2030,10,32,203008,2030),('2030-08-11',203033,8,2030,11,33,203008,2030),('2030-08-12',203033,8,2030,12,33,203008,2030),('2030-08-13',203033,8,2030,13,33,203008,2030),('2030-08-14',203033,8,2030,14,33,203008,2030),('2030-08-15',203033,8,2030,15,33,203008,2030),('2030-08-16',203033,8,2030,16,33,203008,2030),('2030-08-17',203033,8,2030,17,33,203008,2030),('2030-08-18',203034,8,2030,18,34,203008,2030),('2030-08-19',203034,8,2030,19,34,203008,2030),('2030-08-20',203034,8,2030,20,34,203008,2030),('2030-08-21',203034,8,2030,21,34,203008,2030),('2030-08-22',203034,8,2030,22,34,203008,2030),('2030-08-23',203034,8,2030,23,34,203008,2030),('2030-08-24',203034,8,2030,24,34,203008,2030),('2030-08-25',203035,8,2030,25,35,203008,2030),('2030-08-26',203035,8,2030,26,35,203008,2030),('2030-08-27',203035,8,2030,27,35,203008,2030),('2030-08-28',203035,8,2030,28,35,203008,2030),('2030-08-29',203035,8,2030,29,35,203008,2030),('2030-08-30',203035,8,2030,30,35,203008,2030),('2030-08-31',203035,8,2030,31,35,203008,2030),('2030-09-01',203036,9,2030,1,36,203009,2030),('2030-09-02',203036,9,2030,2,36,203009,2030),('2030-09-03',203036,9,2030,3,36,203009,2030),('2030-09-04',203036,9,2030,4,36,203009,2030),('2030-09-05',203036,9,2030,5,36,203009,2030),('2030-09-06',203036,9,2030,6,36,203009,2030),('2030-09-07',203036,9,2030,7,36,203009,2030),('2030-09-08',203037,9,2030,8,37,203009,2030),('2030-09-09',203037,9,2030,9,37,203009,2030),('2030-09-10',203037,9,2030,10,37,203009,2030),('2030-09-11',203037,9,2030,11,37,203009,2030),('2030-09-12',203037,9,2030,12,37,203009,2030),('2030-09-13',203037,9,2030,13,37,203009,2030),('2030-09-14',203037,9,2030,14,37,203009,2030),('2030-09-15',203038,9,2030,15,38,203009,2030),('2030-09-16',203038,9,2030,16,38,203009,2030),('2030-09-17',203038,9,2030,17,38,203009,2030),('2030-09-18',203038,9,2030,18,38,203009,2030),('2030-09-19',203038,9,2030,19,38,203009,2030),('2030-09-20',203038,9,2030,20,38,203009,2030),('2030-09-21',203038,9,2030,21,38,203009,2030),('2030-09-22',203039,9,2030,22,39,203009,2030),('2030-09-23',203039,9,2030,23,39,203009,2030),('2030-09-24',203039,9,2030,24,39,203009,2030),('2030-09-25',203039,9,2030,25,39,203009,2030),('2030-09-26',203039,9,2030,26,39,203009,2030),('2030-09-27',203039,9,2030,27,39,203009,2030),('2030-09-28',203039,9,2030,28,39,203009,2030),('2030-09-29',203040,9,2030,29,40,203009,2030),('2030-09-30',203040,9,2030,30,40,203009,2030),('2030-10-01',203040,10,2030,1,40,203010,2030),('2030-10-02',203040,10,2030,2,40,203010,2030),('2030-10-03',203040,10,2030,3,40,203010,2030),('2030-10-04',203040,10,2030,4,40,203010,2030),('2030-10-05',203040,10,2030,5,40,203010,2030),('2030-10-06',203041,10,2030,6,41,203010,2030),('2030-10-07',203041,10,2030,7,41,203010,2030),('2030-10-08',203041,10,2030,8,41,203010,2030),('2030-10-09',203041,10,2030,9,41,203010,2030),('2030-10-10',203041,10,2030,10,41,203010,2030),('2030-10-11',203041,10,2030,11,41,203010,2030),('2030-10-12',203041,10,2030,12,41,203010,2030),('2030-10-13',203042,10,2030,13,42,203010,2030),('2030-10-14',203042,10,2030,14,42,203010,2030),('2030-10-15',203042,10,2030,15,42,203010,2030),('2030-10-16',203042,10,2030,16,42,203010,2030),('2030-10-17',203042,10,2030,17,42,203010,2030),('2030-10-18',203042,10,2030,18,42,203010,2030),('2030-10-19',203042,10,2030,19,42,203010,2030),('2030-10-20',203043,10,2030,20,43,203010,2030),('2030-10-21',203043,10,2030,21,43,203010,2030),('2030-10-22',203043,10,2030,22,43,203010,2030),('2030-10-23',203043,10,2030,23,43,203010,2030),('2030-10-24',203043,10,2030,24,43,203010,2030),('2030-10-25',203043,10,2030,25,43,203010,2030),('2030-10-26',203043,10,2030,26,43,203010,2030),('2030-10-27',203044,10,2030,27,44,203010,2030),('2030-10-28',203044,10,2030,28,44,203010,2030),('2030-10-29',203044,10,2030,29,44,203010,2030),('2030-10-30',203044,10,2030,30,44,203010,2030),('2030-10-31',203044,10,2030,31,44,203010,2030),('2030-11-01',203044,11,2030,1,44,203011,2030),('2030-11-02',203044,11,2030,2,44,203011,2030),('2030-11-03',203045,11,2030,3,45,203011,2030),('2030-11-04',203045,11,2030,4,45,203011,2030),('2030-11-05',203045,11,2030,5,45,203011,2030),('2030-11-06',203045,11,2030,6,45,203011,2030),('2030-11-07',203045,11,2030,7,45,203011,2030),('2030-11-08',203045,11,2030,8,45,203011,2030),('2030-11-09',203045,11,2030,9,45,203011,2030),('2030-11-10',203046,11,2030,10,46,203011,2030),('2030-11-11',203046,11,2030,11,46,203011,2030),('2030-11-12',203046,11,2030,12,46,203011,2030),('2030-11-13',203046,11,2030,13,46,203011,2030),('2030-11-14',203046,11,2030,14,46,203011,2030),('2030-11-15',203046,11,2030,15,46,203011,2030),('2030-11-16',203046,11,2030,16,46,203011,2030),('2030-11-17',203047,11,2030,17,47,203011,2030),('2030-11-18',203047,11,2030,18,47,203011,2030),('2030-11-19',203047,11,2030,19,47,203011,2030),('2030-11-20',203047,11,2030,20,47,203011,2030),('2030-11-21',203047,11,2030,21,47,203011,2030),('2030-11-22',203047,11,2030,22,47,203011,2030),('2030-11-23',203047,11,2030,23,47,203011,2030),('2030-11-24',203048,11,2030,24,48,203011,2030),('2030-11-25',203048,11,2030,25,48,203011,2030),('2030-11-26',203048,11,2030,26,48,203011,2030),('2030-11-27',203048,11,2030,27,48,203011,2030),('2030-11-28',203048,11,2030,28,48,203011,2030),('2030-11-29',203048,11,2030,29,48,203011,2030),('2030-11-30',203048,11,2030,30,48,203011,2030),('2030-12-01',203049,12,2030,1,49,203012,2031),('2030-12-02',203049,12,2030,2,49,203012,2031),('2030-12-03',203049,12,2030,3,49,203012,2031),('2030-12-04',203049,12,2030,4,49,203012,2031),('2030-12-05',203049,12,2030,5,49,203012,2031),('2030-12-06',203049,12,2030,6,49,203012,2031),('2030-12-07',203049,12,2030,7,49,203012,2031),('2030-12-08',203050,12,2030,8,50,203012,2031),('2030-12-09',203050,12,2030,9,50,203012,2031),('2030-12-10',203050,12,2030,10,50,203012,2031),('2030-12-11',203050,12,2030,11,50,203012,2031),('2030-12-12',203050,12,2030,12,50,203012,2031),('2030-12-13',203050,12,2030,13,50,203012,2031),('2030-12-14',203050,12,2030,14,50,203012,2031),('2030-12-15',203051,12,2030,15,51,203012,2031),('2030-12-16',203051,12,2030,16,51,203012,2031),('2030-12-17',203051,12,2030,17,51,203012,2031),('2030-12-18',203051,12,2030,18,51,203012,2031),('2030-12-19',203051,12,2030,19,51,203012,2031),('2030-12-20',203051,12,2030,20,51,203012,2031),('2030-12-21',203051,12,2030,21,51,203012,2031),('2030-12-22',203052,12,2030,22,52,203012,2031),('2030-12-23',203052,12,2030,23,52,203012,2031),('2030-12-24',203052,12,2030,24,52,203012,2031),('2030-12-25',203052,12,2030,25,52,203012,2031),('2030-12-26',203052,12,2030,26,52,203012,2031),('2030-12-27',203052,12,2030,27,52,203012,2031),('2030-12-28',203052,12,2030,28,52,203012,2031),('2030-12-29',203053,12,2030,29,1,203012,2031),('2030-12-30',203001,12,2030,30,1,203012,2031),('2030-12-31',203001,12,2030,31,1,203012,2031),('2031-01-01',203101,1,2031,1,1,203101,2031),('2031-01-02',203101,1,2031,2,1,203101,2031),('2031-01-03',203101,1,2031,3,1,203101,2031),('2031-01-04',203101,1,2031,4,1,203101,2031),('2031-01-05',203102,1,2031,5,2,203101,2031),('2031-01-06',203102,1,2031,6,2,203101,2031),('2031-01-07',203102,1,2031,7,2,203101,2031),('2031-01-08',203102,1,2031,8,2,203101,2031),('2031-01-09',203102,1,2031,9,2,203101,2031),('2031-01-10',203102,1,2031,10,2,203101,2031),('2031-01-11',203102,1,2031,11,2,203101,2031),('2031-01-12',203103,1,2031,12,3,203101,2031),('2031-01-13',203103,1,2031,13,3,203101,2031),('2031-01-14',203103,1,2031,14,3,203101,2031),('2031-01-15',203103,1,2031,15,3,203101,2031),('2031-01-16',203103,1,2031,16,3,203101,2031),('2031-01-17',203103,1,2031,17,3,203101,2031),('2031-01-18',203103,1,2031,18,3,203101,2031),('2031-01-19',203104,1,2031,19,4,203101,2031),('2031-01-20',203104,1,2031,20,4,203101,2031),('2031-01-21',203104,1,2031,21,4,203101,2031),('2031-01-22',203104,1,2031,22,4,203101,2031),('2031-01-23',203104,1,2031,23,4,203101,2031),('2031-01-24',203104,1,2031,24,4,203101,2031),('2031-01-25',203104,1,2031,25,4,203101,2031),('2031-01-26',203105,1,2031,26,5,203101,2031),('2031-01-27',203105,1,2031,27,5,203101,2031),('2031-01-28',203105,1,2031,28,5,203101,2031),('2031-01-29',203105,1,2031,29,5,203101,2031),('2031-01-30',203105,1,2031,30,5,203101,2031),('2031-01-31',203105,1,2031,31,5,203101,2031),('2031-02-01',203105,2,2031,1,5,203102,2031),('2031-02-02',203106,2,2031,2,6,203102,2031),('2031-02-03',203106,2,2031,3,6,203102,2031),('2031-02-04',203106,2,2031,4,6,203102,2031),('2031-02-05',203106,2,2031,5,6,203102,2031),('2031-02-06',203106,2,2031,6,6,203102,2031),('2031-02-07',203106,2,2031,7,6,203102,2031),('2031-02-08',203106,2,2031,8,6,203102,2031),('2031-02-09',203107,2,2031,9,7,203102,2031),('2031-02-10',203107,2,2031,10,7,203102,2031),('2031-02-11',203107,2,2031,11,7,203102,2031),('2031-02-12',203107,2,2031,12,7,203102,2031),('2031-02-13',203107,2,2031,13,7,203102,2031),('2031-02-14',203107,2,2031,14,7,203102,2031),('2031-02-15',203107,2,2031,15,7,203102,2031),('2031-02-16',203108,2,2031,16,8,203102,2031),('2031-02-17',203108,2,2031,17,8,203102,2031),('2031-02-18',203108,2,2031,18,8,203102,2031),('2031-02-19',203108,2,2031,19,8,203102,2031),('2031-02-20',203108,2,2031,20,8,203102,2031),('2031-02-21',203108,2,2031,21,8,203102,2031),('2031-02-22',203108,2,2031,22,8,203102,2031),('2031-02-23',203109,2,2031,23,9,203102,2031),('2031-02-24',203109,2,2031,24,9,203102,2031),('2031-02-25',203109,2,2031,25,9,203102,2031),('2031-02-26',203109,2,2031,26,9,203102,2031),('2031-02-27',203109,2,2031,27,9,203102,2031),('2031-02-28',203109,2,2031,28,9,203102,2031),('2031-03-01',203109,3,2031,1,9,203103,2031),('2031-03-02',203110,3,2031,2,10,203103,2031),('2031-03-03',203110,3,2031,3,10,203103,2031),('2031-03-04',203110,3,2031,4,10,203103,2031),('2031-03-05',203110,3,2031,5,10,203103,2031),('2031-03-06',203110,3,2031,6,10,203103,2031),('2031-03-07',203110,3,2031,7,10,203103,2031),('2031-03-08',203110,3,2031,8,10,203103,2031),('2031-03-09',203111,3,2031,9,11,203103,2031),('2031-03-10',203111,3,2031,10,11,203103,2031),('2031-03-11',203111,3,2031,11,11,203103,2031),('2031-03-12',203111,3,2031,12,11,203103,2031),('2031-03-13',203111,3,2031,13,11,203103,2031),('2031-03-14',203111,3,2031,14,11,203103,2031),('2031-03-15',203111,3,2031,15,11,203103,2031),('2031-03-16',203112,3,2031,16,12,203103,2031),('2031-03-17',203112,3,2031,17,12,203103,2031),('2031-03-18',203112,3,2031,18,12,203103,2031),('2031-03-19',203112,3,2031,19,12,203103,2031),('2031-03-20',203112,3,2031,20,12,203103,2031),('2031-03-21',203112,3,2031,21,12,203103,2031),('2031-03-22',203112,3,2031,22,12,203103,2031),('2031-03-23',203113,3,2031,23,13,203103,2031),('2031-03-24',203113,3,2031,24,13,203103,2031),('2031-03-25',203113,3,2031,25,13,203103,2031),('2031-03-26',203113,3,2031,26,13,203103,2031),('2031-03-27',203113,3,2031,27,13,203103,2031),('2031-03-28',203113,3,2031,28,13,203103,2031),('2031-03-29',203113,3,2031,29,13,203103,2031),('2031-03-30',203114,3,2031,30,14,203103,2031),('2031-03-31',203114,3,2031,31,14,203103,2031),('2031-04-01',203114,4,2031,1,14,203104,2031),('2031-04-02',203114,4,2031,2,14,203104,2031),('2031-04-03',203114,4,2031,3,14,203104,2031),('2031-04-04',203114,4,2031,4,14,203104,2031),('2031-04-05',203114,4,2031,5,14,203104,2031),('2031-04-06',203115,4,2031,6,15,203104,2031),('2031-04-07',203115,4,2031,7,15,203104,2031),('2031-04-08',203115,4,2031,8,15,203104,2031),('2031-04-09',203115,4,2031,9,15,203104,2031),('2031-04-10',203115,4,2031,10,15,203104,2031),('2031-04-11',203115,4,2031,11,15,203104,2031),('2031-04-12',203115,4,2031,12,15,203104,2031),('2031-04-13',203116,4,2031,13,16,203104,2031),('2031-04-14',203116,4,2031,14,16,203104,2031),('2031-04-15',203116,4,2031,15,16,203104,2031),('2031-04-16',203116,4,2031,16,16,203104,2031),('2031-04-17',203116,4,2031,17,16,203104,2031),('2031-04-18',203116,4,2031,18,16,203104,2031),('2031-04-19',203116,4,2031,19,16,203104,2031),('2031-04-20',203117,4,2031,20,17,203104,2031),('2031-04-21',203117,4,2031,21,17,203104,2031),('2031-04-22',203117,4,2031,22,17,203104,2031),('2031-04-23',203117,4,2031,23,17,203104,2031),('2031-04-24',203117,4,2031,24,17,203104,2031),('2031-04-25',203117,4,2031,25,17,203104,2031),('2031-04-26',203117,4,2031,26,17,203104,2031),('2031-04-27',203118,4,2031,27,18,203104,2031),('2031-04-28',203118,4,2031,28,18,203104,2031),('2031-04-29',203118,4,2031,29,18,203104,2031),('2031-04-30',203118,4,2031,30,18,203104,2031),('2031-05-01',203118,5,2031,1,18,203105,2031),('2031-05-02',203118,5,2031,2,18,203105,2031),('2031-05-03',203118,5,2031,3,18,203105,2031),('2031-05-04',203119,5,2031,4,19,203105,2031),('2031-05-05',203119,5,2031,5,19,203105,2031),('2031-05-06',203119,5,2031,6,19,203105,2031),('2031-05-07',203119,5,2031,7,19,203105,2031),('2031-05-08',203119,5,2031,8,19,203105,2031),('2031-05-09',203119,5,2031,9,19,203105,2031),('2031-05-10',203119,5,2031,10,19,203105,2031),('2031-05-11',203120,5,2031,11,20,203105,2031),('2031-05-12',203120,5,2031,12,20,203105,2031),('2031-05-13',203120,5,2031,13,20,203105,2031),('2031-05-14',203120,5,2031,14,20,203105,2031),('2031-05-15',203120,5,2031,15,20,203105,2031),('2031-05-16',203120,5,2031,16,20,203105,2031),('2031-05-17',203120,5,2031,17,20,203105,2031),('2031-05-18',203121,5,2031,18,21,203105,2031),('2031-05-19',203121,5,2031,19,21,203105,2031),('2031-05-20',203121,5,2031,20,21,203105,2031),('2031-05-21',203121,5,2031,21,21,203105,2031),('2031-05-22',203121,5,2031,22,21,203105,2031),('2031-05-23',203121,5,2031,23,21,203105,2031),('2031-05-24',203121,5,2031,24,21,203105,2031),('2031-05-25',203122,5,2031,25,22,203105,2031),('2031-05-26',203122,5,2031,26,22,203105,2031),('2031-05-27',203122,5,2031,27,22,203105,2031),('2031-05-28',203122,5,2031,28,22,203105,2031),('2031-05-29',203122,5,2031,29,22,203105,2031),('2031-05-30',203122,5,2031,30,22,203105,2031),('2031-05-31',203122,5,2031,31,22,203105,2031),('2031-06-01',203123,6,2031,1,23,203106,2031),('2031-06-02',203123,6,2031,2,23,203106,2031),('2031-06-03',203123,6,2031,3,23,203106,2031),('2031-06-04',203123,6,2031,4,23,203106,2031),('2031-06-05',203123,6,2031,5,23,203106,2031),('2031-06-06',203123,6,2031,6,23,203106,2031),('2031-06-07',203123,6,2031,7,23,203106,2031),('2031-06-08',203124,6,2031,8,24,203106,2031),('2031-06-09',203124,6,2031,9,24,203106,2031),('2031-06-10',203124,6,2031,10,24,203106,2031),('2031-06-11',203124,6,2031,11,24,203106,2031),('2031-06-12',203124,6,2031,12,24,203106,2031),('2031-06-13',203124,6,2031,13,24,203106,2031),('2031-06-14',203124,6,2031,14,24,203106,2031),('2031-06-15',203125,6,2031,15,25,203106,2031),('2031-06-16',203125,6,2031,16,25,203106,2031),('2031-06-17',203125,6,2031,17,25,203106,2031),('2031-06-18',203125,6,2031,18,25,203106,2031),('2031-06-19',203125,6,2031,19,25,203106,2031),('2031-06-20',203125,6,2031,20,25,203106,2031),('2031-06-21',203125,6,2031,21,25,203106,2031),('2031-06-22',203126,6,2031,22,26,203106,2031),('2031-06-23',203126,6,2031,23,26,203106,2031),('2031-06-24',203126,6,2031,24,26,203106,2031),('2031-06-25',203126,6,2031,25,26,203106,2031),('2031-06-26',203126,6,2031,26,26,203106,2031),('2031-06-27',203126,6,2031,27,26,203106,2031),('2031-06-28',203126,6,2031,28,26,203106,2031),('2031-06-29',203127,6,2031,29,27,203106,2031),('2031-06-30',203127,6,2031,30,27,203106,2031),('2031-07-01',203127,7,2031,1,27,203107,2031),('2031-07-02',203127,7,2031,2,27,203107,2031),('2031-07-03',203127,7,2031,3,27,203107,2031),('2031-07-04',203127,7,2031,4,27,203107,2031),('2031-07-05',203127,7,2031,5,27,203107,2031),('2031-07-06',203128,7,2031,6,28,203107,2031),('2031-07-07',203128,7,2031,7,28,203107,2031),('2031-07-08',203128,7,2031,8,28,203107,2031),('2031-07-09',203128,7,2031,9,28,203107,2031),('2031-07-10',203128,7,2031,10,28,203107,2031),('2031-07-11',203128,7,2031,11,28,203107,2031),('2031-07-12',203128,7,2031,12,28,203107,2031),('2031-07-13',203129,7,2031,13,29,203107,2031),('2031-07-14',203129,7,2031,14,29,203107,2031),('2031-07-15',203129,7,2031,15,29,203107,2031),('2031-07-16',203129,7,2031,16,29,203107,2031),('2031-07-17',203129,7,2031,17,29,203107,2031),('2031-07-18',203129,7,2031,18,29,203107,2031),('2031-07-19',203129,7,2031,19,29,203107,2031),('2031-07-20',203130,7,2031,20,30,203107,2031),('2031-07-21',203130,7,2031,21,30,203107,2031),('2031-07-22',203130,7,2031,22,30,203107,2031),('2031-07-23',203130,7,2031,23,30,203107,2031),('2031-07-24',203130,7,2031,24,30,203107,2031),('2031-07-25',203130,7,2031,25,30,203107,2031),('2031-07-26',203130,7,2031,26,30,203107,2031),('2031-07-27',203131,7,2031,27,31,203107,2031),('2031-07-28',203131,7,2031,28,31,203107,2031),('2031-07-29',203131,7,2031,29,31,203107,2031),('2031-07-30',203131,7,2031,30,31,203107,2031),('2031-07-31',203131,7,2031,31,31,203107,2031),('2031-08-01',203131,8,2031,1,31,203108,2031),('2031-08-02',203131,8,2031,2,31,203108,2031),('2031-08-03',203132,8,2031,3,32,203108,2031),('2031-08-04',203132,8,2031,4,32,203108,2031),('2031-08-05',203132,8,2031,5,32,203108,2031),('2031-08-06',203132,8,2031,6,32,203108,2031),('2031-08-07',203132,8,2031,7,32,203108,2031),('2031-08-08',203132,8,2031,8,32,203108,2031),('2031-08-09',203132,8,2031,9,32,203108,2031),('2031-08-10',203133,8,2031,10,33,203108,2031),('2031-08-11',203133,8,2031,11,33,203108,2031),('2031-08-12',203133,8,2031,12,33,203108,2031),('2031-08-13',203133,8,2031,13,33,203108,2031),('2031-08-14',203133,8,2031,14,33,203108,2031),('2031-08-15',203133,8,2031,15,33,203108,2031),('2031-08-16',203133,8,2031,16,33,203108,2031),('2031-08-17',203134,8,2031,17,34,203108,2031),('2031-08-18',203134,8,2031,18,34,203108,2031),('2031-08-19',203134,8,2031,19,34,203108,2031),('2031-08-20',203134,8,2031,20,34,203108,2031),('2031-08-21',203134,8,2031,21,34,203108,2031),('2031-08-22',203134,8,2031,22,34,203108,2031),('2031-08-23',203134,8,2031,23,34,203108,2031),('2031-08-24',203135,8,2031,24,35,203108,2031),('2031-08-25',203135,8,2031,25,35,203108,2031),('2031-08-26',203135,8,2031,26,35,203108,2031),('2031-08-27',203135,8,2031,27,35,203108,2031),('2031-08-28',203135,8,2031,28,35,203108,2031),('2031-08-29',203135,8,2031,29,35,203108,2031),('2031-08-30',203135,8,2031,30,35,203108,2031),('2031-08-31',203136,8,2031,31,36,203108,2031),('2031-09-01',203136,9,2031,1,36,203109,2031),('2031-09-02',203136,9,2031,2,36,203109,2031),('2031-09-03',203136,9,2031,3,36,203109,2031),('2031-09-04',203136,9,2031,4,36,203109,2031),('2031-09-05',203136,9,2031,5,36,203109,2031),('2031-09-06',203136,9,2031,6,36,203109,2031),('2031-09-07',203137,9,2031,7,37,203109,2031),('2031-09-08',203137,9,2031,8,37,203109,2031),('2031-09-09',203137,9,2031,9,37,203109,2031),('2031-09-10',203137,9,2031,10,37,203109,2031),('2031-09-11',203137,9,2031,11,37,203109,2031),('2031-09-12',203137,9,2031,12,37,203109,2031),('2031-09-13',203137,9,2031,13,37,203109,2031),('2031-09-14',203138,9,2031,14,38,203109,2031),('2031-09-15',203138,9,2031,15,38,203109,2031),('2031-09-16',203138,9,2031,16,38,203109,2031),('2031-09-17',203138,9,2031,17,38,203109,2031),('2031-09-18',203138,9,2031,18,38,203109,2031),('2031-09-19',203138,9,2031,19,38,203109,2031),('2031-09-20',203138,9,2031,20,38,203109,2031),('2031-09-21',203139,9,2031,21,39,203109,2031),('2031-09-22',203139,9,2031,22,39,203109,2031),('2031-09-23',203139,9,2031,23,39,203109,2031),('2031-09-24',203139,9,2031,24,39,203109,2031),('2031-09-25',203139,9,2031,25,39,203109,2031),('2031-09-26',203139,9,2031,26,39,203109,2031),('2031-09-27',203139,9,2031,27,39,203109,2031),('2031-09-28',203140,9,2031,28,40,203109,2031),('2031-09-29',203140,9,2031,29,40,203109,2031),('2031-09-30',203140,9,2031,30,40,203109,2031),('2031-10-01',203140,10,2031,1,40,203110,2031),('2031-10-02',203140,10,2031,2,40,203110,2031),('2031-10-03',203140,10,2031,3,40,203110,2031),('2031-10-04',203140,10,2031,4,40,203110,2031),('2031-10-05',203141,10,2031,5,41,203110,2031),('2031-10-06',203141,10,2031,6,41,203110,2031),('2031-10-07',203141,10,2031,7,41,203110,2031),('2031-10-08',203141,10,2031,8,41,203110,2031),('2031-10-09',203141,10,2031,9,41,203110,2031),('2031-10-10',203141,10,2031,10,41,203110,2031),('2031-10-11',203141,10,2031,11,41,203110,2031),('2031-10-12',203142,10,2031,12,42,203110,2031),('2031-10-13',203142,10,2031,13,42,203110,2031),('2031-10-14',203142,10,2031,14,42,203110,2031),('2031-10-15',203142,10,2031,15,42,203110,2031),('2031-10-16',203142,10,2031,16,42,203110,2031),('2031-10-17',203142,10,2031,17,42,203110,2031),('2031-10-18',203142,10,2031,18,42,203110,2031),('2031-10-19',203143,10,2031,19,43,203110,2031),('2031-10-20',203143,10,2031,20,43,203110,2031),('2031-10-21',203143,10,2031,21,43,203110,2031),('2031-10-22',203143,10,2031,22,43,203110,2031),('2031-10-23',203143,10,2031,23,43,203110,2031),('2031-10-24',203143,10,2031,24,43,203110,2031),('2031-10-25',203143,10,2031,25,43,203110,2031),('2031-10-26',203144,10,2031,26,44,203110,2031),('2031-10-27',203144,10,2031,27,44,203110,2031),('2031-10-28',203144,10,2031,28,44,203110,2031),('2031-10-29',203144,10,2031,29,44,203110,2031),('2031-10-30',203144,10,2031,30,44,203110,2031),('2031-10-31',203144,10,2031,31,44,203110,2031),('2031-11-01',203144,11,2031,1,44,203111,2031),('2031-11-02',203145,11,2031,2,45,203111,2031),('2031-11-03',203145,11,2031,3,45,203111,2031),('2031-11-04',203145,11,2031,4,45,203111,2031),('2031-11-05',203145,11,2031,5,45,203111,2031),('2031-11-06',203145,11,2031,6,45,203111,2031),('2031-11-07',203145,11,2031,7,45,203111,2031),('2031-11-08',203145,11,2031,8,45,203111,2031),('2031-11-09',203146,11,2031,9,46,203111,2031),('2031-11-10',203146,11,2031,10,46,203111,2031),('2031-11-11',203146,11,2031,11,46,203111,2031),('2031-11-12',203146,11,2031,12,46,203111,2031),('2031-11-13',203146,11,2031,13,46,203111,2031),('2031-11-14',203146,11,2031,14,46,203111,2031),('2031-11-15',203146,11,2031,15,46,203111,2031),('2031-11-16',203147,11,2031,16,47,203111,2031),('2031-11-17',203147,11,2031,17,47,203111,2031),('2031-11-18',203147,11,2031,18,47,203111,2031),('2031-11-19',203147,11,2031,19,47,203111,2031),('2031-11-20',203147,11,2031,20,47,203111,2031),('2031-11-21',203147,11,2031,21,47,203111,2031),('2031-11-22',203147,11,2031,22,47,203111,2031),('2031-11-23',203148,11,2031,23,48,203111,2031),('2031-11-24',203148,11,2031,24,48,203111,2031),('2031-11-25',203148,11,2031,25,48,203111,2031),('2031-11-26',203148,11,2031,26,48,203111,2031),('2031-11-27',203148,11,2031,27,48,203111,2031),('2031-11-28',203148,11,2031,28,48,203111,2031),('2031-11-29',203148,11,2031,29,48,203111,2031),('2031-11-30',203149,11,2031,30,49,203111,2031),('2031-12-01',203149,12,2031,1,49,203112,2032),('2031-12-02',203149,12,2031,2,49,203112,2032),('2031-12-03',203149,12,2031,3,49,203112,2032),('2031-12-04',203149,12,2031,4,49,203112,2032),('2031-12-05',203149,12,2031,5,49,203112,2032),('2031-12-06',203149,12,2031,6,49,203112,2032),('2031-12-07',203150,12,2031,7,50,203112,2032),('2031-12-08',203150,12,2031,8,50,203112,2032),('2031-12-09',203150,12,2031,9,50,203112,2032),('2031-12-10',203150,12,2031,10,50,203112,2032),('2031-12-11',203150,12,2031,11,50,203112,2032),('2031-12-12',203150,12,2031,12,50,203112,2032),('2031-12-13',203150,12,2031,13,50,203112,2032),('2031-12-14',203151,12,2031,14,51,203112,2032),('2031-12-15',203151,12,2031,15,51,203112,2032),('2031-12-16',203151,12,2031,16,51,203112,2032),('2031-12-17',203151,12,2031,17,51,203112,2032),('2031-12-18',203151,12,2031,18,51,203112,2032),('2031-12-19',203151,12,2031,19,51,203112,2032),('2031-12-20',203151,12,2031,20,51,203112,2032),('2031-12-21',203152,12,2031,21,52,203112,2032),('2031-12-22',203152,12,2031,22,52,203112,2032),('2031-12-23',203152,12,2031,23,52,203112,2032),('2031-12-24',203152,12,2031,24,52,203112,2032),('2031-12-25',203152,12,2031,25,52,203112,2032),('2031-12-26',203152,12,2031,26,52,203112,2032),('2031-12-27',203152,12,2031,27,52,203112,2032),('2031-12-28',203153,12,2031,28,53,203112,2032),('2031-12-29',203101,12,2031,29,53,203112,2032),('2031-12-30',203101,12,2031,30,53,203112,2032),('2031-12-31',203101,12,2031,31,53,203112,2032),('2032-01-01',203201,1,2032,1,53,203201,2032),('2032-01-02',203201,1,2032,2,53,203201,2032),('2032-01-03',203201,1,2032,3,53,203201,2032),('2032-01-04',203202,1,2032,4,1,203201,2032),('2032-01-05',203202,1,2032,5,1,203201,2032),('2032-01-06',203202,1,2032,6,1,203201,2032),('2032-01-07',203202,1,2032,7,1,203201,2032),('2032-01-08',203202,1,2032,8,1,203201,2032),('2032-01-09',203202,1,2032,9,1,203201,2032),('2032-01-10',203202,1,2032,10,1,203201,2032),('2032-01-11',203203,1,2032,11,2,203201,2032),('2032-01-12',203203,1,2032,12,2,203201,2032),('2032-01-13',203203,1,2032,13,2,203201,2032),('2032-01-14',203203,1,2032,14,2,203201,2032),('2032-01-15',203203,1,2032,15,2,203201,2032),('2032-01-16',203203,1,2032,16,2,203201,2032),('2032-01-17',203203,1,2032,17,2,203201,2032),('2032-01-18',203204,1,2032,18,3,203201,2032),('2032-01-19',203204,1,2032,19,3,203201,2032),('2032-01-20',203204,1,2032,20,3,203201,2032),('2032-01-21',203204,1,2032,21,3,203201,2032),('2032-01-22',203204,1,2032,22,3,203201,2032),('2032-01-23',203204,1,2032,23,3,203201,2032),('2032-01-24',203204,1,2032,24,3,203201,2032),('2032-01-25',203205,1,2032,25,4,203201,2032),('2032-01-26',203205,1,2032,26,4,203201,2032),('2032-01-27',203205,1,2032,27,4,203201,2032),('2032-01-28',203205,1,2032,28,4,203201,2032),('2032-01-29',203205,1,2032,29,4,203201,2032),('2032-01-30',203205,1,2032,30,4,203201,2032),('2032-01-31',203205,1,2032,31,4,203201,2032),('2032-02-01',203206,2,2032,1,5,203202,2032),('2032-02-02',203206,2,2032,2,5,203202,2032),('2032-02-03',203206,2,2032,3,5,203202,2032),('2032-02-04',203206,2,2032,4,5,203202,2032),('2032-02-05',203206,2,2032,5,5,203202,2032),('2032-02-06',203206,2,2032,6,5,203202,2032),('2032-02-07',203206,2,2032,7,5,203202,2032),('2032-02-08',203207,2,2032,8,6,203202,2032),('2032-02-09',203207,2,2032,9,6,203202,2032),('2032-02-10',203207,2,2032,10,6,203202,2032),('2032-02-11',203207,2,2032,11,6,203202,2032),('2032-02-12',203207,2,2032,12,6,203202,2032),('2032-02-13',203207,2,2032,13,6,203202,2032),('2032-02-14',203207,2,2032,14,6,203202,2032),('2032-02-15',203208,2,2032,15,7,203202,2032),('2032-02-16',203208,2,2032,16,7,203202,2032),('2032-02-17',203208,2,2032,17,7,203202,2032),('2032-02-18',203208,2,2032,18,7,203202,2032),('2032-02-19',203208,2,2032,19,7,203202,2032),('2032-02-20',203208,2,2032,20,7,203202,2032),('2032-02-21',203208,2,2032,21,7,203202,2032),('2032-02-22',203209,2,2032,22,8,203202,2032),('2032-02-23',203209,2,2032,23,8,203202,2032),('2032-02-24',203209,2,2032,24,8,203202,2032),('2032-02-25',203209,2,2032,25,8,203202,2032),('2032-02-26',203209,2,2032,26,8,203202,2032),('2032-02-27',203209,2,2032,27,8,203202,2032),('2032-02-28',203209,2,2032,28,8,203202,2032),('2032-02-29',203210,2,2032,29,9,203202,2032),('2032-03-01',203210,3,2032,1,9,203203,2032),('2032-03-02',203210,3,2032,2,9,203203,2032),('2032-03-03',203210,3,2032,3,9,203203,2032),('2032-03-04',203210,3,2032,4,9,203203,2032),('2032-03-05',203210,3,2032,5,9,203203,2032),('2032-03-06',203210,3,2032,6,9,203203,2032),('2032-03-07',203211,3,2032,7,10,203203,2032),('2032-03-08',203211,3,2032,8,10,203203,2032),('2032-03-09',203211,3,2032,9,10,203203,2032),('2032-03-10',203211,3,2032,10,10,203203,2032),('2032-03-11',203211,3,2032,11,10,203203,2032),('2032-03-12',203211,3,2032,12,10,203203,2032),('2032-03-13',203211,3,2032,13,10,203203,2032),('2032-03-14',203212,3,2032,14,11,203203,2032),('2032-03-15',203212,3,2032,15,11,203203,2032),('2032-03-16',203212,3,2032,16,11,203203,2032),('2032-03-17',203212,3,2032,17,11,203203,2032),('2032-03-18',203212,3,2032,18,11,203203,2032),('2032-03-19',203212,3,2032,19,11,203203,2032),('2032-03-20',203212,3,2032,20,11,203203,2032),('2032-03-21',203213,3,2032,21,12,203203,2032),('2032-03-22',203213,3,2032,22,12,203203,2032),('2032-03-23',203213,3,2032,23,12,203203,2032),('2032-03-24',203213,3,2032,24,12,203203,2032),('2032-03-25',203213,3,2032,25,12,203203,2032),('2032-03-26',203213,3,2032,26,12,203203,2032),('2032-03-27',203213,3,2032,27,12,203203,2032),('2032-03-28',203214,3,2032,28,13,203203,2032),('2032-03-29',203214,3,2032,29,13,203203,2032),('2032-03-30',203214,3,2032,30,13,203203,2032),('2032-03-31',203214,3,2032,31,13,203203,2032),('2032-04-01',203214,4,2032,1,13,203204,2032),('2032-04-02',203214,4,2032,2,13,203204,2032),('2032-04-03',203214,4,2032,3,13,203204,2032),('2032-04-04',203215,4,2032,4,14,203204,2032),('2032-04-05',203215,4,2032,5,14,203204,2032),('2032-04-06',203215,4,2032,6,14,203204,2032),('2032-04-07',203215,4,2032,7,14,203204,2032),('2032-04-08',203215,4,2032,8,14,203204,2032),('2032-04-09',203215,4,2032,9,14,203204,2032),('2032-04-10',203215,4,2032,10,14,203204,2032),('2032-04-11',203216,4,2032,11,15,203204,2032),('2032-04-12',203216,4,2032,12,15,203204,2032),('2032-04-13',203216,4,2032,13,15,203204,2032),('2032-04-14',203216,4,2032,14,15,203204,2032),('2032-04-15',203216,4,2032,15,15,203204,2032),('2032-04-16',203216,4,2032,16,15,203204,2032),('2032-04-17',203216,4,2032,17,15,203204,2032),('2032-04-18',203217,4,2032,18,16,203204,2032),('2032-04-19',203217,4,2032,19,16,203204,2032),('2032-04-20',203217,4,2032,20,16,203204,2032),('2032-04-21',203217,4,2032,21,16,203204,2032),('2032-04-22',203217,4,2032,22,16,203204,2032),('2032-04-23',203217,4,2032,23,16,203204,2032),('2032-04-24',203217,4,2032,24,16,203204,2032),('2032-04-25',203218,4,2032,25,17,203204,2032),('2032-04-26',203218,4,2032,26,17,203204,2032),('2032-04-27',203218,4,2032,27,17,203204,2032),('2032-04-28',203218,4,2032,28,17,203204,2032),('2032-04-29',203218,4,2032,29,17,203204,2032),('2032-04-30',203218,4,2032,30,17,203204,2032),('2032-05-01',203218,5,2032,1,17,203205,2032),('2032-05-02',203219,5,2032,2,18,203205,2032),('2032-05-03',203219,5,2032,3,18,203205,2032),('2032-05-04',203219,5,2032,4,18,203205,2032),('2032-05-05',203219,5,2032,5,18,203205,2032),('2032-05-06',203219,5,2032,6,18,203205,2032),('2032-05-07',203219,5,2032,7,18,203205,2032),('2032-05-08',203219,5,2032,8,18,203205,2032),('2032-05-09',203220,5,2032,9,19,203205,2032),('2032-05-10',203220,5,2032,10,19,203205,2032),('2032-05-11',203220,5,2032,11,19,203205,2032),('2032-05-12',203220,5,2032,12,19,203205,2032),('2032-05-13',203220,5,2032,13,19,203205,2032),('2032-05-14',203220,5,2032,14,19,203205,2032),('2032-05-15',203220,5,2032,15,19,203205,2032),('2032-05-16',203221,5,2032,16,20,203205,2032),('2032-05-17',203221,5,2032,17,20,203205,2032),('2032-05-18',203221,5,2032,18,20,203205,2032),('2032-05-19',203221,5,2032,19,20,203205,2032),('2032-05-20',203221,5,2032,20,20,203205,2032),('2032-05-21',203221,5,2032,21,20,203205,2032),('2032-05-22',203221,5,2032,22,20,203205,2032),('2032-05-23',203222,5,2032,23,21,203205,2032),('2032-05-24',203222,5,2032,24,21,203205,2032),('2032-05-25',203222,5,2032,25,21,203205,2032),('2032-05-26',203222,5,2032,26,21,203205,2032),('2032-05-27',203222,5,2032,27,21,203205,2032),('2032-05-28',203222,5,2032,28,21,203205,2032),('2032-05-29',203222,5,2032,29,21,203205,2032),('2032-05-30',203223,5,2032,30,22,203205,2032),('2032-05-31',203223,5,2032,31,22,203205,2032),('2032-06-01',203223,6,2032,1,22,203206,2032),('2032-06-02',203223,6,2032,2,22,203206,2032),('2032-06-03',203223,6,2032,3,22,203206,2032),('2032-06-04',203223,6,2032,4,22,203206,2032),('2032-06-05',203223,6,2032,5,22,203206,2032),('2032-06-06',203224,6,2032,6,23,203206,2032),('2032-06-07',203224,6,2032,7,23,203206,2032),('2032-06-08',203224,6,2032,8,23,203206,2032),('2032-06-09',203224,6,2032,9,23,203206,2032),('2032-06-10',203224,6,2032,10,23,203206,2032),('2032-06-11',203224,6,2032,11,23,203206,2032),('2032-06-12',203224,6,2032,12,23,203206,2032),('2032-06-13',203225,6,2032,13,24,203206,2032),('2032-06-14',203225,6,2032,14,24,203206,2032),('2032-06-15',203225,6,2032,15,24,203206,2032),('2032-06-16',203225,6,2032,16,24,203206,2032),('2032-06-17',203225,6,2032,17,24,203206,2032),('2032-06-18',203225,6,2032,18,24,203206,2032),('2032-06-19',203225,6,2032,19,24,203206,2032),('2032-06-20',203226,6,2032,20,25,203206,2032),('2032-06-21',203226,6,2032,21,25,203206,2032),('2032-06-22',203226,6,2032,22,25,203206,2032),('2032-06-23',203226,6,2032,23,25,203206,2032),('2032-06-24',203226,6,2032,24,25,203206,2032),('2032-06-25',203226,6,2032,25,25,203206,2032),('2032-06-26',203226,6,2032,26,25,203206,2032),('2032-06-27',203227,6,2032,27,26,203206,2032),('2032-06-28',203227,6,2032,28,26,203206,2032),('2032-06-29',203227,6,2032,29,26,203206,2032),('2032-06-30',203227,6,2032,30,26,203206,2032),('2032-07-01',203227,7,2032,1,26,203207,2032),('2032-07-02',203227,7,2032,2,26,203207,2032),('2032-07-03',203227,7,2032,3,26,203207,2032),('2032-07-04',203228,7,2032,4,27,203207,2032),('2032-07-05',203228,7,2032,5,27,203207,2032),('2032-07-06',203228,7,2032,6,27,203207,2032),('2032-07-07',203228,7,2032,7,27,203207,2032),('2032-07-08',203228,7,2032,8,27,203207,2032),('2032-07-09',203228,7,2032,9,27,203207,2032),('2032-07-10',203228,7,2032,10,27,203207,2032),('2032-07-11',203229,7,2032,11,28,203207,2032),('2032-07-12',203229,7,2032,12,28,203207,2032),('2032-07-13',203229,7,2032,13,28,203207,2032),('2032-07-14',203229,7,2032,14,28,203207,2032),('2032-07-15',203229,7,2032,15,28,203207,2032),('2032-07-16',203229,7,2032,16,28,203207,2032),('2032-07-17',203229,7,2032,17,28,203207,2032),('2032-07-18',203230,7,2032,18,29,203207,2032),('2032-07-19',203230,7,2032,19,29,203207,2032),('2032-07-20',203230,7,2032,20,29,203207,2032),('2032-07-21',203230,7,2032,21,29,203207,2032),('2032-07-22',203230,7,2032,22,29,203207,2032),('2032-07-23',203230,7,2032,23,29,203207,2032),('2032-07-24',203230,7,2032,24,29,203207,2032),('2032-07-25',203231,7,2032,25,30,203207,2032),('2032-07-26',203231,7,2032,26,30,203207,2032),('2032-07-27',203231,7,2032,27,30,203207,2032),('2032-07-28',203231,7,2032,28,30,203207,2032),('2032-07-29',203231,7,2032,29,30,203207,2032),('2032-07-30',203231,7,2032,30,30,203207,2032),('2032-07-31',203231,7,2032,31,30,203207,2032),('2032-08-01',203232,8,2032,1,31,203208,2032),('2032-08-02',203232,8,2032,2,31,203208,2032),('2032-08-03',203232,8,2032,3,31,203208,2032),('2032-08-04',203232,8,2032,4,31,203208,2032),('2032-08-05',203232,8,2032,5,31,203208,2032),('2032-08-06',203232,8,2032,6,31,203208,2032),('2032-08-07',203232,8,2032,7,31,203208,2032),('2032-08-08',203233,8,2032,8,32,203208,2032),('2032-08-09',203233,8,2032,9,32,203208,2032),('2032-08-10',203233,8,2032,10,32,203208,2032),('2032-08-11',203233,8,2032,11,32,203208,2032),('2032-08-12',203233,8,2032,12,32,203208,2032),('2032-08-13',203233,8,2032,13,32,203208,2032),('2032-08-14',203233,8,2032,14,32,203208,2032),('2032-08-15',203234,8,2032,15,33,203208,2032),('2032-08-16',203234,8,2032,16,33,203208,2032),('2032-08-17',203234,8,2032,17,33,203208,2032),('2032-08-18',203234,8,2032,18,33,203208,2032),('2032-08-19',203234,8,2032,19,33,203208,2032),('2032-08-20',203234,8,2032,20,33,203208,2032),('2032-08-21',203234,8,2032,21,33,203208,2032),('2032-08-22',203235,8,2032,22,34,203208,2032),('2032-08-23',203235,8,2032,23,34,203208,2032),('2032-08-24',203235,8,2032,24,34,203208,2032),('2032-08-25',203235,8,2032,25,34,203208,2032),('2032-08-26',203235,8,2032,26,34,203208,2032),('2032-08-27',203235,8,2032,27,34,203208,2032),('2032-08-28',203235,8,2032,28,34,203208,2032),('2032-08-29',203236,8,2032,29,35,203208,2032),('2032-08-30',203236,8,2032,30,35,203208,2032),('2032-08-31',203236,8,2032,31,35,203208,2032),('2032-09-01',203236,9,2032,1,35,203209,2032),('2032-09-02',203236,9,2032,2,35,203209,2032),('2032-09-03',203236,9,2032,3,35,203209,2032),('2032-09-04',203236,9,2032,4,35,203209,2032),('2032-09-05',203237,9,2032,5,36,203209,2032),('2032-09-06',203237,9,2032,6,36,203209,2032),('2032-09-07',203237,9,2032,7,36,203209,2032),('2032-09-08',203237,9,2032,8,36,203209,2032),('2032-09-09',203237,9,2032,9,36,203209,2032),('2032-09-10',203237,9,2032,10,36,203209,2032),('2032-09-11',203237,9,2032,11,36,203209,2032),('2032-09-12',203238,9,2032,12,37,203209,2032),('2032-09-13',203238,9,2032,13,37,203209,2032),('2032-09-14',203238,9,2032,14,37,203209,2032),('2032-09-15',203238,9,2032,15,37,203209,2032),('2032-09-16',203238,9,2032,16,37,203209,2032),('2032-09-17',203238,9,2032,17,37,203209,2032),('2032-09-18',203238,9,2032,18,37,203209,2032),('2032-09-19',203239,9,2032,19,38,203209,2032),('2032-09-20',203239,9,2032,20,38,203209,2032),('2032-09-21',203239,9,2032,21,38,203209,2032),('2032-09-22',203239,9,2032,22,38,203209,2032),('2032-09-23',203239,9,2032,23,38,203209,2032),('2032-09-24',203239,9,2032,24,38,203209,2032),('2032-09-25',203239,9,2032,25,38,203209,2032),('2032-09-26',203240,9,2032,26,39,203209,2032),('2032-09-27',203240,9,2032,27,39,203209,2032),('2032-09-28',203240,9,2032,28,39,203209,2032),('2032-09-29',203240,9,2032,29,39,203209,2032),('2032-09-30',203240,9,2032,30,39,203209,2032),('2032-10-01',203240,10,2032,1,39,203210,2032),('2032-10-02',203240,10,2032,2,39,203210,2032),('2032-10-03',203241,10,2032,3,40,203210,2032),('2032-10-04',203241,10,2032,4,40,203210,2032),('2032-10-05',203241,10,2032,5,40,203210,2032),('2032-10-06',203241,10,2032,6,40,203210,2032),('2032-10-07',203241,10,2032,7,40,203210,2032),('2032-10-08',203241,10,2032,8,40,203210,2032),('2032-10-09',203241,10,2032,9,40,203210,2032),('2032-10-10',203242,10,2032,10,41,203210,2032),('2032-10-11',203242,10,2032,11,41,203210,2032),('2032-10-12',203242,10,2032,12,41,203210,2032),('2032-10-13',203242,10,2032,13,41,203210,2032),('2032-10-14',203242,10,2032,14,41,203210,2032),('2032-10-15',203242,10,2032,15,41,203210,2032),('2032-10-16',203242,10,2032,16,41,203210,2032),('2032-10-17',203243,10,2032,17,42,203210,2032),('2032-10-18',203243,10,2032,18,42,203210,2032),('2032-10-19',203243,10,2032,19,42,203210,2032),('2032-10-20',203243,10,2032,20,42,203210,2032),('2032-10-21',203243,10,2032,21,42,203210,2032),('2032-10-22',203243,10,2032,22,42,203210,2032),('2032-10-23',203243,10,2032,23,42,203210,2032),('2032-10-24',203244,10,2032,24,43,203210,2032),('2032-10-25',203244,10,2032,25,43,203210,2032),('2032-10-26',203244,10,2032,26,43,203210,2032),('2032-10-27',203244,10,2032,27,43,203210,2032),('2032-10-28',203244,10,2032,28,43,203210,2032),('2032-10-29',203244,10,2032,29,43,203210,2032),('2032-10-30',203244,10,2032,30,43,203210,2032),('2032-10-31',203245,10,2032,31,44,203210,2032),('2032-11-01',203245,11,2032,1,44,203211,2032),('2032-11-02',203245,11,2032,2,44,203211,2032),('2032-11-03',203245,11,2032,3,44,203211,2032),('2032-11-04',203245,11,2032,4,44,203211,2032),('2032-11-05',203245,11,2032,5,44,203211,2032),('2032-11-06',203245,11,2032,6,44,203211,2032),('2032-11-07',203246,11,2032,7,45,203211,2032),('2032-11-08',203246,11,2032,8,45,203211,2032),('2032-11-09',203246,11,2032,9,45,203211,2032),('2032-11-10',203246,11,2032,10,45,203211,2032),('2032-11-11',203246,11,2032,11,45,203211,2032),('2032-11-12',203246,11,2032,12,45,203211,2032),('2032-11-13',203246,11,2032,13,45,203211,2032),('2032-11-14',203247,11,2032,14,46,203211,2032),('2032-11-15',203247,11,2032,15,46,203211,2032),('2032-11-16',203247,11,2032,16,46,203211,2032),('2032-11-17',203247,11,2032,17,46,203211,2032),('2032-11-18',203247,11,2032,18,46,203211,2032),('2032-11-19',203247,11,2032,19,46,203211,2032),('2032-11-20',203247,11,2032,20,46,203211,2032),('2032-11-21',203248,11,2032,21,47,203211,2032),('2032-11-22',203248,11,2032,22,47,203211,2032),('2032-11-23',203248,11,2032,23,47,203211,2032),('2032-11-24',203248,11,2032,24,47,203211,2032),('2032-11-25',203248,11,2032,25,47,203211,2032),('2032-11-26',203248,11,2032,26,47,203211,2032),('2032-11-27',203248,11,2032,27,47,203211,2032),('2032-11-28',203249,11,2032,28,48,203211,2032),('2032-11-29',203249,11,2032,29,48,203211,2032),('2032-11-30',203249,11,2032,30,48,203211,2032),('2032-12-01',203249,12,2032,1,48,203212,2033),('2032-12-02',203249,12,2032,2,48,203212,2033),('2032-12-03',203249,12,2032,3,48,203212,2033),('2032-12-04',203249,12,2032,4,48,203212,2033),('2032-12-05',203250,12,2032,5,49,203212,2033),('2032-12-06',203250,12,2032,6,49,203212,2033),('2032-12-07',203250,12,2032,7,49,203212,2033),('2032-12-08',203250,12,2032,8,49,203212,2033),('2032-12-09',203250,12,2032,9,49,203212,2033),('2032-12-10',203250,12,2032,10,49,203212,2033),('2032-12-11',203250,12,2032,11,49,203212,2033),('2032-12-12',203251,12,2032,12,50,203212,2033),('2032-12-13',203251,12,2032,13,50,203212,2033),('2032-12-14',203251,12,2032,14,50,203212,2033),('2032-12-15',203251,12,2032,15,50,203212,2033),('2032-12-16',203251,12,2032,16,50,203212,2033),('2032-12-17',203251,12,2032,17,50,203212,2033),('2032-12-18',203251,12,2032,18,50,203212,2033),('2032-12-19',203252,12,2032,19,51,203212,2033),('2032-12-20',203252,12,2032,20,51,203212,2033),('2032-12-21',203252,12,2032,21,51,203212,2033),('2032-12-22',203252,12,2032,22,51,203212,2033),('2032-12-23',203252,12,2032,23,51,203212,2033),('2032-12-24',203252,12,2032,24,51,203212,2033),('2032-12-25',203252,12,2032,25,51,203212,2033),('2032-12-26',203253,12,2032,26,52,203212,2033),('2032-12-27',203253,12,2032,27,52,203212,2033),('2032-12-28',203253,12,2032,28,52,203212,2033),('2032-12-29',203253,12,2032,29,52,203212,2033),('2032-12-30',203253,12,2032,30,52,203212,2033),('2032-12-31',203253,12,2032,31,52,203212,2033),('2033-01-01',203353,1,2033,1,52,203301,2033),('2033-01-02',203354,1,2033,2,1,203301,2033),('2033-01-03',203301,1,2033,3,1,203301,2033),('2033-01-04',203301,1,2033,4,1,203301,2033),('2033-01-05',203301,1,2033,5,1,203301,2033),('2033-01-06',203301,1,2033,6,1,203301,2033),('2033-01-07',203301,1,2033,7,1,203301,2033),('2033-01-08',203301,1,2033,8,1,203301,2033),('2033-01-09',203302,1,2033,9,2,203301,2033),('2033-01-10',203302,1,2033,10,2,203301,2033),('2033-01-11',203302,1,2033,11,2,203301,2033),('2033-01-12',203302,1,2033,12,2,203301,2033),('2033-01-13',203302,1,2033,13,2,203301,2033),('2033-01-14',203302,1,2033,14,2,203301,2033),('2033-01-15',203302,1,2033,15,2,203301,2033),('2033-01-16',203303,1,2033,16,3,203301,2033),('2033-01-17',203303,1,2033,17,3,203301,2033),('2033-01-18',203303,1,2033,18,3,203301,2033),('2033-01-19',203303,1,2033,19,3,203301,2033),('2033-01-20',203303,1,2033,20,3,203301,2033),('2033-01-21',203303,1,2033,21,3,203301,2033),('2033-01-22',203303,1,2033,22,3,203301,2033),('2033-01-23',203304,1,2033,23,4,203301,2033),('2033-01-24',203304,1,2033,24,4,203301,2033),('2033-01-25',203304,1,2033,25,4,203301,2033),('2033-01-26',203304,1,2033,26,4,203301,2033),('2033-01-27',203304,1,2033,27,4,203301,2033),('2033-01-28',203304,1,2033,28,4,203301,2033),('2033-01-29',203304,1,2033,29,4,203301,2033),('2033-01-30',203305,1,2033,30,5,203301,2033),('2033-01-31',203305,1,2033,31,5,203301,2033),('2033-02-01',203305,2,2033,1,5,203302,2033),('2033-02-02',203305,2,2033,2,5,203302,2033),('2033-02-03',203305,2,2033,3,5,203302,2033),('2033-02-04',203305,2,2033,4,5,203302,2033),('2033-02-05',203305,2,2033,5,5,203302,2033),('2033-02-06',203306,2,2033,6,6,203302,2033),('2033-02-07',203306,2,2033,7,6,203302,2033),('2033-02-08',203306,2,2033,8,6,203302,2033),('2033-02-09',203306,2,2033,9,6,203302,2033),('2033-02-10',203306,2,2033,10,6,203302,2033),('2033-02-11',203306,2,2033,11,6,203302,2033),('2033-02-12',203306,2,2033,12,6,203302,2033),('2033-02-13',203307,2,2033,13,7,203302,2033),('2033-02-14',203307,2,2033,14,7,203302,2033),('2033-02-15',203307,2,2033,15,7,203302,2033),('2033-02-16',203307,2,2033,16,7,203302,2033),('2033-02-17',203307,2,2033,17,7,203302,2033),('2033-02-18',203307,2,2033,18,7,203302,2033),('2033-02-19',203307,2,2033,19,7,203302,2033),('2033-02-20',203308,2,2033,20,8,203302,2033),('2033-02-21',203308,2,2033,21,8,203302,2033),('2033-02-22',203308,2,2033,22,8,203302,2033),('2033-02-23',203308,2,2033,23,8,203302,2033),('2033-02-24',203308,2,2033,24,8,203302,2033),('2033-02-25',203308,2,2033,25,8,203302,2033),('2033-02-26',203308,2,2033,26,8,203302,2033),('2033-02-27',203309,2,2033,27,9,203302,2033),('2033-02-28',203309,2,2033,28,9,203302,2033),('2033-03-01',203309,3,2033,1,9,203303,2033),('2033-03-02',203309,3,2033,2,9,203303,2033),('2033-03-03',203309,3,2033,3,9,203303,2033),('2033-03-04',203309,3,2033,4,9,203303,2033),('2033-03-05',203309,3,2033,5,9,203303,2033),('2033-03-06',203310,3,2033,6,10,203303,2033),('2033-03-07',203310,3,2033,7,10,203303,2033),('2033-03-08',203310,3,2033,8,10,203303,2033),('2033-03-09',203310,3,2033,9,10,203303,2033),('2033-03-10',203310,3,2033,10,10,203303,2033),('2033-03-11',203310,3,2033,11,10,203303,2033),('2033-03-12',203310,3,2033,12,10,203303,2033),('2033-03-13',203311,3,2033,13,11,203303,2033),('2033-03-14',203311,3,2033,14,11,203303,2033),('2033-03-15',203311,3,2033,15,11,203303,2033),('2033-03-16',203311,3,2033,16,11,203303,2033),('2033-03-17',203311,3,2033,17,11,203303,2033),('2033-03-18',203311,3,2033,18,11,203303,2033),('2033-03-19',203311,3,2033,19,11,203303,2033),('2033-03-20',203312,3,2033,20,12,203303,2033),('2033-03-21',203312,3,2033,21,12,203303,2033),('2033-03-22',203312,3,2033,22,12,203303,2033),('2033-03-23',203312,3,2033,23,12,203303,2033),('2033-03-24',203312,3,2033,24,12,203303,2033),('2033-03-25',203312,3,2033,25,12,203303,2033),('2033-03-26',203312,3,2033,26,12,203303,2033),('2033-03-27',203313,3,2033,27,13,203303,2033),('2033-03-28',203313,3,2033,28,13,203303,2033),('2033-03-29',203313,3,2033,29,13,203303,2033),('2033-03-30',203313,3,2033,30,13,203303,2033),('2033-03-31',203313,3,2033,31,13,203303,2033),('2033-04-01',203313,4,2033,1,13,203304,2033),('2033-04-02',203313,4,2033,2,13,203304,2033),('2033-04-03',203314,4,2033,3,14,203304,2033),('2033-04-04',203314,4,2033,4,14,203304,2033),('2033-04-05',203314,4,2033,5,14,203304,2033),('2033-04-06',203314,4,2033,6,14,203304,2033),('2033-04-07',203314,4,2033,7,14,203304,2033),('2033-04-08',203314,4,2033,8,14,203304,2033),('2033-04-09',203314,4,2033,9,14,203304,2033),('2033-04-10',203315,4,2033,10,15,203304,2033),('2033-04-11',203315,4,2033,11,15,203304,2033),('2033-04-12',203315,4,2033,12,15,203304,2033),('2033-04-13',203315,4,2033,13,15,203304,2033),('2033-04-14',203315,4,2033,14,15,203304,2033),('2033-04-15',203315,4,2033,15,15,203304,2033),('2033-04-16',203315,4,2033,16,15,203304,2033),('2033-04-17',203316,4,2033,17,16,203304,2033),('2033-04-18',203316,4,2033,18,16,203304,2033),('2033-04-19',203316,4,2033,19,16,203304,2033),('2033-04-20',203316,4,2033,20,16,203304,2033),('2033-04-21',203316,4,2033,21,16,203304,2033),('2033-04-22',203316,4,2033,22,16,203304,2033),('2033-04-23',203316,4,2033,23,16,203304,2033),('2033-04-24',203317,4,2033,24,17,203304,2033),('2033-04-25',203317,4,2033,25,17,203304,2033),('2033-04-26',203317,4,2033,26,17,203304,2033),('2033-04-27',203317,4,2033,27,17,203304,2033),('2033-04-28',203317,4,2033,28,17,203304,2033),('2033-04-29',203317,4,2033,29,17,203304,2033),('2033-04-30',203317,4,2033,30,17,203304,2033),('2033-05-01',203318,5,2033,1,18,203305,2033),('2033-05-02',203318,5,2033,2,18,203305,2033),('2033-05-03',203318,5,2033,3,18,203305,2033),('2033-05-04',203318,5,2033,4,18,203305,2033),('2033-05-05',203318,5,2033,5,18,203305,2033),('2033-05-06',203318,5,2033,6,18,203305,2033),('2033-05-07',203318,5,2033,7,18,203305,2033),('2033-05-08',203319,5,2033,8,19,203305,2033),('2033-05-09',203319,5,2033,9,19,203305,2033),('2033-05-10',203319,5,2033,10,19,203305,2033),('2033-05-11',203319,5,2033,11,19,203305,2033),('2033-05-12',203319,5,2033,12,19,203305,2033),('2033-05-13',203319,5,2033,13,19,203305,2033),('2033-05-14',203319,5,2033,14,19,203305,2033),('2033-05-15',203320,5,2033,15,20,203305,2033),('2033-05-16',203320,5,2033,16,20,203305,2033),('2033-05-17',203320,5,2033,17,20,203305,2033),('2033-05-18',203320,5,2033,18,20,203305,2033),('2033-05-19',203320,5,2033,19,20,203305,2033),('2033-05-20',203320,5,2033,20,20,203305,2033),('2033-05-21',203320,5,2033,21,20,203305,2033),('2033-05-22',203321,5,2033,22,21,203305,2033),('2033-05-23',203321,5,2033,23,21,203305,2033),('2033-05-24',203321,5,2033,24,21,203305,2033),('2033-05-25',203321,5,2033,25,21,203305,2033),('2033-05-26',203321,5,2033,26,21,203305,2033),('2033-05-27',203321,5,2033,27,21,203305,2033),('2033-05-28',203321,5,2033,28,21,203305,2033),('2033-05-29',203322,5,2033,29,22,203305,2033),('2033-05-30',203322,5,2033,30,22,203305,2033),('2033-05-31',203322,5,2033,31,22,203305,2033),('2033-06-01',203322,6,2033,1,22,203306,2033),('2033-06-02',203322,6,2033,2,22,203306,2033),('2033-06-03',203322,6,2033,3,22,203306,2033),('2033-06-04',203322,6,2033,4,22,203306,2033),('2033-06-05',203323,6,2033,5,23,203306,2033),('2033-06-06',203323,6,2033,6,23,203306,2033),('2033-06-07',203323,6,2033,7,23,203306,2033),('2033-06-08',203323,6,2033,8,23,203306,2033),('2033-06-09',203323,6,2033,9,23,203306,2033),('2033-06-10',203323,6,2033,10,23,203306,2033),('2033-06-11',203323,6,2033,11,23,203306,2033),('2033-06-12',203324,6,2033,12,24,203306,2033),('2033-06-13',203324,6,2033,13,24,203306,2033),('2033-06-14',203324,6,2033,14,24,203306,2033),('2033-06-15',203324,6,2033,15,24,203306,2033),('2033-06-16',203324,6,2033,16,24,203306,2033),('2033-06-17',203324,6,2033,17,24,203306,2033),('2033-06-18',203324,6,2033,18,24,203306,2033),('2033-06-19',203325,6,2033,19,25,203306,2033),('2033-06-20',203325,6,2033,20,25,203306,2033),('2033-06-21',203325,6,2033,21,25,203306,2033),('2033-06-22',203325,6,2033,22,25,203306,2033),('2033-06-23',203325,6,2033,23,25,203306,2033),('2033-06-24',203325,6,2033,24,25,203306,2033),('2033-06-25',203325,6,2033,25,25,203306,2033),('2033-06-26',203326,6,2033,26,26,203306,2033),('2033-06-27',203326,6,2033,27,26,203306,2033),('2033-06-28',203326,6,2033,28,26,203306,2033),('2033-06-29',203326,6,2033,29,26,203306,2033),('2033-06-30',203326,6,2033,30,26,203306,2033),('2033-07-01',203326,7,2033,1,26,203307,2033),('2033-07-02',203326,7,2033,2,26,203307,2033),('2033-07-03',203327,7,2033,3,27,203307,2033),('2033-07-04',203327,7,2033,4,27,203307,2033),('2033-07-05',203327,7,2033,5,27,203307,2033),('2033-07-06',203327,7,2033,6,27,203307,2033),('2033-07-07',203327,7,2033,7,27,203307,2033),('2033-07-08',203327,7,2033,8,27,203307,2033),('2033-07-09',203327,7,2033,9,27,203307,2033),('2033-07-10',203328,7,2033,10,28,203307,2033),('2033-07-11',203328,7,2033,11,28,203307,2033),('2033-07-12',203328,7,2033,12,28,203307,2033),('2033-07-13',203328,7,2033,13,28,203307,2033),('2033-07-14',203328,7,2033,14,28,203307,2033),('2033-07-15',203328,7,2033,15,28,203307,2033),('2033-07-16',203328,7,2033,16,28,203307,2033),('2033-07-17',203329,7,2033,17,29,203307,2033),('2033-07-18',203329,7,2033,18,29,203307,2033),('2033-07-19',203329,7,2033,19,29,203307,2033),('2033-07-20',203329,7,2033,20,29,203307,2033),('2033-07-21',203329,7,2033,21,29,203307,2033),('2033-07-22',203329,7,2033,22,29,203307,2033),('2033-07-23',203329,7,2033,23,29,203307,2033),('2033-07-24',203330,7,2033,24,30,203307,2033),('2033-07-25',203330,7,2033,25,30,203307,2033),('2033-07-26',203330,7,2033,26,30,203307,2033),('2033-07-27',203330,7,2033,27,30,203307,2033),('2033-07-28',203330,7,2033,28,30,203307,2033),('2033-07-29',203330,7,2033,29,30,203307,2033),('2033-07-30',203330,7,2033,30,30,203307,2033),('2033-07-31',203331,7,2033,31,31,203307,2033),('2033-08-01',203331,8,2033,1,31,203308,2033),('2033-08-02',203331,8,2033,2,31,203308,2033),('2033-08-03',203331,8,2033,3,31,203308,2033),('2033-08-04',203331,8,2033,4,31,203308,2033),('2033-08-05',203331,8,2033,5,31,203308,2033),('2033-08-06',203331,8,2033,6,31,203308,2033),('2033-08-07',203332,8,2033,7,32,203308,2033),('2033-08-08',203332,8,2033,8,32,203308,2033),('2033-08-09',203332,8,2033,9,32,203308,2033),('2033-08-10',203332,8,2033,10,32,203308,2033),('2033-08-11',203332,8,2033,11,32,203308,2033),('2033-08-12',203332,8,2033,12,32,203308,2033),('2033-08-13',203332,8,2033,13,32,203308,2033),('2033-08-14',203333,8,2033,14,33,203308,2033),('2033-08-15',203333,8,2033,15,33,203308,2033),('2033-08-16',203333,8,2033,16,33,203308,2033),('2033-08-17',203333,8,2033,17,33,203308,2033),('2033-08-18',203333,8,2033,18,33,203308,2033),('2033-08-19',203333,8,2033,19,33,203308,2033),('2033-08-20',203333,8,2033,20,33,203308,2033),('2033-08-21',203334,8,2033,21,34,203308,2033),('2033-08-22',203334,8,2033,22,34,203308,2033),('2033-08-23',203334,8,2033,23,34,203308,2033),('2033-08-24',203334,8,2033,24,34,203308,2033),('2033-08-25',203334,8,2033,25,34,203308,2033),('2033-08-26',203334,8,2033,26,34,203308,2033),('2033-08-27',203334,8,2033,27,34,203308,2033),('2033-08-28',203335,8,2033,28,35,203308,2033),('2033-08-29',203335,8,2033,29,35,203308,2033),('2033-08-30',203335,8,2033,30,35,203308,2033),('2033-08-31',203335,8,2033,31,35,203308,2033),('2033-09-01',203335,9,2033,1,35,203309,2033),('2033-09-02',203335,9,2033,2,35,203309,2033),('2033-09-03',203335,9,2033,3,35,203309,2033),('2033-09-04',203336,9,2033,4,36,203309,2033),('2033-09-05',203336,9,2033,5,36,203309,2033),('2033-09-06',203336,9,2033,6,36,203309,2033),('2033-09-07',203336,9,2033,7,36,203309,2033),('2033-09-08',203336,9,2033,8,36,203309,2033),('2033-09-09',203336,9,2033,9,36,203309,2033),('2033-09-10',203336,9,2033,10,36,203309,2033),('2033-09-11',203337,9,2033,11,37,203309,2033),('2033-09-12',203337,9,2033,12,37,203309,2033),('2033-09-13',203337,9,2033,13,37,203309,2033),('2033-09-14',203337,9,2033,14,37,203309,2033),('2033-09-15',203337,9,2033,15,37,203309,2033),('2033-09-16',203337,9,2033,16,37,203309,2033),('2033-09-17',203337,9,2033,17,37,203309,2033),('2033-09-18',203338,9,2033,18,38,203309,2033),('2033-09-19',203338,9,2033,19,38,203309,2033),('2033-09-20',203338,9,2033,20,38,203309,2033),('2033-09-21',203338,9,2033,21,38,203309,2033),('2033-09-22',203338,9,2033,22,38,203309,2033),('2033-09-23',203338,9,2033,23,38,203309,2033),('2033-09-24',203338,9,2033,24,38,203309,2033),('2033-09-25',203339,9,2033,25,39,203309,2033),('2033-09-26',203339,9,2033,26,39,203309,2033),('2033-09-27',203339,9,2033,27,39,203309,2033),('2033-09-28',203339,9,2033,28,39,203309,2033),('2033-09-29',203339,9,2033,29,39,203309,2033),('2033-09-30',203339,9,2033,30,39,203309,2033),('2033-10-01',203339,10,2033,1,39,203310,2033),('2033-10-02',203340,10,2033,2,40,203310,2033),('2033-10-03',203340,10,2033,3,40,203310,2033),('2033-10-04',203340,10,2033,4,40,203310,2033),('2033-10-05',203340,10,2033,5,40,203310,2033),('2033-10-06',203340,10,2033,6,40,203310,2033),('2033-10-07',203340,10,2033,7,40,203310,2033),('2033-10-08',203340,10,2033,8,40,203310,2033),('2033-10-09',203341,10,2033,9,41,203310,2033),('2033-10-10',203341,10,2033,10,41,203310,2033),('2033-10-11',203341,10,2033,11,41,203310,2033),('2033-10-12',203341,10,2033,12,41,203310,2033),('2033-10-13',203341,10,2033,13,41,203310,2033),('2033-10-14',203341,10,2033,14,41,203310,2033),('2033-10-15',203341,10,2033,15,41,203310,2033),('2033-10-16',203342,10,2033,16,42,203310,2033),('2033-10-17',203342,10,2033,17,42,203310,2033),('2033-10-18',203342,10,2033,18,42,203310,2033),('2033-10-19',203342,10,2033,19,42,203310,2033),('2033-10-20',203342,10,2033,20,42,203310,2033),('2033-10-21',203342,10,2033,21,42,203310,2033),('2033-10-22',203342,10,2033,22,42,203310,2033),('2033-10-23',203343,10,2033,23,43,203310,2033),('2033-10-24',203343,10,2033,24,43,203310,2033),('2033-10-25',203343,10,2033,25,43,203310,2033),('2033-10-26',203343,10,2033,26,43,203310,2033),('2033-10-27',203343,10,2033,27,43,203310,2033),('2033-10-28',203343,10,2033,28,43,203310,2033),('2033-10-29',203343,10,2033,29,43,203310,2033),('2033-10-30',203344,10,2033,30,44,203310,2033),('2033-10-31',203344,10,2033,31,44,203310,2033),('2033-11-01',203344,11,2033,1,44,203311,2033),('2033-11-02',203344,11,2033,2,44,203311,2033),('2033-11-03',203344,11,2033,3,44,203311,2033),('2033-11-04',203344,11,2033,4,44,203311,2033),('2033-11-05',203344,11,2033,5,44,203311,2033),('2033-11-06',203345,11,2033,6,45,203311,2033),('2033-11-07',203345,11,2033,7,45,203311,2033),('2033-11-08',203345,11,2033,8,45,203311,2033),('2033-11-09',203345,11,2033,9,45,203311,2033),('2033-11-10',203345,11,2033,10,45,203311,2033),('2033-11-11',203345,11,2033,11,45,203311,2033),('2033-11-12',203345,11,2033,12,45,203311,2033),('2033-11-13',203346,11,2033,13,46,203311,2033),('2033-11-14',203346,11,2033,14,46,203311,2033),('2033-11-15',203346,11,2033,15,46,203311,2033),('2033-11-16',203346,11,2033,16,46,203311,2033),('2033-11-17',203346,11,2033,17,46,203311,2033),('2033-11-18',203346,11,2033,18,46,203311,2033),('2033-11-19',203346,11,2033,19,46,203311,2033),('2033-11-20',203347,11,2033,20,47,203311,2033),('2033-11-21',203347,11,2033,21,47,203311,2033),('2033-11-22',203347,11,2033,22,47,203311,2033),('2033-11-23',203347,11,2033,23,47,203311,2033),('2033-11-24',203347,11,2033,24,47,203311,2033),('2033-11-25',203347,11,2033,25,47,203311,2033),('2033-11-26',203347,11,2033,26,47,203311,2033),('2033-11-27',203348,11,2033,27,48,203311,2033),('2033-11-28',203348,11,2033,28,48,203311,2033),('2033-11-29',203348,11,2033,29,48,203311,2033),('2033-11-30',203348,11,2033,30,48,203311,2033),('2033-12-01',203348,12,2033,1,48,203312,2034),('2033-12-02',203348,12,2033,2,48,203312,2034),('2033-12-03',203348,12,2033,3,48,203312,2034),('2033-12-04',203349,12,2033,4,49,203312,2034),('2033-12-05',203349,12,2033,5,49,203312,2034),('2033-12-06',203349,12,2033,6,49,203312,2034),('2033-12-07',203349,12,2033,7,49,203312,2034),('2033-12-08',203349,12,2033,8,49,203312,2034),('2033-12-09',203349,12,2033,9,49,203312,2034),('2033-12-10',203349,12,2033,10,49,203312,2034),('2033-12-11',203350,12,2033,11,50,203312,2034),('2033-12-12',203350,12,2033,12,50,203312,2034),('2033-12-13',203350,12,2033,13,50,203312,2034),('2033-12-14',203350,12,2033,14,50,203312,2034),('2033-12-15',203350,12,2033,15,50,203312,2034),('2033-12-16',203350,12,2033,16,50,203312,2034),('2033-12-17',203350,12,2033,17,50,203312,2034),('2033-12-18',203351,12,2033,18,51,203312,2034),('2033-12-19',203351,12,2033,19,51,203312,2034),('2033-12-20',203351,12,2033,20,51,203312,2034),('2033-12-21',203351,12,2033,21,51,203312,2034),('2033-12-22',203351,12,2033,22,51,203312,2034),('2033-12-23',203351,12,2033,23,51,203312,2034),('2033-12-24',203351,12,2033,24,51,203312,2034),('2033-12-25',203352,12,2033,25,52,203312,2034),('2033-12-26',203352,12,2033,26,52,203312,2034),('2033-12-27',203352,12,2033,27,52,203312,2034),('2033-12-28',203352,12,2033,28,52,203312,2034),('2033-12-29',203352,12,2033,29,52,203312,2034),('2033-12-30',203352,12,2033,30,52,203312,2034),('2033-12-31',203352,12,2033,31,52,203312,2034),('2034-01-01',203453,1,2034,1,1,203401,2034),('2034-01-02',203401,1,2034,2,1,203401,2034),('2034-01-03',203401,1,2034,3,1,203401,2034),('2034-01-04',203401,1,2034,4,1,203401,2034),('2034-01-05',203401,1,2034,5,1,203401,2034),('2034-01-06',203401,1,2034,6,1,203401,2034),('2034-01-07',203401,1,2034,7,1,203401,2034),('2034-01-08',203402,1,2034,8,2,203401,2034),('2034-01-09',203402,1,2034,9,2,203401,2034),('2034-01-10',203402,1,2034,10,2,203401,2034),('2034-01-11',203402,1,2034,11,2,203401,2034),('2034-01-12',203402,1,2034,12,2,203401,2034),('2034-01-13',203402,1,2034,13,2,203401,2034),('2034-01-14',203402,1,2034,14,2,203401,2034),('2034-01-15',203403,1,2034,15,3,203401,2034),('2034-01-16',203403,1,2034,16,3,203401,2034),('2034-01-17',203403,1,2034,17,3,203401,2034),('2034-01-18',203403,1,2034,18,3,203401,2034),('2034-01-19',203403,1,2034,19,3,203401,2034),('2034-01-20',203403,1,2034,20,3,203401,2034),('2034-01-21',203403,1,2034,21,3,203401,2034),('2034-01-22',203404,1,2034,22,4,203401,2034),('2034-01-23',203404,1,2034,23,4,203401,2034),('2034-01-24',203404,1,2034,24,4,203401,2034),('2034-01-25',203404,1,2034,25,4,203401,2034),('2034-01-26',203404,1,2034,26,4,203401,2034),('2034-01-27',203404,1,2034,27,4,203401,2034),('2034-01-28',203404,1,2034,28,4,203401,2034),('2034-01-29',203405,1,2034,29,5,203401,2034),('2034-01-30',203405,1,2034,30,5,203401,2034),('2034-01-31',203405,1,2034,31,5,203401,2034),('2034-02-01',203405,2,2034,1,5,203402,2034),('2034-02-02',203405,2,2034,2,5,203402,2034),('2034-02-03',203405,2,2034,3,5,203402,2034),('2034-02-04',203405,2,2034,4,5,203402,2034),('2034-02-05',203406,2,2034,5,6,203402,2034),('2034-02-06',203406,2,2034,6,6,203402,2034),('2034-02-07',203406,2,2034,7,6,203402,2034),('2034-02-08',203406,2,2034,8,6,203402,2034),('2034-02-09',203406,2,2034,9,6,203402,2034),('2034-02-10',203406,2,2034,10,6,203402,2034),('2034-02-11',203406,2,2034,11,6,203402,2034),('2034-02-12',203407,2,2034,12,7,203402,2034),('2034-02-13',203407,2,2034,13,7,203402,2034),('2034-02-14',203407,2,2034,14,7,203402,2034),('2034-02-15',203407,2,2034,15,7,203402,2034),('2034-02-16',203407,2,2034,16,7,203402,2034),('2034-02-17',203407,2,2034,17,7,203402,2034),('2034-02-18',203407,2,2034,18,7,203402,2034),('2034-02-19',203408,2,2034,19,8,203402,2034),('2034-02-20',203408,2,2034,20,8,203402,2034),('2034-02-21',203408,2,2034,21,8,203402,2034),('2034-02-22',203408,2,2034,22,8,203402,2034),('2034-02-23',203408,2,2034,23,8,203402,2034),('2034-02-24',203408,2,2034,24,8,203402,2034),('2034-02-25',203408,2,2034,25,8,203402,2034),('2034-02-26',203409,2,2034,26,9,203402,2034),('2034-02-27',203409,2,2034,27,9,203402,2034),('2034-02-28',203409,2,2034,28,9,203402,2034),('2034-03-01',203409,3,2034,1,9,203403,2034),('2034-03-02',203409,3,2034,2,9,203403,2034),('2034-03-03',203409,3,2034,3,9,203403,2034),('2034-03-04',203409,3,2034,4,9,203403,2034),('2034-03-05',203410,3,2034,5,10,203403,2034),('2034-03-06',203410,3,2034,6,10,203403,2034),('2034-03-07',203410,3,2034,7,10,203403,2034),('2034-03-08',203410,3,2034,8,10,203403,2034),('2034-03-09',203410,3,2034,9,10,203403,2034),('2034-03-10',203410,3,2034,10,10,203403,2034),('2034-03-11',203410,3,2034,11,10,203403,2034),('2034-03-12',203411,3,2034,12,11,203403,2034),('2034-03-13',203411,3,2034,13,11,203403,2034),('2034-03-14',203411,3,2034,14,11,203403,2034),('2034-03-15',203411,3,2034,15,11,203403,2034),('2034-03-16',203411,3,2034,16,11,203403,2034),('2034-03-17',203411,3,2034,17,11,203403,2034),('2034-03-18',203411,3,2034,18,11,203403,2034),('2034-03-19',203412,3,2034,19,12,203403,2034),('2034-03-20',203412,3,2034,20,12,203403,2034),('2034-03-21',203412,3,2034,21,12,203403,2034),('2034-03-22',203412,3,2034,22,12,203403,2034),('2034-03-23',203412,3,2034,23,12,203403,2034),('2034-03-24',203412,3,2034,24,12,203403,2034),('2034-03-25',203412,3,2034,25,12,203403,2034),('2034-03-26',203413,3,2034,26,13,203403,2034),('2034-03-27',203413,3,2034,27,13,203403,2034),('2034-03-28',203413,3,2034,28,13,203403,2034),('2034-03-29',203413,3,2034,29,13,203403,2034),('2034-03-30',203413,3,2034,30,13,203403,2034),('2034-03-31',203413,3,2034,31,13,203403,2034),('2034-04-01',203413,4,2034,1,13,203404,2034),('2034-04-02',203414,4,2034,2,14,203404,2034),('2034-04-03',203414,4,2034,3,14,203404,2034),('2034-04-04',203414,4,2034,4,14,203404,2034),('2034-04-05',203414,4,2034,5,14,203404,2034),('2034-04-06',203414,4,2034,6,14,203404,2034),('2034-04-07',203414,4,2034,7,14,203404,2034),('2034-04-08',203414,4,2034,8,14,203404,2034),('2034-04-09',203415,4,2034,9,15,203404,2034),('2034-04-10',203415,4,2034,10,15,203404,2034),('2034-04-11',203415,4,2034,11,15,203404,2034),('2034-04-12',203415,4,2034,12,15,203404,2034),('2034-04-13',203415,4,2034,13,15,203404,2034),('2034-04-14',203415,4,2034,14,15,203404,2034),('2034-04-15',203415,4,2034,15,15,203404,2034),('2034-04-16',203416,4,2034,16,16,203404,2034),('2034-04-17',203416,4,2034,17,16,203404,2034),('2034-04-18',203416,4,2034,18,16,203404,2034),('2034-04-19',203416,4,2034,19,16,203404,2034),('2034-04-20',203416,4,2034,20,16,203404,2034),('2034-04-21',203416,4,2034,21,16,203404,2034),('2034-04-22',203416,4,2034,22,16,203404,2034),('2034-04-23',203417,4,2034,23,17,203404,2034),('2034-04-24',203417,4,2034,24,17,203404,2034),('2034-04-25',203417,4,2034,25,17,203404,2034),('2034-04-26',203417,4,2034,26,17,203404,2034),('2034-04-27',203417,4,2034,27,17,203404,2034),('2034-04-28',203417,4,2034,28,17,203404,2034),('2034-04-29',203417,4,2034,29,17,203404,2034),('2034-04-30',203418,4,2034,30,18,203404,2034),('2034-05-01',203418,5,2034,1,18,203405,2034),('2034-05-02',203418,5,2034,2,18,203405,2034),('2034-05-03',203418,5,2034,3,18,203405,2034),('2034-05-04',203418,5,2034,4,18,203405,2034),('2034-05-05',203418,5,2034,5,18,203405,2034),('2034-05-06',203418,5,2034,6,18,203405,2034),('2034-05-07',203419,5,2034,7,19,203405,2034),('2034-05-08',203419,5,2034,8,19,203405,2034),('2034-05-09',203419,5,2034,9,19,203405,2034),('2034-05-10',203419,5,2034,10,19,203405,2034),('2034-05-11',203419,5,2034,11,19,203405,2034),('2034-05-12',203419,5,2034,12,19,203405,2034),('2034-05-13',203419,5,2034,13,19,203405,2034),('2034-05-14',203420,5,2034,14,20,203405,2034),('2034-05-15',203420,5,2034,15,20,203405,2034),('2034-05-16',203420,5,2034,16,20,203405,2034),('2034-05-17',203420,5,2034,17,20,203405,2034),('2034-05-18',203420,5,2034,18,20,203405,2034),('2034-05-19',203420,5,2034,19,20,203405,2034),('2034-05-20',203420,5,2034,20,20,203405,2034),('2034-05-21',203421,5,2034,21,21,203405,2034),('2034-05-22',203421,5,2034,22,21,203405,2034),('2034-05-23',203421,5,2034,23,21,203405,2034),('2034-05-24',203421,5,2034,24,21,203405,2034),('2034-05-25',203421,5,2034,25,21,203405,2034),('2034-05-26',203421,5,2034,26,21,203405,2034),('2034-05-27',203421,5,2034,27,21,203405,2034),('2034-05-28',203422,5,2034,28,22,203405,2034),('2034-05-29',203422,5,2034,29,22,203405,2034),('2034-05-30',203422,5,2034,30,22,203405,2034),('2034-05-31',203422,5,2034,31,22,203405,2034),('2034-06-01',203422,6,2034,1,22,203406,2034),('2034-06-02',203422,6,2034,2,22,203406,2034),('2034-06-03',203422,6,2034,3,22,203406,2034),('2034-06-04',203423,6,2034,4,23,203406,2034),('2034-06-05',203423,6,2034,5,23,203406,2034),('2034-06-06',203423,6,2034,6,23,203406,2034),('2034-06-07',203423,6,2034,7,23,203406,2034),('2034-06-08',203423,6,2034,8,23,203406,2034),('2034-06-09',203423,6,2034,9,23,203406,2034),('2034-06-10',203423,6,2034,10,23,203406,2034),('2034-06-11',203424,6,2034,11,24,203406,2034),('2034-06-12',203424,6,2034,12,24,203406,2034),('2034-06-13',203424,6,2034,13,24,203406,2034),('2034-06-14',203424,6,2034,14,24,203406,2034),('2034-06-15',203424,6,2034,15,24,203406,2034),('2034-06-16',203424,6,2034,16,24,203406,2034),('2034-06-17',203424,6,2034,17,24,203406,2034),('2034-06-18',203425,6,2034,18,25,203406,2034),('2034-06-19',203425,6,2034,19,25,203406,2034),('2034-06-20',203425,6,2034,20,25,203406,2034),('2034-06-21',203425,6,2034,21,25,203406,2034),('2034-06-22',203425,6,2034,22,25,203406,2034),('2034-06-23',203425,6,2034,23,25,203406,2034),('2034-06-24',203425,6,2034,24,25,203406,2034),('2034-06-25',203426,6,2034,25,26,203406,2034),('2034-06-26',203426,6,2034,26,26,203406,2034),('2034-06-27',203426,6,2034,27,26,203406,2034),('2034-06-28',203426,6,2034,28,26,203406,2034),('2034-06-29',203426,6,2034,29,26,203406,2034),('2034-06-30',203426,6,2034,30,26,203406,2034),('2034-07-01',203426,7,2034,1,26,203407,2034),('2034-07-02',203427,7,2034,2,27,203407,2034),('2034-07-03',203427,7,2034,3,27,203407,2034),('2034-07-04',203427,7,2034,4,27,203407,2034),('2034-07-05',203427,7,2034,5,27,203407,2034),('2034-07-06',203427,7,2034,6,27,203407,2034),('2034-07-07',203427,7,2034,7,27,203407,2034),('2034-07-08',203427,7,2034,8,27,203407,2034),('2034-07-09',203428,7,2034,9,28,203407,2034),('2034-07-10',203428,7,2034,10,28,203407,2034),('2034-07-11',203428,7,2034,11,28,203407,2034),('2034-07-12',203428,7,2034,12,28,203407,2034),('2034-07-13',203428,7,2034,13,28,203407,2034),('2034-07-14',203428,7,2034,14,28,203407,2034),('2034-07-15',203428,7,2034,15,28,203407,2034),('2034-07-16',203429,7,2034,16,29,203407,2034),('2034-07-17',203429,7,2034,17,29,203407,2034),('2034-07-18',203429,7,2034,18,29,203407,2034),('2034-07-19',203429,7,2034,19,29,203407,2034),('2034-07-20',203429,7,2034,20,29,203407,2034),('2034-07-21',203429,7,2034,21,29,203407,2034),('2034-07-22',203429,7,2034,22,29,203407,2034),('2034-07-23',203430,7,2034,23,30,203407,2034),('2034-07-24',203430,7,2034,24,30,203407,2034),('2034-07-25',203430,7,2034,25,30,203407,2034),('2034-07-26',203430,7,2034,26,30,203407,2034),('2034-07-27',203430,7,2034,27,30,203407,2034),('2034-07-28',203430,7,2034,28,30,203407,2034),('2034-07-29',203430,7,2034,29,30,203407,2034),('2034-07-30',203431,7,2034,30,31,203407,2034),('2034-07-31',203431,7,2034,31,31,203407,2034),('2034-08-01',203431,8,2034,1,31,203408,2034),('2034-08-02',203431,8,2034,2,31,203408,2034),('2034-08-03',203431,8,2034,3,31,203408,2034),('2034-08-04',203431,8,2034,4,31,203408,2034),('2034-08-05',203431,8,2034,5,31,203408,2034),('2034-08-06',203432,8,2034,6,32,203408,2034),('2034-08-07',203432,8,2034,7,32,203408,2034),('2034-08-08',203432,8,2034,8,32,203408,2034),('2034-08-09',203432,8,2034,9,32,203408,2034),('2034-08-10',203432,8,2034,10,32,203408,2034),('2034-08-11',203432,8,2034,11,32,203408,2034),('2034-08-12',203432,8,2034,12,32,203408,2034),('2034-08-13',203433,8,2034,13,33,203408,2034),('2034-08-14',203433,8,2034,14,33,203408,2034),('2034-08-15',203433,8,2034,15,33,203408,2034),('2034-08-16',203433,8,2034,16,33,203408,2034),('2034-08-17',203433,8,2034,17,33,203408,2034),('2034-08-18',203433,8,2034,18,33,203408,2034),('2034-08-19',203433,8,2034,19,33,203408,2034),('2034-08-20',203434,8,2034,20,34,203408,2034),('2034-08-21',203434,8,2034,21,34,203408,2034),('2034-08-22',203434,8,2034,22,34,203408,2034),('2034-08-23',203434,8,2034,23,34,203408,2034),('2034-08-24',203434,8,2034,24,34,203408,2034),('2034-08-25',203434,8,2034,25,34,203408,2034),('2034-08-26',203434,8,2034,26,34,203408,2034),('2034-08-27',203435,8,2034,27,35,203408,2034),('2034-08-28',203435,8,2034,28,35,203408,2034),('2034-08-29',203435,8,2034,29,35,203408,2034),('2034-08-30',203435,8,2034,30,35,203408,2034),('2034-08-31',203435,8,2034,31,35,203408,2034),('2034-09-01',203435,9,2034,1,35,203409,2034),('2034-09-02',203435,9,2034,2,35,203409,2034),('2034-09-03',203436,9,2034,3,36,203409,2034),('2034-09-04',203436,9,2034,4,36,203409,2034),('2034-09-05',203436,9,2034,5,36,203409,2034),('2034-09-06',203436,9,2034,6,36,203409,2034),('2034-09-07',203436,9,2034,7,36,203409,2034),('2034-09-08',203436,9,2034,8,36,203409,2034),('2034-09-09',203436,9,2034,9,36,203409,2034),('2034-09-10',203437,9,2034,10,37,203409,2034),('2034-09-11',203437,9,2034,11,37,203409,2034),('2034-09-12',203437,9,2034,12,37,203409,2034),('2034-09-13',203437,9,2034,13,37,203409,2034),('2034-09-14',203437,9,2034,14,37,203409,2034),('2034-09-15',203437,9,2034,15,37,203409,2034),('2034-09-16',203437,9,2034,16,37,203409,2034),('2034-09-17',203438,9,2034,17,38,203409,2034),('2034-09-18',203438,9,2034,18,38,203409,2034),('2034-09-19',203438,9,2034,19,38,203409,2034),('2034-09-20',203438,9,2034,20,38,203409,2034),('2034-09-21',203438,9,2034,21,38,203409,2034),('2034-09-22',203438,9,2034,22,38,203409,2034),('2034-09-23',203438,9,2034,23,38,203409,2034),('2034-09-24',203439,9,2034,24,39,203409,2034),('2034-09-25',203439,9,2034,25,39,203409,2034),('2034-09-26',203439,9,2034,26,39,203409,2034),('2034-09-27',203439,9,2034,27,39,203409,2034),('2034-09-28',203439,9,2034,28,39,203409,2034),('2034-09-29',203439,9,2034,29,39,203409,2034),('2034-09-30',203439,9,2034,30,39,203409,2034),('2034-10-01',203440,10,2034,1,40,203410,2034),('2034-10-02',203440,10,2034,2,40,203410,2034),('2034-10-03',203440,10,2034,3,40,203410,2034),('2034-10-04',203440,10,2034,4,40,203410,2034),('2034-10-05',203440,10,2034,5,40,203410,2034),('2034-10-06',203440,10,2034,6,40,203410,2034),('2034-10-07',203440,10,2034,7,40,203410,2034),('2034-10-08',203441,10,2034,8,41,203410,2034),('2034-10-09',203441,10,2034,9,41,203410,2034),('2034-10-10',203441,10,2034,10,41,203410,2034),('2034-10-11',203441,10,2034,11,41,203410,2034),('2034-10-12',203441,10,2034,12,41,203410,2034),('2034-10-13',203441,10,2034,13,41,203410,2034),('2034-10-14',203441,10,2034,14,41,203410,2034),('2034-10-15',203442,10,2034,15,42,203410,2034),('2034-10-16',203442,10,2034,16,42,203410,2034),('2034-10-17',203442,10,2034,17,42,203410,2034),('2034-10-18',203442,10,2034,18,42,203410,2034),('2034-10-19',203442,10,2034,19,42,203410,2034),('2034-10-20',203442,10,2034,20,42,203410,2034),('2034-10-21',203442,10,2034,21,42,203410,2034),('2034-10-22',203443,10,2034,22,43,203410,2034),('2034-10-23',203443,10,2034,23,43,203410,2034),('2034-10-24',203443,10,2034,24,43,203410,2034),('2034-10-25',203443,10,2034,25,43,203410,2034),('2034-10-26',203443,10,2034,26,43,203410,2034),('2034-10-27',203443,10,2034,27,43,203410,2034),('2034-10-28',203443,10,2034,28,43,203410,2034),('2034-10-29',203444,10,2034,29,44,203410,2034),('2034-10-30',203444,10,2034,30,44,203410,2034),('2034-10-31',203444,10,2034,31,44,203410,2034),('2034-11-01',203444,11,2034,1,44,203411,2034),('2034-11-02',203444,11,2034,2,44,203411,2034),('2034-11-03',203444,11,2034,3,44,203411,2034),('2034-11-04',203444,11,2034,4,44,203411,2034),('2034-11-05',203445,11,2034,5,45,203411,2034),('2034-11-06',203445,11,2034,6,45,203411,2034),('2034-11-07',203445,11,2034,7,45,203411,2034),('2034-11-08',203445,11,2034,8,45,203411,2034),('2034-11-09',203445,11,2034,9,45,203411,2034),('2034-11-10',203445,11,2034,10,45,203411,2034),('2034-11-11',203445,11,2034,11,45,203411,2034),('2034-11-12',203446,11,2034,12,46,203411,2034),('2034-11-13',203446,11,2034,13,46,203411,2034),('2034-11-14',203446,11,2034,14,46,203411,2034),('2034-11-15',203446,11,2034,15,46,203411,2034),('2034-11-16',203446,11,2034,16,46,203411,2034),('2034-11-17',203446,11,2034,17,46,203411,2034),('2034-11-18',203446,11,2034,18,46,203411,2034),('2034-11-19',203447,11,2034,19,47,203411,2034),('2034-11-20',203447,11,2034,20,47,203411,2034),('2034-11-21',203447,11,2034,21,47,203411,2034),('2034-11-22',203447,11,2034,22,47,203411,2034),('2034-11-23',203447,11,2034,23,47,203411,2034),('2034-11-24',203447,11,2034,24,47,203411,2034),('2034-11-25',203447,11,2034,25,47,203411,2034),('2034-11-26',203448,11,2034,26,48,203411,2034),('2034-11-27',203448,11,2034,27,48,203411,2034),('2034-11-28',203448,11,2034,28,48,203411,2034),('2034-11-29',203448,11,2034,29,48,203411,2034),('2034-11-30',203448,11,2034,30,48,203411,2034),('2034-12-01',203448,12,2034,1,48,203412,2035),('2034-12-02',203448,12,2034,2,48,203412,2035),('2034-12-03',203449,12,2034,3,49,203412,2035),('2034-12-04',203449,12,2034,4,49,203412,2035),('2034-12-05',203449,12,2034,5,49,203412,2035),('2034-12-06',203449,12,2034,6,49,203412,2035),('2034-12-07',203449,12,2034,7,49,203412,2035),('2034-12-08',203449,12,2034,8,49,203412,2035),('2034-12-09',203449,12,2034,9,49,203412,2035),('2034-12-10',203450,12,2034,10,50,203412,2035),('2034-12-11',203450,12,2034,11,50,203412,2035),('2034-12-12',203450,12,2034,12,50,203412,2035),('2034-12-13',203450,12,2034,13,50,203412,2035),('2034-12-14',203450,12,2034,14,50,203412,2035),('2034-12-15',203450,12,2034,15,50,203412,2035),('2034-12-16',203450,12,2034,16,50,203412,2035),('2034-12-17',203451,12,2034,17,51,203412,2035),('2034-12-18',203451,12,2034,18,51,203412,2035),('2034-12-19',203451,12,2034,19,51,203412,2035),('2034-12-20',203451,12,2034,20,51,203412,2035),('2034-12-21',203451,12,2034,21,51,203412,2035),('2034-12-22',203451,12,2034,22,51,203412,2035),('2034-12-23',203451,12,2034,23,51,203412,2035),('2034-12-24',203452,12,2034,24,52,203412,2035),('2034-12-25',203452,12,2034,25,52,203412,2035),('2034-12-26',203452,12,2034,26,52,203412,2035),('2034-12-27',203452,12,2034,27,52,203412,2035),('2034-12-28',203452,12,2034,28,52,203412,2035),('2034-12-29',203452,12,2034,29,52,203412,2035),('2034-12-30',203452,12,2034,30,52,203412,2035),('2034-12-31',203453,12,2034,31,1,203412,2035),('2035-01-01',203501,1,2035,1,1,203501,2035),('2035-01-02',203501,1,2035,2,1,203501,2035),('2035-01-03',203501,1,2035,3,1,203501,2035),('2035-01-04',203501,1,2035,4,1,203501,2035),('2035-01-05',203501,1,2035,5,1,203501,2035),('2035-01-06',203501,1,2035,6,1,203501,2035),('2035-01-07',203502,1,2035,7,2,203501,2035),('2035-01-08',203502,1,2035,8,2,203501,2035),('2035-01-09',203502,1,2035,9,2,203501,2035),('2035-01-10',203502,1,2035,10,2,203501,2035),('2035-01-11',203502,1,2035,11,2,203501,2035),('2035-01-12',203502,1,2035,12,2,203501,2035),('2035-01-13',203502,1,2035,13,2,203501,2035),('2035-01-14',203503,1,2035,14,3,203501,2035),('2035-01-15',203503,1,2035,15,3,203501,2035),('2035-01-16',203503,1,2035,16,3,203501,2035),('2035-01-17',203503,1,2035,17,3,203501,2035),('2035-01-18',203503,1,2035,18,3,203501,2035),('2035-01-19',203503,1,2035,19,3,203501,2035),('2035-01-20',203503,1,2035,20,3,203501,2035),('2035-01-21',203504,1,2035,21,4,203501,2035),('2035-01-22',203504,1,2035,22,4,203501,2035),('2035-01-23',203504,1,2035,23,4,203501,2035),('2035-01-24',203504,1,2035,24,4,203501,2035),('2035-01-25',203504,1,2035,25,4,203501,2035),('2035-01-26',203504,1,2035,26,4,203501,2035),('2035-01-27',203504,1,2035,27,4,203501,2035),('2035-01-28',203505,1,2035,28,5,203501,2035),('2035-01-29',203505,1,2035,29,5,203501,2035),('2035-01-30',203505,1,2035,30,5,203501,2035),('2035-01-31',203505,1,2035,31,5,203501,2035),('2035-02-01',203505,2,2035,1,5,203502,2035),('2035-02-02',203505,2,2035,2,5,203502,2035),('2035-02-03',203505,2,2035,3,5,203502,2035),('2035-02-04',203506,2,2035,4,6,203502,2035),('2035-02-05',203506,2,2035,5,6,203502,2035),('2035-02-06',203506,2,2035,6,6,203502,2035),('2035-02-07',203506,2,2035,7,6,203502,2035),('2035-02-08',203506,2,2035,8,6,203502,2035),('2035-02-09',203506,2,2035,9,6,203502,2035),('2035-02-10',203506,2,2035,10,6,203502,2035),('2035-02-11',203507,2,2035,11,7,203502,2035),('2035-02-12',203507,2,2035,12,7,203502,2035),('2035-02-13',203507,2,2035,13,7,203502,2035),('2035-02-14',203507,2,2035,14,7,203502,2035),('2035-02-15',203507,2,2035,15,7,203502,2035),('2035-02-16',203507,2,2035,16,7,203502,2035),('2035-02-17',203507,2,2035,17,7,203502,2035),('2035-02-18',203508,2,2035,18,8,203502,2035),('2035-02-19',203508,2,2035,19,8,203502,2035),('2035-02-20',203508,2,2035,20,8,203502,2035),('2035-02-21',203508,2,2035,21,8,203502,2035),('2035-02-22',203508,2,2035,22,8,203502,2035),('2035-02-23',203508,2,2035,23,8,203502,2035),('2035-02-24',203508,2,2035,24,8,203502,2035),('2035-02-25',203509,2,2035,25,9,203502,2035),('2035-02-26',203509,2,2035,26,9,203502,2035),('2035-02-27',203509,2,2035,27,9,203502,2035),('2035-02-28',203509,2,2035,28,9,203502,2035),('2035-03-01',203509,3,2035,1,9,203503,2035),('2035-03-02',203509,3,2035,2,9,203503,2035),('2035-03-03',203509,3,2035,3,9,203503,2035),('2035-03-04',203510,3,2035,4,10,203503,2035),('2035-03-05',203510,3,2035,5,10,203503,2035),('2035-03-06',203510,3,2035,6,10,203503,2035),('2035-03-07',203510,3,2035,7,10,203503,2035),('2035-03-08',203510,3,2035,8,10,203503,2035),('2035-03-09',203510,3,2035,9,10,203503,2035),('2035-03-10',203510,3,2035,10,10,203503,2035),('2035-03-11',203511,3,2035,11,11,203503,2035),('2035-03-12',203511,3,2035,12,11,203503,2035),('2035-03-13',203511,3,2035,13,11,203503,2035),('2035-03-14',203511,3,2035,14,11,203503,2035),('2035-03-15',203511,3,2035,15,11,203503,2035),('2035-03-16',203511,3,2035,16,11,203503,2035),('2035-03-17',203511,3,2035,17,11,203503,2035),('2035-03-18',203512,3,2035,18,12,203503,2035),('2035-03-19',203512,3,2035,19,12,203503,2035),('2035-03-20',203512,3,2035,20,12,203503,2035),('2035-03-21',203512,3,2035,21,12,203503,2035),('2035-03-22',203512,3,2035,22,12,203503,2035),('2035-03-23',203512,3,2035,23,12,203503,2035),('2035-03-24',203512,3,2035,24,12,203503,2035),('2035-03-25',203513,3,2035,25,13,203503,2035),('2035-03-26',203513,3,2035,26,13,203503,2035),('2035-03-27',203513,3,2035,27,13,203503,2035),('2035-03-28',203513,3,2035,28,13,203503,2035),('2035-03-29',203513,3,2035,29,13,203503,2035),('2035-03-30',203513,3,2035,30,13,203503,2035),('2035-03-31',203513,3,2035,31,13,203503,2035),('2035-04-01',203514,4,2035,1,14,203504,2035),('2035-04-02',203514,4,2035,2,14,203504,2035),('2035-04-03',203514,4,2035,3,14,203504,2035),('2035-04-04',203514,4,2035,4,14,203504,2035),('2035-04-05',203514,4,2035,5,14,203504,2035),('2035-04-06',203514,4,2035,6,14,203504,2035),('2035-04-07',203514,4,2035,7,14,203504,2035),('2035-04-08',203515,4,2035,8,15,203504,2035),('2035-04-09',203515,4,2035,9,15,203504,2035),('2035-04-10',203515,4,2035,10,15,203504,2035),('2035-04-11',203515,4,2035,11,15,203504,2035),('2035-04-12',203515,4,2035,12,15,203504,2035),('2035-04-13',203515,4,2035,13,15,203504,2035),('2035-04-14',203515,4,2035,14,15,203504,2035),('2035-04-15',203516,4,2035,15,16,203504,2035),('2035-04-16',203516,4,2035,16,16,203504,2035),('2035-04-17',203516,4,2035,17,16,203504,2035),('2035-04-18',203516,4,2035,18,16,203504,2035),('2035-04-19',203516,4,2035,19,16,203504,2035),('2035-04-20',203516,4,2035,20,16,203504,2035),('2035-04-21',203516,4,2035,21,16,203504,2035),('2035-04-22',203517,4,2035,22,17,203504,2035),('2035-04-23',203517,4,2035,23,17,203504,2035),('2035-04-24',203517,4,2035,24,17,203504,2035),('2035-04-25',203517,4,2035,25,17,203504,2035),('2035-04-26',203517,4,2035,26,17,203504,2035),('2035-04-27',203517,4,2035,27,17,203504,2035),('2035-04-28',203517,4,2035,28,17,203504,2035),('2035-04-29',203518,4,2035,29,18,203504,2035),('2035-04-30',203518,4,2035,30,18,203504,2035),('2035-05-01',203518,5,2035,1,18,203505,2035),('2035-05-02',203518,5,2035,2,18,203505,2035),('2035-05-03',203518,5,2035,3,18,203505,2035),('2035-05-04',203518,5,2035,4,18,203505,2035),('2035-05-05',203518,5,2035,5,18,203505,2035),('2035-05-06',203519,5,2035,6,19,203505,2035),('2035-05-07',203519,5,2035,7,19,203505,2035),('2035-05-08',203519,5,2035,8,19,203505,2035),('2035-05-09',203519,5,2035,9,19,203505,2035),('2035-05-10',203519,5,2035,10,19,203505,2035),('2035-05-11',203519,5,2035,11,19,203505,2035),('2035-05-12',203519,5,2035,12,19,203505,2035),('2035-05-13',203520,5,2035,13,20,203505,2035),('2035-05-14',203520,5,2035,14,20,203505,2035),('2035-05-15',203520,5,2035,15,20,203505,2035),('2035-05-16',203520,5,2035,16,20,203505,2035),('2035-05-17',203520,5,2035,17,20,203505,2035),('2035-05-18',203520,5,2035,18,20,203505,2035),('2035-05-19',203520,5,2035,19,20,203505,2035),('2035-05-20',203521,5,2035,20,21,203505,2035),('2035-05-21',203521,5,2035,21,21,203505,2035),('2035-05-22',203521,5,2035,22,21,203505,2035),('2035-05-23',203521,5,2035,23,21,203505,2035),('2035-05-24',203521,5,2035,24,21,203505,2035),('2035-05-25',203521,5,2035,25,21,203505,2035),('2035-05-26',203521,5,2035,26,21,203505,2035),('2035-05-27',203522,5,2035,27,22,203505,2035),('2035-05-28',203522,5,2035,28,22,203505,2035),('2035-05-29',203522,5,2035,29,22,203505,2035),('2035-05-30',203522,5,2035,30,22,203505,2035),('2035-05-31',203522,5,2035,31,22,203505,2035),('2035-06-01',203522,6,2035,1,22,203506,2035),('2035-06-02',203522,6,2035,2,22,203506,2035),('2035-06-03',203523,6,2035,3,23,203506,2035),('2035-06-04',203523,6,2035,4,23,203506,2035),('2035-06-05',203523,6,2035,5,23,203506,2035),('2035-06-06',203523,6,2035,6,23,203506,2035),('2035-06-07',203523,6,2035,7,23,203506,2035),('2035-06-08',203523,6,2035,8,23,203506,2035),('2035-06-09',203523,6,2035,9,23,203506,2035),('2035-06-10',203524,6,2035,10,24,203506,2035),('2035-06-11',203524,6,2035,11,24,203506,2035),('2035-06-12',203524,6,2035,12,24,203506,2035),('2035-06-13',203524,6,2035,13,24,203506,2035),('2035-06-14',203524,6,2035,14,24,203506,2035),('2035-06-15',203524,6,2035,15,24,203506,2035),('2035-06-16',203524,6,2035,16,24,203506,2035),('2035-06-17',203525,6,2035,17,25,203506,2035),('2035-06-18',203525,6,2035,18,25,203506,2035),('2035-06-19',203525,6,2035,19,25,203506,2035),('2035-06-20',203525,6,2035,20,25,203506,2035),('2035-06-21',203525,6,2035,21,25,203506,2035),('2035-06-22',203525,6,2035,22,25,203506,2035),('2035-06-23',203525,6,2035,23,25,203506,2035),('2035-06-24',203526,6,2035,24,26,203506,2035),('2035-06-25',203526,6,2035,25,26,203506,2035),('2035-06-26',203526,6,2035,26,26,203506,2035),('2035-06-27',203526,6,2035,27,26,203506,2035),('2035-06-28',203526,6,2035,28,26,203506,2035),('2035-06-29',203526,6,2035,29,26,203506,2035),('2035-06-30',203526,6,2035,30,26,203506,2035),('2035-07-01',203527,7,2035,1,27,203507,2035),('2035-07-02',203527,7,2035,2,27,203507,2035),('2035-07-03',203527,7,2035,3,27,203507,2035),('2035-07-04',203527,7,2035,4,27,203507,2035),('2035-07-05',203527,7,2035,5,27,203507,2035),('2035-07-06',203527,7,2035,6,27,203507,2035),('2035-07-07',203527,7,2035,7,27,203507,2035),('2035-07-08',203528,7,2035,8,28,203507,2035),('2035-07-09',203528,7,2035,9,28,203507,2035),('2035-07-10',203528,7,2035,10,28,203507,2035),('2035-07-11',203528,7,2035,11,28,203507,2035),('2035-07-12',203528,7,2035,12,28,203507,2035),('2035-07-13',203528,7,2035,13,28,203507,2035),('2035-07-14',203528,7,2035,14,28,203507,2035),('2035-07-15',203529,7,2035,15,29,203507,2035),('2035-07-16',203529,7,2035,16,29,203507,2035),('2035-07-17',203529,7,2035,17,29,203507,2035),('2035-07-18',203529,7,2035,18,29,203507,2035),('2035-07-19',203529,7,2035,19,29,203507,2035),('2035-07-20',203529,7,2035,20,29,203507,2035),('2035-07-21',203529,7,2035,21,29,203507,2035),('2035-07-22',203530,7,2035,22,30,203507,2035),('2035-07-23',203530,7,2035,23,30,203507,2035),('2035-07-24',203530,7,2035,24,30,203507,2035),('2035-07-25',203530,7,2035,25,30,203507,2035),('2035-07-26',203530,7,2035,26,30,203507,2035),('2035-07-27',203530,7,2035,27,30,203507,2035),('2035-07-28',203530,7,2035,28,30,203507,2035),('2035-07-29',203531,7,2035,29,31,203507,2035),('2035-07-30',203531,7,2035,30,31,203507,2035),('2035-07-31',203531,7,2035,31,31,203507,2035),('2035-08-01',203531,8,2035,1,31,203508,2035),('2035-08-02',203531,8,2035,2,31,203508,2035),('2035-08-03',203531,8,2035,3,31,203508,2035),('2035-08-04',203531,8,2035,4,31,203508,2035),('2035-08-05',203532,8,2035,5,32,203508,2035),('2035-08-06',203532,8,2035,6,32,203508,2035),('2035-08-07',203532,8,2035,7,32,203508,2035),('2035-08-08',203532,8,2035,8,32,203508,2035),('2035-08-09',203532,8,2035,9,32,203508,2035),('2035-08-10',203532,8,2035,10,32,203508,2035),('2035-08-11',203532,8,2035,11,32,203508,2035),('2035-08-12',203533,8,2035,12,33,203508,2035),('2035-08-13',203533,8,2035,13,33,203508,2035),('2035-08-14',203533,8,2035,14,33,203508,2035),('2035-08-15',203533,8,2035,15,33,203508,2035),('2035-08-16',203533,8,2035,16,33,203508,2035),('2035-08-17',203533,8,2035,17,33,203508,2035),('2035-08-18',203533,8,2035,18,33,203508,2035),('2035-08-19',203534,8,2035,19,34,203508,2035),('2035-08-20',203534,8,2035,20,34,203508,2035),('2035-08-21',203534,8,2035,21,34,203508,2035),('2035-08-22',203534,8,2035,22,34,203508,2035),('2035-08-23',203534,8,2035,23,34,203508,2035),('2035-08-24',203534,8,2035,24,34,203508,2035),('2035-08-25',203534,8,2035,25,34,203508,2035),('2035-08-26',203535,8,2035,26,35,203508,2035),('2035-08-27',203535,8,2035,27,35,203508,2035),('2035-08-28',203535,8,2035,28,35,203508,2035),('2035-08-29',203535,8,2035,29,35,203508,2035),('2035-08-30',203535,8,2035,30,35,203508,2035),('2035-08-31',203535,8,2035,31,35,203508,2035),('2035-09-01',203535,9,2035,1,35,203509,2035),('2035-09-02',203536,9,2035,2,36,203509,2035),('2035-09-03',203536,9,2035,3,36,203509,2035),('2035-09-04',203536,9,2035,4,36,203509,2035),('2035-09-05',203536,9,2035,5,36,203509,2035),('2035-09-06',203536,9,2035,6,36,203509,2035),('2035-09-07',203536,9,2035,7,36,203509,2035),('2035-09-08',203536,9,2035,8,36,203509,2035),('2035-09-09',203537,9,2035,9,37,203509,2035),('2035-09-10',203537,9,2035,10,37,203509,2035),('2035-09-11',203537,9,2035,11,37,203509,2035),('2035-09-12',203537,9,2035,12,37,203509,2035),('2035-09-13',203537,9,2035,13,37,203509,2035),('2035-09-14',203537,9,2035,14,37,203509,2035),('2035-09-15',203537,9,2035,15,37,203509,2035),('2035-09-16',203538,9,2035,16,38,203509,2035),('2035-09-17',203538,9,2035,17,38,203509,2035),('2035-09-18',203538,9,2035,18,38,203509,2035),('2035-09-19',203538,9,2035,19,38,203509,2035),('2035-09-20',203538,9,2035,20,38,203509,2035),('2035-09-21',203538,9,2035,21,38,203509,2035),('2035-09-22',203538,9,2035,22,38,203509,2035),('2035-09-23',203539,9,2035,23,39,203509,2035),('2035-09-24',203539,9,2035,24,39,203509,2035),('2035-09-25',203539,9,2035,25,39,203509,2035),('2035-09-26',203539,9,2035,26,39,203509,2035),('2035-09-27',203539,9,2035,27,39,203509,2035),('2035-09-28',203539,9,2035,28,39,203509,2035),('2035-09-29',203539,9,2035,29,39,203509,2035),('2035-09-30',203540,9,2035,30,40,203509,2035),('2035-10-01',203540,10,2035,1,40,203510,2035),('2035-10-02',203540,10,2035,2,40,203510,2035),('2035-10-03',203540,10,2035,3,40,203510,2035),('2035-10-04',203540,10,2035,4,40,203510,2035),('2035-10-05',203540,10,2035,5,40,203510,2035),('2035-10-06',203540,10,2035,6,40,203510,2035),('2035-10-07',203541,10,2035,7,41,203510,2035),('2035-10-08',203541,10,2035,8,41,203510,2035),('2035-10-09',203541,10,2035,9,41,203510,2035),('2035-10-10',203541,10,2035,10,41,203510,2035),('2035-10-11',203541,10,2035,11,41,203510,2035),('2035-10-12',203541,10,2035,12,41,203510,2035),('2035-10-13',203541,10,2035,13,41,203510,2035),('2035-10-14',203542,10,2035,14,42,203510,2035),('2035-10-15',203542,10,2035,15,42,203510,2035),('2035-10-16',203542,10,2035,16,42,203510,2035),('2035-10-17',203542,10,2035,17,42,203510,2035),('2035-10-18',203542,10,2035,18,42,203510,2035),('2035-10-19',203542,10,2035,19,42,203510,2035),('2035-10-20',203542,10,2035,20,42,203510,2035),('2035-10-21',203543,10,2035,21,43,203510,2035),('2035-10-22',203543,10,2035,22,43,203510,2035),('2035-10-23',203543,10,2035,23,43,203510,2035),('2035-10-24',203543,10,2035,24,43,203510,2035),('2035-10-25',203543,10,2035,25,43,203510,2035),('2035-10-26',203543,10,2035,26,43,203510,2035),('2035-10-27',203543,10,2035,27,43,203510,2035),('2035-10-28',203544,10,2035,28,44,203510,2035),('2035-10-29',203544,10,2035,29,44,203510,2035),('2035-10-30',203544,10,2035,30,44,203510,2035),('2035-10-31',203544,10,2035,31,44,203510,2035),('2035-11-01',203544,11,2035,1,44,203511,2035),('2035-11-02',203544,11,2035,2,44,203511,2035),('2035-11-03',203544,11,2035,3,44,203511,2035),('2035-11-04',203545,11,2035,4,45,203511,2035),('2035-11-05',203545,11,2035,5,45,203511,2035),('2035-11-06',203545,11,2035,6,45,203511,2035),('2035-11-07',203545,11,2035,7,45,203511,2035),('2035-11-08',203545,11,2035,8,45,203511,2035),('2035-11-09',203545,11,2035,9,45,203511,2035),('2035-11-10',203545,11,2035,10,45,203511,2035),('2035-11-11',203546,11,2035,11,46,203511,2035),('2035-11-12',203546,11,2035,12,46,203511,2035),('2035-11-13',203546,11,2035,13,46,203511,2035),('2035-11-14',203546,11,2035,14,46,203511,2035),('2035-11-15',203546,11,2035,15,46,203511,2035),('2035-11-16',203546,11,2035,16,46,203511,2035),('2035-11-17',203546,11,2035,17,46,203511,2035),('2035-11-18',203547,11,2035,18,47,203511,2035),('2035-11-19',203547,11,2035,19,47,203511,2035),('2035-11-20',203547,11,2035,20,47,203511,2035),('2035-11-21',203547,11,2035,21,47,203511,2035),('2035-11-22',203547,11,2035,22,47,203511,2035),('2035-11-23',203547,11,2035,23,47,203511,2035),('2035-11-24',203547,11,2035,24,47,203511,2035),('2035-11-25',203548,11,2035,25,48,203511,2035),('2035-11-26',203548,11,2035,26,48,203511,2035),('2035-11-27',203548,11,2035,27,48,203511,2035),('2035-11-28',203548,11,2035,28,48,203511,2035),('2035-11-29',203548,11,2035,29,48,203511,2035),('2035-11-30',203548,11,2035,30,48,203511,2035),('2035-12-01',203548,12,2035,1,48,203512,2036),('2035-12-02',203549,12,2035,2,49,203512,2036),('2035-12-03',203549,12,2035,3,49,203512,2036),('2035-12-04',203549,12,2035,4,49,203512,2036),('2035-12-05',203549,12,2035,5,49,203512,2036),('2035-12-06',203549,12,2035,6,49,203512,2036),('2035-12-07',203549,12,2035,7,49,203512,2036),('2035-12-08',203549,12,2035,8,49,203512,2036),('2035-12-09',203550,12,2035,9,50,203512,2036),('2035-12-10',203550,12,2035,10,50,203512,2036),('2035-12-11',203550,12,2035,11,50,203512,2036),('2035-12-12',203550,12,2035,12,50,203512,2036),('2035-12-13',203550,12,2035,13,50,203512,2036),('2035-12-14',203550,12,2035,14,50,203512,2036),('2035-12-15',203550,12,2035,15,50,203512,2036),('2035-12-16',203551,12,2035,16,51,203512,2036),('2035-12-17',203551,12,2035,17,51,203512,2036),('2035-12-18',203551,12,2035,18,51,203512,2036),('2035-12-19',203551,12,2035,19,51,203512,2036),('2035-12-20',203551,12,2035,20,51,203512,2036),('2035-12-21',203551,12,2035,21,51,203512,2036),('2035-12-22',203551,12,2035,22,51,203512,2036),('2035-12-23',203552,12,2035,23,52,203512,2036),('2035-12-24',203552,12,2035,24,52,203512,2036),('2035-12-25',203552,12,2035,25,52,203512,2036),('2035-12-26',203552,12,2035,26,52,203512,2036),('2035-12-27',203552,12,2035,27,52,203512,2036),('2035-12-28',203552,12,2035,28,52,203512,2036),('2035-12-29',203552,12,2035,29,52,203512,2036),('2035-12-30',203553,12,2035,30,1,203512,2036),('2035-12-31',203501,12,2035,31,1,203512,2036),('2036-01-01',203601,1,2036,1,1,203601,2036),('2036-01-02',203601,1,2036,2,1,203601,2036),('2036-01-03',203601,1,2036,3,1,203601,2036),('2036-01-04',203601,1,2036,4,1,203601,2036),('2036-01-05',203601,1,2036,5,1,203601,2036),('2036-01-06',203602,1,2036,6,2,203601,2036),('2036-01-07',203602,1,2036,7,2,203601,2036),('2036-01-08',203602,1,2036,8,2,203601,2036),('2036-01-09',203602,1,2036,9,2,203601,2036),('2036-01-10',203602,1,2036,10,2,203601,2036),('2036-01-11',203602,1,2036,11,2,203601,2036),('2036-01-12',203602,1,2036,12,2,203601,2036),('2036-01-13',203603,1,2036,13,3,203601,2036),('2036-01-14',203603,1,2036,14,3,203601,2036),('2036-01-15',203603,1,2036,15,3,203601,2036),('2036-01-16',203603,1,2036,16,3,203601,2036),('2036-01-17',203603,1,2036,17,3,203601,2036),('2036-01-18',203603,1,2036,18,3,203601,2036),('2036-01-19',203603,1,2036,19,3,203601,2036),('2036-01-20',203604,1,2036,20,4,203601,2036),('2036-01-21',203604,1,2036,21,4,203601,2036),('2036-01-22',203604,1,2036,22,4,203601,2036),('2036-01-23',203604,1,2036,23,4,203601,2036),('2036-01-24',203604,1,2036,24,4,203601,2036),('2036-01-25',203604,1,2036,25,4,203601,2036),('2036-01-26',203604,1,2036,26,4,203601,2036),('2036-01-27',203605,1,2036,27,5,203601,2036),('2036-01-28',203605,1,2036,28,5,203601,2036),('2036-01-29',203605,1,2036,29,5,203601,2036),('2036-01-30',203605,1,2036,30,5,203601,2036),('2036-01-31',203605,1,2036,31,5,203601,2036),('2036-02-01',203605,2,2036,1,5,203602,2036),('2036-02-02',203605,2,2036,2,5,203602,2036),('2036-02-03',203606,2,2036,3,6,203602,2036),('2036-02-04',203606,2,2036,4,6,203602,2036),('2036-02-05',203606,2,2036,5,6,203602,2036),('2036-02-06',203606,2,2036,6,6,203602,2036),('2036-02-07',203606,2,2036,7,6,203602,2036),('2036-02-08',203606,2,2036,8,6,203602,2036),('2036-02-09',203606,2,2036,9,6,203602,2036),('2036-02-10',203607,2,2036,10,7,203602,2036),('2036-02-11',203607,2,2036,11,7,203602,2036),('2036-02-12',203607,2,2036,12,7,203602,2036),('2036-02-13',203607,2,2036,13,7,203602,2036),('2036-02-14',203607,2,2036,14,7,203602,2036),('2036-02-15',203607,2,2036,15,7,203602,2036),('2036-02-16',203607,2,2036,16,7,203602,2036),('2036-02-17',203608,2,2036,17,8,203602,2036),('2036-02-18',203608,2,2036,18,8,203602,2036),('2036-02-19',203608,2,2036,19,8,203602,2036),('2036-02-20',203608,2,2036,20,8,203602,2036),('2036-02-21',203608,2,2036,21,8,203602,2036),('2036-02-22',203608,2,2036,22,8,203602,2036),('2036-02-23',203608,2,2036,23,8,203602,2036),('2036-02-24',203609,2,2036,24,9,203602,2036),('2036-02-25',203609,2,2036,25,9,203602,2036),('2036-02-26',203609,2,2036,26,9,203602,2036),('2036-02-27',203609,2,2036,27,9,203602,2036),('2036-02-28',203609,2,2036,28,9,203602,2036),('2036-02-29',203609,2,2036,29,9,203602,2036),('2036-03-01',203609,3,2036,1,9,203603,2036),('2036-03-02',203610,3,2036,2,10,203603,2036),('2036-03-03',203610,3,2036,3,10,203603,2036),('2036-03-04',203610,3,2036,4,10,203603,2036),('2036-03-05',203610,3,2036,5,10,203603,2036),('2036-03-06',203610,3,2036,6,10,203603,2036),('2036-03-07',203610,3,2036,7,10,203603,2036),('2036-03-08',203610,3,2036,8,10,203603,2036),('2036-03-09',203611,3,2036,9,11,203603,2036),('2036-03-10',203611,3,2036,10,11,203603,2036),('2036-03-11',203611,3,2036,11,11,203603,2036),('2036-03-12',203611,3,2036,12,11,203603,2036),('2036-03-13',203611,3,2036,13,11,203603,2036),('2036-03-14',203611,3,2036,14,11,203603,2036),('2036-03-15',203611,3,2036,15,11,203603,2036),('2036-03-16',203612,3,2036,16,12,203603,2036),('2036-03-17',203612,3,2036,17,12,203603,2036),('2036-03-18',203612,3,2036,18,12,203603,2036),('2036-03-19',203612,3,2036,19,12,203603,2036),('2036-03-20',203612,3,2036,20,12,203603,2036),('2036-03-21',203612,3,2036,21,12,203603,2036),('2036-03-22',203612,3,2036,22,12,203603,2036),('2036-03-23',203613,3,2036,23,13,203603,2036),('2036-03-24',203613,3,2036,24,13,203603,2036),('2036-03-25',203613,3,2036,25,13,203603,2036),('2036-03-26',203613,3,2036,26,13,203603,2036),('2036-03-27',203613,3,2036,27,13,203603,2036),('2036-03-28',203613,3,2036,28,13,203603,2036),('2036-03-29',203613,3,2036,29,13,203603,2036),('2036-03-30',203614,3,2036,30,14,203603,2036),('2036-03-31',203614,3,2036,31,14,203603,2036),('2036-04-01',203614,4,2036,1,14,203604,2036),('2036-04-02',203614,4,2036,2,14,203604,2036),('2036-04-03',203614,4,2036,3,14,203604,2036),('2036-04-04',203614,4,2036,4,14,203604,2036),('2036-04-05',203614,4,2036,5,14,203604,2036),('2036-04-06',203615,4,2036,6,15,203604,2036),('2036-04-07',203615,4,2036,7,15,203604,2036),('2036-04-08',203615,4,2036,8,15,203604,2036),('2036-04-09',203615,4,2036,9,15,203604,2036),('2036-04-10',203615,4,2036,10,15,203604,2036),('2036-04-11',203615,4,2036,11,15,203604,2036),('2036-04-12',203615,4,2036,12,15,203604,2036),('2036-04-13',203616,4,2036,13,16,203604,2036),('2036-04-14',203616,4,2036,14,16,203604,2036),('2036-04-15',203616,4,2036,15,16,203604,2036),('2036-04-16',203616,4,2036,16,16,203604,2036),('2036-04-17',203616,4,2036,17,16,203604,2036),('2036-04-18',203616,4,2036,18,16,203604,2036),('2036-04-19',203616,4,2036,19,16,203604,2036),('2036-04-20',203617,4,2036,20,17,203604,2036),('2036-04-21',203617,4,2036,21,17,203604,2036),('2036-04-22',203617,4,2036,22,17,203604,2036),('2036-04-23',203617,4,2036,23,17,203604,2036),('2036-04-24',203617,4,2036,24,17,203604,2036),('2036-04-25',203617,4,2036,25,17,203604,2036),('2036-04-26',203617,4,2036,26,17,203604,2036),('2036-04-27',203618,4,2036,27,18,203604,2036),('2036-04-28',203618,4,2036,28,18,203604,2036),('2036-04-29',203618,4,2036,29,18,203604,2036),('2036-04-30',203618,4,2036,30,18,203604,2036),('2036-05-01',203618,5,2036,1,18,203605,2036),('2036-05-02',203618,5,2036,2,18,203605,2036),('2036-05-03',203618,5,2036,3,18,203605,2036),('2036-05-04',203619,5,2036,4,19,203605,2036),('2036-05-05',203619,5,2036,5,19,203605,2036),('2036-05-06',203619,5,2036,6,19,203605,2036),('2036-05-07',203619,5,2036,7,19,203605,2036),('2036-05-08',203619,5,2036,8,19,203605,2036),('2036-05-09',203619,5,2036,9,19,203605,2036),('2036-05-10',203619,5,2036,10,19,203605,2036),('2036-05-11',203620,5,2036,11,20,203605,2036),('2036-05-12',203620,5,2036,12,20,203605,2036),('2036-05-13',203620,5,2036,13,20,203605,2036),('2036-05-14',203620,5,2036,14,20,203605,2036),('2036-05-15',203620,5,2036,15,20,203605,2036),('2036-05-16',203620,5,2036,16,20,203605,2036),('2036-05-17',203620,5,2036,17,20,203605,2036),('2036-05-18',203621,5,2036,18,21,203605,2036),('2036-05-19',203621,5,2036,19,21,203605,2036),('2036-05-20',203621,5,2036,20,21,203605,2036),('2036-05-21',203621,5,2036,21,21,203605,2036),('2036-05-22',203621,5,2036,22,21,203605,2036),('2036-05-23',203621,5,2036,23,21,203605,2036),('2036-05-24',203621,5,2036,24,21,203605,2036),('2036-05-25',203622,5,2036,25,22,203605,2036),('2036-05-26',203622,5,2036,26,22,203605,2036),('2036-05-27',203622,5,2036,27,22,203605,2036),('2036-05-28',203622,5,2036,28,22,203605,2036),('2036-05-29',203622,5,2036,29,22,203605,2036),('2036-05-30',203622,5,2036,30,22,203605,2036),('2036-05-31',203622,5,2036,31,22,203605,2036),('2036-06-01',203623,6,2036,1,23,203606,2036),('2036-06-02',203623,6,2036,2,23,203606,2036),('2036-06-03',203623,6,2036,3,23,203606,2036),('2036-06-04',203623,6,2036,4,23,203606,2036),('2036-06-05',203623,6,2036,5,23,203606,2036),('2036-06-06',203623,6,2036,6,23,203606,2036),('2036-06-07',203623,6,2036,7,23,203606,2036),('2036-06-08',203624,6,2036,8,24,203606,2036),('2036-06-09',203624,6,2036,9,24,203606,2036),('2036-06-10',203624,6,2036,10,24,203606,2036),('2036-06-11',203624,6,2036,11,24,203606,2036),('2036-06-12',203624,6,2036,12,24,203606,2036),('2036-06-13',203624,6,2036,13,24,203606,2036),('2036-06-14',203624,6,2036,14,24,203606,2036),('2036-06-15',203625,6,2036,15,25,203606,2036),('2036-06-16',203625,6,2036,16,25,203606,2036),('2036-06-17',203625,6,2036,17,25,203606,2036),('2036-06-18',203625,6,2036,18,25,203606,2036),('2036-06-19',203625,6,2036,19,25,203606,2036),('2036-06-20',203625,6,2036,20,25,203606,2036),('2036-06-21',203625,6,2036,21,25,203606,2036),('2036-06-22',203626,6,2036,22,26,203606,2036),('2036-06-23',203626,6,2036,23,26,203606,2036),('2036-06-24',203626,6,2036,24,26,203606,2036),('2036-06-25',203626,6,2036,25,26,203606,2036),('2036-06-26',203626,6,2036,26,26,203606,2036),('2036-06-27',203626,6,2036,27,26,203606,2036),('2036-06-28',203626,6,2036,28,26,203606,2036),('2036-06-29',203627,6,2036,29,27,203606,2036),('2036-06-30',203627,6,2036,30,27,203606,2036),('2036-07-01',203627,7,2036,1,27,203607,2036),('2036-07-02',203627,7,2036,2,27,203607,2036),('2036-07-03',203627,7,2036,3,27,203607,2036),('2036-07-04',203627,7,2036,4,27,203607,2036),('2036-07-05',203627,7,2036,5,27,203607,2036),('2036-07-06',203628,7,2036,6,28,203607,2036),('2036-07-07',203628,7,2036,7,28,203607,2036),('2036-07-08',203628,7,2036,8,28,203607,2036),('2036-07-09',203628,7,2036,9,28,203607,2036),('2036-07-10',203628,7,2036,10,28,203607,2036),('2036-07-11',203628,7,2036,11,28,203607,2036),('2036-07-12',203628,7,2036,12,28,203607,2036),('2036-07-13',203629,7,2036,13,29,203607,2036),('2036-07-14',203629,7,2036,14,29,203607,2036),('2036-07-15',203629,7,2036,15,29,203607,2036),('2036-07-16',203629,7,2036,16,29,203607,2036),('2036-07-17',203629,7,2036,17,29,203607,2036),('2036-07-18',203629,7,2036,18,29,203607,2036),('2036-07-19',203629,7,2036,19,29,203607,2036),('2036-07-20',203630,7,2036,20,30,203607,2036),('2036-07-21',203630,7,2036,21,30,203607,2036),('2036-07-22',203630,7,2036,22,30,203607,2036),('2036-07-23',203630,7,2036,23,30,203607,2036),('2036-07-24',203630,7,2036,24,30,203607,2036),('2036-07-25',203630,7,2036,25,30,203607,2036),('2036-07-26',203630,7,2036,26,30,203607,2036),('2036-07-27',203631,7,2036,27,31,203607,2036),('2036-07-28',203631,7,2036,28,31,203607,2036),('2036-07-29',203631,7,2036,29,31,203607,2036),('2036-07-30',203631,7,2036,30,31,203607,2036),('2036-07-31',203631,7,2036,31,31,203607,2036),('2036-08-01',203631,8,2036,1,31,203608,2036),('2036-08-02',203631,8,2036,2,31,203608,2036),('2036-08-03',203632,8,2036,3,32,203608,2036),('2036-08-04',203632,8,2036,4,32,203608,2036),('2036-08-05',203632,8,2036,5,32,203608,2036),('2036-08-06',203632,8,2036,6,32,203608,2036),('2036-08-07',203632,8,2036,7,32,203608,2036),('2036-08-08',203632,8,2036,8,32,203608,2036),('2036-08-09',203632,8,2036,9,32,203608,2036),('2036-08-10',203633,8,2036,10,33,203608,2036),('2036-08-11',203633,8,2036,11,33,203608,2036),('2036-08-12',203633,8,2036,12,33,203608,2036),('2036-08-13',203633,8,2036,13,33,203608,2036),('2036-08-14',203633,8,2036,14,33,203608,2036),('2036-08-15',203633,8,2036,15,33,203608,2036),('2036-08-16',203633,8,2036,16,33,203608,2036),('2036-08-17',203634,8,2036,17,34,203608,2036),('2036-08-18',203634,8,2036,18,34,203608,2036),('2036-08-19',203634,8,2036,19,34,203608,2036),('2036-08-20',203634,8,2036,20,34,203608,2036),('2036-08-21',203634,8,2036,21,34,203608,2036),('2036-08-22',203634,8,2036,22,34,203608,2036),('2036-08-23',203634,8,2036,23,34,203608,2036),('2036-08-24',203635,8,2036,24,35,203608,2036),('2036-08-25',203635,8,2036,25,35,203608,2036),('2036-08-26',203635,8,2036,26,35,203608,2036),('2036-08-27',203635,8,2036,27,35,203608,2036),('2036-08-28',203635,8,2036,28,35,203608,2036),('2036-08-29',203635,8,2036,29,35,203608,2036),('2036-08-30',203635,8,2036,30,35,203608,2036),('2036-08-31',203636,8,2036,31,36,203608,2036),('2036-09-01',203636,9,2036,1,36,203609,2036),('2036-09-02',203636,9,2036,2,36,203609,2036),('2036-09-03',203636,9,2036,3,36,203609,2036),('2036-09-04',203636,9,2036,4,36,203609,2036),('2036-09-05',203636,9,2036,5,36,203609,2036),('2036-09-06',203636,9,2036,6,36,203609,2036),('2036-09-07',203637,9,2036,7,37,203609,2036),('2036-09-08',203637,9,2036,8,37,203609,2036),('2036-09-09',203637,9,2036,9,37,203609,2036),('2036-09-10',203637,9,2036,10,37,203609,2036),('2036-09-11',203637,9,2036,11,37,203609,2036),('2036-09-12',203637,9,2036,12,37,203609,2036),('2036-09-13',203637,9,2036,13,37,203609,2036),('2036-09-14',203638,9,2036,14,38,203609,2036),('2036-09-15',203638,9,2036,15,38,203609,2036),('2036-09-16',203638,9,2036,16,38,203609,2036),('2036-09-17',203638,9,2036,17,38,203609,2036),('2036-09-18',203638,9,2036,18,38,203609,2036),('2036-09-19',203638,9,2036,19,38,203609,2036),('2036-09-20',203638,9,2036,20,38,203609,2036),('2036-09-21',203639,9,2036,21,39,203609,2036),('2036-09-22',203639,9,2036,22,39,203609,2036),('2036-09-23',203639,9,2036,23,39,203609,2036),('2036-09-24',203639,9,2036,24,39,203609,2036),('2036-09-25',203639,9,2036,25,39,203609,2036),('2036-09-26',203639,9,2036,26,39,203609,2036),('2036-09-27',203639,9,2036,27,39,203609,2036),('2036-09-28',203640,9,2036,28,40,203609,2036),('2036-09-29',203640,9,2036,29,40,203609,2036),('2036-09-30',203640,9,2036,30,40,203609,2036),('2036-10-01',203640,10,2036,1,40,203610,2036),('2036-10-02',203640,10,2036,2,40,203610,2036),('2036-10-03',203640,10,2036,3,40,203610,2036),('2036-10-04',203640,10,2036,4,40,203610,2036),('2036-10-05',203641,10,2036,5,41,203610,2036),('2036-10-06',203641,10,2036,6,41,203610,2036),('2036-10-07',203641,10,2036,7,41,203610,2036),('2036-10-08',203641,10,2036,8,41,203610,2036),('2036-10-09',203641,10,2036,9,41,203610,2036),('2036-10-10',203641,10,2036,10,41,203610,2036),('2036-10-11',203641,10,2036,11,41,203610,2036),('2036-10-12',203642,10,2036,12,42,203610,2036),('2036-10-13',203642,10,2036,13,42,203610,2036),('2036-10-14',203642,10,2036,14,42,203610,2036),('2036-10-15',203642,10,2036,15,42,203610,2036),('2036-10-16',203642,10,2036,16,42,203610,2036),('2036-10-17',203642,10,2036,17,42,203610,2036),('2036-10-18',203642,10,2036,18,42,203610,2036),('2036-10-19',203643,10,2036,19,43,203610,2036),('2036-10-20',203643,10,2036,20,43,203610,2036),('2036-10-21',203643,10,2036,21,43,203610,2036),('2036-10-22',203643,10,2036,22,43,203610,2036),('2036-10-23',203643,10,2036,23,43,203610,2036),('2036-10-24',203643,10,2036,24,43,203610,2036),('2036-10-25',203643,10,2036,25,43,203610,2036),('2036-10-26',203644,10,2036,26,44,203610,2036),('2036-10-27',203644,10,2036,27,44,203610,2036),('2036-10-28',203644,10,2036,28,44,203610,2036),('2036-10-29',203644,10,2036,29,44,203610,2036),('2036-10-30',203644,10,2036,30,44,203610,2036),('2036-10-31',203644,10,2036,31,44,203610,2036),('2036-11-01',203644,11,2036,1,44,203611,2036),('2036-11-02',203645,11,2036,2,45,203611,2036),('2036-11-03',203645,11,2036,3,45,203611,2036),('2036-11-04',203645,11,2036,4,45,203611,2036),('2036-11-05',203645,11,2036,5,45,203611,2036),('2036-11-06',203645,11,2036,6,45,203611,2036),('2036-11-07',203645,11,2036,7,45,203611,2036),('2036-11-08',203645,11,2036,8,45,203611,2036),('2036-11-09',203646,11,2036,9,46,203611,2036),('2036-11-10',203646,11,2036,10,46,203611,2036),('2036-11-11',203646,11,2036,11,46,203611,2036),('2036-11-12',203646,11,2036,12,46,203611,2036),('2036-11-13',203646,11,2036,13,46,203611,2036),('2036-11-14',203646,11,2036,14,46,203611,2036),('2036-11-15',203646,11,2036,15,46,203611,2036),('2036-11-16',203647,11,2036,16,47,203611,2036),('2036-11-17',203647,11,2036,17,47,203611,2036),('2036-11-18',203647,11,2036,18,47,203611,2036),('2036-11-19',203647,11,2036,19,47,203611,2036),('2036-11-20',203647,11,2036,20,47,203611,2036),('2036-11-21',203647,11,2036,21,47,203611,2036),('2036-11-22',203647,11,2036,22,47,203611,2036),('2036-11-23',203648,11,2036,23,48,203611,2036),('2036-11-24',203648,11,2036,24,48,203611,2036),('2036-11-25',203648,11,2036,25,48,203611,2036),('2036-11-26',203648,11,2036,26,48,203611,2036),('2036-11-27',203648,11,2036,27,48,203611,2036),('2036-11-28',203648,11,2036,28,48,203611,2036),('2036-11-29',203648,11,2036,29,48,203611,2036),('2036-11-30',203649,11,2036,30,49,203611,2036),('2036-12-01',203649,12,2036,1,49,203612,2037),('2036-12-02',203649,12,2036,2,49,203612,2037),('2036-12-03',203649,12,2036,3,49,203612,2037),('2036-12-04',203649,12,2036,4,49,203612,2037),('2036-12-05',203649,12,2036,5,49,203612,2037),('2036-12-06',203649,12,2036,6,49,203612,2037),('2036-12-07',203650,12,2036,7,50,203612,2037),('2036-12-08',203650,12,2036,8,50,203612,2037),('2036-12-09',203650,12,2036,9,50,203612,2037),('2036-12-10',203650,12,2036,10,50,203612,2037),('2036-12-11',203650,12,2036,11,50,203612,2037),('2036-12-12',203650,12,2036,12,50,203612,2037),('2036-12-13',203650,12,2036,13,50,203612,2037),('2036-12-14',203651,12,2036,14,51,203612,2037),('2036-12-15',203651,12,2036,15,51,203612,2037),('2036-12-16',203651,12,2036,16,51,203612,2037),('2036-12-17',203651,12,2036,17,51,203612,2037),('2036-12-18',203651,12,2036,18,51,203612,2037),('2036-12-19',203651,12,2036,19,51,203612,2037),('2036-12-20',203651,12,2036,20,51,203612,2037),('2036-12-21',203652,12,2036,21,52,203612,2037),('2036-12-22',203652,12,2036,22,52,203612,2037),('2036-12-23',203652,12,2036,23,52,203612,2037),('2036-12-24',203652,12,2036,24,52,203612,2037),('2036-12-25',203652,12,2036,25,52,203612,2037),('2036-12-26',203652,12,2036,26,52,203612,2037),('2036-12-27',203652,12,2036,27,52,203612,2037),('2036-12-28',203653,12,2036,28,53,203612,2037),('2036-12-29',203601,12,2036,29,53,203612,2037),('2036-12-30',203601,12,2036,30,53,203612,2037); /*!40000 ALTER TABLE `time` ENABLE KEYS */; UNLOCK TABLES; @@ -440,9 +460,19 @@ UNLOCK TABLES; LOCK TABLES `volumeConfig` WRITE; /*!40000 ALTER TABLE `volumeConfig` DISABLE KEYS */; -INSERT INTO `volumeConfig` VALUES (2.67,1.60,0.8,150,0.30,120,57,2.0,75,200,50); +INSERT INTO `volumeConfig` VALUES (2.67,1.60,0.8,150,0.30,120,57,2.0,5,200,5,167.0); /*!40000 ALTER TABLE `volumeConfig` ENABLE KEYS */; UNLOCK TABLES; + +-- +-- Dumping data for table `workCenter` +-- + +LOCK TABLES `workCenter` WRITE; +/*!40000 ALTER TABLE `workCenter` DISABLE KEYS */; +INSERT INTO `workCenter` VALUES (1,'Silla',20,859,1,'Av espioca 100',552703),(2,'Mercaflor',19,NULL,NULL,NULL,NULL),(3,'Marjales',26,20008,NULL,NULL,NULL),(4,'VNH',NULL,NULL,NULL,NULL,NULL),(5,'Madrid',28,2869,5,'Av constitución 3',554145),(6,'Vilassar',88,88038,NULL,'Cami del Crist, 33',556412),(7,'Tenerife',NULL,NULL,NULL,NULL,NULL),(8,'Silla-Agrario',26,NULL,NULL,NULL,NULL),(9,'Algemesi',20,1354,60,'Fenollars, 2',523549); +/*!40000 ALTER TABLE `workCenter` ENABLE KEYS */; +UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; @@ -452,13 +482,13 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-01-13 7:50:30 +-- Dump completed on 2022-09-16 7:03:16 USE `cache`; --- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) +-- MySQL dump 10.19 Distrib 10.3.34-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: cache -- ------------------------------------------------------ --- Server version 5.6.25-4-log +-- Server version 10.7.4-MariaDB-1:10.7.4+maria~bullseye-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -488,13 +518,13 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-01-13 7:50:31 +-- Dump completed on 2022-09-16 7:03:17 USE `hedera`; --- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) +-- MySQL dump 10.19 Distrib 10.3.34-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: hedera -- ------------------------------------------------------ --- Server version 5.6.25-4-log +-- Server version 10.7.4-MariaDB-1:10.7.4+maria~bullseye-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -506,6 +536,16 @@ USE `hedera`; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; +-- +-- Dumping data for table `browser` +-- + +LOCK TABLES `browser` WRITE; +/*!40000 ALTER TABLE `browser` DISABLE KEYS */; +INSERT INTO `browser` VALUES ('Chrome',29),('Firefox',20),('Iceweasel',20),('IE',12),('Opera',12),('Safari',9); +/*!40000 ALTER TABLE `browser` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Dumping data for table `imageCollection` -- @@ -516,6 +556,106 @@ INSERT INTO `imageCollection` VALUES (1,'catalog','Artículo',3840,2160,'Item',' /*!40000 ALTER TABLE `imageCollection` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Dumping data for table `imageCollectionSize` +-- + +LOCK TABLES `imageCollectionSize` WRITE; +/*!40000 ALTER TABLE `imageCollectionSize` DISABLE KEYS */; +INSERT INTO `imageCollectionSize` VALUES (2,1,50,50,1),(3,1,200,200,1),(5,5,200,200,1),(6,1,70,70,1),(8,5,50,50,1),(9,1,1600,900,0),(13,6,160,160,1),(14,6,520,520,1),(15,6,1600,1600,1); +/*!40000 ALTER TABLE `imageCollectionSize` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Dumping data for table `language` +-- + +LOCK TABLES `language` WRITE; +/*!40000 ALTER TABLE `language` DISABLE KEYS */; +INSERT INTO `language` VALUES ('ca','Català','Catalan',1),('en','English','English',1),('es','Español','Spanish',1),('fr','Français','French',1),('mn','Португалий','Mongolian',1),('pt','Português','Portuguese',1); +/*!40000 ALTER TABLE `language` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Dumping data for table `link` +-- + +LOCK TABLES `link` WRITE; +/*!40000 ALTER TABLE `link` DISABLE KEYS */; +INSERT INTO `link` VALUES (16,'Printing server','Manage the CUPS printing server','http://server.verdnatura.es:631','printer'),(20,'Webmail','Verdnatura webmail','https://webmail.verdnatura.es/','mail'),(23,'Verdnatura Beta','Trial version of the web page','https://test.verdnatura.es/','vn'),(25,'Shared folder','Shared folder','/share','backup'),(29,'phpMyAdmin','Manage MySQL database','https://pma.verdnatura.es/','pma'),(30,'Nagios','Monitoring system','https://nagios.verdnatura.es/','nagios'),(33,'Gitea','Version control system','https://gitea.verdnatura.es/','git'),(34,'Wiknatura','Verdnatura wiki page','https://wiki.verdnatura.es/','wiki'),(35,'phpLDAPadmin','Manage the LDAP database','https://pla.verdnatura.es/','pla'),(36,'Applications','Access applications repository','/vn-access','backup'); +/*!40000 ALTER TABLE `link` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Dumping data for table `location` +-- + +LOCK TABLES `location` WRITE; +/*!40000 ALTER TABLE `location` DISABLE KEYS */; +INSERT INTO `location` VALUES (2,'39.2095886','-0.4173501','Valencia','Calle Fenollar, 2','46680','Algemesi','Valencia','963 242 100','es'),(3,'40.4564969','-3.4875829','Madrid','Avenida de la Constitución, 3 - Nave E','28850','Torrejón de Ardoz','Madrid','963 242 100',NULL),(4,'41.4962045','2.3765504','Barcelona','Camí del crist, 33','08340','Vilassar de Mar','Barcelona','607 562 391','ca'),(5,'52.2612312','4.7818154','Holland','Aalsmeer Flower Auction','1430 BA','Legmeerdijk 313','Aalsmeer','Nederland','nl'),(6,'43.4375416','5.2261456','Marseille','ruben@verdnatura.es','13054','Marigname','Marseille','+33 781 533 900','fr'); +/*!40000 ALTER TABLE `location` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Dumping data for table `menu` +-- + +LOCK TABLES `menu` WRITE; +/*!40000 ALTER TABLE `menu` DISABLE KEYS */; +INSERT INTO `menu` VALUES (1,'Home','cms/home',6,NULL,1),(2,'Orders',NULL,11,NULL,1),(3,'Catalog','ecomerce/catalog',6,NULL,2),(5,'About',NULL,6,NULL,2),(6,'Location','cms/location',6,5,2),(7,'Administration',NULL,1,NULL,2),(8,'Users','admin/users',1,7,2),(9,'Connections','admin/connections',1,7,2),(11,'Agencies','agencies/packages',3,NULL,2),(12,'News','news/news',1,7,3),(14,'Why','cms/why',6,5,2),(15,'Photos','admin/photos',1,7,3),(17,'Configuration',NULL,11,NULL,3),(19,'Control panel','admin/links',1,7,1),(20,'About us','cms/about',6,5,1),(21,'Basket','ecomerce/basket',11,NULL,1),(22,'Last orders','ecomerce/orders',11,2,2),(23,'Invoices','ecomerce/invoices',11,2,2),(24,'Account','account/conf',11,17,1),(25,'Addresses','account/address-list',11,17,2),(26,'Shelves','reports/shelves',1,29,1),(27,'Items list','reports/items-form',1,29,1),(28,'Visits','admin/visits',1,7,2),(29,'Reports',NULL,1,NULL,2),(30,'Items','admin/items',1,7,3); +/*!40000 ALTER TABLE `menu` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Dumping data for table `message` +-- + +LOCK TABLES `message` WRITE; +/*!40000 ALTER TABLE `message` DISABLE KEYS */; +INSERT INTO `message` VALUES (1,'ORDER_DATE_HOLIDAY','No es posible realizar pedidos para días festivos'),(2,'ORDER_EMPTY','El pedido esta vacío'),(3,'ORDER_UNAVAILABLE','Algunos artículos ya no están disponibles, verifica las cantidades resaltadas en rojo'),(4,'SURVEY_MAX_ONE_VOTE','Solo es posible realizar un voto por encuesta'),(5,'ORDER_MAX_EXCEEDED','Has excedido el número máximo de pedidos por confirmar, por favor elimina o confirma los pedidos iniciados'),(6,'LOGIN_INCORRECT','Usuario o contraseña incorrectos. Recuerda que se hace distinción entre mayúsculas y minúsculas.'),(7,'ORDER_DATE_PAST','La fecha de su pedido debe ser mayor o igual al día de hoy'),(8,'ORDER_DATE_LAST','No es posible realizar más para hoy, por favor atrasa la fecha de tu pedido a mañana o días posteriores'),(9,'ORDER_DATE_SUNDAY','No es posible confirmar pedidos para Domingo'),(10,'ORDER_DATE_SATURATED','Estamos saturados de pedidos, por favor selecciona otra fecha de envío o recogida '),(11,'USER_DISCONNECTED','Has sido desconectado del servidor, por favor vuelve a iniciar sesión'),(12,'UNAUTH_ACTION','Acción no permitida'),(13,'ORDER_INVALID_AGENCY','La agencia de envío no es válida'),(14,'ORDER_EMPTY_ADDRESS','Selecciona una dirección de envío'),(15,'ORDER_AMOUNT_ROUNDED','Este artículo se vende agrupado y la cantidad ha sido redondeada'),(16,'ORDER_ALREADY_CONFIRMED','Este pedido ya estaba confirmado'); +/*!40000 ALTER TABLE `message` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Dumping data for table `metatag` +-- + +LOCK TABLES `metatag` WRITE; +/*!40000 ALTER TABLE `metatag` DISABLE KEYS */; +INSERT INTO `metatag` VALUES (2,'title','Verdnatura Levante SL, mayorista de flores, plantas y complementos para floristería y decoración'),(3,'description','Verdnatura Levante SL, mayorista de flores, plantas y complementos para floristería y decoración. Envío a toda España, pedidos por internet o por teléfono.'),(4,'keywords','verdnatura, mayorista, floristería, flores, verdes, plantas, ramos, complementos, artificial, natural, decoración, rosas, helecho, fern, clavel, lilium, orquídea, tulipan, crisantemo, cala, gerbera, hiedra, eucaliptus, cinerea, aralia'),(6,'revisit-after','15 days'),(7,'rating','general'),(8,'author','Juan Ferrer Toribio'),(9,'owner','Verdnatura Levante S.L.'),(10,'robots','index, follow'); +/*!40000 ALTER TABLE `metatag` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Dumping data for table `newsTag` +-- + +LOCK TABLES `newsTag` WRITE; +/*!40000 ALTER TABLE `newsTag` DISABLE KEYS */; +INSERT INTO `newsTag` VALUES ('course','Curso'),('new','Noticia'),('offer','Oferta'); +/*!40000 ALTER TABLE `newsTag` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Dumping data for table `restPriv` +-- + +LOCK TABLES `restPriv` WRITE; +/*!40000 ALTER TABLE `restPriv` DISABLE KEYS */; +INSERT INTO `restPriv` VALUES (1,'tpv/transaction',2),(3,'image/upload',1),(4,'misc/sms',1),(5,'core/supplant',104),(7,'core/set-password',5),(9,'misc/access-version',NULL),(10,'core/captcha',NULL),(11,'core/log',NULL),(12,'core/login',NULL),(13,'core/logout',NULL),(14,'core/query',NULL),(15,'core/recover-password',NULL),(16,'core/restore-password',NULL),(17,'dms/invoice',2),(18,'image/thumb',NULL),(19,'misc/contact',NULL),(20,'misc/production',NULL),(21,'tpv/confirm-post',NULL),(22,'tpv/confirm-soap',NULL),(23,'client/supplant',18),(24,'client/supplant',35); +/*!40000 ALTER TABLE `restPriv` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Dumping data for table `social` +-- + +LOCK TABLES `social` WRITE; +/*!40000 ALTER TABLE `social` DISABLE KEYS */; +INSERT INTO `social` VALUES (1,'Blog','https://blog.verdnatura.es/','blog.svg',0),(3,'Facebook','http://www.facebook.com/verdnatura','facebook.svg',2),(4,'YouTube','http://www.youtube.com/user/verdnatura','youtube.svg',2),(5,'Twitter','https://twitter.com/Verdnatura','twitter.svg',1),(6,'Instagram','https://www.instagram.com/verdnatura','instagram.svg',2),(7,'Linkedin','https://www.linkedin.com/company/verdnatura','linkedin.svg',1),(8,'Pinterest','https://es.pinterest.com/verdnatura/','pinterest.svg',1); +/*!40000 ALTER TABLE `social` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Dumping data for table `tpvError` -- @@ -535,16 +675,6 @@ LOCK TABLES `tpvResponse` WRITE; INSERT INTO `tpvResponse` VALUES (101,'Tarjeta Caducada'),(102,'Tarjeta en excepción transitoria o bajo sospecha de fraude'),(104,'Operación no permitida para esa tarjeta o terminal'),(106,'Intentos de PIN excedidos'),(116,'Disponible Insuficiente'),(118,'Tarjeta no Registrada'),(125,'Tarjeta no efectiva'),(129,'Código de seguridad (CVV2/CVC2) incorrecto'),(180,'Tarjeta ajena al servicio'),(184,'Error en la autenticación del titular'),(190,'Denegación sin especificar motivo'),(191,'Fecha de caducidad errónea'),(202,'Tarjeta en excepción transitoria o bajo sospecha de fraude con retirada de tarjeta'),(904,'Comercio no registrado en FUC'),(909,'Error de sistema'),(912,'Emisor no Disponible'),(913,'Pedido repetido'),(944,'Sesión Incorrecta'),(950,'Operación de devolución no permitida'),(9064,'Número de posiciones de la tarjeta incorrecto'),(9078,'No existe método de pago válido para esa tarjeta'),(9093,'Tarjeta no existente'),(9094,'Rechazo servidores internacionales'),(9104,'A petición del usuario se ha cancelado el pago'),(9218,'El comercio no permite op. seguras por entrada /operaciones'),(9253,'Tarjeta no cumple el check-digit'),(9256,'El comercio no puede realizar preautorizaciones'),(9257,'Esta tarjeta no permite operativa de preautorizaciones'),(9261,'Operación detenida por superar el control de restricciones en la entrada al SIS'),(9912,'Emisor no Disponible'),(9913,'Error en la confirmación que el comercio envía al TPV Virtual (solo aplicable en la opción de sincronización SOAP)'),(9914,'Confirmación “KO” del comercio (solo aplicable en la opción de sincronización SOAP)'),(9915,'A petición del usuario se ha cancelado el pago'),(9928,'Anulación de autorización en diferido realizada por el SIS (proceso batch)'),(9929,'Anulación de autorización en diferido realizada por el comercio'),(9998,'Operación en proceso de solicitud de datos de tarjeta'),(9999,'Operación que ha sido redirigida al emisora autenticar'); /*!40000 ALTER TABLE `tpvResponse` ENABLE KEYS */; UNLOCK TABLES; - --- --- Dumping data for table `imageCollectionSize` --- - -LOCK TABLES `imageCollectionSize` WRITE; -/*!40000 ALTER TABLE `imageCollectionSize` DISABLE KEYS */; -INSERT INTO `imageCollectionSize` VALUES (2,1,50,50,1),(3,1,200,200,1),(5,5,200,200,1),(6,1,70,70,1),(8,5,50,50,1),(9,1,1600,900,0),(13,6,160,160,1),(14,6,520,520,1),(15,6,1600,1600,1); -/*!40000 ALTER TABLE `imageCollectionSize` ENABLE KEYS */; -UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; @@ -554,13 +684,13 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-01-13 7:50:32 +-- Dump completed on 2022-09-16 7:03:22 USE `postgresql`; --- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) +-- MySQL dump 10.19 Distrib 10.3.34-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: postgresql -- ------------------------------------------------------ --- Server version 5.6.25-4-log +-- Server version 10.7.4-MariaDB-1:10.7.4+maria~bullseye-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -608,7 +738,7 @@ UNLOCK TABLES; LOCK TABLES `professional_category` WRITE; /*!40000 ALTER TABLE `professional_category` DISABLE KEYS */; -INSERT INTO `professional_category` VALUES (1,'Mozos',5,1,27.5,NULL),(2,'Encargados',3,1,27.5,NULL),(4,'Comprador',3,1,27.5,NULL),(5,'Aux Administracion',NULL,1,27.5,NULL),(6,'Of Administracion',3,1,27.5,NULL),(7,'Jefe Administracion',2,1,27.5,NULL),(8,'Informatico',3,1,27.5,NULL),(9,'Directivo',1,0,27.5,NULL),(10,'Aux Ventas',4,1,27.5,NULL),(11,'Vendedor',4,1,27.5,NULL),(12,'Jefe de Ventas',4,0,27.5,NULL),(13,'Repartidor',5,1,27.5,NULL),(14,'Aprendices',NULL,1,27.5,NULL),(15,'Técnicos',2,1,27.5,NULL),(16,'Aux Florista',5,1,27.5,NULL),(17,'Florista',4,1,27.5,NULL),(18,'Jefe Floristas',2,1,27.5,NULL),(19,'Técnico marketing',3,1,27.5,NULL),(20,'Auxiliar marketing',4,1,27.5,NULL),(21,'Aux Informática',4,1,27.5,NULL),(22,'Peón agrícola',5,1,27.5,NULL),(23,'Oficial mantenimiento',4,1,27.5,NULL),(24,'Aux mantenimiento',5,1,27.5,NULL),(25,'Mozo Aeropuerto',5,1,27.5,NULL),(26,'Coordinador',2,1,27.5,NULL),(28,'Aux Logistica',4,1,27.5,NULL),(29,'Oficial Logistica',3,1,27.5,NULL),(30,'Subencargado',4,1,27.5,NULL),(31,'Conductor +3500kg',NULL,1,27.5,32400),(32,'Oficial 1ª',NULL,1,27.5,NULL),(33,'Oficial 2ª',NULL,1,27.5,NULL),(34,'Supervisor',NULL,1,27.5,NULL),(35,'Aux.Comerc./Market.',NULL,1,27.5,NULL),(36,'Oficial Comerc./Market.',NULL,1,27.5,NULL),(37,'Coord. Comerc./Market.',NULL,1,27.5,NULL),(38,'Aux. Florista 1ª',NULL,1,27.5,NULL),(39,'Mozo/campo',NULL,1,27.5,NULL); +INSERT INTO `professional_category` VALUES (1,'Mozos',5,1,27.5,NULL),(2,'Encargados',3,1,27.5,NULL),(4,'Comprador',3,1,27.5,NULL),(5,'Aux Administracion',NULL,1,27.5,NULL),(6,'Of Administracion',3,1,27.5,NULL),(7,'Jefe Administracion',2,1,27.5,NULL),(8,'Informatico',3,1,27.5,NULL),(9,'Directivo',1,0,27.5,NULL),(10,'Aux Ventas',4,1,27.5,NULL),(11,'Vendedor',4,1,27.5,NULL),(12,'Jefe de Ventas',4,0,27.5,NULL),(13,'Repartidor',5,1,27.5,NULL),(14,'Aprendices',NULL,1,27.5,NULL),(15,'Técnicos',2,1,27.5,NULL),(16,'Aux Florista',5,1,27.5,NULL),(17,'Florista',4,1,27.5,NULL),(18,'Jefe Floristas',2,1,27.5,NULL),(19,'Técnico marketing',3,1,27.5,NULL),(20,'Auxiliar marketing',4,1,27.5,NULL),(21,'Aux Informática',4,1,27.5,NULL),(22,'Peón agrícola',5,1,27.5,NULL),(23,'Oficial mantenimiento',4,1,27.5,NULL),(24,'Aux mantenimiento',5,1,27.5,NULL),(25,'Mozo Aeropuerto',5,1,27.5,NULL),(26,'Coordinador',2,1,27.5,NULL),(28,'Aux Logistica',4,1,27.5,NULL),(29,'Oficial Logistica',3,1,27.5,NULL),(30,'Subencargado',4,1,27.5,NULL),(31,'Conductor +3500kg',NULL,1,27.5,32400),(32,'Oficial 1ª',NULL,1,27.5,NULL),(33,'Oficial 2ª',NULL,1,27.5,NULL),(34,'Supervisor',NULL,1,27.5,NULL),(35,'Aux.Comerc./Market.',NULL,1,27.5,NULL),(36,'Oficial Comerc./Market.',NULL,1,27.5,NULL),(37,'Coord. Comerc./Market.',NULL,1,27.5,NULL),(38,'Aux. Florista 1ª',NULL,1,27.5,NULL),(39,'Mozo/campo',NULL,1,27.5,NULL),(40,'Conductor B',NULL,1,27.5,NULL),(41,'Conductor C',NULL,1,27.5,NULL),(42,'Conductor C + E',NULL,1,27.5,NULL),(43,'Enrutador I',NULL,1,27.5,NULL),(44,'Enrutador II',NULL,1,27.5,NULL),(45,'Jefe Logística',NULL,1,27.5,NULL); /*!40000 ALTER TABLE `professional_category` ENABLE KEYS */; UNLOCK TABLES; @@ -621,16 +751,6 @@ LOCK TABLES `profile_type` WRITE; INSERT INTO `profile_type` VALUES (1,'Laboral'),(2,'Personal'),(3,'Cliente'),(4,'Proveedor'),(5,'Banco'),(6,'Patronal'); /*!40000 ALTER TABLE `profile_type` ENABLE KEYS */; UNLOCK TABLES; - --- --- Dumping data for table `workcenter` --- - -LOCK TABLES `workcenter` WRITE; -/*!40000 ALTER TABLE `workcenter` DISABLE KEYS */; -INSERT INTO `workcenter` VALUES (1,'Silla',20,NULL,1,'Av espioca 100',552703),(2,'Mercaflor',19,NULL,NULL,NULL,NULL),(3,'Marjales',26,20008,NULL,NULL,NULL),(4,'VNH',NULL,NULL,3,NULL,NULL),(5,'Madrid',28,2869,5,'Av constitución 3',554145),(6,'Vilassar',88,88038,2,'Cami del Crist, 33',556412),(7,'Tenerife',NULL,NULL,10,NULL,NULL),(8,NULL,NULL,NULL,NULL,NULL,NULL),(9,'Algemesi',20,1354,60,'Fenollars, 2',523549),(10,NULL,NULL,NULL,NULL,NULL,NULL); -/*!40000 ALTER TABLE `workcenter` ENABLE KEYS */; -UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; @@ -640,13 +760,13 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-01-13 7:50:33 +-- Dump completed on 2022-09-16 7:03:24 USE `sage`; --- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) +-- MySQL dump 10.19 Distrib 10.3.34-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: db.verdnatura.es Database: sage -- ------------------------------------------------------ --- Server version 5.6.25-4-log +-- Server version 10.7.4-MariaDB-1:10.7.4+maria~bullseye-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -664,7 +784,7 @@ USE `sage`; LOCK TABLES `TiposIva` WRITE; /*!40000 ALTER TABLE `TiposIva` DISABLE KEYS */; -INSERT INTO `TiposIva` VALUES (2,0,'Operaciones no sujetas',0.0000000000,0.0000000000,0.0000000000,'','4770000020','','','','','','','95B21A93-5910-489D-83BB-C32788C9B19D','','','','','','','','','',0,0),(4,0,'I.V.A. 4%',0.0000000000,4.0000000000,0.0000000000,'4720000004','4770000004','','6310000000','','','','','9E6160D5-984E-4643-ACBC-1EBC3BF73360','','','','','','','','','',0,0),(5,0,'I.V.A. 4% y R.E. 0.5%',0.0000000000,4.0000000000,0.5000000000,'','4770000504','4770000405','','','','','','DBEFA562-63FB-4FFC-8171-64F0C6F065FF','','','','','','','','','',0,0),(6,0,'H.P. IVA 4% CEE',0.0000000000,4.0000000000,0.0000000000,'4721000004','4771000004','','','','','','','DD0ECBA8-2EF5-425E-911B-623580BADA77','','','','','','','','','',0,1),(7,0,'H.P. IVA 10% CEE',0.0000000000,10.0000000000,0.0000000000,'4721000011','4771000010','','','','','','','593208CD-6F28-4489-B6EC-907AD689EAC9','','','','','','','','','',0,1),(8,0,'H.P. IVA 21% CEE',0.0000000000,21.0000000000,0.0000000000,'4721000021','4771000021','','','','','','','27061852-9BC1-4C4F-9B6E-69970E208F23','','','','','','','','','',0,1),(10,0,'I.V.A. 10% Nacional',0.0000000000,10.0000000000,0.0000000000,'4720000011','4770000010','','6290000553','','','','','828A9D6F-5C01-4C3A-918A-B2E4482830D3','','','','','','','','','',0,0),(11,0,'I.V.A. 10% y R.E. 1,4%',0.0000000000,10.0000000000,1.4000000000,'','4770000101','4770000110','','','','','','C1F2D910-83A1-4191-A76C-8B3D7AB98348','','','','','','','','','',0,0),(16,0,'I.V.A. Adqui. servicios CEE',0.0000000000,21.0000000000,0.0000000000,'4721000015','4771000016','','','','','','','E3EDE961-CE8F-41D4-9E6C-D8BCD32275A1','','','','','','','','','',0,1),(18,0,'H.P. Iva Importación 0% ISP',0.0000000000,0.0000000000,0.0000000000,'4720000005','4770000005','','','','','','','27AD4158-2349-49C2-B53A-A4E0EFAC5D09','','','','','','','','','',0,0),(20,0,'I.V.A 0% Nacional',0.0000000000,0.0000000000,0.0000000000,'4720000000','','','','','','','','B90B0FBD-E513-4F04-9721-C873504E08DF','','','','','','','','','',0,0),(21,0,'I.V.A. 21%',0.0000000000,21.0000000000,0.0000000000,'4720000021','4770000021','4770000000','','','','','','BA8C4E28-DCFA-4F7B-AE4F-CA044626B55E','','','','','','','','','',0,0),(22,0,'IVA 10% importaciones',0.0000000000,10.0000000000,0.0000000000,'4722000010','','','','','','','','540450A8-4B41-4607-96D1-E7F296FB6933','','','','','','','','','',0,0),(26,0,'I.V.A. 21% y R.E. 5,2%',0.0000000000,21.0000000000,5.2000000000,'4720000021','4770000215','4770000521','631000000','','','','','2BC0765F-7739-49AE-A5F0-28B648B81677','','','','','','','','','',0,0),(90,0,'IVA 21% importaciones',0.0000000000,21.0000000000,0.0000000000,'4722000021','','','','','','','','EB675F91-5FF2-4E26-A31E-EEB674125945','','','','','','','','','',0,0),(91,0,'IVA 0% importaciones',0.0000000000,0.0000000000,0.0000000000,'4723000000','','','','','','','','5E5EFA56-2A99-4D54-A16B-5D818274CA18','','','','','','','','','',0,0),(92,0,'8.5% comp. ganadera o pesquera',0.0000000000,8.5000000000,0.0000000000,'4720000000','4770000000','477000000','631000000','','','','','','','','','','','','','','',0,0),(93,0,'12% com. agrícola o forestal',0.0000000000,12.0000000000,0.0000000000,'4720000012','','','','','','','','267B1DDB-247F-4A71-AB95-3349FEFC5F92','','','','','','','','','',0,0),(94,0,'10,5% com. ganadera o pesquera',0.0000000000,10.5000000000,0.0000000000,'4770000000','4720000000','631000000','477000000','','','','','','','','','','','','','','',0,0),(108,0,'I.V.A. 8%',0.0000000000,8.0000000000,0.0000000000,'4720000000','4770000000','477000000','631000000','','','','','','','','','','','','','','',0,0),(109,0,'I.V.A. 8% y R.E. 1%',0.0000000000,8.0000000000,1.0000000000,'4720000000','4770000000','477000000','631000000','','','','','','','','','','','','','','',0,0),(110,0,'HP IVA Devengado Exento CEE',0.0000000000,0.0000000000,0.0000000000,'','4771000000','','','','','','','C605BC32-E161-42FD-83F3-3A66B1FBE399','','','','','','','','','',0,1),(111,0,'H.P. Iva Devengado Exento Ser',0.0000000000,0.0000000000,0.0000000000,'','4771000001','','','','','','','F1AEC4DC-AFE5-498E-A713-2648FFB6DA32','','','','','','','','','',0,0),(112,0,'H.P. IVA Devengado en exportac',0.0000000000,0.0000000000,0.0000000000,'','4770000002','','','','','','','F980AE74-BF75-4F4C-927F-0CCCE0DB8D15','','','','','','','','','',0,0),(113,0,'HP DEVENGADO 21 ISP ',0.0000000000,21.0000000000,0.0000000000,'4720000006','4770000006','','','','','','','728D7A76-E936-438C-AF05-3CA38FE16EA5','','','','','','','','','',0,0),(114,0,'HP.IVA NO DEDUCIBLE 10%',0.0000000000,0.0000000000,0.0000000000,'4720000026','','','','','','','','','','','','','','','','','',0,0); +INSERT INTO `TiposIva` VALUES (2,0,'Operaciones no sujetas',0.0000000000,0.0000000000,0.0000000000,'','4770000020','','','','','','','95B21A93-5910-489D-83BB-C32788C9B19D','','','','','','','','','',0,0),(4,0,'I.V.A. 4%',0.0000000000,4.0000000000,0.0000000000,'4720000004','4770000004','','6310000000','','','','','9E6160D5-984E-4643-ACBC-1EBC3BF73360','','','','','','','','','',0,0),(5,0,'I.V.A. 4% y R.E. 0.5%',0.0000000000,4.0000000000,0.5000000000,'','4770000504','4770000405','','','','','','DBEFA562-63FB-4FFC-8171-64F0C6F065FF','','','','','','','','','',0,0),(6,0,'H.P. IVA 4% CEE',0.0000000000,4.0000000000,0.0000000000,'4721000004','4771000004','','','','','','','DD0ECBA8-2EF5-425E-911B-623580BADA77','','','','','','','','','',0,1),(7,0,'H.P. IVA 10% CEE',0.0000000000,10.0000000000,0.0000000000,'4721000011','4771000010','','','','','','','593208CD-6F28-4489-B6EC-907AD689EAC9','','','','','','','','','',0,1),(8,0,'H.P. IVA 21% CEE',0.0000000000,21.0000000000,0.0000000000,'4721000021','4771000021','','','','','','','27061852-9BC1-4C4F-9B6E-69970E208F23','','','','','','','','','',0,1),(10,0,'I.V.A. 10% Nacional',0.0000000000,10.0000000000,0.0000000000,'4720000011','4770000010','','6290000553','','','','','828A9D6F-5C01-4C3A-918A-B2E4482830D3','','','','','','','','','',0,0),(11,0,'I.V.A. 10% y R.E. 1,4%',0.0000000000,10.0000000000,1.4000000000,'','4770000101','4770000110','','','','','','C1F2D910-83A1-4191-A76C-8B3D7AB98348','','','','','','','','','',0,0),(16,0,'I.V.A. Adqui. servicios CEE',0.0000000000,21.0000000000,0.0000000000,'4721000015','4771000016','','','','','','','E3EDE961-CE8F-41D4-9E6C-D8BCD32275A1','','','','','','','','','',0,1),(18,0,'H.P. Iva Importación 0% ISP',0.0000000000,0.0000000000,0.0000000000,'4720000005','4770000005','','','','','','','27AD4158-2349-49C2-B53A-A4E0EFAC5D09','','','','','','','','','',0,0),(20,0,'I.V.A 0% Nacional',0.0000000000,0.0000000000,0.0000000000,'4720000000','','','','','','','','B90B0FBD-E513-4F04-9721-C873504E08DF','','','','','','','','','',0,0),(21,0,'I.V.A. 21%',0.0000000000,21.0000000000,0.0000000000,'4720000021','4770000021','4770000000','','','','','','BA8C4E28-DCFA-4F7B-AE4F-CA044626B55E','','','','','','','','','',0,0),(22,0,'IVA 10% importaciones',0.0000000000,10.0000000000,0.0000000000,'4722000010','','','','','','','','540450A8-4B41-4607-96D1-E7F296FB6933','','','','','','','','','',0,0),(26,0,'I.V.A. 21% y R.E. 5,2%',0.0000000000,21.0000000000,5.2000000000,'4720000021','4770000215','4770000521','631000000','','','','','2BC0765F-7739-49AE-A5F0-28B648B81677','','','','','','','','','',0,0),(90,0,'IVA 21% importaciones',0.0000000000,21.0000000000,0.0000000000,'4722000021','','','','','','','','EB675F91-5FF2-4E26-A31E-EEB674125945','','','','','','','','','',0,0),(91,0,'IVA 0% importaciones',0.0000000000,0.0000000000,0.0000000000,'4723000000','','','','','','','','5E5EFA56-2A99-4D54-A16B-5D818274CA18','','','','','','','','','',0,0),(92,0,'8.5% comp. ganadera o pesquera',0.0000000000,8.5000000000,0.0000000000,'4720000000','4770000000','477000000','631000000','','','','','','','','','','','','','','',0,0),(93,0,'12% com. agrícola o forestal',0.0000000000,12.0000000000,0.0000000000,'4720000012','','','','','','','','267B1DDB-247F-4A71-AB95-3349FEFC5F92','','','','','','','','','',0,0),(94,0,'10,5% com. ganadera o pesquera',0.0000000000,10.5000000000,0.0000000000,'4770000000','4720000000','631000000','477000000','','','','','','','','','','','','','','',0,0),(108,0,'I.V.A. 8%',0.0000000000,8.0000000000,0.0000000000,'4720000000','4770000000','477000000','631000000','','','','','','','','','','','','','','',0,0),(109,0,'I.V.A. 8% y R.E. 1%',0.0000000000,8.0000000000,1.0000000000,'4720000000','4770000000','477000000','631000000','','','','','','','','','','','','','','',0,0),(110,0,'HP IVA Devengado Exento CEE',0.0000000000,0.0000000000,0.0000000000,'','4771000000','','','','','','','C605BC32-E161-42FD-83F3-3A66B1FBE399','','','','','','','','','',0,1),(111,0,'H.P. Iva Devengado Exento Ser',0.0000000000,0.0000000000,0.0000000000,'','4771000001','','','','','','','F1AEC4DC-AFE5-498E-A713-2648FFB6DA32','','','','','','','','','',0,0),(112,0,'H.P. IVA Devengado en exportac',0.0000000000,0.0000000000,0.0000000000,'','4770000002','','','','','','','F980AE74-BF75-4F4C-927F-0CCCE0DB8D15','','','','','','','','','',0,0),(113,0,'HP DEVENGADO 21 ISP ',0.0000000000,21.0000000000,0.0000000000,'4720000006','4770000006','','','','','','','728D7A76-E936-438C-AF05-3CA38FE16EA5','','','','','','','','','',0,0),(114,0,'HP.IVA NO DEDUCIBLE 10%',0.0000000000,0.0000000000,0.0000000000,'4720000026','','','','','','','','','','','','','','','','','',0,0),(115,0,'H.P. IVA Soportado Impor 4% ',0.0000000000,4.0000000000,0.0000000000,'4722000004','','','','','','','','','','','','','','','','','',0,0); /*!40000 ALTER TABLE `TiposIva` ENABLE KEYS */; UNLOCK TABLES; @@ -696,4 +816,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-01-13 7:50:33 +-- Dump completed on 2022-09-16 7:03:25 diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index 07eaf23fd..6624e99f4 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -1,17 +1,23 @@ CREATE SCHEMA IF NOT EXISTS `vn2008`; CREATE SCHEMA IF NOT EXISTS `tmp`; +UPDATE `util`.`config` + SET `environment`= 'test'; + ALTER TABLE `vn`.`itemTaxCountry` AUTO_INCREMENT = 1; ALTER TABLE `vn`.`address` AUTO_INCREMENT = 1; ALTER TABLE `vn`.`zoneGeo` AUTO_INCREMENT = 1; ALTER TABLE `vn`.`ticket` AUTO_INCREMENT = 1; -INSERT INTO `salix`.`AccessToken` (`id`, `ttl`, `created`, `userId`) - VALUES - ('DEFAULT_TOKEN', '1209600', CURDATE(), 66); +INSERT INTO `salix`.`AccessToken` (`id`, `ttl`, `created`, `userId`) + VALUES + ('DEFAULT_TOKEN', '1209600', util.VN_CURDATE(), 66); +INSERT INTO `salix`.`printConfig` (`id`, `itRecipient`, `incidencesEmail`) + VALUES + (1, 'it@gotamcity.com', 'incidences@gotamcity.com'); -INSERT INTO `vn`.`ticketConfig` (`id`, `scopeDays`) +INSERT INTO `vn`.`ticketConfig` (`id`, `scopeDays`) VALUES ('1', '6'); @@ -20,11 +26,11 @@ INSERT INTO `vn`.`bionicConfig` (`generalInflationCoeficient`, `minimumDensityVo (1.30, 167.00, 138000, 71); INSERT INTO `vn`.`chatConfig` (`host`, `api`) - VALUES + VALUES ('https://chat.verdnatura.es', 'https://chat.verdnatura.es/api/v1'); -INSERT IGNORE INTO `vn`.`greugeConfig`(`id`, `freightPickUpPrice`) - VALUES +INSERT IGNORE INTO `vn`.`greugeConfig`(`id`, `freightPickUpPrice`) + VALUES ('1', '11'); INSERT INTO `vn`.`packagingConfig`(`upperGap`) @@ -32,16 +38,26 @@ INSERT INTO `vn`.`packagingConfig`(`upperGap`) ('10'); UPDATE `account`.`role` SET id = 100 WHERE id = 0; + +INSERT INTO `account`.`roleConfig`(`id`, `mysqlPassword`, `rolePrefix`, `userPrefix`, `userHost`, `tplUser`) + VALUES + (1, 'mysqlPassword', '$', '!', '%', 'any'); + CALL `account`.`role_sync`; -INSERT INTO `account`.`user`(`id`,`name`, `nickname`, `password`,`role`,`active`,`email`, `lang`, `image`) - SELECT id, name, CONCAT(name, 'Nick'),MD5('nightmare'), id, 1, CONCAT(name, '@mydomain.com'), 'en', '4fa3ada0-3ac4-11eb-9ab8-27f6fc3b85fd' +INSERT INTO `account`.`user`(`id`,`name`, `nickname`, `password`,`role`,`active`,`email`, `lang`, `image`, `bcryptPassword`) + SELECT id, name, CONCAT(name, 'Nick'),MD5('nightmare'), id, 1, CONCAT(name, '@mydomain.com'), 'en', '4fa3ada0-3ac4-11eb-9ab8-27f6fc3b85fd', '$2b$10$UzQHth.9UUQ1T5aiQJ21lOU0oVlbxoqH4PFM9V8T90KNSAcg0eEL2' FROM `account`.`role` WHERE id <> 20 ORDER BY id; INSERT INTO `account`.`account`(`id`) SELECT id FROM `account`.`user`; +INSERT INTO `vn`.`educationLevel` (`id`, `name`) + VALUES + (1, 'ESTUDIOS PRIMARIOS COMPLETOS'), + (2, 'ENSEÑANZAS DE BACHILLERATO'); + INSERT INTO `vn`.`worker`(`id`,`code`, `firstName`, `lastName`, `userFk`, `bossFk`) SELECT id,UPPER(LPAD(role, 3, '0')), name, name, id, 9 FROM `vn`.`user`; @@ -57,7 +73,7 @@ INSERT INTO `hedera`.`tpvConfig`(`id`, `currency`, `terminal`, `transactionType` (1, 978, 1, 0, 2000, 9, 0); INSERT INTO `account`.`user`(`id`,`name`,`nickname`, `password`,`role`,`active`,`email`,`lang`, `image`) - VALUES + VALUES (1101, 'BruceWayne', 'Bruce Wayne', 'ac754a330530832ba1bf7687f577da91', 2, 1, 'BruceWayne@mydomain.com', 'es', 'e7723f0b24ff05b32ed09d95196f2f29'), (1102, 'PetterParker', 'Petter Parker', 'ac754a330530832ba1bf7687f577da91', 2, 1, 'PetterParker@mydomain.com', 'en', 'e7723f0b24ff05b32ed09d95196f2f29'), (1103, 'ClarkKent', 'Clark Kent', 'ac754a330530832ba1bf7687f577da91', 2, 1, 'ClarkKent@mydomain.com', 'fr', 'e7723f0b24ff05b32ed09d95196f2f29'), @@ -89,13 +105,19 @@ INSERT INTO `account`.`mailForward`(`account`, `forwardTo`) VALUES (1, 'employee@domain.local'); -INSERT INTO `vn`.`worker`(`id`, `code`, `firstName`, `lastName`, `userFk`,`bossFk`, `phone`) +INSERT INTO `vn`.`printer` (`id`, `name`, `path`, `isLabeler`) VALUES - (1106, 'LGN', 'David Charles', 'Haller', 1106, 19, 432978106), - (1107, 'ANT', 'Hank' , 'Pym' , 1107, 19, 432978107), - (1108, 'DCX', 'Charles' , 'Xavier', 1108, 19, 432978108), - (1109, 'HLK', 'Bruce' , 'Banner', 1109, 19, 432978109), - (1110, 'JJJ', 'Jessica' , 'Jones' , 1110, 19, 432978110); + (1, 'printer1', 'path1', 0), + (2, 'printer2', 'path2', 1); + + +INSERT INTO `vn`.`worker`(`id`, `code`, `firstName`, `lastName`, `userFk`,`bossFk`, `phone`, `sectorFk`, `labelerFk`) + VALUES + (1106, 'LGN', 'David Charles', 'Haller', 1106, 19, 432978106, NULL, NULL), + (1107, 'ANT', 'Hank' , 'Pym' , 1107, 19, 432978107, NULL, 1), + (1108, 'DCX', 'Charles' , 'Xavier', 1108, 19, 432978108, 1, NULL), + (1109, 'HLK', 'Bruce' , 'Banner', 1109, 19, 432978109, 1, 2), + (1110, 'JJJ', 'Jessica' , 'Jones' , 1110, 19, 432978110, 2, 1); INSERT INTO `vn`.`currency`(`id`, `code`, `name`, `ratio`) VALUES @@ -103,73 +125,89 @@ INSERT INTO `vn`.`currency`(`id`, `code`, `name`, `ratio`) (2, 'USD', 'Dollar USA', 1.4), (3, 'GBP', 'Libra', 1), (4, 'JPY', 'Yen Japones', 1); - -INSERT INTO `vn`.`country`(`id`, `country`, `isUeeMember`, `code`, `currencyFk`, `ibanLength`, `continentFk`, `hasDailyInvoice`, `CEE`) - VALUES - (1, 'España', 1, 'ES', 1, 24, 4, 0, 1), - (2, 'Italia', 1, 'IT', 1, 27, 4, 0, 1), - (3, 'Alemania', 1, 'DE', 1, 22, 4, 0, 1), - (4, 'Rumania', 1, 'RO', 1, 24, 4, 0, 1), - (5, 'Holanda', 1, 'NL', 1, 18, 4, 0, 1), - (8, 'Portugal', 1, 'PT', 1, 27, 4, 0, 1), - (13,'Ecuador', 0, 'EC', 1, 24, 2, 1, 2), - (19,'Francia', 1, 'FR', 1, 27, 4, 0, 1), - (30,'Canarias', 1, 'IC', 1, 24, 4, 1, 2); -INSERT INTO `hedera`.`language` (`code`, `name`, `orgName`, `isActive`) +INSERT INTO `vn`.`country`(`id`, `country`, `isUeeMember`, `code`, `currencyFk`, `ibanLength`, `continentFk`, `hasDailyInvoice`, `CEE`, `politicalCountryFk`) VALUES - ('ca', 'Català' , 'Catalan' , TRUE), - ('en', 'English' , 'English' , TRUE), - ('es', 'Español' , 'Spanish' , TRUE), - ('fr', 'Français' , 'French' , TRUE), - ('mn', 'Португалий', 'Mongolian' , TRUE), - ('pt', 'Português' , 'Portuguese', TRUE); + (1, 'España', 1, 'ES', 1, 24, 4, 0, 1, 1), + (2, 'Italia', 1, 'IT', 1, 27, 4, 0, 1, 2), + (3, 'Alemania', 1, 'DE', 1, 22, 4, 0, 1, 3), + (4, 'Rumania', 1, 'RO', 1, 24, 4, 0, 1, 4), + (5, 'Holanda', 1, 'NL', 1, 18, 4, 0, 1, 5), + (8, 'Portugal', 1, 'PT', 1, 27, 4, 0, 1, 8), + (13,'Ecuador', 0, 'EC', 1, 24, 2, 1, 2, 13), + (19,'Francia', 1, 'FR', 1, 27, 4, 0, 1, 19), + (30,'Canarias', 1, 'IC', 1, 24, 4, 1, 2, 30); INSERT INTO `vn`.`warehouseAlias`(`id`, `name`) VALUES (1, 'Main Warehouse'), - (2, 'Silla'); + (2, 'Gotham'); -INSERT INTO `vn`.`warehouse`(`id`, `name`, `code`, `isComparative`, `isInventory`, `hasAvailable`, `isManaged`, `hasStowaway`, `hasDms`, `hasComission`, `aliasFk`, `countryFk`, `hasProduction`) +INSERT INTO `vn`.`warehouse`(`id`, `name`, `code`, `isComparative`, `isInventory`, `hasAvailable`, `isManaged`, `hasDms`, `hasComission`, `aliasFk`, `countryFk`, `hasProduction`) VALUES - (1, 'Warehouse One', 'ALG', 1, 1, 1, 1, 1, 1, 1, 2, 1, 1), - (2, 'Warehouse Two', NULL, 1, 1, 1, 1, 0, 0, 1, 2, 13, 1), - (3, 'Warehouse Three', NULL, 1, 1, 1, 1, 0, 0, 0, 2, 1, 1), - (4, 'Warehouse Four', NULL, 1, 1, 1, 1, 0, 0, 0, 2, 1, 1), - (5, 'Warehouse Five', NULL, 1, 1, 1, 1, 0, 0, 0, 2, 1, 1), - (13, 'Inventory', NULL, 1, 1, 1, 0, 0, 0, 0, 2, 1, 0); + (1, 'Warehouse One', 'ALG', 1, 1, 1, 1, 1, 1, 2, 1, 1), + (2, 'Warehouse Two', NULL, 1, 1, 1, 1, 0, 1, 2, 13, 1), + (3, 'Warehouse Three', NULL, 1, 1, 1, 1, 0, 0, 2, 1, 1), + (4, 'Warehouse Four', NULL, 1, 1, 1, 1, 0, 0, 2, 1, 1), + (5, 'Warehouse Five', NULL, 1, 1, 1, 1, 0, 0, 2, 1, 1), + (13, 'Inventory', NULL, 1, 1, 1, 0, 0, 0, 2, 1, 0), + (60, 'Algemesi', NULL, 1, 1, 1, 0, 0, 0, 2, 1, 0); -INSERT INTO `vn`.`sector`(`id`, `description`, `warehouseFk`, `isPreviousPreparedByPacking`, `code`, `pickingPlacement`, `path`) + +INSERT INTO `vn`.`sector`(`id`, `description`, `warehouseFk`, `isPreviousPreparedByPacking`, `code`) VALUES - (1, 'First sector', 1, 1, 'FIRST', 999, 999), - (2, 'Second sector', 2, 0, 'SECOND', 100, 150); + (1, 'First sector', 1, 1, 'FIRST'), + (2, 'Second sector', 2, 0, 'SECOND'); -INSERT INTO `vn`.`parking` (`id`, `column`, `row`, `sectorFk`, `code`, `pickingOrder`) - VALUES - ('1', '700', '01', '1', '700-01', '70001'), - ('2', '700', '02', '2', '700-02', '70002'); +INSERT INTO `vn`.`parking` (`id`, `column`, `row`, `sectorFk`, `code`, `pickingOrder`) + VALUES + ('1', 700, '01', 1, '700-01', 70001), + ('2', 700, '02', 2, '700-02', 70002), + ('3', 100, '01', 1, '100-01', 1), + (32397, 100, '02', 1, 'A-47-1', 1165), + (34831, 200, '01', 1, 'K-26-2', 20220), + (34965, 200, '02', 2, 'L-08-4', 21800), + (39096, 200, '03', 2, 'LR-02-3', 99999); -INSERT INTO `vn`.`shelving` (`code`, `parkingFk`, `isPrinted`, `priority`, `parked`, `userFk`) - VALUES - ('GVC', '1', '0', '1', '0', '1106'), - ('HEJ', '2', '0', '1', '0', '1106'); +INSERT INTO `vn`.`shelving` (`code`, `parkingFk`, `isPrinted`, `priority`, `userFk`, `isRecyclable`) + VALUES + ('AA6', 34965, 1, 0, NULL, 0), + ('AA7', 34965, 1, 0, NULL, 0), + ('AA8', 34965, 1, 0, NULL, 0), + ('AA9', NULL, 1, 0, NULL, 0), + ('AAA', NULL, 0, 0, 1109, 1), + ('AAB', NULL, 0, 0, 1109, 1), + ('AAC', NULL, 1, 99, 1109, 1), + ('AAD', NULL, 0, 0, 1109, 1), + ('AAE', 39096, 1, 0, 1109, 1), + ('AAF', 34831, 1, 0, 1109, 1), + ('GVC', 1, 0, 1, 1106, 1), + ('HEJ', 2, 0, 1, 1106, 1), + ('UXN', 1, 0, 1, 1106, 1); + +INSERT INTO `vn`.`accountingType`(`id`, `description`, `receiptDescription`,`code`, `maxAmount`, `daysInFuture`) + VALUES + (1, 'CC and credit policies', 'Transfers', 'wireTransfer', NULL, 1), + (2, 'Cash', 'Cash', 'cash', 1000, 0), + (3, 'Credit card', 'Credit Card', 'creditCard', NULL, 0), + (4, 'Finalcial lines', NULL, NULL, NULL, 0), + (5, 'Other products', NULL, NULL, NULL, 0), + (6, 'Loans', NULL, NULL, NULL, 0), + (7, 'Leasing', NULL, NULL, NULL, 0), + (8, 'Compensations', 'Compensations', 'compensation', NULL, 0); + +INSERT INTO `vn`.`bankEntity`(`id`, `countryFk`, `name`, `bic`) + VALUES + (128, 1, 'The Best Bank', 'BBKKESMMMMMM'), + (2100, 1, 'Caixa Bank', 'CAIXESBB'); -INSERT INTO `vn`.`accountingType`(`id`, `description`, `receiptDescription`,`code`, `maxAmount`) - VALUES - (1, 'CC y Polizas de crédito', NULL, NULL, NULL), - (2, 'Cash', 'Cash', 'cash', 1000), - (3, 'Credit card', 'Credit Card', 'creditCard', NULL), - (4, 'Finalcial lines', NULL, NULL, NULL), - (5, 'Other products', NULL, NULL, NULL), - (6, 'Loans', NULL, NULL, NULL), - (7, 'Leasing', NULL, NULL, NULL), - (8, 'Compensations', 'Compensations', 'compensation', NULL); - INSERT INTO `vn`.`bank`(`id`, `bank`, `account`, `cash`, `entityFk`, `isActive`, `currencyFk`) - VALUES - (1, 'Pay on receipt', '5720000001', 3, 0, 1, 1), - (2, 'Cash', '5700000001', 2, 0, 1, 1), - (3, 'Compensation', '4000000000', 8, 0, 1, 1); + VALUES + (1, 'Pay on receipt', '5720000001', 3, 128, 1, 1), + (2, 'Cash', '5700000001', 2, 128, 1, 1), + (3, 'Compensation', '4000000000', 8, 128, 1, 1), + (4, 'Transfers', '4000000001', 1, 128, 1, 1), + (3117, 'Caixa Rural d''Algemesi', '5720000000', 8, 2100, 1, 1); INSERT INTO `vn`.`deliveryMethod`(`id`, `code`, `description`) VALUES @@ -178,18 +216,18 @@ INSERT INTO `vn`.`deliveryMethod`(`id`, `code`, `description`) (3, 'PICKUP', 'Recogida'), (4, 'OTHER', 'Otros'); -INSERT INTO `vn`.`agency`(`id`, `name`, `warehouseFk`, `isVolumetric`, `bankFk`, `warehouseAliasFk`) +INSERT INTO `vn`.`agency`(`id`, `name`, `warehouseFk`, `bankFk__`, `warehouseAliasFk`) VALUES - (1, 'inhouse pickup' , 1, 0, 1, 1), - (2, 'Super-Man delivery' , 1, 0, 1, 1), - (3, 'Teleportation device' , 1, 0, 1, 1), - (4, 'Entanglement' , 1, 0, 1, 1), - (5, 'Quantum break device' , 1, 0, 1, 1), - (6, 'Walking' , 1, 0, 1, 1), - (7, 'Silla247' , 1, 0, 1, 1), - (8, 'Silla247Expensive' , 1, 0, 1, 1), - (9, 'Refund' , 1, 0, 1, 1), - (10, 'Other agency' , 1, 0, 1, 1); + (1, 'inhouse pickup' , 1, 1, 1), + (2, 'Super-Man delivery' , 1, 1, 1), + (3, 'Teleportation device' , 1, 1, 1), + (4, 'Entanglement' , 1, 1, 1), + (5, 'Quantum break device' , 1, 1, 1), + (6, 'Walking' , 1, 1, 1), + (7, 'Gotham247' , 1, 1, 1), + (8, 'Gotham247Expensive' , 1, 1, 1), + (9, 'Refund' , 1, 1, 1), + (10, 'Other agency' , 1, 1, 1); UPDATE `vn`.`agencyMode` SET `id` = 1 WHERE `name` = 'inhouse pickup'; UPDATE `vn`.`agencyMode` SET `id` = 2 WHERE `name` = 'Super-Man delivery'; @@ -197,8 +235,8 @@ UPDATE `vn`.`agencyMode` SET `id` = 3 WHERE `name` = 'Teleportation device'; UPDATE `vn`.`agencyMode` SET `id` = 4 WHERE `name` = 'Entanglement'; UPDATE `vn`.`agencyMode` SET `id` = 5 WHERE `name` = 'Quantum break device'; UPDATE `vn`.`agencyMode` SET `id` = 6 WHERE `name` = 'Walking'; -UPDATE `vn`.`agencyMode` SET `id` = 7 WHERE `name` = 'Silla247'; -UPDATE `vn`.`agencyMode` SET `id` = 8 WHERE `name` = 'Silla247Expensive'; +UPDATE `vn`.`agencyMode` SET `id` = 7 WHERE `name` = 'Gotham247'; +UPDATE `vn`.`agencyMode` SET `id` = 8 WHERE `name` = 'Gotham247Expensive'; UPDATE `vn`.`agencyMode` SET `id` = 23 WHERE `name` = 'Refund'; UPDATE `vn`.`agencyMode` SET `id` = 10 WHERE `name` = 'Other agency'; @@ -218,7 +256,7 @@ UPDATE `vn`.`agencyMode` SET `web` = 1, `reportMail` = 'no-reply@gothamcity.com' UPDATE `vn`.`agencyMode` SET `code` = 'refund' WHERE `id` = 23; INSERT INTO `vn`.`payMethod`(`id`,`code`, `name`, `graceDays`, `outstandingDebt`, `isIbanRequiredForClients`, `isIbanRequiredForSuppliers`, `hasVerified`) - VALUES + VALUES (1, NULL, 'PayMethod one', 0, 001, 0, 0, 0), (2, NULL, 'PayMethod two', 10, 001, 0, 0, 1), (3, 'compensation', 'PayMethod three', 0, 001, 0, 0, 0), @@ -227,7 +265,7 @@ INSERT INTO `vn`.`payMethod`(`id`,`code`, `name`, `graceDays`, `outstandingDebt (8,'wireTransfer', 'WireTransfer', 5, 001, 1, 1, 0); INSERT INTO `vn`.`payDem`(`id`, `payDem`) - VALUES + VALUES (1, 10), (2, 20); @@ -250,13 +288,13 @@ INSERT INTO `vn`.`province`(`id`, `name`, `countryFk`, `autonomyFk`, `warehouseF INSERT INTO `vn`.`town`(`id`, `name`, `provinceFk`) VALUES (1, 'Valencia', 1), - (2, 'Silla', 1), + (2, 'Gotham', 1), (3, 'Algemesi', 1), (4, 'Alzira', 1), (5, 'Quito', 5); INSERT INTO `vn`.`postCode`(`code`, `townFk`, `geoFk`) - VALUES + VALUES ('46000', 1, 6), ('46460', 2, 6), ('46680', 3, 6), @@ -284,82 +322,82 @@ INSERT INTO `vn`.`contactChannel`(`id`, `name`) INSERT INTO `vn`.`client`(`id`,`name`,`fi`,`socialName`,`contact`,`street`,`city`,`postcode`,`phone`,`mobile`,`isRelevant`,`email`,`iban`,`dueDay`,`accountingAccount`,`isEqualizated`,`provinceFk`,`hasToInvoice`,`credit`,`countryFk`,`isActive`,`gestdocFk`,`quality`,`payMethodFk`,`created`,`isToBeMailed`,`contactChannelFk`,`hasSepaVnl`,`hasCoreVnl`,`hasCoreVnh`,`riskCalculated`,`clientTypeFk`,`mailAddress`,`hasToInvoiceByAddress`,`isTaxDataChecked`,`isFreezed`,`creditInsurance`,`isCreatedAsServed`,`hasInvoiceSimplified`,`salesPersonFk`,`isVies`,`eypbc`, `businessTypeFk`) VALUES - (1101, 'Bruce Wayne', '84612325V', 'Batman', 'Alfred', '1007 Mountain Drive, Gotham', 'Silla', 46460, 1111111111, 222222222, 1, 'BruceWayne@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'), - (1102, 'Petter Parker', '87945234L', 'Spider man', 'Aunt May', '20 Ingram Street, Queens, USA', 'Silla', 46460, 1111111111, 222222222, 1, 'PetterParker@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'), - (1103, 'Clark Kent', '06815934E', 'Super man', 'lois lane', '344 Clinton Street, Apartament 3-D', 'Silla', 46460, 1111111111, 222222222, 1, 'ClarkKent@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 0, 19, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'), - (1104, 'Tony Stark', '06089160W', 'Iron man', 'Pepper Potts', '10880 Malibu Point, 90265', 'Silla', 46460, 1111111111, 222222222, 1, 'TonyStark@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'), - (1105, 'Max Eisenhardt', '251628698', 'Magneto', 'Rogue', 'Unknown Whereabouts', 'Silla', 46460, 1111111111, 222222222, 1, 'MaxEisenhardt@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 8, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, 1, NULL, 0, 0, 18, 0, 1, 'florist'), - (1106, 'DavidCharlesHaller', '53136686Q', 'Legion', 'Charles Xavier', 'City of New York, New York, USA', 'Silla', 46460, 1111111111, 222222222, 1, 'DavidCharlesHaller@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 0, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, 0, NULL, 0, 0, 19, 0, 1, 'florist'), - (1107, 'Hank Pym', '09854837G', 'Ant man', 'Hawk', 'Anthill, San Francisco, California', 'Silla', 46460, 1111111111, 222222222, 1, 'HankPym@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 0, 0, NULL, 0, 0, 19, 0, 1, 'florist'), - (1108, 'Charles Xavier', '22641921P', 'Professor X', 'Beast', '3800 Victory Pkwy, Cincinnati, OH 45207, USA', 'Silla', 46460, 1111111111, 222222222, 1, 'CharlesXavier@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, 1, NULL, 0, 0, 19, 0, 1, 'florist'), - (1109, 'Bruce Banner', '16104829E', 'Hulk', 'Black widow', 'Somewhere in New York', 'Silla', 46460, 1111111111, 222222222, 1, 'BruceBanner@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 0, 0, NULL, 0, 0, 9, 0, 1, 'florist'), - (1110, 'Jessica Jones', '58282869H', 'Jessica Jones', 'Luke Cage', 'NYCC 2015 Poster', 'Silla', 46460, 1111111111, 222222222, 1, 'JessicaJones@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 0, 0, NULL, 0, 0, NULL, 0, 1, 'florist'), - (1111, 'Missing', NULL, 'Missing man', 'Anton', 'The space, Universe far away', 'Silla', 46460, 1111111111, 222222222, 1, NULL, NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 4, 1, 0, 1, 0, NULL, 1, 0, NULL, 0, 1, NULL), - (1112, 'Trash', NULL, 'Garbage man', 'Unknown name', 'New York city, Underground', 'Silla', 46460, 1111111111, 222222222, 1, NULL, NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 4, 1, 0, 1, 0, NULL, 1, 0, NULL, 0, 1, NULL); + (1101, 'Bruce Wayne', '84612325V', 'Batman', 'Alfred', '1007 Mountain Drive, Gotham', 'Gotham', 46460, 1111111111, 222222222, 1, 'BruceWayne@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'), + (1102, 'Petter Parker', '87945234L', 'Spider man', 'Aunt May', '20 Ingram Street, Queens, USA', 'Gotham', 46460, 1111111111, 222222222, 1, 'PetterParker@mydomain.com', NULL, 0, 1234567890, 0, 2, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'), + (1103, 'Clark Kent', '06815934E', 'Super man', 'lois lane', '344 Clinton Street, Apartament 3-D', 'Gotham', 46460, 1111111111, 222222222, 1, 'ClarkKent@mydomain.com', NULL, 0, 1234567890, 0, 3, 1, 0, 19, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'), + (1104, 'Tony Stark', '06089160W', 'Iron man', 'Pepper Potts', '10880 Malibu Point, 90265', 'Gotham', 46460, 1111111111, 222222222, 1, 'TonyStark@mydomain.com', NULL, 0, 1234567890, 0, 2, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1, 'florist'), + (1105, 'Max Eisenhardt', '251628698', 'Magneto', 'Rogue', 'Unknown Whereabouts', 'Gotham', 46460, 1111111111, 222222222, 1, 'MaxEisenhardt@mydomain.com', NULL, 0, 1234567890, 0, 3, 1, 300, 8, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, 1, NULL, 0, 0, 18, 0, 1, 'florist'), + (1106, 'DavidCharlesHaller', '53136686Q', 'Legion', 'Charles Xavier', 'City of New York, New York, USA', 'Gotham', 46460, 1111111111, 222222222, 1, 'DavidCharlesHaller@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 0, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, 0, NULL, 0, 0, 19, 0, 1, 'florist'), + (1107, 'Hank Pym', '09854837G', 'Ant man', 'Hawk', 'Anthill, San Francisco, California', 'Gotham', 46460, 1111111111, 222222222, 1, 'HankPym@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 0, 0, NULL, 0, 0, 19, 0, 1, 'florist'), + (1108, 'Charles Xavier', '22641921P', 'Professor X', 'Beast', '3800 Victory Pkwy, Cincinnati, OH 45207, USA', 'Gotham', 46460, 1111111111, 222222222, 1, 'CharlesXavier@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 1, 1, NULL, 0, 0, 19, 0, 1, 'florist'), + (1109, 'Bruce Banner', '16104829E', 'Hulk', 'Black widow', 'Somewhere in New York', 'Gotham', 46460, 1111111111, 222222222, 1, 'BruceBanner@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 0, 0, NULL, 0, 0, 9, 0, 1, 'florist'), + (1110, 'Jessica Jones', '58282869H', 'Jessica Jones', 'Luke Cage', 'NYCC 2015 Poster', 'Gotham', 46460, 1111111111, 222222222, 1, 'JessicaJones@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, 1, 1, 0, 0, NULL, 0, 0, NULL, 0, 1, 'florist'), + (1111, 'Missing', NULL, 'Missing man', 'Anton', 'The space, Universe far away', 'Gotham', 46460, 1111111111, 222222222, 1, NULL, NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 4, 1, 0, 1, 0, NULL, 1, 0, NULL, 0, 1, NULL), + (1112, 'Trash', NULL, 'Garbage man', 'Unknown name', 'New York city, Underground', 'Gotham', 46460, 1111111111, 222222222, 1, NULL, NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5, util.VN_CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 4, 1, 0, 1, 0, NULL, 1, 0, NULL, 0, 1, NULL); INSERT INTO `vn`.`client`(`id`, `name`, `fi`, `socialName`, `contact`, `street`, `city`, `postcode`, `isRelevant`, `email`, `iban`,`dueDay`,`accountingAccount`, `isEqualizated`, `provinceFk`, `hasToInvoice`, `credit`, `countryFk`, `isActive`, `gestdocFk`, `quality`, `payMethodFk`,`created`, `isTaxDataChecked`) - SELECT id, name, CONCAT(RPAD(CONCAT(id,9),8,id),'A'), CONCAT(name, 'Social'), CONCAT(name, 'Contact'), CONCAT(name, 'Street'), 'SILLA', 46460, 1, CONCAT(name,'@mydomain.com'), NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1,NULL, 10, 5, CURDATE(), 1 + SELECT id, name, CONCAT(RPAD(CONCAT(id,9),8,id),'A'), CONCAT(name, 'Social'), CONCAT(name, 'Contact'), CONCAT(name, 'Street'), 'GOTHAM', 46460, 1, CONCAT(name,'@mydomain.com'), NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1,NULL, 10, 5, util.VN_CURDATE(), 1 FROM `account`.`role` `r` WHERE `r`.`hasLogin` = 1; INSERT INTO `vn`.`clientManaCache`(`clientFk`, `mana`, `dated`) VALUES - (1101, 50, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (1102, 100, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (1103, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (1104, -30, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)); + (1101, 50, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (1102, 100, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (1103, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (1104, -30, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)); -INSERT INTO `vn`.`clientConfig`(`riskTolerance`) +INSERT INTO `vn`.`clientConfig`(`riskTolerance`, `maxCreditRows`) VALUES - (200); + (200, 10); INSERT INTO `vn`.`address`(`id`, `nickname`, `street`, `city`, `postalCode`, `provinceFk`, `phone`, `mobile`, `isActive`, `clientFk`, `agencyModeFk`, `longitude`, `latitude`, `isEqualizated`, `isDefaultAddress`) VALUES - (1, 'Bruce Wayne', '1007 Mountain Drive, Gotham', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1101, 2, NULL, NULL, 0, 1), - (2, 'Petter Parker', '20 Ingram Street', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1102, 2, NULL, NULL, 0, 1), - (3, 'Clark Kent', '344 Clinton Street', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1103, 2, NULL, NULL, 0, 1), - (4, 'Tony Stark', '10880 Malibu Point', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1104, 2, NULL, NULL, 0, 1), - (5, 'Max Eisenhardt', 'Unknown Whereabouts', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1105, 2, NULL, NULL, 0, 1), - (6, 'DavidCharlesHaller', 'Evil hideout', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1106, 2, NULL, NULL, 0, 1), - (7, 'Hank Pym', 'Anthill', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1107, 2, NULL, NULL, 0, 1), - (8, 'Charles Xavier', '3800 Victory Pkwy, Cincinnati, OH 45207, USA', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1108, 2, NULL, NULL, 0, 1), - (9, 'Bruce Banner', 'Somewhere in New York', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 1), - (10, 'Jessica Jones', 'NYCC 2015 Poster', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1110, 2, NULL, NULL, 0, 1), - (11, 'Missing', 'The space', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1111, 10, NULL, NULL, 0, 1), - (12, 'Trash', 'New York city', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1112, 10, NULL, NULL, 0, 1), - (101, 'Somewhere in Thailand', 'address 01', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (102, 'Somewhere in Poland', 'address 02', 'Silla', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0), - (103, 'Somewhere in Japan', 'address 03', 'Silla', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0), - (104, 'Somewhere in Spain', 'address 04', 'Silla', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0), - (105, 'Somewhere in Potugal', 'address 05', 'Silla', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0), - (106, 'Somewhere in UK', 'address 06', 'Silla', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0), - (107, 'Somewhere in Valencia', 'address 07', 'Silla', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0), - (108, 'Somewhere in Silla', 'address 08', 'Silla', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0), - (109, 'Somewhere in London', 'address 09', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (110, 'Somewhere in Algemesi', 'address 10', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (111, 'Somewhere in Carlet', 'address 11', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (112, 'Somewhere in Campanar', 'address 12', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (113, 'Somewhere in Malilla', 'address 13', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (114, 'Somewhere in France', 'address 14', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (115, 'Somewhere in Birmingham', 'address 15', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (116, 'Somewhere in Scotland', 'address 16', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (117, 'Somewhere in nowhere', 'address 17', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (118, 'Somewhere over the rainbow', 'address 18', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (119, 'Somewhere in Alberic', 'address 19', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (120, 'Somewhere in Montortal', 'address 20', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), - (121, 'the bat cave', 'address 21', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1101, 2, NULL, NULL, 0, 0), - (122, 'NY roofs', 'address 22', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1102, 2, NULL, NULL, 0, 0), - (123, 'The phone box', 'address 23', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1103, 2, NULL, NULL, 0, 0), - (124, 'Stark tower Silla', 'address 24', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1104, 2, NULL, NULL, 0, 0), - (125, 'The plastic cell', 'address 25', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1105, 2, NULL, NULL, 0, 0), - (126, 'Many places', 'address 26', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1106, 2, NULL, NULL, 0, 0), - (127, 'Your pocket', 'address 27', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1107, 2, NULL, NULL, 0, 0), - (128, 'Cerebro', 'address 28', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1108, 2, NULL, NULL, 0, 0), - (129, 'Luke Cages Bar', 'address 29', 'Silla', 46460, 1, 1111111111, 222222222, 1, 1110, 2, NULL, NULL, 0, 0), - (130, 'Non valid address', 'address 30', 'Silla', 46460, 1, 1111111111, 222222222, 0, 1101, 2, NULL, NULL, 0, 0); + (1, 'Bruce Wayne', '1007 Mountain Drive, Gotham', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1101, 2, NULL, NULL, 0, 1), + (2, 'Petter Parker', '20 Ingram Street', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1102, 2, NULL, NULL, 0, 1), + (3, 'Clark Kent', '344 Clinton Street', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1103, 2, NULL, NULL, 0, 1), + (4, 'Tony Stark', '10880 Malibu Point', 'Gotham', 46460, 1, 1111111111, 222222222, 1 , 1104, 2, NULL, NULL, 0, 1), + (5, 'Max Eisenhardt', 'Unknown Whereabouts', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1105, 2, NULL, NULL, 0, 1), + (6, 'DavidCharlesHaller', 'Evil hideout', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1106, 2, NULL, NULL, 0, 1), + (7, 'Hank Pym', 'Anthill', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1107, 2, NULL, NULL, 0, 1), + (8, 'Charles Xavier', '3800 Victory Pkwy, Cincinnati, OH 45207, USA', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1108, 2, NULL, NULL, 0, 1), + (9, 'Bruce Banner', 'Somewhere in New York', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 1), + (10, 'Jessica Jones', 'NYCC 2015 Poster', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1110, 2, NULL, NULL, 0, 1), + (11, 'Missing', 'The space', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1111, 10, NULL, NULL, 0, 1), + (12, 'Trash', 'New York city', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1112, 10, NULL, NULL, 0, 1), + (101, 'Somewhere in Thailand', 'address 01', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (102, 'Somewhere in Poland', 'address 02', 'Gotham', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0), + (103, 'Somewhere in Japan', 'address 03', 'Gotham', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0), + (104, 'Somewhere in Spain', 'address 04', 'Gotham', 46460, 1, 3333333333, 444444444, 1, 1109, 2, NULL, NULL, 0, 0), + (105, 'Somewhere in Potugal', 'address 05', 'Gotham', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0), + (106, 'Somewhere in UK', 'address 06', 'Gotham', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0), + (107, 'Somewhere in Valencia', 'address 07', 'Gotham', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0), + (108, 'Somewhere in Gotham', 'address 08', 'Gotham', 46460, 1, 5555555555, 666666666, 1, 1109, 2, NULL, NULL, 0, 0), + (109, 'Somewhere in London', 'address 09', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (110, 'Somewhere in Algemesi', 'address 10', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (111, 'Somewhere in Carlet', 'address 11', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (112, 'Somewhere in Campanar', 'address 12', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (113, 'Somewhere in Malilla', 'address 13', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (114, 'Somewhere in France', 'address 14', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (115, 'Somewhere in Birmingham', 'address 15', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (116, 'Somewhere in Scotland', 'address 16', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (117, 'Somewhere in nowhere', 'address 17', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (118, 'Somewhere over the rainbow', 'address 18', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (119, 'Somewhere in Alberic', 'address 19', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (120, 'Somewhere in Montortal', 'address 20', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1109, 2, NULL, NULL, 0, 0), + (121, 'the bat cave', 'address 21', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1101, 2, NULL, NULL, 0, 0), + (122, 'NY roofs', 'address 22', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1102, 2, NULL, NULL, 0, 0), + (123, 'The phone box', 'address 23', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1103, 2, NULL, NULL, 0, 0), + (124, 'Stark tower Gotham', 'address 24', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1104, 2, NULL, NULL, 0, 0), + (125, 'The plastic cell', 'address 25', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1105, 2, NULL, NULL, 0, 0), + (126, 'Many places', 'address 26', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1106, 2, NULL, NULL, 0, 0), + (127, 'Your pocket', 'address 27', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1107, 2, NULL, NULL, 0, 0), + (128, 'Cerebro', 'address 28', 'Gotham', 46460, 1, 1111111111, 222222222, 1, 1108, 2, NULL, NULL, 0, 0), + (129, 'Luke Cages Bar', 'address 29', 'Gotham', 'EC170150', 1, 1111111111, 222222222, 1, 1110, 2, NULL, NULL, 0, 0), + (130, 'Non valid address', 'address 30', 'Gotham', 46460, 1, 1111111111, 222222222, 0, 1101, 2, NULL, NULL, 0, 0); INSERT INTO `vn`.`address`( `nickname`, `street`, `city`, `postalCode`, `provinceFk`, `isActive`, `clientFk`, `agencyModeFk`, `isDefaultAddress`) - SELECT name, CONCAT(name, 'Street'), 'SILLA', 46460, 1, 1, id, 2, 1 + SELECT name, CONCAT(name, 'Street'), 'GOTHAM', 46460, 1, 1, id, 2, 1 FROM `account`.`role` `r` WHERE `r`.`hasLogin` = 1; @@ -389,20 +427,20 @@ DROP TEMPORARY TABLE tmp.address; INSERT INTO `vn`.`clientCredit`(`id`, `clientFk`, `workerFk`, `amount`, `created`) VALUES - (1 , 1101, 5, 300, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (2 , 1101, 5, 900, DATE_ADD(CURDATE(), INTERVAL -2 MONTH)), - (3 , 1101, 5, 800, DATE_ADD(CURDATE(), INTERVAL -3 MONTH)), - (4 , 1101, 5, 700, DATE_ADD(CURDATE(), INTERVAL -4 MONTH)), - (5 , 1101, 5, 600, DATE_ADD(CURDATE(), INTERVAL -5 MONTH)), - (6 , 1101, 5, 500, DATE_ADD(CURDATE(), INTERVAL -6 MONTH)), - (7 , 1101, 5, 400, DATE_ADD(CURDATE(), INTERVAL -7 MONTH)), - (8 , 1101, 9, 300, DATE_ADD(CURDATE(), INTERVAL -8 MONTH)), - (9 , 1101, 9, 200, DATE_ADD(CURDATE(), INTERVAL -9 MONTH)), - (10, 1101, 9, 100, DATE_ADD(CURDATE(), INTERVAL -10 MONTH)), - (11, 1101, 9, 50 , DATE_ADD(CURDATE(), INTERVAL -11 MONTH)), - (12, 1102, 9, 800, CURDATE()), - (14, 1104, 9, 90 , CURDATE()), - (15, 1105, 9, 90 , CURDATE()); + (1 , 1101, 5, 300, DATE_ADD(util.VN_CURDATE(), INTERVAL -11 MONTH)), + (2 , 1101, 5, 900, DATE_ADD(util.VN_CURDATE(), INTERVAL -10 MONTH)), + (3 , 1101, 5, 800, DATE_ADD(util.VN_CURDATE(), INTERVAL -9 MONTH)), + (4 , 1101, 5, 700, DATE_ADD(util.VN_CURDATE(), INTERVAL -8 MONTH)), + (5 , 1101, 5, 600, DATE_ADD(util.VN_CURDATE(), INTERVAL -7 MONTH)), + (6 , 1101, 5, 500, DATE_ADD(util.VN_CURDATE(), INTERVAL -6 MONTH)), + (7 , 1101, 5, 400, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 MONTH)), + (8 , 1101, 9, 300, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH)), + (9 , 1101, 9, 200, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH)), + (10, 1101, 9, 100, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH)), + (11, 1101, 9, 50 , DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (12, 1102, 9, 800, util.VN_CURDATE()), + (14, 1104, 9, 90 , util.VN_CURDATE()), + (15, 1105, 9, 90 , util.VN_CURDATE()); INSERT INTO `vn`.`clientCreditLimit`(`id`, `maxAmount`, `roleFk`) VALUES @@ -412,16 +450,16 @@ INSERT INTO `vn`.`clientCreditLimit`(`id`, `maxAmount`, `roleFk`) INSERT INTO `vn`.`clientObservation`(`id`, `clientFk`, `workerFk`, `text`, `created`) VALUES - (1, 1101, 1, 'Madness, as you know, is like gravity, all it takes is a little push', CURDATE()), - (2, 1102, 1, 'With great power, comes great responsibility', CURDATE()), - (3, 1103, 3, 'this is a job for Super-Man!', CURDATE()), - (4, 1104, 3, 'yes... I am Iron-Man', CURDATE()), - (5, 1105, 5, 'They do understand. Our mutant powers make us superior', CURDATE()), - (6, 1106, 5, 'My name is Legion, for we are many!', CURDATE()), - (7, 1107, 9, 'I think our first move should be calling the Avengers..', CURDATE()), - (8, 1108, 9, 'Just because someone stumbles and loses their path, does not mean they are lost forever.', CURDATE()), - (9, 1109, 18, 'HULK SMASH! ...', CURDATE()), - (10, 1110, 18, 'They say everyone is born a hero. But if you let it, life will push you over the line until you are the villain.', CURDATE()); + (1, 1101, 1, 'Madness, as you know, is like gravity, all it takes is a little push', util.VN_CURDATE()), + (2, 1102, 1, 'With great power, comes great responsibility', util.VN_CURDATE()), + (3, 1103, 3, 'this is a job for Super-Man!', util.VN_CURDATE()), + (4, 1104, 3, 'yes... I am Iron-Man', util.VN_CURDATE()), + (5, 1105, 5, 'They do understand. Our mutant powers make us superior', util.VN_CURDATE()), + (6, 1106, 5, 'My name is Legion, for we are many!', util.VN_CURDATE()), + (7, 1107, 9, 'I think our first move should be calling the Avengers..', util.VN_CURDATE()), + (8, 1108, 9, 'Just because someone stumbles and loses their path, does not mean they are lost forever.', util.VN_CURDATE()), + (9, 1109, 18, 'HULK SMASH! ...', util.VN_CURDATE()), + (10, 1110, 18, 'They say everyone is born a hero. But if you let it, life will push you over the line until you are the villain.', util.VN_CURDATE()); INSERT INTO `vn`.`observationType`(`id`,`description`, `code`) VALUES @@ -441,27 +479,51 @@ INSERT INTO `vn`.`addressObservation`(`id`,`addressFk`,`observationTypeFk`,`desc INSERT INTO `vn`.`creditClassification`(`id`, `client`, `dateStart`, `dateEnd`) VALUES - (1, 1101, CURDATE(), CURDATE()), - (2, 1102, CURDATE(), CURDATE()), - (3, 1103, CURDATE(), CURDATE()), - (4, 1104, CURDATE(), CURDATE()), - (5, 1105, CURDATE(), CURDATE()); + (1, 1101, util.VN_CURDATE(), util.VN_CURDATE()), + (2, 1102, util.VN_CURDATE(), util.VN_CURDATE()), + (3, 1103, util.VN_CURDATE(), util.VN_CURDATE()), + (4, 1104, util.VN_CURDATE(), util.VN_CURDATE()), + (5, 1105, util.VN_CURDATE(), util.VN_CURDATE()); -INSERT INTO `vn`.`creditInsurance`(`id`, `creditClassification`, `credit`, `creationDate`, `grade`) +INSERT INTO `vn`.`creditInsurance`(`id`, `creditClassificationFk`, `credit`, `creationDate`, `grade`) VALUES - (1, 1, 3000, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), NULL), - (2, 2, 6000, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), NULL), - (3, 3, 10000, DATE_ADD(CURDATE(), INTERVAL -3 MONTH), NULL); + (1, 1, 3000, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), NULL), + (2, 2, 6000, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), NULL), + (3, 3, 10000, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), NULL); INSERT INTO `vn`.`companyGroup`(`id`, `code`) VALUES (1, 'wayneIndustries'), (2, 'verdnatura'); - -INSERT INTO `vn`.`bankEntity`(`id`, `countryFk`, `name`, `bic`) + +INSERT INTO `vn`.`supplierActivity`(`code`, `name`) VALUES - (128, 1, 'The Best Bank', 'BBKKESMMMMMM'), - (2100, 1, 'Caixa Bank', 'CAIXESBB'); + ('animals', 'Food and complements for pets'), + ('complements', 'Other complements'), + ('flowerPlants', 'Wholesale of flowers and plants'), + ('vegetablesFruits', 'Fruit and vegetable trade'); + +INSERT INTO `vn`.`supplierAddress`(`id`, `supplierFk`, `nickname`, `street`, `provinceFk`, `postalCode`, `city`, `phone`, `mobile`) + VALUES + (1, 1, 'Ace Chemicals', 'The Midtown', 1, '46000', 'Gotham', '111111111', '222222222'), + (2, 1, 'Arkham Asylum', 'Grand Avenue', 1, '46000', 'Gotham', '111111111', '222222222'), + (3, 2, 'Wayne Tower', 'Grand Avenue', 1, '46000', 'Gotham', '111111111', '222222222'), + (4, 2, 'Bank of Gotham', 'Founders Island', 1, '46000', 'Gotham', '111111111', '222222222'), + (5, 442, 'GCR building', 'Bristol district', 1, '46000', 'Gotham', '111111111', '222222222'), + (6, 442, 'The Gotham Tonight building', 'Bristol district', 1, '46000', 'Gotham', '111111111', '222222222'); + +INSERT INTO `vn`.`supplier`(`id`, `name`, `nickname`,`account`,`countryFk`,`nif`, `commission`, `created`, `isActive`, `street`, `city`, `provinceFk`, `postCode`, `payMethodFk`, `payDemFk`, `payDay`, `taxTypeSageFk`, `withholdingSageFk`, `transactionTypeSageFk`, `workerFk`, `supplierActivityFk`, `isPayMethodChecked`, `healthRegister`) + VALUES + (1, 'Plants SL', 'Plants nick', 4100000001, 1, '06089160W', 0, util.VN_CURDATE(), 1, 'supplier address 1', 'PONTEVEDRA', 1, 15214, 1, 1, 15, 4, 1, 1, 18, 'flowerPlants', 1, '400664487V'), + (2, 'Farmer King', 'The farmer', 4000020002, 1, '87945234L', 0, util.VN_CURDATE(), 1, 'supplier address 2', 'GOTHAM', 2, 43022, 1, 2, 10, 93, 2, 8, 18, 'animals', 1, '400664487V'), + (442, 'Verdnatura Levante SL', 'Verdnatura', 5115000442, 1, '06815934E', 0, util.VN_CURDATE(), 1, 'supplier address 3', 'GOTHAM', 1, 43022, 1, 2, 15, 6, 9, 3, 18, 'complements', 1, '400664487V'); + +INSERT INTO `vn`.`supplierContact`(`id`, `supplierFk`, `phone`, `mobile`, `email`, `observation`, `name`) + VALUES + (1, 1, 123121212, 654789123, 'supplier1@email.es', 'observation1', 'the boss'), + (2, 1, 987456132, NULL, NULL, NULL, 'the salesperson'), + (3, 2, 321654987, NULL, 'supplier2@email.es', NULL, NULL), + (4, 442, 321654987, NULL, NULL, 'observation442', NULL); INSERT INTO `vn`.`supplierAccount`(`id`, `supplierFk`, `iban`, `bankEntityFk`) VALUES @@ -473,7 +535,7 @@ INSERT INTO `vn`.`company`(`id`, `code`, `supplierAccountFk`, `workerManagerFk`, (442 , 'VNL', 241, 30, 2 , 1, NULL, 2, 'VNL Company - Plant passport'), (567 , 'VNH', NULL, 30, NULL, 4, NULL, 1, 'VNH Company - Plant passport'), (791 , 'FTH', NULL, 30, NULL, 3, '2015-11-30', 1, NULL), - (1381, 'ORN', NULL, 30, NULL, 7, NULL, 1, 'ORN Company - Plant passport'); + (1381, 'ORN', NULL, 30, NULL, 7, NULL, 1, 'ORN Company - Plant passport'); INSERT INTO `vn`.`taxArea` (`code`, `claveOperacionFactura`, `CodigoTransaccion`) VALUES @@ -493,11 +555,11 @@ INSERT INTO `vn`.`invoiceOutSerial` (`code`, `description`, `isTaxed`, `taxAreaF INSERT INTO `vn`.`invoiceOut`(`id`, `serial`, `amount`, `issued`,`clientFk`, `created`, `companyFk`, `dued`, `booked`, `bankFk`, `hasPdf`) VALUES - (1, 'T', 1014.24, CURDATE(), 1101, CURDATE(), 442, CURDATE(), CURDATE(), 1, 0), - (2, 'T', 121.36, CURDATE(), 1102, CURDATE(), 442, CURDATE(), CURDATE(), 1, 0), - (3, 'T', 8.88, CURDATE(), 1103, CURDATE(), 442, CURDATE(), CURDATE(), 1, 0), - (4, 'T', 8.88, CURDATE(), 1103, CURDATE(), 442, CURDATE(), CURDATE(), 1, 0), - (5, 'A', 8.88, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1103, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 442, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 0); + (1, 'T', 1014.24, util.VN_CURDATE(), 1101, util.VN_CURDATE(), 442, util.VN_CURDATE(), util.VN_CURDATE(), 1, 0), + (2, 'T', 121.36, util.VN_CURDATE(), 1102, util.VN_CURDATE(), 442, util.VN_CURDATE(), util.VN_CURDATE(), 1, 0), + (3, 'T', 8.88, util.VN_CURDATE(), 1103, util.VN_CURDATE(), 442, util.VN_CURDATE(), util.VN_CURDATE(), 1, 0), + (4, 'T', 8.88, util.VN_CURDATE(), 1103, util.VN_CURDATE(), 442, util.VN_CURDATE(), util.VN_CURDATE(), 1, 0), + (5, 'A', 8.88, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1103, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 442, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 0); UPDATE `vn`.`invoiceOut` SET ref = 'T1111111' WHERE id = 1; UPDATE `vn`.`invoiceOut` SET ref = 'T2222222' WHERE id = 2; @@ -506,7 +568,7 @@ UPDATE `vn`.`invoiceOut` SET ref = 'T4444444' WHERE id = 4; UPDATE `vn`.`invoiceOut` SET ref = 'A1111111' WHERE id = 5; INSERT INTO `vn`.`invoiceOutTax` (`invoiceOutFk`, `taxableBase`, `vat`, `pgcFk`) - VALUES + VALUES (1, 895.76, 89.58, 4722000010), (1, 33.80, 7.10, 4722000021), (2, 110.33, 11.03, 4770000010), @@ -514,46 +576,46 @@ INSERT INTO `vn`.`invoiceOutTax` (`invoiceOutFk`, `taxableBase`, `vat`, `pgcFk`) (4, 8.07, 0.81, 4770000010), (5, 8.07, 0.81, 4770000010); -INSERT INTO `vn`.`expence`(`id`, `taxTypeFk`, `name`, `isWithheld`) +INSERT INTO `vn`.`expence`(`id`, `name`, `isWithheld`) VALUES - (2000000000, 1, 'Inmovilizado pendiente', 0), - (2000000000, 3, 'Compra de bienes de inmovilizado', 0), - (4751000000, 0, 'Retenciones', 1), - (4751000000, 1, 'Retenciones', 1), - (4751000000, 6, 'Retencion', 0), - (6210000567, 0, 'Alquiler VNH', 0), - (7001000000, 1, 'Mercaderia', 0), - (7050000000, 1, 'Prestacion de servicios', 1); + (2000000000, 'Inmovilizado pendiente', 0), + (2000000001, 'Compra de bienes de inmovilizado', 0), + (4751000000, 'Retenciones', 1), + (4751000001, 'Retencion', 0), + (6210000567, 'Alquiler VNH', 0), + (6240000000, 'Transportes de ventas rutas', 0), + (7001000000, 'Mercaderia', 0), + (7050000000, 'Prestacion de servicios', 1); + - INSERT INTO `vn`.`invoiceOutExpence`(`id`, `invoiceOutFk`, `amount`, `expenceFk`, `created`) VALUES - (1, 1, 813.06, 2000000000, CURDATE()), - (2, 1, 33.80, 4751000000, CURDATE()), - (3, 1, 70.70, 6210000567, CURDATE()), - (4, 2, 110.33, 2000000000, CURDATE()), - (5, 3, 8.07, 2000000000, CURDATE()), - (6, 4, 8.07, 2000000000, CURDATE()), - (7, 5, 8.07, 2000000000, CURDATE()); + (1, 1, 813.06, 2000000000, util.VN_CURDATE()), + (2, 1, 33.80, 4751000000, util.VN_CURDATE()), + (3, 1, 70.70, 6210000567, util.VN_CURDATE()), + (4, 2, 110.33, 2000000000, util.VN_CURDATE()), + (5, 3, 8.07, 2000000000, util.VN_CURDATE()), + (6, 4, 8.07, 2000000000, util.VN_CURDATE()), + (7, 5, 8.07, 2000000000, util.VN_CURDATE()); INSERT INTO `vn`.`zone` (`id`, `name`, `hour`, `agencyModeFk`, `travelingDays`, `price`, `bonus`, `itemMaxSize`) - VALUES - (1, 'Zone pickup A', CONCAT(CURRENT_DATE(), ' ', TIME('23:59')), 1, 0, 0, 0, 100), - (2, 'Zone pickup B', CONCAT(CURRENT_DATE(), ' ', TIME('23:59')), 1, 0, 0, 0, 100), - (3, 'Zone 247 A', CONCAT(CURRENT_DATE(), ' ', TIME('23:59')), 7, 1, 2, 0, 100), - (4, 'Zone 247 B', CONCAT(CURRENT_DATE(), ' ', TIME('23:59')), 7, 1, 2, 0, 100), - (5, 'Zone expensive A', CONCAT(CURRENT_DATE(), ' ', TIME('23:59')), 8, 1, 1000, 0, 100), - (6, 'Zone expensive B', CONCAT(CURRENT_DATE(), ' ', TIME('23:59')), 8, 1, 1000, 0, 100), - (7, 'Zone refund', CONCAT(CURRENT_DATE(), ' ', TIME('23:59')), 23, 0, 0, 0, 100), - (8, 'Zone others', CONCAT(CURRENT_DATE(), ' ', TIME('23:59')), 10, 0, 0, 0, 100), - (9, 'Zone superMan', CONCAT(CURRENT_DATE(), ' ', TIME('23:59')), 2, 0, 0, 0, 100), - (10, 'Zone teleportation', CONCAT(CURRENT_DATE(), ' ', TIME('23:59')), 3, 0, 0, 0, 100), - (11, 'Zone pickup C', CONCAT(CURRENT_DATE(), ' ', TIME('23:59')), 1, 0, 0, 0, 100), - (12, 'Zone entanglement', CONCAT(CURRENT_DATE(), ' ', TIME('23:59')), 4, 0, 0, 0, 100), - (13, 'Zone quantum break', CONCAT(CURRENT_DATE(), ' ', TIME('23:59')), 5, 0, 0, 0, 100); + VALUES + (1, 'Zone pickup A', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 0, 0, 100), + (2, 'Zone pickup B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 0, 0, 100), + (3, 'Zone 247 A', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 7, 1, 2, 0, 100), + (4, 'Zone 247 B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 7, 1, 2, 0, 100), + (5, 'Zone expensive A', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 8, 1, 1000, 0, 100), + (6, 'Zone expensive B', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 8, 1, 1000, 0, 100), + (7, 'Zone refund', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 23, 0, 0, 0, 100), + (8, 'Zone others', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 10, 0, 0, 0, 100), + (9, 'Zone superMan', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 2, 0, 0, 0, 100), + (10, 'Zone teleportation', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 3, 0, 0, 0, 100), + (11, 'Zone pickup C', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 1, 0, 0, 0, 100), + (12, 'Zone entanglement', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 4, 0, 0, 0, 100), + (13, 'Zone quantum break', CONCAT(util.VN_CURDATE(), ' ', TIME('23:59')), 5, 0, 0, 0, 100); INSERT INTO `vn`.`zoneWarehouse` (`id`, `zoneFk`, `warehouseFk`) - VALUES + VALUES (1, 1, 1), (2, 2, 2), (3, 3, 1), @@ -569,62 +631,62 @@ INSERT INTO `vn`.`zoneWarehouse` (`id`, `zoneFk`, `warehouseFk`) (13, 13, 5); INSERT INTO `vn`.`zoneClosure` (`zoneFk`, `dated`, `hour`) - VALUES - (1, CURDATE(), '23:59'), - (2, CURDATE(), '23:59'), - (3, CURDATE(), '23:59'), - (4, CURDATE(), '23:59'), - (5, CURDATE(), '23:59'), - (6, CURDATE(), '23:59'), - (7, CURDATE(), '23:59'), - (8, CURDATE(), '23:59'), - (9, CURDATE(), '23:59'), - (10, CURDATE(), '23:59'), - (11, CURDATE(), '23:59'), - (12, CURDATE(), '23:59'), - (13, CURDATE(), '23:59'); + VALUES + (1, util.VN_CURDATE(), '23:59'), + (2, util.VN_CURDATE(), '23:59'), + (3, util.VN_CURDATE(), '23:59'), + (4, util.VN_CURDATE(), '23:59'), + (5, util.VN_CURDATE(), '23:59'), + (6, util.VN_CURDATE(), '23:59'), + (7, util.VN_CURDATE(), '23:59'), + (8, util.VN_CURDATE(), '23:59'), + (9, util.VN_CURDATE(), '23:59'), + (10, util.VN_CURDATE(), '23:59'), + (11, util.VN_CURDATE(), '23:59'), + (12, util.VN_CURDATE(), '23:59'), + (13, util.VN_CURDATE(), '23:59'); INSERT INTO `vn`.`zoneConfig` (`scope`) VALUES ('1'); INSERT INTO `vn`.`route`(`id`, `time`, `workerFk`, `created`, `vehicleFk`, `agencyModeFk`, `description`, `m3`, `cost`, `started`, `finished`, `zoneFk`) VALUES - (1, '1899-12-30 12:15:00', 56, CURDATE(), 1, 1, 'first route', 1.8, 10, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1), - (2, '1899-12-30 13:20:00', 56, CURDATE(), 1, 2, 'second route', 0.2, 20, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 9), - (3, '1899-12-30 14:30:00', 56, CURDATE(), 2, 3, 'third route', 0.5, 30, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 10), - (4, '1899-12-30 15:45:00', 56, CURDATE(), 3, 4, 'fourth route', 0, 40, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 12), - (5, '1899-12-30 16:00:00', 56, CURDATE(), 4, 5, 'fifth route', 0.1, 50, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 13), - (6, NULL, 57, CURDATE(), 5, 7, 'sixth route', 1.7, 60, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 3), - (7, NULL, 57, CURDATE(), 6, 8, 'seventh route', 0, 70, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 5); + (1, '1899-12-30 12:15:00', 56, util.VN_CURDATE(), 1, 1, 'first route', 1.8, 10, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1), + (2, '1899-12-30 13:20:00', 56, util.VN_CURDATE(), 1, 2, 'second route', 0.2, 20, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 9), + (3, '1899-12-30 14:30:00', 56, util.VN_CURDATE(), 2, 3, 'third route', 0.5, 30, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 10), + (4, '1899-12-30 15:45:00', 56, util.VN_CURDATE(), 3, 4, 'fourth route', 0, 40, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 12), + (5, '1899-12-30 16:00:00', 56, util.VN_CURDATE(), 4, 5, 'fifth route', 0.1, 50, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 13), + (6, NULL, 57, util.VN_CURDATE(), 5, 7, 'sixth route', 1.7, 60, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 3), + (7, NULL, 57, util.VN_CURDATE(), 6, 8, 'seventh route', 0, 70, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 5); INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeFk`, `shipped`, `landed`, `clientFk`,`nickname`, `addressFk`, `refFk`, `isDeleted`, `zoneFk`, `zonePrice`, `zoneBonus`, `created`) VALUES - (1 , 3, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 'Bat cave', 121, 'T1111111', 0, 1, 5, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (2 , 1, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, 'T1111111', 0, 1, 5, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (3 , 1, 7, 1, 6, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -2 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, 'T2222222', 0, 3, 5, 1, DATE_ADD(CURDATE(), INTERVAL -2 MONTH)), - (4 , 3, 2, 1, 2, DATE_ADD(CURDATE(), INTERVAL -3 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -3 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, 'T3333333', 0, 9, 5, 1, DATE_ADD(CURDATE(), INTERVAL -3 MONTH)), - (5 , 3, 3, 3, 3, DATE_ADD(CURDATE(), INTERVAL -4 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -4 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, 'T4444444', 0, 10, 5, 1, DATE_ADD(CURDATE(), INTERVAL -4 MONTH)), - (6 , 1, 3, 3, 3, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 'Mountain Drive Gotham', 1, 'A1111111', 0, 10, 5, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (7 , NULL, 7, 1, 6, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1101, 'Mountain Drive Gotham', 1, NULL, 0, 3, 5, 1, CURDATE()), - (8 , NULL, 7, 1, 6, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1101, 'Bat cave', 121, NULL, 0, 3, 5, 1, CURDATE()), - (9 , NULL, 7, 1, 6, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1104, 'Stark tower', 124, NULL, 0, 3, 5, 1, CURDATE()), - (10, 1, 1, 5, 1, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1102, 'Ingram Street', 2, NULL, 0, 1, 5, 1, CURDATE()), - (11, 1, 7, 1, 6, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1102, 'NY roofs', 122, NULL, 0, 3, 5, 1, CURDATE()), - (12, 1, 8, 1, 1, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, CURDATE()), - (13, 1, 7, 1, 6, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 3, 5, 1, CURDATE()), - (14, 1, 2, 1, NULL, CURDATE(), CURDATE(), 1104, 'Malibu Point', 4, NULL, 0, 9, 5, 1, CURDATE()), - (15, 1, 7, 1, 6, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1105, 'An incredibly long alias for testing purposes', 125, NULL, 0, 3, 5, 1, CURDATE()), - (16, 1, 7, 1, 6, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1106, 'Many Places', 126, NULL, 0, 3, 5, 1, CURDATE()), - (17, 1, 7, 2, 6, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1106, 'Many Places', 126, NULL, 0, 3, 5, 1, CURDATE()), - (18, 1, 4, 4, 4, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1108, 'Cerebro', 128, NULL, 0, 12, 5, 1, CURDATE()), - (19, 1, 5, 5, NULL, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1109, 'Somewhere in Thailand', 129, NULL, 1, NULL, 5, 1, CURDATE()), - (20, 1, 5, 5, 3, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Thailand', 129, NULL, 0, 13, 5, 1, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), - (21, NULL, 5, 5, 5, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Holland', 102, NULL, 0, 13, 5, 1, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), - (22, NULL, 5, 5, 5, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Japan', 103, NULL, 0, 13, 5, 1, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), - (23, NULL, 8, 1, 7, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1101, 'address 21', 121, NULL, 0, 5, 5, 1, CURDATE()), - (24 ,NULL, 8, 1, 7, CURDATE(), CURDATE(), 1101, 'Bruce Wayne', 1, NULL, 0, 5, 5, 1, CURDATE()), - (25 ,NULL, 8, 1, NULL, CURDATE(), CURDATE(), 1101, 'Bruce Wayne', 1, NULL, 0, 1, 5, 1, CURDATE()), - (26 ,NULL, 8, 1, NULL, CURDATE(), CURDATE(), 1101, 'An incredibly long alias for testing purposes', 1, NULL, 0, 1, 5, 1, CURDATE()), - (27 ,NULL, 8, 1, NULL, CURDATE(), CURDATE(), 1101, 'Wolverine', 1, NULL, 0, 1, 5, 1, CURDATE()); + (1 , 3, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 'Bat cave', 121, 'T1111111', 0, 1, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (2 , 1, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, 'T1111111', 0, 1, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (3 , 1, 7, 1, 6, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -2 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, 'T2222222', 0, 3, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH)), + (4 , 3, 2, 1, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -3 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, 'T3333333', 0, 9, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH)), + (5 , 3, 3, 3, 3, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -4 MONTH), INTERVAL +1 DAY), 1104, 'Stark tower', 124, 'T4444444', 0, 10, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH)), + (6 , 1, 3, 3, 3, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 'Mountain Drive Gotham', 1, 'A1111111', 0, 10, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (7 , NULL, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 'Mountain Drive Gotham', 1, NULL, 0, 3, 5, 1, util.VN_CURDATE()), + (8 , NULL, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 'Bat cave', 121, NULL, 0, 3, 5, 1, util.VN_CURDATE()), + (9 , NULL, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1104, 'Stark tower', 124, NULL, 0, 3, 5, 1, util.VN_CURDATE()), + (10, 1, 1, 5, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 'Ingram Street', 2, NULL, 0, 1, 5, 1, util.VN_CURDATE()), + (11, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 'NY roofs', 122, NULL, 0, 3, 5, 1, util.VN_CURDATE()), + (12, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE()), + (13, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 3, 5, 1, util.VN_CURDATE()), + (14, 1, 2, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1104, 'Malibu Point', 4, NULL, 0, 9, 5, 1, util.VN_CURDATE()), + (15, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1105, 'An incredibly long alias for testing purposes', 125, NULL, 0, 3, 5, 1, util.VN_CURDATE()), + (16, 1, 7, 1, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1106, 'Many Places', 126, NULL, 0, 3, 5, 1, util.VN_CURDATE()), + (17, 1, 7, 2, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1106, 'Many Places', 126, NULL, 0, 3, 5, 1, util.VN_CURDATE()), + (18, 1, 4, 4, 4, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1108, 'Cerebro', 128, NULL, 0, 12, 5, 1, util.VN_CURDATE()), + (19, 1, 5, 5, NULL, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1109, 'Somewhere in Thailand', 129, NULL, 1, NULL, 5, 1, util.VN_CURDATE()), + (20, 1, 5, 5, 3, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Thailand', 129, NULL, 0, 13, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)), + (21, NULL, 5, 5, 5, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Holland', 102, NULL, 0, 13, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)), + (22, NULL, 5, 5, 5, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 'Somewhere in Japan', 103, NULL, 0, 13, 5, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)), + (23, NULL, 8, 1, 7, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 'address 21', 121, NULL, 0, 5, 5, 1, util.VN_CURDATE()), + (24 ,NULL, 8, 1, 7, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Bruce Wayne', 1, NULL, 0, 5, 5, 1, util.VN_CURDATE()), + (25 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Bruce Wayne', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE()), + (26 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'An incredibly long alias for testing purposes', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE()), + (27 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Wolverine', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE()); INSERT INTO `vn`.`ticketObservation`(`id`, `ticketFk`, `observationTypeFk`, `description`) VALUES @@ -641,43 +703,39 @@ INSERT INTO `vn`.`ticketObservation`(`id`, `ticketFk`, `observationTypeFk`, `des (11, 24, 4, 'Reclama ticket: 7'), (12, 11, 3, 'Delivery after 10am'); --- FIX for state hours on local, inter_afterInsert -UPDATE vncontrol.inter SET odbc_date = DATE_ADD(CURDATE(), INTERVAL -10 SECOND); +-- FIX for state hours on local, inter_afterInsert +UPDATE vncontrol.inter SET odbc_date = DATE_ADD(util.VN_CURDATE(), INTERVAL -10 SECOND); INSERT INTO `vn`.`ticketTracking`(`ticketFk`, `stateFk`, `workerFk`, `created`) VALUES - (1, 16, 5 , DATE_ADD(NOW(), INTERVAL -1 MONTH)), - (2, 16, 5 , DATE_ADD(NOW(), INTERVAL -1 MONTH)), - (3, 16, 5 , DATE_ADD(NOW(), INTERVAL -2 MONTH)), - (4, 16, 5 , DATE_ADD(NOW(), INTERVAL -3 MONTH)), - (5, 16, 18, DATE_ADD(NOW(), INTERVAL -4 MONTH)), - (6, 16, 18, DATE_ADD(NOW(), INTERVAL -1 MONTH)), - (7, 10, 18, NOW()), - (8, 5, 19, NOW()), - (9, 5, 19, NOW()), - (10, 5, 19, NOW()), - (11, 3, 19, NOW()), - (12, 3, 19, NOW()), - (13, 3, 19, NOW()), - (14, 3, 19, NOW()), - (15, 2, 19, NOW()), - (16, 3, 19, NOW()), - (17, 2, 19, NOW()), - (18, 2, 19, NOW()), - (19, 2, 19, NOW()), - (20, 1, 19, DATE_ADD(NOW(), INTERVAL +1 MONTH)), - (21, 1, 19, DATE_ADD(NOW(), INTERVAL +1 MONTH)), - (22, 1, 19, DATE_ADD(NOW(), INTERVAL +1 MONTH)), - (23, 16, 21, NOW()), - (24, 16, 21, NOW()); - -INSERT INTO `vn`.`stowaway`(`id`, `shipFk`, `created`) - VALUES - (12, 13, CURDATE()); + (1, 16, 5 , DATE_ADD(util.VN_NOW(), INTERVAL -1 MONTH)), + (2, 16, 5 , DATE_ADD(util.VN_NOW(), INTERVAL -1 MONTH)), + (3, 16, 5 , DATE_ADD(util.VN_NOW(), INTERVAL -2 MONTH)), + (4, 16, 5 , DATE_ADD(util.VN_NOW(), INTERVAL -3 MONTH)), + (5, 16, 18, DATE_ADD(util.VN_NOW(), INTERVAL -4 MONTH)), + (6, 16, 18, DATE_ADD(util.VN_NOW(), INTERVAL -1 MONTH)), + (7, 10, 18, util.VN_NOW()), + (8, 5, 19, util.VN_NOW()), + (9, 5, 19, util.VN_NOW()), + (10, 5, 19, util.VN_NOW()), + (11, 3, 19, util.VN_NOW()), + (12, 3, 19, util.VN_NOW()), + (13, 3, 19, util.VN_NOW()), + (14, 3, 19, util.VN_NOW()), + (15, 2, 19, util.VN_NOW()), + (16, 3, 19, util.VN_NOW()), + (17, 2, 19, util.VN_NOW()), + (18, 2, 19, util.VN_NOW()), + (19, 2, 19, util.VN_NOW()), + (20, 1, 19, DATE_ADD(util.VN_NOW(), INTERVAL +1 MONTH)), + (21, 1, 19, DATE_ADD(util.VN_NOW(), INTERVAL +1 MONTH)), + (22, 1, 19, DATE_ADD(util.VN_NOW(), INTERVAL +1 MONTH)), + (23, 16, 21, util.VN_NOW()), + (24, 16, 21, util.VN_NOW()); INSERT INTO `vn`.`deliveryPoint` (`id`, `name`, `ubication`) VALUES - (1, 'Silla','46460 Av Espioca 100-Silla'); + (1, 'Gotham','1007 Mountain Drive, Gotham'); INSERT INTO `vn`.`vehicle`(`id`, `numberPlate`, `tradeMark`, `model`, `companyFk`, `warehouseFk`, `description`, `m3`, `isActive`, `deliveryPointFk`) VALUES @@ -690,7 +748,7 @@ INSERT INTO `vn`.`vehicle`(`id`, `numberPlate`, `tradeMark`, `model`, `companyFk INSERT INTO `vn`.`config`(`id`, `mdbServer`, `fakeEmail`, `defaultersMaxAmount`, `inventoried`) VALUES - (1, 'beta-server', 'nightmare@mydomain.com', '200', DATE_ADD(CURDATE(),INTERVAL -1 MONTH)); + (1, 'beta-server', 'nightmare@mydomain.com', '200', DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH)); INSERT INTO `vn`.`greugeType`(`id`, `name`, `code`) VALUES @@ -704,18 +762,18 @@ INSERT INTO `vn`.`greugeType`(`id`, `name`, `code`) INSERT INTO `vn`.`greuge`(`id`, `clientFk`, `description`, `amount`, `shipped`, `created`, `greugeTypeFk`, `ticketFk`) VALUES - (1, 1101, 'some diff charges', -19.99, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 1, 1), - (2, 1101, 'more diff charges', 60, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 2, 1), - (3, 1101, 'even more! diff charges', -9.99, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 3, 1), - (4, 1101, 'insane diff charges', 60, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 4, 1), - (5, 1101, 'gargantuous diff charges', -9.99, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 5, 1), - (6, 1101, 'diff charges', 88.30, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 6, 1), - (7, 1101, 'unaffordable diff charges', -39.12, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 1, 1), - (8, 1101, 'some recovery charges', 29.35, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 2, 1), - (9, 1101, 'some manna charges', -9.99, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 3, 1), - (10, 1101, 'some claim charges', 13.13, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 4, 1), - (11, 1101, 'some heritage charges', -15.99, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 5, 1), - (12, 1101, 'some miscellaneous charges', 58.00, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 6, 1); + (1, 1101, 'some diff charges', -19.99, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 1, 1), + (2, 1101, 'more diff charges', 60, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 2, 1), + (3, 1101, 'even more! diff charges', -9.99, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 3, 1), + (4, 1101, 'insane diff charges', 60, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 4, 1), + (5, 1101, 'gargantuous diff charges', -9.99, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 5, 1), + (6, 1101, 'diff charges', 88.30, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 6, 1), + (7, 1101, 'unaffordable diff charges', -39.12, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 1, 1), + (8, 1101, 'some recovery charges', 29.35, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 2, 1), + (9, 1101, 'some manna charges', -9.99, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 3, 1), + (10, 1101, 'some claim charges', 13.13, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 4, 1), + (11, 1101, 'some heritage charges', -15.99, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 5, 1), + (12, 1101, 'some miscellaneous charges', 58.00, DATE_ADD(util.VN_CURDATE(), INTERVAL 1 MONTH), util.VN_CURDATE(), 6, 1); INSERT INTO `vn`.`mandateType`(`id`, `name`) VALUES @@ -725,7 +783,7 @@ INSERT INTO `vn`.`mandateType`(`id`, `name`) INSERT INTO `vn`.`mandate`(`id`, `clientFk`, `companyFk`, `code`, `created`, `mandateTypeFk`) VALUES - (1, 1102, 442, '1-1', CURDATE(), 2); + (1, 1102, 442, '1-1', util.VN_CURDATE(), 2); INSERT INTO `vn`.`itemCategory`(`id`, `name`, `display`, `color`, `icon`, `code`) VALUES @@ -738,14 +796,19 @@ INSERT INTO `vn`.`itemCategory`(`id`, `name`, `display`, `color`, `icon`, `code` (7, 'Accessories', 1, NULL, 'icon-accessory', 'accessory'), (8, 'Fruit', 1, NULL, 'icon-fruit', 'fruit'); -INSERT INTO `vn`.`itemType`(`id`, `code`, `name`, `categoryFk`, `warehouseFk`, `life`,`workerFk`, `isPackaging`) +INSERT INTO `vn`.`temperature`(`code`, `name`, `description`) VALUES - (1, 'CRI', 'Crisantemo', 2, 1, 31, 35, 0), - (2, 'ITG', 'Anthurium', 1, 1, 31, 35, 0), - (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, 16, 0); + ('warm', 'Warm', 'Warm'), + ('cool', 'Cool', 'Cool'); + +INSERT INTO `vn`.`itemType`(`id`, `code`, `name`, `categoryFk`, `life`, `workerFk`, `isPackaging`, `temperatureFk`) + VALUES + (1, 'CRI', 'Crisantemo', 2, 31, 35, 0, 'cool'), + (2, 'ITG', 'Anthurium', 1, 31, 35, 0, 'cool'), + (3, 'WPN', 'Paniculata', 2, 31, 35, 0, 'cool'), + (4, 'PRT', 'Delivery ports', 3, NULL, 35, 1, 'warm'), + (5, 'CON', 'Container', 3, NULL, 35, 1, 'warm'), + (6, 'ALS', 'Alstroemeria', 1, 31, 16, 0, 'warm'); INSERT INTO `vn`.`ink`(`id`, `name`, `picture`, `showOrder`, `hex`) VALUES @@ -775,10 +838,10 @@ INSERT INTO `vn`.`taxType`(`id`, `nickname`, `isAccrued`, `serial`, `TIPOOPE`, ` INSERT INTO `vn`.`taxCode`(`id`, `dated`, `code`, `taxTypeFk`, `rate`, `equalizationTax`, `type`, `link`, `isActive`, `updated`, `transactionCode`) VALUES - (1 , CURDATE(), '1111111111', 1, 7.0 , 0.0, 'R', 1, 1, CURDATE(), 1), - (2 , CURDATE(), '2222222222', 2, 16.0, 0.0, 'G', 2, 1, CURDATE(), 1), - (21 , CURDATE(), '3333333333', 1, 7.0, 0.0, 'R', 3, 1, CURDATE(), 1), - (108, CURDATE(), '4444444444', 2, 8.0 , 0.0, 'R', 4, 1, CURDATE(), 1); + (1 , util.VN_CURDATE(), '1111111111', 1, 7.0 , 0.0, 'R', 1, 1, util.VN_CURDATE(), 1), + (2 , util.VN_CURDATE(), '2222222222', 2, 16.0, 0.0, 'G', 2, 1, util.VN_CURDATE(), 1), + (21 , util.VN_CURDATE(), '3333333333', 1, 7.0, 0.0, 'R', 3, 1, util.VN_CURDATE(), 1), + (108, util.VN_CURDATE(), '4444444444', 2, 8.0 , 0.0, 'R', 4, 1, util.VN_CURDATE(), 1); INSERT INTO `vn`.`taxClass`(`id`, `description`, `code`) VALUES @@ -787,10 +850,10 @@ INSERT INTO `vn`.`taxClass`(`id`, `description`, `code`) INSERT INTO `vn`.`taxClassCode`(`taxClassFk`, `effectived`, `taxCodeFk`) VALUES - (1, CURDATE(), 1), - (1, CURDATE(), 21), - (2, CURDATE(), 2); - + (1, util.VN_CURDATE(), 1), + (1, util.VN_CURDATE(), 21), + (2, util.VN_CURDATE(), 2); + INSERT INTO `vn`.`intrastat`(`id`, `description`, `taxClassFk`, `taxCodeFk`) VALUES (05080000, 'Coral y materiales similares', 2, 2), @@ -802,26 +865,26 @@ 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`, `isFloramondo`, `genericFk`, `itemPackingTypeFk`) +INSERT INTO `vn`.`item`(`id`, `typeFk`, `size`, `inkFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `expenceFk`, + `comment`, `relevancy`, `image`, `subName`, `minPrice`, `stars`, `family`, `isFloramondo`, `genericFk`, `itemPackingTypeFk`, `hasMinPrice`, `packingShelve`, `weightByPiece`) VALUES - (1, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 1, 'VT', 0, NULL, 'V'), - (2, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 2, 'VT', 0, NULL, 'H'), - (3, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 5, 'VT', 0, NULL, NULL), - (4, 1, 60, 'YEL', 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 3, 'VT', 0, NULL, NULL), - (5, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 3, 'VT', 0, NULL, NULL), - (6, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 4, 'VT', 0, NULL, NULL), - (7, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 4, 'VT', 0, NULL, NULL), - (8, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 5, 'VT', 0, NULL, NULL), - (9, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 4, 'VT', 1, NULL, NULL), - (10, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 4, 'VT', 0, NULL, NULL), - (11, 1, 60, 'YEL', 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 4, 'VT', 0, NULL, NULL), - (12, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 3, 'VT', 0, NULL, NULL), - (13, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 0, 2, 'VT', 1, NULL, NULL), - (14, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 4, 'VT', 1, NULL, NULL), - (15, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB', 0, NULL, NULL), - (16, 6, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB', 0, NULL, NULL), - (71, 6, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'VT', 0, NULL, NULL); + (1, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '1', NULL, 0, 1, 'VT', 0, NULL, 'V', 0, 15,3), + (2, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '2', NULL, 0, 2, 'VT', 0, NULL, 'H', 0, 10,2), + (3, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '3', NULL, 0, 5, 'VT', 0, NULL, NULL, 0, 5,5), + (4, 1, 60, 'YEL', 1, 1, 'Increases block', 1, 05080000, 4751000000, NULL, 0, '4', NULL, 0, 3, 'VT', 0, NULL, NULL, 0, NULL,NULL), + (5, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '5', NULL, 0, 3, 'VT', 0, NULL, NULL, 0, NULL,NULL), + (6, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '6', NULL, 0, 4, 'VT', 0, NULL, NULL, 0, NULL,NULL), + (7, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '7', NULL, 0, 4, 'VT', 0, NULL, NULL, 0, NULL,NULL), + (8, 2, 70, 'YEL', 1, 1, NULL, 1, 06021010, 2000000000, NULL, 0, '8', NULL, 0, 5, 'VT', 0, NULL, NULL, 0, NULL,NULL), + (9, 2, 70, 'BLU', 1, 2, NULL, 1, 06021010, 2000000000, NULL, 0, '9', NULL, 0, 4, 'VT', 1, NULL, NULL, 0, NULL,NULL), + (10, 1, 60, 'YEL', 1, 3, NULL, 1, 05080000, 4751000000, NULL, 0, '10', NULL, 0, 4, 'VT', 0, NULL, NULL, 0, NULL,NULL), + (11, 1, 60, 'YEL', 1, 1, NULL, 1, 05080000, 4751000000, NULL, 0, '11', NULL, 0, 4, 'VT', 0, NULL, NULL, 0, NULL,NULL), + (12, 3, 30, 'RED', 1, 2, NULL, 2, 06021010, 4751000000, NULL, 0, '12', NULL, 0, 3, 'VT', 0, NULL, NULL, 0, NULL,NULL), + (13, 5, 30, 'RED', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '13', NULL, 1, 2, 'VT', 1, NULL, NULL, 1, NULL,NULL), + (14, 5, 90, 'BLU', 1, 2, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 4, 'VT', 1, NULL, NULL, 0, NULL,NULL), + (15, 4, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB', 0, NULL, NULL, 0, NULL,NULL), + (16, 6, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'EMB', 0, NULL, NULL, 0, NULL,NULL), + (71, 6, NULL, NULL, NULL, 1, NULL, NULL, 06021010, 4751000000, NULL, 0, '', NULL, 0, 0, 'VT', 0, NULL, NULL, 0, NULL,NULL); -- Update the taxClass after insert of the items UPDATE `vn`.`itemTaxCountry` SET `taxClassFk` = 2 @@ -829,9 +892,9 @@ UPDATE `vn`.`itemTaxCountry` SET `taxClassFk` = 2 INSERT INTO `vn`.`priceFixed`(`id`, `itemFk`, `rate0`, `rate1`, `rate2`, `rate3`, `started`, `ended`, `bonus`, `warehouseFk`, `created`) VALUES - (1, 1, 0, 0, 2.5, 2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL +1 MONTH), 0, 1, CURDATE()), - (2, 3, 10, 10, 10, 10, CURDATE(), DATE_ADD(CURDATE(), INTERVAL +1 MONTH), 0, 1, CURDATE()), - (3, 5, 8.5, 10, 7.5, 6, CURDATE(), DATE_ADD(CURDATE(), INTERVAL +1 MONTH), 1, 2, CURDATE()); + (1, 1, 0, 0, 2.5, 2, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 0, 1, util.VN_CURDATE()), + (2, 3, 10, 10, 10, 10, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 0, 1, util.VN_CURDATE()), + (3, 13, 8.5, 10, 7.5, 6, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 1, 2, util.VN_CURDATE()); INSERT INTO `vn`.`expeditionBoxVol`(`boxFk`, `m3`, `ratio`) VALUES @@ -839,69 +902,89 @@ INSERT INTO `vn`.`expeditionBoxVol`(`boxFk`, `m3`, `ratio`) INSERT INTO `vn`.`packaging`(`id`, `volume`, `width`, `height`, `depth`, `isPackageReturnable`, `created`, `itemFk`, `price`) VALUES - (1, 0.00, 10, 10, 0, 1, CURDATE(), 6, 1.50), - (2, 100.00, 20, 20, 0, 1, CURDATE(), 7, 1.00), - (3, 14000.00, 0, 0, 0, 1, CURDATE(), NULL, 0), - (4, 218000.00, 0, 0, 0, 0, CURDATE(), NULL, 0), - (5, 292000.00, 0, 0, 0, 0, CURDATE(), NULL, 0), - (94, 140875.00, 49.00, 115.00, 25.00, 0, CURDATE(), 71, 0.00), - ('cc', 1640038.00, 56.00, 220.00, 128.00, 1, CURDATE(), 15, 90.00), - ('pallet 100', 2745600.00, 100.00, 220.00, 120.00, 1, CURDATE(), 16, 0.00); + (1, 0.00, 10, 10, 0, 1, util.VN_CURDATE(), 6, 1.50), + (2, 100.00, 20, 20, 0, 1, util.VN_CURDATE(), 7, 1.00), + (3, 14000.00, 0, 0, 0, 1, util.VN_CURDATE(), NULL, 0), + (4, 218000.00, 0, 0, 0, 0, util.VN_CURDATE(), NULL, 0), + (5, 292000.00, 0, 0, 0, 0, util.VN_CURDATE(), NULL, 0), + (94, 140875.00, 49.00, 115.00, 25.00, 0, util.VN_CURDATE(), 71, 0.00), + ('cc', 1640038.00, 56.00, 220.00, 128.00, 1, util.VN_CURDATE(), 15, 90.00), + ('pallet 100', 2745600.00, 100.00, 220.00, 120.00, 1, util.VN_CURDATE(), 16, 0.00); -INSERT INTO `vn`.`expedition`(`id`, `agencyModeFk`, `ticketFk`, `isBox`, `created`, `itemFk`, `counter`, `checked`, `workerFk`, `externalId`, `packagingFk`) +INSERT INTO `vn`.`expeditionStateType`(`id`, `description`, `code`) VALUES - (1, 1, 1, 71, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 15, 1, 1, 18, 'UR9000006041', 94), - (2, 1, 1, 71, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 16, 2, 1, 18, 'UR9000006041', 94), - (3, 1, 1, 71, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), NULL, 3, 1, 18, 'UR9000006041', 94), - (4, 1, 1, 71, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), NULL, 4, 1, 18, 'UR9000006041', 94), - (5, 1, 2, 71, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), NULL, 1, 1, 18, NULL, 94), - (6, 7, 3, 71, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), NULL, 1, 1, 18, NULL, 94), - (7, 2, 4, 71, DATE_ADD(CURDATE(), INTERVAL -3 MONTH), NULL, 1, 1, 18, NULL, 94), - (8, 3, 5, 71, DATE_ADD(CURDATE(), INTERVAL -4 MONTH), NULL, 1, 1, 18, NULL, 94), - (9, 3, 6, 71, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), NULL, 1, 1, 18, NULL, 94), - (10, 7, 7, 71, NOW(), NULL, 1, 1, 18, NULL, 94); + (1, 'En reparto', 'ON DELIVERY'), + (2, 'Entregada', 'DELIVERED'), + (3, 'Perdida', 'LOST'); + + +INSERT INTO `vn`.`expedition`(`id`, `agencyModeFk`, `ticketFk`, `freightItemFk`, `created`, `itemFk`, `counter`, `workerFk`, `externalId`, `packagingFk`, `stateTypeFk`, `hostFk`) + VALUES + (1, 1, 1, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 15, 1, 18, 'UR9000006041', 94, 1, 'pc1'), + (2, 1, 1, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 16, 2, 18, 'UR9000006041', 94, 1, NULL), + (3, 1, 1, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), NULL, 3, 18, 'UR9000006041', 94, 2, NULL), + (4, 1, 1, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), NULL, 4, 18, 'UR9000006041', 94, 2, NULL), + (5, 1, 2, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), NULL, 1, 18, NULL, 94, 3, NULL), + (6, 7, 3, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), NULL, 1, 18, NULL, 94, 3, NULL), + (7, 2, 4, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), NULL, 1, 18, NULL, 94, NULL,NULL), + (8, 3, 5, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), NULL, 1, 18, NULL, 94, 1, NULL), + (9, 3, 6, 71, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), NULL, 1, 18, NULL, 94, 2, NULL), + (10, 7, 7, 71, NOW(), NULL, 1, 18, NULL, 94, 3, NULL), + (11, 7, 8, 71, NOW(), NULL, 1, 18, NULL, 94, 3, NULL), + (12, 7, 9, 71, NOW(), NULL, 1, 18, NULL, 94, 3, NULL), + (13, 1, 10,71, NOW(), NULL, 1, 18, NULL, 94, 3, NULL); + + +INSERT INTO `vn`.`expeditionState`(`id`, `created`, `expeditionFk`, `typeFk`, `userFk`) + VALUES + (1, util.VN_CURDATE(), 1, 1, 1), + (2, util.VN_CURDATE(), 2, 1, 1), + (3, util.VN_CURDATE(), 3, 1, 1), + (4, util.VN_CURDATE(), 3, 2, 1106), + (5, util.VN_CURDATE(), 5, 1, 1106), + (6, util.VN_CURDATE(), 5, 3, 1106); INSERT INTO `vn`.`ticketPackaging`(`id`, `ticketFk`, `packagingFk`, `quantity`, `created`, `pvp`) VALUES - (1, 1, 2, 2, CURDATE(), NULL), - (2, 2, 2, 1, CURDATE(), NULL), - (3, 3, 2, 4, CURDATE(), NULL); + (1, 1, 2, 2, util.VN_CURDATE(), NULL), + (2, 2, 2, 1, util.VN_CURDATE(), NULL), + (3, 3, 2, 4, util.VN_CURDATE(), NULL); INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `price`, `discount`, `reserved`, `isPicked`, `created`) VALUES - (1, 1, 1, 'Ranged weapon longbow 2m', 5, 100.39, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (2, 2, 1, 'Melee weapon combat fist 15cm', 10, 7.07, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (3, 1, 1, 'Ranged weapon longbow 2m', 2, 100.39, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (4, 4, 1, 'Melee weapon heavy shield 1x0.5m', 20, 1.69, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (5, 1, 2, 'Ranged weapon longbow 2m', 1, 110.33, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (6, 1, 3, 'Ranged weapon longbow 2m', 1, 110.33, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -2 MONTH)), - (7, 2, 11, 'Melee weapon combat fist 15cm', 15, 7.44, 0, 0, 0, CURDATE()), - (8, 4, 11, 'Melee weapon heavy shield 1x0.5m', 10, 1.79, 0, 0, 0, CURDATE()), - (9, 1, 16, 'Ranged weapon longbow 2m', 1, 103.49, 0, 0, 0, CURDATE()), - (10, 2, 16, 'Melee weapon combat fist 15cm', 10, 7.09, 0, 0, 0, CURDATE()), - (11, 1, 16, 'Ranged weapon longbow 2m', 1, 103.49, 0, 0, 0, CURDATE()), - (12, 4, 16, 'Melee weapon heavy shield 1x0.5m', 20, 1.71, 0, 0, 0, CURDATE()), - (13, 2, 8, 'Melee weapon combat fist 15cm', 10, 7.08, 0, 0, 0, CURDATE()), - (14, 1, 8, 'Ranged weapon longbow 2m', 2, 103.49, 0, 0, 0, CURDATE()), - (15, 1, 19, 'Ranged weapon longbow 2m', 1, 103.49, 0, 0, 0, CURDATE()), - (16, 2, 20, 'Melee weapon combat fist 15cm', 20, 7.07, 0, 0, 0, CURDATE()), - (17, 2, 22, 'Melee weapon combat fist 15cm', 30, 7.07, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), - (18, 4, 22, 'Melee weapon heavy shield 1x0.5m', 20, 1.69, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), - (19, 1, 4, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -3 MONTH)), - (20, 1, 5, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -4 MONTH)), - (21, 1, 6, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (22, 1, 7, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, CURDATE()), - (23, 1, 9, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, CURDATE()), - (24, 1, 10, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, CURDATE()), - (25, 4, 12, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, CURDATE()), - (26, 4, 13, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, CURDATE()), - (27, 4, 14, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, CURDATE()), - (28, 4, 15, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, CURDATE()), - (29, 4, 17, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, CURDATE()), - (30, 4, 18, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, CURDATE()), - (31, 2, 23, 'Melee weapon combat fist 15cm', -5, 7.08, 0, 0, 0, CURDATE()), - (32, 1, 24, 'Ranged weapon longbow 2m', -1, 8.07, 0, 0, 0, CURDATE()), - (33, 5, 14, 'Ranged weapon pistol 9mm', 50, 1.79, 0, 0, 0, CURDATE()); + (1, 1, 1, 'Ranged weapon longbow 2m', 5, 100.39, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (2, 2, 1, 'Melee weapon combat fist 15cm', 10, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (3, 1, 1, 'Ranged weapon longbow 2m', 2, 100.39, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (4, 4, 1, 'Melee weapon heavy shield 1x0.5m', 20, 1.69, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (5, 1, 2, 'Ranged weapon longbow 2m', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (6, 1, 3, 'Ranged weapon longbow 2m', 1, 110.33, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH)), + (7, 2, 11, 'Melee weapon combat fist 15cm', 15, 7.44, 0, 0, 0, util.VN_CURDATE()), + (8, 4, 11, 'Melee weapon heavy shield 1x0.5m', 10, 1.79, 0, 0, 0, util.VN_CURDATE()), + (9, 1, 16, 'Ranged weapon longbow 2m', 1, 103.49, 0, 0, 0, util.VN_CURDATE()), + (10, 2, 16, 'Melee weapon combat fist 15cm', 10, 7.09, 0, 0, 0, util.VN_CURDATE()), + (11, 1, 16, 'Ranged weapon longbow 2m', 1, 103.49, 0, 0, 0, util.VN_CURDATE()), + (12, 4, 16, 'Melee weapon heavy shield 1x0.5m', 20, 1.71, 0, 0, 0, util.VN_CURDATE()), + (13, 2, 8, 'Melee weapon combat fist 15cm', 10, 7.08, 0, 0, 0, util.VN_CURDATE()), + (14, 1, 8, 'Ranged weapon longbow 2m', 2, 103.49, 0, 0, 0, util.VN_CURDATE()), + (15, 1, 19, 'Ranged weapon longbow 2m', 1, 103.49, 0, 0, 0, util.VN_CURDATE()), + (16, 2, 20, 'Melee weapon combat fist 15cm', 20, 7.07, 0, 0, 0, util.VN_CURDATE()), + (17, 2, 22, 'Melee weapon combat fist 15cm', 30, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)), + (18, 4, 22, 'Melee weapon heavy shield 1x0.5m', 20, 1.69, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)), + (19, 1, 4, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH)), + (20, 1, 5, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH)), + (21, 1, 6, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (22, 1, 7, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, util.VN_CURDATE()), + (23, 1, 9, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, util.VN_CURDATE()), + (24, 1, 10, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, util.VN_CURDATE()), + (25, 4, 12, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, util.VN_CURDATE()), + (26, 4, 13, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, util.VN_CURDATE()), + (27, 4, 14, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, util.VN_CURDATE()), + (28, 4, 15, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, util.VN_CURDATE()), + (29, 4, 17, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, util.VN_CURDATE()), + (30, 4, 18, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, util.VN_CURDATE()), + (31, 2, 23, 'Melee weapon combat fist 15cm', -5, 7.08, 0, 0, 0, util.VN_CURDATE()), + (32, 1, 24, 'Ranged weapon longbow 2m', -1, 8.07, 0, 0, 0, util.VN_CURDATE()), + (33, 5, 14, 'Ranged weapon pistol 9mm', 50, 1.79, 0, 0, 0, util.VN_CURDATE()); INSERT INTO `vn`.`saleChecked`(`saleFk`, `isChecked`) VALUES @@ -921,7 +1004,7 @@ INSERT INTO `vn`.`saleComponent`(`saleFk`, `componentFk`, `value`) (3, 39, 0.994), (4, 28, 1.25), (4, 29, 0.42), - (4, 39, 0.017), + (4, 39, 0.017), (5, 17, 9.94), (5, 28, 50), (5, 29, 49.4), @@ -943,8 +1026,8 @@ INSERT INTO `vn`.`saleComponent`(`saleFk`, `componentFk`, `value`) (9, 15, 3.0949), (9, 21, 0.001), (9, 28, 53), - (9, 29, 46.4), - (9, 39, 0.994), + (9, 29, 46.4), + (9, 39, 0.994), (10, 15, 0.0199), (10, 28, 7), (10, 29, 0), @@ -1043,13 +1126,14 @@ INSERT INTO `vn`.`saleComponent`(`saleFk`, `componentFk`, `value`) (32, 36, -92.324), (32, 39, 0.994); -INSERT INTO `vn`.`itemShelving` (`id`, `itemFk`, `shelvingFk`, `shelve`, `deep`, `quantity`, `visible`, `available`, `grouping`, `packing`, `level`, `userFk`) - VALUES - ('1', '2', 'GVC', 'A', '0', '1', '1', '1', '1', '1', '1', '1106'), - ('2', '4', 'HEJ', 'A', '0', '2', '1', '1', '1', '1', '1', '1106'); +INSERT INTO `vn`.`itemShelving` (`itemFk`, `shelvingFk`, `shelve`, `visible`, `grouping`, `packing`, `userFk`) + VALUES + (2, 'GVC', 'A', 1, 1, 1, 1106), + (4, 'HEJ', 'A', 1, 1, 1, 1106), + (1, 'UXN', 'A', 2, 12, 12, 1106); -INSERT INTO `vn`.`itemShelvingSale` (`itemShelvingFk`, `saleFk`, `quantity`, `created`, `userFk`) - VALUES +INSERT INTO `vn`.`itemShelvingSale` (`itemShelvingFk`, `saleFk`, `quantity`, `created`, `userFk`) + VALUES ('1', '1', '1', '', '1106'), ('2', '2', '5', '', '1106'), ('1', '7', '1', '', '1106'), @@ -1062,10 +1146,10 @@ INSERT INTO `vncontrol`.`accion`(`accion_id`, `accion`) INSERT INTO `vn`.`saleTracking`(`saleFk`, `isChecked`, `created`, `originalQuantity`, `workerFk`, `actionFk`, `id`, `stateFk`) VALUES - (1, 0, CURDATE(), 5, 55, 3, 1, 14), - (1, 1, CURDATE(), 5, 54, 3, 2, 8), - (2, 1, CURDATE(), 10, 40, 4, 3, 8), - (3, 1, CURDATE(), 2, 40, 4, 4, 8); + (1, 0, util.VN_CURDATE(), 5, 55, 3, 1, 14), + (1, 1, util.VN_CURDATE(), 5, 54, 3, 2, 8), + (2, 1, util.VN_CURDATE(), 10, 40, 4, 3, 8), + (3, 1, util.VN_CURDATE(), 2, 40, 4, 4, 8); INSERT INTO `vn`.`itemBarcode`(`id`, `itemFk`, `code`) VALUES @@ -1073,13 +1157,6 @@ INSERT INTO `vn`.`itemBarcode`(`id`, `itemFk`, `code`) (2, 1, 2222222222), (3, 1, 3333333333), (4, 2, 4444444444); - -INSERT INTO `vn`.`itemPlacement`(`id`, `itemFk`, `warehouseFk`, `code`) - VALUES - (1, 1, 1, 'A11'), - (2, 1, 2, 'A22'), - (3, 1, 3, 'A33'), - (4, 2, 1, 'A44'); INSERT INTO `vn`.`train`(`id`, `name`) VALUES @@ -1088,29 +1165,15 @@ INSERT INTO `vn`.`train`(`id`, `name`) INSERT INTO `vn`.`collection`(`id`, `workerFk`, `stateFk`, `created`, `trainFk`) VALUES - (1, 1106, 5, DATE_ADD(CURDATE(),INTERVAL +1 DAY), 1), - (2, 1106, 14, CURDATE(), 1); + (1, 1106, 5, DATE_ADD(util.VN_CURDATE(),INTERVAL +1 DAY), 1), + (2, 1106, 14, util.VN_CURDATE(), 1); -INSERT INTO `vn`.`ticketCollection`(`id`, `ticketFk`, `collectionFk`) +INSERT INTO `vn`.`ticketCollection`(`ticketFk`, `collectionFk`, `level`) VALUES - (2, 2, 1), - (3, 3, 2); - -INSERT INTO `vn`.`parking` (`column`, `row`, `sectorFk`, `code`, `pickingOrder`) - VALUES - ('100', '01', 1, '100-01', 1); - -INSERT INTO `vn`.`shelving` (`code`, `parkingFk`, `priority`, `userFk`) - VALUES - ('UXN', 1, 1, 1106); - -INSERT INTO `vn`.`itemShelving` (`itemFk`, `shelvingFk`, `shelve`, `deep`, `quantity`, `visible`, `available`, `grouping`, `packing`, `level`, `userFk`) - VALUES - (1, 'UXN', 'A', 2, 12, 12, 12, 12, 12, 1, 1106); - -INSERT INTO `vn`.`ticketCollection` (`ticketFk`, `collectionFk`, `level`) - VALUES - (1, 1, 1); + (1, 1, 1), + (2, 1, NULL), + (3, 2, NULL), + (23, 1, NULL); INSERT INTO `vn`.`genus`(`id`, `name`) VALUES @@ -1256,22 +1319,22 @@ INSERT INTO `vn`.`itemTypeTag`(`id`, `itemTypeFk`, `tagFk`, `priority`) VALUES (1, 1, 1, 0), (2, 2, 2, 0), - (3, 3, 3, 1), - (4, 1, 4, 1), - (5, 1, 5, 1); + (3, 3, 3, 0), + (4, 1, 4, 4), + (5, 1, 5, 5); CALL `vn`.`itemRefreshTags`(NULL); INSERT INTO `vn`.`itemLog` (`id`, `originFk`, `userFk`, `action`, `description`) - VALUES + VALUES ('1', '1', '1', 'insert', 'We made a change!'); INSERT INTO `vn`.`recovery`(`id`, `clientFk`, `started`, `finished`, `amount`, `period`) VALUES - (1, 1101, DATE_ADD(CURDATE(),INTERVAL -7 MONTH), DATE_ADD(CURDATE(),INTERVAL -3 MONTH), 50, 7), - (2, 1102, DATE_ADD(CURDATE(),INTERVAL -5 MONTH), CURDATE(), 100, 1), - (3, 1102, CURDATE(), DATE_ADD(CURDATE(),INTERVAL 1 MONTH), 50, 7), - (4, 1103, CURDATE(), NULL, 50, 7); + (1, 1101, DATE_ADD(util.VN_CURDATE(),INTERVAL -7 MONTH), DATE_ADD(util.VN_CURDATE(),INTERVAL -3 MONTH), 50, 7), + (2, 1102, DATE_ADD(util.VN_CURDATE(),INTERVAL -5 MONTH), util.VN_CURDATE(), 100, 1), + (3, 1102, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(),INTERVAL 1 MONTH), 50, 7), + (4, 1103, util.VN_CURDATE(), NULL, 50, 7); INSERT INTO `vn`.`annualAverageInvoiced`(`clientFk`, `invoiced`) VALUES @@ -1281,40 +1344,11 @@ INSERT INTO `vn`.`annualAverageInvoiced`(`clientFk`, `invoiced`) (1104, 500), (1105, 5000); -INSERT INTO `vn`.`supplierActivity`(`code`, `name`) - VALUES - ('animals', 'Food and complements for pets'), - ('complements', 'Other complements'), - ('flowerPlants', 'Wholesale of flowers and plants'), - ('vegetablesFruits', 'Fruit and vegetable trade'); - -INSERT INTO `vn`.`supplierAddress`(`id`, `supplierFk`, `nickname`, `street`, `provinceFk`, `postalCode`, `city`, `phone`, `mobile`) - VALUES - (1, 1, 'Ace Chemicals', 'The Midtown', 1, '46000', 'Gotham', '111111111', '222222222'), - (2, 1, 'Arkham Asylum', 'Grand Avenue', 1, '46000', 'Gotham', '111111111', '222222222'), - (3, 2, 'Wayne Tower', 'Grand Avenue', 1, '46000', 'Gotham', '111111111', '222222222'), - (4, 2, 'Bank of Gotham', 'Founders Island', 1, '46000', 'Gotham', '111111111', '222222222'), - (5, 442, 'GCR building', 'Bristol district', 1, '46000', 'Gotham', '111111111', '222222222'), - (6, 442, 'The Gotham Tonight building', 'Bristol district', 1, '46000', 'Gotham', '111111111', '222222222'); - -INSERT INTO `vn`.`supplier`(`id`, `name`, `nickname`,`account`,`countryFk`,`nif`, `commission`, `created`, `isActive`, `street`, `city`, `provinceFk`, `postCode`, `payMethodFk`, `payDemFk`, `payDay`, `taxTypeSageFk`, `withholdingSageFk`, `transactionTypeSageFk`, `workerFk`, `supplierActivityFk`, `isPayMethodChecked`) - VALUES - (1, 'Plants SL', 'Plants nick', 4100000001, 1, '06089160W', 0, CURDATE(), 1, 'supplier address 1', 'PONTEVEDRA', 1, 15214, 1, 1, 15, 4, 1, 1, 18, 'flowerPlants', 1), - (2, 'Farmer King', 'The farmer', 4000020002, 1, '87945234L', 0, CURDATE(), 1, 'supplier address 2', 'SILLA', 2, 43022, 1, 2, 10, 93, 2, 8, 18, 'animals', 1), - (442, 'Verdnatura Levante SL', 'Verdnatura', 5115000442, 1, '06815934E', 0, CURDATE(), 1, 'supplier address 3', 'SILLA', 1, 43022, 1, 2, 15, 6, 9, 3, 18, 'flowerPlants', 1); - -INSERT INTO `vn`.`supplierContact`(`id`, `supplierFk`, `phone`, `mobile`, `email`, `observation`, `name`) - VALUES - (1, 1, 123121212, 654789123, 'supplier1@email.es', 'observation1', 'the boss'), - (2, 1, 987456132, NULL, NULL, NULL, 'the salesperson'), - (3, 2, 321654987, NULL, 'supplier2@email.es', NULL, NULL), - (4, 442, 321654987, NULL, NULL, 'observation442', NULL); - INSERT INTO `cache`.`cache_calc`(`id`, `cache_id`, `cacheName`, `params`, `last_refresh`, `expires`, `created`, `connection_id`) VALUES - (1, 2, 'available', CONCAT_WS('/',1,CURDATE()), CURRENT_TIMESTAMP(), DATE_ADD(CURRENT_TIMESTAMP(),INTERVAL 15 MINUTE), CURDATE(), NULL), - (2, 4, 'last_buy', CONCAT_WS('/',1,CURDATE()), CURRENT_TIMESTAMP(), DATE_ADD(CURRENT_TIMESTAMP(),INTERVAL 15 MINUTE), CURDATE(), NULL), - (3, 8, 'visible', CONCAT_WS('/',1,CURDATE()), CURRENT_TIMESTAMP(), DATE_ADD(CURRENT_TIMESTAMP(),INTERVAL 15 MINUTE), CURDATE(), NULL); + (1, 2, 'available', CONCAT_WS('/',1,util.VN_CURDATE()), util.VN_NOW(), DATE_ADD(util.VN_NOW(),INTERVAL 15 MINUTE), util.VN_CURDATE(), NULL), + (2, 4, 'last_buy', CONCAT_WS('/',1,util.VN_CURDATE()), util.VN_NOW(), DATE_ADD(util.VN_NOW(),INTERVAL 15 MINUTE), util.VN_CURDATE(), NULL), + (3, 8, 'visible', CONCAT_WS('/',1,util.VN_CURDATE()), util.VN_NOW(), DATE_ADD(util.VN_NOW(),INTERVAL 15 MINUTE), util.VN_CURDATE(), NULL); INSERT INTO `vn`.`ticketWeekly`(`ticketFk`, `weekDay`) VALUES @@ -1324,128 +1358,121 @@ INSERT INTO `vn`.`ticketWeekly`(`ticketFk`, `weekDay`) (4, 4), (5, 6); -INSERT INTO `vn`.`travel`(`id`,`shipped`, `landed`, `warehouseInFk`, `warehouseOutFk`, `agencyFk`, `m3`, `kg`,`ref`, `totalEntries`, `cargoSupplierFk`) +INSERT INTO `vn`.`travel`(`id`,`shipped`, `landed`, `warehouseInFk`, `warehouseOutFk`, `agencyModeFk`, `m3`, `kg`,`ref`, `totalEntries`, `cargoSupplierFk`) VALUES - (1, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), DATE_ADD(CURDATE(), INTERVAL -2 MONTH), 1, 2, 1, 100.00, 1000, 'first travel', 1, 1), - (2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 2, 1, 150, 2000, 'second travel', 2, 2), - (3, CURDATE(), CURDATE(), 1, 2, 1, 0.00, 0.00, 'third travel', 1, 1), - (4, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 3, 1, 50.00, 500, 'fourth travel', 0, 2), - (5, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 3, 3, 1, 50.00, 500, 'fifth travel', 1, 1), - (6, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 4, 4, 1, 50.00, 500, 'sixth travel', 1, 2), - (7, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 5, 4, 1, 50.00, 500, 'seventh travel', 2, 1), - (8, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 5, 1, 1, 50.00, 500, 'eight travel', 1, 2); + (1, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 1, 2, 1, 100.00, 1000, 'first travel', 1, 1), + (2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 2, 1, 150, 2000, 'second travel', 2, 2), + (3, util.VN_CURDATE(), util.VN_CURDATE(), 1, 2, 1, 0.00, 0.00, 'third travel', 1, 1), + (4, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 3, 1, 50.00, 500, 'fourth travel', 0, 2), + (5, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 3, 3, 1, 50.00, 500, 'fifth travel', 1, 1), + (6, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 4, 4, 1, 50.00, 500, 'sixth travel', 1, 2), + (7, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 5, 4, 1, 50.00, 500, 'seventh travel', 2, 1), + (8, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 5, 1, 1, 50.00, 500, 'eight travel', 1, 2); -INSERT INTO `vn`.`entry`(`id`, `supplierFk`, `created`, `travelFk`, `isConfirmed`, `companyFk`, `ref`,`isInventory`, `isRaid`, `notes`, `evaNotes`) +INSERT INTO `vn`.`entry`(`id`, `supplierFk`, `created`, `travelFk`, `isConfirmed`, `companyFk`, `ref`,`isExcludedFromAvailable`, `isRaid`, `notes`, `evaNotes`) VALUES - (1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 1, 442, 'Movement 1', 0, 0, '', ''), - (2, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 2, 0, 442, 'Movement 2', 0, 0, 'this is the note two', 'observation two'), - (3, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 3, 0, 442, 'Movement 3', 0, 0, 'this is the note three', 'observation three'), - (4, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 2, 0, 69, 'Movement 4', 0, 0, 'this is the note four', 'observation four'), - (5, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 5, 0, 442, 'Movement 5', 0, 0, 'this is the note five', 'observation five'), - (6, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 6, 0, 442, 'Movement 6', 0, 0, 'this is the note six', 'observation six'), - (7, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 7, 0, 442, 'Movement 7', 0, 0, 'this is the note seven', 'observation seven'), - (8, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 7, 0, 442, 'Movement 8', 1, 1, '', ''); - -INSERT INTO `vn`.`claimRatio`(`clientFk`, `yearSale`, `claimAmount`, `claimingRate`, `priceIncreasing`, `packingRate`) - VALUES - (1101, 500, NULL, 0.00, 0.00, 1.00), - (1102, 1000, 2.00, 0.01, 0.05, 1.00), - (1103, 2000, 0.00, 0.00, 0.02, 1.00), - (1104, 2500, 150.00, 0.02, 0.10, 1.00); + (1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 1, 442, 'Movement 1', 0, 0, '', ''), + (2, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 0, 442, 'Movement 2', 0, 0, 'this is the note two', 'observation two'), + (3, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 3, 0, 442, 'Movement 3', 0, 0, 'this is the note three', 'observation three'), + (4, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 0, 69, 'Movement 4', 0, 0, 'this is the note four', 'observation four'), + (5, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 5, 0, 442, 'Movement 5', 0, 0, 'this is the note five', 'observation five'), + (6, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 6, 0, 442, 'Movement 6', 0, 0, 'this is the note six', 'observation six'), + (7, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 7, 0, 442, 'Movement 7', 0, 0, 'this is the note seven', 'observation seven'), + (8, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 7, 0, 442, 'Movement 8', 1, 1, '', ''); INSERT INTO `bs`.`waste`(`buyer`, `year`, `week`, `family`, `itemFk`, `itemTypeFk`, `saleTotal`, `saleWaste`, `rate`) VALUES - ('CharlesXavier', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(CURDATE(), INTERVAL -1 WEEK), 1), 'Carnation', 1, 1, '1062', '51', '4.8'), - ('CharlesXavier', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(CURDATE(), INTERVAL -1 WEEK), 1), 'Carnation Colombia', 2, 1, '35074', '687', '2.0'), - ('CharlesXavier', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(CURDATE(), INTERVAL -1 WEEK), 1), 'Carnation Mini', 3, 1, '1777', '13', '0.7'), - ('CharlesXavier', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(CURDATE(), INTERVAL -1 WEEK), 1), 'Carnation Short', 4, 1, '3182', '59', '0.6'), - ('CharlesXavier', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(CURDATE(), INTERVAL -1 WEEK), 1), 'Crisantemo', 5, 1, '1747', '13', '0.7'), - ('CharlesXavier', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(CURDATE(), INTERVAL -1 WEEK), 1), 'Lilium Oriental', 6, 1, '7182', '59', '0.6'), - ('CharlesXavier', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(CURDATE(), INTERVAL -1 WEEK), 1), 'Alstroemeria', 7, 1, '1777', '13', '0.7'), - ('CharlesXavier', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(CURDATE(), INTERVAL -1 WEEK), 1), 'Cymbidium', 1, 1, '4181', '59', '0.6'), - ('CharlesXavier', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(CURDATE(), INTERVAL -1 WEEK), 1), 'Cymbidium', 2, 1, '7268', '59', '0.6'), - ('DavidCharlesHaller', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(CURDATE(), INTERVAL -1 WEEK), 1), 'Containers', 2, 1, '-74', '0', '0.0'), - ('DavidCharlesHaller', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(CURDATE(), INTERVAL -1 WEEK), 1), 'Packagings', 3, 1, '-7', '0', '0.0'), - ('DavidCharlesHaller', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(CURDATE(), INTERVAL -1 WEEK), 1), 'Freight', 4, 1, '1100', '0', '0.0'), - ('HankPym', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(CURDATE(), INTERVAL -1 WEEK), 1), 'Funeral Accessories', 5, 1, '848', '-187', '-22.1'), - ('HankPym', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(CURDATE(), INTERVAL -1 WEEK), 1), 'Miscellaneous Accessories', 6, 1, '186', '0', '0.0'), - ('HankPym', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(CURDATE(), INTERVAL -1 WEEK), 1), 'Adhesives', 7, 1, '277', '0', '0.0'); + ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Carnation', 1, 1, '1062', '51', '4.8'), + ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Carnation Colombia', 2, 1, '35074', '687', '2.0'), + ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Carnation Mini', 3, 1, '1777', '13', '0.7'), + ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Carnation Short', 4, 1, '3182', '59', '0.6'), + ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Crisantemo', 5, 1, '1747', '13', '0.7'), + ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Lilium Oriental', 6, 1, '7182', '59', '0.6'), + ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Alstroemeria', 7, 1, '1777', '13', '0.7'), + ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Cymbidium', 1, 1, '4181', '59', '0.6'), + ('CharlesXavier', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Cymbidium', 2, 1, '7268', '59', '0.6'), + ('DavidCharlesHaller', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Containers', 2, 1, '-74', '0', '0.0'), + ('DavidCharlesHaller', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Packagings', 3, 1, '-7', '0', '0.0'), + ('DavidCharlesHaller', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Freight', 4, 1, '1100', '0', '0.0'), + ('HankPym', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Funeral Accessories', 5, 1, '848', '-187', '-22.1'), + ('HankPym', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Miscellaneous Accessories', 6, 1, '186', '0', '0.0'), + ('HankPym', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK)), WEEK(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 WEEK), 1), 'Adhesives', 7, 1, '277', '0', '0.0'); INSERT INTO `vn`.`buy`(`id`,`entryFk`,`itemFk`,`buyingValue`,`quantity`,`packageFk`,`stickers`,`freightValue`,`packageValue`,`comissionValue`,`packing`,`grouping`,`groupingMode`,`location`,`price1`,`price2`,`price3`,`producer`,`printedStickers`,`isChecked`,`isIgnored`,`weight`, `created`) VALUES - (1, 1, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 1, NULL, 0.00, 99.6, 99.4, NULL, 0, 1, 0, 1, DATE_ADD(CURDATE(), INTERVAL -2 MONTH)), - (2, 2, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, 1, NULL, 0.00, 99.6, 99.4, NULL, 0, 1, 0, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (3, 3, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, 0, NULL, 0.00, 99.6, 99.4, NULL, 0, 1, 0, 1, CURDATE()), - (4, 2, 2, 5, 450, 3, 1, 1.000, 1.000, 0.000, 10, 10, 0, NULL, 0.00, 7.30, 7.00, NULL, 0, 1, 0, 2.5, CURDATE()), - (5, 3, 3, 55, 500, 5, 1, 1.000, 1.000, 0.000, 1, 1, 0, NULL, 0.00, 78.3, 75.6, NULL, 0, 1, 0, 2.5, CURDATE()), - (6, 4, 8, 50, 1000, 4, 1, 1.000, 1.000, 0.000, 1, 1, 1, NULL, 0.00, 99.6, 99.4, NULL, 0, 1, 0, 2.5, CURDATE()), - (7, 4, 9, 20, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 1, NULL, 0.00, 30.50, 29.00, NULL, 0, 1, 0, 2.5, CURDATE()), - (8, 4, 4, 1.25, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 1, NULL, 0.00, 1.75, 1.67, NULL, 0, 1, 0, 2.5, CURDATE()), - (9, 4, 4, 1.25, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 1, NULL, 0.00, 1.75, 1.67, NULL, 0, 1, 0, 4, CURDATE()), - (10, 5, 1, 50, 10, 4, 1, 2.500, 2.500, 0.000, 1, 1, 1, NULL, 0.00, 99.6, 99.4, NULL, 0, 1, 0, 4, CURDATE()), - (11, 5, 4, 1.25, 10, 3, 1, 2.500, 2.500, 0.000, 10, 10, 1, NULL, 0.00, 1.75, 1.67, NULL, 0, 1, 0, 4, CURDATE()), - (12, 6, 4, 1.25, 0, 3, 1, 2.500, 2.500, 0.000, 10, 10, 1, NULL, 0.00, 1.75, 1.67, NULL, 0, 1, 0, 4, CURDATE()), - (13, 7, 1, 50, 0, 3, 1, 2.000, 2.000, 0.000, 1, 1, 1, NULL, 0.00, 99.6, 99.4, NULL, 0, 1, 0, 4, CURDATE()), - (14, 7, 2, 5, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 1, NULL, 0.00, 7.30, 7.00, NULL, 0, 1, 0, 4, CURDATE()), - (15, 7, 4, 1.25, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 1, NULL, 0.00, 1.75, 1.67, NULL, 0, 1, 0, 4, CURDATE()); + (1, 1, 1, 50, 5000, 4, 1, 1.500, 1.500, 0.000, 1, 1, 1, NULL, 0.00, 99.6, 99.4, NULL, 0, 1, 0, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH)), + (2, 2, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, 1, NULL, 0.00, 99.6, 99.4, NULL, 0, 1, 0, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (3, 3, 1, 50, 100, 4, 1, 1.500, 1.500, 0.000, 1, 1, 0, NULL, 0.00, 99.6, 99.4, NULL, 0, 1, 0, 1, util.VN_CURDATE()), + (4, 2, 2, 5, 450, 3, 1, 1.000, 1.000, 0.000, 10, 10, 0, NULL, 0.00, 7.30, 7.00, NULL, 0, 1, 0, 2.5, util.VN_CURDATE()), + (5, 3, 3, 55, 500, 5, 1, 1.000, 1.000, 0.000, 1, 1, 0, NULL, 0.00, 78.3, 75.6, NULL, 0, 1, 0, 2.5, util.VN_CURDATE()), + (6, 4, 8, 50, 1000, 4, 1, 1.000, 1.000, 0.000, 1, 1, 1, NULL, 0.00, 99.6, 99.4, NULL, 0, 1, 0, 2.5, util.VN_CURDATE()), + (7, 4, 9, 20, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 1, NULL, 0.00, 30.50, 29.00, NULL, 0, 1, 0, 2.5, util.VN_CURDATE()), + (8, 4, 4, 1.25, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 1, NULL, 0.00, 1.75, 1.67, NULL, 0, 1, 0, 2.5, util.VN_CURDATE()), + (9, 4, 4, 1.25, 1000, 3, 1, 0.500, 0.500, 0.000, 10, 10, 1, NULL, 0.00, 1.75, 1.67, NULL, 0, 1, 0, 4, util.VN_CURDATE()), + (10, 5, 1, 50, 10, 4, 1, 2.500, 2.500, 0.000, 1, 1, 1, NULL, 0.00, 99.6, 99.4, NULL, 0, 1, 0, 4, util.VN_CURDATE()), + (11, 5, 4, 1.25, 10, 3, 1, 2.500, 2.500, 0.000, 10, 10, 1, NULL, 0.00, 1.75, 1.67, NULL, 0, 1, 0, 4, util.VN_CURDATE()), + (12, 6, 4, 1.25, 0, 3, 1, 2.500, 2.500, 0.000, 10, 10, 1, NULL, 0.00, 1.75, 1.67, NULL, 0, 1, 0, 4, util.VN_CURDATE()), + (13, 7, 1, 50, 0, 3, 1, 2.000, 2.000, 0.000, 1, 1, 1, NULL, 0.00, 99.6, 99.4, NULL, 0, 1, 0, 4, util.VN_CURDATE()), + (14, 7, 2, 5, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 1, NULL, 0.00, 7.30, 7.00, NULL, 0, 1, 0, 4, util.VN_CURDATE()), + (15, 7, 4, 1.25, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 1, NULL, 0.00, 1.75, 1.67, NULL, 0, 1, 0, 4, util.VN_CURDATE()); INSERT INTO `hedera`.`order`(`id`, `date_send`, `customer_id`, `delivery_method_id`, `agency_id`, `address_id`, `company_id`, `note`, `source_app`, `confirmed`,`total`, `date_make`, `first_row_stamp`, `confirm_date`) VALUES - (1, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 3, 1, 121, 442, NULL, 'TPV', 1,'155.89', DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (2, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1104, 3, 1, 124, 442, NULL, 'WEB', 1,'100.10', DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (3, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -2 MONTH), INTERVAL +1 DAY), 1104, 1, 2, 124, 442, NULL, 'ANDROID', 1,'107.25', DATE_ADD(CURDATE(), INTERVAL -2 MONTH), DATE_ADD(CURDATE(), INTERVAL -2 MONTH), DATE_ADD(CURDATE(), INTERVAL -2 MONTH)), - (4, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -3 MONTH), INTERVAL +1 DAY), 1104, 1, 2, 124, 442, NULL, 'SALIX', 1,'10.01', DATE_ADD(CURDATE(), INTERVAL -3 MONTH), DATE_ADD(CURDATE(), INTERVAL -3 MONTH), DATE_ADD(CURDATE(), INTERVAL -3 MONTH)), - (5, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -4 MONTH), INTERVAL +1 DAY), 1104, 1, 3, 124, 442, NULL, 'SALIX', 1,'10.01', DATE_ADD(CURDATE(), INTERVAL -4 MONTH), DATE_ADD(CURDATE(), INTERVAL -4 MONTH), DATE_ADD(CURDATE(), INTERVAL -4 MONTH)), - (6, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 1, 3, 1, 442, NULL, 'SALIX', 1,'10.01', DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (7, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1101, 2, 7, 1, 442, NULL, 'SALIX', 0,'10.01', CURDATE(), CURDATE(), CURDATE()), - (8, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1101, 2, 7, 121, 442, NULL, 'SALIX', 0,'123.53', CURDATE(), CURDATE(), CURDATE()), - (9, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1104, 2, 7, 124, 442, NULL, 'SALIX', 0,'10.01', CURDATE(), CURDATE(), CURDATE()), - (10, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1102, 3, 1, 2, 442, NULL, 'SALIX', 0,'10.01', CURDATE(), CURDATE(), CURDATE()), - (11, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1102, 2, 7, 122, 442, NULL, 'SALIX', 0,'60.90', CURDATE(), CURDATE(), CURDATE()), - (12, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1103, 3, 1, 3, 442, NULL, 'SALIX', 0,'72.60', CURDATE(), CURDATE(), CURDATE()), - (13, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1103, 1, 2, 123, 442, NULL, 'SALIX', 0,'72.60', CURDATE(), CURDATE(), CURDATE()), - (14, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1104, 1, 2, 4, 442, NULL, 'SALIX', 0,'72.60', CURDATE(), CURDATE(), CURDATE()), - (15, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1105, 1, 3, 125, 442, NULL, 'SALIX', 0,'72.60', CURDATE(), CURDATE(), CURDATE()), - (16, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1106, 2, 7, 126, 442, NULL, 'SALIX', 0,'155.89', CURDATE(), CURDATE(), CURDATE()), - (17, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1107, 1, 4, 127, 442, NULL, 'SALIX', 0,'72.60', CURDATE(), CURDATE(), CURDATE()), - (18, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1108, 1, 4, 128, 442, NULL, 'SALIX', 0,'72.60', CURDATE(), CURDATE(), CURDATE()), - (19, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 1109, 1, 5, 129, 442, NULL, 'SALIX', 0,'16.50', CURDATE(), CURDATE(), CURDATE()), - (20, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 1, 5, 101, 442, NULL, 'SALIX', 0,'21.45', DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), - (21, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 1, 5, 102, 442, NULL, 'SALIX', 0,'0.00', DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), - (22, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 1, 5, 103, 442, NULL, 'SALIX', 0,'148.50', DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(CURDATE(), INTERVAL +1 MONTH)); + (1, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 3, 1, 121, 442, NULL, 'TPV', 1,'155.89', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (2, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1104, 3, 1, 124, 442, NULL, 'WEB', 1,'100.10', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (3, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -2 MONTH), INTERVAL +1 DAY), 1104, 1, 2, 124, 442, NULL, 'ANDROID', 1,'107.25', DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH)), + (4, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -3 MONTH), INTERVAL +1 DAY), 1104, 1, 2, 124, 442, NULL, 'SALIX', 1,'10.01', DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH)), + (5, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -4 MONTH), INTERVAL +1 DAY), 1104, 1, 3, 124, 442, NULL, 'SALIX', 1,'10.01', DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH)), + (6, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 1101, 1, 3, 1, 442, NULL, 'SALIX', 1,'10.01', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH)), + (7, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 2, 7, 1, 442, NULL, 'SALIX', 0,'10.01', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (8, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1101, 2, 7, 121, 442, NULL, 'SALIX', 0,'123.53', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (9, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1104, 2, 7, 124, 442, NULL, 'SALIX', 0,'10.01', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (10, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 3, 1, 2, 442, NULL, 'SALIX', 0,'10.01', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (11, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1102, 2, 7, 122, 442, NULL, 'SALIX', 0,'60.90', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (12, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 3, 1, 3, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (13, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 1, 2, 123, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (14, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1104, 1, 2, 4, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (15, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1105, 1, 3, 125, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (16, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1106, 2, 7, 126, 442, NULL, 'SALIX', 0,'155.89', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (17, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1107, 1, 4, 127, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (18, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1108, 1, 4, 128, 442, NULL, 'SALIX', 0,'72.60', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (19, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1109, 1, 5, 129, 442, NULL, 'SALIX', 0,'16.50', util.VN_CURDATE(), util.VN_CURDATE(), util.VN_CURDATE()), + (20, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 1, 5, 101, 442, NULL, 'SALIX', 0,'21.45', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)), + (21, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 1, 5, 102, 442, NULL, 'SALIX', 0,'0.00', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)), + (22, DATE_ADD(DATE_ADD(util.VN_CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 1109, 1, 5, 103, 442, NULL, 'SALIX', 0,'148.50', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)); INSERT INTO `hedera`.`orderRow`(`id`, `orderFk`, `itemFk`, `warehouseFk`, `shipment`, `amount`, `price`, `rate`, `created`, `saleFk`) VALUES - (1, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 5, 9.10, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1), - (2, 1, 2, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 10, 1.07, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 2), - (3, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 2, 9.10, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 3), - (4, 1, 4, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 20, 3.06, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 4), - (5, 2, 1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 10, 9.10, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 5), - (6, 3, 1, 2, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), 15, 6.50, 0, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), 6), - (7, 11, 2, 1, CURDATE(), 15, 1.30, 0, CURDATE(), 7), - (8, 11, 4, 1, CURDATE(), 10, 3.26, 0, CURDATE(), 8), - (9, 16, 1, 1, CURDATE(), 5, 9.10, 0, CURDATE(), 9), - (10, 16, 2, 1, CURDATE(), 10, 1.07, 0, CURDATE(), 10), - (11, 16, 1, 1, CURDATE(), 2, 9.10, 0, CURDATE(), 11), - (12, 16, 4, 1, CURDATE(), 20, 3.06, 0, CURDATE(), 12), - (13, 8, 2, 1, CURDATE(), 15, 1.30, 0, CURDATE(), 13), - (14, 8, 1, 1, CURDATE(), 10, 9.28, 0, CURDATE(), 14), - (15, 19, 1, 1, CURDATE(), 10, 1.50, 0, CURDATE(), 15), - (16, 20, 2, 1, CURDATE(), 15, 1.30, 0, CURDATE(), 16), - (17, 22, 2, 1, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), 30, 2.30, 0, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), 17), - (18, 22, 4, 1, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), 20, 3.00, 0, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), 18), - (19, 4, 1, 1, DATE_ADD(CURDATE(), INTERVAL -3 MONTH), 1, 9.10, 0, DATE_ADD(CURDATE(), INTERVAL -3 MONTH), 19), - (20, 5, 1, 1, DATE_ADD(CURDATE(), INTERVAL -4 MONTH), 1, 9.10, 0, DATE_ADD(CURDATE(), INTERVAL -4 MONTH), 20), - (21, 6, 1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 9.10, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 21), - (22, 7, 1, 1, CURDATE(), 1, 9.10, 0, CURDATE(), 22), - (23, 9, 1, 1, CURDATE(), 1, 9.10, 0, CURDATE(), 23), - (24, 10, 1, 1, CURDATE(), 1, 9.10, 0, CURDATE(), 24), - (25, 12, 4, 1, CURDATE(), 20, 3.00, 0, CURDATE(), 25), - (26, 13, 4, 1, CURDATE(), 20, 3.00, 0, CURDATE(), 26), - (27, 14, 4, 1, CURDATE(), 20, 3.00, 0, CURDATE(), 27), - (28, 15, 4, 1, CURDATE(), 20, 3.00, 0, CURDATE(), 28), - (29, 17, 4, 1, CURDATE(), 20, 3.00, 0, CURDATE(), 29), - (30, 18, 4, 1, CURDATE(), 20, 3.00, 0, CURDATE(), 30); + (1, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 5, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1), + (2, 1, 2, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 10, 1.07, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2), + (3, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 3), + (4, 1, 4, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 20, 3.06, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 4), + (5, 2, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 10, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 5), + (6, 3, 1, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 15, 6.50, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -2 MONTH), 6), + (7, 11, 2, 1, util.VN_CURDATE(), 15, 1.30, 0, util.VN_CURDATE(), 7), + (8, 11, 4, 1, util.VN_CURDATE(), 10, 3.26, 0, util.VN_CURDATE(), 8), + (9, 16, 1, 1, util.VN_CURDATE(), 5, 9.10, 0, util.VN_CURDATE(), 9), + (10, 16, 2, 1, util.VN_CURDATE(), 10, 1.07, 0, util.VN_CURDATE(), 10), + (11, 16, 1, 1, util.VN_CURDATE(), 2, 9.10, 0, util.VN_CURDATE(), 11), + (12, 16, 4, 1, util.VN_CURDATE(), 20, 3.06, 0, util.VN_CURDATE(), 12), + (13, 8, 2, 1, util.VN_CURDATE(), 15, 1.30, 0, util.VN_CURDATE(), 13), + (14, 8, 1, 1, util.VN_CURDATE(), 10, 9.28, 0, util.VN_CURDATE(), 14), + (15, 19, 1, 1, util.VN_CURDATE(), 10, 1.50, 0, util.VN_CURDATE(), 15), + (16, 20, 2, 1, util.VN_CURDATE(), 15, 1.30, 0, util.VN_CURDATE(), 16), + (17, 22, 2, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 30, 2.30, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 17), + (18, 22, 4, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 20, 3.00, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH), 18), + (19, 4, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), 1, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -3 MONTH), 19), + (20, 5, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), 1, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -4 MONTH), 20), + (21, 6, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 9.10, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 21), + (22, 7, 1, 1, util.VN_CURDATE(), 1, 9.10, 0, util.VN_CURDATE(), 22), + (23, 9, 1, 1, util.VN_CURDATE(), 1, 9.10, 0, util.VN_CURDATE(), 23), + (24, 10, 1, 1, util.VN_CURDATE(), 1, 9.10, 0, util.VN_CURDATE(), 24), + (25, 12, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 25), + (26, 13, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 26), + (27, 14, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 27), + (28, 15, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 28), + (29, 17, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 29), + (30, 18, 4, 1, util.VN_CURDATE(), 20, 3.00, 0, util.VN_CURDATE(), 30); INSERT INTO `hedera`.`orderRowComponent`(`rowFk`, `componentFk`, `price`) VALUES @@ -1468,8 +1495,8 @@ INSERT INTO `hedera`.`orderRowComponent`(`rowFk`, `componentFk`, `price`) (4, 21, -0.001), (4, 28, 20.72), (4, 29, -19.72), - (4, 37, 2), - (4, 39, 0.01), + (4, 37, 2), + (4, 39, 0.01), (5, 15, 0.58), (5, 23, 6.5), (5, 28, 20.72), @@ -1605,63 +1632,71 @@ INSERT INTO `hedera`.`orderRowComponent`(`rowFk`, `componentFk`, `price`) INSERT INTO `hedera`.`visit`(`id`, `firstAgentFk`) VALUES - (1, NULL), - (2, NULL), - (3, NULL), - (4, NULL), - (5, NULL), - (6, NULL), - (7, NULL), - (8, NULL), - (9, NULL); + (1, NULL), + (2, NULL), + (3, NULL), + (4, NULL), + (5, NULL), + (6, NULL), + (7, NULL), + (8, NULL), + (9, NULL), + (10, NULL), + (11, NULL); INSERT INTO `hedera`.`visitAgent`(`id`, `visitFk`) VALUES - (1, 1), - (2, 2), - (3, 3), - (4, 4), - (5, 5), - (6, 6), - (7, 7), - (8, 8), - (9, 9); + (1, 1), + (2, 2), + (3, 3), + (4, 4), + (5, 5), + (6, 6), + (7, 7), + (8, 8), + (9, 9), + (10, 10), + (11, 11); INSERT INTO `hedera`.`visitAccess`(`id`, `agentFk`, `stamp`) VALUES - (1, 1, CURDATE()), - (2, 2, CURDATE()), - (3, 3, CURDATE()), - (4, 4, CURDATE()), - (5, 5, CURDATE()), - (6, 6, CURDATE()), - (7, 7, CURDATE()), - (8, 8, CURDATE()), - (9, 9, CURDATE()); + (1, 1, util.VN_CURDATE()), + (2, 2, util.VN_CURDATE()), + (3, 3, util.VN_CURDATE()), + (4, 4, util.VN_CURDATE()), + (5, 5, util.VN_CURDATE()), + (6, 6, util.VN_CURDATE()), + (7, 7, util.VN_CURDATE()), + (8, 8, util.VN_CURDATE()), + (9, 9, util.VN_CURDATE()), + (10, 10, util.VN_CURDATE()), + (11, 11, util.VN_CURDATE()); INSERT INTO `hedera`.`visitUser`(`id`, `accessFk`, `userFk`, `stamp`) VALUES - (1, 1, 1101, CURDATE()), - (2, 2, 1101, CURDATE()), - (3, 3, 1101, CURDATE()), - (4, 4, 1102, CURDATE()), - (5, 5, 1102, CURDATE()), - (6, 6, 1102, CURDATE()), - (7, 7, 1103, CURDATE()), - (8, 8, 1103, CURDATE()), - (9, 9, 1103, CURDATE()); + (1, 1, 1101, util.VN_CURDATE()), + (2, 2, 1101, util.VN_CURDATE()), + (3, 3, 1101, util.VN_CURDATE()), + (4, 4, 1102, util.VN_CURDATE()), + (5, 5, 1102, util.VN_CURDATE()), + (6, 6, 1102, util.VN_CURDATE()), + (7, 7, 1103, util.VN_CURDATE()), + (8, 8, 1103, util.VN_CURDATE()), + (9, 9, 1103, util.VN_CURDATE()), + (10, 10, 1102, DATE_SUB(util.VN_CURDATE(), INTERVAL 1 DAY)), + (11, 11, 1103, DATE_SUB(util.VN_CURDATE(), INTERVAL 1 DAY)); INSERT INTO `hedera`.`userSession`(`created`, `lastUpdate`, `ssid`, `data`, `userVisitFk`) VALUES - (CURDATE(), CURDATE(), '121', 'data', 1), - (CURDATE(), CURDATE(), '122', 'data', 2), - (CURDATE(), CURDATE(), '123', 'data', 3), - (CURDATE(), CURDATE(), '124', 'data', 4), - (CURDATE(), CURDATE(), '125', 'data', 5), - (CURDATE(), CURDATE(), '126', 'data', 6), - (CURDATE(), CURDATE(), '127', 'data', 7), - (CURDATE(), CURDATE(), '128', 'data', 8), - (CURDATE(), CURDATE(), '129', 'data', 9); + (util.VN_CURDATE(), util.VN_CURDATE(), '121', 'data', 1), + (util.VN_CURDATE(), util.VN_CURDATE(), '122', 'data', 2), + (util.VN_CURDATE(), util.VN_CURDATE(), '123', 'data', 3), + (util.VN_CURDATE(), util.VN_CURDATE(), '124', 'data', 4), + (util.VN_CURDATE(), util.VN_CURDATE(), '125', 'data', 5), + (util.VN_CURDATE(), util.VN_CURDATE(), '126', 'data', 6), + (util.VN_CURDATE(), util.VN_CURDATE(), '127', 'data', 7), + (util.VN_CURDATE(), util.VN_CURDATE(), '128', 'data', 8), + (util.VN_CURDATE(), util.VN_CURDATE(), '129', 'data', 9); INSERT INTO `vn`.`clientContact`(`id`, `clientFk`, `name`, `phone`) VALUES @@ -1680,33 +1715,40 @@ INSERT INTO `vn`.`workerManaExcluded`(`workerFk`) La otra manera es poner el calculo con los 2 trabajadores que utilizamos ahora mismo para los tickets */ -call vn.manaSpellersRequery(19); +call vn.manaSpellersRequery(19); call vn.manaSpellersRequery(18); INSERT INTO `vn`.`clientSample`(`id`, `clientFk`, `typeFk`, `created`, `workerFk`, `userFk`, `companyFk`) VALUES - (1, 1101, 1, CURDATE(), 18, 18, 442), - (2, 1101, 1, CURDATE(), 18, 18, 442), - (3, 1101, 2, CURDATE(), 18, 18, 442), - (4, 1102, 2, CURDATE(), 18, 18, 567), - (5, 1102, 3, CURDATE(), 19, 19, 567); + (1, 1101, 1, util.VN_CURDATE(), 18, 18, 442), + (2, 1101, 1, util.VN_CURDATE(), 18, 18, 442), + (3, 1101, 2, util.VN_CURDATE(), 18, 18, 442), + (4, 1102, 2, util.VN_CURDATE(), 18, 18, 567), + (5, 1102, 3, util.VN_CURDATE(), 19, 19, 567); -INSERT INTO `vn`.`claimState`(`id`, `code`, `description`, `roleFk`, `priority`) +INSERT INTO `vn`.`claimState`(`id`, `code`, `description`, `roleFk`, `priority`, `hasToNotify`) VALUES - ( 1, 'pending', 'Pendiente', 1, 1), - ( 2, 'managed', 'Gestionado', 1, 5), - ( 3, 'resolved', 'Resuelto', 72, 7), - ( 4, 'canceled', 'Anulado', 72, 6), - ( 5, 'incomplete', 'Incompleta', 72, 3), - ( 6, 'mana', 'Mana', 1, 4), - ( 7, 'lack', 'Faltas', 1, 2); + ( 1, 'pending', 'Pendiente', 1, 1, 0), + ( 2, 'managed', 'Gestionado', 1, 5, 0), + ( 3, 'resolved', 'Resuelto', 72, 7, 0), + ( 4, 'canceled', 'Anulado', 72, 6, 1), + ( 5, 'incomplete', 'Incompleta', 72, 3, 1), + ( 6, 'mana', 'Mana', 1, 4, 0), + ( 7, 'lack', 'Faltas', 1, 2, 0); -INSERT INTO `vn`.`claim`(`id`, `ticketCreated`, `claimStateFk`, `observation`, `clientFk`, `workerFk`, `responsibility`, `isChargedToMana`, `created` ) +INSERT INTO `vn`.`claim`(`id`, `ticketCreated`, `claimStateFk`, `clientFk`, `workerFk`, `responsibility`, `isChargedToMana`, `created`, `packages`, `rma`) VALUES - (1, CURDATE(), 1, 'observation one', 1101, 18, 3, 0, CURDATE()), - (2, CURDATE(), 2, 'observation two', 1101, 18, 3, 0, CURDATE()), - (3, CURDATE(), 3, 'observation three', 1101, 18, 1, 1, CURDATE()), - (4, CURDATE(), 3, 'observation four', 1104, 18, 5, 0, CURDATE()); + (1, util.VN_CURDATE(), 1, 1101, 18, 3, 0, util.VN_CURDATE(), 0, '02676A049183'), + (2, util.VN_CURDATE(), 2, 1101, 18, 3, 0, util.VN_CURDATE(), 1, NULL), + (3, util.VN_CURDATE(), 3, 1101, 18, 1, 1, util.VN_CURDATE(), 5, NULL), + (4, util.VN_CURDATE(), 3, 1104, 18, 5, 0, util.VN_CURDATE(), 10, NULL); + +INSERT INTO `vn`.`claimObservation` (`claimFk`, `workerFk`, `text`, `created`) + VALUES + (1, 18, 'Cu nam labores lobortis definiebas, ei aliquyam salutatus persequeris quo, cum eu nemore fierent dissentiunt. Per vero dolor id, vide democritum scribentur eu vim, pri erroribus temporibus ex.', util.VN_CURDATE()), + (2, 18, 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.', util.VN_CURDATE()), + (3, 18, 'An vim commodo dolorem volutpat, cu expetendis voluptatum usu, et mutat consul adversarium his. His natum numquam legimus an, diam fabulas mei ut. Melius fabellas sadipscing vel id. Partem diceret mandamus mea ne, has te tempor nostrud. Aeque nostro eum no.', util.VN_CURDATE()), + (4, 18, 'Wisi forensibus mnesarchum in cum. Per id impetus abhorreant, his no magna definiebas, inani rationibus in quo. Ut vidisse dolores est, ut quis nominavi mel. Ad pri quod apeirian concludaturque.', util.VN_CURDATE()); INSERT INTO `vn`.`claimBeginning`(`id`, `claimFk`, `saleFk`, `quantity`) VALUES @@ -1736,19 +1778,41 @@ INSERT INTO `vn`.`claimEnd`(`id`, `saleFk`, `claimFk`, `workerFk`, `claimDestina (1, 31, 4, 21, 2), (2, 32, 3, 21, 3); +INSERT INTO `vn`.`claimConfig`(`id`, `maxResponsibility`) + VALUES + (1, 50), + (2, 30); + +INSERT INTO `vn`.`claimRatio`(`clientFk`, `yearSale`, `claimAmount`, `claimingRate`, `priceIncreasing`, `packingRate`) + VALUES + (1101, 500, NULL, 0.00, 0.00, 1.00), + (1102, 1000, 2.00, 0.01, 0.05, 1.00), + (1103, 2000, 0.00, 0.00, 0.02, 1.00), + (1104, 2500, 150.00, 0.02, 0.10, 1.00); + +INSERT INTO vn.claimRma (`id`, `code`, `created`, `workerFk`) + VALUES + (1, '02676A049183', DEFAULT, 1106), + (2, '02676A049183', DEFAULT, 1106), + (3, '02676A049183', DEFAULT, 1107), + (4, '02676A049183', DEFAULT, 1107), + (5, '01837B023653', DEFAULT, 1106); + + + INSERT INTO `hedera`.`tpvMerchant`(`id`, `description`, `companyFk`, `bankFk`, `secretKey`) VALUES (1, 'Arkham Bank', 442, 1, 'h12387193H10238'), (2, 'NewYork Bank', 442, 1, '7981ugsgd1hsdad'); -INSERT INTO `hedera`.`tpvTransaction`(`id`,`merchantFk`, `clientFk`,`receiptFk`, `amount`, `response`, `errorCode`, `status`, `created`) - VALUES - (1, 1, 1101, NULL, 2000, NULL, 'SIS0042', 'ok', CURDATE()), - (2, 1, 1101, NULL, 1000, NULL, 'SIS0051', 'started', CURDATE()), - (3, 2, 1101, NULL, 7268, NULL, NULL, 'ok', CURDATE()), - (4, 2, 1101, NULL, 4698, NULL, NULL, 'started', CURDATE()), - (5, 1, 1104, NULL, 2000, NULL, 'SIS0043', 'ok', CURDATE()), - (6, 2, 1104, NULL, 4000, NULL, 'SIS0044', 'started', CURDATE()); +INSERT INTO `hedera`.`tpvTransaction`(`id`,`merchantFk`, `clientFk`,`receiptFk`, `amount`, `response`, `errorCode`, `status`, `created`) + VALUES + (1, 1, 1101, NULL, 2000, NULL, 'SIS0042', 'ok', util.VN_CURDATE()), + (2, 1, 1101, NULL, 1000, NULL, 'SIS0051', 'started', util.VN_CURDATE()), + (3, 2, 1101, NULL, 7268, NULL, NULL, 'ok', util.VN_CURDATE()), + (4, 2, 1101, NULL, 4698, NULL, NULL, 'started', util.VN_CURDATE()), + (5, 1, 1104, NULL, 2000, NULL, 'SIS0043', 'ok', util.VN_CURDATE()), + (6, 2, 1104, NULL, 4000, NULL, 'SIS0044', 'started', util.VN_CURDATE()); INSERT INTO `vn`.`orderTicket`(`orderFk`, `ticketFk`) VALUES @@ -1756,38 +1820,38 @@ INSERT INTO `vn`.`orderTicket`(`orderFk`, `ticketFk`) (2, 2), (3, 3), (4, 4), - (5, 5), - (6, 6), - (7, 7), - (8, 8), - (9, 9), - (10, 10), - (11, 11), - (12, 12), - (13, 13), - (14, 14), + (5, 5), + (6, 6), + (7, 7), + (8, 8), + (9, 9), + (10, 10), + (11, 11), + (12, 12), + (13, 13), + (14, 14), (15, 15), (16, 16), (17, 17), (18, 18), (19, 19), - (20, 20), - (21, 21), + (20, 20), + (21, 21), (22, 22); -INSERT INTO `vn`.`userConfig` (`userFk`, `warehouseFk`, `companyFk`) +INSERT INTO `vn`.`userConfig` (`userFk`, `warehouseFk`, `companyFk`) VALUES (1, 1, 69), - (5, 1, 442), + (5, 1, 442), (9, 1, 442), (18, 3, 567); - + INSERT INTO `vn`.`receipt`(`id`, `invoiceFk`, `amountPaid`, `payed`, `workerFk`, `bankFk`, `clientFk`, `created`, `companyFk`, `isConciliate`) VALUES - (1, 'Cobro web', 100.50, CURDATE(), 9, 1, 1101, CURDATE(), 442, 1), - (2, 'Cobro web', 200.50, DATE_ADD(CURDATE(), INTERVAL -5 DAY), 9, 1, 1101, DATE_ADD(CURDATE(), INTERVAL -5 DAY), 442, 1), - (3, 'Cobro en efectivo', 300.00, DATE_ADD(CURDATE(), INTERVAL -10 DAY), 9, 1, 1102, DATE_ADD(CURDATE(), INTERVAL -10 DAY), 442, 0), - (4, 'Cobro en efectivo', 400.00, DATE_ADD(CURDATE(), INTERVAL -15 DAY), 9, 1, 1103, DATE_ADD(CURDATE(), INTERVAL -15 DAY), 442, 0); + (1, 'Cobro web', 100.50, util.VN_CURDATE(), 9, 1, 1101, util.VN_CURDATE(), 442, 1), + (2, 'Cobro web', 200.50, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY), 9, 1, 1101, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY), 442, 1), + (3, 'Cobro en efectivo', 300.00, DATE_ADD(util.VN_CURDATE(), INTERVAL -10 DAY), 9, 1, 1102, DATE_ADD(util.VN_CURDATE(), INTERVAL -10 DAY), 442, 0), + (4, 'Cobro en efectivo', 400.00, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY), 9, 1, 1103, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY), 442, 0); INSERT INTO `vn`.`workerTeam`(`id`, `team`, `workerFk`) VALUES @@ -1801,11 +1865,11 @@ INSERT INTO `vn`.`workerTeam`(`id`, `team`, `workerFk`) INSERT INTO `vn`.`ticketRequest`(`id`, `description`, `requesterFk`, `attenderFk`, `quantity`, `itemFk`, `price`, `isOk`, `saleFk`, `ticketFk`, `created`) VALUES - (1, 'Ranged weapon longbow 2m', 18, 35, 5, 1, 9.10, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -15 DAY)), - (2, 'Melee weapon combat first 15cm', 18, 35, 10, 2, 1.07, 0, NULL, 1, DATE_ADD(CURDATE(), INTERVAL -15 DAY)), - (3, 'Melee weapon heavy shield 1x0.5m', 18, 35, 20, NULL, 3.06, NULL, NULL, 23, CURDATE()), - (4, 'Melee weapon combat first 15cm', 18, 35, 15, NULL, 1.30, NULL, NULL, 11, CURDATE()), - (5, 'Melee weapon combat first 15cm', 18, 35, 15, 4, 1.30, 0, NULL, 18, CURDATE()); + (1, 'Ranged weapon longbow 2m', 18, 35, 5, 1, 9.10, 1, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY)), + (2, 'Melee weapon combat first 15cm', 18, 35, 10, 2, 1.07, 0, NULL, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY)), + (3, 'Melee weapon heavy shield 1x0.5m', 18, 35, 20, NULL, 3.06, NULL, NULL, 23, util.VN_CURDATE()), + (4, 'Melee weapon combat first 15cm', 18, 35, 15, NULL, 1.30, NULL, NULL, 11, util.VN_CURDATE()), + (5, 'Melee weapon combat first 15cm', 18, 35, 15, 4, 1.30, 0, NULL, 18, util.VN_CURDATE()); INSERT INTO `vn`.`ticketServiceType`(`id`, `name`, `expenceFk`) VALUES @@ -1830,357 +1894,389 @@ INSERT INTO `pbx`.`sip`(`user_id`, `extension`) (5, 1102), (9, 1201); -INSERT INTO `postgresql`.`person`(`person_id`, `name`, `nickname`, `nif`, `firstname`, `id_trabajador`) - SELECT w.id, w.lastName, u.nickname,CONCAT(RPAD(CONCAT(w.id,9),8,w.id),'A'),w.firstName,w.id - FROM `vn`.`worker` `w` - JOIN `account`.`user` `u` ON `u`.`id` = `w`.`userFk`; +DROP TEMPORARY TABLE IF EXISTS tmp.worker; +CREATE TEMPORARY TABLE tmp.worker + (PRIMARY KEY (id)) + ENGINE = MEMORY + SELECT w.id, w.id as `workerFk`, 'VNL', CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL -1 YEAR)), '-12-25'), CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL +1 YEAR)), '-12-25'), CONCAT('E-46-', RPAD(CONCAT(w.id, 9), 8, w.id)), NULL as `notes`, NULL as `departmentFk`, 23, 1 as `workerBusinessProfessionalCategoryFk`, 1 as `calendarTypeFk`, 1 as `isHourlyLabor`, 1 as `workerBusinessAgreementFk`, 1 as `workcenterFk` + FROM `vn`.`worker` `w`; -INSERT INTO `postgresql`.`person`(`person_id`, `name`, `nickname`, `nif`, `firstname`, `id_trabajador`) - VALUES - (1000, 'VERDNATURA LEVANTE SL', 'VNL', 'B78945612', NULL, NULL); +INSERT INTO `vn`.`business`(`id`, `workerFk`, `companyCodeFk`, `started`, `ended`, `workerBusiness`, `reasonEndFk`, `notes`, `departmentFk`, `workerBusinessProfessionalCategoryFk`, `calendarTypeFk`, `isHourlyLabor`, `workerBusinessAgreementFk`, `workcenterFk`) + SELECT * FROM tmp.worker; -INSERT INTO `postgresql`.`profile`(`profile_id`, `person_id`, `profile_type_id`) - SELECT p.person_id, p.person_id, 1 - FROM `postgresql`.`person` `p`; +DROP TEMPORARY TABLE IF EXISTS tmp.worker; +CREATE TEMPORARY TABLE tmp.worker + (PRIMARY KEY (id)) + ENGINE = MEMORY + SELECT '1111' as 'id', w.id as `workerFk`, 'VNL', CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL -2 YEAR)), '-12-25'), CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL -1 YEAR)), '-12-24'), CONCAT('E-46-', RPAD(CONCAT(w.id, 9), 8, w.id)), NULL as `notes`, NULL as `departmentFk`, 23, 1 as `workerBusinessProfessionalCategoryFk`, 1 as `calendarTypeFk`, 1 as `isHourlyLabor`, 1 as `workerBusinessAgreementFk`, 1 as `workcenterFk` + FROM `vn`.`worker` `w` + WHERE `w`.`id` = 1109; -INSERT INTO `postgresql`.`business`(`business_id`, `client_id`, `provider_id`, `date_start`, `date_end`, `workerBusiness`, `reasonEndFk`) - SELECT p.profile_id, p.profile_id, 1000, CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL -1 YEAR)), '-12-25'), CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL +1 YEAR)), '-01-25'), CONCAT('E-46-',RPAD(CONCAT(p.profile_id,9),8,p.profile_id)), NULL - FROM `postgresql`.`profile` `p`; +INSERT INTO `vn`.`business` (`id`, `workerFk`, `companyCodeFk`, `started`, `ended`, `workerBusiness`, `reasonEndFk`, `notes`, `departmentFk`, `workerBusinessProfessionalCategoryFk`, `calendarTypeFk`, `isHourlyLabor`, `workerBusinessAgreementFk`, `workcenterFk`) + SELECT * FROM tmp.worker; -INSERT INTO `postgresql`.`business_labour`(`business_id`, `notes`, `department_id`, `professional_category_id`, `incentivo`, `calendar_labour_type_id`, `porhoras`, `labour_agreement_id`, `workcenter_id`) - SELECT b.business_id, NULL, 23, 1, 0, 1, 1, 1, 1 - FROM `postgresql`.`business` `b`; +DROP TEMPORARY TABLE IF EXISTS tmp.worker; -UPDATE `postgresql`.`business_labour` bl - JOIN `postgresql`.`business` b ON b.business_id = bl.business_id - JOIN `postgresql`.`profile` pr ON pr.profile_id = b.client_id - JOIN `postgresql`.`person` p ON p.person_id = pr.person_id - SET bl.`professional_category_id` = 31 - WHERE p.`Id_trabajador` = 1110; +UPDATE `vn`.`business` + SET `payedHolidays`= 8 + WHERE `id`= 1106; -UPDATE `postgresql`.`business_labour` bl - SET bl.`department_id` = 43 -WHERE business_id IN(18, 19); +UPDATE `vn`.`business` b + SET b.`workerBusinessProfessionalCategoryFk` = 31 + WHERE b.`workerFk` = 1110; -INSERT INTO `postgresql`.`media`(`media_id`, `media_type_id`, `value`, `sort`) - VALUES - (1, 10, 600123321, 0), - (2, 10, 700987987, 0); - -INSERT INTO `postgresql`.`profile_media`(`profile_media_id`, `profile_id`, `media_id`) - VALUES - (1, 1106, 1), - (2, 1107, 2); - -INSERT INTO `vn`.`workCenter` (`id`, `name`, `warehouseFk`) - VALUES - ('1', 'Silla', '1'), - ('5', 'Madrid', '5'); +UPDATE `vn`.`business` b + SET b.`departmentFk` = 43 + WHERE b.id IN(18, 19); INSERT INTO `vn`.`workCenterHoliday` (`workCenterFk`, `days`, `year`) - VALUES - ('1', '27.5', YEAR(CURDATE())), - ('5', '22', YEAR(CURDATE())), - ('1', '24.5', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 YEAR))), - ('5', '23', YEAR(DATE_ADD(CURDATE(), INTERVAL -1 YEAR))); + VALUES + ('1', '27.5', YEAR(util.VN_CURDATE())), + ('5', '22', YEAR(util.VN_CURDATE())), + ('1', '24.5', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR))), + ('5', '23', YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR))); -INSERT INTO `postgresql`.`calendar_state` (`calendar_state_id`, `type`, `rgb`, `code`, `holidayEntitlementRate`) - VALUES - (1, 'Holidays', '#FF4444', 'holiday', 0), - (2, 'Leave of absence', '#C71585', 'absence', 0), - (6, 'Half holiday', '#E65F00', 'halfHoliday', 0), - (15, 'Half Paid Leave', '#5151c0', 'halfPaidLeave', 0), - (20, 'Furlough', '#97B92F', 'furlough', 1), - (21, 'Furlough half day', '#778899', 'halfFurlough', 0.5); +INSERT INTO `vn`.`workerBusinessType` (`id`, `name`, `isFullTime`, `isPermanent`, `hasHolidayEntitlement`) + VALUES + (1, 'CONTRATO HOLANDA', 1, 0, 1), + (100, 'INDEFINIDO A TIEMPO COMPLETO', 1, 1, 1), + (109, 'CONVERSION DE TEMPORAL EN INDEFINIDO T.COMPLETO', 1, 1, 1); -INSERT INTO `postgresql`.`calendar_employee` (`business_id`, `calendar_state_id`, `date`) - VALUES - (1, 6, IF(MONTH(CURDATE()) = 12 AND DAY(CURDATE()) > 10, DATE_ADD(CURDATE(), INTERVAL -10 DAY), DATE_ADD(CURDATE(), INTERVAL 10 DAY))), - (1106, 1, IF(MONTH(CURDATE()) = 12 AND DAY(CURDATE()) > 10, DATE_ADD(CURDATE(), INTERVAL -10 DAY), DATE_ADD(CURDATE(), INTERVAL 10 DAY))), - (1106, 1, IF(MONTH(CURDATE()) = 12 AND DAY(CURDATE()) > 10, DATE_ADD(CURDATE(), INTERVAL -11 DAY), DATE_ADD(CURDATE(), INTERVAL 11 DAY))), - (1106, 1, IF(MONTH(CURDATE()) = 12 AND DAY(CURDATE()) > 10, DATE_ADD(CURDATE(), INTERVAL -12 DAY), DATE_ADD(CURDATE(), INTERVAL 12 DAY))), - (1106, 1, IF(MONTH(CURDATE()) = 12 AND DAY(CURDATE()) > 10, DATE_ADD(CURDATE(), INTERVAL -20 DAY), DATE_ADD(CURDATE(), INTERVAL 20 DAY))), - (1106, 2, IF(MONTH(CURDATE()) >= 1 AND DAY(CURDATE()) > 20, DATE_ADD(CURDATE(), INTERVAL -13 DAY), DATE_ADD(CURDATE(), INTERVAL 8 DAY))), - (1106, 1, IF(MONTH(CURDATE()) >= 1 AND DAY(CURDATE()) > 20, DATE_ADD(CURDATE(), INTERVAL -14 DAY), DATE_ADD(CURDATE(), INTERVAL 9 DAY))), - (1106, 2, IF(MONTH(CURDATE()) >= 1 AND DAY(CURDATE()) > 20, DATE_ADD(CURDATE(), INTERVAL -15 DAY), DATE_ADD(CURDATE(), INTERVAL 7 DAY))), - (1107, 1, IF(MONTH(CURDATE()) = 12 AND DAY(CURDATE()) > 10, DATE_ADD(CURDATE(), INTERVAL -10 DAY), DATE_ADD(CURDATE(), INTERVAL 10 DAY))), - (1107, 1, IF(MONTH(CURDATE()) = 12 AND DAY(CURDATE()) > 10, DATE_ADD(CURDATE(), INTERVAL -11 DAY), DATE_ADD(CURDATE(), INTERVAL 11 DAY))), - (1107, 1, IF(MONTH(CURDATE()) = 12 AND DAY(CURDATE()) > 10, DATE_ADD(CURDATE(), INTERVAL -12 DAY), DATE_ADD(CURDATE(), INTERVAL 12 DAY))), - (1107, 1, IF(MONTH(CURDATE()) = 12 AND DAY(CURDATE()) > 10, DATE_ADD(CURDATE(), INTERVAL -20 DAY), DATE_ADD(CURDATE(), INTERVAL 20 DAY))), - (1107, 2, IF(MONTH(CURDATE()) >= 1 AND DAY(CURDATE()) > 20, DATE_ADD(CURDATE(), INTERVAL -13 DAY), DATE_ADD(CURDATE(), INTERVAL 8 DAY))), - (1107, 1, IF(MONTH(CURDATE()) >= 1 AND DAY(CURDATE()) > 20, DATE_ADD(CURDATE(), INTERVAL -14 DAY), DATE_ADD(CURDATE(), INTERVAL 9 DAY))), - (1107, 2, IF(MONTH(CURDATE()) >= 1 AND DAY(CURDATE()) > 20, DATE_ADD(CURDATE(), INTERVAL -15 DAY), DATE_ADD(CURDATE(), INTERVAL 7 DAY))); +UPDATE `vn`.`business` b + SET `rate` = 7, + `workerBusinessCategoryFk` = 12, + `workerBusinessTypeFk` = 100, + `amount` = 900.50 + WHERE b.id = 1; -INSERT INTO `vn`.`smsConfig` (`id`, `uri`, `title`, `apiKey`) - VALUES +UPDATE `vn`.`business` b + SET `rate` = 7, + `workerBusinessCategoryFk` = 12, + `workerBusinessTypeFk` = 100, + `amount` = 1263.03 + WHERE b.id = 1106; + +UPDATE `vn`.`business` b + SET `rate` = 7, + `workerBusinessCategoryFk` = 12, + `workerBusinessTypeFk` = 100, + `amount` = 2000 + WHERE b.id = 1107; + +UPDATE `vn`.`business` b + SET `rate` = 7, + `workerBusinessCategoryFk` = 12, + `workerBusinessTypeFk` = 100, + `amount` = 1500 + WHERE b.id = 1108; + +INSERT INTO `vn`.`absenceType` (`id`, `name`, `rgb`, `code`, `holidayEntitlementRate`, `discountRate`) + VALUES + (1, 'Holidays', '#FF4444', 'holiday', 0, 0), + (2, 'Leave of absence', '#C71585', 'absence', 0, 1), + (6, 'Half holiday', '#E65F00', 'halfHoliday', 0, 0.5), + (15, 'Half Paid Leave', '#5151c0', 'halfPaidLeave', 0, 1), + (20, 'Furlough', '#97B92F', 'furlough', 1, 1), + (21, 'Furlough half day', '#778899', 'halfFurlough', 0.5, 1); + +INSERT INTO `postgresql`.`calendar_employee` (`businessFk`, `calendar_state_id`, `date`) + VALUES + (1, 6, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, DATE_ADD(util.VN_CURDATE(), INTERVAL -10 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL 10 DAY))), + (1106, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, DATE_ADD(util.VN_CURDATE(), INTERVAL -10 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL 10 DAY))), + (1106, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, DATE_ADD(util.VN_CURDATE(), INTERVAL -11 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL 11 DAY))), + (1106, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, DATE_ADD(util.VN_CURDATE(), INTERVAL -12 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL 12 DAY))), + (1106, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, DATE_ADD(util.VN_CURDATE(), INTERVAL -20 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL 20 DAY))), + (1106, 2, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, DATE_ADD(util.VN_CURDATE(), INTERVAL -13 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL 8 DAY))), + (1106, 1, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, DATE_ADD(util.VN_CURDATE(), INTERVAL -14 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL 9 DAY))), + (1106, 2, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL 7 DAY))), + (1107, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, DATE_ADD(util.VN_CURDATE(), INTERVAL -10 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL 10 DAY))), + (1107, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, DATE_ADD(util.VN_CURDATE(), INTERVAL -11 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL 11 DAY))), + (1107, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, DATE_ADD(util.VN_CURDATE(), INTERVAL -12 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL 12 DAY))), + (1107, 1, IF(MONTH(util.VN_CURDATE()) = 12 AND DAY(util.VN_CURDATE()) > 10, DATE_ADD(util.VN_CURDATE(), INTERVAL -20 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL 20 DAY))), + (1107, 2, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, DATE_ADD(util.VN_CURDATE(), INTERVAL -13 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL 8 DAY))), + (1107, 1, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, DATE_ADD(util.VN_CURDATE(), INTERVAL -14 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL 9 DAY))), + (1107, 2, IF(MONTH(util.VN_CURDATE()) >= 1 AND DAY(util.VN_CURDATE()) > 20, DATE_ADD(util.VN_CURDATE(), INTERVAL -15 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL 7 DAY))), + (1107, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL - 16 DAY)); + +INSERT INTO `vn`.`smsConfig` (`id`, `uri`, `title`, `apiKey`) + VALUES ('1', 'https://api.gateway360.com/api/3.0/sms/send', 'Verdnatura', '5715476da95b46d686a5a255e6459523'); INSERT INTO `vn`.`sharingClient`(`id`, `workerFk`, `started`, `ended`, `clientFk`) VALUES - (1, 19, DATE_ADD(CURDATE(), INTERVAL -5 DAY), DATE_ADD(CURDATE(), INTERVAL +15 DAY), 1101), - (2, 18, DATE_ADD(CURDATE(), INTERVAL -5 DAY), DATE_ADD(CURDATE(), INTERVAL +15 DAY), 1106); + (1, 19, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY), 1101), + (2, 18, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY), 1106); INSERT INTO `vn`.`sharingCart`(`id`, `workerFk`, `started`, `ended`, `workerSubstitute`, `created`) VALUES - (1, 18, DATE_ADD(CURDATE(), INTERVAL -5 DAY), DATE_ADD(CURDATE(), INTERVAL +15 DAY), 19, DATE_ADD(CURDATE(), INTERVAL -5 DAY)); + (1, 18, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY), 19, DATE_ADD(util.VN_CURDATE(), INTERVAL -5 DAY)); CALL `vn`.zoneGeo_calcTree(); -- this is an auto calculate for table vn.zoneGeo, columns: path,lft,rgt,depth,sons INSERT INTO `vn`.`zoneIncluded` (`zoneFk`, `geoFk`, `isIncluded`) VALUES - (1, 3, 0), - (1, 4, 0), - (1, 5, 0), + (1, 3, 0), + (1, 4, 0), + (1, 5, 0), (1, 1, 1), - (2, 3, 0), - (2, 4, 0), - (2, 5, 0), + (2, 3, 0), + (2, 4, 0), + (2, 5, 0), (2, 1, 1), - (3, 3, 0), - (3, 4, 0), - (3, 5, 0), + (3, 3, 0), + (3, 4, 0), + (3, 5, 0), (3, 1, 1), - (4, 3, 0), - (4, 4, 0), - (4, 5, 0), + (4, 3, 0), + (4, 4, 0), + (4, 5, 0), (4, 1, 1), - (5, 3, 1), - (5, 4, 0), - (5, 5, 1), + (5, 3, 1), + (5, 4, 0), + (5, 5, 1), (5, 1, 1), - (6, 3, 1), - (6, 4, 0), - (6, 5, 1), + (6, 3, 1), + (6, 4, 0), + (6, 5, 1), (6, 1, 1), - (7, 3, 0), - (7, 4, 0), - (7, 5, 0), + (7, 3, 0), + (7, 4, 0), + (7, 5, 0), (7, 1, 1), - (8, 3, 0), - (8, 4, 0), - (8, 5, 0), + (8, 3, 0), + (8, 4, 0), + (8, 5, 0), (8, 1, 1), + (9, 7, 1), (10, 14, 1); INSERT INTO `vn`.`zoneEvent`(`zoneFk`, `type`, `dated`) VALUES - (1, 'day', DATE_ADD(CURDATE(), INTERVAL (IF(DAYOFWEEK(CURDATE())<=2, 2, 9) - DAYOFWEEK(CURDATE())) DAY)), - (1, 'day', DATE_ADD(CURDATE(), INTERVAL (IF(DAYOFWEEK(CURDATE())<=3, 3, 10) - DAYOFWEEK(CURDATE())) DAY)), - (1, 'day', DATE_ADD(CURDATE(), INTERVAL (IF(DAYOFWEEK(CURDATE())<=4, 4, 11) - DAYOFWEEK(CURDATE())) DAY)), - (1, 'day', DATE_ADD(CURDATE(), INTERVAL (IF(DAYOFWEEK(CURDATE())<=5, 5, 12) - DAYOFWEEK(CURDATE())) DAY)), - (1, 'day', DATE_ADD(CURDATE(), INTERVAL (IF(DAYOFWEEK(CURDATE())<=6, 6, 13) - DAYOFWEEK(CURDATE())) DAY)), - (2, 'day', DATE_ADD(CURDATE(), INTERVAL (IF(DAYOFWEEK(CURDATE())<=2, 2, 9) - DAYOFWEEK(CURDATE())) DAY)), - (2, 'day', DATE_ADD(CURDATE(), INTERVAL (IF(DAYOFWEEK(CURDATE())<=3, 3, 10) - DAYOFWEEK(CURDATE())) DAY)), - (2, 'day', DATE_ADD(CURDATE(), INTERVAL (IF(DAYOFWEEK(CURDATE())<=4, 4, 11) - DAYOFWEEK(CURDATE())) DAY)), - (2, 'day', DATE_ADD(CURDATE(), INTERVAL (IF(DAYOFWEEK(CURDATE())<=5, 5, 12) - DAYOFWEEK(CURDATE())) DAY)), - (2, 'day', DATE_ADD(CURDATE(), INTERVAL (IF(DAYOFWEEK(CURDATE())<=6, 6, 13) - DAYOFWEEK(CURDATE())) DAY)), - (3, 'day', CURDATE()), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +1 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +2 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +3 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +4 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +5 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +6 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +7 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +8 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +9 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +10 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +11 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +12 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +13 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +14 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +15 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +16 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +17 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +18 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +19 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +20 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +21 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +22 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +23 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +24 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +25 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +26 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +27 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +28 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +29 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +30 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +31 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +32 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +33 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +34 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +35 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +36 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +37 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +38 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +39 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +40 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +41 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +42 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +43 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +44 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +45 DAY)), - (3, 'day', DATE_ADD(CURDATE(), INTERVAL +46 DAY)), - (4, 'day', CURDATE()), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +1 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +2 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +3 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +4 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +5 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +6 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +7 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +8 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +9 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +10 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +11 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +12 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +13 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +14 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +15 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +16 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +17 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +18 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +19 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +20 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +21 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +22 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +23 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +24 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +25 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +26 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +27 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +28 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +29 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +30 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +31 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +32 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +33 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +34 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +35 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +36 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +37 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +38 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +39 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +40 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +41 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +42 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +43 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +44 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +45 DAY)), - (4, 'day', DATE_ADD(CURDATE(), INTERVAL +46 DAY)), - (5, 'day', CURDATE()), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +1 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +2 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +3 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +4 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +5 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +6 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +7 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +8 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +9 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +10 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +11 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +12 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +13 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +14 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +15 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +16 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +17 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +18 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +19 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +20 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +21 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +22 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +23 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +24 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +25 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +26 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +27 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +28 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +29 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +30 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +31 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +32 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +33 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +34 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +35 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +36 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +37 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +38 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +39 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +40 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +41 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +42 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +43 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +44 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +45 DAY)), - (5, 'day', DATE_ADD(CURDATE(), INTERVAL +46 DAY)), - (6, 'day', CURDATE()), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +1 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +2 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +3 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +4 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +5 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +6 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +7 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +8 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +9 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +10 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +11 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +12 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +13 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +14 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +15 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +16 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +17 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +18 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +19 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +20 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +21 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +22 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +23 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +24 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +25 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +26 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +27 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +28 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +29 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +30 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +31 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +32 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +33 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +34 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +35 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +36 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +37 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +38 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +39 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +40 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +41 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +42 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +43 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +44 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +45 DAY)), - (6, 'day', DATE_ADD(CURDATE(), INTERVAL +46 DAY)), - (7, 'day', CURDATE()), - (7, 'day', DATE_ADD(CURDATE(), INTERVAL +1 DAY)), - (7, 'day', DATE_ADD(CURDATE(), INTERVAL +2 DAY)), - (7, 'day', DATE_ADD(CURDATE(), INTERVAL +3 DAY)), - (7, 'day', DATE_ADD(CURDATE(), INTERVAL +4 DAY)), - (7, 'day', DATE_ADD(CURDATE(), INTERVAL +5 DAY)), - (7, 'day', DATE_ADD(CURDATE(), INTERVAL +6 DAY)); + (1, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=2, 2, 9) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (1, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=3, 3, 10) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (1, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=4, 4, 11) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (1, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=5, 5, 12) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (1, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=6, 6, 13) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (2, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=2, 2, 9) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (2, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=3, 3, 10) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (2, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=4, 4, 11) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (2, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=5, 5, 12) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (2, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=6, 6, 13) - DAYOFWEEK(util.VN_CURDATE())) DAY)), + (3, 'day', util.VN_CURDATE()), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +3 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +4 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +6 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +7 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +8 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +9 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +10 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +11 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +12 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +13 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +14 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +16 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +17 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +18 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +19 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +20 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +21 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +22 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +23 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +24 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +25 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +26 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +27 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +28 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +29 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +30 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +31 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +32 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +33 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +34 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +35 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +36 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +37 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +38 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +39 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +40 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +41 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +42 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +43 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +44 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +45 DAY)), + (3, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +46 DAY)), + (4, 'day', util.VN_CURDATE()), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +3 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +4 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +6 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +7 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +8 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +9 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +10 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +11 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +12 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +13 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +14 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +16 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +17 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +18 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +19 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +20 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +21 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +22 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +23 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +24 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +25 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +26 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +27 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +28 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +29 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +30 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +31 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +32 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +33 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +34 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +35 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +36 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +37 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +38 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +39 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +40 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +41 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +42 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +43 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +44 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +45 DAY)), + (4, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +46 DAY)), + (5, 'day', util.VN_CURDATE()), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +3 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +4 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +6 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +7 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +8 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +9 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +10 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +11 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +12 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +13 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +14 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +16 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +17 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +18 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +19 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +20 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +21 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +22 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +23 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +24 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +25 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +26 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +27 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +28 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +29 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +30 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +31 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +32 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +33 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +34 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +35 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +36 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +37 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +38 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +39 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +40 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +41 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +42 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +43 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +44 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +45 DAY)), + (5, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +46 DAY)), + (6, 'day', util.VN_CURDATE()), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +3 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +4 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +6 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +7 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +8 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +9 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +10 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +11 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +12 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +13 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +14 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +15 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +16 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +17 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +18 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +19 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +20 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +21 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +22 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +23 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +24 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +25 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +26 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +27 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +28 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +29 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +30 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +31 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +32 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +33 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +34 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +35 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +36 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +37 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +38 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +39 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +40 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +41 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +42 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +43 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +44 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +45 DAY)), + (6, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +46 DAY)), + (7, 'day', util.VN_CURDATE()), + (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)), + (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +2 DAY)), + (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +3 DAY)), + (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +4 DAY)), + (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +5 DAY)), + (7, 'day', DATE_ADD(util.VN_CURDATE(), INTERVAL +6 DAY)); INSERT INTO `vn`.`zoneEvent`(`zoneFk`, `type`, `weekDays`) - VALUES + VALUES (8, 'indefinitely', 'mon,tue,wed,thu,fri,sat,sun'), (10, 'indefinitely', 'mon,tue,wed,thu,fri,sat,sun'); -INSERT INTO `vn`.`workerTimeControl`(`userFk`, `timed`, `manual`, `direction`) +INSERT INTO `vn`.`zoneEvent`(`zoneFk`, `type`, `started`, `ended`) VALUES - (1106, CONCAT(CURDATE(), ' 07:00'), TRUE, 'in'), - (1106, CONCAT(CURDATE(), ' 10:00'), TRUE, 'middle'), - (1106, CONCAT(CURDATE(), ' 10:10'), TRUE, 'middle'), - (1106, CONCAT(CURDATE(), ' 15:00'), TRUE, 'out'); + (9, 'range', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 YEAR)); + +INSERT INTO `vn`.`workerTimeControl`(`userFk`, `timed`, `manual`, `direction`, `isSendMail`) + VALUES + (1106, CONCAT(util.VN_CURDATE(), ' 07:00'), TRUE, 'in', 0), + (1106, CONCAT(util.VN_CURDATE(), ' 10:00'), TRUE, 'middle', 0), + (1106, CONCAT(util.VN_CURDATE(), ' 10:20'), TRUE, 'middle', 0), + (1106, CONCAT(util.VN_CURDATE(), ' 14:50'), TRUE, 'out', 0), + (1107, CONCAT(util.VN_CURDATE(), ' 07:00'), TRUE, 'in', 1), + (1107, CONCAT(util.VN_CURDATE(), ' 10:00'), TRUE, 'middle', 1), + (1107, CONCAT(util.VN_CURDATE(), ' 10:20'), TRUE, 'middle', 1), + (1107, CONCAT(util.VN_CURDATE(), ' 14:50'), TRUE, 'out', 1); INSERT INTO `vn`.`dmsType`(`id`, `name`, `path`, `readRoleFk`, `writeRoleFk`, `code`) VALUES @@ -2207,13 +2303,19 @@ INSERT INTO `vn`.`dmsType`(`id`, `name`, `path`, `readRoleFk`, `writeRoleFk`, `c INSERT INTO `vn`.`dms`(`id`, `dmsTypeFk`, `file`, `contentType`, `workerFk`, `warehouseFk`, `companyFk`, `hardCopyNumber`, `hasFile`, `reference`, `description`, `created`) VALUES - (1, 14, '1.txt', 'text/plain', 5, 1, 442, NULL, FALSE, 'Ticket:11', 'Ticket:11 dms for the ticket', CURDATE()), - (2, 5, '2.txt', 'text/plain', 5, 1, 442, 1, TRUE, 'Client:104', 'Client:104 dms for the client', CURDATE()), - (3, 5, '3.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'Client: 104', 'Client:104 readme', CURDATE()), - (4, 3, '4.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'Worker: 106', 'Worker:106 readme', CURDATE()), - (5, 5, '5.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'travel: 1', 'dmsForThermograph', CURDATE()), - (6, 5, '6.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'NotExists', 'DoesNotExists', CURDATE()); + (1, 14, '1.txt', 'text/plain', 5, 1, 442, NULL, FALSE, 'Ticket:11', 'Ticket:11 dms for the ticket', util.VN_CURDATE()), + (2, 5, '2.txt', 'text/plain', 5, 1, 442, 1, TRUE, 'Client:104', 'Client:104 dms for the client', util.VN_CURDATE()), + (3, 5, '3.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'Client: 104', 'Client:104 readme', util.VN_CURDATE()), + (4, 3, '4.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'Worker: 106', 'Worker:106 readme', util.VN_CURDATE()), + (5, 5, '5.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'travel: 1', 'dmsForThermograph', util.VN_CURDATE()), + (6, 5, '6.txt', 'text/plain', 5, 1, 442, NULL, TRUE, 'NotExists', 'DoesNotExists', util.VN_CURDATE()), + (7, 20, '7.jpg', 'image/jpeg', 9, 1, 442, NULL, FALSE, '1', 'TICKET ID DEL CLIENTE BRUCE WAYNE ID 1101', util.VN_CURDATE()), + (8, 20, '8.mp4', 'video/mp4', 9, 1, 442, NULL, FALSE, '1', 'TICKET ID DEL CLIENTE BRUCE WAYNE ID 1101', util.VN_CURDATE()); +INSERT INTO `vn`.`claimDms`(`claimFk`, `dmsFk`) + VALUES + (1, 7), + (1, 8); INSERT INTO `vn`.`ticketDms`(`ticketFk`, `dmsFk`) VALUES @@ -2229,8 +2331,8 @@ INSERT INTO `vn`.`workerDocument`(`id`, `worker`, `document`,`isReadableByWorker (1, 1106, 4, TRUE), (2, 1107, 3, FALSE); -INSERT INTO `vn`.`device` (`sn`, `model`, `userFk`) - VALUES +INSERT INTO `vn`.`device` (`sn`, `model`, `userFk`) + VALUES ('aaa', 'android', '9'); INSERT INTO `vn`.`queuePriority`(`id`, `priority`) @@ -2245,11 +2347,6 @@ INSERT INTO `vn`.`workerTimeControlParams` (`id`, `dayBreak`, `weekBreak`, `week INSERT IGNORE INTO `vn`.`greugeConfig` (`id`, `freightPickUpPrice`) VALUES ('1', '11'); -INSERT INTO `vn`.`temperature`(`code`, `name`, `description`) - VALUES - ('warm', 'Warm', 'Warm'), - ('cool', 'Cool', 'Cool'); - INSERT INTO `vn`.`thermograph`(`id`, `model`) VALUES ('TMM190901395', 'TEMPMATE'), @@ -2260,46 +2357,46 @@ INSERT INTO `vn`.`thermograph`(`id`, `model`) INSERT INTO `vn`.`travelThermograph`(`thermographFk`, `created`, `warehouseFk`, `travelFk`, `temperatureFk`, `result`, `dmsFk`) VALUES - ('TMM190901395', CURDATE(), 1, 1, 'WARM', 'Ok', NULL), - ('TL.BBA85422', DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 2, 2, 'COOL', 'Ok', NULL), - ('TL.BBA85422', CURDATE(), 2, 1, 'COOL', 'can not read the temperature', NULL), - ('TZ1905012010', CURDATE(), 1, 1, 'WARM', 'Temperature in range', 5), - ('138350-0', DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 1, 'WARM', NULL, 5), - ('138350-0', CURDATE(), 1, NULL, 'COOL', NULL, NULL); + ('TMM190901395', util.VN_CURDATE(), 1, 1, 'WARM', 'Ok', NULL), + ('TL.BBA85422', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 2, 2, 'COOL', 'Ok', NULL), + ('TL.BBA85422', util.VN_CURDATE(), 2, 1, 'COOL', 'can not read the temperature', NULL), + ('TZ1905012010', util.VN_CURDATE(), 1, 1, 'WARM', 'Temperature in range', 5), + ('138350-0', DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1, 1, 'WARM', NULL, 5), + ('138350-0', util.VN_CURDATE(), 1, NULL, 'COOL', NULL, NULL); -REPLACE INTO `vn`.`incoterms`(`code`, `name`) - VALUES +REPLACE INTO `vn`.`incoterms`(`code`, `name`) + VALUES ('FAS', 'Free Alongside Ship'); -REPLACE INTO `vn`.`customsAgent`(`id`, `fiscalName`, `street`, `nif`, `phone`, `email`) - VALUES +REPLACE INTO `vn`.`customsAgent`(`id`, `fiscalName`, `street`, `nif`, `phone`, `email`) + VALUES (1, 'Agent one', '1007 Mountain Drive, Gotham', 'N1111111111', '111111111', 'agentone@gotham.com'), (2, 'Agent two', '1007 Mountain Drive, Gotham', 'N2222222222', '222222222', 'agenttwo@gotham.com'); -INSERT INTO `vn`.`tablet`(`uuid`, `name`, `place`, `macwifi`) - VALUES +INSERT INTO `vn`.`tablet`(`uuid`, `name`, `place`, `macwifi`) + VALUES ('1', 'TEST', 'ON THE FIXTURES', '0'), ('2', 'DEV', 'OTHER TABLET', '0'); -INSERT INTO `vn`.`tabletDepartment`(`tabletFk`, `departmentFk`) +INSERT INTO `vn`.`tabletDepartment`(`tabletFk`, `departmentFk`) VALUES (1, 23), (2, 1); INSERT INTO `vn`.`campaign`(`code`, `dated`) VALUES - ('valentinesDay', CONCAT(YEAR(CURDATE()), '-02-14')), - ('valentinesDay', CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL -1 YEAR)), '-02-14')), - ('valentinesDay', CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL -2 YEAR)), '-02-14')), - ('valentinesDay', CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL -3 YEAR)), '-02-14')), - ('mothersDay', CONCAT(YEAR(CURDATE()), '-05-05')), - ('mothersDay', CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL -1 YEAR)), '-05-05')), - ('mothersDay', CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL -2 YEAR)), '-05-05')), - ('mothersDay', CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL -3 YEAR)), '-05-05')), - ('allSaints', CONCAT(YEAR(CURDATE()), '-11-01')), - ('allSaints', CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL -1 YEAR)), '-11-01')), - ('allSaints', CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL -2 YEAR)), '-11-01')), - ('allSaints', CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL -3 YEAR)), '-11-01')); + ('valentinesDay', CONCAT(YEAR(util.VN_CURDATE()), '-02-14')), + ('valentinesDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR)), '-02-14')), + ('valentinesDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -2 YEAR)), '-02-14')), + ('valentinesDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -3 YEAR)), '-02-14')), + ('mothersDay', CONCAT(YEAR(util.VN_CURDATE()), '-05-05')), + ('mothersDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR)), '-05-05')), + ('mothersDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -2 YEAR)), '-05-05')), + ('mothersDay', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -3 YEAR)), '-05-05')), + ('allSaints', CONCAT(YEAR(util.VN_CURDATE()), '-11-01')), + ('allSaints', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR)), '-11-01')), + ('allSaints', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -2 YEAR)), '-11-01')), + ('allSaints', CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL -3 YEAR)), '-11-01')); INSERT INTO `hedera`.`imageCollectionSize`(`id`, `collectionFk`,`width`, `height`) VALUES @@ -2311,61 +2408,61 @@ INSERT INTO `vn`.`rateConfig`(`rate0`, `rate1`, `rate2`, `rate3`) INSERT INTO `vn`.`rate`(`dated`, `warehouseFk`, `rate0`, `rate1`, `rate2`, `rate3`) VALUES - (DATE_ADD(CURDATE(), INTERVAL -1 YEAR), 1, 10, 15, 20, 25), - (CURDATE(), 1, 12, 17, 22, 27); + (DATE_ADD(util.VN_CURDATE(), INTERVAL -1 YEAR), 1, 10, 15, 20, 25), + (util.VN_CURDATE(), 1, 12, 17, 22, 27); -INSERT INTO `vn`.`awb` (id, code, package, weight, created, amount, transitoryFk, taxFk) - VALUES - (1, '07546501420', 67, 671, CURDATE(), 1761, 1, 1), - (2, '07546491421', 252, 2769, CURDATE(), 5231, 1, 1), - (3, '07546500823', 102, 1495, CURDATE(), 3221, 1, 1), - (4, '99610288821', 252, 2777, CURDATE(), 3641, 1, 1), - (5, '07546500834', 229, 3292, CURDATE(), 6601, 2, 1), - (6, '22101929561', 37, 458, CURDATE(), 441, 2, 1), - (7, '07546491432', 258, 3034, CURDATE(), 6441, 2, 1), - (8, '99610288644', 476, 4461, CURDATE(), 5751, 442, 1), - (9, '99610289193', 302, 2972, CURDATE(), 3871, 442, 1), - (10, '07546500856', 185, 2364, CURDATE(), 5321, 442, 1); +INSERT INTO `vn`.`awb` (id, code, package, weight, created, amount, transitoryFk, taxFk) + VALUES + (1, '07546501420', 67, 671, util.VN_CURDATE(), 1761, 1, 1), + (2, '07546491421', 252, 2769, util.VN_CURDATE(), 5231, 1, 1), + (3, '07546500823', 102, 1495, util.VN_CURDATE(), 3221, 1, 1), + (4, '99610288821', 252, 2777, util.VN_CURDATE(), 3641, 1, 1), + (5, '07546500834', 229, 3292, util.VN_CURDATE(), 6601, 2, 1), + (6, '22101929561', 37, 458, util.VN_CURDATE(), 441, 2, 1), + (7, '07546491432', 258, 3034, util.VN_CURDATE(), 6441, 2, 1), + (8, '99610288644', 476, 4461, util.VN_CURDATE(), 5751, 442, 1), + (9, '99610289193', 302, 2972, util.VN_CURDATE(), 3871, 442, 1), + (10, '07546500856', 185, 2364, util.VN_CURDATE(), 5321, 442, 1); -INSERT INTO `vn`.`dua` (id, code, awbFk, issued, operated, booked, bookEntried, gestdocFk, customsValue, companyFk) - VALUES - (1, '19ES0028013A481523', 1, CURDATE(), CURDATE(), CURDATE(), CURDATE(), 1, 11276.95, 442), - (2, '21ES00280136115760', 2, CURDATE(), CURDATE(), CURDATE(), CURDATE(), 2, 1376.20, 442), - (3, '19ES00280131956004', 3, CURDATE(), CURDATE(), CURDATE(), CURDATE(), 3, 14268.50, 442), - (4, '19ES00280131955995', 4, CURDATE(), CURDATE(), CURDATE(), CURDATE(), 1, 8242.50, 442), - (5, '19ES00280132022070', 5, CURDATE(), CURDATE(), CURDATE(), CURDATE(), 2, 10012.49, 442), - (6, '19ES00280132032308', 6, CURDATE(), CURDATE(), CURDATE(), CURDATE(), 2, 19914.25, 442), - (7, '19ES00280132025489', 7, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), CURDATE(), CURDATE(), CURDATE(), 2, 1934.06, 442), - (8, '19ES00280132025490', 8, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), CURDATE(), CURDATE(), CURDATE(), 2, 3618.52, 442), - (9, '19ES00280132025491', 9, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), CURDATE(), CURDATE(), CURDATE(), 2, 7126.23, 442), - (10, '19ES00280132025492', 10, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), CURDATE(), CURDATE(), CURDATE(), 2, 4631.45, 442); +INSERT INTO `vn`.`dua` (id, code, awbFk, 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); REPLACE INTO `vn`.`invoiceIn`(`id`, `serialNumber`,`serial`, `supplierFk`, `issued`, `created`, `supplierRef`, `isBooked`, `companyFk`, `docFk`) VALUES - (1, 1001, 'R', 1, CURDATE(), CURDATE(), 1234, 0, 442, 1), - (2, 1002, 'R', 1, CURDATE(), CURDATE(), 1235, 1, 442, 1), - (3, 1003, 'R', 1, CURDATE(), CURDATE(), 1236, 0, 442, 1), - (4, 1004, 'R', 1, CURDATE(), CURDATE(), 1237, 0, 442, 1), - (5, 1005, 'R', 1, CURDATE(), CURDATE(), 1238, 1, 442, 1), - (6, 1006, 'R', 2, CURDATE(), CURDATE(), 1239, 0, 442, 1), - (7, 1007, 'R', 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1240, 1, 442, 1), - (8, 1008, 'R', 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1241, 1, 442, 1), - (9, 1009, 'R', 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1242, 1, 442, 1), - (10, 1010, 'R', 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1243, 1, 442, 1); + (1, 1001, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1234, 0, 442, 1), + (2, 1002, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1235, 1, 442, 1), + (3, 1003, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1236, 0, 442, 1), + (4, 1004, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1237, 0, 442, 1), + (5, 1005, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1238, 1, 442, 1), + (6, 1006, 'R', 2, util.VN_CURDATE(), util.VN_CURDATE(), 1239, 0, 442, 1), + (7, 1007, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1240, 1, 442, 1), + (8, 1008, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1241, 1, 442, 1), + (9, 1009, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1242, 1, 442, 1), + (10, 1010, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1243, 1, 442, 1); INSERT INTO `vn`.`invoiceInDueDay`(`invoiceInFk`, `dueDated`, `bankFk`, `amount`) VALUES - (1, CURDATE(), 1, 336.99), - (1, CURDATE(), 1, 15.25), - (2, CURDATE(), 1, 168), - (2, CURDATE(), 1, 55.17), - (3, CURDATE(), 1, 87.95), - (3, CURDATE(), 1, 7.65), - (4, CURDATE(), 1, 373.27), - (4, CURDATE(), 1, 73.36), - (5, CURDATE(), 1, 64.23), - (6, CURDATE(), 1, 32.95), - (7, CURDATE(), 1, 58.64); + (1, util.VN_CURDATE(), 1, 336.99), + (1, util.VN_CURDATE(), 1, 15.25), + (2, util.VN_CURDATE(), 1, 168), + (2, util.VN_CURDATE(), 1, 55.17), + (3, util.VN_CURDATE(), 1, 87.95), + (3, util.VN_CURDATE(), 1, 7.65), + (4, util.VN_CURDATE(), 1, 373.27), + (4, util.VN_CURDATE(), 1, 73.36), + (5, util.VN_CURDATE(), 1, 64.23), + (6, util.VN_CURDATE(), 1, 32.95), + (7, util.VN_CURDATE(), 1, 58.64); INSERT INTO `vn`.`duaInvoiceIn`(`id`, `duaFk`, `invoiceInFk`) VALUES @@ -2375,29 +2472,36 @@ INSERT INTO `vn`.`duaInvoiceIn`(`id`, `duaFk`, `invoiceInFk`) (4, 4, 4), (5, 5, 5), (6, 6, 6), - (7, 7, 7), - (8, 8, 8), + (7, 7, 7), + (8, 8, 8), (9, 9, 9), (10, 10, 10); INSERT INTO `vn`.`invoiceInTax` (`invoiceInFk`, `taxableBase`, `expenceFk`, `foreignValue`, `taxTypeSageFk`, `transactionTypeSageFk`) VALUES - (1, 99.99, '2000000000', null, null, null), - (2, 999.99, '2000000000', null, null, null), - (3, 1000.50, '2000000000', null, null, null), - (4, 0.50, '2000000000', null, null, null), - (5, 150.50, '2000000000', null, null, null), - (1, 252.25, '4751000000', NULL, 7, 61), - (2, 223.17, '6210000567', NULL, 8, 20), - (3, 95.60, '7001000000', NULL, 8, 35), - (4, 446.63, '7001000000', NULL, 6, 61), - (5, 64.23, '6210000567', NULL, 8, 20), - (6, 29.95, '7001000000', NULL, 7, 20), - (7, 58.64, '6210000567', NULL, 8, 20); + (1, 99.99, '2000000000', NULL, NULL, NULL), + (2, 999.99, '2000000000', NULL, NULL, NULL), + (3, 1000.50, '2000000000', NULL, NULL, NULL), + (4, 0.50, '2000000000', NULL, NULL, NULL), + (5, 150.50, '2000000000', NULL, NULL, NULL), + (1, 252.25, '4751000000', NULL, 7, 61), + (2, 223.17, '6210000567', NULL, 8, 20), + (3, 95.60, '7001000000', NULL, 8, 35), + (4, 446.63, '7001000000', NULL, 6, 61), + (5, 64.23, '6210000567', NULL, 8, 20), + (6, 29.95, '7001000000', NULL, 7, 20), + (7, 58.64, '6210000567', NULL, 8, 20); + +INSERT INTO `vn`.`invoiceInIntrastat` (`invoiceInFk`, `net`, `intrastatFk`, `amount`, `stems`, `countryFk`) + VALUES + (1, 30.50, 5080000, 10.00, 162, 5), + (1, 10, 6021010, 20.00, 205, 5), + (2, 13.20, 5080000, 15.00, 580, 5), + (2, 16.10, 6021010, 25.00, 80, 5); INSERT INTO `vn`.`ticketRecalc`(`ticketFk`) - SELECT `id` - FROM `vn`.`ticket` t + SELECT t.id + FROM vn.ticket t LEFT JOIN vn.ticketRecalc tr ON tr.ticketFk = t.id WHERE tr.ticketFk IS NULL; @@ -2411,25 +2515,25 @@ INSERT INTO `vn`.`zoneAgencyMode`(`id`, `agencyModeFk`, `zoneFk`) (4, 7, 1); INSERT INTO `vn`.`expeditionTruck` (`id`, `ETD`, `description`) - VALUES - (1, CONCAT(YEAR(DATE_ADD(CURDATE(), INTERVAL +3 YEAR))), 'Best truck in fleet'); + VALUES + (1, CONCAT(YEAR(DATE_ADD(util.VN_CURDATE(), INTERVAL +3 YEAR))), 'Best truck in fleet'); INSERT INTO `vn`.`expeditionPallet` (`id`, `truckFk`, `built`, `position`, `isPrint`) VALUES - (1, 1, CURDATE(), 1, 1); + (1, 1, util.VN_CURDATE(), 1, 1); INSERT INTO `vn`.`expeditionScan` (`id`, `expeditionFk`, `scanned`, `palletFk`) - VALUES - (1, 1, CURDATE(), 1), - (2, 2, CURDATE(), 1), - (3, 3, CURDATE(), 1), - (4, 4, CURDATE(), 1), - (5, 5, CURDATE(), 1), - (6, 6, CURDATE(), 1), - (7, 7, CURDATE(), 1), - (8, 8, CURDATE(), 1), - (9, 9, CURDATE(), 1), - (10, 10, CURDATE(), 1); + VALUES + (1, 1, util.VN_CURDATE(), 1), + (2, 2, util.VN_CURDATE(), 1), + (3, 3, util.VN_CURDATE(), 1), + (4, 4, util.VN_CURDATE(), 1), + (5, 5, util.VN_CURDATE(), 1), + (6, 6, util.VN_CURDATE(), 1), + (7, 7, util.VN_CURDATE(), 1), + (8, 8, util.VN_CURDATE(), 1), + (9, 9, util.VN_CURDATE(), 1), + (10, 10, util.VN_CURDATE(), 1); CALL `cache`.`last_buy_refresh`(FALSE); @@ -2438,8 +2542,180 @@ UPDATE `vn`.`item` SET `genericFk` = 9 INSERT INTO `bs`.`defaulter` (`clientFk`, `amount`, `created`, `defaulterSinced`) VALUES - (1101, 500, CURDATE(), CURDATE()), - (1102, 500, CURDATE(), CURDATE()), - (1103, 500, CURDATE(), CURDATE()), - (1107, 500, CURDATE(), CURDATE()), - (1109, 500, CURDATE(), CURDATE()); + (1101, 500, util.VN_CURDATE(), util.VN_CURDATE()), + (1102, 500, util.VN_CURDATE(), util.VN_CURDATE()), + (1103, 500, util.VN_CURDATE(), util.VN_CURDATE()), + (1107, 500, util.VN_CURDATE(), util.VN_CURDATE()), + (1109, 500, util.VN_CURDATE(), util.VN_CURDATE()); + +UPDATE `vn`.`route` + SET `invoiceInFk`=1 + WHERE `id`=1; + +UPDATE `vn`.`route` + SET `invoiceInFk`=2 + WHERE `id`=2; +INSERT INTO `bs`.`salesPerson` (`workerFk`, `year`, `month`, `portfolioWeight`) + VALUES + (18, YEAR(util.VN_CURDATE()), MONTH(util.VN_CURDATE()), 807.23), + (19, YEAR(util.VN_CURDATE()), MONTH(util.VN_CURDATE()), 34.40); + +INSERT INTO `bs`.`sale` (`saleFk`, `amount`, `dated`, `typeFk`, `clientFk`) + VALUES + (1, 501.95, util.VN_CURDATE(), 2, 1101), + (2, 70.7, util.VN_CURDATE(), 2, 1101), + (3, 200.78, util.VN_CURDATE(), 2, 1101), + (4, 33.8, util.VN_CURDATE(), 1, 1101), + (30, 34.4, util.VN_CURDATE(), 1, 1108); + +INSERT INTO `vn`.`docuware` (`code`, `fileCabinetName`, `dialogName` , `find`) + VALUES + ('deliveryClient', 'deliveryClient', 'findTicket', 'word'); + +INSERT INTO `vn`.`docuwareConfig` (`url`) + VALUES + ('https://verdnatura.docuware.cloud/docuware/platform'); + +INSERT INTO `vn`.`calendarHolidaysName` (`id`, `name`) + VALUES + (1, 'dayOfIT'); + +INSERT INTO `vn`.`calendarHolidaysType` (`id`, `name`, `hexColour`) + VALUES + (1, 'National', '#4169E1'); + +INSERT INTO `vn`.`calendarHolidays` (`id`, `calendarHolidaysTypeFk`, `dated`, `calendarHolidaysNameFk`, `workCenterFk`) + VALUES + (1, 1, CONCAT(YEAR(util.VN_CURDATE()), '-12-09'), 1, 1); + +INSERT INTO `vn`.`supplierAgencyTerm` (`agencyFk`, `supplierFk`, `minimumPackages`, `kmPrice`, `packagePrice`, `routePrice`, `minimumKm`, `minimumM3`, `m3Price`) + VALUES + (1, 1, 0, 0.00, 0.00, NULL, 0, 0.00, 23), + (2, 1, 60, 0.00, 0.00, NULL, 0, 5.00, 33), + (3, 2, 0, 15.00, 0.00, NULL, 0, 0.00, 0), + (4, 2, 0, 20.00, 0.00, NULL, 0, 0.00, 0), + (5, 442, 0, 0.00, 3.05, NULL, 0, 0.00, 0); + +INSERT INTO `vn`.`chat` (`senderFk`, `recipient`, `dated`, `checkUserStatus`, `message`, `status`, `attempts`) + VALUES + (1101, '@PetterParker', util.VN_CURDATE(), 1, 'First test message', 0, 0), + (1101, '@PetterParker', util.VN_CURDATE(), 0, 'Second test message', 0, 0); + + +INSERT INTO `vn`.`mobileAppVersionControl` (`appName`, `version`, `isVersionCritical`) + VALUES + ('delivery', '9.2', 0), + ('warehouse', '8.1', 0); + +INSERT INTO `vn`.`machine` (`plate`, `maker`, `model`, `warehouseFk`, `departmentFk`, `type`, `use`, `productionYear`, `workerFk`, `companyFk`) + VALUES + ('RE-001', 'STILL', 'LTX-20', 60, 23, 'ELECTRIC TOW', 'Drag cars', 2020, 103, 442), + ('RE-002', 'STILL', 'LTX-20', 60, 23, 'ELECTRIC TOW', 'Drag cars', 2020, 103, 442); + +INSERT INTO `vn`.`machineWorker` (`workerFk`, `machineFk`, `inTimed`, `outTimed`) + VALUES + (1106, 1, util.VN_CURDATE(), util.VN_CURDATE()), + (1106, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)), + (1106, 2, util.VN_CURDATE(), NULL), + (1106, 2, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL +1 DAY)); + +INSERT INTO `vn`.`zoneExclusion` (`id`, `zoneFk`, `dated`, `created`, `userFk`) +VALUES + (1, 1, DATE_ADD(CURDATE(), INTERVAL (IF(DAYOFWEEK(CURDATE())<=7, 7, 14) - DAYOFWEEK(util.VN_CURDATE())) DAY), util.VN_CURDATE(), 100), + (2, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL (IF(DAYOFWEEK(util.VN_CURDATE())<=8, 8, 15) - DAYOFWEEK(util.VN_CURDATE())) DAY), util.VN_CURDATE(), 100); + +INSERT INTO `vn`.`zoneExclusionGeo` (`zoneExclusionFk`, `geoFk`) + VALUES + (2, 1); + +INSERT INTO `vn`.`mdbBranch` (`name`) + VALUES + ('test'), + ('master'); + +INSERT INTO `vn`.`mdbVersion` (`app`, `branchFk`, `version`) + VALUES + ('tpv', 'test', '1'), + ('lab', 'master', '1'); + +INSERT INTO `vn`.`accountingConfig` (`id`, `minDate`, `maxDate`) + VALUES + (1, '2022-01-01', '2023-01-01'); + + +INSERT INTO `vn`.`saleGroup` (`userFk`, `parkingFk`, `sectorFk`) + VALUES + (1, 1, 1); + +INSERT INTO `vn`.`saleGroupDetail` (`saleFk`, `saleGroupFk`) + VALUES + (31, 1); + +INSERT INTO `vn`.`sectorCollection` (`userFk`, `sectorFk`) + VALUES + (1, 1); + +INSERT INTO `vn`.`sectorCollectionSaleGroup` (`sectorCollectionFk`, `saleGroupFk`) + VALUES + (1, 1); + +INSERT INTO `vn`.`workerTimeControlConfig` (`id`, `dayBreak`, `dayBreakDriver`, `shortWeekBreak`, `longWeekBreak`, `weekScope`, `mailPass`, `mailHost`, `mailSuccessFolder`, `mailErrorFolder`, `mailUser`, `minHoursToBreak`, `breakHours`, `hoursCompleteWeek`, `startNightlyHours`, `endNightlyHours`, `maxTimePerDay`, `breakTime`, `timeToBreakTime`, `dayMaxTime`, `shortWeekDays`, `longWeekDays`) + VALUES + (1, 43200, 32400, 129600, 259200, 604800, '', '', 'Leidos.exito', 'Leidos.error', 'timeControl', 5.33, 0.33, 40, '22:00:00', '06:00:00', 57600, 1200, 18000, 57600, 6, 13); + +INSERT INTO `vn`.`host` (`id`, `code`, `description`, `warehouseFk`, `bankFk`) + VALUES + (1, 'pc1', 'pc host', 1, 1); + +INSERT INTO `vn`.`packingSite` (`id`, `code`, `hostFk`, `monitorId`) + VALUES + (1, 'h1', 1, ''); + +INSERT INTO `vn`.`packingSiteConfig` (`shinobiUrl`, `shinobiToken`, `shinobiGroupKey`, `avgBoxingTime`) + VALUES + ('', 'SHINNOBI_TOKEN', 'GROUP_TOKEN', 6000); +INSERT INTO `util`.`notificationConfig` + SET `cleanDays` = 90; + +INSERT INTO `util`.`notification` (`id`, `name`, `description`) + VALUES + (1, 'print-email', 'notification fixture one'); + +INSERT INTO `util`.`notificationAcl` (`notificationFk`, `roleFk`) + VALUES + (1, 9); + +INSERT INTO `util`.`notificationQueue` (`id`, `notificationFk`, `params`, `authorFk`, `status`, `created`) + VALUES + (1, 'print-email', '{"id": "1"}', 9, 'pending', util.VN_CURDATE()), + (2, 'print-email', '{"id": "2"}', null, 'pending', util.VN_CURDATE()), + (3, 'print-email', null, null, 'pending', util.VN_CURDATE()); + +INSERT INTO `util`.`notificationSubscription` (`notificationFk`, `userFk`) + VALUES + (1, 1109), + (1, 1110); + +INSERT INTO `vn`.`routeConfig` (`id`, `defaultWorkCenterFk`) + VALUES + (1, 9); + +INSERT INTO `vn`.`productionConfig` (`isPreviousPreparationRequired`, `ticketPrintedMax`, `ticketTrolleyMax`, `rookieDays`, `notBuyingMonths`, `id`, `isZoneClosedByExpeditionActivated`, `maxNotReadyCollections`, `minTicketsToCloseZone`, `movingTicketDelRoute`, `defaultZone`, `defautlAgencyMode`, `hasUniqueCollectionTime`, `maxCollectionWithoutUser`, `pendingCollectionsOrder`, `pendingCollectionsAge`) + VALUES + (0, 8, 80, 0, 0, 1, 0, 15, 25, -1, 697, 1328, 0, 1, 8, 6); + +INSERT INTO `vn`.`collection` (`id`, `created`, `workerFk`, `stateFk`, `itemPackingTypeFk`, `saleTotalCount`, `salePickedCount`, `trainFk`, `sectorFk`, `wagons`) + VALUES + (3, util.VN_NOW(), 1107, 5, NULL, 0, 0, 1, NULL, NULL); + +INSERT INTO `vn`.`ticketCollection` (`ticketFk`, `collectionFk`, `created`, `level`, `wagon`, `smartTagFk`, `usedShelves`, `itemCount`, `liters`) + VALUES + (9, 3, util.VN_NOW(), NULL, 0, NULL, NULL, NULL, NULL); + +UPDATE `account`.`user` + SET `hasGrant` = 1 + WHERE `id` = 66; + +INSERT INTO `vn`.`osTicketConfig` (`id`, `host`, `user`, `password`, `oldStatus`, `newStatusId`, `day`, `comment`, `hostDb`, `userDb`, `passwordDb`, `portDb`, `responseType`, `fromEmailId`, `replyTo`) + VALUES + (0, 'http://localhost:56596/scp', 'ostadmin', 'Admin1', 'open', 3, 60, 'Este CAU se ha cerrado automáticamente. Si el problema persiste responda a este mensaje.', 'localhost', 'osticket', 'osticket', 40003, 'reply', 1, 'all'); diff --git a/db/dump/mockDate.sql b/db/dump/mockDate.sql new file mode 100644 index 000000000..c63c2d76c --- /dev/null +++ b/db/dump/mockDate.sql @@ -0,0 +1,43 @@ +CREATE SCHEMA IF NOT EXISTS `util`; +USE `util`; + +DELIMITER ;; +DROP FUNCTION IF EXISTS `util`.`mockedDate`; +CREATE FUNCTION `util`.`mockedDate`() +RETURNS DATETIME +DETERMINISTIC +BEGIN + RETURN NOW(); + -- '2022-01-19 08:00:00' +END ;; +DELIMITER ; + +DELIMITER ;; +DROP FUNCTION IF EXISTS `util`.`VN_CURDATE`; +CREATE FUNCTION `util`.`VN_CURDATE`() +RETURNS DATE +DETERMINISTIC +BEGIN + RETURN DATE(mockedDate()); +END ;; +DELIMITER ; + +DELIMITER ;; +DROP FUNCTION IF EXISTS `util`.`VN_CURTIME`; +CREATE FUNCTION `util`.`VN_CURTIME`() +RETURNS TIME +DETERMINISTIC +BEGIN + RETURN TIME(mockedDate()); +END ;; +DELIMITER ; + +DELIMITER ;; +DROP FUNCTION IF EXISTS `util`.`VN_NOW`; +CREATE FUNCTION `util`.`VN_NOW`() +RETURNS DATETIME +DETERMINISTIC +BEGIN + RETURN mockedDate(); +END ;; +DELIMITER ; \ No newline at end of file diff --git a/db/dump/structure.sql b/db/dump/structure.sql index 5b463d420..9f2370832 100644 --- a/db/dump/structure.sql +++ b/db/dump/structure.sql @@ -1,8 +1,8 @@ -- MariaDB dump 10.19 Distrib 10.5.12-MariaDB, for debian-linux-gnu (x86_64) -- --- Host: db.verdnatura.es Database: account +-- Host: 127.0.0.1 Database: account -- ------------------------------------------------------ --- Server version 5.6.25-4-log +-- Server version 10.7.3-MariaDB-1:10.7.3+maria~focal /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -19,7 +19,7 @@ -- Current Database: `account` -- -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `account` /*!40100 DEFAULT CHARACTER SET utf8 */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `account` /*!40100 DEFAULT CHARACTER SET utf8mb3 */; USE `account`; @@ -34,19 +34,20 @@ CREATE TABLE `account` ( `id` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `account_ibfk_3` FOREIGN KEY (`id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Users allowed to have an account'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Users allowed to have an account'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `account_afterInsert` - AFTER INSERT ON `account` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `account`.`account_afterInsert` + AFTER INSERT ON `account` + FOR EACH ROW BEGIN INSERT IGNORE INTO userSync (`name`) SELECT `name` FROM `user` WHERE id = NEW.id; @@ -59,14 +60,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `account_afterDelete` - AFTER DELETE ON `account` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `account`.`account_afterDelete` + AFTER DELETE ON `account` + FOR EACH ROW BEGIN INSERT IGNORE INTO userSync (`name`) SELECT `name` FROM `user` WHERE id = OLD.id; @@ -86,15 +88,15 @@ DROP TABLE IF EXISTS `accountConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `accountConfig` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, - `homedir` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The base folder for users home directory', - `shell` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The default shell', + `homedir` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'The base folder for users home directory', + `shell` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'The default shell', `idBase` int(11) NOT NULL COMMENT 'Base id for Posix users and groups', `min` smallint(6) NOT NULL, `max` smallint(6) NOT NULL COMMENT 'Maximum password age (seconds)', `warn` smallint(6) NOT NULL COMMENT 'Warn to change password when elapsed (seconds)', `inact` smallint(6) NOT NULL COMMENT 'Maximum inactivity time (seconds)', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Global configuration parameters for accounts'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Global configuration parameters for accounts'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -120,14 +122,14 @@ DROP TABLE IF EXISTS `accountLog`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `accountLog` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `msg` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `pid` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `user` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `host` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `rhost` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `time` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `msg` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `pid` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `user` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `host` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `rhost` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `time` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -153,13 +155,13 @@ DROP TABLE IF EXISTS `ldapConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ldapConfig` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `server` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The LDAP server access url', - `rdn` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The LDAP user', - `password` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The LDAP password', - `userDn` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The base DN for users', - `groupDn` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The base DN for groups', + `server` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'The LDAP server access url', + `rdn` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'The LDAP user', + `password` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'The LDAP password', + `userDn` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'The base DN for users', + `groupDn` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'The base DN for groups', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='LDAP server configuration parameters'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='LDAP server configuration parameters'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -171,12 +173,12 @@ DROP TABLE IF EXISTS `mailAlias`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `mailAlias` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `alias` varchar(50) CHARACTER SET utf8 NOT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `isPublic` tinyint(4) NOT NULL DEFAULT '1', + `alias` varchar(50) CHARACTER SET utf8mb3 NOT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isPublic` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`id`), UNIQUE KEY `alias` (`alias`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Mail aliases'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Mail aliases'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -195,7 +197,7 @@ CREATE TABLE `mailAliasAccount` ( KEY `account` (`account`), CONSTRAINT `account` FOREIGN KEY (`account`) REFERENCES `account` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `mailAlias` FOREIGN KEY (`mailAlias`) REFERENCES `mailAlias` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Mail alias that is assigned to each account'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Mail alias that is assigned to each account'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -207,11 +209,12 @@ DROP TABLE IF EXISTS `mailClientAccess`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `mailClientAccess` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `client` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, - `action` set('OK','REJECT') CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'REJECT', + `client` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL, + `action` set('OK','REJECT') CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'REJECT', + `description` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `mailFrom` (`client`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -225,7 +228,7 @@ CREATE TABLE `mailConfig` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `domain` varchar(255) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -237,10 +240,10 @@ DROP TABLE IF EXISTS `mailForward`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `mailForward` ( `account` int(10) unsigned NOT NULL, - `forwardTo` varchar(250) CHARACTER SET utf8 NOT NULL, + `forwardTo` varchar(250) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`account`), CONSTRAINT `mailForward_ibfk_1` FOREIGN KEY (`account`) REFERENCES `account` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Mail forwarding'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Mail forwarding'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -252,11 +255,12 @@ DROP TABLE IF EXISTS `mailSenderAccess`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `mailSenderAccess` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `sender` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, + `sender` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL, `action` set('OK','REJECT') NOT NULL DEFAULT 'REJECT', + `description` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `mailFrom` (`sender`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -301,26 +305,27 @@ DROP TABLE IF EXISTS `role`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `role` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(14) COLLATE utf8_unicode_ci NOT NULL COMMENT 'MySQL doesn''t support more than 14 chars for proxied user names', - `description` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `hasLogin` tinyint(3) unsigned NOT NULL DEFAULT '1', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `name` varchar(14) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'MySQL doesn''t support more than 14 chars for proxied user names', + `description` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `hasLogin` tinyint(3) unsigned NOT NULL DEFAULT 1, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `modified` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Roles'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Roles'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER role_beforeInsert - BEFORE INSERT ON `role` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `account`.`role_beforeInsert` + BEFORE INSERT ON `role` + FOR EACH ROW BEGIN CALL role_checkName(NEW.`name`); END */;; @@ -332,14 +337,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER role_beforeUpdate - BEFORE UPDATE ON `role` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `account`.`role_beforeUpdate` + BEFORE UPDATE ON `role` + FOR EACH ROW BEGIN IF !(NEW.`name` <=> OLD.`name`) THEN CALL role_checkName (NEW.`name`); @@ -361,8 +367,12 @@ DROP TABLE IF EXISTS `roleConfig`; CREATE TABLE `roleConfig` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Identifier', `mysqlPassword` varchar(255) NOT NULL COMMENT 'The password used for MySQL user roles, base64 encoded', + `rolePrefix` char(2) NOT NULL, + `userPrefix` char(2) DEFAULT NULL, + `userHost` varchar(255) NOT NULL, + `tplUser` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COMMENT='Role configuration parameters'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COMMENT='Role configuration parameters'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -381,7 +391,7 @@ CREATE TABLE `roleInherit` ( KEY `owner_id` (`inheritsFrom`), CONSTRAINT `roleInherit_ibfk_1` FOREIGN KEY (`role`) REFERENCES `role` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `roleInherit_ibfk_2` FOREIGN KEY (`inheritsFrom`) REFERENCES `role` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Role inheritance'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Role inheritance'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -397,7 +407,7 @@ CREATE TABLE `roleRole` ( `inheritsFrom` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `role` (`role`,`inheritsFrom`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Calculated role inheritance'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Calculated role inheritance'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -409,13 +419,13 @@ DROP TABLE IF EXISTS `sambaConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `sambaConfig` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, - `adDomain` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Active directory domain', - `adController` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The hosname of domain controller', - `adUser` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Active directory user', - `adPassword` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Active directory password', - `verifyCert` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT 'Whether to verify server certificate', + `adDomain` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'Active directory domain', + `adController` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'The hosname of domain controller', + `adUser` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'Active directory user', + `adPassword` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'Active directory password', + `verifyCert` tinyint(3) unsigned NOT NULL DEFAULT 1 COMMENT 'Whether to verify server certificate', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Global configuration parameters for accounts'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Global configuration parameters for accounts'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -427,42 +437,43 @@ DROP TABLE IF EXISTS `user`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `realm` varchar(512) CHARACTER SET utf8 DEFAULT NULL, - `name` varchar(30) CHARACTER SET utf8 NOT NULL, - `nickname` varchar(127) COLLATE utf8_unicode_ci NOT NULL, - `bcryptPassword` varchar(512) COLLATE utf8_unicode_ci DEFAULT NULL, - `role` int(10) unsigned NOT NULL DEFAULT '2', - `active` tinyint(1) NOT NULL DEFAULT '1', - `email` varchar(255) CHARACTER SET utf8 DEFAULT NULL, + `realm` varchar(512) CHARACTER SET utf8mb3 DEFAULT NULL, + `name` varchar(30) CHARACTER SET utf8mb3 NOT NULL, + `nickname` varchar(127) COLLATE utf8mb3_unicode_ci NOT NULL, + `bcryptPassword` varchar(512) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `role` int(10) unsigned NOT NULL DEFAULT 2, + `active` tinyint(1) NOT NULL DEFAULT 1, + `email` varchar(255) CHARACTER SET utf8mb3 DEFAULT NULL, `emailVerified` tinyint(1) DEFAULT NULL, - `verificationToken` varchar(512) CHARACTER SET utf8 DEFAULT NULL, - `lang` char(2) CHARACTER SET utf8 DEFAULT NULL, + `verificationToken` varchar(512) CHARACTER SET utf8mb3 DEFAULT NULL, + `lang` char(2) CHARACTER SET utf8mb3 DEFAULT NULL, `lastPassChange` datetime DEFAULT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `image` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `password` char(64) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Deprecated', - `recoverPass` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT 'Deprecated', - `sync` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Deprecated', + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `updated` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `image` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `password` char(64) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'Deprecated', + `recoverPass` tinyint(3) unsigned NOT NULL DEFAULT 1 COMMENT 'Deprecated', + `sync` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'Deprecated', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`), + UNIQUE KEY `mail` (`email`), KEY `role` (`role`), KEY `email` (`email`), KEY `nickname` (`nickname`), KEY `lang` (`lang`), CONSTRAINT `user_ibfk_2` FOREIGN KEY (`role`) REFERENCES `role` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Global users'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Global users'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `user_beforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `account`.`user_beforeInsert` BEFORE INSERT ON `user` FOR EACH ROW BEGIN @@ -482,17 +493,16 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER user_afterInsert - AFTER INSERT - ON user - FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `account`.`user_afterInsert` + AFTER INSERT ON `user` + FOR EACH ROW BEGIN CALL hedera.image_ref('user', NEW.image); - + INSERT IGNORE INTO userSync SET `name` = NEW.`name`; END */;; DELIMITER ; @@ -503,14 +513,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `user_beforeUpdate` - BEFORE UPDATE ON `user` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `account`.`user_beforeUpdate` + BEFORE UPDATE ON `user` + FOR EACH ROW BEGIN IF !(NEW.`name` <=> OLD.`name`) THEN CALL user_checkName (NEW.`name`); @@ -518,7 +529,7 @@ BEGIN IF !(NEW.`password` <=> OLD.`password`) THEN SET NEW.bcryptPassword = NULL; - SET NEW.lastPassChange = NOW(); + SET NEW.lastPassChange = util.VN_NOW(); END IF; END */;; DELIMITER ; @@ -531,14 +542,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER user_afterUpdate - AFTER UPDATE - ON user - FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `account`.`user_afterUpdate` + AFTER UPDATE ON `user` + FOR EACH ROW BEGIN IF !(NEW.image <=> OLD.image) THEN CALL hedera.image_unref('user', OLD.image); @@ -557,7 +567,7 @@ BEGIN 'jgallego@verdnatura.es', 'Rol modificado', CONCAT( - myUserGetName(), + myUser_getName(), ' ha modificado el rol del usuario ', NEW.`name`, ' de ', OLD.role, ' a ', NEW.role) ); @@ -573,14 +583,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER user_afterDelete - AFTER DELETE - ON user - FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `account`.`user_afterDelete` + AFTER DELETE ON `user` + FOR EACH ROW BEGIN CALL hedera.image_unref('user', OLD.image); @@ -603,7 +612,7 @@ CREATE TABLE `userConfig` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `loginKey` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -621,7 +630,7 @@ CREATE TABLE `userPassword` ( `nDigits` tinyint(3) unsigned NOT NULL COMMENT 'Minimum of digits', `nPunct` tinyint(3) unsigned NOT NULL COMMENT 'Minimum of symbols', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Restrictions on user passwords'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Restrictions on user passwords'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -634,7 +643,7 @@ DROP TABLE IF EXISTS `userSync`; CREATE TABLE `userSync` ( `name` varchar(30) NOT NULL COMMENT 'The user name', PRIMARY KEY (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Users pending to be synchronized'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='Users pending to be synchronized'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -644,111 +653,17 @@ CREATE TABLE `userSync` ( -- -- Dumping routines for database 'account' -- -/*!50003 DROP FUNCTION IF EXISTS `myUserGetId` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `myUserGetId`() RETURNS int(11) - READS SQL DATA - DETERMINISTIC -BEGIN -/** - * @deprecated Use myUser_getId() - */ - RETURN myUser_getId(); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `myUserGetName` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `myUserGetName`() RETURNS varchar(30) CHARSET utf8 - NO SQL - DETERMINISTIC -BEGIN -/** - * @deprecated Use myUser_getName() - */ - RETURN myUser_getName(); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `myUserHasRole` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `myUserHasRole`(vRoleName VARCHAR(255)) RETURNS tinyint(1) - DETERMINISTIC -BEGIN -/** - * @deprecated Use myUser_hasRole() - */ - RETURN myUser_hasRole(vRoleName); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `myUserHasRoleId` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `myUserHasRoleId`(vRoleId INT) RETURNS tinyint(1) - DETERMINISTIC -BEGIN -/** - * @deprecated Use myUser_hasRoleId() - */ - RETURN myUser_hasRoleId(vRoleId); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `myUser_checkLogin` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `myUser_checkLogin`() RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `myUser_checkLogin`() RETURNS tinyint(1) READS SQL DATA DETERMINISTIC BEGIN @@ -768,8 +683,9 @@ BEGIN SET vSignature = util.hmacSha2(256, CONCAT_WS('/', @userId, @userName), vKey); RETURN vSignature = @userSignature; END IF; - + RETURN FALSE; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -780,13 +696,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `myUser_getId`() RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `myUser_getId`() RETURNS int(11) READS SQL DATA DETERMINISTIC BEGIN @@ -796,7 +712,7 @@ BEGIN * @return The user id */ DECLARE vUser INT DEFAULT NULL; - + IF myUser_checkLogin() THEN SET vUser = @userId; @@ -804,7 +720,7 @@ BEGIN SELECT id INTO vUser FROM user WHERE name = LEFT(USER(), INSTR(USER(), '@') - 1); END IF; - + RETURN vUser; END ;; DELIMITER ; @@ -816,13 +732,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `myUser_getName`() RETURNS varchar(30) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `myUser_getName`() RETURNS varchar(30) CHARSET utf8mb3 NO SQL DETERMINISTIC BEGIN @@ -839,7 +755,7 @@ BEGIN ELSE SET vUser = LEFT(USER(), INSTR(USER(), '@') - 1); END IF; - + RETURN vUser; END ;; DELIMITER ; @@ -851,13 +767,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `myUser_hasRole`(vRoleName VARCHAR(255)) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `myUser_hasRole`(vRoleName VARCHAR(255)) RETURNS tinyint(1) DETERMINISTIC BEGIN /** @@ -877,13 +793,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `myUser_hasRoleId`(vRoleId INT) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `myUser_hasRoleId`(vRoleId INT) RETURNS tinyint(1) DETERMINISTIC BEGIN /** @@ -892,7 +808,7 @@ BEGIN * @param vRoleName Role id to check * @return %TRUE if it has role, %FALSE otherwise */ - RETURN user_hasRoleId(myUserGetName(), vRoleId); + RETURN user_hasRoleId(myUser_getName(), vRoleId); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -907,9 +823,9 @@ DELIMITER ; /*!50003 SET character_set_results = utf8mb4 */ ; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `passwordGenerate`() RETURNS text CHARSET utf8 COLLATE utf8_unicode_ci +CREATE DEFINER=`root`@`localhost` FUNCTION `passwordGenerate`() RETURNS text CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci READS SQL DATA BEGIN /** @@ -934,10 +850,10 @@ BEGIN DECLARE vDigitChars TEXT DEFAULT '1234567890'; DECLARE vPunctChars TEXT DEFAULT '!$%&()=.'; - SELECT length, nAlpha, nUpper, nDigits, nPunct + SELECT length, nAlpha, nUpper, nDigits, nPunct INTO vMinLength, vMinAlpha, vMinUpper, vMinDigits, vMinPunct FROM userPassword; - WHILE LENGTH(vPwd) < vMinLength OR vAlpha < vMinAlpha + WHILE LENGTH(vPwd) < vMinLength OR vAlpha < vMinAlpha OR vUpper < vMinUpper OR vDigits < vMinDigits OR vPunct < vMinPunct DO SET vRandIndex = FLOOR((RAND() * 4) + 1); @@ -967,13 +883,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `toUnixDays`(vDate DATE) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `toUnixDays`(vDate DATE) RETURNS int(11) DETERMINISTIC BEGIN /** @@ -989,111 +905,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `userGetId` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `userGetId`() RETURNS int(11) - READS SQL DATA - DETERMINISTIC -BEGIN -/** - * @deprecated Use myUser_getId() - */ - RETURN myUser_getId(); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `userGetName` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `userGetName`() RETURNS varchar(30) CHARSET utf8 - NO SQL - DETERMINISTIC -BEGIN -/** - * @deprecated Use myUser_getName() - */ - RETURN myUser_getName(); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `userHasRole` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `userHasRole`(vUserName VARCHAR(255), vRoleName VARCHAR(255)) RETURNS tinyint(1) - DETERMINISTIC -BEGIN -/** - * @deprecated Use user_hasRole() - */ - RETURN user_hasRole(vUserName, vRoleName); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `userHasRoleId` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `userHasRoleId`(vUser VARCHAR(255), vRoleId INT) RETURNS tinyint(1) - DETERMINISTIC -BEGIN -/** - * @deprecated Use user_hasRoleId() - */ - RETURN user_hasRoleId(vUser, vRoleId); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `user_getMysqlRole` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `user_getMysqlRole`(vUserName VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 COLLATE utf8_unicode_ci +CREATE DEFINER=`root`@`localhost` FUNCTION `user_getMysqlRole`(vUserName VARCHAR(255)) RETURNS varchar(255) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci DETERMINISTIC BEGIN /** @@ -1105,11 +927,12 @@ BEGIN */ DECLARE vRole VARCHAR(255); - SELECT CONCAT(IF(r.hasLogin, 'z-', ''), r.name) INTO vRole - FROM role r + SELECT CONCAT(IF(r.hasLogin, c.rolePrefix, ''), r.name) INTO vRole + FROM role r JOIN user u ON u.role = r.id + JOIN roleConfig c WHERE u.name = vUserName; - + RETURN vRole; END ;; DELIMITER ; @@ -1121,27 +944,27 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `user_getNameFromId`(vSelf INT) RETURNS varchar(30) CHARSET utf8 COLLATE utf8_unicode_ci +CREATE DEFINER=`root`@`localhost` FUNCTION `user_getNameFromId`(vSelf INT) RETURNS varchar(30) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci DETERMINISTIC BEGIN /** * Gets user name from it's id. - * + * * @param vSelf The user id * @return The user name */ DECLARE vName VARCHAR(30); - - SELECT `name` INTO vName - FROM user + + SELECT `name` INTO vName + FROM user WHERE id = vSelf; - + RETURN vName; END ;; DELIMITER ; @@ -1153,13 +976,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `user_hasRole`(vUserName VARCHAR(255), vRoleName VARCHAR(255)) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `user_hasRole`(vUserName VARCHAR(255), vRoleName VARCHAR(255)) RETURNS tinyint(1) DETERMINISTIC BEGIN /** @@ -1189,13 +1012,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `user_hasRoleId`(vUser VARCHAR(255), vRoleId INT) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `user_hasRoleId`(vUser VARCHAR(255), vRoleId INT) RETURNS tinyint(1) DETERMINISTIC BEGIN /** @@ -1213,7 +1036,7 @@ BEGIN JOIN role r ON r.id = rr.inheritsFrom WHERE u.`name` = vUser AND r.id = vRoleId; - + RETURN vHasRole; END ;; DELIMITER ; @@ -1221,39 +1044,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `myUserLogout` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myUserLogout`() -BEGIN -/** - * @deprecated Use myUser_Logout() - */ - CALL myUser_logout; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `myUser_changePassword` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myUser_changePassword`(vOldPassword VARCHAR(255), vPassword VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `myUser_changePassword`(vOldPassword VARCHAR(255), vPassword VARCHAR(255)) BEGIN /** * Changes the current user password. @@ -1272,13 +1073,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myUser_login`(vUserName VARCHAR(255), vPassword VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `myUser_login`(vUserName VARCHAR(255), vPassword VARCHAR(255)) READS SQL DATA BEGIN /** @@ -1294,7 +1095,7 @@ BEGIN AND password = MD5(vPassword) AND active; - IF vAuthIsOk + IF vAuthIsOk THEN CALL myUser_loginWithName (vUserName); ELSE @@ -1310,13 +1111,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myUser_loginWithKey`(vUserName VARCHAR(255), vKey VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `myUser_loginWithKey`(vUserName VARCHAR(255), vKey VARCHAR(255)) READS SQL DATA BEGIN /** @@ -1344,18 +1145,18 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myUser_loginWithName`(vUserName VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `myUser_loginWithName`(vUserName VARCHAR(255)) READS SQL DATA BEGIN /** * Logs in using only the user name. This procedure is intended to be executed - * by users with a high level of privileges so that normal users should not have + * by users with a high level of privileges so that normal users should not have * execute permissions on it. * * @param vUserName The user name @@ -1381,17 +1182,17 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myUser_logout`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `myUser_logout`() BEGIN /** * Logouts the user. - */ + */ SET @userId = NULL; SET @userName = NULL; SET @userSignature = NULL; @@ -1405,13 +1206,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myUser_restorePassword`(vVerificationToken VARCHAR(255), vPassword VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `myUser_restorePassword`(vVerificationToken VARCHAR(255), vPassword VARCHAR(255)) BEGIN /** * Changes the current user password using recovery token. @@ -1430,13 +1231,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `role_checkName`(vRoleName VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `role_checkName`(vRoleName VARCHAR(255)) BEGIN /** * Checks that role name meets the necessary syntax requirements, otherwise it @@ -1459,13 +1260,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `role_getDescendents`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `role_getDescendents`(vSelf INT) BEGIN /** * Gets the identifiers of all the subroles implemented by a role (Including @@ -1514,9 +1315,9 @@ BEGIN SELECT COUNT(*) > 0 INTO vIsRoot FROM tmp.role t - JOIN role r ON r.id = t.id + JOIN role r ON r.id = t.id WHERE r.`name` = 'root'; - + IF vIsRoot THEN INSERT IGNORE INTO tmp.role (id) SELECT id FROM role; @@ -1536,13 +1337,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `role_sync`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `role_sync`() BEGIN /** * Synchronize the @roleRole table with the current role hierarchy. This @@ -1600,9 +1401,9 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; @@ -1610,46 +1411,53 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `role_syncPrivileges`() BEGIN /** * Synchronizes permissions of MySQL role users based on role hierarchy. - * The computed role users of permission mix will be named according to - * pattern z-[role_name]. + * The computed role users of permission mix will be named according to + * pattern [vGenRolePrefix][roleName]. * - * If any@localhost user exists, it will be taken as a template for basic - * attributes. + * If [vTplUser]@[vRoleHost] user exists, it will be taken as a template for + * basic attributes. * * Warning! This procedure should only be called when MySQL privileges * are modified. If role hierarchy is modified, you must call the role_sync() * procedure wich calls this internally. */ - DECLARE vIsMysql BOOL DEFAULT VERSION() NOT LIKE '%MariaDB%'; + DECLARE vIsMariaDb BOOL DEFAULT VERSION() LIKE '%MariaDB%'; DECLARE vVersion INT DEFAULT SUBSTRING_INDEX(VERSION(), '.', 1); - DECLARE vTplUser VARCHAR(255) DEFAULT 'any'; - DECLARE vTplHost VARCHAR(255); - DECLARE vUserHost VARCHAR(255) DEFAULT '%'; + DECLARE vTplUser VARCHAR(255); DECLARE vRoleHost VARCHAR(255); - DECLARE vPrefix VARCHAR(2) DEFAULT 'z-'; + DECLARE vUserPrefix VARCHAR(2); + DECLARE vUserHost VARCHAR(255); + DECLARE vGenRolePrefix VARCHAR(2); + DECLARE vGenRoleHost VARCHAR(255); DECLARE vPrefixedLike VARCHAR(255); DECLARE vPassword VARCHAR(255) DEFAULT ''; + SELECT rolePrefix, userPrefix, userHost, tplUser + INTO vGenRolePrefix, vUserPrefix, vUserHost, vTplUser + FROM roleConfig; + -- Deletes computed role users - SET vPrefixedLike = CONCAT(vPrefix, '%'); - SET vRoleHost = vUserHost; + SET vPrefixedLike = CONCAT(vGenRolePrefix, '%'); + SET vGenRoleHost = vUserHost; - IF vIsMysql THEN - SET vTplHost = 'localhost'; - - DELETE FROM mysql.user - WHERE `User` LIKE vPrefixedLike; - ELSE - SET vTplHost = ''; + IF vIsMariaDb THEN + SET vRoleHost = ''; DELETE FROM mysql.global_priv - WHERE `User` LIKE vPrefixedLike - OR JSON_EXTRACT(`Priv`, '$.plugin') = 'pam'; + WHERE `User` LIKE vPrefixedLike; DELETE FROM mysql.roles_mapping WHERE `User` LIKE vPrefixedLike - OR `Role` LIKE vPrefixedLike; + OR ( + `Role` LIKE vPrefixedLike + AND (`User`, `Host`) = ('root', 'localhost') + ); + ELSE + SET vRoleHost = 'localhost'; + + DELETE FROM mysql.user + WHERE `User` LIKE vPrefixedLike; END IF; DELETE FROM mysql.db @@ -1676,18 +1484,119 @@ BEGIN SELECT id, `name` `role`, - CONCAT(vPrefix, `name`) prefixedRole + CONCAT(vGenRolePrefix, `name`) prefixedRole FROM `role` WHERE hasLogin; + -- Get role inheritance + + DROP TEMPORARY TABLE IF EXISTS tRoleInherit; + CREATE TEMPORARY TABLE tRoleInherit + (INDEX (inheritsFrom)) + ENGINE = MEMORY + SELECT + r.prefixedRole, + ri.`name` inheritsFrom + FROM tRole r + JOIN `roleRole` rr ON rr.role = r.id + JOIN `role` ri ON ri.id = rr.inheritsFrom + JOIN mysql.`user` u + ON u.`User` = ri.`name` AND u.`Host` = vRoleHost; + -- Recreate role users - IF vIsMysql THEN + IF vIsMariaDb THEN + -- Roles + + INSERT INTO mysql.global_priv (`Host`, `User`, `Priv`) + SELECT vRoleHost, prefixedRole, + JSON_OBJECT( + 'is_role', TRUE, + 'access', 0 + ) + FROM tRole r + UNION + SELECT vRoleHost, CONCAT(vGenRolePrefix, 'root'), + JSON_OBJECT( + 'is_role', TRUE, + 'access', 0 + ); + + INSERT INTO mysql.roles_mapping (`Host`, `User`, `Role`, `Admin_option`) + SELECT vRoleHost, prefixedRole, inheritsFrom, 'N' + FROM tRoleInherit + UNION + SELECT vRoleHost, CONCAT(vGenRolePrefix, 'root'), prefixedRole, 'Y' + FROM tRole; + + INSERT INTO mysql.roles_mapping (`Host`, `User`, `Role`, `Admin_option`) + SELECT 'localhost', 'root', prefixedRole, 'Y' + FROM tRole + UNION + SELECT 'localhost', 'root', CONCAT(vGenRolePrefix, 'root'), 'Y'; + + -- Role users + + INSERT INTO mysql.global_priv ( + `User`, + `Host`, + `Priv` + ) + SELECT + r.prefixedRole, + vGenRoleHost, + JSON_MERGE_PATCH( + IFNULL(t.`Priv`, '{}'), + IFNULL(u.`Priv`, '{}'), + JSON_OBJECT( + 'mysql_old_password', JSON_VALUE(t.`Priv`, '$.mysql_old_password'), + 'mysql_native_password', JSON_VALUE(t.`Priv`, '$.mysql_native_password'), + 'authentication_string', JSON_VALUE(t.`Priv`, '$.authentication_string'), + 'ssl_type', JSON_VALUE(t.`Priv`, '$.ssl_type'), + 'default_role', r.prefixedRole, + 'access', 0, + 'is_role', FALSE + ) + ) + FROM tRole r + LEFT JOIN mysql.global_priv t + ON (t.`User`, t.Host) = (vTplUser, vRoleHost) + LEFT JOIN mysql.global_priv u + ON (u.`User`, u.Host) = (r.`role`, vRoleHost); + + INSERT INTO mysql.roles_mapping (`Host`, `User`, `Role`, `Admin_option`) + SELECT vGenRoleHost, prefixedRole, prefixedRole, 'N' + FROM tRole; + + -- Accounts + + DROP TEMPORARY TABLE IF EXISTS tAccounts; + CREATE TEMPORARY TABLE tAccounts + (INDEX (`name`)) + ENGINE = MEMORY + SELECT p.`User` `name`, r.prefixedRole + FROM mysql.global_priv p + JOIN `user` u ON u.`name` = p.`User` + JOIN tRole r ON r.`id` = u.`role` + WHERE JSON_EXTRACT(p.`Priv`, '$.autogenerated') = 'true'; + + UPDATE mysql.global_priv p + JOIN tAccounts c ON c.`name` = p.`User` + SET p.`Priv` = JSON_SET(p.`Priv`, '$.default_role', c.prefixedRole) + WHERE p.`Host` = vUserHost; + + UPDATE IGNORE mysql.roles_mapping m + JOIN tAccounts c ON c.`name` = m.`User` + SET m.`Role` = c.prefixedRole + WHERE m.`Host` = vUserHost; + + DROP TEMPORARY TABLE tAccounts; + ELSE DROP TEMPORARY TABLE IF EXISTS tUser; CREATE TEMPORARY TABLE tUser SELECT r.prefixedRole `User`, - vRoleHost `Host`, + vGenRoleHost `Host`, IFNULL(t.`authentication_string`, '') `authentication_string`, IFNULL(t.`plugin`, @@ -1719,16 +1628,16 @@ BEGIN FROM tRole r LEFT JOIN mysql.user t ON t.`User` = vTplUser - AND t.`Host` = vTplHost + AND t.`Host` = vRoleHost LEFT JOIN mysql.user u ON u.`User` = r.role - AND u.`Host` = vTplHost; + AND u.`Host` = vRoleHost; IF vVersion <= 5 THEN SELECT `Password` INTO vPassword FROM mysql.user WHERE `User` = vTplUser - AND `Host` = vTplHost; + AND `Host` = vRoleHost; INSERT INTO mysql.user ( `User`, @@ -1793,19 +1702,6 @@ BEGIN DROP TEMPORARY TABLE tUser; - -- Get role inheritance - - DROP TEMPORARY TABLE IF EXISTS tRoleInherit; - CREATE TEMPORARY TABLE tRoleInherit - (INDEX (inheritsFrom)) - ENGINE = MEMORY - SELECT - r.prefixedRole, - ri.`name` inheritsFrom - FROM tRole r - JOIN `roleRole` rr ON rr.role = r.id - JOIN `role` ri ON ri.id = rr.inheritsFrom; - -- Proxy privileges INSERT INTO mysql.proxies_priv ( @@ -1819,8 +1715,8 @@ BEGIN '', vUserHost, prefixedRole, - vRoleHost, - CONCAT(prefixedRole, '@', vRoleHost) + vGenRoleHost, + CONCAT(prefixedRole, '@', vGenRoleHost) FROM tRole; -- Global privileges @@ -1863,13 +1759,13 @@ BEGIN FROM tRoleInherit r JOIN mysql.user u ON u.`User` = r.inheritsFrom - AND u.`Host`= vTplHost + AND u.`Host`= vRoleHost GROUP BY r.prefixedRole; - + UPDATE mysql.user u JOIN tUserPriv t ON u.`User` = t.prefixedRole - AND u.`Host` = vRoleHost + AND u.`Host` = vGenRoleHost SET u.`Select_priv` = t.`Select_priv`, @@ -1960,7 +1856,7 @@ BEGIN ) SELECT r.prefixedRole, - vRoleHost, + vGenRoleHost, t.`Db`, MAX(t.`Select_priv`), MAX(t.`Insert_priv`), @@ -1984,7 +1880,7 @@ BEGIN FROM tRoleInherit r JOIN mysql.db t ON t.`User` = r.inheritsFrom - AND t.`Host`= vTplHost + AND t.`Host`= vRoleHost GROUP BY r.prefixedRole, t.`Db`; -- Table level privileges @@ -2001,7 +1897,7 @@ BEGIN ) SELECT r.prefixedRole, - vRoleHost, + vGenRoleHost, t.`Db`, t.`Table_name`, t.`Grantor`, @@ -2011,7 +1907,7 @@ BEGIN FROM tRoleInherit r JOIN mysql.tables_priv t ON t.`User` = r.inheritsFrom - AND t.`Host`= vTplHost + AND t.`Host`= vRoleHost GROUP BY r.prefixedRole, t.`Db`, t.`Table_name`; -- Column level privileges @@ -2027,7 +1923,7 @@ BEGIN ) SELECT r.prefixedRole, - vRoleHost, + vGenRoleHost, t.`Db`, t.`Table_name`, t.`Column_name`, @@ -2036,7 +1932,7 @@ BEGIN FROM tRoleInherit r JOIN mysql.columns_priv t ON t.`User` = r.inheritsFrom - AND t.`Host`= vTplHost + AND t.`Host`= vRoleHost GROUP BY r.prefixedRole, t.`Db`, t.`Table_name`, t.`Column_name`; -- Routine privileges @@ -2053,7 +1949,7 @@ BEGIN ) SELECT r.prefixedRole, - vRoleHost, + vGenRoleHost, t.`Db`, t.`Routine_name`, t.`Routine_type`, @@ -2063,92 +1959,15 @@ BEGIN FROM tRoleInherit r JOIN mysql.procs_priv t ON t.`User` = r.inheritsFrom - AND t.`Host`= vTplHost; - - -- Cleanup - - DROP TEMPORARY TABLE tRoleInherit; - ELSE - -- Roles - - INSERT INTO mysql.global_priv (`Host`, `User`, `Priv`) - SELECT vTplHost, prefixedRole, - JSON_OBJECT( - 'access', 0, - 'is_role', true - ) - FROM tRole r; - - INSERT INTO mysql.roles_mapping (`Host`, `User`, `Role`, `Admin_option`) - SELECT vTplHost, r.prefixedRole, i.`name`, 'N' - FROM tRole r - JOIN roleRole ri - ON ri.`role` = r.id - JOIN `role` i - ON ri.`inheritsFrom` = i.id - JOIN mysql.global_priv p - ON p.`User` = i.`name` AND p.`Host` = vTplHost; - - -- Backward compatibility - - INSERT INTO mysql.global_priv ( - `User`, - `Host`, - `Priv` - ) - SELECT - r.prefixedRole, - vRoleHost, - JSON_MERGE_PATCH( - IFNULL(t.`Priv`, '{}'), - IFNULL(u.`Priv`, '{}'), - JSON_OBJECT( - 'mysql_old_password', JSON_VALUE(t.`Priv`, '$.mysql_old_password'), - 'mysql_native_password', JSON_VALUE(t.`Priv`, '$.mysql_native_password'), - 'authentication_string', JSON_VALUE(t.`Priv`, '$.authentication_string'), - 'ssl_type', JSON_VALUE(t.`Priv`, '$.ssl_type'), - 'default_role', r.prefixedRole, - 'is_role', FALSE - ) - ) - FROM tRole r - LEFT JOIN mysql.global_priv t - ON t.`User` = vTplUser - AND t.Host = vTplHost - LEFT JOIN mysql.global_priv u - ON u.`User` = r.role - AND u.Host = vTplHost; - - INSERT INTO mysql.roles_mapping (`Host`, `User`, `Role`, `Admin_option`) - SELECT vRoleHost, prefixedRole, prefixedRole, 'N' - FROM tRole; - - -- Accounts - - INSERT INTO mysql.global_priv (`Host`, `User`, `Priv`) - SELECT vUserHost, u.`name`, - JSON_OBJECT( - 'access', 0, - 'plugin', 'pam', - 'authentication_string', '', - 'default_role', r.`prefixedRole` - ) - FROM `user` u - JOIN account a ON a.`id` = u.`id` - JOIN tRole r ON r.`id` = u.`role` - WHERE u.`active`; - - INSERT INTO mysql.roles_mapping (`Host`, `User`, `Role`, `Admin_option`) - SELECT vUserHost, u.`name`, r.prefixedRole, 'N' - FROM `user` u - JOIN account a ON a.`id` = u.`id` - JOIN tRole r ON r.`id` = u.`role` - WHERE u.`active`; + AND t.`Host`= vRoleHost; END IF; -- Cleanup - DROP TEMPORARY TABLE tRole; + DROP TEMPORARY TABLE + tRole, + tRoleInherit; + FLUSH PRIVILEGES; END ;; DELIMITER ; @@ -2156,113 +1975,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `userLogin` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `userLogin`(vUserName VARCHAR(255), vPassword VARCHAR(255)) - READS SQL DATA -BEGIN -/** - * @deprecated Use myUser_login() - */ - CALL myUser_login(vUserName, vPassword); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `userLoginWithKey` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `userLoginWithKey`(vUserName VARCHAR(255), vKey VARCHAR(255)) - READS SQL DATA -BEGIN -/** - * @deprecated Use myUser_loginWithKey() - */ - CALL myUser_loginWithKey(vUserName, vKey); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `userLoginWithName` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `userLoginWithName`(vUserName VARCHAR(255)) - READS SQL DATA -BEGIN -/** - * @deprecated Use myUser_loginWithName() - */ - CALL myUser_loginWithName(vUserName); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `userSetPassword` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `userSetPassword`(vUserName VARCHAR(255), vPassword VARCHAR(255)) -BEGIN -/** - * @deprecated Use user_setPassword() - */ - DECLARE vUserId INT; - - SELECT id INTO vUserId - FROM user WHERE `name` = vUserName; - - CALL user_setPassword(vUserId, vPassword); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `user_changePassword` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `user_changePassword`(vSelf INT, vOldPassword VARCHAR(255), vPassword VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `user_changePassword`(vSelf INT, vOldPassword VARCHAR(255), vPassword VARCHAR(255)) BEGIN /** * Changes the user password. @@ -2277,7 +2000,7 @@ BEGIN SELECT `password` = MD5(vOldPassword), `name` INTO vPasswordOk, vUserName FROM user WHERE id = vSelf; - + IF NOT vPasswordOk THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid password'; @@ -2294,13 +2017,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `user_checkName`(vUserName VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `user_checkName`(vUserName VARCHAR(255)) BEGIN /** * Checks that username meets the necessary syntax requirements, otherwise it @@ -2324,11 +2047,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `user_checkPassword`(vPassword VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `user_checkPassword`(vPassword VARCHAR(255)) BEGIN /** * Comprueba si la contraseña cumple los requisitos de seguridad @@ -2351,7 +2074,7 @@ BEGIN IF vChr REGEXP '[[:alpha:]]' THEN SET vNAlpha = vNAlpha+1; - + IF vChr REGEXP '[A-Z]' THEN SET vNUpper = vNUpper+1; @@ -2390,13 +2113,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `user_restorePassword`(vSelf INT, vVerificationToken VARCHAR(255), vPassword VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `user_restorePassword`(vSelf INT, vVerificationToken VARCHAR(255), vPassword VARCHAR(255)) BEGIN /** * Changes the user password using recovery token. @@ -2411,7 +2134,7 @@ BEGIN SELECT verificationToken = vVerificationToken, `name` INTO vTokenVerified, vUserName FROM user WHERE id = vSelf; - + IF NOT vTokenVerified THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid verification token'; @@ -2428,13 +2151,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `user_setPassword`(vSelf INT, vPassword VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `user_setPassword`(vSelf INT, vPassword VARCHAR(255)) BEGIN /** * Change the password of the passed as a parameter. Only administrators should @@ -2461,7 +2184,7 @@ DELIMITER ; -- Current Database: `bs` -- -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `bs` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `bs` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci */; USE `bs`; @@ -2476,7 +2199,7 @@ SET character_set_client = utf8; /*!50001 CREATE TABLE `bajasLaborales` ( `firstname` tinyint NOT NULL, `name` tinyint NOT NULL, - `business_id` tinyint NOT NULL, + `businessFk` tinyint NOT NULL, `lastDate` tinyint NOT NULL, `endContract` tinyint NOT NULL, `type` tinyint NOT NULL, @@ -2495,16 +2218,16 @@ DROP TABLE IF EXISTS `bancos_evolution`; CREATE TABLE `bancos_evolution` ( `Fecha` date NOT NULL, `Id_Banco` int(11) NOT NULL, - `saldo` decimal(10,2) NOT NULL DEFAULT '0.00', - `quilla` decimal(10,2) NOT NULL DEFAULT '0.00', - `deuda` decimal(10,2) NOT NULL DEFAULT '0.00', - `liquidez` decimal(10,2) NOT NULL DEFAULT '0.00', - `disponibilidad ajena` decimal(10,2) NOT NULL DEFAULT '0.00', - `saldo_aux` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT 'Saldo auxiliar para el calculo de lo dispuesto en las polizas', + `saldo` decimal(10,2) NOT NULL DEFAULT 0.00, + `quilla` decimal(10,2) NOT NULL DEFAULT 0.00, + `deuda` decimal(10,2) NOT NULL DEFAULT 0.00, + `liquidez` decimal(10,2) NOT NULL DEFAULT 0.00, + `disponibilidad ajena` decimal(10,2) NOT NULL DEFAULT 0.00, + `saldo_aux` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT 'Saldo auxiliar para el calculo de lo dispuesto en las polizas', PRIMARY KEY (`Fecha`,`Id_Banco`), KEY `fk_banco_evolution_idx` (`Id_Banco`), - CONSTRAINT `fk_banco_evolution` FOREIGN KEY (`Id_Banco`) REFERENCES `vn`.`bank` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacena los saldos bancarios'; + CONSTRAINT `fk_banco_evolution` FOREIGN KEY (`Id_Banco`) REFERENCES `vn`.`accounting` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Almacena los saldos bancarios'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2520,7 +2243,7 @@ CREATE TABLE `carteras` ( `Mes` int(11) NOT NULL, `Peso` decimal(10,2) DEFAULT NULL, PRIMARY KEY (`CodigoTrabajador`,`Año`,`Mes`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2535,7 +2258,7 @@ CREATE TABLE `clientAnnualConsumption` ( `invoiced` double(17,0) DEFAULT NULL, PRIMARY KEY (`clientFk`), CONSTRAINT `fmaId_Cliente` FOREIGN KEY (`clientFk`) REFERENCES `vn`.`client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2546,14 +2269,14 @@ DROP TABLE IF EXISTS `clientDied`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `clientDied` ( - `id` int(11) NOT NULL DEFAULT '0', - `clientName` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `id` int(11) NOT NULL DEFAULT 0, + `clientName` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, `lastInvoiced` date DEFAULT NULL, - `workerCode` varchar(3) COLLATE utf8_unicode_ci NOT NULL, - `Boss` varchar(3) COLLATE utf8_unicode_ci NOT NULL, - `Aviso` varchar(13) CHARACTER SET utf8 DEFAULT NULL, + `workerCode` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, + `Boss` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, + `Aviso` varchar(13) CHARACTER SET utf8mb3 DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Clientes que no han comprado en los ultimos 3 meses, se actualiza con proceso nocturno el 3 de cada mes'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Clientes que no han comprado en los ultimos 3 meses, se actualiza con proceso nocturno el 3 de cada mes'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2567,21 +2290,24 @@ CREATE TABLE `clientNewBorn` ( `clientFk` int(11) NOT NULL, `firstShipped` date NOT NULL COMMENT 'Primer pedido o de la relacion comercial, o después de un año de inactividad', `lastShipped` date NOT NULL COMMENT 'último pedido del cliente', - `isModified` tinyint(4) DEFAULT '0', + `isModified` tinyint(4) DEFAULT 0, + `isRookie` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'define un cliente que ha de ser cuidado por ser nuevo o recuperado', PRIMARY KEY (`clientFk`), CONSTRAINT `clientNewBorn_fk1` FOREIGN KEY (`clientFk`) REFERENCES `vn`.`client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Listado de clientes que se consideran nuevos a efectos de cobrar la comision adicional del comercial'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Listado de clientes que se consideran nuevos a efectos de cobrar la comision adicional del comercial'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `bs`.`clientNewBorn_BEFORE_UPDATE` BEFORE UPDATE ON `clientNewBorn` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `bs`.`clientNewBorn_BEFORE_UPDATE` + BEFORE UPDATE ON `clientNewBorn` + FOR EACH ROW BEGIN -- Si ha pasado un año o mas IF TIMESTAMPDIFF(YEAR,NEW.lastShipped, OLD.lastShipped) THEN @@ -2605,7 +2331,7 @@ CREATE TABLE `clientNewBorn__` ( `clientFk` int(11) NOT NULL, `shipped` date NOT NULL, PRIMARY KEY (`clientFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Listado de clientes que se consideran nuevos a efectos de cobrar la comision adicional del comercial'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Listado de clientes que se consideran nuevos a efectos de cobrar la comision adicional del comercial'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2623,7 +2349,7 @@ CREATE TABLE `compradores` ( `comision` decimal(10,2) DEFAULT NULL, PRIMARY KEY (`Id_Trabajador`,`año`,`semana`), CONSTRAINT `comprador_trabajador` FOREIGN KEY (`Id_Trabajador`) REFERENCES `vn`.`worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2639,23 +2365,7 @@ CREATE TABLE `compradores_evolution` ( `importe` decimal(10,0) DEFAULT NULL, PRIMARY KEY (`Id_Trabajador`,`fecha`), CONSTRAINT `evo_trabajador` FOREIGN KEY (`Id_Trabajador`) REFERENCES `vn`.`worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `conveyorStats` --- - -DROP TABLE IF EXISTS `conveyorStats`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `conveyorStats` ( - `created` datetime NOT NULL, - `saturacion` int(11) DEFAULT NULL, - `velocidad` int(11) DEFAULT NULL, - `rutas` int(11) DEFAULT NULL, - PRIMARY KEY (`created`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2669,7 +2379,7 @@ CREATE TABLE `customerEvolution` ( `dated` date NOT NULL, `quantity` int(11) NOT NULL, PRIMARY KEY (`dated`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2682,14 +2392,14 @@ DROP TABLE IF EXISTS `defaulter`; CREATE TABLE `defaulter` ( `clientFk` int(11) NOT NULL, `created` date NOT NULL, - `amount` double NOT NULL DEFAULT '0', + `amount` double NOT NULL DEFAULT 0, `defaulterSinced` date DEFAULT NULL, `hasChanged` tinyint(1) DEFAULT NULL, `frozened` date DEFAULT NULL, PRIMARY KEY (`clientFk`,`created`), KEY `client` (`clientFk`), KEY `date` (`created`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2701,9 +2411,9 @@ DROP TABLE IF EXISTS `experienceIberflora2016`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `experienceIberflora2016` ( `Id_Cliente` int(11) NOT NULL, - `isVisitor` tinyint(4) NOT NULL DEFAULT '0', + `isVisitor` tinyint(4) NOT NULL DEFAULT 0, PRIMARY KEY (`Id_Cliente`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Lista de clientes que participan en el estudio sobre la mejora del consumo tras la visita a las instalaciones de Silla'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Lista de clientes que participan en el estudio sobre la mejora del consumo tras la visita a las instalaciones de Silla'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2722,7 +2432,7 @@ CREATE TABLE `fondo_maniobra` ( `proveedores_pagos` double DEFAULT NULL, `fondo_medio` double DEFAULT NULL, PRIMARY KEY (`fecha`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2755,7 +2465,7 @@ CREATE TABLE `indicators` ( `thisWeekSales` decimal(10,2) DEFAULT NULL, `lastYearWeekSales` decimal(10,2) DEFAULT NULL, PRIMARY KEY (`updated`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacena los valores actuales para una consulta diaria rápida por los directivos.'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Almacena los valores actuales para una consulta diaria rápida por los directivos.'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2767,17 +2477,17 @@ DROP TABLE IF EXISTS `inspeccionSS_2021`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `inspeccionSS_2021` ( `business_id` int(11) DEFAULT NULL, - `id` int(11) NOT NULL DEFAULT '0', - `firstName` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `lastName` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `id` int(11) NOT NULL DEFAULT 0, + `firstName` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `lastName` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, `timed` datetime NOT NULL, `hours_week` smallint(6) DEFAULT NULL, `year` int(4) NOT NULL, `week` int(2) NOT NULL, `dated` date NOT NULL, `orden` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='bs.inspeccionSS_2021_add()'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='bs.inspeccionSS_2021_add()'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2834,98 +2544,18 @@ CREATE TABLE `m3` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `fecha` date NOT NULL, `provinceFk` smallint(5) unsigned DEFAULT NULL, - `warehouseFk` smallint(6) unsigned NOT NULL DEFAULT '0', + `warehouseFk` smallint(6) unsigned NOT NULL DEFAULT 0, `m3` decimal(10,2) DEFAULT NULL, `year` int(11) DEFAULT NULL, `month` int(11) DEFAULT NULL, `week` int(11) DEFAULT NULL, `day` int(11) DEFAULT NULL, - `dayName` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, - `euros` decimal(10,2) DEFAULT '0.00', + `dayName` varchar(12) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `euros` decimal(10,2) DEFAULT 0.00, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `m3Silla__` --- - -DROP TABLE IF EXISTS `m3Silla__`; -/*!50001 DROP VIEW IF EXISTS `m3Silla__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `m3Silla__` ( - `fecha` tinyint NOT NULL, - `year` tinyint NOT NULL, - `month` tinyint NOT NULL, - `week` tinyint NOT NULL, - `day` tinyint NOT NULL, - `dayName` tinyint NOT NULL, - `Volumen` tinyint NOT NULL, - `Euros` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - --- --- Temporary table structure for view `manaCustomer` --- - -DROP TABLE IF EXISTS `manaCustomer`; -/*!50001 DROP VIEW IF EXISTS `manaCustomer`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `manaCustomer` ( - `Id_Cliente` tinyint NOT NULL, - `Mana` tinyint NOT NULL, - `dated` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - --- --- Temporary table structure for view `manaSpellersExcluded` --- - -DROP TABLE IF EXISTS `manaSpellersExcluded`; -/*!50001 DROP VIEW IF EXISTS `manaSpellersExcluded`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `manaSpellersExcluded` ( - `workerFk` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - --- --- Temporary table structure for view `mana_spellers` --- - -DROP TABLE IF EXISTS `mana_spellers`; -/*!50001 DROP VIEW IF EXISTS `mana_spellers`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `mana_spellers` ( - `Id_Trabajador` tinyint NOT NULL, - `size` tinyint NOT NULL, - `used` tinyint NOT NULL, - `prices_modifier_rate` tinyint NOT NULL, - `prices_modifier_activated` tinyint NOT NULL, - `minRate` tinyint NOT NULL, - `maxRate` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - --- --- Temporary table structure for view `mana_spellers_excluded` --- - -DROP TABLE IF EXISTS `mana_spellers_excluded`; -/*!50001 DROP VIEW IF EXISTS `mana_spellers_excluded`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `mana_spellers_excluded` ( - `Id_Trabajador` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `mermasCache__` -- @@ -2934,13 +2564,13 @@ DROP TABLE IF EXISTS `mermasCache__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `mermasCache__` ( - `Comprador` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `Comprador` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, `año` int(4) NOT NULL, `Valor_Compra` decimal(10,0) DEFAULT NULL, `Faltas` decimal(10,0) DEFAULT NULL, `Basura` decimal(10,0) DEFAULT NULL, PRIMARY KEY (`Comprador`,`año`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2956,29 +2586,31 @@ CREATE TABLE `nightTask` ( `finished` datetime DEFAULT NULL, `lastFinished` datetime DEFAULT NULL, `order` int(11) DEFAULT NULL, - `schema` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `procedure` varchar(100) COLLATE utf8_unicode_ci NOT NULL, - `error` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `errorCode` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `schema` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `procedure` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + `error` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `errorCode` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `bs`.`nightTaskBeforeInsert` BEFORE INSERT ON `nightTask` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `bs`.`nightTaskBeforeInsert` + BEFORE INSERT ON `nightTask` + FOR EACH ROW BEGIN IF NOT (NEW.`schema`REGEXP '^[0-9a-zA-Z_]+$') OR NOT (NEW.`procedure`REGEXP '^[0-9a-zA-Z_]+$') THEN CALL util.throw('ONLY_ALPHANUMERICS_ALLOWED'); - + END IF; END */;; @@ -2990,19 +2622,21 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `bs`.`nightTaskBeforeUpdate` BEFORE UPDATE ON `nightTask` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `bs`.`nightTaskBeforeUpdate` + BEFORE UPDATE ON `nightTask` + FOR EACH ROW BEGIN IF NOT (NEW.`schema`REGEXP '^[0-9a-zA-Z_]+$') OR NOT (NEW.`procedure`REGEXP '^[0-9a-zA-Z_]+$') THEN CALL util.throw('ONLY_ALPHANUMERICS_ALLOWED'); - + END IF; END */;; @@ -3021,24 +2655,9 @@ DROP TABLE IF EXISTS `nightTaskConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `nightTaskConfig` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `logMail` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `logMail` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `novemberSales` --- - -DROP TABLE IF EXISTS `novemberSales`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `novemberSales` ( - `ticketFk` int(11) NOT NULL, - `saleFk` int(11) NOT NULL DEFAULT '0', - `año` int(4) DEFAULT NULL, - `importe` decimal(28,8) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3068,15 +2687,15 @@ DROP TABLE IF EXISTS `payMethodClient`; CREATE TABLE `payMethodClient` ( `id` int(11) NOT NULL AUTO_INCREMENT, `dated` date NOT NULL, - `payMethodFk` tinyint(3) unsigned NOT NULL DEFAULT '0', - `clientFk` int(11) NOT NULL DEFAULT '0', + `payMethodFk` tinyint(3) unsigned NOT NULL DEFAULT 0, + `clientFk` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `FkPayMethod_idx` (`payMethodFk`), KEY `FkClientPayMethod_idx` (`clientFk`), KEY `FkDateClientPayMethod` (`dated`,`clientFk`), CONSTRAINT `FkClientPayMethod` FOREIGN KEY (`clientFk`) REFERENCES `vn`.`client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `FkPayMethodClient` FOREIGN KEY (`payMethodFk`) REFERENCES `vn`.`payMethod` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_bin; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3089,28 +2708,28 @@ DROP TABLE IF EXISTS `payMethodClientEvolution`; CREATE TABLE `payMethodClientEvolution` ( `id` int(11) NOT NULL AUTO_INCREMENT, `dated` date NOT NULL, - `payMethodName` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `payMethodName` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, `amountClient` int(11) NOT NULL, `amount` decimal(10,2) NOT NULL, `equalizationTax` decimal(10,2) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `produccion` +-- Table structure for table `produccion__` -- -DROP TABLE IF EXISTS `produccion`; +DROP TABLE IF EXISTS `produccion__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `produccion` ( +CREATE TABLE `produccion__` ( `dated` date NOT NULL, - `m3` int(11) NOT NULL DEFAULT '0', - `cost` int(11) NOT NULL DEFAULT '0', - `eurosM3` decimal(10,2) NOT NULL DEFAULT '0.00', + `m3` int(11) NOT NULL DEFAULT 0, + `cost` int(11) NOT NULL DEFAULT 0, + `eurosM3` decimal(10,2) NOT NULL DEFAULT 0.00, PRIMARY KEY (`dated`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3155,29 +2774,31 @@ SET character_set_client = utf8; SET character_set_client = @saved_cs_client; -- --- Table structure for table `salaries2018` +-- Table structure for table `sale` -- -DROP TABLE IF EXISTS `salaries2018`; +DROP TABLE IF EXISTS `sale`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `salaries2018` ( - `person_id` int(11) NOT NULL DEFAULT '0', - `sex` enum('M','F') CHARACTER SET utf8 NOT NULL DEFAULT 'F' COMMENT 'M Masculino F Femenino', - `edad` int(6) DEFAULT NULL, - `antiguedad` int(6) DEFAULT NULL, - `Modalidad` varchar(22) CHARACTER SET utf8mb4 NOT NULL DEFAULT '', - `reason` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `worker` varchar(82) CHARACTER SET utf8 DEFAULT NULL, - `totalDays` decimal(32,0) DEFAULT NULL, - `totalAnual` decimal(16,0) DEFAULT NULL, - `virtualMonthlySalary` decimal(16,0) DEFAULT NULL, - `departamento` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `category_name` varchar(50) CHARACTER SET utf8 NOT NULL, - `level_name` varchar(5) CHARACTER SET utf8 DEFAULT NULL, - `thisYearDateStart` varchar(10) CHARACTER SET utf8mb4 DEFAULT NULL, - PRIMARY KEY (`person_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +CREATE TABLE `sale` ( + `saleFk` int(11) NOT NULL, + `amount` decimal(10,3) NOT NULL DEFAULT 0.000, + `surcharge` decimal(10,3) NOT NULL DEFAULT 0.000, + `dated` date NOT NULL, + `typeFk` smallint(5) unsigned NOT NULL, + `clientFk` int(11) NOT NULL DEFAULT 1, + `companyFk` smallint(5) unsigned NOT NULL DEFAULT 442, + `margin` decimal(10,3) NOT NULL DEFAULT 0.000, + PRIMARY KEY (`saleFk`), + KEY `tip_to_tip_idx` (`typeFk`), + KEY `clientes_bs_ventas_idx` (`clientFk`), + KEY `empresa_bs_ventas_idx` (`companyFk`), + KEY `fecha_bs` (`dated`,`clientFk`), + CONSTRAINT `sale_FK` FOREIGN KEY (`saleFk`) REFERENCES `vn`.`sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `sale_FK_1` FOREIGN KEY (`clientFk`) REFERENCES `vn`.`client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `sale_FK_2` FOREIGN KEY (`companyFk`) REFERENCES `vn`.`company` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `sale_FK_3` FOREIGN KEY (`typeFk`) REFERENCES `vn`.`itemType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3189,11 +2810,42 @@ DROP TABLE IF EXISTS `salePersonEvolution__`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `salePersonEvolution__` ( `dated` date NOT NULL DEFAULT '0000-00-00', - `amount` decimal(10,2) NOT NULL DEFAULT '0.00', - `equalizationTax` decimal(10,2) NOT NULL DEFAULT '0.00', - `salesPersonFk` int(11) NOT NULL DEFAULT '0', + `amount` decimal(10,2) NOT NULL DEFAULT 0.00, + `equalizationTax` decimal(10,2) NOT NULL DEFAULT 0.00, + `salesPersonFk` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`dated`,`salesPersonFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `salesByItemTypeDay` +-- + +DROP TABLE IF EXISTS `salesByItemTypeDay`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `salesByItemTypeDay` ( + `itemTypeFk` smallint(5) unsigned NOT NULL, + `itemCategoryFk` int(10) unsigned NOT NULL, + `dated` date NOT NULL, + `netSale` int(11) NOT NULL DEFAULT 0, + `stems` int(11) NOT NULL DEFAULT 0, + `references` int(11) NOT NULL DEFAULT 0, + `trash` int(11) NOT NULL DEFAULT 0, + `faults` int(11) NOT NULL DEFAULT 0, + `claimed` decimal(10,2) NOT NULL DEFAULT 0.00, + `accepted` decimal(10,2) NOT NULL DEFAULT 0.00, + `sale` decimal(10,2) NOT NULL DEFAULT 0.00, + `buy` decimal(10,2) NOT NULL DEFAULT 0.00, + `saleComponent` decimal(10,2) NOT NULL DEFAULT 0.00, + `costComponent` decimal(10,2) NOT NULL DEFAULT 0.00, + `marginComponent` decimal(10,2) NOT NULL DEFAULT 0.00, + PRIMARY KEY (`itemTypeFk`,`dated`), + KEY `itemTypeSalesByweek_itemCategoryFk_idx` (`itemCategoryFk`), + KEY `itemTypeSalesByweek_period_idx` (`dated`), + CONSTRAINT `itemTypeSalesByweek_itemCategoryFk` FOREIGN KEY (`itemCategoryFk`) REFERENCES `vn`.`itemCategory` (`id`) ON UPDATE CASCADE, + CONSTRAINT `itemTypeSalesByweek_itemTypeFk` FOREIGN KEY (`itemTypeFk`) REFERENCES `vn`.`itemType` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Ventas diarias agrupadas por reino y familia'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3208,7 +2860,7 @@ CREATE TABLE `salesByWeek` ( `year` int(11) NOT NULL, `sales` double DEFAULT NULL, UNIQUE KEY `week` (`week`,`year`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3222,16 +2874,16 @@ CREATE TABLE `salesByclientSalesPerson` ( `dated` date NOT NULL DEFAULT '0000-00-00', `salesPersonFk` int(10) unsigned DEFAULT NULL, `clientFk` int(11) NOT NULL, - `amount` decimal(10,3) NOT NULL DEFAULT '0.000', - `equalizationTax` decimal(10,3) NOT NULL DEFAULT '0.000', - `amountNewBorn` decimal(10,3) NOT NULL DEFAULT '0.000', + `amount` decimal(10,3) NOT NULL DEFAULT 0.000, + `equalizationTax` decimal(10,3) NOT NULL DEFAULT 0.000, + `amountNewBorn` decimal(10,3) NOT NULL DEFAULT 0.000, PRIMARY KEY (`dated`,`clientFk`), KEY `clientSalePersonEvolution_clientFk` (`clientFk`), KEY `salesByclientSalesPerson_salesPerson` (`salesPersonFk`), KEY `salesByclientSalesPerson_dated` (`dated`,`clientFk`,`amount`), CONSTRAINT `clientSalePersonEvolution_clientFk` FOREIGN KEY (`clientFk`) REFERENCES `vn`.`client` (`id`) ON UPDATE CASCADE, CONSTRAINT `salesByclientSalesPerson_salesPerson` FOREIGN KEY (`salesPersonFk`) REFERENCES `vn`.`worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Ventas diarias por cliente y comercial'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Ventas diarias por cliente y comercial'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3242,8 +2894,9 @@ DROP TABLE IF EXISTS `salesMonthlySnapshot`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `salesMonthlySnapshot` ( - `salesPersonName` varchar(100) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `teamName` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `id` int(11) NOT NULL AUTO_INCREMENT, + `salesPersonName` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT '', + `teamName` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `year` int(11) DEFAULT NULL, `month` int(11) DEFAULT NULL, `currentSale` decimal(10,3) DEFAULT NULL, @@ -3254,8 +2907,8 @@ CREATE TABLE `salesMonthlySnapshot` ( `newClientPlus` decimal(10,3) DEFAULT NULL, `newClientScore` decimal(10,3) DEFAULT NULL, `teamBossPlus` decimal(10,3) DEFAULT NULL, - PRIMARY KEY (`salesPersonName`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3271,7 +2924,7 @@ CREATE TABLE `salesMonthlySnapshot__` ( `year` int(4) NOT NULL, `month` int(2) NOT NULL, `departmentFk` int(11) NOT NULL, - `ownSalesAmount` decimal(10,2) DEFAULT '0.00', + `ownSalesAmount` decimal(10,2) DEFAULT 0.00, `ownSalesPosition` int(11) DEFAULT NULL, `ownSalesBonus` int(11) DEFAULT NULL, `ownSalesScore` int(11) DEFAULT NULL, @@ -3285,17 +2938,42 @@ CREATE TABLE `salesMonthlySnapshot__` ( `teamSalesScore` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `workerFk_UNIQUE` (`workerFk`,`year`,`month`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='cada mes se guardan aqui los datos de forma estática, para consulta en grafana.'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='cada mes se guardan aqui los datos de forma estática, para consulta en grafana.'; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `salesPersonClient` +-- Table structure for table `salesPerson` -- -DROP TABLE IF EXISTS `salesPersonClient`; +DROP TABLE IF EXISTS `salesPerson`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `salesPersonClient` ( +CREATE TABLE `salesPerson` ( + `workerFk` int(10) unsigned NOT NULL, + `year` int(4) NOT NULL, + `month` int(2) NOT NULL, + `amount` decimal(10,2) DEFAULT NULL, + `commission` decimal(10,2) DEFAULT NULL, + `leasedCommission` decimal(10,2) DEFAULT NULL COMMENT 'comision proveniente de clientes que han sido donados. Ver tabla Clientes_cedidos', + `cededCommission` decimal(10,2) DEFAULT NULL COMMENT 'comision generada por los clientes que han sido donados. Ver tabla Clientes_cedidos', + `newCommission` decimal(10,2) DEFAULT NULL, + `leasedReplacement` decimal(10,2) DEFAULT NULL, + `itemTypeBorrowed` decimal(10,2) DEFAULT NULL, + `portfolioWeight` decimal(10,2) DEFAULT NULL COMMENT 'Pero de la cartera del comercial a fecha vendedores.updated', + `updated` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + PRIMARY KEY (`workerFk`,`year`,`month`), + CONSTRAINT `salesPerson_FK` FOREIGN KEY (`workerFk`) REFERENCES `vn`.`worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `salesPersonClient__` +-- + +DROP TABLE IF EXISTS `salesPersonClient__`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `salesPersonClient__` ( `salesPersonFk` int(11) NOT NULL, `clientFk` int(11) NOT NULL, `year` int(4) NOT NULL, @@ -3308,7 +2986,7 @@ CREATE TABLE `salesPersonClient` ( `substitutionBorrowed` decimal(10,2) DEFAULT NULL, `itemTypeBorrowed` decimal(10,2) DEFAULT NULL, PRIMARY KEY (`salesPersonFk`,`clientFk`,`year`,`month`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Ventas por comercial por cliente'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Ventas por comercial por cliente'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3322,57 +3000,38 @@ CREATE TABLE `salesPersonEvolution` ( `id` int(11) NOT NULL AUTO_INCREMENT, `dated` date NOT NULL DEFAULT '0000-00-00', `salesPersonFk` int(10) unsigned DEFAULT NULL, - `amount` decimal(10,3) NOT NULL DEFAULT '0.000', - `equalizationTax` decimal(10,3) NOT NULL DEFAULT '0.000', - `amountNewBorn` decimal(10,3) NOT NULL DEFAULT '0.000', + `amount` decimal(10,3) NOT NULL DEFAULT 0.000, + `equalizationTax` decimal(10,3) NOT NULL DEFAULT 0.000, + `amountNewBorn` decimal(10,3) NOT NULL DEFAULT 0.000, PRIMARY KEY (`id`), KEY `salesPersonEvolution_salesPerson` (`salesPersonFk`), CONSTRAINT `salesPersonEvolution_salesPerson` FOREIGN KEY (`salesPersonFk`) REFERENCES `vn`.`worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Evolución Comerciales'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Evolución Comerciales'; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Temporary table structure for view `v_ventas__` --- - -DROP TABLE IF EXISTS `v_ventas__`; -/*!50001 DROP VIEW IF EXISTS `v_ventas__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `v_ventas__` ( - `importe` tinyint NOT NULL, - `recargo` tinyint NOT NULL, - `year` tinyint NOT NULL, - `month` tinyint NOT NULL, - `week` tinyint NOT NULL, - `day` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - --- --- Table structure for table `vendedores` +-- Temporary table structure for view `vendedores` -- DROP TABLE IF EXISTS `vendedores`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `vendedores` ( - `Id_Trabajador` int(10) unsigned NOT NULL, - `año` int(4) NOT NULL, - `mes` int(2) NOT NULL, - `importe` decimal(10,2) DEFAULT NULL, - `comision` decimal(10,2) DEFAULT NULL, - `comisionArrendada` decimal(10,2) DEFAULT NULL COMMENT 'comision proveniente de clientes que han sido donados. Ver tabla Clientes_cedidos', - `comisionCedida` decimal(10,2) DEFAULT NULL COMMENT 'comision generada por los clientes que han sido donados. Ver tabla Clientes_cedidos', - `comisionNuevos` decimal(10,2) DEFAULT NULL, - `sustitucionArrendada` decimal(10,2) DEFAULT NULL, - `itemTypeBorrowed` decimal(10,2) DEFAULT NULL, - `portfolioWeight` decimal(10,2) DEFAULT NULL COMMENT 'Pero de la cartera del comercial a fecha vendedores.updated', - `updated` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - PRIMARY KEY (`Id_Trabajador`,`año`,`mes`), - CONSTRAINT `trabajador_trabajador` FOREIGN KEY (`Id_Trabajador`) REFERENCES `vn`.`worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; +/*!50001 DROP VIEW IF EXISTS `vendedores`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `vendedores` ( + `Id_Trabajador` tinyint NOT NULL, + `año` tinyint NOT NULL, + `mes` tinyint NOT NULL, + `importe` tinyint NOT NULL, + `comision` tinyint NOT NULL, + `comisionArrendada` tinyint NOT NULL, + `comisionCedida` tinyint NOT NULL, + `comisionNuevos` tinyint NOT NULL, + `sustitucionArrendada` tinyint NOT NULL, + `itemTypeBorrowed` tinyint NOT NULL, + `portfolioWeight` tinyint NOT NULL, + `updated` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; -- -- Table structure for table `vendedores_evolution` @@ -3388,36 +3047,28 @@ CREATE TABLE `vendedores_evolution` ( `month` int(11) NOT NULL, PRIMARY KEY (`workerFk`,`year`,`month`), CONSTRAINT `evo_vendedor_trabajador` FOREIGN KEY (`workerFk`) REFERENCES `vn`.`worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `ventas` +-- Temporary table structure for view `ventas` -- DROP TABLE IF EXISTS `ventas`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `ventas` ( - `Id_Movimiento` int(11) NOT NULL, - `importe` decimal(10,3) NOT NULL DEFAULT '0.000', - `recargo` decimal(10,3) NOT NULL DEFAULT '0.000', - `fecha` date NOT NULL, - `tipo_id` smallint(5) unsigned NOT NULL, - `Id_Cliente` int(11) NOT NULL DEFAULT '1', - `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', - `margen` decimal(10,3) NOT NULL DEFAULT '0.000', - PRIMARY KEY (`Id_Movimiento`), - KEY `tip_to_tip_idx` (`tipo_id`), - KEY `clientes_bs_ventas_idx` (`Id_Cliente`), - KEY `empresa_bs_ventas_idx` (`empresa_id`), - KEY `fecha_bs` (`fecha`,`Id_Cliente`), - CONSTRAINT `clientes_bs_ventas` FOREIGN KEY (`Id_Cliente`) REFERENCES `vn`.`client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `empresa_bs_ventas` FOREIGN KEY (`empresa_id`) REFERENCES `vn`.`company` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `mov_to_mov` FOREIGN KEY (`Id_Movimiento`) REFERENCES `vn`.`sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `tip_to_tip` FOREIGN KEY (`tipo_id`) REFERENCES `vn`.`itemType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; +/*!50001 DROP VIEW IF EXISTS `ventas`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `ventas` ( + `Id_Movimiento` tinyint NOT NULL, + `importe` tinyint NOT NULL, + `recargo` tinyint NOT NULL, + `fecha` tinyint NOT NULL, + `tipo_id` tinyint NOT NULL, + `Id_Cliente` tinyint NOT NULL, + `empresa_id` tinyint NOT NULL, + `margen` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; -- -- Table structure for table `ventas_contables` @@ -3436,7 +3087,7 @@ CREATE TABLE `ventas_contables` ( `empresa_id` int(4) NOT NULL, `gasto` varchar(10) CHARACTER SET latin1 NOT NULL, PRIMARY KEY (`year`,`month`,`grupo`,`reino_id`,`tipo_id`,`empresa_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3447,11 +3098,11 @@ DROP TABLE IF EXISTS `waste`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `waste` ( - `buyer` varchar(30) CHARACTER SET utf8 NOT NULL, + `buyer` varchar(30) CHARACTER SET utf8mb3 NOT NULL, `year` int(4) NOT NULL, `week` int(2) NOT NULL, - `family` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `itemFk` int(11) NOT NULL DEFAULT '0', + `family` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `itemFk` int(11) NOT NULL DEFAULT 0, `itemTypeFk` smallint(5) unsigned DEFAULT NULL, `saleTotal` decimal(16,0) DEFAULT NULL, `saleWaste` decimal(16,0) DEFAULT NULL, @@ -3461,7 +3112,7 @@ CREATE TABLE `waste` ( KEY `waste_item_id` (`itemFk`), CONSTRAINT `waste_itemType_id` FOREIGN KEY (`itemTypeFk`) REFERENCES `vn`.`itemType` (`id`) ON UPDATE CASCADE, CONSTRAINT `waste_item_id` FOREIGN KEY (`itemFk`) REFERENCES `vn`.`item` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3473,30 +3124,16 @@ DROP TABLE IF EXISTS `workerLabourDataByMonth`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workerLabourDataByMonth` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(25) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(25) COLLATE utf8mb3_unicode_ci NOT NULL, `month` int(2) NOT NULL, `year` int(4) NOT NULL, `total` int(5) NOT NULL COMMENT 'Número de empleados', `permanent` int(5) NOT NULL COMMENT 'Número de empleados fijos', PRIMARY KEY (`id`), KEY `workerLabourDataByMonth_graph_idx` (`code`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `workerMana` --- - -DROP TABLE IF EXISTS `workerMana`; -/*!50001 DROP VIEW IF EXISTS `workerMana`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `workerMana` ( - `workerFk` tinyint NOT NULL, - `amount` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `workerProductivity` -- @@ -3511,15 +3148,15 @@ CREATE TABLE `workerProductivity` ( `workerFk` int(10) unsigned NOT NULL, `volume` decimal(10,6) NOT NULL, `seconds` int(11) NOT NULL, - `roleFk` int(10) unsigned NOT NULL, + `actionFk` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `workerProductivity_warehouseFk_idx` (`warehouseFk`), KEY `workerProductivity_workerFk_idx` (`workerFk`), - KEY `workerProductivity_roleFk_idx` (`roleFk`), - CONSTRAINT `workerProductivity_roleFk` FOREIGN KEY (`roleFk`) REFERENCES `account`.`role` (`id`) ON UPDATE CASCADE, + KEY `workerProductivity_roleFk_idx` (`actionFk`), + CONSTRAINT `workerProductivity_FK` FOREIGN KEY (`actionFk`) REFERENCES `vncontrol`.`accion` (`accion_id`) ON UPDATE CASCADE, CONSTRAINT `workerProductivity_warehouseFk` FOREIGN KEY (`warehouseFk`) REFERENCES `vn`.`warehouse` (`id`) ON UPDATE CASCADE, CONSTRAINT `workerProductivity_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `vn`.`worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3534,7 +3171,7 @@ CREATE TABLE `workerProductivityConfig` ( `minSeconsPackager` int(11) DEFAULT NULL, `minSeconsItemPicker` int(11) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3545,14 +3182,14 @@ DROP TABLE IF EXISTS `workerSpeed__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workerSpeed__` ( - `workerCode` varchar(3) COLLATE utf8_unicode_ci NOT NULL, - `accion` varchar(15) COLLATE utf8_unicode_ci NOT NULL, - `warehouseFk` smallint(6) unsigned NOT NULL DEFAULT '1', + `workerCode` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, + `accion` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, + `warehouseFk` smallint(6) unsigned NOT NULL DEFAULT 1, `LitrosMinuto` decimal(10,1) DEFAULT NULL, `LitrosMinutoLastHour` decimal(10,1) DEFAULT NULL, `lastUpdated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`workerCode`,`warehouseFk`,`accion`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3566,25 +3203,10 @@ CREATE TABLE `zone_ETD__` ( `zoneFk` int(11) DEFAULT NULL, `totalVolume` decimal(5,1) DEFAULT NULL, `remainingVolume` decimal(5,1) DEFAULT NULL, - `speed` decimal(10,2) NOT NULL DEFAULT '0.00', + `speed` decimal(10,2) NOT NULL DEFAULT 0.00, `hourTheoretical` time DEFAULT NULL, - `hourPractical` varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT '' -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `zone_ETD_byTime` --- - -DROP TABLE IF EXISTS `zone_ETD_byTime`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `zone_ETD_byTime` ( - `theorical` time NOT NULL, - `practical` time NOT NULL DEFAULT '00:00:00', - `m3` decimal(10,1) NOT NULL DEFAULT '0.0', - PRIMARY KEY (`theorical`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + `hourPractical` varchar(10) CHARACTER SET utf8mb3 NOT NULL DEFAULT '' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3603,25 +3225,7 @@ DELIMITER ;; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `nightTask_launchAll` ON SCHEDULE EVERY 1 DAY STARTS '2020-08-05 03:00:00' ON COMPLETION PRESERVE ENABLE DO CALL bs.nightTask_launchAll */ ;; -/*!50003 SET time_zone = @saved_time_zone */ ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ;; -/*!50003 SET character_set_client = @saved_cs_client */ ;; -/*!50003 SET character_set_results = @saved_cs_results */ ;; -/*!50003 SET collation_connection = @saved_col_connection */ ;; -/*!50106 DROP EVENT IF EXISTS `zone_ETD_byTime_Refresh` */;; -DELIMITER ;; -/*!50003 SET @saved_cs_client = @@character_set_client */ ;; -/*!50003 SET @saved_cs_results = @@character_set_results */ ;; -/*!50003 SET @saved_col_connection = @@collation_connection */ ;; -/*!50003 SET character_set_client = utf8 */ ;; -/*!50003 SET character_set_results = utf8 */ ;; -/*!50003 SET collation_connection = utf8_general_ci */ ;; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; -/*!50003 SET @saved_time_zone = @@time_zone */ ;; -/*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `zone_ETD_byTime_Refresh` ON SCHEDULE EVERY 5 MINUTE STARTS '2021-04-12 14:28:27' ON COMPLETION NOT PRESERVE ENABLE DO CALL bs.zone_ETD_byTime() */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `nightTask_launchAll` ON SCHEDULE EVERY 1 DAY STARTS '2022-02-08 04:14:00' ON COMPLETION PRESERVE ENABLE DO CALL bs.nightTask_launchAll */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -3637,78 +3241,28 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `tramo`(vDateTime DATETIME) RETURNS varchar(20) CHARSET utf8 COLLATE utf8_unicode_ci +CREATE DEFINER=`root`@`localhost` FUNCTION `tramo`(vDateTime DATETIME) RETURNS varchar(20) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci + NO SQL BEGIN DECLARE vTramo VARCHAR(20); DECLARE vHour INT; - + SET vHour = HOUR(vDateTime) ; - + SET vTramo = - CASE + CASE WHEN vHour BETWEEN 0 AND 14 THEN 'Mañana' WHEN vHour BETWEEN 15 AND 24 THEN 'Tarde' END ; RETURN vTramo; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `analisisComponentes__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `analisisComponentes__`() -BEGIN - -DECLARE vDateStart DATE DEFAULT '2016-01-01'; -DECLARE vDateEnd DATE DEFAULT '2016-11-30'; -DECLARE vDate DATE; - -SET vDate = vDateStart; - -DELETE FROM bs.ventasComponentes; - -WHILE vDate <= vDateEnd DO - - INSERT INTO bs.ventasComponentes - SELECT vDate as Fecha, mc.Id_Componente, cast(sum(m.Cantidad * mc.Valor) AS DECIMAL(10,2)) as Importe - FROM vn2008.Movimientos_componentes mc - JOIN vn2008.Movimientos m ON m.Id_Movimiento = mc.Id_Movimiento - JOIN bs.ventas v ON v.Id_Movimiento = mc.Id_Movimiento - WHERE v.fecha = vDate - AND empresa_id IN (442,567) - GROUP BY mc.Id_Componente; - - SET vDate = TIMESTAMPADD(DAY,1,vDate); - - IF DAY(vDate) MOD 28 = 0 THEN - - SELECT vDate; - - END IF; - -END WHILE; - - SELECT vDate; - - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -3721,20 +3275,20 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bancos_evolution_add`(vStartingDate DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `bancos_evolution_add`(vStartingDate DATE) BEGIN /** * Inserta en la tabla bancos_evolution los saldos acumulados de cada banco * * @param vStartingDate Fecha desde la cual se recalculan la tabla bs.bancos_evolution - */ + */ DECLARE vCurrentDate DATE; - DECLARE vMaxDate DATE DEFAULT TIMESTAMPADD(MONTH, 7, CURDATE()); - IF IFNULL(vStartingDate,0) < TIMESTAMPADD(YEAR, -5, CURDATE()) THEN + DECLARE vMaxDate DATE DEFAULT TIMESTAMPADD(MONTH, 7, util.VN_CURDATE()); + IF IFNULL(vStartingDate,0) < TIMESTAMPADD(YEAR, -5, util.VN_CURDATE()) THEN CALL util.throw('invalid date'); END IF; DELETE FROM bs.bancos_evolution WHERE Fecha >= vStartingDate; @@ -3745,72 +3299,72 @@ BEGIN SELECT vCurrentDate, Id_Banco, deuda FROM bs.bancos_evolution WHERE Fecha = TIMESTAMPADD(DAY,-1,vCurrentDate); - + WHILE vCurrentDate < vMaxDate DO -- insertar solo el dia de ayer INSERT INTO bs.bancos_evolution(Fecha ,Id_Banco, saldo) - SELECT vCurrentDate, Id_Banco, SUM(saldo) + SELECT vCurrentDate, Id_Banco, SUM(saldo) FROM ( SELECT Id_Banco ,saldo FROM bs.bancos_evolution WHERE Fecha = TIMESTAMPADD(DAY,-1,vCurrentDate) -- los saldos acumulados del dia anterior UNION ALL - + SELECT c.Id_Banco, IFNULL(SUM(Entrada),0) - IFNULL(SUM(Salida),0) as saldo FROM vn2008.Cajas c JOIN vn2008.Bancos b using(Id_Banco) -- saldos de las cajas - JOIN vn.accountingType at2 ON at2.id = b.cash + JOIN vn.accountingType at2 ON at2.id = b.cash WHERE at2.code IN ('wireTransfer','fundingLine') AND Cajafecha = vCurrentDate AND (Serie = 'MB' OR at2.code = 'fundingLine') GROUP BY Id_Banco - )sub + )sub GROUP BY Id_Banco ON DUPLICATE KEY UPDATE saldo = saldo + VALUES(saldo); - + SET vCurrentDate = TIMESTAMPADD(DAY,1,vCurrentDate); END WHILE; - -- Ahora actualizamos la quilla + -- Ahora actualizamos la quilla UPDATE bs.bancos_evolution be JOIN ( SELECT bp.Id_Banco, - sum(bp.importe) as quilla, t.dated - FROM vn.time t + FROM vn.time t JOIN vn2008.Bancos_poliza bp ON t.dated between apertura AND IFNULL(cierre, t.dated) WHERE t.dated BETWEEN vStartingDate AND vMaxDate GROUP BY Id_Banco, t.dated ) sub ON be.Id_Banco = sub.Id_Banco AND sub.dated = be.Fecha - SET be.quilla = sub.quilla; + SET be.quilla = sub.quilla; -- pagos futuros no concilidados INSERT INTO bs.bancos_evolution(Fecha, Id_Banco, saldo) SELECT t.dated, p.id_banco, - importe - FROM vn.time t + FROM vn.time t join vn2008.pago p ON p.fecha <= t.dated - WHERE t.dated BETWEEN CURDATE() AND vMaxDate - AND p.fecha BETWEEN CURDATE() AND vMaxDate + WHERE t.dated BETWEEN util.VN_CURDATE() AND vMaxDate + AND p.fecha BETWEEN util.VN_CURDATE() AND vMaxDate AND NOT conciliado ON DUPLICATE KEY UPDATE saldo = saldo + VALUES(saldo); -- cobros futuros INSERT INTO bs.bancos_evolution(Fecha, Id_Banco, saldo) SELECT t.dated, r.Id_Banco, SUM(Entregado) - FROM vn.time t + FROM vn.time t JOIN vn2008.Recibos r ON r.Fechacobro <= t.dated - WHERE r.Fechacobro > CURDATE() AND r.Fechacobro <= vMaxDate - AND t.dated BETWEEN CURDATE() AND vMaxDate + WHERE r.Fechacobro > util.VN_CURDATE() AND r.Fechacobro <= vMaxDate + AND t.dated BETWEEN util.VN_CURDATE() AND vMaxDate GROUP BY t.dated, r.Id_Banco ON DUPLICATE KEY UPDATE saldo = saldo + VALUES(saldo); -- saldos de la tabla prevision INSERT INTO bs.bancos_evolution(Fecha, Id_Banco, saldo) SELECT t.dated, sp.Id_Banco, SUM(Importe) - FROM vn.time t + FROM vn.time t JOIN vn2008.Saldos_Prevision sp ON sp.Fecha <= t.dated JOIN vn2008.Bancos b ON sp.Id_Banco = b.Id_Banco - JOIN vn.accountingType at2 ON at2.id = b.cash + JOIN vn.accountingType at2 ON at2.id = b.cash WHERE at2.code IN ('wireTransfer','fundingLine') AND t.dated BETWEEN vStartingDate AND vMaxDate GROUP BY t.dated, sp.Id_Banco @@ -3824,132 +3378,16 @@ BEGIN -- Deuda UPDATE bs.bancos_evolution be JOIN vn2008.Bancos b using(Id_Banco) - JOIN vn.accountingType at2 ON at2.id = b.cash + JOIN vn.accountingType at2 ON at2.id = b.cash SET be.deuda = IF(at2.code = 'fundingLine', be.saldo_aux, 0) , be.saldo = IF(at2.code = 'fundingLine', 0, be.saldo_aux) WHERE Fecha >= vStartingDate; - -- Liquidez + -- Liquidez update bs.bancos_evolution set liquidez = saldo - quilla + deuda WHERE Fecha >= vStartingDate; -- Disponibilidad update bs.bancos_evolution set `disponibilidad ajena` = - quilla + deuda WHERE Fecha >= vStartingDate; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bancos_evolution_add__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bancos_evolution_add__`() -BEGIN -/** - * Inserta en la tabla bancos_evolution los saldos acumulados de cada banco - */ - DECLARE vCurrentDate DATE; - DECLARE vStartingDate DATE DEFAULT '2016-01-01'; - DECLARE vMaxDate DATE DEFAULT TIMESTAMPADD(MONTH, 7, CURDATE()); - - DELETE FROM bs.bancos_evolution WHERE Fecha > vStartingDate; - - SET vCurrentDate = vStartingDate; - - WHILE vCurrentDate < vMaxDate DO - - REPLACE bs.bancos_evolution(Fecha ,Id_Banco, saldo) - - SELECT vCurrentDate - , Id_Banco - , sum(saldo) - - FROM - ( - SELECT Id_Banco ,saldo - FROM bs.bancos_evolution - WHERE Fecha = TIMESTAMPADD(DAY,-1,vCurrentDate) -- los saldos acumulados del dia anterior - - UNION ALL - - SELECT c.Id_Banco, IFNULL(sum(Entrada),0) - ifnull(sum(Salida),0) as saldo - FROM vn2008.Cajas c - JOIN vn2008.Bancos b using(Id_Banco) -- saldos de las cajas - WHERE cash IN (0,3) - AND Cajafecha = vCurrentDate - AND (Serie = 'MB' OR cash = 3) - GROUP BY Id_Banco - - )sub - GROUP BY Id_Banco; - - SET vCurrentDate = TIMESTAMPADD(DAY,1,vCurrentDate); - - END WHILE; - - -- Ahora actualizamos la quilla - UPDATE bs.bancos_evolution be - JOIN - ( - SELECT bp.Id_Banco, - sum(bp.importe) as quilla, t.dated - FROM vn.time t - JOIN vn2008.Bancos_poliza bp ON t.dated between apertura AND IFNULL(cierre, t.dated) - GROUP BY Id_Banco, t.dated - ) sub ON be.Id_Banco = sub.Id_Banco AND sub.dated = be.Fecha - SET be.quilla = sub.quilla; - - -- pagos futuros no concilidados - INSERT INTO bs.bancos_evolution(Fecha, Id_Banco, saldo) - SELECT t.dated, p.id_banco, - importe - FROM vn.time t - join vn2008.pago p ON p.fecha <= t.dated - WHERE p.fecha >= CURDATE() - AND NOT conciliado - ON DUPLICATE KEY UPDATE saldo = saldo - VALUES(saldo); - - -- cobros futuros - INSERT INTO bs.bancos_evolution(Fecha, Id_Banco, saldo) - SELECT t.dated, r.Id_Banco, SUM(Entregado) - FROM vn.time t - JOIN vn2008.Recibos r ON r.Fechacobro <= t.dated - WHERE r.Fechacobro > CURDATE() - GROUP BY t.dated, r.Id_Banco - ON DUPLICATE KEY UPDATE saldo = saldo + VALUES(saldo); - - -- saldos de la tabla prevision - INSERT INTO bs.bancos_evolution(Fecha, Id_Banco, saldo) - SELECT t.dated, sp.Id_Banco, SUM(Importe) - FROM vn.time t - JOIN vn2008.Saldos_Prevision sp ON sp.Fecha <= t.dated - JOIN vn2008.Bancos b ON sp.Id_Banco = b.Id_Banco - WHERE b.cash IN (0,3) - GROUP BY t.dated, sp.Id_Banco - ON DUPLICATE KEY UPDATE saldo = saldo + VALUES(saldo); - - -- Utilizamos el saldo_auxiliar para calcular lo dispuesto en las polizas - UPDATE bs.bancos_evolution be - SET saldo_aux = saldo; - - -- Deuda - UPDATE bs.bancos_evolution be - JOIN vn2008.Bancos using(Id_Banco) - SET be.deuda = IF(cash = 3, be.saldo_aux, 0) - , be.saldo = IF(cash = 3, 0, be.saldo_aux) - WHERE Fecha >= vStartingDate; - - -- Liquidez - update bs.bancos_evolution set liquidez = saldo - quilla + deuda WHERE Fecha >= vStartingDate; - - -- Disponibilidad - update bs.bancos_evolution set `disponibilidad ajena` = - quilla + deuda WHERE Fecha >= vStartingDate; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -3960,22 +3398,22 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `campaignComparative`(vDateFrom DATE, vDateTo DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `campaignComparative`(vDateFrom DATE, vDateTo DATE) BEGIN - SELECT - workerName, - id, - name, - CAST(SUM(previousAmmount) AS DECIMAL(10, 0)) AS previousAmmount, - CAST(SUM(currentAmmount) AS DECIMAL(10, 0)) AS currentAmmount + SELECT + workerName, + id, + name, + CAST(SUM(previousAmmount) AS DECIMAL(10, 0)) AS previousAmmount, + CAST(SUM(currentAmmount) AS DECIMAL(10, 0)) AS currentAmmount FROM ( - (SELECT + (SELECT CONCAT(w.firstname, ' ', w.lastName) AS workerName, c.id, c.name, @@ -3984,11 +3422,11 @@ BEGIN FROM bs.ventas v INNER JOIN vn.`client` c ON v.Id_Cliente = c.id INNER JOIN vn.worker w ON c.salesPersonFk = w.id - WHERE v.fecha BETWEEN DATE_ADD(vDateFrom, INTERVAL - 1 YEAR) + WHERE v.fecha BETWEEN DATE_ADD(vDateFrom, INTERVAL - 1 YEAR) AND DATE_ADD(vDateTo, INTERVAL - 1 YEAR) GROUP BY w.id, v.Id_Cliente) UNION ALL - (SELECT + (SELECT CONCAT(w.firstname, ' ', w.lastName) AS workerName, c.id, c.name, @@ -4012,64 +3450,30 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `carteras_add` */; -ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `carteras_add`() -BEGIN - -DELETE FROM bs.carteras -WHERE Año >= YEAR(CURDATE()) - 1; - -INSERT INTO bs.carteras(Año,Mes,CodigoTrabajador,Peso) -SELECT year as Año, month as Mes, CodigoTrabajador, sum(importe) as Peso -FROM vn2008.time t -JOIN bs.ventas v on t.date = v.fecha -JOIN vn2008.Clientes c on c.Id_Cliente = v.Id_Cliente -JOIN vn2008.Trabajadores tr on tr.Id_Trabajador = c.Id_Trabajador -WHERE t.year >= YEAR(CURDATE()) - 1 -GROUP BY CodigoTrabajador, Año, Mes; - - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `bs` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -/*!50003 DROP PROCEDURE IF EXISTS `carteras_add2` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `carteras_add2`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `carteras_add`() BEGIN /** - * Inserta en "bs.carteras". + * Inserta en @bs.carteras. */ DELETE FROM bs.carteras - WHERE Año >= YEAR(CURDATE()) - 1; - + WHERE Año >= YEAR(util.VN_CURDATE()) - 1; + INSERT INTO bs.carteras(Año,Mes,CodigoTrabajador,Peso) SELECT t.year AS Año, t.month AS Mes, w.code AS CodigoTrabajador, SUM(v.importe) AS Peso FROM vn.time t JOIN bs.ventas v on t.dated = v.fecha JOIN vn.client c on c.id = v.Id_Cliente - JOIN vn.worker w ON w.id = c.salesPersonFk - WHERE t.year >= YEAR(CURDATE()) - 1 + JOIN vn.worker w ON w.id = c.salesPersonFk + WHERE t.year >= YEAR(util.VN_CURDATE()) - 1 GROUP BY w.code, t.year , t.month; END ;; DELIMITER ; @@ -4081,31 +3485,45 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clean`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `clean`() BEGIN DECLARE vFourYearsAgo DATETIME; DECLARE vOneYearAgo DATETIME; + DECLARE vTwoYearAgo DATETIME; + DECLARE vThreeYearAgo DATETIME; - SET vFourYearsAgo = TIMESTAMPADD(YEAR, -4,CURDATE()); - SET vOneYearAgo = TIMESTAMPADD(YEAR, -1,CURDATE()); + + SET vOneYearAgo = TIMESTAMPADD(YEAR, -1,util.VN_CURDATE()); + SET vTwoYearAgo = TIMESTAMPADD(YEAR, -2,util.VN_CURDATE()); + SET vThreeYearAgo = TIMESTAMPADD(YEAR, -3,util.VN_CURDATE()); + SET vFourYearsAgo = TIMESTAMPADD(YEAR, -4,util.VN_CURDATE()); DELETE FROM bs.clientNewBorn WHERE lastShipped < vOneYearAgo; - + DELETE FROM ventas WHERE fecha < vFourYearsAgo; - + DELETE FROM payMethodClient WHERE dated < vOneYearAgo; DELETE FROM payMethodClientEvolution WHERE dated < vFourYearsAgo; + + DELETE FROM bs.salesByclientSalesPerson + WHERE dated < vFourYearsAgo; + + DELETE FROM bs.m3 + WHERE fecha < vTwoYearAgo; + + DELETE FROM salesByItemTypeDay + WHERE dated < vThreeYearAgo; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -4118,41 +3536,41 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clientDied_recalc`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `clientDied_recalc`() BEGIN - SET @primerAviso := TIMESTAMPADD(MONTH,-1,CURDATE()); - SET @segundoAviso := TIMESTAMPADD(MONTH,-2,CURDATE()); - SET @tercerAviso := TIMESTAMPADD(MONTH,-3,CURDATE()); + SET @primerAviso := TIMESTAMPADD(MONTH,-1,util.VN_CURDATE()); + SET @segundoAviso := TIMESTAMPADD(MONTH,-2,util.VN_CURDATE()); + SET @tercerAviso := TIMESTAMPADD(MONTH,-3,util.VN_CURDATE()); TRUNCATE TABLE bs.clientDied; - + INSERT INTO bs.clientDied - SELECT c.id, - c.name as clientName, - maxIssued as lastInvoiced, - w.code AS workerCode, - b.code AS Boss, + SELECT c.id, + c.name clientName, + maxIssued lastInvoiced, + w.code workerCode, + b.code Boss, CASE - WHEN IFNULL(maxIssued,'2000-01-01') < @tercerAviso THEN 'Tercer Aviso' - WHEN maxIssued < @segundoAviso THEN 'Segundo Aviso' - WHEN maxIssued < @primerAviso THEN 'Primer Aviso' + WHEN IFNULL(maxIssued,'2000-01-01') < @tercerAviso THEN 'Tercer Aviso' + WHEN maxIssued < @segundoAviso THEN 'Segundo Aviso' + WHEN maxIssued < @primerAviso THEN 'Primer Aviso' END as Aviso FROM vn.client c JOIN vn.worker w ON w.id = c.salesPersonFk - JOIN vn2008.jerarquia j ON j.worker_id = w.id - JOIN vn.worker b ON b.id = j.boss_id - JOIN bs.mana_spellers ms ON ms.Id_Trabajador = c.salesPersonFk + JOIN vn.worker b ON b.id = w.bossFk + JOIN vn.workerMana wm ON wm.workerFk = c.salesPersonFk LEFT JOIN (SELECT clientFk, max(issued) as maxIssued FROM vn.invoiceOut GROUP BY clientFk) io ON io.clientFk = c.id WHERE (maxIssued IS NULL OR maxIssued < @primerAviso) AND c.created < @tercerAviso; DELETE cd.* FROM bs.clientDied cd JOIN vn.ticket t ON t.clientFk = cd.id - WHERE t.refFk IS NULL AND t.shipped >=TIMESTAMPADD(MONTH,-1,CURDATE()); + WHERE t.refFk IS NULL + AND t.shipped >=TIMESTAMPADD(MONTH,-1,util.VN_CURDATE()); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -4165,24 +3583,24 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clientNewBorn_recalc`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `clientNewBorn_recalc`() BLOCK1: BEGIN DECLARE vClientFk INT; - DECLARE vShipped DATE; + DECLARE vShipped DATE; DECLARE vPreviousShipped DATE; - DECLARE vDone boolean; - DECLARE cur cursor for - - SELECT clientFk, firstShipped - FROM bs.clientNewBorn; - - DECLARE continue HANDLER FOR NOT FOUND SET vDone = TRUE; - SET vDone := FALSE; + DECLARE vDone boolean; + DECLARE cur cursor for + + SELECT clientFk, firstShipped + FROM bs.clientNewBorn; + + DECLARE continue HANDLER FOR NOT FOUND SET vDone = TRUE; + SET vDone := FALSE; DELETE FROM bs.clientNewBorn WHERE isModified = FALSE; @@ -4191,10 +3609,10 @@ BLOCK1: BEGIN FROM vn.client c JOIN vn.ticket t on t.clientFk = c.id LEFT JOIN clientNewBorn cb on cb.clientFk = c.id - WHERE t.shipped BETWEEN TIMESTAMPADD(YEAR, -1, CURDATE()) AND CURDATE() AND cb.isModified is null + WHERE t.shipped BETWEEN TIMESTAMPADD(YEAR, -1, util.VN_CURDATE()) AND util.VN_CURDATE() AND cb.isModified is null GROUP BY c.id; OPEN cur; - + LOOP1: LOOP SET vDone := FALSE; FETCH cur INTO vClientFk, vShipped; @@ -4205,37 +3623,37 @@ BLOCK1: BEGIN END IF; BLOCK2: BEGIN - DECLARE vCurrentShipped DATE; - DECLARE vDone2 boolean; + DECLARE vCurrentShipped DATE; + DECLARE vDone2 boolean; DECLARE cur2 CURSOR FOR - SELECT shipped - FROM vn.ticket - WHERE clientFk = vClientFk AND shipped <= CURDATE() + SELECT shipped + FROM vn.ticket + WHERE clientFk = vClientFk AND shipped <= util.VN_CURDATE() ORDER BY shipped DESC; - + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone2 = TRUE; SET vDone2 := FALSE; OPEN cur2; - + SET vPreviousShipped := vShipped; LOOP2: LOOP SET vDone2 := FALSE; FETCH cur2 INTO vCurrentShipped; - + IF DATEDIFF(vPreviousShipped,vCurrentShipped) > 365 THEN - UPDATE bs.clientNewBorn - SET firstShipped = vPreviousShipped + UPDATE bs.clientNewBorn + SET firstShipped = vPreviousShipped WHERE clientFk= vClientFk; - + CLOSE cur2; - LEAVE LOOP2; + LEAVE LOOP2; END IF; - + SET vPreviousShipped := vCurrentShipped; IF vDone2 THEN - UPDATE bs.clientNewBorn - SET firstShipped = vCurrentShipped + UPDATE bs.clientNewBorn + SET firstShipped = vCurrentShipped WHERE clientFk= vClientFk; CLOSE cur2; LEAVE LOOP2; @@ -4244,6 +3662,15 @@ BLOCK1: BEGIN END LOOP LOOP2; END BLOCK2; END LOOP LOOP1; + + UPDATE bs.clientNewBorn cnb + LEFT JOIN (SELECT DISTINCT t.clientFk + FROM vn.ticket t + JOIN vn.productionConfig pc + WHERE t.shipped BETWEEN util.VN_CURDATE() + INTERVAL -(`notBuyingMonths`) MONTH + AND util.VN_CURDATE() + INTERVAL -(`pc`.`rookieDays`) DAY) notRookie ON notRookie.clientFk = cnb.clientFk + SET cnd.isRookie = ISNULL(notRookie.clientFk); + END BLOCK1 ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -4256,24 +3683,24 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `comercialesCompleto`(IN vWorker INT, vDate DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `comercialesCompleto`(IN vWorker INT, vDate DATE) BEGIN DECLARE vAYearAgoStarted DATE DEFAULT DATE_FORMAT(TIMESTAMPADD(YEAR, - 1, vDate), '%Y-%m-01'); DECLARE vAYearAgoEnded DATE DEFAULT TIMESTAMPADD(YEAR, - 1, LAST_DAY(vDate)); - + CALL vn.worker_GetHierarchy(vWorker); - + INSERT IGNORE INTO tmp.workerHierarchyList (workerFk) SELECT wd2.workerFk FROM vn.workerDepartment wd2 WHERE wd2.workerFk = vWorker; - + -- Falta que en algunos casos solo tenga en cuenta los tipos afectados. - SELECT + SELECT c.Id_Cliente id_cliente, c.calidad, c.Cliente cliente, @@ -4299,7 +3726,7 @@ BEGIN FROM vn2008.Clientes c LEFT JOIN - (SELECT g.Id_Cliente, CAST( SUM(Importe) as DECIMAL(12,2)) AS Greuge + (SELECT g.Id_Cliente, CAST( SUM(Importe) as DECIMAL(12,2)) AS Greuge FROM vn2008.Greuges g JOIN vn.`client` c ON c.id = g.Id_Cliente LEFT JOIN vn.worker w ON c.salesPersonFk = w.id @@ -4321,14 +3748,14 @@ BEGIN WHERE v.fecha BETWEEN TIMESTAMPADD(YEAR, - 1, vDate) AND vDate GROUP BY v.Id_Cliente) c365 ON c365.Id_Cliente = c.Id_Cliente LEFT JOIN - (SELECT + (SELECT Id_Cliente, SUM(importe) consumo FROM bs.ventas v INNER JOIN vn2008.Clientes c USING (Id_Cliente) LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador WHERE - (c.Id_Trabajador = vWorker OR tr.boss = vWorker) + (c.Id_Trabajador = vWorker OR tr.boss = vWorker) AND (v.fecha BETWEEN TIMESTAMPADD(DAY, - DAY(vDate) + 1, vDate) AND TIMESTAMPADD(DAY, - 1, vDate)) GROUP BY Id_Cliente) mes_actual ON mes_actual.Id_Cliente = c.Id_Cliente LEFT JOIN @@ -4375,195 +3802,31 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `comercialesCompleto__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `comercialesCompleto__`(IN vWorker INT, vDate DATE) -BEGIN - DECLARE vAYearAgoStarted DATE DEFAULT DATE_FORMAT(TIMESTAMPADD(YEAR, - 1, vDate), '%Y-%m-01'); - DECLARE vAYearAgoEnded DATE DEFAULT TIMESTAMPADD(YEAR, - 1, LAST_DAY(vDate)); - - CALL vn.worker_GetHierarchy(vWorker); - - INSERT IGNORE INTO tmp.workerHierarchyList (workerFk) - SELECT wd2.workerFk - FROM vn.workerDepartment wd2 - WHERE wd2.workerFk = vWorker; - - -- Falta que en algunos casos solo tenga en cuenta los tipos afectados. - SELECT - c.Id_Cliente id_cliente, - c.calidad, - c.Cliente cliente, - cr.recobro * 100 tarifa, - c.Telefono telefono, - c.movil, - c.POBLACION poblacion, - p.`name` provincia, - vn2008.red(f.futur) futur, - c.Credito credito, - pm.`name` forma_pago, - vn2008.red(c365 / 12) consumo_medio365, - vn2008.red(c365) consumo365, - vn2008.red(CmLy.peso) peso_mes_año_pasado, - vn2008.red(CmLy.peso * 1.19) objetivo, - tr.CodigoTrabajador, - vn2008.red(mes_actual.consumo) consumoMes, - vn2008.red(IFNULL(mes_actual.consumo, 0) - IFNULL(CmLy.peso * 1.19, 0)) como_lo_llevo, - DATE(LastTicket) ultimo_ticket, - dead.muerto, - g.Greuge, - cr.recobro - FROM - vn2008.Clientes c - LEFT JOIN - (SELECT g.Id_Cliente, CAST( SUM(Importe) as DECIMAL(12,2)) AS Greuge - FROM vn2008.Greuges g - JOIN vn.`client` c ON c.id = g.Id_Cliente - LEFT JOIN vn.worker w ON c.salesPersonFk = w.id - WHERE (c.salesPersonFk = vWorker OR w.bossFk = vWorker) - GROUP BY Id_Cliente - ) g ON g.Id_Cliente = c.Id_Cliente - LEFT JOIN - vn2008.province p ON p.province_id = c.province_id - JOIN - vn2008.pay_met pm ON pm.id = c.pay_met_id - LEFT JOIN - vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador - LEFT JOIN - bi.claims_ratio cr on cr.Id_Cliente = c.Id_Cliente - LEFT JOIN - (SELECT v.Id_Cliente, SUM(importe) c365 -- optimizat de 6s /5.3s/ 4.7s a 0.3/0.4/0.3 - FROM bs.ventas v - JOIN vn2008.Clientes c ON c.Id_Cliente = v.Id_Cliente - WHERE v.fecha BETWEEN TIMESTAMPADD(YEAR, - 1, vDate) AND vDate - GROUP BY v.Id_Cliente) c365 ON c365.Id_Cliente = c.Id_Cliente - LEFT JOIN - (SELECT - Id_Cliente, SUM(importe) consumo - FROM - bs.ventas v - INNER JOIN vn2008.Clientes c USING (Id_Cliente) - LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador - WHERE - (c.Id_Trabajador = vWorker OR tr.boss = vWorker) - AND (v.fecha BETWEEN TIMESTAMPADD(DAY, - DAY(vDate) + 1, vDate) AND TIMESTAMPADD(DAY, - 1, vDate)) - GROUP BY Id_Cliente) mes_actual ON mes_actual.Id_Cliente = c.Id_Cliente - LEFT JOIN - (SELECT t.Id_Cliente, SUM(m.preu * m.Cantidad * (1 - m.Descuento / 100)) futur - FROM vn2008.Tickets t - JOIN vn2008.Clientes c ON c.Id_Cliente = t.Id_Cliente - JOIN vn2008.Movimientos m ON m.Id_Ticket = t.Id_Ticket - LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador - WHERE - (c.Id_Trabajador = vWorker OR tr.boss = vWorker) - AND t.Fecha BETWEEN vDate AND util.dayEnd(LAST_DAY(vDate)) - GROUP BY Id_Cliente) f ON c.Id_Cliente = f.Id_Cliente - LEFT JOIN - (SELECT MAX(t.Fecha) LastTicket, c.Id_Cliente - FROM vn2008.Tickets t - JOIN vn2008.Clientes c ON c.Id_cliente = t.Id_Cliente - LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador - WHERE - (c.Id_Trabajador = vWorker OR tr.boss = vWorker) - GROUP BY t.Id_Cliente) LastTicket ON LastTicket.Id_Cliente = c.Id_Cliente - LEFT JOIN - ( - SELECT SUM(importe) peso, c.Id_Cliente - FROM bs.ventas v - JOIN vn2008.Clientes c ON c.Id_Cliente = v.Id_Cliente - LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador - WHERE fecha BETWEEN vAYearAgoStarted and vAYearAgoEnded - AND (c.Id_Trabajador = vWorker OR tr.boss = vWorker) - GROUP BY c.Id_Cliente) CmLy ON CmLy.Id_Cliente = c.Id_Cliente - LEFT JOIN - (SELECT c.Id_Cliente, - IF(MAX(Fecha) < DATE_FORMAT(TIMESTAMPADD(MONTH, - 1, vDate), '%Y- %m-01'), TRUE, FALSE) muerto - FROM vn2008.Facturas f - JOIN vn2008.Clientes c ON c.Id_cliente = f.Id_Cliente - LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador - WHERE (c.Id_Trabajador = vWorker OR tr.boss = vWorker) - GROUP BY Id_Cliente) dead ON dead.Id_Cliente = c.Id_Cliente - JOIN tmp.workerHierarchyList s ON s.workerFk = c.Id_Trabajador; - - DROP TEMPORARY TABLE tmp.workerHierarchyList; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `compradores_add` */; -ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `compradores_add`(IN intYEAR INT, IN intWEEK_START INT, IN intWEEK_END INT) -BEGIN - -REPLACE bs.compradores - -SELECT tp.Id_Trabajador - , intYEAR as año - , tm.week as semana - , sum(importe) as importe - , 0 as comision - -FROM bs.ventas v -JOIN vn2008.time tm on tm.date = v.fecha -JOIN vn2008.Tipos tp using(tipo_id) -WHERE tm.year = intYEAR and tm.week between intWEEK_START and intWEEK_END -AND reino_id != 6 -GROUP BY tp.Id_Trabajador, tm.week; - - - - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `bs` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -/*!50003 DROP PROCEDURE IF EXISTS `compradores_add2` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `compradores_add2`(IN vYear INT, IN vWeekFrom INT, IN vWeekTo INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `compradores_add`(IN vYear INT, IN vWeekFrom INT, IN vWeekTo INT) BEGIN /** * Sustituye los registros de "bs.compradores". - * + * * @param vYear: año ventas * @param vWeekFrom: semana desde - * @param vWeekTo: semana hastas + * @param vWeekTo: semana hasta */ REPLACE bs.compradores - SELECT it.workerFk AS Id_Trabajador, vYear AS año, tm.week AS semana, SUM(importe) AS importe, 0 AS comision + SELECT it.workerFk AS Id_Trabajador, vYear AS año, tm.week AS semana, SUM(importe) AS importe, 0 AS comision FROM bs.ventas v JOIN vn.time tm ON tm.dated = v.fecha - JOIN vn.itemType it ON it.id = v.tipo_id - WHERE tm.year = vYear + JOIN vn.itemType it ON it.id = v.tipo_id + WHERE tm.year = vYear AND tm.week BETWEEN vWeekFrom AND vWeekTo AND it.categoryFk != 6 GROUP BY it.workerFk, tm.week; @@ -4577,33 +3840,34 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `compradores_add_launcher`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `compradores_add_launcher`() BEGIN DECLARE vYear INT; DECLARE vWeek INT; DECLARE done BOOL DEFAULT FALSE; - + DECLARE rs CURSOR FOR SELECT year, week FROM vn.time - WHERE (year = vYear AND week >= vWeek) - OR year > vYear; - + WHERE dated <= util.VN_CURDATE() + AND year = vYear + AND week >= vWeek; + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - - SELECT MAX(año) INTO vYear + + SELECT MAX(año) INTO vYear FROM compradores; - + SELECT MAX(semana) INTO vWeek - FROM compradores - WHERE año = vYear; + FROM compradores + WHERE año = vYear; OPEN rs; @@ -4612,7 +3876,7 @@ BEGIN WHILE NOT done DO CALL compradores_add(vYear, vWeek, vWeek); - + FETCH rs INTO vYear, vWeek; END WHILE; @@ -4620,7 +3884,7 @@ BEGIN CLOSE rs; CALL compradores_evolution_add; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -4631,13 +3895,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `compradores_evolution_add`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `compradores_evolution_add`() BEGIN /* @@ -4652,10 +3916,10 @@ DECLARE i INT DEFAULT 1; SELECT TIMESTAMPADD(DAY,1,MAX(fecha)) INTO datFEC FROM bs.compradores_evolution; IF ISNULL(datFEC) THEN - - SELECT min(fecha) INTO datFEC + + SELECT min(fecha) INTO datFEC FROM bs.ventas; - + INSERT INTO bs.compradores_evolution( Id_Trabajador , fecha , importe) @@ -4664,19 +3928,19 @@ SELECT TIMESTAMPADD(DAY,1,MAX(fecha)) INTO datFEC FROM bs.compradores_evolution; JOIN vn2008.Tipos tp using(tipo_id) WHERE fecha = datFEC GROUP BY Id_Trabajador; - + SET datFEC = TIMESTAMPADD(DAY, 1, datFEC); - + END IF; - WHILE datFEC < CURDATE() DO - - IF i mod 150 = 0 THEN + WHILE datFEC < util.VN_CURDATE() DO + + IF i mod 150 = 0 THEN SELECT datFEC; END IF; - + SET i = i + 1; - + REPLACE bs.compradores_evolution( Id_Trabajador , fecha , importe) @@ -4684,7 +3948,7 @@ SELECT TIMESTAMPADD(DAY,1,MAX(fecha)) INTO datFEC FROM bs.compradores_evolution; SELECT Id_Trabajador , datFEC as fecha , sum(importe) as importe - + FROM ( @@ -4692,17 +3956,17 @@ SELECT TIMESTAMPADD(DAY,1,MAX(fecha)) INTO datFEC FROM bs.compradores_evolution; , importe FROM bs.compradores_evolution WHERE fecha = TIMESTAMPADD(DAY,-1,datFEC) -- las ventas acumuladas del dia anterior - + UNION ALL - + SELECT Id_Trabajador , importe * IF(v.fecha < datFEC,-1,1) -- se restan las ventas del año anterior y se suman las del actual FROM bs.ventas v JOIN vn2008.Tipos tp using(tipo_id) WHERE fecha IN (datFEC, TIMESTAMPADD(DAY,-365,datFEC)) AND reino_id != 6 - - )sub + + )sub GROUP BY Id_Trabajador; SET datFEC = TIMESTAMPADD(DAY,1,datFEC); @@ -4717,151 +3981,64 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `fondo_evolution_add` */; -ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `fondo_evolution_add`() -BEGIN -/* - -Inserta en la tabla fondo_maniobra los saldos acumulados en los ultimos 365 dias - -*/ - -DECLARE datFEC DATE DEFAULT '2015-01-01'; - - -SELECT TIMESTAMPADD(DAY,1,MAX(fecha)) INTO datFEC FROM bs.fondo_maniobra; - - WHILE datFEC < CURDATE() DO - - -- esto solo sirve para no aburrirse mientras esperamos... - - IF day(datFEC) mod 28 = 0 then - SELECT datFEC; - end if; - - - REPLACE bs.fondo_maniobra(Fecha, clientes_facturas, clientes_cobros,proveedores_facturas,proveedores_pagos, fondo) - SELECT datFEC as Fecha, Facturas, Cobros,Recibidas,Pagos, Facturas + Cobros + Recibidas + Pagos - FROM - ( - SELECT Sum(Facturas.Importe) AS Facturas - FROM vn2008.Facturas - INNER JOIN vn2008.Clientes ON Facturas.Id_Cliente = Clientes.Id_cliente - WHERE Clientes.`real` - AND empresa_id <>1381 - AND Fecha between '2011-01-01' and datFEC) fac - JOIN - ( - SELECT - Sum(Entregado) AS Cobros - FROM vn2008.Recibos - INNER JOIN vn2008.Clientes ON Recibos.Id_Cliente = Clientes.Id_cliente - WHERE Clientes.`real` - AND empresa_id <> 1381 - AND Fechacobro Between '2011-01-01' and datFEC) cob - JOIN - ( - SELECT - Sum(cantidad) AS Recibidas - FROM vn2008.recibida - INNER JOIN vn2008.recibida_vencimiento ON recibida.id = recibida_vencimiento.recibida_id - WHERE empresa_id <> 1381 - AND recibida.fecha Between '2015-01-01' and datFEC) rec - JOIN - ( - SELECT Sum(importe) AS Pagos - FROM vn2008.pago - WHERE empresa_id <>1381 AND pago.fecha Between '2015-01-01' and datFEC) pag; - - - - UPDATE bs.fondo_maniobra - JOIN - (SELECT avg(fondo) as media - FROM bs.fondo_maniobra - WHERE fecha <= datFEC) sub - SET fondo_medio = media - WHERE fecha = datFEC; - - - SET datFEC = TIMESTAMPADD(DAY,1,datFEC); - - END WHILE; - - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `bs` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -/*!50003 DROP PROCEDURE IF EXISTS `fondo_evolution_add2` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `fondo_evolution_add2`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `fondo_evolution_add`() BEGIN /** * Inserta en la tabla fondo_maniobra los saldos acumulados en los ultimos 365 dias */ DECLARE datFEC DATE DEFAULT '2015-01-01'; - - SELECT TIMESTAMPADD(DAY,1,MAX(fecha)) - INTO datFEC + + SELECT TIMESTAMPADD(DAY,1,MAX(fecha)) + INTO datFEC FROM bs.fondo_maniobra; - - WHILE datFEC < CURDATE() DO - + + WHILE datFEC < util.VN_CURDATE() DO + IF DAY(datFEC) MOD 28 = 0 THEN -- esto solo sirve para no aburrirse mientras esperamos... SELECT datFEC; END IF; - + REPLACE bs.fondo_maniobra(Fecha, clientes_facturas, clientes_cobros,proveedores_facturas,proveedores_pagos, fondo) SELECT datFEC AS Fecha, Facturas, Cobros,Recibidas,Pagos, Facturas + Cobros + Recibidas + Pagos FROM ( SELECT SUM(io.amount) AS Facturas FROM vn.invoiceOut io - JOIN vn.client c ON io.clientFk = c.id + JOIN vn.client c ON io.clientFk = c.id WHERE c.isRelevant - AND io.companyFk <> 1381 + AND io.companyFk <> 1381 AND io.issued BETWEEN '2011-01-01' AND datFEC ) fac JOIN ( SELECT - SUM(r.amountPaid) AS Cobros - FROM vn.receipt r - JOIN vn.client c ON r.clientFk = c.id - WHERE c.isRelevant + FROM vn.receipt r + JOIN vn.client c ON r.clientFk = c.id + WHERE c.isRelevant AND r.companyFk <> 1381 AND r.payed BETWEEN '2011-01-01' AND datFEC ) cob JOIN ( SELECT - SUM(id.amount) AS Recibidas - FROM vn.invoiceIn ii - JOIN vn.invoiceInDueDay id ON ii.id = id.invoiceInFk + FROM vn.invoiceIn ii + JOIN vn.invoiceInDueDay id ON ii.id = id.invoiceInFk WHERE ii.companyFk <> 1381 AND ii.issued BETWEEN '2015-01-01' AND datFEC ) rec JOIN ( SELECT SUM(p.amount) AS Pagos - FROM vn.payment p - WHERE p.companyFk <>1381 + FROM vn.payment p + WHERE p.companyFk <>1381 AND p.received BETWEEN '2015-01-01' AND datFEC ) pag; - + UPDATE bs.fondo_maniobra JOIN ( SELECT AVG(fondo) AS media @@ -4869,7 +4046,7 @@ BEGIN WHERE fecha <= datFEC ) sub SET fondo_medio = media WHERE fecha = datFEC; - + SET datFEC = TIMESTAMPADD(DAY,1,datFEC); END WHILE; @@ -4887,13 +4064,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `fruitsEvolution`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `fruitsEvolution`() BEGIN -select Id_Cliente, +select Id_Cliente, Cliente, count(semana) as semanas, (w.code IS NOT NULL) isWorker from ( select distinct v.Id_Cliente, c.name as Cliente, week(fecha, 3) as semana @@ -4917,177 +4094,154 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `indicatorsUpdate`(vDated DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `indicatorsUpdate`(vDated DATE) BEGIN - DECLARE oneYearBefore DATE DEFAULT TIMESTAMPADD(YEAR,-1,vDated); - DECLARE twoMonthsBefore DATE DEFAULT TIMESTAMPADD(DAY,-60,vDated); - DECLARE oneMonthBefore DATE DEFAULT TIMESTAMPADD(DAY,-30,vDated); - DECLARE vWeek INT; - - REPLACE indicators(updated) + DECLARE oneYearBefore DATE DEFAULT TIMESTAMPADD(YEAR,-1, vDated); + DECLARE twoMonthsBefore DATE DEFAULT TIMESTAMPADD(DAY,-60, vDated); + DECLARE oneMonthBefore DATE DEFAULT TIMESTAMPADD(DAY,-30, vDated); + DECLARE vWeek INT; + + REPLACE indicators(updated) VALUES(vDated); - - -- Ventas totales del ultimo año + + -- Ventas totales del ultimo año UPDATE indicators - SET lastYearSales = - ( - SELECT SUM(importe + recargo) - FROM bs.ventas v - JOIN vn2008.empresa e ON e.id = v.empresa_id - JOIN vn2008.empresa_grupo eg ON eg.empresa_grupo_id = e.empresa_grupo - WHERE fecha BETWEEN oneYearBefore AND vDated - AND eg.grupo = 'Verdnatura' - ) + SET lastYearSales = + (SELECT SUM(importe + recargo) + FROM ventas v + JOIN vn2008.empresa e ON e.id = v.empresa_id + JOIN vn2008.empresa_grupo eg ON eg.empresa_grupo_id = e.empresa_grupo + WHERE fecha BETWEEN oneYearBefore AND vDated + AND eg.grupo = 'Verdnatura' + ) WHERE updated = vDated; - - -- Greuge total acumulado + + -- Greuge total acumulado UPDATE indicators - SET totalGreuge = - ( - SELECT SUM(amount) - FROM vn.greuge - WHERE shipped <= vDated - ) + SET totalGreuge = + (SELECT SUM(amount) + FROM vn.greuge + WHERE shipped <= vDated + ) WHERE updated = vDated; - - -- Tasa de morosidad con respecto a las ventas del último mes + + -- Tasa de morosidad con respecto a las ventas del último mes UPDATE indicators - SET latePaymentRate = - (SELECT SUM(amount) FROM bi.defaulters WHERE date = vDated and amount > 0) - / - ( SELECT SUM(importe + recargo) FROM bs.ventas WHERE fecha BETWEEN oneMonthBefore AND vDated) + SET latePaymentRate = + (SELECT SUM(amount) + FROM bi.defaulters + WHERE date = vDated AND amount > 0) + / + (SELECT SUM(importe + recargo) + FROM ventas + WHERE fecha BETWEEN oneMonthBefore AND vDated) WHERE updated = vDated; - + -- Número de trabajadores activos - UPDATE indicators - SET countEmployee = - ( SELECT CAST(SUM(hours_week) / 40 AS DECIMAL (10 , 2 )) - FROM - postgresql.business AS b - JOIN postgresql.profile p ON p.profile_id = b.provider_id - JOIN postgresql.person pe ON pe.person_id = p.person_id - LEFT JOIN - postgresql.business_labour AS bl ON bl.business_id = b.business_id - LEFT JOIN - postgresql.calendar_labour_type AS cl ON cl.calendar_labour_type_id = bl.calendar_labour_type_id - WHERE - (vDated BETWEEN b.date_start AND b.date_end OR (b.date_end IS NULL AND b.date_start <= vDated)) - AND pe.name = 'VERDNATURA LEVANTE SL' + UPDATE indicators + SET countEmployee = + (SELECT CAST(SUM(cl.hours_week) / 40 AS DECIMAL (10, 2)) + FROM vn.business b + JOIN postgresql.calendar_labour_type cl ON cl.calendar_labour_type_id = b.calendarTypeFk + WHERE vDated BETWEEN b.started AND IFNULL(b.ended, vDated) + AND b.companyCodeFk = 'VNL' ) WHERE updated = vDated; -- Maná medio acumulado por comercial - UPDATE indicators - SET averageMana = - (SELECT avg(used) - FROM bs.mana_spellers + UPDATE indicators + SET averageMana = + (SELECT AVG(amount) + FROM vn.workerMana ) WHERE updated = vDated; - + -- Número de clientes que han comprado en los últimos 30 dias - UPDATE indicators - SET lastMonthActiveClients = + UPDATE indicators + SET lastMonthActiveClients = (SELECT COUNT(DISTINCT t.clientFk) FROM vn.ticket t WHERE t.shipped BETWEEN oneMonthBefore AND vDated ) - WHERE updated = vDated; - - -- Número de clientes que no han comprado en los últimos 30 dias, pero compraron en los 30 anteriores - UPDATE indicators - SET lastMonthLostClients = + WHERE updated = vDated; + + -- Número de clientes que no han comprado en los últimos 30 dias, pero compraron en los 30 anteriores + UPDATE indicators + SET lastMonthLostClients = (SELECT COUNT(lm.clientFk) - FROM - ( - SELECT DISTINCT t.clientFk + FROM + (SELECT DISTINCT t.clientFk FROM vn.ticket t WHERE t.shipped BETWEEN oneMonthBefore AND vDated ) cm RIGHT JOIN - ( - SELECT DISTINCT t.clientFk + (SELECT DISTINCT t.clientFk FROM vn.ticket t WHERE t.shipped >= twoMonthsBefore AND t.shipped < oneMonthBefore ) lm ON lm.clientFk = cm.clientFk - WHERE cm.clientFk IS NULL + WHERE cm.clientFk IS NULL ) - WHERE updated = vDated; - - -- Número de clientes que han comprado en los últimos 30 dias, pero no compraron en los 30 anteriores - UPDATE indicators - SET lastMonthNewClients = + WHERE updated = vDated; + + -- Número de clientes que han comprado en los últimos 30 dias, pero no compraron en los 30 anteriores + UPDATE indicators + SET lastMonthNewClients = (SELECT COUNT(cm.clientFk) - FROM - ( - SELECT DISTINCT t.clientFk + FROM + (SELECT DISTINCT t.clientFk FROM vn.ticket t WHERE t.shipped BETWEEN oneMonthBefore AND vDated ) cm LEFT JOIN - ( - SELECT DISTINCT t.clientFk + (SELECT DISTINCT t.clientFk FROM vn.ticket t WHERE t.shipped >= twoMonthsBefore AND t.shipped < oneMonthBefore ) lm ON lm.clientFk = cm.clientFk - WHERE lm.clientFk IS NULL + WHERE lm.clientFk IS NULL ) - WHERE updated = vDated; - - -- Porcentaje de autopedidos sobre los pedidos totales - UPDATE indicators - SET lastMonthWebBuyingRate = - ( SELECT (SUM(source_app != '') - SUM(source_app = 'TPV')) / SUM(source_app != '') - FROM hedera.`order` - WHERE date_send BETWEEN oneMonthBefore AND vDated - ) - WHERE updated = vDated; - - /* - -- Indicadores de producción - UPDATE indicators i - JOIN productionIndicators pi ON pi.dated = i.updated - SET i.productionHours = pi.productionHours, - i.dailyWorkersCost = pi.dailyWorkersCost, - i.volumeM3 = pi.volumeM3, - i.salesValue = pi.salesValue, - i.valueM3 = pi.valueM3, - i.hoursM3 = pi.hoursM3, - i.workerCostM3 = pi.workerCostM3, - i.salesWorkersCostRate = pi.salesWorkersCostRate - WHERE updated BETWEEN oneMonthBefore AND vDated; - */ + WHERE updated = vDated; - -- CAP Para el calculo de las ventas agrupado por semanas - - SELECT week - FROM vn.time - WHERE dated=vDated INTO vWeek; - - TRUNCATE `bs`.`salesByWeek`; - - INSERT INTO `bs`.`salesByWeek` (week,year,sales) - SELECT `t`.`week` AS `week`,`t`.`year` AS `year`, SUM(`v`.`importe` + `v`.`recargo`) AS `sales` - FROM `bs`.`ventas` `v` - LEFT JOIN `vn`.`time` `t` ON `t`.`dated` = fecha - GROUP BY `t`.`week` , `t`.`year` - ORDER BY `t`.`week` , `t`.`year`; - - -- CAP Indicador Ventas semana actual - UPDATE indicators i - JOIN `bs`.`salesByWeek` s ON s.week= vWeek AND s.year = YEAR(vDated) + -- Porcentaje de autopedidos sobre los pedidos totales + UPDATE indicators + SET lastMonthWebBuyingRate = + (SELECT (SUM(source_app != '') - SUM(source_app = 'TPV')) / SUM(source_app != '') + FROM hedera.`order` + WHERE date_send BETWEEN oneMonthBefore AND vDated + ) + WHERE updated = vDated; + + -- Cálculo de las ventas agrupado por semanas + SELECT week INTO vWeek + FROM vn.time + WHERE dated = vDated; + + TRUNCATE salesByWeek; + + INSERT INTO salesByWeek (week, year, sales) + SELECT t.week, t.year, SUM(v.importe + v.recargo) sales + FROM ventas v + LEFT JOIN vn.time t ON t.dated = fecha + GROUP BY t.week, t.year + ORDER BY t.week, t.year; + + -- Indicador Ventas semana actual + UPDATE indicators i + JOIN salesByWeek s ON s.week= vWeek + AND s.year = YEAR(vDated) SET i.thisWeekSales = s.sales - WHERE updated = vDated; - - -- CAP indicador ventas semana actual en el año pasado - UPDATE indicators i - JOIN `bs`.`salesByWeek` s ON s.week= vWeek AND s.year = YEAR(vDated)-1 + WHERE updated = vDated; + + -- Indicador ventas semana actual en el año pasado + UPDATE indicators i + JOIN salesByWeek s ON s.week = vWeek + AND s.year = YEAR(vDated)-1 SET i.lastYearWeekSales = s.sales WHERE updated = vDated; @@ -5101,13 +4255,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `indicatorsUpdateLauncher`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `indicatorsUpdateLauncher`() BEGIN DECLARE vDated DATE; @@ -5115,15 +4269,15 @@ BEGIN SELECT IFNULL(TIMESTAMPADD(DAY,1,MAX(updated)), '2018-04-01') INTO vDated FROM bs.indicators; - - WHILE vDated < CURDATE() DO - + + WHILE vDated < util.VN_CURDATE() DO + CALL indicatorsUpdate(vDated); - + SELECT TIMESTAMPADD(DAY,1,MAX(updated)) INTO vDated FROM bs.indicators; - + END WHILE; END ;; @@ -5136,41 +4290,42 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `inspeccionSS_2021_add`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `inspeccionSS_2021_add`() BEGIN TRUNCATE bs.inspeccionSS_2021; INSERT INTO bs.inspeccionSS_2021 - SELECT wbd.business_id , - w.id, - w.firstName, - w.lastName, - d.name , - wtc.timed , - cl.hours_week , - t.`year` , - t.week , - t.dated , - 0 AS orden - FROM vn.workerTimeControl wtc - JOIN vn.worker w ON w.id = wtc.userFk - JOIN vn.workerBusinessDated wbd ON wbd.workerFk = wtc.userFk AND wbd.dated = date(wtc.timed) - JOIN vn.time t ON t.dated = wbd.dated - JOIN postgresql.business_labour bl ON bl.business_id = wbd.business_id - JOIN postgresql.calendar_labour_type AS cl ON bl.calendar_labour_type_id = cl.calendar_labour_type_id - JOIN vn.department d ON d.id = bl.department_id - JOIN vn.department d2 ON d2.id = d.parentFk AND d2.name = 'PRODUCCION' - WHERE wtc.timed BETWEEN '2020-10-01' AND '2021-04-19' - AND d.lft BETWEEN d2.lft AND d2.rgt - AND lastName NOT LIKE 'FERRER%'; - + SELECT wbd.businessFk , + w.id, + w.firstName, + w.lastName, + d.name , + wtc.timed , + cl.hours_week , + t.`year` , + t.week , + t.dated , + 0 AS orden + FROM vn.workerTimeControl wtc + JOIN vn.worker w ON w.id = wtc.userFk + JOIN vn.workerBusinessDated wbd ON wbd.workerFk = wtc.userFk + AND wbd.dated = date(wtc.timed) + JOIN vn.time t ON t.dated = wbd.dated + JOIN vn.business b ON b.id = wbd.businessFk + JOIN postgresql.calendar_labour_type AS cl ON b.calendarTypeFk = cl.calendar_labour_type_id + JOIN vn.department d ON d.id = b.departmentFk + JOIN vn.department d2 ON d2.id = d.parentFk AND d2.name = 'PRODUCCION' + WHERE wtc.timed BETWEEN '2020-10-01' AND '2021-04-19' + AND d.lft BETWEEN d2.lft AND d2.rgt + AND lastName NOT LIKE 'FERRER%'; + SET @orden := 1; SET @id := 0; SET @day := 0; @@ -5179,7 +4334,7 @@ BEGIN SET orden = IF(id = @id AND day(timed) = @day, @orden := @orden + 1, @orden := 1), id = @id := id + (0 * @day := day(timed)) ORDER BY id, timed; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -5190,26 +4345,26 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `m3Add`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `m3Add`() BEGIN DECLARE datSTART DATE; DECLARE datEND DATE; - + SELECT TIMESTAMPADD(WEEK, -1,MAX(fecha)) INTO datSTART FROM bs.m3; - - SET datEND = TIMESTAMPADD(DAY,-1,CURDATE()); - - DELETE FROM bs.m3 + + SET datEND = TIMESTAMPADD(DAY,-1,util.VN_CURDATE()); + + DELETE FROM bs.m3 WHERE fecha >= datSTART; - + INSERT INTO bs.m3 (fecha, provinceFk, warehouseFk, m3, year, month, week, day, dayName, euros) SELECT v.fecha, a.provinceFk, t.warehouseFk, sum(s.quantity * ic.cm3delivery) / 1000000 AS m3, tm.year, tm.month, tm.week, tm.day, dayname(v.fecha), sum(importe) @@ -5235,94 +4390,100 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `manaCustomerUpdate`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `manaCustomerUpdate`() BEGIN -DECLARE vToDated DATE; + DECLARE vToDated DATE; DECLARE vFromDated DATE; DECLARE vForDeleteDated DATE; - DECLARE vManaId INT DEFAULT 37; - DECLARE vManaAutoId INT DEFAULT 39; - DECLARE vManaBankId INT DEFAULT 66; - DECLARE vManaGreugeTypeId INT DEFAULT 3; + DECLARE vManaId INT; + DECLARE vManaAutoId INT; + DECLARE vClaimManaId INT; + DECLARE vManaBankId INT; + DECLARE vManaGreugeTypeId INT; - SELECT IFNULL(max(dated), '2016-01-01') - INTO vFromDated - FROM bs.manaCustomer; - - DELETE - FROM bs.manaCustomer + SELECT id INTO vManaId + FROM vn.component WHERE code = 'mana'; + + SELECT id INTO vManaAutoId + FROM vn.component WHERE code = 'autoMana'; + + SELECT id INTO vClaimManaId + FROM vn.component WHERE code = 'manaClaim'; + + SELECT id INTO vManaBankId + FROM vn.bank WHERE code = 'mana'; + + SELECT id INTO vManaGreugeTypeId + FROM vn.greugeType WHERE code = 'mana'; + + SELECT IFNULL(MAX(dated), '2016-01-01') + INTO vFromDated + FROM vn.clientManaCache; + + DELETE + FROM vn.clientManaCache WHERE dated = vFromDated; - SELECT IFNULL(max(dated), '2016-01-01') - INTO vFromDated - FROM bs.manaCustomer; + SELECT IFNULL(MAX(dated), '2016-01-01') + INTO vFromDated + FROM vn.clientManaCache; - WHILE timestampadd(DAY,30,vFromDated) < CURDATE() DO + WHILE timestampadd(DAY,30,vFromDated) < util.VN_CURDATE() DO SELECT timestampadd(DAY,30,vFromDated), - timestampadd(DAY,-90,vFromDated) - INTO + timestampadd(DAY,-90,vFromDated) + INTO vToDated, vForDeleteDated; - - DELETE FROM bs.manaCustomer + + DELETE FROM vn.clientManaCache WHERE dated <= vForDeleteDated; - - INSERT INTO bs.manaCustomer(Id_Cliente, Mana, dated) - - SELECT + INSERT INTO vn.clientManaCache(clientFk, mana, dated) + SELECT Id_Cliente, cast(sum(mana) as decimal(10,2)) as mana, - vToDated as dated - FROM - + vToDated as dated + FROM ( SELECT cs.Id_Cliente, Cantidad * Valor as mana FROM vn2008.Tickets t JOIN vn2008.Consignatarios cs using(Id_Consigna) JOIN vn2008.Movimientos m on m.Id_Ticket = t.Id_Ticket JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = m.Id_Movimiento - WHERE Id_Componente IN (vManaAutoId, vManaId) - AND t.Fecha > vFromDated + WHERE Id_Componente IN (vManaAutoId, vManaId, vClaimManaId) + AND t.Fecha > vFromDated AND date(t.Fecha) <= vToDated - - UNION ALL - SELECT r.Id_Cliente, - Entregado FROM vn2008.Recibos r WHERE Id_Banco = vManaBankId - AND Fechacobro > vFromDated + AND Fechacobro > vFromDated AND Fechacobro <= vToDated - + UNION ALL - SELECT g.Id_Cliente, g.Importe FROM vn2008.Greuges g WHERE Greuges_type_id = vManaGreugeTypeId - AND Fecha > vFromDated + AND Fecha > vFromDated AND Fecha <= vToDated - UNION ALL - - SELECT Id_Cliente, mana - FROM bs.manaCustomer - WHERE dated = vFromDated + SELECT clientFk, mana + FROM vn.clientManaCache + WHERE dated = vFromDated ) sub - GROUP BY Id_Cliente HAVING Id_Cliente; SET vFromDated = vToDated; - + END WHILE; END ;; @@ -5335,68 +4496,27 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `manaSpellers_actualize`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `manaSpellers_actualize`() BEGIN +/** + * Recalcula el valor del campo con el modificador de precio para el componente de maná automático. + */ - /* PAK 2019/08/09 updated - * - * Recalcula el valor del campo con el modificador de precio para el componente de maná automático. - * La tabla mana_spellers es una caché - * - */ - - UPDATE mana_spellers me + UPDATE vn.workerMana wm JOIN - (SELECT Id_Trabajador, FLOOR(SUM(importe)/12) as pesoCarteraMensual + (SELECT Id_Trabajador workerFk, FLOOR(SUM(importe)/12) pesoCarteraMensual FROM bs.vendedores - WHERE año * 100 + mes >= (YEAR(CURDATE()) -1) * 100 + MONTH(CURDATE()) - GROUP BY Id_Trabajador - ) lastYearSales USING(Id_Trabajador) - SET me.prices_modifier_rate = GREATEST(me.minRate,LEAST(me.maxRate,ROUND(- me.used/lastYearSales.pesoCarteraMensual,3))) ; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `mermasCacheUpdate__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `mermasCacheUpdate__`() -BEGIN + WHERE año * 100 + mes >= (YEAR(util.VN_CURDATE()) -1) * 100 + MONTH(util.VN_CURDATE()) + GROUP BY workerFk + ) lastYearSales USING(workerFk) + SET pricesModifierRate = GREATEST(minRate, LEAST(maxRate, ROUND(- amount/lastYearSales.pesoCarteraMensual,3))); - DECLARE vTimeRange INT DEFAULT 30; - DECLARE vCurYearStarted DATE DEFAULT TIMESTAMPADD(DAY, - vTimeRange, CURDATE()); - DECLARE vCurYearFinished DATE DEFAULT CURDATE(); - DECLARE vLastYearStarted DATE DEFAULT TIMESTAMPADD(YEAR, -1 , vCurYearStarted); - DECLARE vLastYearFinished DATE DEFAULT TIMESTAMPADD(YEAR, -1 , vCurYearFinished); - - REPLACE bs.mermasCache - SELECT Comprador, - IF(Fecha < vCurYearStarted, year(CURDATE()) - 1,year(CURDATE())) año, - CAST(sum(Importe) as DECIMAL(10,0)) as Valor_Compra, - CAST(sum(IF(Cliente LIKE 'FALTAS',Importe,0)) as DECIMAL(10,0)) as Faltas, - CAST(sum(IF(Cliente LIKE 'BASURA',Importe,0)) as DECIMAL(10,0)) as Basura - FROM bs.mermas - WHERE Fecha BETWEEN vCurYearStarted AND vCurYearFinished - OR Fecha BETWEEN vLastYearStarted AND vLastYearFinished - GROUP BY año, Comprador; - - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -5409,11 +4529,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `nightTask_launchAll`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `nightTask_launchAll`() BEGIN /** * Runs all nightly tasks. @@ -5428,9 +4548,9 @@ BEGIN DECLARE vId INT; DECLARE rs CURSOR FOR - SELECT id, `schema`, `procedure` - FROM nightTask - WHERE finished <= CURDATE() + SELECT id, `schema`, `procedure` + FROM nightTask + WHERE finished <= util.VN_CURDATE() OR finished IS NULL ORDER BY `order`; @@ -5449,7 +4569,7 @@ BEGIN END IF; UPDATE nightTask - SET `started` = NOW(), + SET `started` = util.VN_NOW(), `finished` = NULL, `error` = NULL, `errorCode` = NULL @@ -5462,7 +4582,7 @@ BEGIN vError, vErrorCode ); - + IF vError IS NOT NULL THEN SET vNErrors = vNErrors + 1; @@ -5472,8 +4592,8 @@ BEGIN WHERE id = vId; ELSE UPDATE nightTask - SET finished = NOW(), - lastFinished = NOW() + SET finished = util.VN_NOW(), + lastFinished = util.VN_NOW() WHERE id = vId; END IF; END LOOP; @@ -5506,11 +4626,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `nightTask_launchTask`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `nightTask_launchTask`( vSchema VARCHAR(255), vProcedure VARCHAR(255), OUT vError VARCHAR(255), @@ -5532,7 +4652,7 @@ BEGIN vError = MESSAGE_TEXT, vErrorCode = RETURNED_SQLSTATE; - CALL util.exec(CONCAT('CALL `', vSchema ,'`.`', vProcedure ,'`')); + CALL util.exec(CONCAT('CALL `', vSchema ,'`.`', vProcedure ,'`')); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -5543,222 +4663,30 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `payMethodClientAdd`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `payMethodClientAdd`() BEGIN - INSERT IGNORE INTO `bs`.`payMethodClient` (dated, payMethodFk, clientFk) - SELECT CURDATE(), c.payMethodFk, c.id - FROM vn.client c + INSERT IGNORE INTO `bs`.`payMethodClient` (dated, payMethodFk, clientFk) + SELECT util.VN_CURDATE(), c.payMethodFk, c.id + FROM vn.client c JOIN vn.payMethod p ON c.payMethodFk = p.id; - + TRUNCATE `bs`.`payMethodClientEvolution` ; - + INSERT INTO `bs`.`payMethodClientEvolution` (dated, payMethodName, amountClient, amount, equalizationTax) - SELECT p.dated, pm.name, COUNT(p.clientFk), SUM(sub.importe) , SUM(sub.recargo) + SELECT p.dated, pm.name, COUNT(p.clientFk), SUM(sub.importe) , SUM(sub.recargo) FROM bs.payMethodClient p - JOIN (SELECT SUM(v.importe) AS importe, SUM(v.recargo) as recargo, v.fecha, v.Id_cliente + JOIN (SELECT SUM(v.importe) AS importe, SUM(v.recargo) as recargo, v.fecha, v.Id_cliente FROM bs.ventas v WHERE v.fecha>= (SELECT MIN(dated) FROM bs. payMethodClient) GROUP BY v.Id_cliente, v.fecha) sub ON sub.fecha = p.dated AND sub.Id_cliente = p.ClientFk JOIN vn.payMethod pm ON p.payMethodFk = pm.id - GROUP BY dated,payMethodFk; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `produccionAdd` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `produccionAdd`(vDate DATE) -BEGIN - - DECLARE vDateStart DATETIME DEFAULT vDate; - DECLARE vDateEnd DATETIME DEFAULT util.dayEnd(vDate); - DECLARE myDepLft INT; - DECLARE myDepRgt INT; - - -- Trabajadores - CALL vn.dayMinuteWorker(vDateStart,vDateEnd); -- Genera la tabla tmp.dayMinuteWorker - CALL vn.workerDepartmentByDate(vDate); - - -- General - REPLACE bs.produccion(dated, cost) - SELECT vDate,sum(wdd.costeHora) / 60 as Bruto - FROM tmp.dayMinuteWorker dmw - JOIN tmp.workerDepartmentByDate wdd ON wdd.userFk = dmw.userFk - WHERE warehouseName = 'Algemesi' - AND wdd.isProduction; - - UPDATE bs.produccion p - JOIN (SELECT sum(volume) as m3 - FROM vn.saleVolume sv - JOIN vn.ticket t ON sv.ticketFk = t.id - JOIN vn.warehouse w ON w.id = t.warehouseFk - WHERE t.shipped BETWEEN vDateStart AND vDateEnd - AND w.name = 'Algemesi' - ) sub - SET p.m3 = sub.m3, - p.eurosM3 = p.cost / sub.m3 - WHERE p.dated = vDate; - - DROP TEMPORARY TABLE tmp.dayMinuteWorker; - DROP TEMPORARY TABLE tmp.workerDepartmentByDate; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `produccion_launcher` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `produccion_launcher`(vDateFrom DATE, vDateTo DATE) -BEGIN - - WHILE vDateFrom <= vDateTo DO - - CALL bs.produccionAdd(vDateFrom); - - SET vDateFrom = TIMESTAMPADD(DAY,1,vDateFrom); - - END WHILE; - -/* - -call bs.produccion_launcher('2018-01-01', '2018-02-01'); -call bs.produccion_launcher('2018-02-01', '2018-03-01'); -call bs.produccion_launcher('2018-03-01', '2018-04-01'); -call bs.produccion_launcher('2018-04-01', '2018-05-01'); -call bs.produccion_launcher('2018-05-01', '2018-06-01'); -call bs.produccion_launcher('2018-06-01', '2018-07-01'); -call bs.produccion_launcher('2018-07-01', '2018-08-01'); -call bs.produccion_launcher('2018-08-01', '2018-09-01'); -call bs.produccion_launcher('2018-09-01', '2018-10-01'); -call bs.produccion_launcher('2018-10-01', '2018-11-01'); -call bs.produccion_launcher('2018-11-01', '2018-12-01'); -call bs.produccion_launcher('2018-12-01', '2019-01-01'); - -call bs.produccion_launcher('2019-01-01', '2019-02-01'); -call bs.produccion_launcher('2019-02-01', '2019-03-01'); -call bs.produccion_launcher('2019-03-01', '2019-04-01'); -call bs.produccion_launcher('2019-04-01', '2019-05-01'); -call bs.produccion_launcher('2019-05-01', '2019-06-01'); -call bs.produccion_launcher('2019-06-01', '2019-07-01'); -call bs.produccion_launcher('2019-07-01', '2019-08-01'); -call bs.produccion_launcher('2019-08-01', '2019-09-01'); -call bs.produccion_launcher('2019-09-01', '2019-10-01'); -call bs.produccion_launcher('2019-10-01', '2019-11-01'); -call bs.produccion_launcher('2019-11-01', '2019-12-01'); -call bs.produccion_launcher('2019-12-01', '2020-01-01'); - -call bs.produccion_launcher('2020-01-01', '2020-02-01'); -call bs.produccion_launcher('2020-02-01', '2020-03-01'); -call bs.produccion_launcher('2020-03-01', '2020-04-01'); -call bs.produccion_launcher('2020-04-01', '2020-05-01'); -call bs.produccion_launcher('2020-05-01', '2020-06-01'); -call bs.produccion_launcher('2020-06-01', '2020-07-01'); -*/ -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `produccion_launcher_auto` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `produccion_launcher_auto`() -BEGIN - - DECLARE vDate DATE DEFAULT TIMESTAMPADD(WEEK, -1, CURDATE()); - - WHILE vDate <= CURDATE() DO - - CALL bs.produccionAdd(vDate); - - SET vDate = TIMESTAMPADD(DAY,1,vDate); - - END WHILE; - - SET vDate = TIMESTAMPADD(DAY,-372, CURDATE()); - - WHILE vDate <= TIMESTAMPADD(YEAR,-1, CURDATE()) DO - - CALL bs.produccionAdd(vDate); - - SET vDate = TIMESTAMPADD(DAY,1,vDate); - - END WHILE; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `pruebas` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `pruebas`(IN vDateStart DATE, IN vDateEnd DATE) -BEGIN - -WHILE vDateStart <> vDateEnd -DO - UPDATE indicators - SET countEmployee = - ( SELECT CAST(SUM(hours_week) / 40 AS DECIMAL (10 , 2 )) - FROM - postgresql.business AS b - JOIN postgresql.profile p ON p.profile_id = b.provider_id - JOIN postgresql.person pe ON pe.person_id = p.person_id - LEFT JOIN - postgresql.business_labour AS bl ON bl.business_id = b.business_id - LEFT JOIN - postgresql.calendar_labour_type AS cl ON cl.calendar_labour_type_id = bl.calendar_labour_type_id - WHERE - (vDateStart BETWEEN b.date_start AND b.date_end OR (b.date_end IS NULL AND b.date_start <= vDateStart)) - AND pe.name = 'VERDNATURA LEVANTE SL' - ) - WHERE updated = vDateStart; - SET vDateStart = DATE_ADD(vDateStart, INTERVAL 1 DAY); - -END WHILE; + GROUP BY dated,payMethodFk; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -5771,24 +4699,24 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `saleGraphic`(IN vItemFk INT, IN vTypeFk INT, IN vCategoryFk INT, IN vFromDate DATE, +CREATE DEFINER=`root`@`localhost` PROCEDURE `saleGraphic`(IN vItemFk INT, IN vTypeFk INT, IN vCategoryFk INT, IN vFromDate DATE, IN vToDate DATE, IN vProducerFk INT) BEGIN - + DECLARE vFromDateLastYear DATE; DECLARE vToDateLastYear DATE; DECLARE vFromDateTwoYearsAgo DATE; DECLARE vToDateTwoYearsAgo DATE; - + SET vItemFk = IFNULL(vItemFk,0); SET vTypeFk = IFNULL(vTypeFk, 0); SET vCategoryFk = IFNULL(vCategoryFk,0); - SET vFromDate = IFNULL(vFromDate,CURDATE()); - SET vToDate = IFNULL(vToDate,CURDATE()); + SET vFromDate = IFNULL(vFromDate,util.VN_CURDATE()); + SET vToDate = IFNULL(vToDate,util.VN_CURDATE()); SET vProducerFk = IFNULL(vProducerFk,0); SET vFromDateLastYear = TIMESTAMPADD(YEAR,-1,vFromDate); @@ -5798,19 +4726,19 @@ BEGIN SELECT s.quantity, CAST(v.importe AS DECIMAL(10,0)) importe, v.fecha FROM bs.ventas v - JOIN vn.sale s ON s.id = v.Id_Movimiento - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk + JOIN vn.sale s ON s.id = v.Id_Movimiento + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it ON it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk WHERE vItemFk IN (i.id, 0) AND vTypeFk IN (i.typeFk, 0) AND vCategoryFk IN (it.categoryFk, 0) AND vProducerFk IN (i.producerFk, 0) AND (v.fecha BETWEEN vFromDate AND vToDate OR v.fecha BETWEEN vFromDateLastYear AND vToDateLastYear - OR v.fecha BETWEEN vFromDateTwoYearsAgo AND vToDateTwoYearsAgo + OR v.fecha BETWEEN vFromDateTwoYearsAgo AND vToDateTwoYearsAgo ); - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -5821,29 +4749,29 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `salePersonEvolutionAdd`(IN vDateStart DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `salePersonEvolutionAdd`(IN vDateStart DATETIME) BEGIN - DELETE FROM bs.salePersonEvolution - WHERE dated <= DATE_SUB(CURDATE(), INTERVAL 1 YEAR); - - + DELETE FROM bs.salePersonEvolution + WHERE dated <= DATE_SUB(util.VN_CURDATE(), INTERVAL 1 YEAR); + + INSERT INTO bs.salePersonEvolution (dated, amount, equalizationTax, salesPersonFk) - SELECT fecha dated, - CAST(SUM(importe) AS DECIMAL(10,2) ) amount, + SELECT fecha dated, + CAST(SUM(importe) AS DECIMAL(10,2) ) amount, CAST(SUM(recargo) AS DECIMAL(10,2) ) equalizationTax , IFNULL(salesPersonFk,0) salesPersonFk FROM bs.ventas v - JOIN vn.client c ON v.Id_Cliente = c.id + JOIN vn.client c ON v.Id_Cliente = c.id JOIN vn.company co ON co.id = v.empresa_id WHERE co.code = "VNL" AND fecha >= vDateStart GROUP BY v.fecha,c.salesPersonFk - ORDER BY salesPersonFk,dated ASC; + ORDER BY salesPersonFk,dated ASC; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -5856,17 +4784,17 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `salesByclientSalesPerson_add`(vDatedFrom DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `salesByclientSalesPerson_add`(vDatedFrom DATE) BEGIN IF vDatedFrom IS NULL THEN - SELECT CURDATE() - INTERVAL DAY(CURDATE())-1 DAY - INTERVAL 1 MONTH INTO vDatedFrom; + SELECT util.VN_CURDATE() - INTERVAL DAY(util.VN_CURDATE())-1 DAY - INTERVAL 1 MONTH INTO vDatedFrom; END IF; - + INSERT INTO salesByclientSalesPerson( dated, salesPersonFk, clientFk, amount, equalizationTax) SELECT v.fecha, c.salesPersonFk, @@ -5878,13 +4806,263 @@ BEGIN WHERE v.fecha >= vDatedFrom GROUP BY v.fecha,c.salesPersonFk,v.Id_Cliente ON DUPLICATE KEY UPDATE amount= VALUES(amount), equalizationTax= VALUES(equalizationTax); - + UPDATE salesByclientSalesPerson s JOIN vn.newBornSales n ON n.dated = s.dated AND n.clientFk = s.clientFk SET s.amountNewBorn = n.amount - WHERE n.dated >= vDatedFrom; - + WHERE n.dated >= vDatedFrom; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `salesByItemTypeDay_add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `salesByItemTypeDay_add`(vDateStart DATE, vDateEnd DATE) +BEGIN +/** + * Almacena datos relativos a las ventas de artículos agrupados por reino y familia + * + * @param vDateStart + * @param vDateEnd + */ + + DELETE FROM bs.salesByItemTypeDay + WHERE dated BETWEEN vDateStart AND vDateEnd; + + INSERT INTO bs.salesByItemTypeDay (itemTypeFk, itemCategoryFk, dated) + SELECT id, categoryFk, dated + FROM vn.itemType + JOIN vn.`time` + WHERE dated BETWEEN vDateStart AND vDateEnd; + + UPDATE bs.salesByItemTypeDay it + JOIN (SELECT ic.id itemCategoryFk, + it.id itemTypeFk, + bs.dated, + SUM(bs.amount) netSale + FROM bs.sale bs + JOIN vn.itemType it ON it.id = bs.typeFk + JOIN vn .itemCategory ic ON ic.id = it.categoryFk + JOIN vn.client c on c.id = bs.clientFk + JOIN vn.sale s ON s.id = bs.saleFk + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.`time` ti ON ti.dated = bs.dated + WHERE ic.merchandise + AND bs.dated BETWEEN vDateStart AND vDateEnd + GROUP BY ic.id, it.id, bs.dated) sub ON sub.dated = it.dated AND sub.itemCategoryFk = it.itemCategoryFk AND sub.itemTypeFk = it.itemTypeFk + SET it.netSale = sub.netSale; + + + UPDATE bs.salesByItemTypeDay it + JOIN (SELECT ic.id AS itemCategoryFk, + it.id AS itemTypeFk, + bs.dated, + SUM(i.stems * s.quantity) stems + FROM bs.sale bs + JOIN vn.itemType it ON it.id = bs.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + JOIN vn.sale s ON s.id = bs.saleFk + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.`time` tm ON tm.dated = bs.dated + WHERE ic.merchandise + AND bs.dated BETWEEN vDateStart AND vDateEnd + GROUP BY ic.id, it.id, bs.dated) sub ON sub.dated = it.dated AND sub.itemCategoryFk = it.itemCategoryFk AND sub.itemTypeFk = it.itemTypeFk + SET it.stems = sub.stems; + + + UPDATE bs.salesByItemTypeDay it + JOIN (SELECT ic.id AS itemCategoryFk, + it.id AS itemTypeFk, + DATE(t.shipped) dated, + COUNT(DISTINCT(i.id)) `references` + FROM vn.ticket t + JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it ON it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + WHERE ic.merchandise + AND t.shipped BETWEEN vDateStart AND util.dayEnd(vDateEnd) + GROUP BY ic.id, it.id, dated) sub ON sub.dated = it.dated AND sub.itemCategoryFk = it.itemCategoryFk AND sub.itemTypeFk = it.itemTypeFk + SET it.`references` = sub.`references`; + + UPDATE bs.salesByItemTypeDay it + JOIN (SELECT ic.id AS itemCategoryFk, + it.id AS itemTypeFk, + DATE(t.shipped) dated, + SUM(i.stems*s.quantity) AS trash + FROM vn.sale s + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it ON it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + JOIN vn.client c ON c.id = t.clientFk + WHERE c.name = 'BASURA' + AND t.shipped BETWEEN vDateStart AND util.dayEnd(vDateEnd) + GROUP BY ic.id, it.id, dated) sub ON sub.dated = it.dated AND sub.itemCategoryFk = it.itemCategoryFk AND sub.itemTypeFk = it.itemTypeFk + SET it.trash = sub.trash; + + UPDATE bs.salesByItemTypeDay it + JOIN (SELECT ic.id AS itemCategoryFk, + it.id AS itemTypeFk, + DATE(t.shipped) dated, + SUM(IFNULL(i.stems, 1) * s.quantity) AS faults + FROM vn.sale s + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it ON it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + JOIN vn.client c ON c.id = t.clientFk + WHERE c.name = 'FALTAS' + AND t.shipped BETWEEN vDateStart AND util.dayEnd(vDateEnd) + GROUP BY ic.id, it.id, dated) sub ON sub.dated = it.dated AND sub.itemCategoryFk = it.itemCategoryFk AND sub.itemTypeFk = it.itemTypeFk + SET it.`faults` = sub.`faults`; + + UPDATE bs.salesByItemTypeDay it + JOIN (SELECT ic.id AS itemCategoryFk, + it.id AS itemTypeFk, + DATE(t.shipped) dated, + SUM((cb.quantity * s.price * (100 - s.discount) / 100) * ((cc.maxResponsibility - c.responsibility )/4 )) accepted, + SUM(cb.quantity * s.price * (100 - s.discount) / 100) claimed + FROM vn.claim c + JOIN vn.claimBeginning cb ON cb.claimFk = c.id + JOIN vn.sale s ON s.id = cb.saleFk + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it ON it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + JOIN vn.claimConfig cc + WHERE ic.merchandise + AND t.shipped BETWEEN vDateStart AND util.dayEnd(vDateEnd) + GROUP BY ic.id, it.id, dated) sub ON sub.dated = it.dated AND sub.itemCategoryFk = it.itemCategoryFk AND sub.itemTypeFk = it.itemTypeFk + SET it.accepted = sub.accepted, + it.claimed = sub.claimed; + + UPDATE bs.salesByItemTypeDay it + JOIN(SELECT itemCategoryFk, + itemTypeFk, + dated, + CAST(SUM(sale) AS DECIMAL(10,2)) sale, + CAST(SUM(buy) AS DECIMAL(10,2))buy + FROM(SELECT ic.id itemCategoryFk, + it.id itemTypeFk, + bs.dated, + SUM(bs.amount) sale, + 0 buy + FROM bs.sale bs + JOIN vn.itemType it ON it.id = bs.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + JOIN vn.client c on c.id = bs.clientFk + JOIN vn.`time` tm ON tm.dated = bs.dated + JOIN vn.sale s ON s.id = bs.saleFk + JOIN vn.item i ON i.id = s.itemFk + WHERE ic.merchandise + AND bs.dated BETWEEN vDateStart AND vDateEnd + GROUP BY ic.id, it.id, bs.dated + UNION ALL + SELECT ic.id, + it.id, + t.landed, + 0 , + SUM(b.buyingValue * b.quantity) + FROM vn.entry e + JOIN vn.travel t ON t.id = e.travelFk + JOIN vn.buy b ON b.entryFk = e.id + JOIN vn.item i ON i.id = b.itemFk + JOIN vn.itemType it ON it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + WHERE ic.merchandise + AND t.landed BETWEEN vDateStart AND vDateEnd + GROUP BY ic.id, it.id, t.landed) sub + GROUP BY itemCategoryFk, itemTypeFk, dated) sub2 ON sub2.dated = it.dated AND sub2.itemCategoryFk = it.itemCategoryFk AND sub2.itemTypeFk = it.itemTypeFk + SET it.sale = sub2.sale, + it.buy = sub2.buy; + + DROP TEMPORARY TABLE IF EXISTS tmp.`component`; + CREATE TEMPORARY TABLE tmp.`component` + (PRIMARY KEY (`itemTypeFk`,`dated`), + KEY `salesByItemTypeDay_itemCategoryFk_idx` (`itemCategoryFk`), + KEY `salesByItemTypeDay_dated_idx` (`dated`)) + ENGINE = MEMORY + SELECT DATE(t.shipped) dated, + ic.id itemCategoryFk, + it.id itemTypeFk, + SUM(s.quantity * IF(c.code = 'purchaseValue', sc.value,0)) costComponent, + SUM(s.quantity * IF(ct.isMargin, sc.value,0)) marginComponent + FROM vn.ticket t + JOIN vn.sale s ON t.id = s.ticketFk + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it ON it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + JOIN vn.saleComponent sc ON sc.saleFk = s.id + STRAIGHT_JOIN vn.component c ON c.id = sc.componentFk + JOIN vn.componentType ct ON ct.id = c.typeFk + WHERE t.shipped BETWEEN vDateStart AND util.dayEnd(vDateEnd) + GROUP BY ic.id, it.id, dated; + + UPDATE bs.salesByItemTypeDay it + JOIN tmp.`component` c ON c.dated = it.dated AND c.itemCategoryFk = it.itemCategoryFk AND c.itemTypeFk = it.itemTypeFk + SET it.costComponent = c.costComponent, + it.marginComponent = c.marginComponent, + it.saleComponent = c.costComponent + c.marginComponent; + + DROP TEMPORARY TABLE tmp.`component`; + +/* UPDATE bs.salesByItemTypeDay it + JOIN(SELECT DATE(t.shipped) dated, + ic.id itemCategoryFk, + it.id itemTypeFk, + SUM(s.quantity * IF(c.code = 'purchaseValue', sc.value,0)) costComponent, + SUM(s.quantity * IF(ct.isMargin, sc.value,0)) marginComponent + FROM vn.ticket t + JOIN vn.sale s ON t.id = s.ticketFk + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it ON it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + JOIN vn.saleComponent sc ON sc.saleFk = s.id + STRAIGHT_JOIN vn.component c ON c.id = sc.componentFk + JOIN vn.componentType ct ON ct.id = c.typeFk + JOIN vn.`time` tm ON tm.dated = DATE(t.shipped) + WHERE t.shipped BETWEEN vDateStart AND util.dayEnd(vDateEnd) + GROUP BY ic.id, it.id, dated)sub ON sub.dated = it.dated AND sub.itemCategoryFk = it.itemCategoryFk AND sub.itemTypeFk = it.itemTypeFk + SET it.costComponent = sub.costComponent, + it.marginComponent = sub.marginComponent, + it.saleComponent = sub.costComponent + sub.marginComponent;*/ +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `salesByItemTypeDay_addLauncher` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `salesByItemTypeDay_addLauncher`() +BEGIN + DECLARE vDateStart,vDateEnd INT; + + SELECT DATE_SUB(util.VN_CURDATE(), INTERVAL 30 DAY), util.VN_CURDATE() INTO vDateStart,vDateEnd; + CALL bs.salesByItemTypeDay_add(vDateStart, vDateEnd); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -5897,34 +5075,44 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `salesMonthlySnapshot_add`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `salesMonthlySnapshot_add`() BEGIN - DECLARE vPlusNewClient INT DEFAULT 100; - DECLARE vScoreNewClient INT DEFAULT 100; + DECLARE vExecutionDay INT; + DECLARE vPlusNewClient INT; + DECLARE vPlusDifference INT; + DECLARE vScoreNewClient INT; + DECLARE vScoreDifference INT; + DECLARE vMaxWorkersWithPlusNewClient INT; DECLARE vRowCount INT DEFAULT 1; DECLARE vMaxRow INT; - - IF(DAY(CURDATE()) = 5) THEN + DECLARE vPreviusMonth DATETIME DEFAULT util.VN_CURDATE(); + + SELECT executionDay, maxPlusNewClient, plusDifference, maxScoreNewClient, scoreDifference, salesPersonWithPlusNewClient + INTO vExecutionDay, vPlusNewClient, vPlusDifference, vScoreNewClient, vScoreDifference, vMaxWorkersWithPlusNewClient + FROM vn.commissionConfig; + + IF(DAY(util.VN_CURDATE()) = vExecutionDay) THEN -- COMERCIAL Y EQUIPO DROP TEMPORARY TABLE IF EXISTS tmp.salesPersons; CREATE TEMPORARY TABLE tmp.salesPersons ENGINE = MEMORY - SELECT u.id workerFk, + SELECT u.id workerFk, u.name salesPersonName, d.name teamName - FROM vn.department d + FROM vn.department d JOIN vn.workerDepartment wd ON wd.departmentFk = d.id JOIN account.user u ON u.id = wd.workerFk - WHERE d.name LIKE '%EQUIPO%'; - + JOIN vn.department d2 ON d2.id = d.parentFk + WHERE d2.code = 'VT'; + -- VENTA, COMISIÓN DROP TEMPORARY TABLE IF EXISTS tmp.sale; CREATE TEMPORARY TABLE tmp.sale - ENGINE = MEMORY + ENGINE = MEMORY SELECT YEAR(s.dated) year, MONTH(s.dated) month, u.name, @@ -5934,311 +5122,161 @@ BEGIN cc.minimumSalesByQuarter/3 minimumSalesByMonth FROM bs.salesByclientSalesPerson s - JOIN vn.client c ON c.id = s.salesPersonFk + JOIN vn.client c ON c.id = s.salesPersonFk JOIN account.user u ON u.id = s.salesPersonFk JOIN vn.commissionConfig cc - WHERE dated BETWEEN util.firstDayOfMonth(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) + WHERE dated BETWEEN util.firstDayOfMonth(vPreviusMonth) AND LAST_DAY(vPreviusMonth) GROUP BY year, month, workerFk; - + -- OBJETIVO EVALUABLE (GRUPO) Y OBJETIVO INCENTIVO (INDIVIDUAL) DROP TEMPORARY TABLE IF EXISTS tmp.objectives; CREATE TEMPORARY TABLE tmp.objectives ENGINE = MEMORY - SELECT sg.rank, - sg.goal goalGroup, - sg2.goal goalIncentive, - sub.walletWeigth, - sub.walletWeigth*sg2.goal/100 AS incentiveObjective, - sub.walletWeigth*sg.goal/100 AS evaluableObjective, - sub.workerFk, - rb.bonus - FROM ( - SELECT - CASE - WHEN portfolioWeight >= sg1.walletWeightFrom - AND portfolioWeight <= sg1.walletWeightTo THEN 1 - WHEN portfolioWeight >= sg2.walletWeightFrom - AND portfolioWeight <= sg2.walletWeightTo THEN 2 - WHEN portfolioWeight >= sg3.walletWeightFrom - AND portfolioWeight <= sg3.walletWeightTo THEN 3 - WHEN portfolioWeight >= sg4.walletWeightFrom - AND portfolioWeight <= sg4.walletWeightTo THEN 4 - WHEN portfolioWeight >= sg5.walletWeightFrom - AND portfolioWeight <= sg5.walletWeightTo THEN 5 - END rank, - u.id workerFk, - IFNULL(v.portfolioWeight,0) AS walletWeigth - FROM bs.vendedores v - JOIN account.`user` u ON u.id = v.Id_Trabajador - JOIN vn.saleGoal sg1 ON sg1.`rank` = 1 AND sg1.`year` = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND sg1.`month` = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) - JOIN vn.saleGoal sg2 ON sg2.`rank` = 2 AND sg2.`year` = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND sg2.`month` = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) - JOIN vn.saleGoal sg3 ON sg3.`rank` = 3 AND sg3.`year` = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND sg3.`month` = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) - JOIN vn.saleGoal sg4 ON sg4.`rank` = 4 AND sg4.`year` = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND sg4.`month` = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) - JOIN vn.saleGoal sg5 ON sg5.`rank` = 5 AND sg5.`year` = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND sg5.`month` = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) - WHERE v.año = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))-1 AND v.mes = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) - GROUP BY u.id - ) sub - JOIN vn.saleGoal sg ON sg.`rank` = sub.rank AND sg.goalType = 'grupo' AND sg.`year` = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND sg.`month` = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) - JOIN vn.saleGoal sg2 ON sg2.`rank` = sub.rank AND sg2.goalType = 'individual' AND sg2.`year` = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AND sg2.`month` = MONTH(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) - JOIN vn.rankBonus rb ON rb.`rank` = sub.`rank`; - - -- PUNTUACIÓN EQUIPO, PLUS OBJETIVO EQUIPO Y PLUS VARIABLE JEFE DE EQUIPO - DROP TEMPORARY TABLE IF EXISTS tmp.scoreTeam; + SELECT + sg.rank, + sg.goal goalGroup, + sg4.goal goalIncentive, + sub.walletWeigth, + sub.walletWeigth*sg4.goal/100 AS incentiveObjective, + sub.walletWeigth*sg.goal/100 AS evaluableObjective, + sub.workerFk, + rb.bonus + FROM ( + SELECT sg.`rank` , + u.id workerFk, + IFNULL(v.portfolioWeight,0) AS walletWeigth + FROM bs.vendedores v + JOIN account.`user` u ON u.id = v.Id_Trabajador + JOIN vn.saleGoal sg ON sg.`year` = YEAR(vPreviusMonth) + AND sg.`month` = MONTH(vPreviusMonth) + AND v.portfolioWeight BETWEEN sg.walletWeightFrom AND sg.walletWeightTo + WHERE v.año = YEAR(vPreviusMonth)-1 AND v.mes = MONTH(vPreviusMonth) + GROUP BY u.id + ) sub + JOIN vn.saleGoal sg ON sg.`rank` = sub.rank AND sg.goalType = '1' AND sg.`year` = YEAR(vPreviusMonth) AND sg.`month` = MONTH(vPreviusMonth) + JOIN vn.saleGoal sg4 ON sg4.`rank` = sub.rank AND sg4.goalType = '4' AND sg4.`year` = YEAR(vPreviusMonth) AND sg4.`month` = MONTH(vPreviusMonth) + LEFT JOIN account.`user` u2 ON u2.id = sub.workerFk + JOIN vn.rankBonus rb ON rb.`rank` = sub.`rank`; + + -- PUNTUACIÓN EQUIPO, PLUS OBJETIVO EQUIPO + DROP TEMPORARY TABLE IF EXISTS tmp.scoreTeam; CREATE TEMPORARY TABLE tmp.scoreTeam ENGINE = MEMORY - SELECT *, - IF(sub1.teamScore >= sub1.minScoreForPlusTeam, sub1.plusTeamValue, 0) teamPlus, - IF(sub1.teamScore >= sub1.minScoreForPlusBoss, countSalesPerson * sub1.plusBoss, 0) teamBossPlus + SELECT *, + IF(sub1.teamScore >= sub1.minScoreForPlusTeam, sub1.plusTeamValue, 0) teamPlus FROM ( - SELECT *, - (100/sub.countSalesPerson)*countGroupAchieved teamScore + SELECT *, + (100/sub.countSalesPerson)*countGroupAchieved teamScore FROM ( SELECT COUNT(u.id) countSalesPerson, u.id workerFk, u.name salesPersonName, + d3.workerFk bossFk, d.name teamName, cc.minScoreForPlusTeam, cc.minScoreForPlusBoss, cc.plusTeam plusTeamValue, cc.plusBoss, SUM(IF(s.currentSale > r.evaluableObjective, 1, 0)) countGroupAchieved - FROM vn.department d + FROM vn.department d JOIN vn.workerDepartment wd ON wd.departmentFk = d.id JOIN account.user u ON u.id = wd.workerFk JOIN tmp.sale s ON s.workerFk = wd.workerFk JOIN tmp.objectives r ON r.workerFk = wd.workerFk - JOIN vn.commissionConfig cc - WHERE d.name LIKE '%EQUIPO%' + JOIN vn.commissionConfig cc + JOIN vn.department d2 ON d2.id = d.parentFk + JOIN vn.department d3 ON d3.name = d.name + WHERE d2.code = 'VT' GROUP BY d.name ) sub ) sub1; - + + -- PLUS VARIABLE JEFE DE EQUIPO + DROP TEMPORARY TABLE IF EXISTS tmp.plusBoss; + CREATE TEMPORARY TABLE tmp.plusBoss + ENGINE = MEMORY + SELECT d.workerFk, + IF(st.teamScore >= st.minScoreForPlusBoss , st.countSalesPerson * st.plusBoss, 0) teamBossPlus + FROM tmp.scoreTeam st + JOIN vn.department d ON d.name = st.teamName; + -- PLUS CLIENTES NUEVOS DROP TEMPORARY TABLE IF EXISTS tmp.newClients; CREATE TEMPORARY TABLE tmp.newClients ( - id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, - workerFk INTEGER(11), - name VARCHAR(30), - total DECIMAL(10,3), - newClientPlus INTEGER(11), - newClientScore INTEGER(11) + id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, + workerFk INTEGER(11), + name VARCHAR(30), + total DECIMAL(10,3), + newClientPlus INTEGER(11), + newClientScore INTEGER(11) ); - + INSERT INTO tmp.newClients (workerFk, total, name, newClientPlus) SELECT u.id workerFk, u.name, SUM(v.importe) total, vPlusNewClient - FROM bs.clientNewBorn cn + FROM bs.clientNewBorn cn JOIN bs.ventas v ON DATE_ADD(cn.firstShipped, INTERVAL 1 YEAR) > v.fecha AND v.Id_Cliente = cn.clientFk - JOIN vn.client c ON c.id = v.Id_Cliente - JOIN account.user u ON u.id = c.salesPersonFk - JOIN vn.workerDepartment wd ON wd.workerFk = u.id - JOIN vn.department d On d.id = wd.departmentFk - WHERE v.fecha >= util.firstDayOfMonth(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) - AND cn.firstShipped >= util.firstDayOfMonth(DATE_ADD(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), INTERVAL -1 year)) - AND d.name LIKE 'EQUIPO%' + JOIN vn.client c ON c.id = v.Id_Cliente + JOIN account.user u ON u.id = c.salesPersonFk + JOIN vn.workerDepartment wd ON wd.workerFk = u.id + JOIN vn.department d On d.id = wd.departmentFk + JOIN vn.department d2 ON d2.id = d.parentFk + WHERE v.fecha >= util.firstDayOfMonth(vPreviusMonth) + AND cn.firstShipped >= util.firstDayOfMonth(DATE_ADD(vPreviusMonth, INTERVAL -1 year)) + AND d2.code = 'VT' GROUP BY u.id ORDER BY total DESC; - + SET vMaxRow = ROW_COUNT(); - + my_loop: LOOP - UPDATE tmp.newClients SET newClientPlus = vPlusNewClient WHERE id = vRowCount; - UPDATE tmp.newClients SET newClientScore = vScoreNewClient WHERE id = vRowCount; - - IF (vRowCount <= 20) THEN - SET vPlusNewClient = vPlusNewClient - 5; - ELSE - SET vPlusNewClient = 0; - END IF; - - SET vScoreNewClient = vScoreNewClient - 1; - SET vRowCount = vRowCount + 1; - - IF vRowCount > vMaxRow THEN - LEAVE my_loop; - END IF; - END LOOP my_loop; - - INSERT INTO bs.salesMonthlySnapshot - SELECT * - FROM ( - SELECT sp.salesPersonName, - sp.teamName, - s.`year`, - s.`month`, - s.currentSale, - s.commissionSale, - IF(s.currentSale > s.minimumSalesByMonth AND s.currentSale > r.incentiveObjective, r.bonus, 0) individualPlus, - np.teamPlus, - np.teamScore, - nc.newClientPlus, - nc.newClientScore, - np.teamBossPlus - FROM tmp.salesPersons sp - LEFT JOIN tmp.sale s ON s.workerFk = sp.workerFk - LEFT JOIN tmp.objectives r ON r.workerFk = sp.workerFk - LEFT JOIN tmp.scoreTeam np ON np.teamName = sp.teamName - LEFT JOIN tmp.newClients nc ON nc.workerFk = sp.workerFk - ) sub - ORDER BY salesPersonName; - - DROP TEMPORARY TABLE + UPDATE tmp.newClients SET newClientPlus = vPlusNewClient WHERE id = vRowCount; + UPDATE tmp.newClients SET newClientScore = vScoreNewClient WHERE id = vRowCount; + + IF (vRowCount <= vMaxWorkersWithPlusNewClient) THEN + SET vPlusNewClient = vPlusNewClient - vPlusDifference; + ELSE + SET vPlusNewClient = 0; + END IF; + + SET vScoreNewClient = vScoreNewClient - vScoreDifference; + SET vRowCount = vRowCount + 1; + + IF vRowCount > vMaxRow THEN + LEAVE my_loop; + END IF; + END LOOP my_loop; + + INSERT INTO bs.salesMonthlySnapshot (salesPersonName, teamName, `year`, `month`, currentSale, commissionSale, individualPlus, teamPlus, teamScore, newClientPlus, newClientScore, teamBossPlus) + SELECT * + FROM ( + SELECT sp.salesPersonName, + sp.teamName, + s.`year`, + s.`month`, + s.currentSale, + s.commissionSale, + IF(s.currentSale > s.minimumSalesByMonth AND s.currentSale > r.incentiveObjective, r.bonus, 0) individualPlus, + np.teamPlus, + np.teamScore, + nc.newClientPlus, + nc.newClientScore, + pb.teamBossPlus + FROM tmp.salesPersons sp + LEFT JOIN tmp.sale s ON s.workerFk = sp.workerFk + LEFT JOIN tmp.objectives r ON r.workerFk = sp.workerFk + LEFT JOIN tmp.scoreTeam np ON np.teamName = sp.teamName + LEFT JOIN tmp.plusBoss pb ON pb.workerFk = sp.workerFk + LEFT JOIN tmp.newClients nc ON nc.workerFk = sp.workerFk + ) sub + ORDER BY salesPersonName; + + DROP TEMPORARY TABLE tmp.salesPersons, tmp.sale, tmp.objectives, tmp.scoreTeam, tmp.newClients; END IF; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `salesPersonClient_add` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `salesPersonClient_add`(intYEAR INT, vQuarter INT) -BEGIN - - DECLARE vCommissionRate DOUBLE DEFAULT 0.029; - - DELETE s.* FROM salesPersonClient s - JOIN vn.`time` t ON t.`year` = s.year AND t.`month` = s.month - WHERE t.`year` = intYEAR AND QUARTER(t.dated) = vQuarter; - - REPLACE salesPersonClient(salesPersonFk,clientFk, year, month, amount, comission) - SELECT c.salesPersonFk, - c.id, - intYEAR, - MONTH(v.fecha), - SUM(v.importe), - SUM(v.importe) * vCommissionRate - FROM ventas v - JOIN vn.client c on v.Id_Cliente = c.id - JOIN vn.`time` t on t.dated = v.fecha - WHERE c.salesPersonFk IS NOT NULL AND - t.`year` = intYEAR AND - QUARTER(t.dated) = vQuarter - GROUP BY c.salesPersonFk, - c.id, - t.`month`; - - -- Ventas nuevas - UPDATE salesPersonClient s - JOIN (SELECT c.salesPersonFk, - c.id, - SUM(importe) * vCommissionRate AS comissionNewClient, - t.`month`, - t.`year` - FROM ventas v - JOIN bs.clientNewBorn cnb ON v.Id_Cliente = cnb.clientFk - JOIN vn.client c ON c.id = v.Id_Cliente - JOIN vn.`time` t ON t.dated = v.fecha - WHERE c.salesPersonFk IS NOT NULL AND - t.`year` = intYEAR AND - QUARTER(v.fecha) = vQuarter - GROUP BY c.salesPersonFk, - c.id, - t.`month` - ) sub ON sub.salesPersonFk = s.salesPersonFk AND - sub.id = s.clientFk AND - sub.`month` = s.month AND - sub.`year` = s.year - SET s.comissionNewClient = sub.comissionNewClient, - s.comission = s.comission - sub.comissionNewClient; - - -- Ventas cedidas - INSERT INTO salesPersonClient (salesPersonFk, clientFk, month, year, comissionLended) - SELECT cc.Id_Trabajador_old AS workerFk, - c.id, - t.`month`, - t.`year`, - SUM(importe) * vCommissionRate * cc.comision_old AS comissionLended - FROM ventas v - JOIN vn.client c ON c.id = v.Id_Cliente - JOIN vn2008.Clientes_cedidos cc ON cc.Id_Cliente = c.id AND v.fecha BETWEEN datSTART AND datEND - JOIN vn.`time` t ON t.dated = v.fecha - WHERE c.salesPersonFk IS NOT NULL AND - t.`year` = intYEAR AND - QUARTER(v.fecha) = vQuarter - GROUP BY cc.Id_Trabajador_old, - c.id, - t.`month` - ON DUPLICATE KEY UPDATE comissionLended = IFNULL(comissionLended,0) + VALUES(comissionLended); - - -- Ventas arrendadas - INSERT INTO salesPersonClient (salesPersonFk, clientFk, month, year, comissionBorrowed) - SELECT cc.Id_Trabajador_new AS workerFk, - c.id, - t.`month`, - t.`year`, - SUM(importe) * vCommissionRate * cc.comision_new AS comissionBorrowed - FROM ventas v - JOIN vn.client c ON c.id = v.Id_Cliente - JOIN vn2008.Clientes_cedidos cc ON cc.Id_Cliente = c.id AND v.fecha BETWEEN datSTART AND datEND - JOIN vn.`time` t ON t.dated = v.fecha - WHERE c.salesPersonFk IS NOT NULL AND - t.`year` = intYEAR AND - QUARTER(v.fecha) = vQuarter - GROUP BY cc.Id_Trabajador_new, - c.id, - t.`month` - ON DUPLICATE KEY UPDATE comissionBorrowed = IFNULL(comissionBorrowed,0) + VALUES(comissionBorrowed); - - -- Actualización del campo comisión restando las comisiones arrendadas y cedidas - UPDATE salesPersonClient s - JOIN ( SELECT clientFk, `month`, year, SUM(comissionBorrowed) comissionBorrowed,SUM(comissionLended) comissionLended, QUARTER(CONCAT("2000-",`month`, "-01")) vQuarterMonth - FROM salesPersonClient - WHERE (comissionLended IS NOT NULL OR comissionBorrowed IS NOT NULL) AND - year = intYEAR - GROUP BY clientFk, `month` - HAVING vQuarterMonth = vQuarter - ) sub ON sub.clientFk = s.clientFk AND - sub.month = s.month AND - sub.year = s.year - SET s.comission = s.comission - sub.comissionBorrowed - sub.comissionLended - WHERE s.comission IS NOT NULL; - - -- Sustitucion cedidas - lended - INSERT INTO salesPersonClient (salesPersonFk, clientFk, month, year, comission) - SELECT c.salesPersonFk, - c.id, - t.`month`, - t.`year`, - SUM(importe) * vCommissionRate AS lended - FROM ventas v - JOIN vn.client c ON c.id = v.Id_Cliente - JOIN vn.sharingCartDaily scd ON scd.ownerFk = c.salesPersonFk AND scd.dated = v.fecha - JOIN vn.`time` t ON t.dated = v.fecha - WHERE t.`year` = intYEAR AND QUARTER(t.dated) = vQuarter - GROUP BY c.salesPersonFk, - c.id, - t.`month` - ON DUPLICATE KEY UPDATE comission = comission - VALUES(comission); - - -- Sustitucion arrendadas - borrowed - INSERT INTO salesPersonClient (salesPersonFk, clientFk, month, year, substitutionBorrowed) - SELECT scd.substituteFk, - c.id, - t.`month`, - t.`year`, - SUM(importe) * vCommissionRate AS borrowed - FROM ventas v - JOIN vn.client c ON c.id = v.Id_Cliente - JOIN vn.sharingCartDaily scd on scd.ownerFk = c.salesPersonFk AND scd.dated = v.fecha - JOIN vn.`time` t ON t.dated = v.fecha - WHERE t.`year` = intYEAR AND QUARTER(t.dated) = vQuarter - GROUP BY scd.substituteFk, c.id, t.`month` - ON DUPLICATE KEY UPDATE substitutionBorrowed = VALUES(substitutionBorrowed); - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -6251,50 +5289,50 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `salesPersonEvolution_add`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `salesPersonEvolution_add`() BEGIN DECLARE vDated DATE; DECLARE vCont INT DEFAULT 1; - SELECT TIMESTAMPADD(DAY,1,MAX(dated)) INTO vDated + SELECT TIMESTAMPADD(DAY,1,MAX(dated)) INTO vDated FROM bs.salesPersonEvolution; IF ISNULL(vDated) THEN - SELECT MIN(dated) INTO vDated + SELECT MIN(dated) INTO vDated FROM salesByclientSalesPerson; - + INSERT INTO bs.salesPersonEvolution( salesPersonFk, dated, amount, equalizationTax, amountNewBorn ) SELECT salesPersonFk, dated, amount, equalizationTax, amountNewBorn - FROM salesByclientSalesPerson + FROM salesByclientSalesPerson WHERE dated = vDated GROUP BY salesPersonFk; - + SET vDated = TIMESTAMPADD(DAY, 1, vDated); END IF; - - WHILE vDated < CURDATE() DO - + + WHILE vDated < util.VN_CURDATE() DO + SET vCont = vCont + 1; - + REPLACE bs.salesPersonEvolution( salesPersonFk, dated, amount) - SELECT salesPersonFk, vDated, SUM(amount) + SELECT salesPersonFk, vDated, SUM(amount) FROM(SELECT salesPersonFk, amount - FROM salesPersonEvolution + FROM salesPersonEvolution WHERE dated = TIMESTAMPADD(DAY,-1,vDated) -- amount acumulado día anterior UNION ALL SELECT salesPersonFk, amount * IF(dated < vDated,-1,1) -- suma amount año actual/ resta amount año anterior - FROM salesByclientSalesPerson + FROM salesByclientSalesPerson WHERE dated IN (vDated, TIMESTAMPADD(DAY,-365,vDated)) )sub GROUP BY salesPersonFk; - + SET vDated = TIMESTAMPADD(DAY,1,vDated); - + END WHILE; END ;; DELIMITER ; @@ -6302,44 +5340,87 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `salesPerson_updatePortfolio` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `salesPerson_updatePortfolio`() +BEGIN + /** + * Actualiza el campo portfolioWeight que indica el peso de la cartera del comercial + * + */ + DECLARE vStarted DATE DEFAULT DATE_FORMAT(DATE_ADD(util.VN_CURDATE(), INTERVAL -17 MONTH), '%Y-%m-01'); + + UPDATE vendedores v + JOIN vn.`time` t ON t.`year` = v.año AND t.`month` = v.mes + SET v.portfolioWeight = NULL + WHERE t.dated BETWEEN vStarted AND util.VN_CURDATE(); + + UPDATE vendedores v + JOIN ( + SELECT c.lastSalesPersonFk + , t.`year` + , t.`month` + , SUM(v.importe) importe + FROM vn.`time` t + STRAIGHT_JOIN bs.ventas v ON t.dated = v.fecha + JOIN vn.`client` c ON c.id = v.Id_Cliente + WHERE c.lastSalesPersonFk IS NOT NULL + AND v.fecha BETWEEN vStarted AND util.VN_CURDATE() + GROUP BY c.lastSalesPersonFk, t.`year`, t.`month` + ) sub ON sub.lastSalesPersonFk = v.Id_Trabajador AND sub.`year` = v.año AND sub.`month`= v.mes + SET v.portfolioWeight = sub.importe; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `vendedores_add` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `vendedores_add`(intYEAR INT, vQuarter INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `vendedores_add`(intYEAR INT, vQuarter INT) BEGIN DECLARE vCommissionRate DOUBLE; - + SELECT rate INTO vCommissionRate FROM vn.commissionConfig; - + -- vaciar tabla DELETE v.* FROM vendedores v JOIN vn.`time` t ON t.`year` = v.año AND t.`month` = v.mes WHERE t.`year` = intYEAR AND QUARTER(t.dated) = vQuarter; - + REPLACE vendedores(Id_Trabajador, año, mes, importe, comision, portfolioWeight) SELECT c.Id_Trabajador , intYEAR , MONTH(v.fecha) intMONTH - , sum(v.importe) - , sum(v.importe) * vCommissionRate - , sum(v.importe) + , sum(v.importe) + , sum(v.importe) * vCommissionRate + , sum(v.importe) FROM ventas v JOIN vn2008.Clientes c on v.Id_Cliente = c.Id_Cliente JOIN vn.`time` t on t.dated = v.fecha WHERE c.Id_Trabajador is not null AND t.`year` = intYEAR AND QUARTER(t.dated) = vQuarter GROUP BY c.Id_Trabajador, t.`month`; - + -- Sustitucion cedidas - lended INSERT INTO vendedores (Id_Trabajador, mes, año, importe, comision) SELECT c.salesPersonFk @@ -6355,7 +5436,7 @@ BEGIN GROUP BY c.salesPersonFk, t.`month` ON DUPLICATE KEY UPDATE comision = comision + VALUES(comision), importe = importe + VALUES(importe); - + -- Sustitucion arrendadas - borrowed INSERT INTO vendedores (Id_Trabajador, mes, año, importe, comision) SELECT scd.substituteFk @@ -6372,7 +5453,7 @@ BEGIN ON DUPLICATE KEY UPDATE comision = comision + VALUES(comision), importe = importe + VALUES(importe); - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -6385,42 +5466,18 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `vendedores_add_launcher`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `vendedores_add_launcher`() BEGIN DECLARE vDatedFrom DATE; - - CALL bs.vendedores_add(YEAR(CURDATE()),QUARTER(CURDATE())); - CALL bs.vendedores_evolution_add; - CALL bs.salesPersonClient_add(YEAR(CURDATE()), QUARTER(CURDATE())); - SELECT util.firstDayOfMonth(CURDATE())- INTERVAL 1 MONTH INTO vDatedFrom; - CALL bs.salesByclientSalesPerson_add(vDatedFrom); - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `vendedores_add_launcher__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `vendedores_add_launcher__`() -BEGIN - CALL bs.vendedores_add(YEAR(CURDATE()),QUARTER(CURDATE())); - CALL bs.vendedores_evolution_add; - CALL bs.salesPersonClient_add(YEAR(CURDATE()), QUARTER(CURDATE())); + CALL bs.vendedores_add(YEAR(util.VN_CURDATE()),QUARTER(util.VN_CURDATE())); + CALL bs.vendedores_evolution_add; + SELECT util.firstDayOfMonth(util.VN_CURDATE())- INTERVAL 1 MONTH INTO vDatedFrom; + CALL bs.salesByclientSalesPerson_add(vDatedFrom); END ;; DELIMITER ; @@ -6434,11 +5491,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `vendedores_evolution_add`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `vendedores_evolution_add`() BEGIN /* Inserta en la tabla compradores_evolution las ventas acumuladas en el ultimo mes @@ -6449,20 +5506,20 @@ Inserta en la tabla compradores_evolution las ventas acumuladas en el ultimo mes DECLARE vDateFrom DATE; DECLARE vDateTo DATE; - SET vCurYear = year(CURDATE()); - SET vCurMonth = month(CURDATE()); + SET vCurYear = year(util.VN_CURDATE()); + SET vCurMonth = month(util.VN_CURDATE()); SELECT IFNULL(max(year),vCurYear-1), IFNULL(max(month),1) INTO vYear, vMonth FROM bs.vendedores_evolution; WHILE (vYear < vCurYear) OR (vYear = vCurYear AND vMonth < vCurMonth) DO - + SELECT max(dated), TIMESTAMPADD(DAY,-364,max(dated)) INTO vDateTo, vDateFrom FROM vn.time WHERE year = vYear AND month = vMonth; - + REPLACE bs.vendedores_evolution( workerFk , year , month @@ -6471,14 +5528,14 @@ Inserta en la tabla compradores_evolution las ventas acumuladas en el ultimo mes , vYear as year , vMonth as month , sum(v.importe) as sales - FROM bs.ventas v + FROM bs.ventas v JOIN vn.client c on c.id = v.Id_Cliente WHERE v.fecha BETWEEN vDateFrom AND vDateTo AND c.salesPersonFk is not null GROUP BY c.salesPersonFk; SET vMonth = vMonth + 1; - + IF vMonth = 13 THEN SET vMonth = 1; SET vYear = vYear + 1; @@ -6491,123 +5548,86 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `vendedores_updatePortfolio` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `vendedores_updatePortfolio`() -BEGIN - /** - * Actualiza el campo portfolioWeight que indica el peso de la cartera del comercial - * - */ - DECLARE vStarted DATE DEFAULT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -17 MONTH), '%Y-%m-01'); - - INSERT INTO vendedores(Id_Trabajador, año, mes, portfolioWeight) - SELECT c.salesPersonFk - , t.`year` - , t.`month` - , SUM(v.importe) - FROM ventas v - JOIN vn.`client` c on c.id = v.Id_Cliente - JOIN vn.`time` t on t.dated = v.fecha - WHERE c.lastSalesPersonFk is not null - AND v.fecha >= vStarted - GROUP BY c.salesPersonFk, t.`month`, t.`year` - ON DUPLICATE KEY UPDATE portfolioWeight = VALUES(portfolioWeight); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ventas_add` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ventas_add`(IN datSTART DATETIME, IN datEND DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ventas_add`( + IN vStarted DATETIME, + IN vEnded DATETIME) BEGIN - - /** - * Añade las ventas que se realizaron de hace - * una semana hasta hoy - * - * @param datSTART Fecha de inicio - * @param datEND Fecha de finalizacion - * - **/ - +/** +* Añade las ventas que se realizaron de hace +* una semana hasta hoy +* +* @param vStarted Fecha de inicio +* @param vEnded Fecha de finalizacion +* +**/ DECLARE vStartingDate DATETIME; DECLARE vEndingDate DATETIME; - DECLARE TIPO_PATRIMONIAL INT DEFAULT 188; - IF datSTART < TIMESTAMPADD(YEAR,-5,CURDATE()) - OR datEND < TIMESTAMPADD(YEAR,-5,CURDATE()) THEN - CALL util.throw('fechaDemasiadoAntigua'); - END IF; - - SET datEND = util.dayEnd(datEND); - SET vStartingDate = datSTART; + IF vStarted < TIMESTAMPADD(YEAR,-5,util.VN_CURDATE()) + OR vEnded < TIMESTAMPADD(YEAR,-5,util.VN_CURDATE()) THEN + CALL util.throw('fechaDemasiadoAntigua'); + END IF; + + SET vEnded = util.dayEnd(vEnded); + SET vStartingDate = vStarted ; SET vEndingDate = vn2008.dayend(vStartingDate); - DELETE - FROM ventas - WHERE fecha BETWEEN vStartingDate AND datEND; + DELETE + FROM sale + WHERE dated BETWEEN vStartingDate AND vEnded; - WHILE vEndingDate <= datEND DO + WHILE vEndingDate <= vEnded DO REPLACE ventas(Id_Movimiento, importe, recargo, fecha, tipo_id, Id_Cliente, empresa_id) - SELECT Id_Movimiento, - SUM(IF(base, Cantidad * Valor, 0)) AS importe, - SUM(IF(base, 0, Cantidad * Valor)) AS recargo, - vStartingDate, - a.tipo_id, - cs.Id_Cliente, - t.empresa_id - FROM vn2008.Movimientos_componentes mc - JOIN bi.tarifa_componentes tc USING(Id_Componente) - JOIN bi.tarifa_componentes_series tcs USING(tarifa_componentes_series_id) - JOIN vn2008.Movimientos m USING(Id_Movimiento) - JOIN vn2008.Articles a USING(Id_Article) - JOIN vn2008.Tipos tp USING(tipo_id) - JOIN vn2008.reinos r ON r.id = tp.reino_id - JOIN vn2008.Tickets t USING(Id_Ticket) - JOIN vn2008.Consignatarios cs USING(Id_Consigna) - JOIN vn2008.Clientes c ON c.Id_Cliente = cs.Id_Cliente - WHERE t.Fecha BETWEEN vStartingDate AND vEndingDate - AND c.typeFk IN ('Normal','handMaking','internalUse') - AND m.Cantidad <> 0 - AND a.tipo_id != TIPO_PATRIMONIAL - AND m.Descuento <> 100 - AND (m.Id_Article = 98 OR m.Id_Article = 95 OR r.mercancia != 0) - GROUP BY mc.Id_Movimiento - HAVING IFNULL(importe,0) <> 0 OR IFNULL(recargo,0) <> 0; - - UPDATE bs.ventas v - JOIN ( - SELECT s.id, sum(s.quantity * sc.value ) AS margen, s.quantity * s.price * (100 - s.discount ) / 100 AS pvp - FROM vn.sale s - JOIN vn.ticket t ON t.id = s.ticketFk - JOIN vn.saleComponent sc ON sc.saleFk = s.id - JOIN vn.component c ON c.id = sc.componentFk - JOIN vn.componentType ct ON ct.id = c.typeFk + SELECT saleFk, + SUM(IF(ct.isBase, s.quantity * sc.value, 0)) importe, + SUM(IF(ct.isBase, 0, s.quantity * sc.value)) recargo, + vStartingDate, + i.typeFk, + a.clientFk, + t.companyFk + FROM vn.saleComponent sc + JOIN vn.component c ON c.id = sc.componentFk + JOIN vn.componentType ct ON ct.id = c.typeFk + JOIN vn.sale s ON s.id = sc.saleFk + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it ON it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.address a ON a.id = t.addressFk + JOIN vn.client cl ON cl.id = a.clientFk WHERE t.shipped BETWEEN vStartingDate AND vEndingDate - AND ct.isMargin = TRUE - GROUP BY s.id) sub ON sub.id = v.Id_Movimiento - - SET v.margen = sub.margen + v.importe + v.recargo - sub.pvp; + AND s.quantity <> 0 + AND s.discount <> 100 + AND ic.merchandise + GROUP BY sc.saleFk + HAVING IFNULL(importe,0) <> 0 OR IFNULL(recargo,0) <> 0; + + UPDATE sale s + JOIN ( + SELECT s.id, + SUM(s.quantity * sc.value ) margen, + s.quantity * s.price * (100 - s.discount ) / 100 pvp + FROM vn.sale s + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.saleComponent sc ON sc.saleFk = s.id + JOIN vn.component c ON c.id = sc.componentFk + JOIN vn.componentType ct ON ct.id = c.typeFk + WHERE t.shipped BETWEEN vStartingDate AND vEndingDate + AND ct.isMargin = TRUE + GROUP BY s.id) sub ON sub.id = s.saleFk + SET s.margin = sub.margen + s.amount + s.surcharge - sub.pvp; + SET vStartingDate = TIMESTAMPADD(DAY,1, vStartingDate); SET vEndingDate = util.dayEnd(vStartingDate); @@ -6625,20 +5645,20 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ventas_add_launcher`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `ventas_add_launcher`() BEGIN - + /** * Añade las ventas que se realizaron de hace * una semana hasta hoy * **/ - CALL bs.ventas_add(timestampadd(week,-1,curdate()),curdate()); + CALL bs.ventas_add(timestampadd(week,-1,util.VN_CURDATE()),util.VN_CURDATE()); END ;; DELIMITER ; @@ -6652,13 +5672,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ventas_contables_add`(IN vYear INT, IN vMonth INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ventas_contables_add`(IN vYear INT, IN vMonth INT) BEGIN - + /** * Reemplaza las ventas contables del último año. * Es el origen de datos para el balance de Entradas @@ -6670,8 +5690,8 @@ BEGIN DECLARE TIPO_PATRIMONIAL INT DEFAULT 188; - DELETE FROM bs.ventas_contables - WHERE year = vYear + DELETE FROM bs.ventas_contables + WHERE year = vYear AND month = vMonth; DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; @@ -6682,7 +5702,7 @@ BEGIN FROM vn2008.Tickets t JOIN vn2008.Facturas f ON f.Id_Factura = t.Factura WHERE year(f.Fecha) = vYear - AND month(f.Fecha) = vMonth; + AND month(f.Fecha) = vMonth; INSERT INTO bs.ventas_contables(year , month @@ -6692,7 +5712,7 @@ BEGIN , tipo_id , empresa_id , gasto) - + SELECT vYear , vMonth , round(sum(Cantidad * Preu * (100 - m.Descuento)/100)) @@ -6704,13 +5724,13 @@ BEGIN , tp.reino_id , a.tipo_id , t.empresa_id - , 7000000000 + , 7000000000 + IF(e.empresa_grupo = e2.empresa_grupo ,1 ,IF(e2.empresa_grupo,2,0) - ) * 1000000 + ) * 1000000 + tp.reino_id * 10000 as Gasto - FROM vn2008.Movimientos m + FROM vn2008.Movimientos m JOIN vn2008.Tickets t on t.Id_Ticket = m.Id_Ticket JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.Id_Consigna JOIN vn2008.Clientes c on c.Id_Cliente = cs.Id_Cliente @@ -6724,7 +5744,7 @@ BEGIN AND m.Descuento <> 100 AND a.tipo_id != TIPO_PATRIMONIAL GROUP BY grupo, reino_id, tipo_id, empresa_id, Gasto; - + INSERT INTO bs.ventas_contables(year , month , venta @@ -6743,17 +5763,17 @@ BEGIN ) as grupo , NULL , NULL - , t.companyFk + , t.companyFk , 7050000000 - FROM vn.ticketService ts + FROM vn.ticketService ts JOIN vn.ticket t ON ts.ticketFk = t.id - JOIN vn.address a on a.id = t.addressFk - JOIN vn.client cl on cl.id = a.clientFk + JOIN vn.address a on a.id = t.addressFk + JOIN vn.client cl on cl.id = a.clientFk JOIN tmp.ticket_list tt on tt.Id_Ticket = t.id - JOIN vn.company c on c.id = t.companyFk + JOIN vn.company c on c.id = t.companyFk LEFT JOIN vn.company c2 on c2.clientFk = cl.id - GROUP BY grupo, t.companyFk ; - + GROUP BY grupo, t.companyFk ; + DROP TEMPORARY TABLE tmp.ticket_list; END ;; DELIMITER ; @@ -6767,107 +5787,21 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ventas_contables_add_launcher`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `ventas_contables_add_launcher`() BEGIN - + /** * Reemplaza las ventas contables del último año. * Es el origen de datos para el balance de Entradas * **/ - - CALL bs.ventas_contables_add(YEAR(TIMESTAMPADD(MONTH,-1,CURDATE())), MONTH(TIMESTAMPADD(MONTH,-1,CURDATE()))); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ventas_contables_add__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ventas_contables_add__`(IN vYear INT, IN vMonth INT) -BEGIN -/** - * Reemplaza las ventas contables. Es el origen de datos para el balance de Entradas - * - * @param vYear Año a reemplazar - * @param vMonth Mes a reemplazar - * - * - **/ -DECLARE TIPO_PATRIMONIAL INT DEFAULT 188; + CALL bs.ventas_contables_add(YEAR(TIMESTAMPADD(MONTH,-1,util.VN_CURDATE())), MONTH(TIMESTAMPADD(MONTH,-1,util.VN_CURDATE()))); -DELETE FROM bs.ventas_contables - WHERE year = vYear - AND month = vMonth; - -DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; - -CREATE TEMPORARY TABLE tmp.ticket_list - (PRIMARY KEY (Id_Ticket)) - SELECT Id_Ticket - FROM vn2008.Tickets t - JOIN vn2008.Facturas f ON f.Id_Factura = t.Factura - WHERE year(f.Fecha) = vYear - AND month(f.Fecha) = vMonth; - - -INSERT INTO bs.ventas_contables(year - , month - , venta - , grupo - , reino_id - , tipo_id - , empresa_id - , gasto) - - SELECT vYear - , vMonth - , round(sum(Cantidad * Preu * (100 - m.Descuento)/100)) - , if( - e.empresa_grupo = e2.empresa_grupo - ,1 - ,if(e2.empresa_grupo,2,0) - ) as grupo - , tp.reino_id - , a.tipo_id - , t.empresa_id - , 7000000000 - + if(e.empresa_grupo = e2.empresa_grupo - ,1 - ,if(e2.empresa_grupo,2,0) - ) * 1000000 - + tp.reino_id * 10000 as Gasto - FROM vn2008.Movimientos m - JOIN vn2008.Tickets t on t.Id_Ticket = m.Id_Ticket - JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.Id_Consigna - JOIN vn2008.Clientes c on c.Id_Cliente = cs.Id_Cliente - JOIN tmp.ticket_list tt on tt.Id_Ticket = t.Id_Ticket - JOIN vn2008.Articles a on m.Id_Article = a.Id_Article - JOIN vn2008.empresa e on e.id = t.empresa_id - LEFT JOIN vn2008.empresa e2 on e2.Id_Cliente = c.Id_Cliente - JOIN vn2008.Tipos tp on tp.tipo_id = a.tipo_id - WHERE Cantidad <> 0 - AND Preu <> 0 - AND m.Descuento <> 100 - AND a.tipo_id != TIPO_PATRIMONIAL - GROUP BY grupo, reino_id, tipo_id, empresa_id, Gasto; - - -DROP TEMPORARY TABLE tmp.ticket_list; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -6880,18 +5814,18 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ventas_contables_por_cliente`(IN vYear INT, IN vMonth INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ventas_contables_por_cliente`(IN vYear INT, IN vMonth INT) BEGIN - + /** * Muestra las ventas (€) de cada cliente * dependiendo del año */ - + DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; CREATE TEMPORARY TABLE tmp.ticket_list @@ -6900,8 +5834,8 @@ BEGIN FROM vn2008.Tickets t JOIN vn2008.Facturas f ON f.Id_Factura = t.Factura WHERE year(f.Fecha) = vYear - AND month(f.Fecha) = vMonth; - + AND month(f.Fecha) = vMonth; + SELECT vYear Año, vMonth Mes, t.Id_Cliente, @@ -6911,7 +5845,7 @@ BEGIN IF(e2.empresa_grupo,2,0)) AS grupo, t.empresa_id empresa - FROM vn2008.Movimientos m + FROM vn2008.Movimientos m JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = t.Id_Consigna JOIN vn2008.Clientes c ON c.Id_Cliente = cs.Id_Cliente @@ -6925,9 +5859,9 @@ BEGIN AND m.Descuento <> 100 AND a.tipo_id != 188 GROUP BY t.Id_Cliente, grupo,t.empresa_id; - + DROP TEMPORARY TABLE tmp.ticket_list; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -6940,13 +5874,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `vivosMuertos`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `vivosMuertos`() BEGIN - + /** * Devuelve el número de clientes nuevos y muertos, * dependiendo de la fecha actual. @@ -6955,11 +5889,11 @@ BEGIN * @param @datEND Fecha de finalización a buscar */ - SET @datSTART = TIMESTAMPADD(YEAR,-2,CURDATE()); - SET @datEND = TIMESTAMPADD(DAY,-DAY(CURDATE()),CURDATE()); - + SET @datSTART = TIMESTAMPADD(YEAR,-2,util.VN_CURDATE()); + SET @datEND = TIMESTAMPADD(DAY,-DAY(util.VN_CURDATE()),util.VN_CURDATE()); + DROP TEMPORARY TABLE IF EXISTS tmp.VivosMuertos; - + CREATE TEMPORARY TABLE tmp.VivosMuertos SELECT c.Id_Cliente, tm.yearMonth, f.Compra, 0 as Nuevo, 0 as Muerto FROM vn2008.Clientes c @@ -6975,10 +5909,10 @@ BEGIN WHERE Fecha BETWEEN @datSTART AND @datEND) f ON f.yearMonth = tm.yearMonth AND f.Id_Cliente = c.Id_Cliente; - + UPDATE tmp.VivosMuertos vm JOIN - (SELECT MIN(tm.yearMonth) firstMonth, f.Id_Cliente + (SELECT MIN(tm.yearMonth) firstMonth, f.Id_Cliente FROM vn2008.Facturas f JOIN vn2008.time tm ON tm.date = f.Fecha WHERE Fecha BETWEEN @datSTART AND @datEND @@ -6986,9 +5920,9 @@ BEGIN AND fm.Id_Cliente = vm.Id_Cliente SET Nuevo = 1; - + SELECT max(yearMonth) INTO @lastYearMonth FROM tmp.VivosMuertos; - + UPDATE tmp.VivosMuertos vm JOIN ( SELECT MAX(tm.yearMonth) firstMonth, f.Id_Cliente @@ -7014,57 +5948,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `waste_addSales`() -BEGIN - DECLARE vWeek INT; - DECLARE vYear INT; - - SELECT week, year - INTO vWeek, vYear - FROM vn.time - WHERE dated = CURDATE(); - - REPLACE bs.waste - SELECT *, 100 * mermas / total as porcentaje - FROM ( - SELECT buyer, - year, - week, - family, - itemFk, - itemTypeFk, - floor(sum(value)) as total, - floor(sum(IF(clientTypeFk = 'loses', value, 0))) as mermas - FROM vn.saleValue - where year = vYear and week = vWeek - - GROUP BY family, itemFk - - ) sub - ORDER BY mermas DESC; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `waste_addSales_lastWeek` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `waste_addSales_lastWeek`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `waste_addSales`() BEGIN DECLARE vWeek INT; DECLARE vYear INT; @@ -7072,24 +5962,24 @@ BEGIN SELECT week, year INTO vWeek, vYear FROM vn.time - WHERE dated = TIMESTAMPADD(WEEK, -1, CURDATE()); - + WHERE dated = util.VN_CURDATE(); + REPLACE bs.waste SELECT *, 100 * mermas / total as porcentaje FROM ( - SELECT buyer, - year, + SELECT buyer, + year, week, family, itemFk, itemTypeFk, - floor(sum(value)) as total, + floor(sum(value)) as total, floor(sum(IF(clientTypeFk = 'loses', value, 0))) as mermas - FROM vn.saleValue + FROM vn.saleValue where year = vYear and week = vWeek - + GROUP BY family, itemFk - + ) sub ORDER BY mermas DESC; END ;; @@ -7104,16 +5994,15 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerLabour_getData`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerLabour_getData`() BEGIN /** * Carga los datos de la plantilla de trabajadores, altas y bajas en la tabla workerLabourDataByMonth para facilitar el cálculo del gráfico en grafana. * Se carga el día 21 de cada mes, elimina los registros del último año y los vuelve a calcular - * */ DECLARE vFristDay DATE; DECLARE vLastDay DATE; @@ -7122,94 +6011,91 @@ BEGIN DECLARE vDateEnded DATE; DECLARE vCursor CURSOR FOR - SELECT util.firstDayOfMonth(t.dated), LAST_DAY(t.dated) + SELECT util.firstDayOfMonth(t.dated), LAST_DAY(t.dated) FROM vn.time t WHERE t.dated BETWEEN vDateStarted AND vDateEnded - GROUP BY year,month; + GROUP BY year,month; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - IF DAY(CURDATE()) = 21 THEN - - SELECT util.firstDayOfMonth(DATE_SUB(CURDATE(), INTERVAL 12 MONTH)), - LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) - INTO vDateStarted, + + IF DAY(util.VN_CURDATE()) = 21 THEN + + SELECT util.firstDayOfMonth(DATE_SUB(util.VN_CURDATE(), INTERVAL 12 MONTH)), + LAST_DAY(DATE_SUB(util.VN_CURDATE(), INTERVAL 1 MONTH)) + INTO vDateStarted, vDateEnded; - - DELETE FROM workerLabourDataByMonth + + DELETE FROM workerLabourDataByMonth WHERE CONCAT(`year`, '-',`month`, '-01') BETWEEN vDateStarted AND vDateEnded; OPEN vCursor; l: LOOP SET vDone = FALSE; - + FETCH vCursor INTO vFristDay, vLastDay; - + IF vDone THEN LEAVE l; END IF; - + -- Altas periodo - INSERT INTO workerLabourDataByMonth (code, month, year, total, permanent) - SELECT 'hiring', MONTH(vFristDay), YEAR(vFristDay), COUNT(*), SUM(pc.isPermanent) - FROM vn.workerLabour w - JOIN postgresql.workcenter wc ON wc.workcenter_id = w.workCenterFk - JOIN postgresql.business_labour_payroll bl ON bl.business_id = w.businessFk - JOIN postgresql.person p ON p.id_trabajador = w.workerFk - LEFT JOIN vn2008.payroll_contratos pc ON pc.CodContrato = bl.cod_contrato - LEFT JOIN (SELECT w.workerFk - FROM vn.workerLabour w - LEFT JOIN (SELECT ended, workerFk FROM vn.workerLabour) wl ON wl.ended = DATE_SUB(w.started, INTERVAL 1 DAY) - AND wl.workerFk = w.workerFk - WHERE w.started BETWEEN vFristDay AND vLastDay AND wl.ended - )sub ON sub.workerFk = w.workerFk - WHERE wc.center_id IS NOT NULL - AND w.started BETWEEN vFristDay AND vLastDay + INSERT INTO workerLabourDataByMonth (code, month, year, total, permanent) + SELECT 'hiring', MONTH(vFristDay), YEAR(vFristDay), COUNT(*), SUM(wbt.isPermanent) + FROM vn.business b + JOIN vn.workCenter wc ON wc.id = b.workCenterFk + JOIN vn.worker w ON w.id = b.workerFk + LEFT JOIN vn.workerBusinessType wbt ON wbt.id = b.workerBusinessTypeFk + LEFT JOIN (SELECT b.id, b.workerFk + FROM vn.business b + LEFT JOIN (SELECT ended, workerFk FROM vn.business) wl + ON wl.ended = DATE_SUB(b.started, INTERVAL 1 DAY) AND wl.workerFk = b.workerFk + WHERE b.started BETWEEN vFristDay AND vLastDay AND wl.ended + )sub ON sub.workerFk = b.workerFk + WHERE wc.payrollCenterFk IS NOT NULL + AND b.workCenterFk IS NOT NULL + AND b.started BETWEEN vFristDay AND vLastDay AND sub.workerFk IS NULL - AND NOT p.isFreelance; + AND NOT w.isFreelance; -- Bajas periodo - INSERT INTO workerLabourDataByMonth (code, month, year, total, permanent) - SELECT 'layoffs', MONTH(vFristDay), YEAR(vFristDay), COUNT(*), SUM(pc.isPermanent) - FROM vn.workerLabour w - JOIN postgresql.workcenter wc ON wc.workcenter_id = w.workCenterFk - JOIN postgresql.business_labour_payroll bl ON bl.business_id = w.businessFk - JOIN postgresql.person p ON p.id_trabajador = w.workerFk - LEFT JOIN vn2008.payroll_contratos pc ON pc.CodContrato = bl.cod_contrato - LEFT JOIN (SELECT started, workerFk FROM vn.workerLabour) wl ON wl.started >= w.ended - AND wl.workerFk = w.workerFk - WHERE wc.center_id IS NOT NULL - AND w.ended BETWEEN vFristDay AND vLastDay + INSERT INTO workerLabourDataByMonth (code, month, year, total, permanent) + SELECT 'layoffs', MONTH(vFristDay), YEAR(vFristDay), COUNT(*), SUM(wbt.isPermanent) + FROM vn.business b + JOIN vn.worker w ON w.id = b.workerFk + JOIN vn.workCenter wc ON wc.id = b.workCenterFk + LEFT JOIN vn.workerBusinessType wbt ON wbt.id = b.workerBusinessTypeFk + LEFT JOIN (SELECT started, workerFk FROM vn.business) wl ON wl.started >= b.ended + AND wl.workerFk = b.workerFk + WHERE wc.payrollCenterFk IS NOT NULL + AND b.ended BETWEEN vFristDay AND vLastDay AND wl.started IS NULL - AND NOT p.isFreelance; - + AND NOT w.isFreelance; + -- Anterior al periodo SET vLastDay = LAST_DAY(DATE_SUB(vFristDay, INTERVAL 1 DAY)); - INSERT INTO workerLabourDataByMonth (code, month, year, total, permanent) - SELECT 'staff', MONTH(vFristDay), YEAR(vFristDay), COUNT(*), SUM(pc.isPermanent) - FROM vn.workerLabour w - JOIN postgresql.workcenter wc ON wc.workcenter_id = w.workCenterFk - JOIN postgresql.business_labour_payroll bl ON bl.business_id = w.businessFk - JOIN postgresql.person p ON p.id_trabajador = w.workerFk - LEFT JOIN vn2008.payroll_contratos pc ON pc.CodContrato = bl.cod_contrato - WHERE wc.center_id IS NOT NULL + INSERT INTO workerLabourDataByMonth (code, month, year, total, permanent) + SELECT 'staff', MONTH(vFristDay), YEAR(vFristDay), COUNT(*), SUM(wbt.isPermanent) + FROM vn.business b + JOIN vn.worker w ON w.id = b.workerFk + JOIN vn.workCenter wc ON wc.id = b.workCenterFk + LEFT JOIN vn.workerBusinessType wbt ON wbt.id = b.workerBusinessTypeFk + WHERE wc.payrollCenterFk IS NOT NULL AND vLastDay BETWEEN started AND IFNULL(ended, vLastDay) - AND NOT p.isFreelance; + AND NOT w.isFreelance; -- Discapacidad - INSERT INTO workerLabourDataByMonth (code, month, year, total, permanent) - SELECT 'disabled', MONTH(vFristDay), YEAR(vFristDay), COUNT(*), SUM(pc.isPermanent) - FROM vn.workerLabour w - JOIN postgresql.workcenter wc ON wc.workcenter_id = w.workCenterFk - JOIN postgresql.business_labour_payroll bl ON bl.business_id = w.businessFk - JOIN postgresql.person p ON p.id_trabajador = w.workerFk - LEFT JOIN vn2008.payroll_contratos pc ON pc.CodContrato = bl.cod_contrato - WHERE wc.center_id IS NOT NULL + INSERT INTO workerLabourDataByMonth (code, month, year, total, permanent) + SELECT 'disabled', MONTH(vFristDay), YEAR(vFristDay), COUNT(*), SUM(wbt.isPermanent) + FROM vn.business b + JOIN vn.worker w ON w.id = b.workerFk + JOIN vn.workCenter wc ON wc.id = b.workCenterFk + LEFT JOIN vn.workerBusinessType wbt ON wbt.id = b.workerBusinessTypeFk + WHERE wc.payrollCenterFk IS NOT NULL AND vLastDay BETWEEN started AND IFNULL(ended, vLastDay) - AND p.isDisable - AND NOT p.isFreelance; + AND w.isDisable + AND NOT w.isFreelance; END LOOP; CLOSE vCursor; @@ -7227,110 +6113,106 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerProductivity_add`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerProductivity_add`() BEGIN DECLARE vDateFrom DATE; - SELECT DATE_SUB(CURDATE(),INTERVAL 30 DAY) INTO vDateFrom; - - DELETE FROM workerProductivity + SELECT DATE_SUB(util.VN_CURDATE(),INTERVAL 30 DAY) INTO vDateFrom; + + DELETE FROM workerProductivity WHERE dated >= vDateFrom; - - -- SACADORES - INSERT INTO workerProductivity(dated, wareHouseFk, workerFk, volume, seconds, roleFk) - SELECT sub.dated, + + -- SACADORES Y ARTIFICIAL + INSERT INTO workerProductivity(dated, wareHouseFk, workerFk, volume, seconds, actionFk) + SELECT sub.dated, sub.warehouseFk, sub.workerFk, SUM(sub.volume), SUM(sub.seconds) , - r.id - FROM( SELECT t.warehouseFk AS warehouseFk, + sub.accion_id + FROM(SELECT t.warehouseFk warehouseFk, st.workerFk, DATE(t.shipped) dated, SUM((ic.cm3delivery * s.quantity)/1000000) volume, - TIME_TO_SEC(TIMEDIFF( MAX(st.created),MIN(st.created))) + w.minSeconsItemPicker seconds + TIME_TO_SEC(TIMEDIFF( MAX(st.created),MIN(st.created))) + w.minSeconsItemPicker seconds, + a.accion_id FROM vn.saleTracking st LEFT JOIN vn.salesPreviousPreparated sp ON sp.saleFk = st.saleFk JOIN vn.sale s ON s.id = st.saleFk JOIN vn.ticket t ON t.id = s.ticketFk - JOIN vn.itemCost ic ON ic.warehouseFk = t.warehouseFk AND - ic.itemFk = s.itemFk + JOIN vn.itemCost ic ON ic.warehouseFk = t.warehouseFk AND ic.itemFk = s.itemFk JOIN vn.worker w ON w.id = st.workerFk - JOIN vn.state e ON e.id = st.stateFk JOIN vncontrol.accion a ON a.accion_id = st.actionFk LEFT JOIN vn.workerDepartment wd ON wd.workerFk = st.workerFk - LEFT JOIN vn.department d ON d.id = wd.departmentFk JOIN workerProductivityConfig w ON TRUE - WHERE t.shipped >= vDateFrom - AND ISNULL(sp.saleFk) - AND a.accion='SACAR' + WHERE t.shipped >= vDateFrom + AND ISNULL(sp.saleFk) + AND (a.accion = 'SACAR' + OR a.accion = 'PRESACAR') GROUP BY t.id, t.warehouseFk, st.workerFk ) sub - JOIN account.role r ON r.name='itemPicker' GROUP BY sub.warehouseFk, sub.workerFk, sub.dated; - + -- ENCAJADORES - INSERT INTO workerProductivity(dated, wareHouseFk, workerFk, volume, seconds, roleFk) + INSERT INTO workerProductivity(dated, wareHouseFk, workerFk, volume, seconds, actionFk) SELECT sub2.shipped, sub2.warehouseFk, - sub2.workerFK, - SUM(sub2.volume), + sub2.workerFK, + SUM(sub2.volume), SUM(sub2.seconds), - r.id - FROM (SELECT t.warehouseFk, - SUM(s.volume) volume, - sub.workerFk, + a.accion_id + FROM (SELECT t.warehouseFk, + SUM(s.volume) volume, + sub.workerFk, DATE(t.shipped) shipped, - sub.seconds + w.minSeconsPackager seconds - FROM vn.saleVolume s - JOIN vn.ticket t ON t.id = s.ticketFk - JOIN(SELECT e.workerFk, e.ticketFk,TIME_TO_SEC(TIMEDIFF( MAX(e.created), MIN(e.created))) seconds + sub.seconds + w.minSeconsPackager seconds, + s.saleFk + FROM vn.saleVolume s + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN(SELECT e.workerFk, e.ticketFk,TIME_TO_SEC(TIMEDIFF( MAX(e.created), MIN(e.created))) seconds FROM vn.expedition e JOIN vn.ticket t ON t.id = e.ticketFk WHERE e.workerFk IS NOT NULL AND - t.shipped >= vDateFrom + t.shipped >= vDateFrom GROUP BY e.ticketFk )sub ON sub.ticketFk = t.id JOIN workerProductivityConfig w ON TRUE - WHERE t.shipped >= vDateFrom - GROUP BY s.ticketFk, t.warehouseFk + GROUP BY s.ticketFk, t.warehouseFk )sub2 - JOIN account.role r ON r.name='packager' + JOIN vncontrol.accion a ON a.accion = 'ENCAJAR' GROUP BY sub2.warehouseFk,sub2.workerFk, sub2.shipped; - + -- REVISADORES - INSERT INTO workerProductivity(dated, wareHouseFk, workerFk, volume, seconds, roleFk) + INSERT INTO workerProductivity(dated, wareHouseFk, workerFk, volume, seconds, actionFk) SELECT sub2.shipped, sub2.warehouseFk, - sub2.workerFK, - SUM(sub2.volume), + sub2.workerFK, + SUM(sub2.volume), SUM(sub2.seconds), - r.id - FROM (SELECT t.warehouseFk, - SUM(s.volume) volume, - sub.workerFk, + sub2.accion_id + FROM (SELECT t.warehouseFk, + SUM(s.volume) volume, + sub.workerFk, DATE(t.shipped) shipped, - sub.seconds + w.minSeconsPackager seconds - FROM vn.saleVolume s - JOIN vn.ticket t ON t.id = s.ticketFk - JOIN(SELECT st.workerFk, t.id ticketFk,TIME_TO_SEC(TIMEDIFF( MAX(st.created), MIN(st.created))) seconds - FROM vn.state ss - JOIN vn.saleTracking st ON st.stateFk = ss.id - JOIN vn.worker w ON st.workerFk = w.id + sub.seconds + w.minSeconsPackager seconds, + sub.accion_id + FROM vn.saleVolume s + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN(SELECT st.workerFk, t.id ticketFk,TIME_TO_SEC(TIMEDIFF( MAX(st.created), MIN(st.created))) seconds, a.accion_id + FROM vn.saleTracking st + JOIN vncontrol.accion a ON a.accion_id = st.actionFk JOIN vn.sale s ON s.id = st.saleFk JOIN vn.ticket t ON s.ticketFk = t.id - WHERE ss.code = 'CHECKED' AND - t.shipped >= vDateFrom + WHERE a.accion = 'CONTROLAR' + AND t.shipped >= vDateFrom GROUP BY t.id )sub ON sub.ticketFk = t.id JOIN workerProductivityConfig w ON TRUE - WHERE t.shipped >= vDateFrom - GROUP BY s.ticketFk, t.warehouseFk + GROUP BY s.ticketFk, t.warehouseFk )sub2 - JOIN account.role r ON r.name='checker' GROUP BY sub2.warehouseFk,sub2.workerFk, sub2.shipped; END ;; DELIMITER ; @@ -7338,59 +6220,12 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `zone_ETD_byTime` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_ETD_byTime`() -BEGIN - - SET @m := 0; - - SELECT MAX(hourTheoretical) INTO @h - FROM vn.zoneEstimatedDelivery ze - WHERE ze.remainingVolume ; - - DROP TEMPORARY TABLE IF EXISTS tmpZone; - - CREATE TEMPORARY TABLE tmpZone - SELECT remainingVolume, - hourTheoretical, - @m := @m + minutesLess + HOUR(TIMEDIFF(@h, hourTheoretical)) * 60 + MINUTE(TIMEDIFF(@h, hourTheoretical)) totalMinutes, - @h := hourTheoretical - FROM vn.zoneEstimatedDelivery ze - WHERE ze.remainingVolume - ORDER BY ze.hourTheoretical DESC; - - TRUNCATE bs.zone_ETD_byTime ; - - INSERT INTO bs.zone_ETD_byTime(theorical, practical, m3) - SELECT tz.hourTheoretical, - TIMESTAMPADD(MINUTE, MIN(totalMinutes), tz.hourTheoretical), - sum(tz.remainingVolume) - FROM tmpZone tz - GROUP BY tz.hourTheoretical; - - DROP TEMPORARY TABLE tmpZone; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -- -- Current Database: `cache` -- -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `cache` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `cache` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci */; USE `cache`; @@ -7402,14 +6237,14 @@ DROP TABLE IF EXISTS `addressFriendship`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `addressFriendship` ( - `addressFk1` int(11) NOT NULL DEFAULT '0', - `addressFk2` int(11) NOT NULL DEFAULT '0', - `friendship` int(11) NOT NULL DEFAULT '0', + `addressFk1` int(11) NOT NULL DEFAULT 0, + `addressFk2` int(11) NOT NULL DEFAULT 0, + `friendship` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`addressFk1`,`addressFk2`), KEY `addressFriendship_fk2_idx` (`addressFk2`), CONSTRAINT `addressFriendship_fk1` FOREIGN KEY (`addressFk1`) REFERENCES `vn`.`address` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `addressFriendship_fk2` FOREIGN KEY (`addressFk2`) REFERENCES `vn`.`address` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7425,7 +6260,7 @@ CREATE TABLE `available` ( `available` int(11) NOT NULL, UNIQUE KEY `calc_id` (`item_id`,`calc_id`) USING HASH, KEY `calc_id_4` (`calc_id`) USING BTREE -) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7441,7 +6276,7 @@ CREATE TABLE `availableNoRaids` ( `available` int(11) NOT NULL, UNIQUE KEY `calc_id` (`item_id`,`calc_id`), KEY `calc_id_4` (`calc_id`) USING BTREE -) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7453,11 +6288,11 @@ DROP TABLE IF EXISTS `cache`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cache` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(50) CHARACTER SET utf8 NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb3 NOT NULL, `lifetime` time NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7470,18 +6305,18 @@ DROP TABLE IF EXISTS `cache_calc`; CREATE TABLE `cache_calc` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `cache_id` int(10) unsigned NOT NULL, - `cacheName` varchar(255) CHARACTER SET utf8 DEFAULT NULL, - `params` varchar(100) CHARACTER SET utf8 NOT NULL DEFAULT '', + `cacheName` varchar(255) CHARACTER SET utf8mb3 DEFAULT NULL, + `params` varchar(100) CHARACTER SET utf8mb3 NOT NULL DEFAULT '', `last_refresh` datetime DEFAULT NULL, `expires` datetime DEFAULT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `connection_id` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `cache_name` (`cache_id`,`params`), KEY `cache_id` (`cache_id`), KEY `cacheName` (`cacheName`), KEY `expires` (`expires`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7495,7 +6330,7 @@ CREATE TABLE `cache_valid` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `valid` tinyint(3) unsigned NOT NULL, PRIMARY KEY (`id`) -) ENGINE=MEMORYDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7508,11 +6343,11 @@ DROP TABLE IF EXISTS `departure_limit`; CREATE TABLE `departure_limit` ( `warehouse_id` smallint(6) unsigned NOT NULL, `fecha` date NOT NULL, - `hora` int(11) NOT NULL DEFAULT '0', - `minSpeed` decimal(10,2) NOT NULL DEFAULT '0.00', + `hora` int(11) NOT NULL DEFAULT 0, + `minSpeed` decimal(10,2) NOT NULL DEFAULT 0.00, PRIMARY KEY (`warehouse_id`,`fecha`), CONSTRAINT `warehouse_departure` FOREIGN KEY (`warehouse_id`) REFERENCES `vn`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7525,12 +6360,13 @@ DROP TABLE IF EXISTS `last_buy`; CREATE TABLE `last_buy` ( `item_id` int(10) unsigned NOT NULL, `warehouse_id` smallint(5) unsigned NOT NULL, - `buy_id` int(10) unsigned DEFAULT NULL, + `buy_id` int(11) DEFAULT NULL, `landing` date DEFAULT NULL, UNIQUE KEY `item_id` (`item_id`,`warehouse_id`) USING HASH, KEY `buy_id` (`buy_id`), - KEY `warehouse_id` (`warehouse_id`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + KEY `warehouse_id` (`warehouse_id`) USING BTREE, + CONSTRAINT `last_buy_FK_1` FOREIGN KEY (`warehouse_id`) REFERENCES `vn`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7542,14 +6378,14 @@ DROP TABLE IF EXISTS `prod_graphic_source`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `prod_graphic_source` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `m3` double NOT NULL DEFAULT '0', + `m3` double NOT NULL DEFAULT 0, `warehouse_id` int(11) NOT NULL, `hora` int(11) NOT NULL, - `order` int(11) NOT NULL DEFAULT '0', - `graphCategory` int(11) NOT NULL DEFAULT '0', - `Agencia` varchar(45) CHARACTER SET utf8 NOT NULL, + `order` int(11) NOT NULL DEFAULT 0, + `graphCategory` int(11) NOT NULL DEFAULT 0, + `Agencia` varchar(45) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7565,7 +6401,7 @@ CREATE TABLE `stock` ( `amount` int(11) NOT NULL, UNIQUE KEY `warehouse_id` (`warehouse_id`,`item_id`) USING HASH, KEY `warehouse_id_2` (`warehouse_id`) USING BTREE -) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7581,7 +6417,7 @@ CREATE TABLE `visible` ( `visible` int(11) NOT NULL, UNIQUE KEY `calc_id` (`calc_id`,`item_id`) USING HASH, KEY `id` (`item_id`) USING BTREE -) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7594,12 +6430,12 @@ DROP TABLE IF EXISTS `zoneAgencyFriendship`; CREATE TABLE `zoneAgencyFriendship` ( `agencyModeFk` int(11) NOT NULL, `zoneFk` int(11) NOT NULL, - `friendship` bigint(21) NOT NULL DEFAULT '0', + `friendship` bigint(21) NOT NULL DEFAULT 0, PRIMARY KEY (`agencyModeFk`,`zoneFk`), KEY `zoneAgencyFriendship_fk1_idx` (`zoneFk`), CONSTRAINT `zoneAgencyFriendship` FOREIGN KEY (`agencyModeFk`) REFERENCES `vn`.`agencyMode` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `zoneAgencyFriendship_fk1` FOREIGN KEY (`zoneFk`) REFERENCES `vn`.`zone` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7611,14 +6447,14 @@ DELIMITER ;; /*!50003 SET @saved_cs_client = @@character_set_client */ ;; /*!50003 SET @saved_cs_results = @@character_set_results */ ;; /*!50003 SET @saved_col_connection = @@collation_connection */ ;; -/*!50003 SET character_set_client = utf8 */ ;; -/*!50003 SET character_set_results = utf8 */ ;; -/*!50003 SET collation_connection = utf8_general_ci */ ;; +/*!50003 SET character_set_client = utf8mb4 */ ;; +/*!50003 SET character_set_results = utf8mb4 */ ;; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `cacheCalc_clean` ON SCHEDULE EVERY 30 MINUTE STARTS '2017-01-23 13:15:58' ON COMPLETION NOT PRESERVE ENABLE DO CALL cacheCalc_clean */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `cacheCalc_clean` ON SCHEDULE EVERY 30 MINUTE STARTS '2022-01-28 09:29:18' ON COMPLETION NOT PRESERVE ENABLE DO CALL cacheCalc_clean */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -7629,14 +6465,14 @@ DELIMITER ;; /*!50003 SET @saved_cs_client = @@character_set_client */ ;; /*!50003 SET @saved_cs_results = @@character_set_results */ ;; /*!50003 SET @saved_col_connection = @@collation_connection */ ;; -/*!50003 SET character_set_client = utf8 */ ;; -/*!50003 SET character_set_results = utf8 */ ;; -/*!50003 SET collation_connection = utf8_general_ci */ ;; +/*!50003 SET character_set_client = utf8mb4 */ ;; +/*!50003 SET character_set_results = utf8mb4 */ ;; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `cache_clean` ON SCHEDULE EVERY 5 MINUTE STARTS '2019-04-29 13:06:16' ON COMPLETION NOT PRESERVE ENABLE DO CALL cache_clean */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `cache_clean` ON SCHEDULE EVERY 5 MINUTE STARTS '2022-01-28 09:29:18' ON COMPLETION NOT PRESERVE ENABLE DO CALL cache_clean */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -7654,30 +6490,30 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `addressFriendship_Update`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `addressFriendship_Update`() BEGIN - REPLACE cache.addressFriendship + REPLACE cache.addressFriendship SELECT addressFk1, addressFk2, count(*) friendship FROM ( SELECT t.routeFk, t.zoneFk, t.addressFk addressFk1, t2.addressFk addressFk2 FROM vn.ticket t JOIN vn.ticket t2 USING(routeFk, zoneFk) - WHERE t.shipped >= TIMESTAMPADD(MONTH,-3,CURDATE()) - AND t2.shipped >= TIMESTAMPADD(MONTH,-3,CURDATE()) + WHERE t.shipped >= TIMESTAMPADD(MONTH,-3,util.VN_CURDATE()) + AND t2.shipped >= TIMESTAMPADD(MONTH,-3,util.VN_CURDATE()) AND t.addressFk != t2.addressFk) sub GROUP BY addressFk1, addressFk2; - + REPLACE cache.zoneAgencyFriendship SELECT r.agencyModeFk, t.zoneFk, count(*) friendship FROM vn.route r JOIN vn.ticket t ON t.routeFk = r.id - WHERE t.shipped >= TIMESTAMPADD(MONTH,-3,CURDATE()) + WHERE t.shipped >= TIMESTAMPADD(MONTH,-3,util.VN_CURDATE()) AND r.agencyModeFk AND t.routeFk AND t.zoneFk @@ -7692,13 +6528,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `availableNoRaids_refresh`(OUT `vCalc` INT, IN `vRefresh` INT, IN `vWarehouse` INT, IN `vDate` DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `availableNoRaids_refresh`(OUT `vCalc` INT, IN `vRefresh` INT, IN `vWarehouse` INT, IN `vDate` DATE) proc: BEGIN DECLARE vStartDate DATE; DECLARE vEndDate DATETIME; @@ -7712,7 +6548,7 @@ proc: BEGIN RESIGNAL; END; - IF vDate < CURDATE() THEN + IF vDate < util.VN_CURDATE() THEN LEAVE proc; END IF; @@ -7724,15 +6560,15 @@ proc: BEGIN IF !vRefresh THEN LEAVE proc; END IF; - - -- Calcula algunos parámetros necesarios + + -- Calcula algunos parametros necesarios SET vStartDate = TIMESTAMP(vDate, '00:00:00'); SET vEndDate = TIMESTAMP(TIMESTAMPADD(DAY, 4, vDate), '23:59:59'); SELECT inventoried INTO vInventoryDate FROM vn.config; - SELECT SUBTIME(NOW(), reserveTime) INTO vReserveDate + SELECT SUBTIME(util.VN_NOW(), reserveTime) INTO vReserveDate FROM hedera.orderConfig; -- Calcula el ultimo dia de vida para cada producto @@ -7749,11 +6585,12 @@ proc: BEGIN JOIN vn.entry e ON b.entryFk = e.id JOIN vn.travel t ON t.id = e.travelFk JOIN vn.warehouse w ON w.id = t.warehouseInFk + JOIN vn.supplier s ON s.id = e.supplierFk WHERE t.landed BETWEEN vInventoryDate AND vStartDate AND t.warehouseInFk = vWarehouse - AND NOT e.isInventory + AND s.name != 'INVENTARIO' AND NOT e.isRaid - GROUP BY b.itemFk + GROUP BY b.itemFk ) c JOIN vn.item i ON i.id = c.item_id JOIN vn.itemType it ON it.id = i.typeFk @@ -7763,22 +6600,22 @@ proc: BEGIN DROP TEMPORARY TABLE IF EXISTS item_range_copy1; CREATE TEMPORARY TABLE item_range_copy1 LIKE item_range; - INSERT INTO item_range_copy1 + INSERT INTO item_range_copy1 SELECT * FROM item_range; - + DROP TEMPORARY TABLE IF EXISTS item_range_copy2; CREATE TEMPORARY TABLE item_range_copy2 LIKE item_range; - INSERT INTO item_range_copy2 + INSERT INTO item_range_copy2 SELECT * FROM item_range; - + DROP TEMPORARY TABLE IF EXISTS item_range_copy3; CREATE TEMPORARY TABLE item_range_copy3 LIKE item_range; - INSERT INTO item_range_copy3 + INSERT INTO item_range_copy3 SELECT * FROM item_range; - + DROP TEMPORARY TABLE IF EXISTS item_range_copy4; CREATE TEMPORARY TABLE item_range_copy4 LIKE item_range; - INSERT INTO item_range_copy4 + INSERT INTO item_range_copy4 SELECT * FROM item_range; -- Calcula el ATP @@ -7786,10 +6623,10 @@ proc: BEGIN DELETE FROM availableNoRaids WHERE calc_id = vCalc; INSERT INTO availableNoRaids (calc_id, item_id, available) - SELECT vCalc, t.item_id, SUM(stock) amount FROM ( + SELECT vCalc, t.item_id, SUM(stock) amount FROM ( SELECT il.itemFk AS item_id, stock FROM tmp.itemList il - JOIN item_range ir ON ir.item_id = il.itemFk + JOIN item_range ir ON ir.item_id = il.itemFk UNION ALL SELECT t.item_id, minacum(dt, amount, vDate) AS available FROM ( SELECT itemFk AS item_id, DATE(dat) dt, SUM(quantity) amount FROM ( @@ -7810,8 +6647,8 @@ proc: BEGIN UNION ALL SELECT i.itemFk, i.shipped AS dat, i.quantity FROM vn.itemEntryOut i - JOIN item_range_copy3 ir ON ir.item_id = i.itemFk - WHERE i.shipped >= vStartDate + JOIN item_range_copy3 ir ON ir.item_id = i.itemFk + WHERE i.shipped >= vStartDate AND (ir.date_end IS NULL OR i.shipped <= ir.date_end) AND i.warehouseOutFk = vWarehouse UNION ALL @@ -7827,10 +6664,10 @@ proc: BEGIN ) t GROUP BY item_id, dt ) t - GROUP BY t.item_id + GROUP BY t.item_id ) t GROUP BY t.item_id; - DROP TEMPORARY TABLE IF EXISTS + DROP TEMPORARY TABLE IF EXISTS tmp.itemList ,item_range ,item_range_copy1 @@ -7851,11 +6688,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `available_clean`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `available_clean`() BEGIN DROP TEMPORARY TABLE IF EXISTS tCalc; CREATE TEMPORARY TABLE tCalc @@ -7867,12 +6704,12 @@ BEGIN FROM available a LEFT JOIN tCalc c ON c.id = a.calc_id WHERE c.id IS NULL; - + DELETE a FROM availableNoRaids a LEFT JOIN tCalc c ON c.id = a.calc_id WHERE c.id IS NULL; - + DROP TEMPORARY TABLE tCalc; END ;; DELIMITER ; @@ -7884,16 +6721,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `available_refresh`(OUT `vCalc` INT, IN `vRefresh` INT, IN `vWarehouse` INT, IN `vDate` DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `available_refresh`(OUT `vCalc` INT, IN `vRefresh` INT, IN `vWarehouse` INT, IN `vDate` DATE) proc: BEGIN DECLARE vStartDate DATE; - DECLARE vEndDate DATETIME; DECLARE vReserveDate DATETIME; DECLARE vParams CHAR(100); DECLARE vInventoryDate DATE; @@ -7905,7 +6741,7 @@ proc: BEGIN RESIGNAL; END; - IF vDate < CURDATE() THEN + IF vDate < util.VN_CURDATE() THEN LEAVE proc; END IF; @@ -7920,24 +6756,23 @@ proc: BEGIN -- Invoca al procedimiento que genera el stock virtual de Logiflora, si coincide con la peticion de refresco del disponible IF vn.isLogifloraDay(vDate, vWarehouse) THEN - + -- CALL edi.floramondo_offerRefresh; SET vIsLogifloraDay = TRUE; - + ELSE - + SET vIsLogifloraDay = FALSE; - - END IF; - + + END IF; + -- Calcula algunos parámetros necesarios SET vStartDate = TIMESTAMP(vDate, '00:00:00'); - SET vEndDate = TIMESTAMP(TIMESTAMPADD(DAY, 4, vDate), '23:59:59'); SELECT inventoried INTO vInventoryDate FROM vn.config; - SELECT SUBTIME(NOW(), reserveTime) INTO vReserveDate + SELECT SUBTIME(util.VN_NOW(), reserveTime) INTO vReserveDate FROM hedera.orderConfig; -- Calcula el ultimo dia de vida para cada producto @@ -7956,8 +6791,8 @@ proc: BEGIN JOIN vn.warehouse w ON w.id = t.warehouseInFk WHERE t.landed BETWEEN vInventoryDate AND vStartDate AND t.warehouseInFk = vWarehouse - AND NOT e.isInventory - GROUP BY b.itemFk + AND NOT e.isExcludedFromAvailable + GROUP BY b.itemFk ) c JOIN vn.item i ON i.id = c.item_id JOIN vn.itemType it ON it.id = i.typeFk @@ -7967,22 +6802,22 @@ proc: BEGIN DROP TEMPORARY TABLE IF EXISTS item_range_copy1; CREATE TEMPORARY TABLE item_range_copy1 LIKE item_range; - INSERT INTO item_range_copy1 + INSERT INTO item_range_copy1 SELECT * FROM item_range; - + DROP TEMPORARY TABLE IF EXISTS item_range_copy2; CREATE TEMPORARY TABLE item_range_copy2 LIKE item_range; - INSERT INTO item_range_copy2 + INSERT INTO item_range_copy2 SELECT * FROM item_range; - + DROP TEMPORARY TABLE IF EXISTS item_range_copy3; CREATE TEMPORARY TABLE item_range_copy3 LIKE item_range; - INSERT INTO item_range_copy3 + INSERT INTO item_range_copy3 SELECT * FROM item_range; - + DROP TEMPORARY TABLE IF EXISTS item_range_copy4; CREATE TEMPORARY TABLE item_range_copy4 LIKE item_range; - INSERT INTO item_range_copy4 + INSERT INTO item_range_copy4 SELECT * FROM item_range; -- Calcula el ATP @@ -7990,13 +6825,15 @@ proc: BEGIN DELETE FROM available WHERE calc_id = vCalc; INSERT INTO available (calc_id, item_id, available) - SELECT vCalc, t.item_id, SUM(stock) amount FROM ( + SELECT vCalc, t.item_id, SUM(stock) amount FROM ( SELECT il.itemFk AS item_id, stock FROM tmp.itemList il - JOIN item_range ir ON ir.item_id = il.itemFk + JOIN item_range ir ON ir.item_id = il.itemFk UNION ALL - SELECT t.item_id, minacum(dt, amount, vDate) AS available FROM ( - SELECT itemFk AS item_id, DATE(dat) dt, SUM(quantity) amount FROM ( + SELECT t.item_id, minacum(dt, amount, vDate) AS available + FROM ( + SELECT itemFk AS item_id, DATE(dat) dt, SUM(quantity) amount + FROM ( SELECT i.itemFk, i.shipped AS dat, i.quantity FROM vn.itemTicketOut i JOIN item_range_copy1 ir ON ir.item_id = i.itemFk @@ -8007,7 +6844,7 @@ proc: BEGIN SELECT i.itemFk, i.landed AS dat, i.quantity FROM vn.itemEntryIn i JOIN item_range_copy2 ir ON ir.item_id = i.itemFk - LEFT JOIN edi.warehouseFloramondo wf ON wf.entryFk = i.entryFk + LEFT JOIN edi.warehouseFloramondo wf ON wf.entryFk = i.entryFk WHERE i.landed >= vStartDate AND (ir.date_end IS NULL OR i.landed <= ir.date_end) AND i.warehouseInFk = vWarehouse @@ -8015,8 +6852,8 @@ proc: BEGIN UNION ALL SELECT i.itemFk, i.shipped AS dat, i.quantity FROM vn.itemEntryOut i - JOIN item_range_copy3 ir ON ir.item_id = i.itemFk - WHERE i.shipped >= vStartDate + JOIN item_range_copy3 ir ON ir.item_id = i.itemFk + WHERE i.shipped >= vStartDate AND (ir.date_end IS NULL OR i.shipped <= ir.date_end) AND i.warehouseOutFk = vWarehouse UNION ALL @@ -8032,10 +6869,10 @@ proc: BEGIN ) t GROUP BY item_id, dt ) t - GROUP BY t.item_id + GROUP BY t.item_id ) t GROUP BY t.item_id; - DROP TEMPORARY TABLE IF EXISTS + DROP TEMPORARY TABLE IF EXISTS tmp.itemList ,item_range ,item_range_copy1 @@ -8043,7 +6880,6 @@ proc: BEGIN ,item_range_copy3 ,item_range_copy4; - CALL cache_calc_end (vCalc); END ;; DELIMITER ; @@ -8059,11 +6895,11 @@ DELIMITER ; /*!50003 SET character_set_results = utf8mb4 */ ; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `cacheCalc_clean`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `cacheCalc_clean`() BEGIN - DECLARE vCleanTime DATETIME DEFAULT TIMESTAMPADD(MINUTE, -5, NOW()); + DECLARE vCleanTime DATETIME DEFAULT TIMESTAMPADD(MINUTE, -5, util.VN_NOW()); DELETE FROM cache_calc WHERE expires < vCleanTime; END ;; DELIMITER ; @@ -8075,13 +6911,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `cache_calc_end`(IN `v_calc` INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `cache_calc_end`(IN `v_calc` INT) BEGIN DECLARE v_cache_name VARCHAR(255); DECLARE v_params VARCHAR(255); @@ -8090,8 +6926,8 @@ BEGIN UPDATE cache_calc cc JOIN cache c ON c.id = cc.cache_id SET - cc.last_refresh = NOW(), - cc.expires = LEAST(ADDTIME(NOW(), c.lifetime), util.midNight()), + cc.last_refresh = util.VN_NOW(), + cc.expires = LEAST(ADDTIME(util.VN_NOW(), c.lifetime), util.midNight()), cc.connection_id = NULL WHERE cc.id = v_calc; @@ -8113,13 +6949,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `cache_calc_start`(OUT `v_calc` INT, INOUT `v_refresh` INT, IN `v_cache_name` VARCHAR(50), IN `v_params` VARCHAR(100)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `cache_calc_start`(OUT `v_calc` INT, INOUT `v_refresh` INT, IN `v_cache_name` VARCHAR(50), IN `v_params` VARCHAR(100)) proc: BEGIN DECLARE v_valid BOOL; DECLARE v_lock_id VARCHAR(100); @@ -8165,12 +7001,12 @@ proc: BEGIN INTO v_cache_id, v_calc, v_expires FROM cache c LEFT JOIN cache_calc ca - ON ca.cache_id = c.id AND ca.params = v_params COLLATE 'utf8_general_ci' + ON ca.cache_id = c.id AND ca.params = v_params COLLATE 'utf8_general_ci' WHERE c.name = v_cache_name COLLATE 'utf8_general_ci'; - + -- Si existe una calculo valido libera el bloqueo y devuelve su identificador. - IF !v_refresh AND NOW() < v_expires + IF !v_refresh AND util.VN_NOW() < v_expires THEN DO RELEASE_LOCK(v_lock_id); SET v_refresh = FALSE; @@ -8216,9 +7052,9 @@ DELIMITER ; /*!50003 SET character_set_results = utf8mb4 */ ; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `cache_calc_unlock`(IN `v_calc` INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `cache_calc_unlock`(IN `v_calc` INT) proc: BEGIN DECLARE v_cache_name VARCHAR(50); DECLARE v_params VARCHAR(100); @@ -8231,7 +7067,7 @@ proc: BEGIN FROM cache c JOIN cache_calc ca ON c.id = ca.cache_id WHERE ca.id = v_calc; - + DELETE FROM cache_calc WHERE id = v_calc; IF v_cache_name IS NOT NULL THEN @@ -8247,13 +7083,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `cache_clean`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `cache_clean`() NO SQL BEGIN CALL available_clean; @@ -8272,14 +7108,14 @@ DELIMITER ; /*!50003 SET character_set_results = utf8mb4 */ ; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clean`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `clean`() BEGIN - - DECLARE vDateShort DATETIME; - SET vDateShort = TIMESTAMPADD(MONTH, -1, CURDATE()); + DECLARE vDateShort DATETIME; + + SET vDateShort = TIMESTAMPADD(MONTH, -1, util.VN_CURDATE()); DELETE FROM cache.departure_limit WHERE Fecha < vDateShort; END ;; @@ -8294,11 +7130,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `departure_timing`(vWarehouseId INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `departure_timing`(vWarehouseId INT) BEGIN DECLARE done BOOL DEFAULT FALSE; @@ -8316,11 +7152,11 @@ DECLARE vLoadingDelay DECIMAL(5) DEFAULT 2; DECLARE rs CURSOR FOR SELECT Departure , Sum(pb.m3)/(GREATEST(IFNULL(lhp.m3,0),IFNULL(dp.minSpeed,0))) AS Horas - , curDate()+(Departure + vLoadingDelay -(Sum(pb.m3)/(GREATEST(IFNULL(lhp.m3,0),IFNULL(minSpeed,0))))/24) AS InicioPreparacion + , util.VN_CURDATE()+(Departure + vLoadingDelay -(Sum(pb.m3)/(GREATEST(IFNULL(lhp.m3,0),IFNULL(minSpeed,0))))/24) AS InicioPreparacion FROM tmp.production_buffer pb LEFT JOIN vn.lastHourProduction lhp ON lhp.warehouseFk = pb.warehouse_id - LEFT JOIN cache.departure_limit dp ON dp.warehouse_id = pb.warehouse_id AND dp.fecha = CURDATE() - WHERE pb.Fecha = CURDATE() + LEFT JOIN cache.departure_limit dp ON dp.warehouse_id = pb.warehouse_id AND dp.fecha = util.VN_CURDATE() + WHERE pb.Fecha = util.VN_CURDATE() AND pb.graphCategory > 1 AND IFNULL(Departure,0) > 0 GROUP BY Departure @@ -8328,7 +7164,7 @@ DECLARE rs CURSOR FOR DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - SET myTime = HOUR(now()) + MINUTE(now()) / 60; + SET myTime = HOUR(util.VN_NOW()) + MINUTE(util.VN_NOW()) / 60; OPEN rs; @@ -8337,23 +7173,23 @@ DECLARE rs CURSOR FOR WHILE NOT done DO SET resto = IF(inicioProd < rsDeparture, rsDeparture - inicioProd,0); - + SET inicioProd = rsDeparture - rsHoras; - + IF inicioProd - resto < myTime THEN - + SET done = TRUE; - + ELSE - + SET departureLimit = rsDeparture; - + FETCH rs INTO rsDeparture, rsHoras , rsInicio; - + -- SELECT rsDeparture, rsHoras , rsInicio; - + END IF; - + END WHILE; SET departureLimit = IFNULL(departureLimit,24); @@ -8362,102 +7198,13 @@ DECLARE rs CURSOR FOR SELECT minSpeed INTO myMinSpeed FROM cache.departure_limit WHERE warehouse_id = vWarehouseId - AND fecha = CURDATE(); + AND fecha = util.VN_CURDATE(); REPLACE cache.departure_limit(warehouse_id, fecha, hora, minSpeed) - VALUES (vWarehouseId, CURDATE(), departureLimit, IFNULL(myMinSpeed,0)); + VALUES (vWarehouseId, util.VN_CURDATE(), departureLimit, IFNULL(myMinSpeed,0)); CLOSE rs; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `departure_timing_beta__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `departure_timing_beta__`(vWarehouseId INT) -BEGIN - -DECLARE done BOOL DEFAULT FALSE; -DECLARE rsDeparture INT; -DECLARE rsHoras DECIMAL(5,2); -DECLARE rsInicio DECIMAL(5,2); -DECLARE resto DECIMAL(5,2); -DECLARE horasProd DECIMAL(5,2); -DECLARE inicioProd DECIMAL(5,2) DEFAULT 24.00; -DECLARE myTime DECIMAL(5,2); -DECLARE departureLimit INT; - -DECLARE rs CURSOR FOR - SELECT Departure - , Sum(pb.m3)/GREATEST(v.m3,IFNULL(minSpeed,0)) AS Horas - , curDate()+(Departure-(Sum(pb.m3)/GREATEST(v.m3,IFNULL(minSpeed,0)))/24) AS InicioPreparacion - FROM tmp.production_buffer pb - JOIN vn2008.v_encajado_ultima_hora v ON v.warehouse_id = pb.warehouse_id - LEFT JOIN cache.departure_limit dp ON dp.warehouse_id = pb.warehouse_id AND dp.fecha = CURDATE() - WHERE pb.Fecha = CURDATE() - AND alert_level < 2 - AND IFNULL(Departure,0) > 0 - GROUP BY Departure - ORDER BY Departure DESC; - -DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - -SET myTime = HOUR(now()) + MINUTE(now()) / 60; - -OPEN rs; - -FETCH rs INTO rsDeparture, rsHoras , rsInicio; - -SELECT rsDeparture, rsHoras , rsInicio, vWarehouseId, done; - -WHILE NOT done DO - - SET resto = IF(inicioProd < rsDeparture, rsDeparture - inicioProd,0); - - SET inicioProd = rsDeparture - rsHoras; - - SELECT rsDeparture, rsHoras , rsInicio, resto,inicioProd; - - IF inicioProd - resto < myTime THEN - - SET done = TRUE; - - ELSE - - SET departureLimit = rsDeparture; - - FETCH rs INTO rsDeparture, rsHoras , rsInicio; - - END IF; - -END WHILE; - -SELECT rsDeparture, rsHoras , rsInicio, resto,inicioProd; - - -SET departureLimit = IFNULL(departureLimit,24); - -IF departureLimit > 0 THEN - - REPLACE cache.departure_limit(warehouse_id, fecha, hora, minSpeed) - VALUES (vWarehouseId, CURDATE(), departureLimit, myMinSpeed); - -END IF; - -CLOSE rs; - - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -8474,12 +7221,12 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `last_buy_refresh`(vRefresh BOOL) +CREATE DEFINER=`root`@`localhost` PROCEDURE `last_buy_refresh`(vRefresh BOOL) proc: BEGIN /** * Crea o actualiza la cache con la última compra y fecha de cada * artículo hasta ayer. Para obtener la última compra hasta una fecha - * determinada utilizar el procedimiento vn2008.item_last_buy_(). + * determinada utilizar el procedimiento vn.buyUltimate(). * * @param vRefresh %TRUE para forzar el recálculo de la cache */ @@ -8487,7 +7234,7 @@ proc: BEGIN DECLARE started DATE; DECLARE ended DATE; DECLARE vLastRefresh DATE; - + DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN CALL cache_calc_unlock (vCalc); @@ -8503,7 +7250,7 @@ proc: BEGIN -- TODO: ¿Se puede usar la fecha del ultimo inventario? SELECT inventoried INTO started FROM vn.config LIMIT 1; - SET ended = CURDATE(); -- TIMESTAMPADD(DAY, -1, CURDATE()); + SET ended = util.VN_CURDATE(); -- TIMESTAMPADD(DAY, -1, util.VN_CURDATE()); CALL vn.buyUltimateFromInterval(NULL, started, ended); @@ -8526,25 +7273,25 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `prod_graphic_refresh`(v_refresh BOOL, wh_id INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `prod_graphic_refresh`(v_refresh BOOL, wh_id INT) proc: BEGIN DECLARE datEQ DATETIME; DECLARE timDIF TIME; DECLARE v_calc INT; - + CALL cache_calc_start (v_calc, v_refresh, 'prod_graphic', wh_id); - + IF !v_refresh THEN LEAVE proc; END IF; - + CALL vn2008.production_control_source(wh_id, 0); DELETE FROM prod_graphic_source; @@ -8559,11 +7306,11 @@ proc: BEGIN pb.Agencia FROM tmp.production_buffer pb JOIN vn.state st ON st.id = pb.state - WHERE Fecha = CURDATE() + WHERE Fecha = util.VN_CURDATE() GROUP BY wh_id, graphCategory ; - - + + CALL cache_calc_end (v_calc); END ;; DELIMITER ; @@ -8577,14 +7324,14 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `stock_refresh`(v_refresh BOOL) +CREATE DEFINER=`root`@`localhost` PROCEDURE `stock_refresh`(v_refresh BOOL) proc: BEGIN /** - * Crea o actualiza la cache con el disponible hasta el día de + * Crea o actualiza la cache con el disponible hasta el día de * ayer. Esta cache es usada como base para otros procedimientos * como el cáculo del visible o del ATP. * @@ -8609,22 +7356,22 @@ proc: BEGIN END IF; SET v_date_inv = (SELECT inventoried FROM vn.config LIMIT 1); - SET v_curdate = CURDATE(); - + SET v_curdate = util.VN_CURDATE(); + DELETE FROM stock; - + INSERT INTO stock (item_id, warehouse_id, amount) SELECT item_id, warehouse_id, SUM(amount) amount FROM ( - SELECT itemFk AS item_id, warehouseFk AS warehouse_id, quantity AS amount + SELECT itemFk AS item_id, warehouseFk AS warehouse_id, quantity AS amount FROM vn.itemTicketOut WHERE shipped >= v_date_inv AND shipped < v_curdate UNION ALL - SELECT itemFk ASitem_id, warehouseInFk AS warehouse_id, quantity AS amount + SELECT itemFk ASitem_id, warehouseInFk AS warehouse_id, quantity AS amount FROM vn.itemEntryIn WHERE landed >= v_date_inv AND landed < v_curdate AND isVirtualStock is FALSE UNION ALL - SELECT itemFk AS item_id ,warehouseOutFk AS warehouse_id, quantity AS amount + SELECT itemFk AS item_id ,warehouseOutFk AS warehouse_id, quantity AS amount FROM vn.itemEntryOut WHERE shipped >= v_date_inv AND shipped < v_curdate ) t @@ -8637,93 +7384,29 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `stock_refresh__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `stock_refresh__`(v_refresh BOOL) -proc: BEGIN -/** - * bernat: WORKING IN THIS FILE - * Crea o actualiza la cache con el disponible hasta el día de - * ayer. Esta cache es usada como base para otros procedimientos - * como el cáculo del visible o del ATP. - * - * @param v_refresh %TRUE para forzar el recálculo de la cache - **/ - DECLARE v_calc INT; - DECLARE v_date_inv DATE; - DECLARE v_curdate DATE; - DECLARE v_last_refresh DATETIME; - - DECLARE EXIT HANDLER FOR SQLEXCEPTION - BEGIN - CALL cache_calc_unlock (v_calc); - RESIGNAL; - END; - - CALL cache_calc_start (v_calc, v_refresh, 'stock', NULL); - - IF !v_refresh - THEN - LEAVE proc; - END IF; - - SET v_date_inv = (SELECT FechaInventario FROM vn2008.tblContadores LIMIT 1); - SET v_curdate = CURDATE(); - - DELETE FROM stock; - - INSERT INTO stock (item_id, warehouse_id, amount) - SELECT item_id, warehouse_id, SUM(amount) amount FROM - ( - SELECT item_id, warehouse_id, amount FROM vn2008.item_out - WHERE dat >= v_date_inv AND dat < v_curdate - UNION ALL - SELECT item_id, warehouse_id, amount FROM vn2008.item_entry_in - WHERE dat >= v_date_inv AND dat < v_curdate AND isVirtualStock is FALSE - UNION ALL - SELECT item_id ,warehouse_id, amount FROM vn2008.item_entry_out - WHERE dat >= v_date_inv AND dat < v_curdate - ) t - GROUP BY item_id, warehouse_id HAVING amount != 0; - - CALL cache_calc_end (v_calc); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `visible_clean` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `visible_clean`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `visible_clean`() BEGIN DROP TEMPORARY TABLE IF EXISTS tCalc; CREATE TEMPORARY TABLE tCalc (INDEX (id)) ENGINE = MEMORY SELECT id FROM cache_calc; - + DELETE v FROM visible v LEFT JOIN tCalc c ON c.id = v.calc_id WHERE c.id IS NULL; - + DROP TEMPORARY TABLE tCalc; END ;; DELIMITER ; @@ -8737,11 +7420,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `visible_refresh`(OUT v_calc INT, v_refresh BOOL, v_warehouse INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `visible_refresh`(OUT v_calc INT, v_refresh BOOL, v_warehouse INT) proc: BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN @@ -8754,11 +7437,11 @@ proc: BEGIN IF !v_refresh THEN LEAVE proc; END IF; - + -- Calculamos el stock hasta ayer - + CALL `cache`.stock_refresh(false); - + DROP TEMPORARY TABLE IF EXISTS vn2008.tmp_item; CREATE TEMPORARY TABLE vn2008.tmp_item (PRIMARY KEY (item_id)) @@ -8767,65 +7450,9 @@ proc: BEGIN WHERE warehouse_id = v_warehouse; -- Calculamos los movimientos confirmados de hoy - CALL vn.item_GetVisible(v_warehouse, NULL); - DELETE FROM visible WHERE calc_id = v_calc; - - INSERT INTO visible (calc_id, item_id,visible) - SELECT v_calc, item_id, visible FROM vn2008.tmp_item; - CALL cache_calc_end (v_calc); - - DROP TEMPORARY TABLE vn2008.tmp_item; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `visible_refresh__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `visible_refresh__`(OUT v_calc INT, v_refresh BOOL, v_warehouse INT) -proc: BEGIN - -- bernat working in this file - DECLARE EXIT HANDLER FOR SQLEXCEPTION - BEGIN - CALL cache_calc_unlock (v_calc); - RESIGNAL; - END; - - CALL cache_calc_start (v_calc, v_refresh, 'visible', v_warehouse); - - IF !v_refresh THEN - LEAVE proc; - END IF; - - -- Calculamos el stock hasta ayer - - CALL `cache`.stock_refresh(false); - - DROP TEMPORARY TABLE IF EXISTS vn2008.tmp_item; - CREATE TEMPORARY TABLE vn2008.tmp_item - (PRIMARY KEY (item_id)) - ENGINE = MEMORY - SELECT item_id, amount stock, amount visible FROM `cache`.stock - WHERE warehouse_id = v_warehouse; - - -- Calculamos los movimientos confirmados de hoy - - CALL vn2008.item_stock_visible(v_warehouse, NULL); - - DELETE FROM visible WHERE calc_id = v_calc; - INSERT INTO visible (calc_id, item_id,visible) SELECT v_calc, item_id, visible FROM vn2008.tmp_item; @@ -8843,7 +7470,7 @@ DELIMITER ; -- Current Database: `edi` -- -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `edi` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `edi` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci */; USE `edi`; @@ -8857,21 +7484,21 @@ DROP TABLE IF EXISTS `PriceDetails`; CREATE TABLE `PriceDetails` ( `ID` int(11) NOT NULL, `SuplyResponseID` int(11) NOT NULL, - `PriceType` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `Location` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `PriceType` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `Location` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `Price` decimal(10,2) DEFAULT NULL, `BasisQuantitiy` int(11) DEFAULT NULL, - `BasisQuantityType` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `BasisQuantityType` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `MinimumQuantity` int(11) DEFAULT NULL, - `MinimumQuantityType` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `MinimumQuantityType` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `MaximumQuantity Integer` int(11) DEFAULT NULL, - `MaximumQuantityType` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `MaximumQuantityType` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `LatestDeliveryDateTime` datetime DEFAULT NULL, `EarliestDespatchDateTime` datetime DEFAULT NULL, `FirstOrderDateTime` datetime DEFAULT NULL, `LatestOrderDateTime` datetime DEFAULT NULL, PRIMARY KEY (`ID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8883,31 +7510,31 @@ DROP TABLE IF EXISTS `VMPSettings`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `VMPSettings` ( `VMPID` int(11) NOT NULL, - `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `isEktSender` tinyint(4) NOT NULL DEFAULT '0', + `name` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isEktSender` tinyint(4) NOT NULL DEFAULT 0, `MessageID` int(11) NOT NULL, `dateTimeTry` timestamp NULL DEFAULT NULL, `isVmpBA` tinyint(4) DEFAULT NULL COMMENT 'Basic authentication', `vmpVersion` int(11) DEFAULT NULL, - `vmpUrl` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `loginName` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, - `loginPassword` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, + `vmpUrl` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `loginName` varchar(150) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `loginPassword` varchar(150) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `refreshRate` int(11) DEFAULT NULL, - `eanBuyer` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `eanSupplier` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `eanAgent` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `eanBuyer` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `eanSupplier` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `eanAgent` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `dateTimeLastSync` timestamp NULL DEFAULT NULL, `closedFrom` int(11) DEFAULT NULL, `closedTo` int(11) DEFAULT NULL, `totalRefreshHours` int(11) DEFAULT NULL COMMENT 'Numero > 4 para no saturar, no repetir para que no solapen las actualizaciones', - `UseSupplierEmbalageCode` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'vmp you want to see their embalage code', + `UseSupplierEmbalageCode` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'vmp you want to see their embalage code', `firstSupplyResponseId` int(11) DEFAULT NULL, `ApiId` int(11) DEFAULT NULL, - `ApiKey` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `isBlocked` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'product source not allowed', - `isVNHSupplier` tinyint(1) DEFAULT '0' COMMENT 'The account belongs to VNH', + `ApiKey` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isBlocked` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'product source not allowed', + `isVNHSupplier` tinyint(1) DEFAULT 0 COMMENT 'The account belongs to VNH', PRIMARY KEY (`VMPID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8920,7 +7547,7 @@ DROP TABLE IF EXISTS `bucket`; CREATE TABLE `bucket` ( `bucket_id` int(11) unsigned NOT NULL, `bucket_type_id` mediumint(8) unsigned NOT NULL, - `description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, `x_size` mediumint(8) unsigned NOT NULL COMMENT 'mm', `y_size` mediumint(8) unsigned NOT NULL COMMENT 'mm', `z_size` mediumint(8) unsigned NOT NULL COMMENT 'mm', @@ -8930,7 +7557,7 @@ CREATE TABLE `bucket` ( PRIMARY KEY (`bucket_id`), KEY `group_id` (`y_size`), KEY `plant_id` (`x_size`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/VBN020101/CK090916.txt'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='/tmp/floricode/VBN020101/CK090916.txt'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8942,12 +7569,12 @@ DROP TABLE IF EXISTS `bucket_type`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `bucket_type` ( `bucket_type_id` mediumint(8) unsigned NOT NULL, - `description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, `entry_date` date DEFAULT NULL, `expiry_date` date DEFAULT NULL, `change_date_time` datetime DEFAULT NULL, PRIMARY KEY (`bucket_type_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/VBN020101/FB090916.txt'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='/tmp/floricode/VBN020101/FB090916.txt'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8963,7 +7590,7 @@ CREATE TABLE `clientFHAdminNumber` ( PRIMARY KEY (`clientFk`), KEY `clientFHAdminNumber_fk_idx` (`fhAdminNumber`), CONSTRAINT `clientFHAdminNumber_fk` FOREIGN KEY (`fhAdminNumber`) REFERENCES `vn`.`company` (`fhAdminNumber`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8975,8 +7602,8 @@ DROP TABLE IF EXISTS `deliveryInformation`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `deliveryInformation` ( `ID` int(11) NOT NULL AUTO_INCREMENT, - `DeliveryType` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `Location` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `DeliveryType` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `Location` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `DeliveryPrice` decimal(10,2) DEFAULT NULL, `ChargeAmount` decimal(10,2) DEFAULT NULL, `BasisQuantitiy` int(11) DEFAULT NULL, @@ -8987,15 +7614,15 @@ CREATE TABLE `deliveryInformation` ( `FirstOrderDateTime` datetime DEFAULT NULL, `LatestOrderDateTime` datetime DEFAULT NULL, `supplyResponseID` int(11) DEFAULT NULL, - `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `updated` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`ID`), - UNIQUE KEY `deliveryInformation_UN` (`Location`,`LatestDeliveryDateTime`,`FirstOrderDateTime`,`LatestOrderDateTime`,`supplyResponseID`), + UNIQUE KEY `deliveryInformation_UN` (`Location`,`LatestDeliveryDateTime`,`FirstOrderDateTime`,`LatestOrderDateTime`,`supplyResponseID`,`DeliveryType`) USING HASH, KEY `fgbSupplyResponse_idx` (`supplyResponseID`), KEY `fgbSupplyResponse_idx2` (`FirstOrderDateTime`), KEY `fgbSupplyResponse_idx3` (`LatestOrderDateTime`) USING BTREE, KEY `deliveryInformation_updated_IDX` (`updated`) USING BTREE, CONSTRAINT `fgbSupplyResponse` FOREIGN KEY (`supplyResponseID`) REFERENCES `supplyResponse` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9006,15 +7633,15 @@ DROP TABLE IF EXISTS `di`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `di` ( - `ID` int(11) NOT NULL DEFAULT '0', - `Location` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ID` int(11) NOT NULL DEFAULT 0, + `Location` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `LatestDeliveryDateTime` datetime DEFAULT NULL, `FirstOrderDateTime` datetime DEFAULT NULL, `LatestOrderDateTime` datetime DEFAULT NULL, `supplyResponseID` int(11) DEFAULT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `di_UN` (`Location`,`LatestDeliveryDateTime`,`FirstOrderDateTime`,`LatestOrderDateTime`,`supplyResponseID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9025,45 +7652,49 @@ DROP TABLE IF EXISTS `ekt`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ekt` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `barcode` char(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `entryYear` smallint(5) unsigned NOT NULL, - `deliveryNumber` bigint(20) unsigned DEFAULT NULL, - `fec` date DEFAULT NULL, - `hor` time DEFAULT NULL, - `now` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `ptj` mediumint(8) unsigned DEFAULT NULL, - `ref` int(11) NOT NULL, - `item` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `pac` int(11) DEFAULT '0', - `qty` int(10) NOT NULL, - `ori` varchar(3) COLLATE utf8_unicode_ci DEFAULT 'NL', - `cat` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, - `agj` int(11) DEFAULT NULL, - `kop` int(11) DEFAULT NULL, - `ptd` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `sub` mediumint(8) unsigned DEFAULT NULL, - `pro` mediumint(8) unsigned NOT NULL, - `pri` double NOT NULL, - `package` int(10) unsigned DEFAULT NULL, - `auction` smallint(5) unsigned DEFAULT NULL, - `klo` smallint(5) unsigned DEFAULT NULL, - `k1` smallint(5) unsigned DEFAULT NULL, - `k2` smallint(5) unsigned DEFAULT NULL, - `k3` tinyint(3) unsigned DEFAULT NULL, - `k4` tinyint(3) unsigned DEFAULT NULL, - `s1` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `s2` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `s3` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `s4` varchar(4) COLLATE utf8_unicode_ci DEFAULT NULL, - `s5` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `s6` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `ok` tinyint(4) NOT NULL DEFAULT '0', + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Id', + `barcode` char(25) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'Generated auction barcode', + `entryYear` smallint(5) unsigned NOT NULL COMMENT 'Transaction year', + `batchNumber` bigint(20) unsigned DEFAULT NULL COMMENT 'RFF+BT', + `deliveryNumber` bigint(20) unsigned DEFAULT NULL COMMENT 'RFF+AAJ', + `vendorOrderNumber` bigint(20) unsigned DEFAULT NULL COMMENT 'RFF+VN', + `fec` date DEFAULT NULL COMMENT 'DTM+97', + `hor` time DEFAULT NULL COMMENT 'UNB', + `util.VN_NOW` timestamp NULL DEFAULT current_timestamp() COMMENT 'Creation time', + `ptj` bigint(20) unsigned DEFAULT NULL COMMENT 'NAD+BY', + `ref` int(11) NOT NULL COMMENT 'LIN', + `item` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'IMD+S99', + `pac` int(11) DEFAULT 0 COMMENT 'QTY+52', + `qty` int(10) NOT NULL COMMENT 'QTY+66', + `ori` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT 'NL' COMMENT 'IMD+S62', + `cat` varchar(2) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'IMD+S98', + `agj` int(11) DEFAULT NULL COMMENT 'RFF+AGJ', + `kop` int(11) DEFAULT NULL COMMENT 'RFF+ADZ', + `ptd` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'RFF+ACE', + `sub` mediumint(8) unsigned DEFAULT NULL COMMENT 'RFF+CTS', + `pro` mediumint(8) unsigned NOT NULL COMMENT 'NAD+MF', + `pri` double NOT NULL COMMENT 'PRI+INV', + `package` int(10) unsigned DEFAULT NULL COMMENT 'PAC', + `auction` smallint(5) unsigned DEFAULT NULL COMMENT 'NAD+FLA', + `klo` smallint(5) unsigned DEFAULT NULL COMMENT 'RFF+FAC', + `k1` smallint(5) unsigned DEFAULT NULL COMMENT 'IMD+K01', + `k2` smallint(5) unsigned DEFAULT NULL COMMENT 'IMD+K02', + `k3` tinyint(3) unsigned DEFAULT NULL COMMENT 'IMD+P01', + `k4` tinyint(3) unsigned DEFAULT NULL COMMENT 'IMD+P02', + `s1` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `s2` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `s3` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `s4` varchar(4) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `s5` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `s6` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ok` tinyint(4) NOT NULL DEFAULT 0, `trolleyFk` int(11) DEFAULT NULL, - `putOrderFk` bigint(20) unsigned DEFAULT NULL, - `scanned` tinyint(1) NOT NULL DEFAULT '0', + `putOrderFk` bigint(20) unsigned DEFAULT NULL COMMENT 'RFF+ON', + `scanned` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Whether it''s been scanned', + `cps` varchar(7) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'Código alfanumérico de Floriday', + `dp` bigint(20) unsigned DEFAULT NULL COMMENT 'NAD+DP', + `sender` bigint(20) unsigned DEFAULT NULL COMMENT 'NAD+SE', PRIMARY KEY (`id`) USING BTREE, - UNIQUE KEY `barcode_year` (`barcode`,`entryYear`), UNIQUE KEY `entry_year` (`deliveryNumber`,`entryYear`) USING BTREE, KEY `ref` (`ref`), KEY `ptj` (`ptj`), @@ -9071,8 +7702,27 @@ CREATE TABLE `ekt` ( KEY `kop` (`kop`), KEY `barcode` (`barcode`), KEY `fec` (`fec`), - KEY `putOrderFk` (`putOrderFk`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + KEY `putOrderFk` (`putOrderFk`), + KEY `ekt_batchNumber` (`batchNumber`) USING BTREE, + KEY `ekt_vendorOrderNumber` (`vendorOrderNumber`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `ektConfig` +-- + +DROP TABLE IF EXISTS `ektConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ektConfig` ( + `usefulAuctionLeftSegmentLength` int(11) NOT NULL DEFAULT 13 COMMENT 'Segmento aprovechable del codigo de barras de Floricode', + `standardBarcodeLength` int(11) NOT NULL DEFAULT 20 COMMENT 'Longitud del código de barras standard de Floricode', + `floridayBarcodeLength` int(11) NOT NULL DEFAULT 6, + `floramondoBarcodeLength` int(11) NOT NULL DEFAULT 13 COMMENT 'Longitud del código de los albaranes múltiples de Floramondo', + `defaultKlo` int(11) NOT NULL DEFAULT 99 COMMENT 'Reloj por defecto', + `ektRecentScopeDays` int(11) NOT NULL DEFAULT 7 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9092,9 +7742,69 @@ CREATE TABLE `ektEntryAssign__` ( `supplierFk` int(11) DEFAULT NULL, `entryFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='define las condiciones para asignar entradas a los ekt'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='define las condiciones para asignar entradas a los ekt'; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Temporary table structure for view `ektRecent` +-- + +DROP TABLE IF EXISTS `ektRecent`; +/*!50001 DROP VIEW IF EXISTS `ektRecent`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `ektRecent` ( + `id` tinyint NOT NULL, + `barcode` tinyint NOT NULL, + `entryYear` tinyint NOT NULL, + `batchNumber` tinyint NOT NULL, + `deliveryNumber` tinyint NOT NULL, + `vendorOrderNumber` tinyint NOT NULL, + `fec` tinyint NOT NULL, + `hor` tinyint NOT NULL, + `util.VN_NOW` tinyint NOT NULL, + `ptj` tinyint NOT NULL, + `ref` tinyint NOT NULL, + `item` tinyint NOT NULL, + `pac` tinyint NOT NULL, + `qty` tinyint NOT NULL, + `ori` tinyint NOT NULL, + `cat` tinyint NOT NULL, + `agj` tinyint NOT NULL, + `kop` tinyint NOT NULL, + `ptd` tinyint NOT NULL, + `sub` tinyint NOT NULL, + `pro` tinyint NOT NULL, + `pri` tinyint NOT NULL, + `package` tinyint NOT NULL, + `auction` tinyint NOT NULL, + `klo` tinyint NOT NULL, + `k1` tinyint NOT NULL, + `k2` tinyint NOT NULL, + `k3` tinyint NOT NULL, + `k4` tinyint NOT NULL, + `s1` tinyint NOT NULL, + `s2` tinyint NOT NULL, + `s3` tinyint NOT NULL, + `s4` tinyint NOT NULL, + `s5` tinyint NOT NULL, + `s6` tinyint NOT NULL, + `ok` tinyint NOT NULL, + `trolleyFk` tinyint NOT NULL, + `putOrderFk` tinyint NOT NULL, + `scanned` tinyint NOT NULL, + `cps` tinyint NOT NULL, + `dp` tinyint NOT NULL, + `sender` tinyint NOT NULL, + `usefulAuctionLeftSegmentLength` tinyint NOT NULL, + `standardBarcodeLength` tinyint NOT NULL, + `floridayBarcodeLength` tinyint NOT NULL, + `floramondoBarcodeLength` tinyint NOT NULL, + `defaultKlo` tinyint NOT NULL, + `ektRecentScopeDays` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + -- -- Temporary table structure for view `errorList` -- @@ -9135,7 +7845,7 @@ CREATE TABLE `exchange` ( KEY `buy_edi_id` (`ektFk`), CONSTRAINT `exchange_ibfk_1` FOREIGN KEY (`mailFk`) REFERENCES `mail` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `exchange_ibfk_2` FOREIGN KEY (`ektFk`) REFERENCES `ekt` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9147,14 +7857,14 @@ DROP TABLE IF EXISTS `exchangeConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `exchangeConfig` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, - `logMail` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Mail where the log information is sent', + `logMail` varchar(150) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'Mail where the log information is sent', `restrictToSenders` tinyint(4) NOT NULL COMMENT 'Whether to process mails only from known senders', `presaleFk` mediumint(8) unsigned DEFAULT NULL, `defaultKop` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`), KEY `presale_id` (`presaleFk`), CONSTRAINT `exchangeConfig_ibfk_1` FOREIGN KEY (`presaleFk`) REFERENCES `exchangeType` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Configuration parameters'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Configuration parameters'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9166,9 +7876,9 @@ DROP TABLE IF EXISTS `exchangeType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `exchangeType` ( `id` mediumint(8) unsigned NOT NULL, - `description` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9180,14 +7890,14 @@ DROP TABLE IF EXISTS `feature`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `feature` ( `item_id` int(11) unsigned NOT NULL, - `feature_type_id` varchar(3) COLLATE utf8_unicode_ci NOT NULL, - `feature_value` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `feature_type_id` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, + `feature_value` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, `entry_date` date NOT NULL, `expiry_date` date NOT NULL, `change_date_time` datetime NOT NULL, PRIMARY KEY (`item_id`,`feature_type_id`), KEY `feature_ix1` (`feature_value`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FF130916.txt'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='/tmp/floricode/florecompc2/FF130916.txt'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9198,13 +7908,12 @@ DROP TABLE IF EXISTS `fileConfig`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `fileConfig` ( - `fileName` varchar(2) COLLATE utf8_unicode_ci NOT NULL, - `toTable` varchar(15) COLLATE utf8_unicode_ci NOT NULL, - `file` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `updated` date DEFAULT NULL, - PRIMARY KEY (`fileName`), - UNIQUE KEY `to_table` (`toTable`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + `name` varchar(25) COLLATE utf8mb3_unicode_ci NOT NULL, + `checksum` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `keyValue` tinyint(1) NOT NULL DEFAULT 1, + PRIMARY KEY (`name`), + UNIQUE KEY `fileConfig_name_uindex` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9215,8 +7924,9 @@ DROP TABLE IF EXISTS `floraHollandConfig`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `floraHollandConfig` ( - `defaultAdminNumber` int(11) NOT NULL DEFAULT '66011' -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + `defaultAdminNumber` int(11) NOT NULL DEFAULT 66011, + `floramondoMargin` decimal(10,2) NOT NULL DEFAULT 0.17 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9228,11 +7938,11 @@ DROP TABLE IF EXISTS `ftpConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ftpConfig` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, - `host` varchar(255) CHARACTER SET utf8 NOT NULL, - `user` varchar(50) CHARACTER SET utf8 NOT NULL, - `password` varchar(50) CHARACTER SET utf8 NOT NULL, + `host` varchar(255) CHARACTER SET utf8mb3 NOT NULL, + `user` varchar(50) CHARACTER SET utf8mb3 NOT NULL, + `password` varchar(50) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Configuration parameters'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Configuration parameters'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9244,13 +7954,13 @@ DROP TABLE IF EXISTS `genus`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `genus` ( `genus_id` mediumint(8) unsigned NOT NULL, - `latin_genus_name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `latin_genus_name` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, `entry_date` date DEFAULT NULL, `expiry_date` date DEFAULT NULL, `change_date_time` datetime DEFAULT NULL, - `isHazard` tinyint(1) NOT NULL DEFAULT '0', + `isHazard` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (`genus_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FG130916.txt'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='/tmp/floricode/florecompc2/FG130916.txt'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9261,11 +7971,11 @@ DROP TABLE IF EXISTS `goodCharacteristic`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `goodCharacteristic` ( - `supplyResponse` varchar(26) COLLATE utf8_unicode_ci NOT NULL, - `type` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'edi.type', - `value` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'edi.value', + `supplyResponse` varchar(26) COLLATE utf8mb3_unicode_ci NOT NULL, + `type` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'edi.type', + `value` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'edi.value', PRIMARY KEY (`supplyResponse`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9277,14 +7987,16 @@ DROP TABLE IF EXISTS `imapConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `imapConfig` ( `id` tinyint(3) unsigned NOT NULL, - `host` varchar(150) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'localhost', - `user` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `pass` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `cleanPeriod` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'How long the old mails are preserved', - `successFolder` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, - `errorFolder` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='IMAP configuration parameters'; + `environment` varchar(45) CHARACTER SET utf8mb3 NOT NULL, + `host` varchar(150) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'localhost', + `user` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `pass` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `cleanPeriod` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'How long the old mails are preserved', + `successFolder` varchar(150) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `errorFolder` varchar(150) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `imapConfig_environment` (`environment`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='IMAP configuration parameters'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9296,8 +8008,8 @@ DROP TABLE IF EXISTS `item`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `item` ( `id` int(11) unsigned NOT NULL, - `product_name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `product_name` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `name` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, `plant_id` mediumint(8) unsigned DEFAULT NULL, `group_id` int(11) unsigned DEFAULT NULL, `entry_date` date DEFAULT NULL, @@ -9306,7 +8018,7 @@ CREATE TABLE `item` ( PRIMARY KEY (`id`), KEY `group_id` (`group_id`), KEY `plant_id` (`plant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FP130916.txt'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='/tmp/floricode/florecompc2/FP130916.txt'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9321,7 +8033,7 @@ CREATE TABLE `item_defaultType` ( `itemTypeFk` int(11) NOT NULL, `bucket_id` int(11) DEFAULT NULL, PRIMARY KEY (`item_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='guarda las excepciones de los item holandeses para asignarles nuestros cubos y nuestros tipos'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='guarda las excepciones de los item holandeses para asignarles nuestros cubos y nuestros tipos'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9334,24 +8046,26 @@ DROP TABLE IF EXISTS `item_feature`; CREATE TABLE `item_feature` ( `item_id` int(11) NOT NULL, `presentation_order` tinyint(11) unsigned NOT NULL, - `feature` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `feature` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, `regulation_type` tinyint(3) unsigned NOT NULL, `entry_date` date NOT NULL, `expiry_date` date DEFAULT NULL, `change_date_time` datetime NOT NULL, PRIMARY KEY (`item_id`,`presentation_order`,`entry_date`,`change_date_time`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FY130916.txt'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='/tmp/floricode/florecompc2/FY130916.txt'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `item_feature_bi` BEFORE INSERT ON `item_feature` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `edi`.`item_feature_bi` + BEFORE INSERT ON `item_feature` + FOR EACH ROW BEGIN IF NEW.expiry_date = '0000-00-00' THEN SET NEW.expiry_date = NULL; @@ -9372,8 +8086,9 @@ DROP TABLE IF EXISTS `item_free`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `item_free` ( `id` int(11) NOT NULL, + `token` int(11) DEFAULT NULL COMMENT 'campo para asegurar que solo el usuario coge uno de los valores', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9385,12 +8100,12 @@ DROP TABLE IF EXISTS `item_group`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `item_group` ( `group_code` int(11) unsigned NOT NULL, - `dutch_group_description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `dutch_group_description` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, `entry_date` date NOT NULL, `expiry_date` date NOT NULL, `change_date_time` datetime NOT NULL, PRIMARY KEY (`group_code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FO130916.txt'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='/tmp/floricode/florecompc2/FO130916.txt'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9404,8 +8119,8 @@ CREATE TABLE `item_groupToOffer` ( `group_code` int(11) unsigned NOT NULL, `itemTypeFk` smallint(5) unsigned NOT NULL, `intrastatFk` int(8) unsigned zerofill NOT NULL, - `originFk` tinyint(2) unsigned NOT NULL DEFAULT '17', - `expenseFk` varchar(10) COLLATE utf8_unicode_ci DEFAULT '7001000000', + `originFk` tinyint(2) unsigned NOT NULL DEFAULT 17, + `expenseFk` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT '7001000000', PRIMARY KEY (`group_code`), KEY `item_groupToOffer_fk2_idx` (`itemTypeFk`), KEY `item_groupToOffer_fk3_idx` (`intrastatFk`), @@ -9413,7 +8128,7 @@ CREATE TABLE `item_groupToOffer` ( CONSTRAINT `item_groupToOffer_fk2` FOREIGN KEY (`itemTypeFk`) REFERENCES `vn`.`itemType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `item_groupToOffer_fk3` FOREIGN KEY (`intrastatFk`) REFERENCES `vn`.`intrastat` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `item_groupToOffer_fk4` FOREIGN KEY (`originFk`) REFERENCES `vn`.`origin` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='se ofreceran para ser comprados'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='se ofreceran para ser comprados'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9425,22 +8140,22 @@ DROP TABLE IF EXISTS `item_track`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `item_track` ( `item_id` int(10) unsigned NOT NULL, - `s1` tinyint(3) NOT NULL DEFAULT '0', - `s2` tinyint(3) NOT NULL DEFAULT '0', - `s3` tinyint(3) NOT NULL DEFAULT '0', - `s4` tinyint(3) NOT NULL DEFAULT '0', - `pac` tinyint(3) NOT NULL DEFAULT '0', - `cat` tinyint(3) NOT NULL DEFAULT '0', - `ori` tinyint(3) NOT NULL DEFAULT '0', - `pro` tinyint(3) NOT NULL DEFAULT '0', - `package` tinyint(3) NOT NULL DEFAULT '0', - `s5` tinyint(3) NOT NULL DEFAULT '0', - `s6` tinyint(3) NOT NULL DEFAULT '0', - `kop` tinyint(3) NOT NULL DEFAULT '0', - `sub` tinyint(3) NOT NULL DEFAULT '0', - `item` tinyint(3) NOT NULL DEFAULT '0', + `s1` tinyint(3) NOT NULL DEFAULT 0, + `s2` tinyint(3) NOT NULL DEFAULT 0, + `s3` tinyint(3) NOT NULL DEFAULT 0, + `s4` tinyint(3) NOT NULL DEFAULT 0, + `pac` tinyint(3) NOT NULL DEFAULT 0, + `cat` tinyint(3) NOT NULL DEFAULT 0, + `ori` tinyint(3) NOT NULL DEFAULT 0, + `pro` tinyint(3) NOT NULL DEFAULT 0, + `package` tinyint(3) NOT NULL DEFAULT 0, + `s5` tinyint(3) NOT NULL DEFAULT 0, + `s6` tinyint(3) NOT NULL DEFAULT 0, + `kop` tinyint(3) NOT NULL DEFAULT 0, + `sub` tinyint(3) NOT NULL DEFAULT 0, + `item` tinyint(3) NOT NULL DEFAULT 0, PRIMARY KEY (`item_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9452,12 +8167,12 @@ DROP TABLE IF EXISTS `log`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `log` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `tableName` varchar(100) COLLATE utf8_unicode_ci NOT NULL, - `fieldName` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `fieldValue` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `tableName` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + `fieldName` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fieldValue` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `created` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9470,16 +8185,17 @@ DROP TABLE IF EXISTS `mail`; CREATE TABLE `mail` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `senderFk` int(10) unsigned DEFAULT NULL, - `sender` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `messageId` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `sender` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `messageId` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `nExchanges` int(10) unsigned NOT NULL, - `error` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `error` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `source` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `mail_id` (`messageId`), KEY `sender_id` (`senderFk`), CONSTRAINT `mail_ibfk_2` FOREIGN KEY (`senderFk`) REFERENCES `mailSender` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9491,11 +8207,11 @@ DROP TABLE IF EXISTS `mailSender`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `mailSender` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `mail` varchar(150) COLLATE utf8_unicode_ci NOT NULL, + `mail` varchar(150) COLLATE utf8mb3_unicode_ci NOT NULL, `kop` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `mail` (`mail`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='List of allowed mailers'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='List of allowed mailers'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9506,18 +8222,18 @@ DROP TABLE IF EXISTS `marketPlace`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `marketPlace` ( - `id` varchar(13) COLLATE utf8_unicode_ci NOT NULL, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `supplierFk` int(11) NOT NULL DEFAULT '1433', - `isOffered` tinyint(2) NOT NULL DEFAULT '0', + `id` varchar(13) COLLATE utf8mb3_unicode_ci NOT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `supplierFk` int(11) NOT NULL DEFAULT 1433, + `isOffered` tinyint(2) NOT NULL DEFAULT 0, `MaxLatestDeliveryHour` int(11) DEFAULT NULL COMMENT 'Maxima hora para tener en cuenta la oferta', - `isLatestOrderDateTimeRelevant` tinyint(2) DEFAULT '0' COMMENT 'Se tiene en cuenta para calcular el próximo travel posible', - `isEarlyBird` tinyint(4) NOT NULL DEFAULT '0', + `isLatestOrderDateTimeRelevant` tinyint(2) DEFAULT 0 COMMENT 'Se tiene en cuenta para calcular el próximo travel posible', + `isEarlyBird` tinyint(4) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `marketPlaceisOfferedIdx` (`isOffered`), KEY `marketPlaceMaxLatestIdx` (`MaxLatestDeliveryHour`), KEY `marketPlace_isLatestOrderDateTimeRelevant_IDX` (`isLatestOrderDateTimeRelevant`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9528,13 +8244,13 @@ DROP TABLE IF EXISTS `offerList`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `offerList` ( - `supplier` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `supplier` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, `total` int(11) DEFAULT NULL COMMENT 'Total de oferta', `filter` int(11) DEFAULT NULL COMMENT 'Total en edi.supplyOffer', `vnh` int(11) DEFAULT NULL COMMENT 'Total en la entrada de VNH', `algemesi` int(11) DEFAULT NULL COMMENT 'Total en la entrada de Algemesi', PRIMARY KEY (`supplier`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Lista de las ofertas para mostrar en grafana'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Lista de las ofertas para mostrar en grafana'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9546,15 +8262,16 @@ DROP TABLE IF EXISTS `param`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `param` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, - `code` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `name` varchar(5) COLLATE utf8_unicode_ci NOT NULL, - `subname` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, - `position` tinyint(3) unsigned NOT NULL DEFAULT '1', - `type` enum('INTEGER','DOUBLE','STRING','DATE','TIME') COLLATE utf8_unicode_ci NOT NULL, - `required` tinyint(3) unsigned NOT NULL DEFAULT '1', + `code` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `name` varchar(5) COLLATE utf8mb3_unicode_ci NOT NULL, + `subname` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `position` tinyint(3) unsigned NOT NULL DEFAULT 1, + `type` enum('INTEGER','DOUBLE','STRING','DATE','TIME') COLLATE utf8mb3_unicode_ci NOT NULL, + `required` tinyint(3) unsigned NOT NULL DEFAULT 1, PRIMARY KEY (`id`), + UNIQUE KEY `code` (`code`), UNIQUE KEY `name` (`name`,`subname`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Parameters to capture of every exchange'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Parameters to capture of every exchange'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9572,7 +8289,7 @@ CREATE TABLE `plant` ( `expiry_date` date DEFAULT NULL, `change_date_time` datetime DEFAULT NULL, PRIMARY KEY (`plant_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FT130916.txt'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='/tmp/floricode/florecompc2/FT130916.txt'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9587,38 +8304,43 @@ CREATE TABLE `putOrder` ( `deliveryInformationID` int(11) DEFAULT NULL, `supplyResponseID` int(11) DEFAULT NULL, `orderTradelineItemID` int(11) DEFAULT NULL COMMENT 'ticketFk or EntryFk?', - `OrderTradeLineDateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'fecha de creacion en la tabla', + `OrderTradeLineDateTime` timestamp NOT NULL DEFAULT current_timestamp() COMMENT 'fecha de creacion en la tabla', `quantity` int(11) DEFAULT NULL, - `EndUserPartyID` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `EndUserPartyGLN` varchar(13) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The grower can use this reference in his EKT in the NAD (MA) segment.', - `OrderStatus` int(11) DEFAULT '0' COMMENT '1 pending\n2 confirmed\n3 canceled', + `EndUserPartyID` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `EndUserPartyGLN` varchar(13) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'The grower can use this reference in his EKT in the NAD (MA) segment.', + `OrderStatus` int(11) DEFAULT 0 COMMENT '1 pending\n2 confirmed\n3 canceled', `isOrderProcessed` tinyint(4) DEFAULT NULL, - `error` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `barcode` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `FHAdminNumber` int(11) DEFAULT '66011', + `error` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `barcode` varchar(25) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `FHAdminNumber` int(11) DEFAULT 66011, + `saleFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `orderTradelineItemID_UNIQUE` (`orderTradelineItemID`), KEY `deliveryInformationID_idx` (`deliveryInformationID`), - KEY `supplyResponseID_idx` (`supplyResponseID`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + KEY `supplyResponseID_idx` (`supplyResponseID`), + KEY `putOrder_FK` (`saleFk`), + CONSTRAINT `putOrder_FK` FOREIGN KEY (`saleFk`) REFERENCES `vn`.`sale` (`id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `edi`.`putOrder_BEFORE_INSERT` BEFORE INSERT ON `putOrder` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `edi`.`putOrder_BEFORE_INSERT` + BEFORE INSERT ON `putOrder` + FOR EACH ROW BEGIN DECLARE nextID INT; - + SELECT 1 + MAX(id) INTO nextID FROM putOrder ; - + SET NEW.orderTradelineItemID = nextID; END */;; @@ -9630,46 +8352,46 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `BEFORE UPDATE` -BEFORE UPDATE -ON putOrder FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `edi`.`BEFORE UPDATE` + BEFORE UPDATE ON `putOrder` + FOR EACH ROW BEGIN - + DECLARE vError VARCHAR(100) DEFAULT 'Orderregel niet meer teruggevonden op basis van de orderps'; DECLARE vVmpIdError INT DEFAULT 7; DECLARE vVmpFk INT; DECLARE vSupplyResponseNumberOfUnits INT; - - SELECT sr.vmpID INTO vVmpFk - FROM edi.supplyResponse sr + + SELECT sr.vmpID INTO vVmpFk + FROM edi.supplyResponse sr WHERE sr.id = NEW.supplyResponseID; - - IF NEW.OrderStatus = 3 - AND NOT (NEW.OrderStatus <=> OLD.OrderStatus) - AND NEW.error = vError - AND vVmpFk = vVmpIdError - - THEN - + + IF NEW.OrderStatus = 3 + AND NOT (NEW.OrderStatus <=> OLD.OrderStatus) + AND NEW.error = vError + AND vVmpFk = vVmpIdError + + THEN + SET NEW.OrderStatus = 2; - + END IF; - + -- Error de disponible menor de lo solicitado IF NEW.error LIKE 'error2602%' THEN - + SELECT NumberOfUnits INTO vSupplyResponseNumberOfUnits - FROM edi.supplyResponse sr + FROM edi.supplyResponse sr WHERE sr.ID = NEW.supplyResponseID; - + SET NEW.error = CONCAT('(',vSupplyResponseNumberOfUnits,') ', NEW.error); - + END IF; END */;; DELIMITER ; @@ -9680,42 +8402,40 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `edi`.`putOrder_AFTER_UPDATE` AFTER UPDATE ON `putOrder` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `edi`.`putOrder_AFTER_UPDATE` + AFTER UPDATE ON `putOrder` + FOR EACH ROW BEGIN DECLARE vSaleFk INT; - DECLARE vOrderStatusDenied INT DEFAULT 3; - DECLARE vOrderStatusOK INT DEFAULT 2; - DECLARE vIsEktSender BOOLEAN; - - - -- CALL util.debugAdd(NEW.OrderStatus, OLD.OrderStatus); - - + DECLARE vOrderStatusDenied INT DEFAULT 3; + DECLARE vOrderStatusOK INT DEFAULT 2; + DECLARE vIsEktSender BOOLEAN; + IF NEW.OrderStatus = vOrderStatusDenied AND NOT (NEW.OrderStatus <=> OLD.OrderStatus) THEN - + SELECT s.id INTO vSaleFk - FROM vn.sale s + FROM vn.sale s JOIN vn.ticket t ON s.ticketFk = t.id JOIN vn.item i ON i.id = s.itemFk JOIN deliveryInformation di ON di.ID = NEW.deliveryInformationID - WHERE t.clientFk = NEW.EndUserPartyGLN AND t.shipped >= CURDATE() + WHERE t.clientFk = NEW.EndUserPartyGLN AND t.shipped >= util.VN_CURDATE() AND i.supplyResponseFk = NEW.supplyResponseID LIMIT 1; - + UPDATE vn.sale s JOIN vn.ticket t ON s.ticketFk = t.id JOIN vn.item i ON i.id = s.itemFk JOIN deliveryInformation di ON di.ID = NEW.deliveryInformationID SET s.quantity = 0 - WHERE t.clientFk = NEW.EndUserPartyGLN AND t.shipped >= CURDATE() + WHERE t.clientFk = NEW.EndUserPartyGLN AND t.shipped >= util.VN_CURDATE() AND i.supplyResponseFk = NEW.supplyResponseID; - + INSERT INTO vn.mail (sender, `subject`, body) SELECT IF(u.id IS NOT NULL AND c.email IS NOT NULL, c.email, @@ -9727,39 +8447,39 @@ BEGIN IF (u.id IS NOT NULL AND c.email IS NOT NULL , CONCAT('https://verdnatura.es/#!form=ecomerce%2Fticket&ticket=', t.id ), CONCAT('https://salix.verdnatura.es/#!/ticket/', t.id ,'/summary'))) - FROM vn.sale s - JOIN vn.ticket t ON t.id = s.ticketFk - JOIN vn.`client` c ON c.id = t.clientFk - LEFT JOIN account.user u ON u.id= c.salesPersonFk AND u.name IN ('ruben', 'ismaelalcolea') - WHERE s.id = vSaleFk; - + FROM vn.sale s + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.`client` c ON c.id = t.clientFk + LEFT JOIN account.user u ON u.id= c.salesPersonFk AND u.name IN ('ruben', 'ismaelalcolea') + WHERE s.id = vSaleFk; + END IF; IF NEW.OrderStatus = vOrderStatusOK AND NOT (NEW.OrderStatus <=> OLD.OrderStatus) THEN - - SELECT v.isEktSender INTO vIsEktSender - FROM edi.VMPSettings v - JOIN edi.supplyResponse sr ON sr.vmpID = v.VMPID - WHERE sr.id = NEW.supplyResponseID; - - IF NOT vIsEktSender THEN - - CALL edi.ekt_add(NEW.id); - - END IF; - - IF NEW.barcode THEN - - INSERT IGNORE INTO vn.itemBarcode(itemFk, code) - SELECT i.id, NEW.barcode - FROM vn.item i - WHERE i.supplyResponseFk = NEW.supplyResponseID; - - END IF; - - END IF; - + + SELECT v.isEktSender INTO vIsEktSender + FROM edi.VMPSettings v + JOIN edi.supplyResponse sr ON sr.vmpID = v.VMPID + WHERE sr.id = NEW.supplyResponseID; + + IF NOT vIsEktSender THEN + + CALL edi.ekt_add(NEW.id); + + END IF; + + IF NEW.barcode THEN + + INSERT IGNORE INTO vn.itemBarcode(itemFk, code) + SELECT i.id, NEW.barcode + FROM vn.item i + WHERE i.supplyResponseFk = NEW.supplyResponseID; + + END IF; + + END IF; + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -9777,12 +8497,12 @@ DROP TABLE IF EXISTS `specie`; CREATE TABLE `specie` ( `specie_id` mediumint(8) unsigned NOT NULL, `genus_id` mediumint(8) unsigned NOT NULL, - `latin_species_name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `latin_species_name` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, `entry_date` date DEFAULT NULL, `expiry_date` date DEFAULT NULL, `change_date_time` datetime DEFAULT NULL, PRIMARY KEY (`specie_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FS130916.txt'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='/tmp/floricode/florecompc2/FS130916.txt'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9794,19 +8514,74 @@ DROP TABLE IF EXISTS `supplier`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `supplier` ( `supplier_id` int(10) unsigned NOT NULL COMMENT 'FHRegistrationNr', - `glnAddressCode` varchar(13) COLLATE utf8_unicode_ci DEFAULT NULL, - `company_name` varchar(70) COLLATE utf8_unicode_ci NOT NULL, + `glnAddressCode` varchar(13) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `company_name` varchar(70) COLLATE utf8mb3_unicode_ci NOT NULL, `entry_date` date NOT NULL, `expiry_date` date NOT NULL, `change_date_time` datetime NOT NULL, - `isAllowedDirectSales` tinyint(1) NOT NULL DEFAULT '0', - `isBanned` tinyint(1) NOT NULL DEFAULT '0', + `isAllowedDirectSales` tinyint(1) NOT NULL DEFAULT 0, + `isBanned` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (`supplier_id`), UNIQUE KEY `supplier_UN` (`glnAddressCode`), KEY `glnaddressCodeidx` (`glnAddressCode`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/FEC010104/CC090916.txt'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='/tmp/floricode/FEC010104/CC090916.txt'; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Temporary table structure for view `supplyOffer` +-- + +DROP TABLE IF EXISTS `supplyOffer`; +/*!50001 DROP VIEW IF EXISTS `supplyOffer`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `supplyOffer` ( + `vmpID` tinyint NOT NULL, + `diId` tinyint NOT NULL, + `srId` tinyint NOT NULL, + `Item_ArticleCode` tinyint NOT NULL, + `product_name` tinyint NOT NULL, + `company_name` tinyint NOT NULL, + `Price` tinyint NOT NULL, + `Quality` tinyint NOT NULL, + `s1` tinyint NOT NULL, + `s2` tinyint NOT NULL, + `s3` tinyint NOT NULL, + `s4` tinyint NOT NULL, + `s5` tinyint NOT NULL, + `s6` tinyint NOT NULL, + `NumberOfUnits` tinyint NOT NULL, + `EmbalageCode` tinyint NOT NULL, + `LatestDeliveryDateTime` tinyint NOT NULL, + `EarliestDespatchDateTime` tinyint NOT NULL, + `FirstOrderDateTime` tinyint NOT NULL, + `LatestOrderDateTime` tinyint NOT NULL, + `NumberOfItemsPerCask` tinyint NOT NULL, + `NumberOfLayersPerTrolley` tinyint NOT NULL, + `MinimumNumberToOrder` tinyint NOT NULL, + `MaximumNumberToOrder` tinyint NOT NULL, + `IncrementalOrderableQuantity` tinyint NOT NULL, + `PackingPrice` tinyint NOT NULL, + `MarketPlaceID` tinyint NOT NULL, + `PictureReference` tinyint NOT NULL, + `supplyResponseUpdated` tinyint NOT NULL, + `group_id` tinyint NOT NULL, + `marketPlace` tinyint NOT NULL, + `DeliveryPrice` tinyint NOT NULL, + `ChargeAmount` tinyint NOT NULL, + `MinimumQuantity` tinyint NOT NULL, + `MaximumQuantity` tinyint NOT NULL, + `OrderUnit` tinyint NOT NULL, + `IncrementalOrderUnit` tinyint NOT NULL, + `isEarlyBird` tinyint NOT NULL, + `isVNHSupplier` tinyint NOT NULL, + `expenseFk` tinyint NOT NULL, + `intrastatFk` tinyint NOT NULL, + `originFk` tinyint NOT NULL, + `itemTypeFk` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + -- -- Table structure for table `supplyResponse` -- @@ -9817,60 +8592,60 @@ DROP TABLE IF EXISTS `supplyResponse`; CREATE TABLE `supplyResponse` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `NumberBunchesPerCask` int(11) DEFAULT NULL, - `SupplierGLN` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `SupplierGLN` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `NewItem` tinyint(1) DEFAULT NULL, - `SendererID` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ItemSupplierID` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `SendererID` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ItemSupplierID` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `TransactionDate` datetime DEFAULT NULL, - `TransactionNumber` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `AuctionClockNumber` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `SupplierID` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `TransactionNumber` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `AuctionClockNumber` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `SupplierID` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `ItemDatesupplyResponsecol` datetime DEFAULT NULL, `Item_ArticleCode` int(11) DEFAULT NULL, - `VBNOmschrijving` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ExtraRemark` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ArtCodeType` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `VBNGroupCode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `VBNGroupDescription` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `VBNOmschrijving` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ExtraRemark` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ArtCodeType` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `VBNGroupCode` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `VBNGroupDescription` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `TransactionTime` time DEFAULT NULL, - `CountryOfOrigin` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `CountryOfOrigin` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `NumberOfItemsPerCask` int(11) DEFAULT NULL, `NumberOfLayersPerTrolley` int(11) DEFAULT NULL, `NumberOfUnits` int(11) DEFAULT NULL, `MinimumNumberToOrder` int(11) DEFAULT NULL, - `MinimumOrderUnitType` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `MinimumOrderUnitType` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `Price` decimal(10,2) DEFAULT NULL, - `Quality` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `s1` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `s2` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `s3` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `s4` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `s5` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `s6` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `ExaminiationCode1` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ExaminiationCode2` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `OrderUnitType` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `Quality` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `s1` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `s2` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `s3` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `s4` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `s5` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `s6` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ExaminiationCode1` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ExaminiationCode2` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `OrderUnitType` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `EmbalageCode` int(11) DEFAULT NULL, - `PictureReference` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `AgentGLN` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `PictureReference` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `AgentGLN` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `MaximumNumberToOrder` int(11) DEFAULT NULL, `MaximumOrderType` tinyint(1) DEFAULT NULL COMMENT 'Unit: 1 = piece, 2 = bunch, 3 = box, 4 = layer, 5 = load carrier/trolley', `IncrementalOrderableQuantity` int(11) DEFAULT NULL, `IncrementalOrderableQuantityType` tinyint(1) DEFAULT NULL COMMENT 'Unit: 1 = piece, 2 = bunch, 3 = box, 4 = layer, 5 = load carrier/trolley', `PackingPrice` decimal(10,2) DEFAULT NULL, - `PackingPriceType` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL, + `PackingPriceType` varchar(25) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `PackingPriceQuantity` int(11) DEFAULT NULL, `PackingPriceQuantityType` tinyint(1) DEFAULT NULL COMMENT 'Unit: 1 = piece, 2 = bunch, 3 = box, 4 = layer, 5 = load carrier/trolley', - `MarketPlaceID` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `MarketFormCode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '"002" Standard Sales\n"005" Catalogue (optional)\n"001" Committed (optional)\n"003" Buffer (optional, Clock Pre Sales) ', - `FlowerColor` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `MarketPlaceID` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `MarketFormCode` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT '"002" Standard Sales\n"005" Catalogue (optional)\n"001" Committed (optional)\n"003" Buffer (optional, Clock Pre Sales) ', + `FlowerColor` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `vmpID` int(11) DEFAULT NULL, `widthMeasure` int(11) DEFAULT NULL COMMENT 'mm Embalage Width', `lengthMeasure` int(11) DEFAULT NULL COMMENT 'mm Embalage Length', `heightMeasure` int(11) DEFAULT NULL COMMENT 'mm Embalage Height', - `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `EmbalageCodeSupplier` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `created` datetime NOT NULL DEFAULT current_timestamp(), + `EmbalageCodeSupplier` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `updated` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`ID`), KEY `IX_TransNumber` (`TransactionNumber`) COMMENT 'Agregado por Ernesto 11.6.2019\nSe ejecutaba 1 consulta por segundo desde MAIL y consumia un 20% de CPU de todo el servidor !!!!!\nCPU usada es mas estable que Indice en SendererID, cpu vs espacio que ocupa?\n', KEY `supplyResponse_Ix1` (`Item_ArticleCode`), @@ -9881,27 +8656,26 @@ CREATE TABLE `supplyResponse` ( KEY `supplyResponse_updated_IDX` (`updated`) USING BTREE, CONSTRAINT `supplyResponse_fk2` FOREIGN KEY (`MarketPlaceID`) REFERENCES `marketPlace` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `supplyResponseputOrder_FK` FOREIGN KEY (`vmpID`) REFERENCES `VMPSettings` (`VMPID`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER supplyResponse_AFTER_UPDATE - AFTER UPDATE - ON supplyResponse - FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `edi`.`supplyResponse_AFTER_UPDATE` + AFTER UPDATE ON `supplyResponse` + FOR EACH ROW BEGIN 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.agencyFk + 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 JOIN edi.supplyResponse sr ON i.supplyResponseFk = sr.ID SET b.quantity = NEW.NumberOfItemsPerCask * NEW.NumberOfUnits, @@ -9909,8 +8683,8 @@ BEGIN WHERE i.supplyResponseFk = NEW.ID AND am.name = 'LOGIFLORA' AND e.isRaid - AND tr.landed >= CURDATE(); - + AND tr.landed >= util.VN_CURDATE(); + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -9928,14 +8702,31 @@ DROP TABLE IF EXISTS `supplyResponseLog`; CREATE TABLE `supplyResponseLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `supplyResponseFk` int(11) NOT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `NumberOfUnitsOld` int(11) DEFAULT NULL, `NumberOfUnitsNew` int(11) DEFAULT NULL, `lastVMPUpdate` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `supplyResponseLog_FK` (`supplyResponseFk`), CONSTRAINT `supplyResponseLog_FK` FOREIGN KEY (`supplyResponseFk`) REFERENCES `supplyResponse` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Esta tabla la utiliza la empresa LOGIFLORA. No kkear.'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Esta tabla la utiliza la empresa LOGIFLORA. No kkear.'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `tableConfig` +-- + +DROP TABLE IF EXISTS `tableConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tableConfig` ( + `fileName` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL, + `toTable` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, + `file` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `updated` date DEFAULT NULL, + PRIMARY KEY (`fileName`), + UNIQUE KEY `to_table` (`toTable`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9946,14 +8737,14 @@ DROP TABLE IF EXISTS `type`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `type` ( - `type_id` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `type_id` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, `type_group_id` tinyint(3) unsigned NOT NULL, - `description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, `entry_date` date NOT NULL, `expiry_date` date NOT NULL, `change_date_time` datetime NOT NULL, PRIMARY KEY (`type_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FE130916.txt'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='/tmp/floricode/florecompc2/FE130916.txt'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9964,14 +8755,14 @@ DROP TABLE IF EXISTS `value`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `value` ( - `type_id` varchar(3) COLLATE utf8_unicode_ci NOT NULL, - `type_value` varchar(3) COLLATE utf8_unicode_ci NOT NULL, - `type_description` varchar(70) COLLATE utf8_unicode_ci NOT NULL, + `type_id` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, + `type_value` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, + `type_description` varchar(70) COLLATE utf8mb3_unicode_ci NOT NULL, `entry_date` date NOT NULL, `expiry_date` date NOT NULL, `change_date_time` datetime NOT NULL, PRIMARY KEY (`type_id`,`type_value`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FV130916.txt'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='/tmp/floricode/florecompc2/FV130916.txt'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9983,15 +8774,15 @@ DROP TABLE IF EXISTS `warehouseFloramondo`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `warehouseFloramondo` ( `warehouseFk` smallint(6) unsigned NOT NULL, - `travellingDays` int(11) NOT NULL DEFAULT '1', + `travellingDays` int(11) NOT NULL DEFAULT 1, `entryFk` int(11) DEFAULT NULL, `isFV` int(11) DEFAULT NULL COMMENT 'NULL indiferente\n0 no\n1 si\n', - `dayRange` int(11) NOT NULL DEFAULT '0' COMMENT 'dias de margen a futuro', + `dayRange` int(11) NOT NULL DEFAULT 0 COMMENT 'dias de margen a futuro', PRIMARY KEY (`warehouseFk`), KEY `warehouseFloramondo_FK2_idx` (`entryFk`), CONSTRAINT `warehouseFloramondo_FK2` FOREIGN KEY (`entryFk`) REFERENCES `vn`.`entry` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `warehouseFloramondo_fk` FOREIGN KEY (`warehouseFk`) REFERENCES `vn`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10003,14 +8794,14 @@ DELIMITER ;; /*!50003 SET @saved_cs_client = @@character_set_client */ ;; /*!50003 SET @saved_cs_results = @@character_set_results */ ;; /*!50003 SET @saved_col_connection = @@collation_connection */ ;; -/*!50003 SET character_set_client = utf8 */ ;; -/*!50003 SET character_set_results = utf8 */ ;; -/*!50003 SET collation_connection = utf8_general_ci */ ;; +/*!50003 SET character_set_client = utf8mb4 */ ;; +/*!50003 SET character_set_results = utf8mb4 */ ;; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `floramondo` ON SCHEDULE EVERY 6 MINUTE STARTS '2020-07-29 01:58:29' ON COMPLETION NOT PRESERVE ENABLE DO CALL edi.floramondo_offerRefresh() */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `floramondo` ON SCHEDULE EVERY 6 MINUTE STARTS '2022-01-28 09:52:45' ON COMPLETION NOT PRESERVE ENABLE DO CALL edi.floramondo_offerRefresh() */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -10026,16 +8817,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `imageName`(vPictureReference VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 COLLATE utf8_unicode_ci +CREATE DEFINER=`root`@`localhost` FUNCTION `imageName`(vPictureReference VARCHAR(255)) RETURNS varchar(255) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci DETERMINISTIC BEGIN - + SET vPictureReference = REPLACE(vPictureReference,'.',''); SET vPictureReference = REPLACE(vPictureReference,'/',''); @@ -10047,7 +8838,7 @@ BEGIN SET vPictureReference = REPLACE(vPictureReference,'?',''); SET vPictureReference = REPLACE(vPictureReference,'=',''); - + RETURN vPictureReference; END ;; @@ -10060,28 +8851,28 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clean`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `clean`() BEGIN - DECLARE vFourYearsAgo DATE DEFAULT TIMESTAMPADD(YEAR,-4,CURDATE()); - DECLARE vOneWeekAgo DATE DEFAULT TIMESTAMPADD(WEEK,-1,CURDATE()); + DECLARE vFourYearsAgo DATE DEFAULT TIMESTAMPADD(YEAR,-4,util.VN_CURDATE()); + DECLARE vOneWeekAgo DATE DEFAULT TIMESTAMPADD(WEEK,-1,util.VN_CURDATE()); DELETE FROM ekt WHERE fec < vFourYearsAgo; - + DELETE IGNORE sr.* FROM supplyResponse sr LEFT JOIN edi.deliveryInformation di ON sr.ID = di.supplyResponseID WHERE di.LatestOrderDateTime < vOneWeekAgo OR di.ID IS NULL; - - DELETE FROM putOrder - WHERE created < TIMESTAMPADD(MONTH,-1,CURDATE()); - + + DELETE FROM putOrder + WHERE created < TIMESTAMPADD(MONTH,-1,util.VN_CURDATE()); + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -10092,35 +8883,35 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `deliveryInformation_Delete`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `deliveryInformation_Delete`() BEGIN - + DECLARE vID INT; DECLARE vGap INT DEFAULT 100; DECLARE vTope INT; - - SELECT MIN(ID), MAX(ID) + + SELECT MIN(ID), MAX(ID) INTO vID, vTope FROM edi.deliveryInformation; - WHILE vID <= vTope DO - + WHILE vID <= vTope DO + SET vID = vID + vGap; - - DELETE - FROM edi.deliveryInformation + + DELETE + FROM edi.deliveryInformation WHERE ID < vID AND EarliestDespatchDateTime IS NULL; - + END WHILE; - - + + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -10131,23 +8922,23 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ekt_add`(vPutOrderFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ekt_add`(vPutOrderFk INT) BEGIN - + /** * Añade ekt para las ordenes de compra de proveedores que no envian el ekt por email - * + * * @param vPutOrderFk PutOrderId de donde coger los datos **/ - - INSERT INTO edi.ekt(entryYear, - deliveryNumber, + + INSERT INTO edi.ekt(entryYear, + deliveryNumber, fec, hor, item, @@ -10167,7 +8958,7 @@ BEGIN putOrderFk, `ref`, kop) - SELECT year(curdate()) entryYear, + SELECT year(util.VN_CURDATE()) entryYear, p.id deliveryNumber , DATE(di.LatestDeliveryDateTime) fec, HOUR(di.LatestDeliveryDateTime) hor, @@ -10187,17 +8978,17 @@ BEGIN i.value10 s6, p.id putOrderFk, sr.Item_ArticleCode, - sr.vmpID + sr.vmpID FROM edi.putOrder p - JOIN edi.supplyResponse sr ON sr.ID = p.supplyResponseID - JOIN edi.deliveryInformation di ON di.id = p.deliveryInformationID - JOIN edi.marketPlace mp ON mp.id = sr.MarketPlaceID - JOIN vn.item i ON i.supplyResponseFk = sr.ID - JOIN vn.origin o ON o.id = i.originFk + JOIN edi.supplyResponse sr ON sr.ID = p.supplyResponseID + JOIN edi.deliveryInformation di ON di.id = p.deliveryInformationID + JOIN edi.marketPlace mp ON mp.id = sr.MarketPlaceID + JOIN vn.item i ON i.supplyResponseFk = sr.ID + JOIN vn.origin o ON o.id = i.originFk WHERE p.id = vPutOrderFk; - + CALL edi.ekt_load(LAST_INSERT_ID()); - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -10208,14 +8999,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ekt_load`(IN `vSelf` INT) -BEGIN +CREATE DEFINER=`root`@`localhost` PROCEDURE `ekt_load`(IN `vSelf` INT) +proc:BEGIN + DECLARE vRef INT; DECLARE vBuy INT; DECLARE vItem INT; @@ -10226,47 +9018,65 @@ BEGIN DECLARE vForceToPacking INT DEFAULT 2; DECLARE vEntryFk INT; DECLARE vHasToChangePackagingFk BOOLEAN; + DECLARE vIsFloramondoDirect BOOLEAN; + DECLARE vTicketFk INT; + DECLARE vHasItemGroup BOOL; + DECLARE vDescription VARCHAR(255); + DECLARE vSaleFk INT; -- Carga los datos necesarios del EKT - SELECT ref, qty, package, putOrderFk MOD 1000000, i2.id - INTO vRef, vQty, vPackage, vPutOrderFk, vItem - FROM ekt e - LEFT JOIN item i ON e.ref = i.id + SELECT e.ref, qty, package, putOrderFk MOD 1000000, i2.id , NOT ISNULL(eea.addressFk), NOT ISNULL(igto.group_code), + CONCAT(e.`ref`, ' ', e.item, ' ', e.sub, ' EktFk:', e.id) + INTO vRef, vQty, vPackage, vPutOrderFk, vItem, vIsFloramondoDirect, vHasItemGroup, vDescription + FROM edi.ekt e + LEFT JOIN edi.item i ON e.ref = i.id LEFT JOIN edi.putOrder po ON po.id = e.putOrderFk - LEFT JOIN vn.item i2 ON i2.supplyResponseFk = po.supplyResponseID + LEFT JOIN vn.item i2 ON i2.supplyResponseFk = po.supplyResponseID + LEFT JOIN vn.ektEntryAssign eea ON eea.sub = e.sub + LEFT JOIN edi.item_groupToOffer igto ON igto.group_code = i.group_id WHERE e.id = vSelf LIMIT 1; - + + IF NOT vHasItemGroup THEN + + CALL vn.mail_insert('logistica@verdnatura.es', 'nocontestar@verdnatura.es', 'Nuevo grupo en Floramondo', vDescription); + + CALL vn.mail_insert('pako@verdnatura.es', 'nocontestar@verdnatura.es', CONCAT('Nuevo grupo en Floramondo: ', vDescription), vDescription); + + LEAVE proc; + + END IF; + -- Asigna la entrada SELECT vn.ekt_getEntry(vSelf) INTO vEntryFk; - + -- Inserta el cubo si no existe IF vPackage = 800 THEN - + SET vHasToChangePackagingFk = TRUE; - + IF vItem THEN - + SELECT vn.item_getPackage(vItem) INTO vPackage ; - + ELSE - + SET vPackage = 8000 + vQty; INSERT IGNORE INTO vn.packaging(id, width, `depth`) SELECT vPackage, vc.ccLength / vQty, vc.ccWidth FROM vn.volumeConfig vc; - + END IF; - + ELSE - + INSERT IGNORE INTO vn2008.Cubos (Id_Cubo, X, Y, Z) SELECT bucket_id, ROUND(x_size/10), ROUND(y_size/10), ROUND(z_size/10) FROM bucket WHERE bucket_id = vPackage; - + IF ROW_COUNT() > 0 THEN INSERT INTO vn2008.mail SET @@ -10275,29 +9085,31 @@ BEGIN `to` = 'ekt@verdnatura.es'; END IF; END IF; - - -- Si es una compra de Floramondo obtiene el articulo + + -- Si es una compra de Logiflora obtiene el articulo IF vPutOrderFk THEN - + SELECT i.id INTO vItem FROM edi.putOrder po JOIN vn.item i ON i.supplyResponseFk = po.supplyResponseID WHERE po.id = vPutOrderFk LIMIT 1; - + END IF; INSERT IGNORE INTO item_track SET item_id = vRef; - + IF IFNULL(vItem,0) = 0 THEN + -- Intenta obtener el artículo en base a los atributos holandeses - + SELECT b.id, IFNULL(b.itemOriginalFk ,b.itemFk) INTO vBuy, vItem - FROM edi.ekt e + FROM edi.ekt e JOIN edi.item_track t ON t.item_id = e.ref LEFT JOIN edi.ekt l ON l.ref = e.ref LEFT JOIN vn.buy b ON b.ektFk = l.id + LEFT JOIN vn.item i ON i.id = b.itemFk JOIN vn2008.config cfg WHERE e.id = vSelf AND l.id != vSelf @@ -10308,20 +9120,25 @@ BEGIN AND IF(t.s4, l.s4 = e.s4, TRUE) AND IF(t.s5, l.s5 = e.s5, TRUE) AND IF(t.s6, l.s6 = e.s6, TRUE) - AND IF(t.kop, l.kop = e.kop, TRUE) AND IF(t.pac, l.pac = e.pac, TRUE) AND IF(t.cat, l.cat = e.cat, TRUE) AND IF(t.ori, l.ori = e.ori, TRUE) AND IF(t.pro, l.pro = e.pro, TRUE) - AND IF(t.sub, l.sub = e.sub, TRUE) AND IF(t.package, l.package = e.package, TRUE) AND IF(t.item, l.item = e.item, TRUE) - AND b.itemFk < 170000 - ORDER BY l.now DESC, b.id ASC LIMIT 1; + AND i.isFloramondo = vIsFloramondoDirect + ORDER BY l.util.VN_NOW DESC, b.id ASC + LIMIT 1; END IF; - - + + -- Si no encuentra el articulo lo crea en el caso de las compras directas en Floramondo + IF ISNULL(vItem) AND vIsFloramondoDirect THEN + + CALL edi.item_getNewByEkt(vSelf, vItem); + + END IF; + INSERT INTO vn.buy ( entryFk @@ -10345,295 +9162,215 @@ BEGIN ,e.qty stickers ,@pac := IFNULL(i.stemMultiplier, 1) * e.pac / @t packing ,IFNULL(b.`grouping`, e.pac) - ,@pac * e.qty + ,@pac * e.qty ,vForceToPacking ,s.`name` ,IF(vHasToChangePackagingFk OR ISNULL(b.packageFk), vPackage, b.packageFk) - ,i.density * (vn.item_getVolume(i.id, IFNULL(b.packageFk, e.package)) / 1000000) - FROM edi.ekt e + ,b.weight + FROM edi.ekt e LEFT JOIN vn.buy b ON b.id = vBuy LEFT JOIN vn.item i ON i.id = b.itemFk LEFT JOIN vn.supplier s ON e.pro = s.id - JOIN vn2008.config cfg + JOIN vn2008.config cfg WHERE e.id = vSelf LIMIT 1; - + DROP TEMPORARY TABLE IF EXISTS tmp.buyRecalc; - + CREATE TEMPORARY TABLE tmp.buyRecalc SELECT buy.id - FROM vn.buy - WHERE ektFk = vSelf; - - CALL vn.buy_recalcPrices(); - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ekt_load_beta` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ekt_load_beta`(IN `vSelf` INT) -BEGIN - DECLARE vRef INT; - DECLARE vBuy INT; - DECLARE vItem INT; - DECLARE vQty INT; - DECLARE vPackage INT; - DECLARE vPutOrderFk INT; - DECLARE vIsLot BOOLEAN; - DECLARE vForceToPacking INT DEFAULT 2; - DECLARE vEntryFk INT; - DECLARE vHasToChangePackagingFk BOOLEAN; + FROM vn.buy + WHERE ektFk = vSelf; - -- Carga los datos necesarios del EKT + CALL vn.buy_recalcPrices(); - SELECT ref, qty, package, putOrderFk, i2.id INTO vRef, vQty, vPackage, vPutOrderFk, vItem - FROM ekt e - LEFT JOIN item i ON e.ref = i.id - LEFT JOIN edi.putOrder po ON po.id = e.putOrderFk - LEFT JOIN vn.item i2 ON i2.supplyResponseFk = po.supplyResponseID - WHERE e.id = vSelf - LIMIT 1; - - SELECT vItem; - - -- Asigna la entrada - SELECT vn.ekt_getEntry(vSelf) INTO vEntryFk; - - -- Inserta el cubo si no existe - - IF vPackage = 800 THEN - - SET vHasToChangePackagingFk = TRUE; - - IF vItem THEN - - SELECT vn.item_getPackage(vItem) INTO vPackage ; - - ELSE - - SET vPackage = 8000 + vQty; - - INSERT IGNORE INTO vn.packaging(id, width, `depth`) - SELECT vPackage, vc.ccLength / vQty, vc.ccWidth - FROM vn.volumeConfig vc; - - END IF; - - ELSE - - INSERT IGNORE INTO vn2008.Cubos (Id_Cubo, X, Y, Z) - SELECT bucket_id, ROUND(x_size/10), ROUND(y_size/10), ROUND(z_size/10) - FROM bucket WHERE bucket_id = vPackage; - - IF ROW_COUNT() > 0 - THEN - INSERT INTO vn2008.mail SET - `subject` = 'Cubo añadido', - `text` = CONCAT('Se ha añadido el cubo: ', vPackage), - `to` = 'ekt@verdnatura.es'; - END IF; - END IF; - - -- Si es una compra de Floramondo obtiene el articulo + -- Si es una compra de Logiflora hay que informar la tabla vn.saleBuy IF vPutOrderFk THEN - - SELECT i.id INTO vItem - FROM edi.putOrder po - JOIN vn.item i ON i.supplyResponseFk = po.supplyResponseID - WHERE po.id = vPutOrderFk + + REPLACE vn.saleBuy(saleFk, buyFk, workerFk) + SELECT po.saleFk, b.id, account.myUser_getId() + FROM edi.putOrder po + JOIN vn.buy b ON b.ektFk = vSelf + WHERE po.id = vPutOrderFk; + + END IF; + -- Si es una compra directa en Floramondo hay que añadirlo al ticket + + IF vIsFloramondoDirect THEN + + SELECT t.id INTO vTicketFk + FROM vn.ticket t + JOIN vn.ektEntryAssign eea ON eea.addressFk = t.addressFk + JOIN vn.warehouse w ON w.id = t.warehouseFk AND w.name = 'Floramondo' + JOIN edi.ekt e ON e.sub = eea.sub AND e.id = vSelf + WHERE e.fec = t.shipped LIMIT 1; - - END IF; - INSERT IGNORE INTO item_track SET - item_id = vRef; - - IF IFNULL(vItem,0) = 0 THEN - -- Intenta obtener el artículo en base a los atributos holandeses - - SELECT b.id, b.itemFk INTO vBuy, vItem - FROM edi.ekt e - JOIN edi.item_track t ON t.item_id = e.ref - LEFT JOIN edi.ekt l ON l.ref = e.ref - LEFT JOIN vn.buy b ON b.ektFk = l.id - JOIN vn2008.config cfg - WHERE e.id = vSelf - AND l.id != vSelf - AND b.itemFk != cfg.generic_item - AND IF(t.s1, l.s1 = e.s1, TRUE) - AND IF(t.s2, l.s2 = e.s2, TRUE) - AND IF(t.s3, l.s3 = e.s3, TRUE) - AND IF(t.s4, l.s4 = e.s4, TRUE) - AND IF(t.s5, l.s5 = e.s5, TRUE) - AND IF(t.s6, l.s6 = e.s6, TRUE) - AND IF(t.kop, l.kop = e.kop, TRUE) - AND IF(t.pac, l.pac = e.pac, TRUE) - AND IF(t.cat, l.cat = e.cat, TRUE) - AND IF(t.ori, l.ori = e.ori, TRUE) - AND IF(t.pro, l.pro = e.pro, TRUE) - AND IF(t.sub, l.sub = e.sub, TRUE) - AND IF(t.package, l.package = e.package, TRUE) - AND IF(t.item, l.item = e.item, TRUE) - AND b.itemFk < 170000 - ORDER BY l.now DESC, b.id ASC LIMIT 1; + IF ISNULL(vTicketFk) THEN + INSERT INTO vn.ticket ( + clientFk, + shipped, + addressFk, + agencyModeFk, + nickname, + warehouseFk, + companyFk, + landed, + zoneFk, + zonePrice, + zoneBonus + ) + SELECT + a.clientFk, + e.fec, + a.id, + a.agencyModeFk, + a.nickname, + w.id, + c.id, + e.fec, + z.id, + z.price, + z.bonus + FROM edi.ekt e + JOIN vn.ektEntryAssign eea ON eea.sub = e.sub + JOIN vn.address a ON a.id = eea.addressFk + JOIN vn.warehouse w ON w.name = 'Floramondo' + JOIN vn.company c ON c.code = 'VNL' + JOIN vn.`zone` z ON z.code = 'FLORAMONDO' + WHERE e.id = vSelf + LIMIT 1; + + SET vTicketFk = LAST_INSERT_ID(); + + INSERT INTO vn.ticketLog + SET originFk = vTicketFk, + userFk = account.myUser_getId(), + `action` = 'insert', + description = CONCAT('EktLoad ha creado el ticket:', ' ', vTicketFk); + + END IF; + + INSERT INTO vn.sale (itemFk, ticketFk, concept, quantity, price) + SELECT vItem, vTicketFk, e.item, e.qty * e.pac, e.pri * ( 1 + fhc.floramondoMargin ) + FROM edi.ekt e + JOIN edi.floraHollandConfig fhc + WHERE e.id = vSelf; + + SELECT LAST_INSERT_ID() INTO vSaleFk; + + REPLACE vn.saleBuy(saleFk, buyFk, workerFk) + SELECT vSaleFk, b.id, account.myUser_getId() + FROM vn.buy b + WHERE b.ektFk = vSelf; + + INSERT INTO vn.saleComponent(saleFk, componentFk, value) + SELECT vSaleFk, c.id, e.pri + FROM edi.ekt e + JOIN vn.component c ON c.code = 'purchaseValue' + WHERE e.id = vSelf; + + INSERT INTO vn.saleComponent(saleFk, componentFk, value) + SELECT vSaleFk, c.id, e.pri * fhc.floramondoMargin + FROM edi.ekt e + JOIN edi.floraHollandConfig fhc + JOIN vn.component c ON c.code = 'margin' + WHERE e.id = vSelf; END IF; - - - INSERT INTO vn.buy - ( - entryFk - ,ektFk - ,buyingValue - ,itemFk - ,stickers - ,packing - ,`grouping` - ,quantity - ,groupingMode - ,producer - ,packageFk - ,weight - ) - SELECT - vEntryFk - ,vSelf - ,(@t := IF(i.stems, i.stems, 1)) * e.pri / IFNULL(i.stemMultiplier, 1) buyingValue - ,IFNULL(vItem, cfg.generic_item) itemFk - ,e.qty stickers - ,@pac := IFNULL(i.stemMultiplier, 1) * e.pac / @t packing - ,IFNULL(b.`grouping`, e.pac) - ,@pac * e.qty - ,vForceToPacking - ,s.`name` - ,IF(vHasToChangePackagingFk OR ISNULL(b.packageFk), vPackage, b.packageFk) - ,i.density * (vn.item_getVolume(i.id, IFNULL(b.packageFk, e.package)) / 1000000) - FROM edi.ekt e - LEFT JOIN vn.buy b ON b.id = vBuy - LEFT JOIN vn.item i ON i.id = b.itemFk - LEFT JOIN vn.supplier s ON e.pro = s.id - JOIN vn2008.config cfg - WHERE e.id = vSelf - LIMIT 1; - - DROP TEMPORARY TABLE IF EXISTS tmp.buyRecalc; - - CREATE TEMPORARY TABLE tmp.buyRecalc - SELECT buy.id - FROM vn.buy - WHERE ektFk = vSelf; - - CALL vn.buy_recalcPrices(); - + DROP TEMPORARY TABLE tmp.buyRecalc; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `exchange_new` */; +/*!50003 DROP PROCEDURE IF EXISTS `ekt_loadNotBuy` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `exchange_new`( - IN `vMailFk` INT, - IN `vItem` VARCHAR(255), - IN `vType` MEDIUMINT, - IN `vDeliveryNumber` BIGINT, - IN `vDate` DATE, - IN `vHour` TIME, - IN `vRef` INT, - IN `vAgj` INT, - IN `vCat` VARCHAR(2), - IN `vPac` INT, - IN `vSub` MEDIUMINT, - IN `vKop` INT, - IN `vPtd` VARCHAR(6), - IN `vPro` MEDIUMINT, - IN `vOrigin` VARCHAR(3), - IN `vPtj` MEDIUMINT, - IN `vQuantiy` INT, - IN `vPrice` DOUBLE, - IN `vClock` SMALLINT, - IN `vS1` VARCHAR(3), - IN `vS2` VARCHAR(3), - IN `vS3` VARCHAR(3), - IN `vS4` VARCHAR(4), - IN `vS5` VARCHAR(3), - IN `vS6` VARCHAR(3), - IN `vK1` SMALLINT, - IN `vK2` SMALLINT, - IN `vP1` TINYINT, - IN `vP2` TINYINT, - IN `vAuction` SMALLINT, - IN `vPackage` INT, - IN `vPutOrderFk` BIGINT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ekt_loadNotBuy`() +BEGIN + + /** + * Ejecuta ekt_load para aquellos ekt de hoy que no tienen vn.buy + */ + + DECLARE vEktFk INTEGER; + DECLARE done BOOL; + + + DECLARE cursor1 CURSOR FOR SELECT e.id + FROM edi.ekt e + LEFT JOIN vn.buy b ON b.ektFk = e.id + WHERE e.fec >= util.VN_CURDATE() + AND ISNULL(b.ektFk); + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + + OPEN cursor1; + bucle: LOOP + + FETCH cursor1 INTO vEktFk; + + IF done THEN + LEAVE bucle; + END IF; + + CALL edi.ekt_load(vEktFk); + + END LOOP bucle; + CLOSE cursor1; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ekt_refresh` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `ekt_refresh`( + `vSelf` INT, vMailFk INT) BEGIN /** - * Adds a new exchange, generates it's barcode and - * inserts/updates the transaction. When the referenced - * transaction exists as provisional, updates it with - * the new values. + * Updates a transaction, generates it's barcode. */ - DECLARE vEkt INT; DECLARE vRewriteKop INT DEFAULT NULL; DECLARE vTruncatePutOrder INT DEFAULT NULL; DECLARE vBarcode CHAR(15) DEFAULT NULL; - DECLARE vIsDuplicated BOOL; - DECLARE vUpdateExistent BOOL DEFAULT FALSE; - DECLARE duplicateKey CONDITION FOR 1062; + DECLARE vKop INT; + DECLARE vPutOrderFk BIGINT; - DECLARE CONTINUE HANDLER FOR duplicateKey - SET vIsDuplicated = TRUE; + SELECT kop, putOrderFk + INTO vKop, vPutOrderFk + FROM ekt + WHERE id = vSelf; -- Generates the barcode - IF vAgj != 0 AND vAgj IS NOT NULL - THEN - SET vBarcode = CONCAT( - LPAD(vAuction, 2, 0), - LPAD(IFNULL(vClock, 99), 2, 0), - LPAD(DAYOFYEAR(vDate), 3, 0), - IF(vClock IS NULL OR vClock = 99, - LPAD(vAgj, 8, 0), - CONCAT(LPAD(vAgj, 5, 0), '010') - ) - ); - END IF; - - -- Generates the barcode - - /*IF vAgj != 0 AND vAgj IS NOT NULL - THEN - SET vBarcode = CONCAT( - LPAD(vAuction, 2, 0), - LPAD(IFNULL(vClock, 99), 2, 0), - LPAD(DAYOFYEAR(vDate), 3, 0), - IF(vClock IS NULL OR vClock = 99, - LPAD(vAgj, 7, 0), - CONCAT(LPAD(vAgj, 5, 0), '01') - ), - '0' - ); - END IF;*/ + SELECT CONCAT( + LPAD(IFNULL(auction,0), 3, 0), + LPAD(IFNULL(klo, 99), 2, 0), + LPAD(DAYOFYEAR(fec), 3, 0), + COALESCE(agj, RIGHT(batchNumber,7), id)) + INTO vBarcode + FROM ekt + WHERE id = vSelf; -- Rewrites the kop parameter @@ -10648,111 +9385,161 @@ BEGIN SET vKop = IFNULL(vRewriteKop, vKop); - -- Inserts the new transaction - call util.debugAdd('vBarcode',vBarcode); - call util.debugAdd('vDeliveryNumber',vDeliveryNumber); - SET vIsDuplicated = FALSE; + -- Format order id + SET vTruncatePutOrder = vPutOrderFk MOD 1000000; - INSERT INTO ekt SET - barcode = IFNULL(vBarcode, barcode) - ,deliveryNumber = vDeliveryNumber - ,entryYear = YEAR(vDate) - ,fec = vDate - ,hor = vHour - ,ref = vRef - ,item = vItem - ,agj = vAgj - ,cat = vCat - ,pac = vPac - ,sub = vSub + -- Refresh EKT + + UPDATE ekt SET + barcode = vBarcode ,kop = vKop - ,ptd = vPtd - ,pro = vPro - ,ori = vOrigin - ,ptj = vPtj - ,qty = vQuantiy - ,pri = vPrice - ,klo = vClock - ,s1 = vS1 - ,s2 = vS2 - ,s3 = vS3 - ,s4 = vS4 - ,s5 = vS5 - ,s6 = vS6 - ,k1 = vK1 - ,k2 = vK2 - ,k3 = vP1 - ,k4 = vP2 - ,auction = vAuction - ,package = vPackage - ,putOrderFk = vTruncatePutOrder; + ,putOrderFk = vTruncatePutOrder + WHERE id = vSelf; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ekt_scan` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `ekt_scan`(vBarcode VARCHAR(512)) +BEGIN +/** + * Busca transaciones a partir de un código de barras, las marca como escaneadas + * y las devuelve. + * Ver https://wiki.verdnatura.es/index.php/Ekt#Algoritmos_de_lectura + * + * @param vBarcode Código de compra de una etiqueta de subasta + * @param vLabels Cantidad escaneada + * @table tmp.ekt(ektFk) Transacciones escaneadas + */ + DECLARE vIsFound BOOL; + DECLARE vUsefulAuctionLeftSegmentLength INT; + DECLARE vStandardBarcodeLength INT; + DECLARE vFloridayBarcodeLength INT; + DECLARE vFloramondoBarcodeLength INT; + DECLARE vAuction INT; + DECLARE vKlo INT; + DECLARE vFec DATE; + DECLARE vShortAgj INT; + DECLARE vLongAgj INT; + DECLARE vXtraLongAgj INT; + DECLARE vDefaultKlo INT; - -- If it exists duplicado updates it + SELECT + ec.usefulAuctionLeftSegmentLength, + ec.standardBarcodeLength, + ec.floridayBarcodeLength, + ec.floramondoBarcodeLength, + ec.defaultKlo + INTO + vUsefulAuctionLeftSegmentLength, + vStandardBarcodeLength, + vFloridayBarcodeLength, + vFloramondoBarcodeLength, + vDefaultKlo + FROM edi.ektConfig ec; - IF NOT vIsDuplicated - THEN - SET vEkt = LAST_INSERT_ID(); - CALL ekt_load (vEkt); + DROP TEMPORARY TABLE IF EXISTS tmp.ekt; + CREATE TEMPORARY TABLE tmp.ekt + ENGINE = MEMORY + SELECT id ektFk FROM ekt LIMIT 0; - ELSEIF vDeliveryNumber != 0 - AND vDeliveryNumber IS NOT NULL - THEN - SELECT id INTO vEkt - FROM ekt - WHERE deliveryNumber = vDeliveryNumber; + CASE + WHEN LENGTH(vBarcode) <= vFloridayBarcodeLength THEN + INSERT INTO tmp.ekt + SELECT id + FROM edi.ektRecent e + WHERE e.cps = vBarcode + OR e.batchNumber = vBarcode; - SELECT COUNT(*) = 0 INTO vUpdateExistent - FROM ekt t - JOIN `exchange` b ON b.ektFk = t.id - JOIN exchangeConfig c - WHERE t.deliveryNumber = vDeliveryNumber - AND t.entryYear = YEAR(vDate) - AND b.typeFk != c.presaleFk; + WHEN LENGTH(vBarcode) = vFloramondoBarcodeLength THEN + INSERT INTO tmp.ekt + SELECT e.id + FROM edi.ektRecent e + WHERE e.pro = MID(vBarcode,2,6) + AND CAST(e.ptd AS SIGNED) = MID(vBarcode,8,5); + + ELSE + SET vBarcode = LPAD(vBarcode,vStandardBarcodeLength,'0'); + SET vAuction = MID(vBarcode, 1, 3); + SET vKlo = MID(vBarcode, 4, 2); + SET vFec = MAKEDATE(YEAR(util.VN_CURDATE()), MID(vBarcode, 6, 3)); + SET vShortAgj = MID(vBarcode, 9, 5); + SET vLongAgj = MID(vBarcode, 9, 7); + SET vXtraLongAgj = MID(vBarcode, 9, 8); + + -- Clásico de subasta + -- Trade standard + -- Trade que construye como la subasta + -- Trade como el anterior pero sin trade code + INSERT INTO tmp.ekt + SELECT id + FROM ekt + WHERE fec = vFec + AND (( + vKlo = vDefaultKlo + AND (klo = vKlo OR klo IS NULL OR klo = 0) + AND agj IN (vShortAgj, vLongAgj, vXtraLongAgj)) + OR (klo = vKlo + AND auction = vAuction + AND agj = vShortAgj) + ) + ORDER BY agj DESC + LIMIT 1; + + SELECT COUNT(*) FROM tmp.ekt INTO vIsFound; + + -- BatchNumber largo + IF NOT vIsFound THEN + INSERT INTO tmp.ekt + SELECT id + FROM edi.ektRecent e + WHERE e.batchNumber + = LEFT(vBarcode,vUsefulAuctionLeftSegmentLength) + AND e.batchNumber > 0; + + SELECT COUNT(*) FROM tmp.ekt INTO vIsFound; + END IF; + + -- Order Number + IF NOT vIsFound THEN + INSERT INTO tmp.ekt + SELECT id + FROM edi.ektRecent e + WHERE e.putOrderFk = vBarcode; + + SELECT COUNT(*) FROM tmp.ekt INTO vIsFound; + END IF; + + -- deliveryNumber incrustado + IF NOT vIsFound THEN + INSERT INTO tmp.ekt + SELECT id + FROM edi.ektRecent e + WHERE e.deliveryNumber + = MID(vBarcode, 4, 13) + AND e.deliveryNumber > 0; + + SELECT COUNT(*) FROM tmp.ekt INTO vIsFound; + END IF; + END CASE; + + IF vIsFound THEN + UPDATE ekt e + JOIN tmp.ekt t ON t.ektFk = e.id + SET e.scanned = TRUE; END IF; - - IF vUpdateExistent - THEN - UPDATE ekt SET - barcode = IFNULL(vBarcode, barcode) - ,fec = vDate - ,hor = vHour - ,ref = vRef - ,item = vItem - ,agj = vAgj - ,cat = vCat - ,pac = vPac - ,sub = vSub - ,kop = vKop - ,ptd = vPtd - ,pro = vPro - ,ori = vOrigin - ,ptj = vPtj - ,qty = vQuantiy - ,pri = vPrice - ,klo = vClock - ,s1 = vS1 - ,s2 = vS2 - ,s3 = vS3 - ,s4 = vS4 - ,s5 = vS5 - ,s6 = vS6 - ,k1 = vK1 - ,k2 = vK2 - ,k3 = vP1 - ,k4 = vP2 - ,auction = vAuction - ,package = vPackage - ,putOrderFk = IFNULL(vTruncatePutOrder, putOrderFk) - WHERE id = vEkt; - END IF; - - -- Registers the exchange - - INSERT INTO `exchange` SET - mailFk = vMailFk - ,typeFk = vType - ,ektFk = vEkt; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -10763,568 +9550,82 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `floramondo_offerRefresh`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `floramondo_offerRefresh`() proc: BEGIN - DECLARE vLanded DATETIME; DECLARE done 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 cur1 CURSOR FOR - SELECT id + DECLARE vIsAuctionDay BOOLEAN; + DECLARE vMaxNewItems INT DEFAULT 10000; + DECLARE vStartingTime DATETIME; + DECLARE vAalsmeerMarketPlaceID VARCHAR(13) DEFAULT '8713783439043'; + + DECLARE cur1 CURSOR FOR + SELECT id FROM edi.item_free; - - DECLARE cur2 CURSOR FOR - SELECT srId + + DECLARE cur2 CURSOR FOR + SELECT srId FROM itemToInsert; - + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; DECLARE EXIT HANDLER FOR SQLSTATE '45000' BEGIN ROLLBACK; RESIGNAL; END; - - SET vStartingTime = NOW(); + + IF 'test' = (SELECT environment FROM util.config) THEN + LEAVE proc; + 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 + 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 + + UPDATE edi.offerList o JOIN (SELECT v.name, COUNT(*) total - FROM edi.supplyOffer sr - JOIN edi.VMPSettings v ON v.VMPID = sr.vmpID + 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; - + -- Refresca las fotos de los items existentes, con prioridad baja (0.7 seg) - INSERT IGNORE INTO vn.itemImageQueue(itemFk, url,priority) + 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 + FROM edi.supplyResponse sr + JOIN vn.item i ON i.supplyResponseFk = sr.ID WHERE i.image != edi.imageName(sr.PictureReference) AND sr.NumberOfUnits > 0; - + -- Elimina de la lista de items libres aquellos que ya existen - DELETE itf.* + DELETE itf.* FROM edi.item_free itf JOIN vn.item i ON i.id = itf.id; - - DROP TEMPORARY TABLE IF EXISTS tmp; + + DROP TEMPORARY TABLE IF EXISTS tmp; CREATE TEMPORARY TABLE tmp (INDEX (`Item_ArticleCode`)) ENGINE = MEMORY SELECT t.* FROM ( SELECT * - FROM edi.supplyOffer - ORDER BY (MarketPlaceID = vAalsmeerMarketPlaceID) DESC, NumberOfUnits DESC) t - GROUP BY t.srId - ; - - DROP TEMPORARY TABLE IF EXISTS edi.offer; - CREATE 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 > TIMESTAMPADD(WEEK, -1, CURDATE()) - 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 > TIMESTAMPADD(WEEK, -1, CURDATE()) - SET i.supplyResponseFk = o.srID - WHERE ( sr.ID IS NULL - OR sr.NumberOfUnits = 0 - OR di.LatestOrderDateTime < NOW() - OR di.ID IS NULL) - AND it.isInventory - AND t.id IS NULL - AND po.id IS NULL; - -- select now(),'Antes de crear ITO'; - DROP TEMPORARY TABLE IF EXISTS itemToInsert; - CREATE TEMPORARY TABLE itemToInsert ENGINE = MEMORY - SELECT o.*, CAST(NULL AS DECIMAL(6,0)) as 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 done 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, - expenceFk, - 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; - - 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; - - 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; - - -- Inserta los tags sólo en los articulos nuevos - - -- desabilita el trigger para recalcular los tags al final - SET @isTriggerDisabled = TRUE; - - 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`; - - 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`; - - 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`; - - 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 ISNULL(s1Value); - - 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 ISNULL(s2Value); - - 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 ISNULL(s3Value); - - 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 ISNULL(s4Value); - - 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 ISNULL(s5Value); - - 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 ISNULL(s6Value); - - 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; - - UPDATE vn.item i - JOIN itemToInsert ii ON i.supplyResponseFk = ii.`srId` - JOIN vn.packaging p ON p.id LIKE ii.EmbalageCode AND hasCompressionVariations - JOIN vn.itemTag diameter ON diameter.itemFk = i.id - JOIN vn.tag tDiameter ON tDiameter.overwrite = 'diameter' AND tDiameter.id = diameter.tagFk - JOIN vn.itemTag size ON size.itemFk = i.id - JOIN vn.tag tSize ON tSize.overwrite = 'size' AND tSize.id = size.tagFk - SET i.`compression` = - (PI() * POW(diameter.`value`/ 2, 2) * size.`value`) - / - ((p.width * p.depth * p.height) / ii.NumberOfItemsPerCask); - - DROP TABLE IF EXISTS tmp.item; - CREATE 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(); - - SET @isTriggerDisabled = FALSE; - - 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(NOW()), CURDATE(), TIMESTAMPADD(DAY,1,CURDATE())); - - 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.agencyFk - 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,NOW()) <= 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.floramondo_getEntry(TIMESTAMPADD(DAY,travellingDays,vLanded), 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); - - -- Se eliminan las ofertas ya incluidas en las entradas - DELETE o - FROM edi.offer o - JOIN vn.item i ON i.supplyResponseFk = o.srId - JOIN vn.buy b ON i.id = b.itemFk - JOIN edi.warehouseFloramondo wf ON wf.entryFk = b.entryFk; - - -- Se inserta el resto - SET vLastInserted := NOW(); - - -- Inserta la oferta - INSERT INTO vn.buy(entryFk, - itemFk, - quantity, - buyingValue, - stickers, - packing, - `grouping`, - groupingMode, - packageFk, - deliveryFk) - - SELECT wf.entryFk, - i.id, - o.NumberOfUnits * o.NumberOfItemsPerCask as quantity, - o.Price, - o.NumberOfUnits as etiquetas, - o.NumberOfItemsPerCask as packing, - GREATEST(1, IFNULL(o.MinimumQuantity,0)) * o.NumberOfItemsPerCask as `grouping`, - 2, -- Obliga al 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; -- llevar esta linea i mirar de crear els packages a temps real - - DROP TEMPORARY TABLE IF EXISTS tmp.buyRecalc; - - CREATE TEMPORARY TABLE tmp.buyRecalc - SELECT b.id - FROM vn.buy b - JOIN edi.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; - - DROP TABLE tmp.item; - - 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; - - INSERT INTO edi.log(tableName, fieldName,fieldValue) - VALUES('floramondo_offerRefresh','Tiempo de proceso',TIMEDIFF(NOW(),vStartingTime)); - - - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `floramondo_offerRefresh_beta` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `floramondo_offerRefresh_beta`() -proc: BEGIN - - DECLARE vLanded DATETIME; - DECLARE done 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 cur1 CURSOR FOR - SELECT id - FROM edi.item_free; - - DECLARE cur2 CURSOR FOR - SELECT srId - FROM itemToInsert; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - DECLARE EXIT HANDLER FOR SQLSTATE '45000' - BEGIN - ROLLBACK; - RESIGNAL; - END; - - SET vStartingTime = 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; - - -- Refresca las fotos de los items existentes, con prioridad baja (0.7 seg) - 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 - WHERE i.image != edi.imageName(sr.PictureReference) - AND sr.NumberOfUnits > 0; - - -- 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; - - DROP TEMPORARY TABLE IF EXISTS tmp; - CREATE TEMPORARY TABLE tmp (INDEX (`Item_ArticleCode`)) ENGINE = MEMORY - SELECT t.* - FROM ( - SELECT * - FROM edi.supplyOffer - ORDER BY (MarketPlaceID = vAalsmeerMarketPlaceID) DESC, NumberOfUnits DESC) t + FROM edi.supplyOffer + ORDER BY (MarketPlaceID = vAalsmeerMarketPlaceID) DESC, NumberOfUnits DESC LIMIT 10000000000000000000) t GROUP BY t.srId; DROP TEMPORARY TABLE IF EXISTS edi.offer; @@ -11332,18 +9633,18 @@ proc: BEGIN 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, + 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, + 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 @@ -11353,7 +9654,7 @@ proc: BEGIN 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 + 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 @@ -11366,7 +9667,7 @@ proc: BEGIN LEFT JOIN edi.`value` ev6 ON ev6.type_id = eif6.feature AND so.s6 = ev6.type_value ORDER BY Price; - DROP TEMPORARY TABLE tmp; + DROP TEMPORARY TABLE tmp; DELETE o FROM edi.offer o @@ -11384,41 +9685,41 @@ proc: BEGIN 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; - + 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 > TIMESTAMPADD(WEEK, -1, CURDATE()) - 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 > TIMESTAMPADD(WEEK, -1, CURDATE()) + 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 > TIMESTAMPADD(WEEK, -1, util.VN_CURDATE()) + 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 > TIMESTAMPADD(WEEK, -1, util.VN_CURDATE()) SET i.supplyResponseFk = o.srID - WHERE ( sr.ID IS NULL - OR sr.NumberOfUnits = 0 - OR di.LatestOrderDateTime < NOW() + 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; - -- select now(),'Antes de crear ITO'; + AND it.isInventory + AND t.id IS NULL + AND po.id IS NULL; + -- select util.VN_NOW(),'Antes de crear ITO'; DROP TEMPORARY TABLE IF EXISTS itemToInsert; CREATE TEMPORARY TABLE itemToInsert ENGINE = MEMORY SELECT o.*, CAST(NULL AS DECIMAL(6,0)) as itemFk - FROM edi.offer o + FROM edi.offer o LEFT JOIN vn.item i ON i.supplyResponseFk = o.srId WHERE i.id IS NULL LIMIT vMaxNewItems; @@ -11426,202 +9727,203 @@ proc: BEGIN -- Reciclado de nº de item OPEN cur1; OPEN cur2; - + read_loop: LOOP - + FETCH cur2 INTO vSupplyResponseFk; FETCH cur1 INTO vFreeId; IF done THEN - LEAVE read_loop; + 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, - expenceFk, - typeFk, - intrastatFk, - originFk, - supplyResponseFk, - numberOfItemsPerCask, - embalageCode, - quality, - isFloramondo) + INSERT INTO vn.item(id, + `name`, + longName, + subName, + expenceFk, + typeFk, + intrastatFk, + originFk, + supplyResponseFk, + numberOfItemsPerCask, + embalageCode, + quality, + isFloramondo) SELECT iti.itemFk, iti.product_name, iti.product_name, - iti.company_name, + iti.company_name, iti.expenseFk, iti.itemTypeFk, iti.intrastatFk, iti.originFk, iti.`srId`, iti.NumberOfItemsPerCask, - iti.EmbalageCode, - iti.Quality, - TRUE + iti.EmbalageCode, + iti.Quality, + TRUE FROM itemToInsert iti; - + 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; - INSERT INTO edi.log(tableName, fieldName,fieldValue) + INSERT INTO edi.log(tableName, fieldName,fieldValue) SELECT 'itemImageQueue','NumImagenesPtes', COUNT(*) - FROM vn.itemImageQueue + 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; -- Inserta los tags sólo en los articulos nuevos - -- desabilita el trigger para recalcular los tags al final - SET @isTriggerDisabled = TRUE; - + -- desabilita el trigger para recalcular los tags al final + SET @isTriggerDisabled = TRUE; + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , ii.product_name, 1 + 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`; - + JOIN vn.item i ON i.supplyResponseFk = ii.`srId` + WHERE NOT ISNULL(ii.product_name); + 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`; - + JOIN vn.item i ON i.supplyResponseFk = ii.`srId` + WHERE NOT ISNULL(ii.Quality); + 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`; - + JOIN vn.item i ON i.supplyResponseFk = ii.`srId` + WHERE NOT ISNULL(ii.company_name); + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , s1Value, 5 + 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 ISNULL(s1Value); - + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , s2Value, 6 + 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 ISNULL(s2Value); - + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , s3Value, 7 + 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 ISNULL(s3Value); - + WHERE NOT ISNULL(s3Value); + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , s4Value, 8 + 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 ISNULL(s4Value); - + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , s5Value, 9 + 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 ISNULL(s5Value); - + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , s6Value, 10 + 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 ISNULL(s6Value); - + INSERT IGNORE INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id, IFNULL(ink.name, ik.color), 11 + 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 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 + WHERE ink.name IS NOT NULL OR ik.color IS NOT NULL; UPDATE vn.item i JOIN itemToInsert ii ON i.supplyResponseFk = ii.`srId` - JOIN vn.packaging p ON p.id LIKE ii.EmbalageCode AND hasCompressionVariations - JOIN vn.itemTag diameter ON diameter.itemFk = i.id - JOIN vn.tag tDiameter ON tDiameter.overwrite = 'diameter' AND tDiameter.id = diameter.tagFk - JOIN vn.itemTag size ON size.itemFk = i.id - JOIN vn.tag tSize ON tSize.overwrite = 'size' AND tSize.id = size.tagFk - SET i.`compression` = - (PI() * POW(diameter.`value`/ 2, 2) * size.`value`) - / - ((p.width * p.depth * p.height) / ii.NumberOfItemsPerCask); - + JOIN vn.packaging p ON p.id LIKE ii.EmbalageCode -- AND hasCompressionVariations + JOIN vn.itemTag it ON it.itemFk = i.id + JOIN vn.tag tSize ON tSize.overwrite = 'size' AND tSize.id = it.tagFk + JOIN vn.volumeConfig vc + SET i.packingOut = vc.standardFlowerBox * 1000 + * ii.NumberOfItemsPerCask + / (p.width * p.depth * IFNULL(p.height, it.value )); + DROP TABLE IF EXISTS tmp.item; CREATE TABLE tmp.item (PRIMARY KEY (id)) - SELECT i.id FROM vn.item i + SELECT i.id FROM vn.item i JOIN itemToInsert ii ON i.supplyResponseFk = ii.`srId`; - + CALL vn.item_refreshTags(); - - SET @isTriggerDisabled = FALSE; - + + SET @isTriggerDisabled = FALSE; + SELECT MIN(LatestDeliveryDateTime) INTO vLanded - FROM edi.supplyResponse sr + 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 + JOIN vn.floramondoConfig fc WHERE mp.isLatestOrderDateTimeRelevant - AND di.LatestOrderDateTime > IF(fc.MaxLatestOrderHour > HOUR(NOW()), CURDATE(), TIMESTAMPADD(DAY,1,CURDATE())); - - UPDATE vn.floramondoConfig + AND di.LatestOrderDateTime > IF(fc.MaxLatestOrderHour > HOUR(util.VN_NOW()), util.VN_CURDATE(), TIMESTAMPADD(DAY,1,util.VN_CURDATE())); + + 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.agencyFk + 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,NOW()) <= NOW() - OR i.supplyResponseFk IS NULL - OR sr.NumberOfUnits = 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.floramondo_getEntry(TIMESTAMPADD(DAY,travellingDays,vLanded), warehouseFk); - - - IF vLanded IS NOT NULL THEN - -- actualiza la oferta existente + SET entryFk = vn.entry_getForLogiflora(TIMESTAMPADD(DAY,travellingDays,vLanded), 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 @@ -11630,29 +9932,22 @@ proc: BEGIN b.buyingValue = o.price WHERE (b.quantity <> o.NumberOfUnits * o.NumberOfItemsPerCask OR b.buyingValue <> o.price); - -- Se eliminan las ofertas ya incluidas en las entradas - DELETE o - FROM edi.offer o - JOIN vn.item i ON i.supplyResponseFk = o.srId - JOIN vn.buy b ON i.id = b.itemFk - JOIN edi.warehouseFloramondo wf ON wf.entryFk = b.entryFk; - -- Se inserta el resto - SET vLastInserted := NOW(); - - -- Inserta la oferta - INSERT INTO vn.buy(entryFk, - itemFk, - quantity, - buyingValue, - stickers, - packing, - `grouping`, - groupingMode, - packageFk, - deliveryFk) + SET vLastInserted := util.VN_NOW(); - SELECT wf.entryFk, + -- Inserta la oferta + INSERT INTO vn.buy( entryFk, + itemFk, + quantity, + buyingValue, + stickers, + packing, + `grouping`, + groupingMode, + packageFk, + deliveryFk) + + SELECT wf.entryFk, i.id, o.NumberOfUnits * o.NumberOfItemsPerCask as quantity, o.Price, @@ -11664,560 +9959,137 @@ proc: BEGIN 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; -- llevar esta linea i mirar de crear els packages a temps real - + 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 ISNULL(b.id); -- llevar esta linea i mirar de crear els packages a temps real + DROP TEMPORARY TABLE IF EXISTS tmp.buyRecalc; - + CREATE TEMPORARY TABLE tmp.buyRecalc - SELECT b.id + SELECT b.id FROM vn.buy b JOIN edi.warehouseFloramondo wf ON wf.entryFk = b.entryFk WHERE b.created >= vLastInserted; - + CALL vn.buy_recalcPrices(); - - UPDATE edi.offerList o + + 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 + 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 + + 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 + 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; - - DROP TABLE tmp.item; - COMMIT; + + END IF; + + DROP TEMPORARY TABLE + edi.offer, + itemToInsert; + + DROP TABLE tmp.item; + + 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; - INSERT INTO edi.log(tableName, fieldName,fieldValue) - VALUES('floramondo_offerRefresh','Tiempo de proceso',TIMEDIFF(NOW(),vStartingTime)); - - - + INSERT INTO edi.log(tableName, fieldName,fieldValue) + VALUES('floramondo_offerRefresh','Tiempo de proceso',TIMEDIFF(util.VN_NOW(),vStartingTime)); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `floramondo_offerRefresh_beta2` */; +/*!50003 DROP PROCEDURE IF EXISTS `item_freeAdd` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `floramondo_offerRefresh_beta2`() -proc: BEGIN +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_freeAdd`() +BEGIN - DECLARE vLanded DATETIME; - DECLARE done 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 cur1 CURSOR FOR - SELECT id - FROM edi.item_free; - - DECLARE cur2 CURSOR FOR - SELECT srId - FROM itemToInsert; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - DECLARE EXIT HANDLER FOR SQLSTATE '45000' - BEGIN - ROLLBACK; - RESIGNAL; - END; - - SET vStartingTime = NOW(); + /** + * Rellena la tabla item_free con los id ausentes en vn.item + * + */ - TRUNCATE edi.offerList ; + DECLARE vCounter INT DEFAULT 400000; - 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; - - -- Refresca las fotos de los items existentes, con prioridad baja (0.7 seg) - 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 - WHERE i.image != edi.imageName(sr.PictureReference) - AND sr.NumberOfUnits > 0; - - -- 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; - - DROP TEMPORARY TABLE IF EXISTS tmp; - CREATE TEMPORARY TABLE tmp (INDEX (`Item_ArticleCode`)) ENGINE = MEMORY - SELECT t.* - FROM ( - SELECT * - FROM edi.supplyOffer - ORDER BY (MarketPlaceID = vAalsmeerMarketPlaceID) DESC, NumberOfUnits DESC) t - GROUP BY t.srId - ; + DECLARE vCounterNewItems INT DEFAULT 0; - DROP TEMPORARY TABLE IF EXISTS edi.offer; - CREATE 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; + DECLARE vMaxItem INT; - DROP TEMPORARY TABLE tmp; + DECLARE vExists BOOLEAN DEFAULT FALSE; - 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); + SELECT MAX(id) + INTO vMaxItem + FROM vn.item; - 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 > TIMESTAMPADD(WEEK, -1, CURDATE()) - 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 > TIMESTAMPADD(WEEK, -1, CURDATE()) - SET i.supplyResponseFk = o.srID - WHERE ( sr.ID IS NULL - OR sr.NumberOfUnits = 0 - OR di.LatestOrderDateTime < NOW() - OR di.ID IS NULL) - AND it.isInventory - AND t.id IS NULL - AND po.id IS NULL; - -- select now(),'Antes de crear ITO'; - DROP TEMPORARY TABLE IF EXISTS itemToInsert; - CREATE TEMPORARY TABLE itemToInsert ENGINE = MEMORY - SELECT o.*, CAST(NULL AS DECIMAL(6,0)) as itemFk - FROM edi.offer o - LEFT JOIN vn.item i ON i.supplyResponseFk = o.srId - WHERE i.id IS NULL - LIMIT vMaxNewItems; + DROP TEMPORARY TABLE IF EXISTS tmp.itemBusy; + CREATE TEMPORARY TABLE tmp.itemBusy + (id INT PRIMARY KEY) + SELECT i.id + FROM vn.item i + WHERE id >= 400000 + UNION ALL + SELECT ifr.id + FROM edi.item_free ifr; - -- Reciclado de nº de item - OPEN cur1; - OPEN cur2; - - read_loop: LOOP - - FETCH cur2 INTO vSupplyResponseFk; - FETCH cur1 INTO vFreeId; + WHILE vCounter < vMaxItem DO + + SET vCounter = vCounter + 1; + + SELECT count(*) INTO vExists + FROM tmp.itemBusy + WHERE id = vCounter; + + IF NOT vExists THEN + + SET vCounterNewItems = vCounterNewItems + 1; + + INSERT INTO edi.item_free(id) + VALUES (vCounter); - IF done THEN - LEAVE read_loop; END IF; - UPDATE itemToInsert - SET itemFk = vFreeId - WHERE srId = vSupplyResponseFk; - - END LOOP; + END WHILE; - CLOSE cur1; - CLOSE cur2; - - -- Insertamos todos los items en Articles de la oferta - INSERT INTO vn.item( id, - `name`, - longName, - subName, - expenceFk, - 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; - - 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; - - 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; - - -- Inserta los tags sólo en los articulos nuevos - - -- desabilita el trigger para recalcular los tags al final - SET @isTriggerDisabled = TRUE; - - 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`; - - 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`; - - 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`; - - 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 ISNULL(s1Value); - - 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 ISNULL(s2Value); - - 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 ISNULL(s3Value); - - 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 ISNULL(s4Value); - - 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 ISNULL(s5Value); - - 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 ISNULL(s6Value); - - 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; - - UPDATE vn.item i - JOIN itemToInsert ii ON i.supplyResponseFk = ii.`srId` - JOIN vn.packaging p ON p.id LIKE ii.EmbalageCode AND hasCompressionVariations - JOIN vn.itemTag diameter ON diameter.itemFk = i.id - JOIN vn.tag tDiameter ON tDiameter.overwrite = 'diameter' AND tDiameter.id = diameter.tagFk - JOIN vn.itemTag size ON size.itemFk = i.id - JOIN vn.tag tSize ON tSize.overwrite = 'size' AND tSize.id = size.tagFk - SET i.`compression` = - (PI() * POW(diameter.`value`/ 2, 2) * size.`value`) - / - ((p.width * p.depth * p.height) / ii.NumberOfItemsPerCask); - - DROP TABLE IF EXISTS tmp.item; - CREATE 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(); - - SET @isTriggerDisabled = FALSE; - - 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(NOW()), CURDATE(), TIMESTAMPADD(DAY,1,CURDATE())); - - 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.agencyFk - 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,NOW()) <= 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.floramondo_getEntry(TIMESTAMPADD(DAY,travellingDays,vLanded), 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); - - -- Se eliminan las ofertas ya incluidas en las entradas - DELETE o - FROM edi.offer o - JOIN vn.item i ON i.supplyResponseFk = o.srId - JOIN vn.buy b ON i.id = b.itemFk - JOIN edi.warehouseFloramondo wf ON wf.entryFk = b.entryFk; - - -- Se inserta el resto - SET vLastInserted := NOW(); - - -- Inserta la oferta - INSERT INTO vn.buy(entryFk, - itemFk, - quantity, - buyingValue, - stickers, - packing, - `grouping`, - groupingMode, - packageFk, - deliveryFk) - - SELECT wf.entryFk, - i.id, - o.NumberOfUnits * o.NumberOfItemsPerCask as quantity, - o.Price, - o.NumberOfUnits as etiquetas, - o.NumberOfItemsPerCask as packing, - GREATEST(1, IFNULL(o.MinimumQuantity,0)) * o.NumberOfItemsPerCask as `grouping`, - 2, -- Obliga al 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; -- llevar esta linea i mirar de crear els packages a temps real - - DROP TEMPORARY TABLE IF EXISTS tmp.buyRecalc; - - CREATE TEMPORARY TABLE tmp.buyRecalc - SELECT b.id - FROM vn.buy b - JOIN edi.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; - - DROP TABLE tmp.item; - - 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; - - INSERT INTO edi.log(tableName, fieldName,fieldValue) - VALUES('floramondo_offerRefresh','Tiempo de proceso',TIMEDIFF(NOW(),vStartingTime)); - - + DROP TEMPORARY TABLE tmp.itemBusy; END ;; DELIMITER ; @@ -12225,445 +10097,191 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `floramondo_offerRefresh__` */; +/*!50003 DROP PROCEDURE IF EXISTS `item_getNewByEkt` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `floramondo_offerRefresh__`() -proc: BEGIN +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_getNewByEkt`(vEktFk INT, OUT vItemFk INT) +BEGIN - DECLARE vLanded DATETIME; - DECLARE done 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 cur1 CURSOR FOR - SELECT id - FROM edi.item_free; - - DECLARE cur2 CURSOR FOR - SELECT srId - FROM itemToInsert; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - DECLARE EXIT HANDLER FOR SQLSTATE '45000' - BEGIN - ROLLBACK; - RESIGNAL; - END; - - SET vStartingTime = NOW(); +/** + * Devuelve un número nuevo de item a partir de un registro de la tabla edi.ekt + * + * @param vEktFk Identificador de la tabla edi.ekt + */ - CALL util.debugAdd('edi.floramondo_offerRefresh',CONCAT('MaxItemId:' ,(SELECT MAX(id) FROM vn.item))); - - -- CALL vn.clean_logiflora(); - - -- Refresca las fotos de los items existentes, con prioridad baja (0.7 seg) - 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 - WHERE i.image != edi.imageName(sr.PictureReference) - AND sr.NumberOfUnits > 0; - - -- 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; - - DROP TEMPORARY TABLE IF EXISTS tmp; - CREATE TEMPORARY TABLE tmp (INDEX (`Item_ArticleCode`)) ENGINE = MEMORY - SELECT t.*, - IFNULL(idt.itemTypeFk, igo.itemTypeFk) itemTypeFk, - igo.expenseFk , - igo.intrastatFk , - igo.originFk - FROM ( - SELECT * - FROM edi.supplyOffer - ORDER BY (MarketPlaceID = vAalsmeerMarketPlaceID) DESC, NumberOfUnits DESC) t - JOIN edi.item_groupToOffer igo ON igo.group_code = t.group_id - LEFT JOIN edi.item_defaultType idt ON idt.item_id = t.Item_ArticleCode - GROUP BY t.srId - -- GROUP BY Item_ArticleCode, s1, s2, s3, s4, s5, s6, company_name, Quality, NumberOfItemsPerCask, EmbalageCode, Price, PictureReference - ; - - -- select now(),'Antes de crear edi.offer'; + START TRANSACTION; - DROP TEMPORARY TABLE IF EXISTS edi.offer; - CREATE 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; + SELECT MIN(id) id INTO vItemFk + FROM edi.item_free; - DROP TEMPORARY TABLE tmp; + DELETE FROM edi.item_free + WHERE id = vItemFk; - 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); + COMMIT; - 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 > TIMESTAMPADD(WEEK, -1, CURDATE()) - 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 > TIMESTAMPADD(WEEK, -1, CURDATE()) - SET i.supplyResponseFk = o.srID - WHERE ( sr.ID IS NULL - OR sr.NumberOfUnits = 0 - OR di.LatestOrderDateTime < NOW() - OR di.ID IS NULL) - AND it.isInventory - AND t.id IS NULL - AND po.id IS NULL; - -- select now(),'Antes de crear ITO'; - DROP TEMPORARY TABLE IF EXISTS itemToInsert; - CREATE TEMPORARY TABLE itemToInsert ENGINE = MEMORY - SELECT o.*, CAST(NULL AS DECIMAL(6,0)) as itemFk - FROM edi.offer o - LEFT JOIN vn.item i ON i.supplyResponseFk = o.srId - WHERE i.id IS NULL - LIMIT vMaxNewItems; + IF ISNULL(vItemFk) THEN + SELECT MAX(i.id) + 1 + INTO vItemFk + FROM vn.item i; + END IF; - -- Reciclado de nº de item - OPEN cur1; - OPEN cur2; - - read_loop: LOOP - - FETCH cur2 INTO vSupplyResponseFk; - FETCH cur1 INTO vFreeId; - IF done THEN - LEAVE read_loop; - END IF; - UPDATE itemToInsert - SET itemFk = vFreeId - WHERE srId = vSupplyResponseFk; - - END LOOP; + INSERT INTO vn.item(id, + `name`, + longName, + subName, + expenceFk, + typeFk, + intrastatFk, + originFk, + numberOfItemsPerCask, + embalageCode, + quality, + isFloramondo) + SELECT vItemFk, + e.item, + e.item, + e.item, + igto.expenseFk , + igto.itemTypeFk , + igto.intrastatFk , + igto.originFk, + e.pac, + least(IF((e.package = 800),((e.package * 10) + e.pac), e.package), ifnull(idt.bucket_id, '999')) packageFk, + e.cat, + TRUE + FROM edi.ekt e + JOIN edi.item i ON i.id = e.`ref` + JOIN edi.item_groupToOffer igto ON igto.group_code = i.group_id + LEFT JOIN edi.item_defaultType idt ON idt.item_id = e.`ref` + WHERE e.id = vEktFk; - CLOSE cur1; - CLOSE cur2; + SET @isTriggerDisabled = TRUE; - -- Insertamos todos los items en Articles de la oferta - INSERT INTO vn.item( id, - `name`, - longName, - subName, - expenceFk, - 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; - - 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; - - 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; - - -- Inserta los tags sólo en los articulos nuevos - - -- desabilita el trigger para recalcular los tags al final - SET @isTriggerDisabled = TRUE; - INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) - SELECT i.id, t.id , ii.product_name, 1 - FROM itemToInsert ii + SELECT vItemFk, t.id , e.item , 1 + FROM edi.ekt e JOIN vn.tag t ON t.`name` = 'Producto' - JOIN vn.item i ON i.supplyResponseFk = ii.`srId`; - - 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`; - - 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`; - - 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 s1Value != ''; - - 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 s2Value != ''; - - 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 s3Value != ''; - - 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 s4Value != ''; - - 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 s5Value != ''; - - 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 s6Value != ''; - - 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; + WHERE e.id = vEktFk + AND NOT ISNULL(e.item); + + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) + SELECT vItemFk, t.id , e.cat , 3 + FROM edi.ekt e + JOIN vn.tag t ON t.`name` = 'Calidad' + WHERE e.id = vEktFk + AND NOT ISNULL(e.cat); + + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) + SELECT vItemFk, t.id , s.company_name , 4 + FROM edi.ekt e + JOIN edi.supplier s ON s.supplier_id = e.pro + JOIN vn.tag t ON t.`name` = 'Productor' + WHERE e.id = vEktFk + AND NOT ISNULL(s.company_name); + + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) + SELECT vItemFk, t.id , e.s1, 5 + FROM edi.ekt e + LEFT JOIN edi.item_feature eif ON eif.item_id = e.`ref` + AND eif.presentation_order = 1 + AND eif.expiry_date IS NULL + LEFT JOIN edi.`value` ev ON ev.type_id = eif.feature + AND e.s1 = ev.type_value + JOIN vn.tag t ON t.ediTypeFk = eif.feature + WHERE e.id = vEktFk + AND NOT ISNULL(e.s1); + + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) + SELECT vItemFk, t.id , e.s2, 6 + FROM edi.ekt e + LEFT JOIN edi.item_feature eif ON eif.item_id = e.`ref` + AND eif.presentation_order = 2 + AND eif.expiry_date IS NULL + LEFT JOIN edi.`value` ev ON ev.type_id = eif.feature + AND e.s2 = ev.type_value + JOIN vn.tag t ON t.ediTypeFk = eif.feature + WHERE e.id = vEktFk + AND NOT ISNULL(e.s2); + + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) + SELECT vItemFk, t.id , e.s3, 7 + FROM edi.ekt e + LEFT JOIN edi.item_feature eif ON eif.item_id = e.`ref` + AND eif.presentation_order = 3 + AND eif.expiry_date IS NULL + LEFT JOIN edi.`value` ev ON ev.type_id = eif.feature + AND e.s3 = ev.type_value + JOIN vn.tag t ON t.ediTypeFk = eif.feature + WHERE e.id = vEktFk + AND NOT ISNULL(e.s3); + + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) + SELECT vItemFk, t.id , e.s4, 8 + FROM edi.ekt e + LEFT JOIN edi.item_feature eif ON eif.item_id = e.`ref` + AND eif.presentation_order = 4 + AND eif.expiry_date IS NULL + LEFT JOIN edi.`value` ev ON ev.type_id = eif.feature + AND e.s4 = ev.type_value + JOIN vn.tag t ON t.ediTypeFk = eif.feature + WHERE e.id = vEktFk + AND NOT ISNULL(e.s4); + + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) + SELECT vItemFk, t.id , e.s5, 9 + FROM edi.ekt e + LEFT JOIN edi.item_feature eif ON eif.item_id = e.`ref` + AND eif.presentation_order = 5 + AND eif.expiry_date IS NULL + LEFT JOIN edi.`value` ev ON ev.type_id = eif.feature + AND e.s5 = ev.type_value + JOIN vn.tag t ON t.ediTypeFk = eif.feature + WHERE e.id = vEktFk + AND NOT ISNULL(e.s5); + + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) + SELECT vItemFk, t.id , e.s6, 10 + FROM edi.ekt e + LEFT JOIN edi.item_feature eif ON eif.item_id = e.`ref` + AND eif.presentation_order = 6 + AND eif.expiry_date IS NULL + LEFT JOIN edi.`value` ev ON ev.type_id = eif.feature + AND e.s6 = ev.type_value + JOIN vn.tag t ON t.ediTypeFk = eif.feature + WHERE e.id = vEktFk + AND NOT ISNULL(e.s6); + + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) + SELECT vItemFk, t.id, IFNULL(ink.name, ik.color), 11 + FROM edi.ekt e + JOIN vn.tag t ON t.`name` = 'Color' + LEFT JOIN edi.feature f ON f.item_id = e.`ref` + 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 = e.item + WHERE e.id = vEktFk + AND ( ink.name IS NOT NULL + OR ik.color IS NOT NULL) + LIMIT 1; - UPDATE vn.item i - JOIN itemToInsert ii ON i.supplyResponseFk = ii.`srId` - JOIN vn.packaging p ON p.id LIKE ii.EmbalageCode AND hasCompressionVariations - JOIN vn.itemTag diameter ON diameter.itemFk = i.id - JOIN vn.tag tDiameter ON tDiameter.overwrite = 'diameter' AND tDiameter.id = diameter.tagFk - JOIN vn.itemTag size ON size.itemFk = i.id - JOIN vn.tag tSize ON tSize.overwrite = 'size' AND tSize.id = size.tagFk - SET i.`compression` = - (PI() * POW(diameter.`value`/ 2, 2) * size.`value`) - / - ((p.width * p.depth * p.height) / ii.NumberOfItemsPerCask); - DROP TABLE IF EXISTS tmp.item; + CREATE TABLE tmp.item (PRIMARY KEY (id)) - SELECT i.id FROM vn.item i - JOIN itemToInsert ii ON i.supplyResponseFk = ii.`srId`; - + SELECT vItemFk id ; + CALL vn.item_refreshTags(); - - SET @isTriggerDisabled = FALSE; - - 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(NOW()), CURDATE(), TIMESTAMPADD(DAY,1,CURDATE())); - - 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.agencyFk - 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,NOW()) <= 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.floramondo_getEntry(TIMESTAMPADD(DAY,travellingDays,vLanded), 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); - -- Se eliminan las ofertas ya incluidas en las entradas - DELETE o - FROM edi.offer o - JOIN vn.item i ON i.supplyResponseFk = o.srId - JOIN vn.buy b ON i.id = b.itemFk - JOIN edi.warehouseFloramondo wf ON wf.entryFk = b.entryFk; - - -- Se inserta el resto - SET vLastInserted := NOW(); - - -- Inserta la oferta - INSERT INTO vn.buy(entryFk, - itemFk, - quantity, - buyingValue, - stickers, - packing, - `grouping`, - groupingMode, - packageFk, - deliveryFk) - - SELECT wf.entryFk, - i.id, - o.NumberOfUnits * o.NumberOfItemsPerCask as quantity, - o.Price, - o.NumberOfUnits as etiquetas, - o.NumberOfItemsPerCask as packing, - GREATEST(1, IFNULL(o.MinimumQuantity,0)) * o.NumberOfItemsPerCask as `grouping`, - 2, -- Obliga al Packing - o.embalageCode, - o.diId - FROM edi.offer o - JOIN vn.item i ON i.supplyResponseFk = o.srId - -- JOIN vn.itemType it ON it.id = i.typeFk - JOIN edi.warehouseFloramondo wf - JOIN vn.packaging p ON p.id LIKE o.embalageCode; -- llevar esta linea i mirar de crear els packages a temps real - - DROP TEMPORARY TABLE IF EXISTS tmp.buyRecalc; - - CREATE TEMPORARY TABLE tmp.buyRecalc - SELECT b.id - FROM vn.buy b - JOIN edi.warehouseFloramondo wf ON wf.entryFk = b.entryFk - WHERE b.created >= vLastInserted; - - CALL vn.buy_recalcPrices(); - - END IF; - - DROP TEMPORARY TABLE - edi.offer, - itemToInsert; - - DROP TABLE tmp.item; - - 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; - - INSERT INTO edi.log(tableName, fieldName,fieldValue) - VALUES('floramondo_offerRefresh','Tiempo de proceso',TIMEDIFF(NOW(),vStartingTime)); + SET @isTriggerDisabled = FALSE; END ;; DELIMITER ; @@ -12677,11 +10295,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `mail_new`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `mail_new`( vMessageId VARCHAR(100) ,vSender VARCHAR(150) ,OUT vSelf INT @@ -12710,7 +10328,7 @@ BEGIN sender = vSender, senderFk = vSenderId, messageId = vMessageId; - + IF vIsDuplicated THEN SELECT id INTO vSelf FROM mail @@ -12724,59 +10342,65 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `orderLog__` */; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_calcCompByFloramondo` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `orderLog__`(vItemFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_calcCompByFloramondo`(vSelf INT) BEGIN - - DECLARE vSupplyResponseFk INT; - DECLARE vDescription VARCHAR(100); - - SELECT supplyResponseFk, CONCAT(id, ' ',longName) INTO vSupplyResponseFk, vDescription - FROM vn.item - WHERE id = vItemFk; - - SELECT * FROM - ( - SELECT 'Cliente confirma' accion, or2.created hora, amount Cantidad - FROM hedera.order_row or2 - JOIN vn.item i ON i.id = or2.item_id - WHERE i.supplyResponseFk = vSupplyResponseFk - - UNION ALL - - SELECT vDescription, NULL, NULL - - UNION ALL - - SELECT 'Cliente se conecta' , o.date_make , NULL - FROM hedera.`order` o - JOIN hedera.order_row or2 ON or2.order_id = o.id - JOIN vn.item i ON i.id = or2.item_id - WHERE i.supplyResponseFk = vSupplyResponseFk - - UNION ALL - - SELECT DISTINCT 'Subasta cambia cantidad', srl.created, srl.NumberOfUnitsNew * sr.NumberOfItemsPerCask - FROM edi.supplyResponseLog srl - JOIN edi.supplyResponse sr ON sr.ID = srl.supplyResponseFk - WHERE srl.supplyResponseFk = vSupplyResponseFk - - UNION ALL - - SELECT 'Linea de venta definitiva', s.created, s.quantity - FROM vn.sale s - JOIN vn.item i ON i.id = s.itemFk - WHERE i.supplyResponseFk = vSupplyResponseFk) sub - ORDER BY hora; + + /** + * Recalcula "a pelo" los componentes para un ticket de Floramondo + * + * Pendiente de concretar la solución cuando Logiflora conteste. + * + * @param vSelf Identificador de vn.ticket + */ + + CALL cache.last_buy_refresh(TRUE); + + DELETE sc.* + FROM vn.saleComponent sc + JOIN vn.sale s ON s.id = sc.saleFk + WHERE s.ticketFk = vSelf; + + UPDATE vn.sale s + JOIN vn.item i ON i.id = s.itemFk + JOIN edi.floraHollandConfig fhc + LEFT JOIN cache.last_buy lb ON lb.item_id = i.id + LEFT JOIN vn.buy b ON b.id = lb.buy_id + LEFT JOIN vn.warehouse w ON w.id = lb.warehouse_id AND w.name = 'Floramondo' + SET s.price = b.buyingValue * (1 + fhc.floramondoMargin) + WHERE s.ticketFk = vSelf; + + INSERT INTO vn.saleComponent(saleFk, componentFk, value) + SELECT s.id, c.id, MAX(b.buyingValue) + FROM vn.sale s + JOIN vn.item i ON i.id = s.itemFk + LEFT JOIN cache.last_buy lb ON lb.item_id = i.id + LEFT JOIN vn.buy b ON b.id = lb.buy_id + LEFT JOIN vn.warehouse w ON w.id = lb.warehouse_id AND w.name = 'Floramondo' + JOIN vn.component c ON c.code = 'purchaseValue' + WHERE s.ticketFk = vSelf + GROUP BY s.id; + + INSERT INTO vn.saleComponent(saleFk, componentFk, value) + SELECT s.id, c.id, MAX(b.buyingValue) * fhc.floramondoMargin + FROM vn.sale s + JOIN vn.item i ON i.id = s.itemFk + JOIN edi.floraHollandConfig fhc + LEFT JOIN cache.last_buy lb ON lb.item_id = i.id + LEFT JOIN vn.buy b ON b.id = lb.buy_id + LEFT JOIN vn.warehouse w ON w.id = lb.warehouse_id AND w.name = 'Floramondo' + JOIN vn.component c ON c.code = 'margin' + WHERE s.ticketFk = vSelf + GROUP BY s.id; END ;; DELIMITER ; @@ -12789,7 +10413,7 @@ DELIMITER ; -- Current Database: `hedera` -- -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hedera` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hedera` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci */; USE `hedera`; @@ -12801,11 +10425,11 @@ DROP TABLE IF EXISTS `androidUser`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `androidUser` ( - `androidId` varchar(200) CHARACTER SET utf8 NOT NULL, + `androidId` varchar(200) CHARACTER SET utf8mb3 NOT NULL, `userFk` int(10) unsigned NOT NULL, PRIMARY KEY (`userFk`,`androidId`), CONSTRAINT `androidUser_ibfk_1` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12823,7 +10447,7 @@ CREATE TABLE `basketOrder` ( CONSTRAINT `basketOrder_ibfk_1` FOREIGN KEY (`orderFk`, `clientFk`) REFERENCES `order` (`id`, `customer_id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `basketOrder_ibfk_2` FOREIGN KEY (`orderFk`) REFERENCES `order` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `basketOrder_ibfk_3` FOREIGN KEY (`clientFk`) REFERENCES `vn`.`client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12834,10 +10458,10 @@ DROP TABLE IF EXISTS `browser`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `browser` ( - `name` varchar(30) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Browser name in browscap', + `name` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'Browser name in browscap', `version` float NOT NULL COMMENT 'Minimal version', UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='List of compatible web browsers and its version'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='List of compatible web browsers and its version'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12849,21 +10473,21 @@ DROP TABLE IF EXISTS `config`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `config` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, - `defaultLang` char(2) CHARACTER SET utf8 NOT NULL COMMENT 'The default language if none is specified', + `defaultLang` char(2) CHARACTER SET utf8mb3 NOT NULL COMMENT 'The default language if none is specified', `https` tinyint(3) unsigned NOT NULL COMMENT 'Wether to force de use of HTTPS', `cookieLife` smallint(5) unsigned NOT NULL COMMENT 'The cookies life, in days', - `jwtKey` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The key used to encode/decode JWT tokens', - `defaultForm` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Form loaded at web login', - `restUri` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The URI for rest service', - `testRestUri` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The URI for test rest service', - `guestUser` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Guest user name', - `testDomain` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The address for beta website', - `productionDomain` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The address for production website', - `pdfsDir` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Directory where PDFs are allocated', - `dmsDir` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Directory where documents are allocated', + `jwtKey` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'The key used to encode/decode JWT tokens', + `defaultForm` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'Form loaded at web login', + `restUri` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'The URI for rest service', + `testRestUri` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'The URI for test rest service', + `guestUser` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'Guest user name', + `testDomain` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'The address for beta website', + `productionDomain` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'The address for production website', + `pdfsDir` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'Directory where PDFs are allocated', + `dmsDir` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'Directory where documents are allocated', PRIMARY KEY (`id`), KEY `jwtkey_IX` (`jwtKey`) COMMENT 'Prueba de Ernesto 3.8.2020. MySQL se queja de no tener indices. Si, se que solo tiene un registro pero molesta para depurar otros.' -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Global configuration parameters'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Global configuration parameters'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12875,9 +10499,9 @@ DROP TABLE IF EXISTS `contact`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `contact` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `recipient` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `recipient` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12889,14 +10513,14 @@ DROP TABLE IF EXISTS `image`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `image` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `collectionFk` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `collectionFk` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `name` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `updated` int(11) DEFAULT NULL, - `nRefs` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Number of references, don''t modify this column manually', + `nRefs` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'Number of references, don''t modify this column manually', PRIMARY KEY (`id`), UNIQUE KEY `collection` (`collectionFk`,`name`), CONSTRAINT `image_ibfk_1` FOREIGN KEY (`collectionFk`) REFERENCES `imageCollection` (`name`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12908,24 +10532,24 @@ DROP TABLE IF EXISTS `imageCollection`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `imageCollection` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `desc` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `desc` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, `maxWidth` int(10) unsigned NOT NULL, `maxHeight` int(10) unsigned NOT NULL, - `model` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `property` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `schema` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Deprecated', - `table` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Deprecated', - `column` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Deprecated', - `readRoleFk` int(10) unsigned DEFAULT '1', - `writeRoleFk` int(10) unsigned DEFAULT '1', + `model` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `property` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `schema` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'Deprecated', + `table` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'Deprecated', + `column` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'Deprecated', + `readRoleFk` int(10) unsigned DEFAULT 1, + `writeRoleFk` int(10) unsigned DEFAULT 1, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`), KEY `role_id_writeRoleFk` (`writeRoleFk`), KEY `role_id_readRoleFk` (`readRoleFk`), CONSTRAINT `role_id_readRoleFk` FOREIGN KEY (`readRoleFk`) REFERENCES `account`.`role` (`id`) ON UPDATE CASCADE, CONSTRAINT `role_id_writeRoleFk` FOREIGN KEY (`writeRoleFk`) REFERENCES `account`.`role` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12940,11 +10564,11 @@ CREATE TABLE `imageCollectionSize` ( `collectionFk` int(10) unsigned NOT NULL, `width` int(10) unsigned NOT NULL, `height` int(10) unsigned NOT NULL, - `crop` tinyint(3) unsigned NOT NULL DEFAULT '0', + `crop` tinyint(3) unsigned NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `image_schema_id` (`collectionFk`), CONSTRAINT `imageCollectionSize_ibfk_1` FOREIGN KEY (`collectionFk`) REFERENCES `imageCollection` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12960,7 +10584,7 @@ CREATE TABLE `imageConfig` ( `useXsendfile` tinyint(4) NOT NULL COMMENT 'Whether to use the apache module XSendfile', `url` varchar(255) NOT NULL COMMENT 'Public URL where image are hosted', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COMMENT='Global image parameters'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='Global image parameters'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12971,12 +10595,12 @@ DROP TABLE IF EXISTS `language`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `language` ( - `code` varchar(10) CHARACTER SET utf8 NOT NULL, - `name` varchar(20) COLLATE utf8_unicode_ci NOT NULL, - `orgName` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `isActive` tinyint(1) NOT NULL DEFAULT '0', + `code` varchar(10) CHARACTER SET utf8mb3 NOT NULL, + `name` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, + `orgName` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `isActive` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12988,25 +10612,25 @@ DROP TABLE IF EXISTS `link`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `link` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `link` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `image` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `link` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `image` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `hedera`.`link_afterInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `hedera`.`link_afterInsert` AFTER INSERT ON `link` - FOR EACH ROW + FOR EACH ROW BEGIN CALL image_ref('link', NEW.image); END */;; @@ -13020,11 +10644,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `hedera`.`link_afterUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `hedera`.`link_afterUpdate` AFTER UPDATE ON `link` FOR EACH ROW BEGIN @@ -13043,13 +10667,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `hedera`.`link_afterDelete` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `hedera`.`link_afterDelete` AFTER DELETE ON `link` - FOR EACH ROW + FOR EACH ROW BEGIN CALL image_unref('link', OLD.image); END */;; @@ -13068,17 +10692,17 @@ DROP TABLE IF EXISTS `location`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `location` ( `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, - `lat` varchar(12) COLLATE utf8_unicode_ci NOT NULL, - `lng` varchar(12) COLLATE utf8_unicode_ci NOT NULL, - `title` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `address` varchar(75) COLLATE utf8_unicode_ci DEFAULT NULL, - `postcode` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `city` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `province` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `phone` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `language` char(2) COLLATE utf8_unicode_ci DEFAULT NULL, + `lat` varchar(12) COLLATE utf8mb3_unicode_ci NOT NULL, + `lng` varchar(12) COLLATE utf8mb3_unicode_ci NOT NULL, + `title` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `address` varchar(75) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `postcode` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `city` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `province` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `phone` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `language` char(2) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13090,15 +10714,15 @@ DROP TABLE IF EXISTS `mailConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `mailConfig` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Identifier', - `host` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'localhost' COMMENT 'SMTP host', - `port` smallint(6) NOT NULL DEFAULT '465' COMMENT 'SMTP port', - `secure` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'Wether to use a secure connection', - `sender` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The sender mail address', - `senderName` varchar(75) CHARACTER SET utf8 NOT NULL COMMENT 'The sender name', - `user` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'SMTP user', - `password` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'SMTP password, base64 encoded', + `host` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'localhost' COMMENT 'SMTP host', + `port` smallint(6) NOT NULL DEFAULT 465 COMMENT 'SMTP port', + `secure` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Wether to use a secure connection', + `sender` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'The sender mail address', + `senderName` varchar(75) CHARACTER SET utf8mb3 NOT NULL COMMENT 'The sender name', + `user` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'SMTP user', + `password` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'SMTP password, base64 encoded', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13111,7 +10735,7 @@ DROP TABLE IF EXISTS `mainAccount`; CREATE TABLE `mainAccount` ( `accountFk` mediumint(8) unsigned NOT NULL, PRIMARY KEY (`accountFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13137,16 +10761,16 @@ DROP TABLE IF EXISTS `menu`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `menu` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `description` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `path` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `path` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `roleFk` int(10) unsigned NOT NULL, `parentFk` int(10) unsigned DEFAULT NULL, - `displayOrder` tinyint(4) unsigned NOT NULL DEFAULT '1', + `displayOrder` tinyint(4) unsigned NOT NULL DEFAULT 1, PRIMARY KEY (`id`), KEY `group_id` (`roleFk`), KEY `parent` (`parentFk`), CONSTRAINT `menu_ibfk_1` FOREIGN KEY (`roleFk`) REFERENCES `account`.`role` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13158,11 +10782,11 @@ DROP TABLE IF EXISTS `message`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `message` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, - `code` char(35) COLLATE utf8_unicode_ci NOT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `code` char(35) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13174,11 +10798,11 @@ DROP TABLE IF EXISTS `metatag`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `metatag` ( `id` int(11) NOT NULL, - `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `content` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `content` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13201,7 +10825,6 @@ SET character_set_client = utf8; `isActive` tinyint NOT NULL, `longitude` tinyint NOT NULL, `latitude` tinyint NOT NULL, - `warehouseFk` tinyint NOT NULL, `agencyModeFk` tinyint NOT NULL ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; @@ -13488,32 +11111,32 @@ DROP TABLE IF EXISTS `news`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `news` ( `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, - `title` varchar(150) COLLATE utf8_unicode_ci NOT NULL, - `text` text COLLATE utf8_unicode_ci NOT NULL, - `image` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `title` varchar(150) COLLATE utf8mb3_unicode_ci NOT NULL, + `text` text COLLATE utf8mb3_unicode_ci NOT NULL, + `image` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `userFk` int(10) unsigned NOT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `priority` tinyint(3) unsigned NOT NULL DEFAULT '3', - `tag` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'new', + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `priority` tinyint(3) unsigned NOT NULL DEFAULT 3, + `tag` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'new', PRIMARY KEY (`id`), KEY `user` (`userFk`), KEY `tag` (`tag`), CONSTRAINT `news_ibfk_1` FOREIGN KEY (`userFk`) REFERENCES `account`.`account` (`id`) ON UPDATE CASCADE, CONSTRAINT `news_ibfk_2` FOREIGN KEY (`tag`) REFERENCES `newsTag` (`name`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `hedera`.`news_afterInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `hedera`.`news_afterInsert` AFTER INSERT ON `news` - FOR EACH ROW + FOR EACH ROW BEGIN CALL image_ref('news', NEW.image); END */;; @@ -13527,13 +11150,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `hedera`.`news_afterUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `hedera`.`news_afterUpdate` AFTER UPDATE ON `news` - FOR EACH ROW + FOR EACH ROW BEGIN IF !(NEW.image <=> OLD.image) THEN CALL image_unref('news', OLD.image); @@ -13550,13 +11173,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `hedera`.`news_afterDelete` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `hedera`.`news_afterDelete` AFTER DELETE ON `news` - FOR EACH ROW + FOR EACH ROW BEGIN CALL image_unref('news', OLD.image); END */;; @@ -13574,10 +11197,10 @@ DROP TABLE IF EXISTS `newsTag`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `newsTag` ( - `name` varchar(15) COLLATE utf8_unicode_ci NOT NULL, - `description` varchar(25) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` varchar(25) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13591,15 +11214,15 @@ CREATE TABLE `order` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `date_send` date NOT NULL DEFAULT '0000-00-00', `customer_id` int(11) NOT NULL, - `delivery_method_id` int(11) DEFAULT '3', - `agency_id` int(11) DEFAULT '2', + `delivery_method_id` int(11) DEFAULT 3, + `agency_id` int(11) DEFAULT 2, `address_id` int(11) DEFAULT NULL, - `company_id` smallint(5) unsigned NOT NULL DEFAULT '442', - `note` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `source_app` set('WEB','ANDROID','IOS','SALIX','TPV','TABLET_VN','') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'TPV', - `is_bionic` tinyint(1) NOT NULL DEFAULT '1', - `confirmed` tinyint(1) NOT NULL DEFAULT '0', - `date_make` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `company_id` smallint(5) unsigned NOT NULL DEFAULT 442, + `note` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `source_app` set('WEB','ANDROID','IOS','SALIX','TPV','TABLET_VN','') COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'TPV', + `is_bionic` tinyint(1) NOT NULL DEFAULT 1, + `confirmed` tinyint(1) NOT NULL DEFAULT 0, + `date_make` timestamp NOT NULL DEFAULT current_timestamp(), `first_row_stamp` datetime DEFAULT NULL, `confirm_date` datetime DEFAULT NULL, `taxableBase` decimal(10,2) NOT NULL, @@ -13617,30 +11240,30 @@ CREATE TABLE `order` ( CONSTRAINT `order_ibfk_5` FOREIGN KEY (`address_id`) REFERENCES `vn`.`address` (`id`) ON UPDATE CASCADE, CONSTRAINT `order_ibfk_8` FOREIGN KEY (`delivery_method_id`) REFERENCES `vn`.`deliveryMethod` (`id`) ON UPDATE CASCADE, CONSTRAINT `order_ibfk_9` FOREIGN KEY (`agency_id`) REFERENCES `vn`.`agencyMode` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER order_afterInsert -AFTER INSERT -ON `order` FOR EACH ROW -BEGIN +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `hedera`.`order_afterInsert` + AFTER INSERT ON `order` + FOR EACH ROW +BEGIN IF NEW.address_id = 2850 THEN -- Fallo que se insertan no se sabe como tickets en este cliente CALL vn.mail_insert( 'jgallego@verdnatura.es', 'noreply@verdnatura.es', 'Creada order al address 2850', - CONCAT(account.myUserGetName(), ' ha creado la order ',NEW.id) + CONCAT(account.myUser_getName(), ' ha creado la order ',NEW.id) ); - + END IF; END */;; DELIMITER ; @@ -13651,18 +11274,18 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `hedera`.`order_afterUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `hedera`.`order_afterUpdate` AFTER UPDATE ON `order` - FOR EACH ROW + FOR EACH ROW BEGIN CALL stock.log_add('order', NEW.id, OLD.id); - + IF !(OLD.address_id <=> NEW.address_id) OR !(OLD.company_id <=> NEW.company_id) OR !(OLD.customer_id <=> NEW.customer_id) THEN @@ -13675,7 +11298,7 @@ BEGIN 'jgallego@verdnatura.es', 'noreply@verdnatura.es', 'Actualizada order al address 2850', - CONCAT(account.myUserGetName(), ' ha creado la order ',NEW.id) + CONCAT(account.myUser_getName(), ' ha creado la order ',NEW.id) ); END IF; END */;; @@ -13689,13 +11312,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `hedera`.`order_beforeDelete` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `hedera`.`order_beforeDelete` BEFORE DELETE ON `order` - FOR EACH ROW + FOR EACH ROW BEGIN DELETE FROM orderRow WHERE orderFk = OLD.id; END */;; @@ -13716,7 +11339,7 @@ CREATE TABLE `orderConfig` ( `id` int(11) NOT NULL AUTO_INCREMENT, `employeeFk` int(10) unsigned NOT NULL, `defaultAgencyFk` int(11) DEFAULT NULL, - `guestMethod` varchar(45) CHARACTER SET utf8 NOT NULL, + `guestMethod` varchar(45) CHARACTER SET utf8mb3 NOT NULL, `guestAgencyFk` int(11) NOT NULL, `guestAddressFk` int(11) NOT NULL, `reserveTime` time NOT NULL, @@ -13733,7 +11356,7 @@ CREATE TABLE `orderConfig` ( CONSTRAINT `orderConfig_ibfk_3` FOREIGN KEY (`guestAgencyFk`) REFERENCES `vn`.`agencyMode` (`id`) ON UPDATE CASCADE, CONSTRAINT `orderConfig_ibfk_4` FOREIGN KEY (`defaultAgencyFk`) REFERENCES `vn`.`agencyMode` (`id`), CONSTRAINT `orderConfig_ibfk_5` FOREIGN KEY (`guestAddressFk`) REFERENCES `vn`.`address` (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13744,10 +11367,11 @@ DROP TABLE IF EXISTS `orderRecalc`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `orderRecalc` ( + `id` int(11) NOT NULL AUTO_INCREMENT, `orderFk` int(10) unsigned NOT NULL, - PRIMARY KEY (`orderFk`), - CONSTRAINT `orderRecalc_ibfk_1` FOREIGN KEY (`orderFk`) REFERENCES `order` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Queue of changed orders to recalc it''s total'; + PRIMARY KEY (`id`), + KEY `orderRecalc_ibfk_1` (`orderFk`) +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Queue of changed orders to recalc it''s total'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13759,45 +11383,47 @@ DROP TABLE IF EXISTS `orderRow`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `orderRow` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `orderFk` int(10) unsigned NOT NULL DEFAULT '0', - `itemFk` int(11) NOT NULL DEFAULT '0', + `orderFk` int(10) unsigned NOT NULL DEFAULT 0, + `itemFk` int(11) NOT NULL DEFAULT 0, `warehouseFk` int(11) DEFAULT NULL, `shipment` date DEFAULT NULL, - `amount` smallint(6) unsigned NOT NULL DEFAULT '0', + `amount` smallint(6) unsigned NOT NULL DEFAULT 0, `price` decimal(10,2) DEFAULT NULL, `rate` smallint(5) unsigned DEFAULT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `saleFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `item` (`itemFk`), KEY `order_id` (`orderFk`), KEY `created` (`created`), KEY `warehouse_shipment` (`warehouseFk`,`shipment`), + KEY `orderRow_ibfk_4` (`saleFk`), CONSTRAINT `orderRow_ibfk_2` FOREIGN KEY (`itemFk`) REFERENCES `vn`.`item` (`id`) ON UPDATE CASCADE, - CONSTRAINT `orderRow_ibfk_3` FOREIGN KEY (`orderFk`) REFERENCES `order` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + CONSTRAINT `orderRow_ibfk_3` FOREIGN KEY (`orderFk`) REFERENCES `order` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `orderRow_ibfk_4` FOREIGN KEY (`saleFk`) REFERENCES `vn`.`sale` (`id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `orderRow_beforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `hedera`.`orderRow_beforeInsert` BEFORE INSERT ON `orderRow` - FOR EACH ROW + FOR EACH ROW BEGIN DECLARE vIsFirst BOOL; - SELECT (first_row_stamp IS NULL) INTO vIsFirst - FROM `order` + SELECT (first_row_stamp IS NULL) INTO vIsFirst + FROM `order` WHERE id = NEW.orderFk; IF vIsFirst THEN - UPDATE `order` SET first_row_stamp = NOW() + UPDATE `order` SET first_row_stamp = util.VN_NOW() WHERE id = NEW.orderFk; END IF; END */;; @@ -13811,13 +11437,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `hedera`.`orderRow_afterInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `hedera`.`orderRow_afterInsert` AFTER INSERT ON `orderRow` - FOR EACH ROW + FOR EACH ROW BEGIN CALL stock.log_add('orderRow', NEW.id, NULL); CALL order_requestRecalc(NEW.orderFk); @@ -13832,11 +11458,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `hedera`.`orderRow_afterUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `hedera`.`orderRow_afterUpdate` AFTER UPDATE ON `orderRow` FOR EACH ROW BEGIN @@ -13854,11 +11480,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `hedera`.`orderRow_afterDelete` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `hedera`.`orderRow_afterDelete` AFTER DELETE ON `orderRow` FOR EACH ROW BEGIN @@ -13885,7 +11511,7 @@ CREATE TABLE `orderRowComponent` ( PRIMARY KEY (`rowFk`,`componentFk`), KEY `component_id` (`componentFk`), CONSTRAINT `orderRowComponent_ibfk_1` FOREIGN KEY (`rowFk`) REFERENCES `orderRow` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13948,12 +11574,12 @@ DROP TABLE IF EXISTS `restPriv`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `restPriv` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `methodPath` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `role` int(10) unsigned NOT NULL, + `methodPath` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `role` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`), KEY `role` (`role`), CONSTRAINT `restPriv_ibfk_1` FOREIGN KEY (`role`) REFERENCES `account`.`role` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13965,14 +11591,14 @@ DROP TABLE IF EXISTS `shelf`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `shelf` ( `id` int(10) unsigned NOT NULL, - `name` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, `nTrays` tinyint(3) unsigned NOT NULL, `trayheight` mediumint(8) unsigned NOT NULL, `topTrayHeight` mediumint(8) unsigned NOT NULL, `width` mediumint(8) unsigned NOT NULL, `depth` mediumint(8) unsigned NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Dimensiones de las estanterias'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Dimensiones de las estanterias'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13984,14 +11610,14 @@ DROP TABLE IF EXISTS `shelfConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `shelfConfig` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(25) COLLATE utf8_unicode_ci NOT NULL, - `namePrefix` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(25) COLLATE utf8mb3_unicode_ci NOT NULL, + `namePrefix` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `warehouse` smallint(5) unsigned NOT NULL, `family` smallint(5) unsigned NOT NULL, `shelf` int(10) unsigned NOT NULL, `maxAmount` smallint(5) unsigned DEFAULT NULL, `showPacking` tinyint(4) NOT NULL, - `stack` tinyint(4) NOT NULL DEFAULT '0', + `stack` tinyint(4) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `shelf_id` (`shelf`), KEY `family_id` (`family`), @@ -13999,7 +11625,7 @@ CREATE TABLE `shelfConfig` ( CONSTRAINT `shelfConfig_ibfk_1` FOREIGN KEY (`family`) REFERENCES `vn`.`itemType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `shelfConfig_ibfk_2` FOREIGN KEY (`shelf`) REFERENCES `shelf` (`id`) ON UPDATE CASCADE, CONSTRAINT `shelfConfig_ibfk_3` FOREIGN KEY (`warehouse`) REFERENCES `vn`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14011,13 +11637,13 @@ DROP TABLE IF EXISTS `social`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `social` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `title` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `link` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `icon` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `title` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `link` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `icon` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, `priority` tinyint(3) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `priority` (`priority`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14029,9 +11655,9 @@ DROP TABLE IF EXISTS `survey`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `survey` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `question` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `question` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14044,11 +11670,11 @@ DROP TABLE IF EXISTS `surveyAnswer`; CREATE TABLE `surveyAnswer` ( `id` int(10) unsigned NOT NULL, `surveyFk` int(10) unsigned NOT NULL, - `answer` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `votes` int(10) unsigned NOT NULL DEFAULT '0', + `answer` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `votes` int(10) unsigned NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `survey` (`surveyFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14065,7 +11691,7 @@ CREATE TABLE `surveyVote` ( KEY `surveyVote_ibfk_2` (`userFk`), CONSTRAINT `surveyVote_ibfk_1` FOREIGN KEY (`surveyFk`) REFERENCES `survey` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `surveyVote_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14082,15 +11708,15 @@ CREATE TABLE `tpvConfig` ( `transactionType` tinyint(3) unsigned NOT NULL, `maxAmount` int(10) unsigned DEFAULT NULL, `employeeFk` int(10) unsigned NOT NULL, - `url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The bank web service URL for production environment', - `testMode` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Whether test mode is enabled', - `testUrl` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT 'The bank web service URL for test environment', - `testKey` varchar(50) CHARACTER SET utf8 DEFAULT NULL COMMENT 'The bank secret key for test environment', - `merchantUrl` varchar(255) CHARACTER SET utf8 DEFAULT NULL, + `url` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'The bank web service URL for production environment', + `testMode` tinyint(3) unsigned NOT NULL DEFAULT 0 COMMENT 'Whether test mode is enabled', + `testUrl` varchar(255) CHARACTER SET utf8mb3 DEFAULT NULL COMMENT 'The bank web service URL for test environment', + `testKey` varchar(50) CHARACTER SET utf8mb3 DEFAULT NULL COMMENT 'The bank secret key for test environment', + `merchantUrl` varchar(255) CHARACTER SET utf8mb3 DEFAULT NULL, PRIMARY KEY (`id`), KEY `employee_id` (`employeeFk`), CONSTRAINT `employee_id` FOREIGN KEY (`employeeFk`) REFERENCES `vn`.`worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Virtual TPV parameters'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Virtual TPV parameters'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14101,10 +11727,10 @@ DROP TABLE IF EXISTS `tpvError`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `tpvError` ( - `code` char(7) COLLATE utf8_unicode_ci NOT NULL, - `message` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `code` char(7) COLLATE utf8mb3_unicode_ci NOT NULL, + `message` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT=' List of possible TPV errors'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT=' List of possible TPV errors'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14116,14 +11742,14 @@ DROP TABLE IF EXISTS `tpvImapConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `tpvImapConfig` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, - `host` varchar(150) COLLATE utf8_unicode_ci NOT NULL, - `user` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `pass` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `cleanPeriod` varchar(15) CHARACTER SET utf8 NOT NULL, - `successFolder` varchar(150) CHARACTER SET utf8 DEFAULT NULL, - `errorFolder` varchar(150) CHARACTER SET utf8 DEFAULT NULL, + `host` varchar(150) COLLATE utf8mb3_unicode_ci NOT NULL, + `user` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `pass` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `cleanPeriod` varchar(15) CHARACTER SET utf8mb3 NOT NULL, + `successFolder` varchar(150) CHARACTER SET utf8mb3 DEFAULT NULL, + `errorFolder` varchar(150) CHARACTER SET utf8mb3 DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='IMAP configuration parameters for virtual TPV'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='IMAP configuration parameters for virtual TPV'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14135,15 +11761,15 @@ DROP TABLE IF EXISTS `tpvMerchant`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `tpvMerchant` ( `id` int(10) unsigned NOT NULL COMMENT 'Merchant identifier', - `description` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Small description', + `description` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'Small description', `companyFk` smallint(6) unsigned DEFAULT NULL COMMENT 'Company associated with the merchant', `bankFk` int(10) NOT NULL COMMENT 'The bank where merchant receipts are created', - `secretKey` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The merchant secret key to sign transactions', + `secretKey` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'The merchant secret key to sign transactions', PRIMARY KEY (`id`), KEY `bank_id` (`bankFk`), KEY `company_id` (`companyFk`), KEY `id` (`id`,`companyFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Virtual TPV providers'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Virtual TPV providers'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14154,12 +11780,12 @@ DROP TABLE IF EXISTS `tpvMerchantEnable`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `tpvMerchantEnable` ( - `merchantFk` int(10) unsigned NOT NULL DEFAULT '0', + `merchantFk` int(10) unsigned NOT NULL DEFAULT 0, `companyFk` smallint(6) unsigned NOT NULL, PRIMARY KEY (`merchantFk`,`companyFk`), UNIQUE KEY `company_id` (`companyFk`), CONSTRAINT `tpvMerchantEnable_ibfk_1` FOREIGN KEY (`merchantFk`, `companyFk`) REFERENCES `tpvMerchant` (`id`, `companyFk`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Virtual TPV enabled providers'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Virtual TPV enabled providers'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14171,9 +11797,9 @@ DROP TABLE IF EXISTS `tpvResponse`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `tpvResponse` ( `id` smallint(5) unsigned NOT NULL, - `message` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `message` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='List of possible TPV reponses'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='List of possible TPV reponses'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14190,9 +11816,9 @@ CREATE TABLE `tpvTransaction` ( `receiptFk` int(11) DEFAULT NULL, `amount` int(10) unsigned NOT NULL, `response` smallint(5) unsigned DEFAULT NULL COMMENT 'Status notified by bank: NULL if no notification, 0 if success, error otherwise', - `errorCode` char(7) COLLATE utf8_unicode_ci DEFAULT NULL, - `status` enum('started','ok','ko') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'started', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `errorCode` char(7) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `status` enum('started','ok','ko') COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'started', + `created` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `merchant_id` (`merchantFk`), KEY `receipt_id` (`receiptFk`), @@ -14202,7 +11828,7 @@ CREATE TABLE `tpvTransaction` ( CONSTRAINT `receipt_id` FOREIGN KEY (`receiptFk`) REFERENCES `vn`.`receipt` (`Id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `tpvTransaction_ibfk_1` FOREIGN KEY (`clientFk`) REFERENCES `vn`.`client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `tpvTransaction_ibfk_2` FOREIGN KEY (`merchantFk`) REFERENCES `tpvMerchant` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Transactions realized through the virtual TPV'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Transactions realized through the virtual TPV'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14213,15 +11839,15 @@ DROP TABLE IF EXISTS `userSession`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `userSession` ( - `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `lastUpdate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `ssid` char(64) COLLATE utf8_unicode_ci NOT NULL, - `data` text COLLATE utf8_unicode_ci, + `created` datetime NOT NULL DEFAULT current_timestamp(), + `lastUpdate` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `ssid` char(64) COLLATE utf8mb3_unicode_ci NOT NULL, + `data` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `userVisitFk` int(10) unsigned DEFAULT NULL, UNIQUE KEY `ssid` (`ssid`), KEY `userVisit` (`userVisitFk`), KEY `lastUpdate` (`lastUpdate`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14237,7 +11863,7 @@ CREATE TABLE `visit` ( PRIMARY KEY (`id`), KEY `firstAgent` (`firstAgentFk`), CONSTRAINT `visit_ibfk_1` FOREIGN KEY (`firstAgentFk`) REFERENCES `visitAgent` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14250,14 +11876,14 @@ DROP TABLE IF EXISTS `visitAccess`; CREATE TABLE `visitAccess` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `agentFk` int(10) unsigned NOT NULL, - `stamp` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `stamp` datetime NOT NULL DEFAULT current_timestamp(), `ip` int(10) unsigned DEFAULT NULL, - `referer` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `referer` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `visit_access_idx_agent` (`agentFk`), KEY `stamp` (`stamp`), CONSTRAINT `visitAccess_ibfk_1` FOREIGN KEY (`agentFk`) REFERENCES `visitAgent` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14271,18 +11897,18 @@ CREATE TABLE `visitAgent` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `visitFk` int(10) unsigned NOT NULL, `firstAccessFk` int(10) unsigned DEFAULT NULL, - `platform` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `browser` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `version` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `platform` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `browser` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `version` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `javascript` tinyint(3) unsigned DEFAULT NULL, `cookies` tinyint(3) unsigned DEFAULT NULL, - `agent` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `agent` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `visit_id` (`visitFk`), KEY `firstAccess` (`firstAccessFk`), CONSTRAINT `visitAgent_ibfk_1` FOREIGN KEY (`visitFk`) REFERENCES `visit` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `visitAgent_ibfk_2` FOREIGN KEY (`firstAccessFk`) REFERENCES `visitAccess` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14296,13 +11922,13 @@ CREATE TABLE `visitUser` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `accessFk` int(10) unsigned NOT NULL, `userFk` int(10) unsigned DEFAULT NULL, - `stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `stamp` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `access_id` (`accessFk`), KEY `date_time` (`stamp`), KEY `user_id` (`userFk`), CONSTRAINT `visitUser_ibfk_1` FOREIGN KEY (`accessFk`) REFERENCES `visitAccess` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -14318,10 +11944,10 @@ DELIMITER ;; /*!50003 SET character_set_results = utf8mb4 */ ;; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `order_doRecalc` ON SCHEDULE EVERY 10 SECOND STARTS '2019-08-29 14:18:04' ON COMPLETION PRESERVE ENABLE DO CALL order_doRecalc */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `order_doRecalc` ON SCHEDULE EVERY 10 SECOND STARTS '2019-08-29 14:18:04' ON COMPLETION PRESERVE ENABLE DO CALL order_doRecalc */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -14339,15 +11965,15 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `MYBASKET_GETID`() RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `myBasket_getId`() RETURNS int(11) DETERMINISTIC BEGIN DECLARE vOrder INT; - + SELECT orderFk INTO vOrder FROM basketOrder WHERE clientFk = account.myUser_getId(); @@ -14364,11 +11990,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `myClient_getDebt`(vDate DATE) RETURNS decimal(10,2) +CREATE DEFINER=`root`@`localhost` FUNCTION `myClient_getDebt`(vDate DATE) RETURNS decimal(10,2) DETERMINISTIC BEGIN /** @@ -14376,7 +12002,7 @@ BEGIN * * @return Saldo del cliente */ - RETURN vn.clientGetDebt(account.userGetId(), vDate); + RETURN vn.clientGetDebt(account.myUser_getId(), vDate); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -14389,27 +12015,37 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `myUser_checkRestPriv`(vMethodPath VARCHAR(255)) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `myUser_checkRestPriv`(vMethodPath VARCHAR(255)) RETURNS tinyint(1) DETERMINISTIC BEGIN /** - * Comprueba si el usuario actual tiene permiso para ejecutar - * un servicio REST. + * Checks if the current user has permission to run a REST service. * - * @param vMethodPath Ruta del servicio REST a ejecutar - * @return %TRUE si tiene permisos, %FALSE en caso contrario - **/ - DECLARE vRole INT DEFAULT NULL; + * @param vMethodPath Route of the REST service + * @return %TRUE if it has permissions, otherwise %FALSE + */ + DECLARE vCount INT; + DECLARE vHasRole INT DEFAULT NULL; - SELECT role INTO vRole FROM restPriv + SELECT COUNT(*) INTO vCount FROM restPriv WHERE methodPath = vMethodPath; - - RETURN vRole IS NULL - OR account.myUserHasRoleId (vRole); + + IF vCount = 0 THEN + RETURN FALSE; + END IF; + + SELECT COUNT(*) > 0 + INTO vHasRole + FROM restPriv + WHERE methodPath = vMethodPath + AND (`role` IS NULL OR account.myUser_hasRoleId(`role`)) + LIMIT 1; + + RETURN vHasRole; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -14422,11 +12058,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `order_getTotal`(vSelf INT) RETURNS decimal(10,2) +CREATE DEFINER=`root`@`localhost` FUNCTION `order_getTotal`(vSelf INT) RETURNS decimal(10,2) READS SQL DATA DETERMINISTIC BEGIN @@ -14465,11 +12101,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `catalog_calcFromMyAddress`(vDelivery DATE, vAddress INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `catalog_calcFromMyAddress`(vDelivery DATE, vAddress INT) BEGIN /** * Gets the available items list. @@ -14481,14 +12117,14 @@ BEGIN * @return tmp.ticketComponent * @return tmp.ticketLot * @return tmp.zoneGetShipped - */ + */ DECLARE vAgencyMode INT; - + SELECT a.agencyModeFk INTO vAgencyMode FROM myClient c JOIN vn.address a ON a.clientFk = c.id - WHERE a.id = vAddress; + WHERE a.id = vAddress; CALL vn.available_calc(vDelivery, vAddress, vAgencyMode); @@ -14501,7 +12137,7 @@ BEGIN JOIN tmp.availableCalc a ON a.calcFk = c.calc_id WHERE c.available > 0 GROUP BY c.item_id; - + CALL vn.catalog_calculate(vDelivery, vAddress, vAgencyMode); DROP TEMPORARY TABLE tmp.item; @@ -14515,13 +12151,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `catalog_calcFromMyAddress_beta`(vDelivery DATE, vAddress INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `catalog_calcFromMyAddress_beta`(vDelivery DATE, vAddress INT) BEGIN /** * Gets the available items list. @@ -14533,27 +12169,27 @@ BEGIN * @return tmp.ticketComponent * @return tmp.ticketLot * @return tmp.zoneGetShipped - */ - DECLARE vAgencyMode INT; - + */ + DECLARE vAgencyMode INT; + SELECT a.agencyModeFk INTO vAgencyMode FROM myClient c JOIN vn.address a ON a.clientFk = c.id - WHERE a.id = vAddress; + WHERE a.id = vAddress; CALL vn.available_calc(vDelivery, vAddress, vAgencyMode); DROP TEMPORARY TABLE IF EXISTS tmp.item; CREATE TEMPORARY TABLE tmp.item (INDEX (itemFk)) - ENGINE = MEMORY + ENGINE = MEMORY SELECT c.item_id itemFk FROM `cache`.available c JOIN tmp.availableCalc a ON a.calcFk = c.calc_id WHERE c.available > 0 GROUP BY c.item_id; - + CALL vn.catalog_calculate_beta(vDelivery, vAddress, vAgencyMode); DROP TEMPORARY TABLE tmp.item; @@ -14563,92 +12199,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `catalog_getTags__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `catalog_getTags__`(vLimit INT) -BEGIN -/** - * Returns the main tags for a list of items. - * - * @table tItems The list of items - * @select The main tags for the passed items - */ - CALL catalogGetAvailable; - - DROP TEMPORARY TABLE IF EXISTS tTags; - CREATE TEMPORARY TABLE tTags - (INDEX (tagFk)) - ENGINE = MEMORY - SELECT it.tagFk, SUM(it.priority) priority - FROM vn.itemTag it - JOIN tItems i ON i.id = it.itemFk - GROUP BY tagFk - LIMIT vLimit; - - SELECT l.id, l.name - FROM tTags t - JOIN vn.tagL10n l ON l.id = t.tagFk - ORDER BY priority DESC; - - DROP TEMPORARY TABLE tTags; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `catalog_getTagValues__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `catalog_getTagValues__`(vTag INT) -BEGIN -/** - * Returns the list of available values for a tag and a list of items. - * - * @table tItems The list of items - * @param vTag The tag identifier - * @select The list of available tags - */ - CALL catalogGetAvailable; - - SELECT DISTINCT it.value - FROM vn.itemTag it - JOIN tItems i ON i.id = it.itemFk - WHERE it.tagFk = vTag - ORDER BY value - LIMIT 200; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `image_ref` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `image_ref`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `image_ref`( vCollection VARCHAR(255), vName VARCHAR(255) ) @@ -14682,11 +12243,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `image_unref`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `image_unref`( vCollection VARCHAR(255), vName VARCHAR(255) ) @@ -14712,11 +12273,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_calcCatalog`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_calcCatalog`( vSelf INT, vLanded DATE, vAddressFk INT, @@ -14730,7 +12291,7 @@ BEGIN */ DROP TEMPORARY TABLE IF EXISTS tmp.item; CREATE TEMPORARY TABLE tmp.item - ENGINE = MEMORY + ENGINE = MEMORY SELECT vSelf itemFk; CALL vn.catalog_calculate(vLanded, vAddressFk, vAgencyModeFk); @@ -14760,11 +12321,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_getList`(IN `vWarehouse` SMALLINT, IN `vShipping` DATE, IN `vCategory` INT, IN `vRate` TINYINT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_getList`(IN `vWarehouse` SMALLINT, IN `vShipping` DATE, IN `vCategory` INT, IN `vRate` TINYINT) BEGIN DECLARE vCalc INT; @@ -14809,17 +12370,17 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_getVisible`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_getVisible`( vWarehouse TINYINT, vDate DATE, vType INT, vPrefix VARCHAR(255)) BEGIN - + /** * Gets visible items of the specified type at specified date. * @@ -14828,7 +12389,7 @@ BEGIN * @param vType The type id * @param vPrefix The article prefix to filter or %NULL for all * @return tmp.itemVisible Visible items - */ + */ DECLARE vPrefixLen SMALLINT; DECLARE vFilter VARCHAR(255) DEFAULT NULL; DECLARE vDateInv DATE DEFAULT vn2008.date_inv(); @@ -14837,13 +12398,13 @@ BEGIN GET DIAGNOSTICS CONDITION 1 @message = MESSAGE_TEXT; CALL vn.mail_insert( - 'cau@verdnatura.es', - NULL, + 'cau@verdnatura.es', + NULL, CONCAT('hedera.item_getVisible error: ', @message), CONCAT( - 'warehouse: ', IFNULL(vWarehouse, ''), - ', Fecha:', IFNULL(vDate, ''), - ', tipo: ', IFNULL(vType,''), + 'warehouse: ', IFNULL(vWarehouse, ''), + ', Fecha:', IFNULL(vDate, ''), + ', tipo: ', IFNULL(vType,''), ', prefijo: ', IFNULL(vPrefix,''))); RESIGNAL; END; @@ -14879,7 +12440,7 @@ BEGIN FROM vn.buy b JOIN vn.entry e ON e.id = b.entryFk JOIN vn.travel t ON t.id = e.travelFk - WHERE t.shipped BETWEEN vDateInv AND CURDATE() + WHERE t.shipped BETWEEN vDateInv AND util.VN_CURDATE() AND t.warehouseOutFk = vWarehouse AND NOT e.isRaid AND t.isDelivered @@ -14888,7 +12449,7 @@ BEGIN FROM vn.sale m JOIN vn.ticket t ON t.id = m.ticketFk JOIN vn.ticketState s ON s.ticket = t.id - WHERE t.shipped BETWEEN vDateInv AND CURDATE() + WHERE t.shipped BETWEEN vDateInv AND util.VN_CURDATE() AND t.warehouseFk = vWarehouse AND s.alertLevel = 3 ) t @@ -14910,6 +12471,7 @@ BEGIN AND b.price2 >= 0 AND b.packageFk IS NOT NULL ORDER BY t.warehouseInFk = vWarehouse DESC, t.landed DESC + LIMIT 10000000000000000000 ) t GROUP BY itemFk; DROP TEMPORARY TABLE IF EXISTS tmp.itemVisible; @@ -14921,13 +12483,13 @@ BEGIN IF(p.depth > 0, p.depth, 0) depth, p.width, p.height, CEIL(s.quantity / t.packing) etiquetas FROM vn.item i - JOIN `filter` f ON f.itemFk = i.id + JOIN `filter` f ON f.itemFk = i.id JOIN currentStock s ON s.itemFk = i.id LEFT JOIN tmp t ON t.itemFk = i.id LEFT JOIN vn.packaging p ON p.id = t.packageFk WHERE CEIL(s.quantity / t.packing) > 0 -- FIXME: Column Cubos.box not included in view vn.packaging - /* AND p.box */; + /* AND p.box */ ; DROP TEMPORARY TABLE `filter`, @@ -14939,127 +12501,6 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `item_getVisible__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_getVisible__`( - vWarehouse TINYINT, - vDate DATE, - vType INT, - vPrefix VARCHAR(255)) -BEGIN -/** - * Gets visible items of the specified type at specified date. - * - * @param vWarehouse The warehouse id - * @param vDate The visible date - * @param vType The type id - * @param vPrefix The article prefix to filter or %NULL for all - * @return tmp.itemVisible Visible items - */ - DECLARE vPrefixLen SMALLINT; - DECLARE vFilter VARCHAR(255) DEFAULT NULL; - DECLARE vDateInv DATE DEFAULT vn2008.date_inv(); - - SET vPrefixLen = IFNULL(LENGTH(vPrefix), 0) + 1; - - IF vPrefixLen > 1 THEN - SET vFilter = CONCAT(vPrefix, '%'); - END IF; - - DROP TEMPORARY TABLE IF EXISTS filter; - CREATE TEMPORARY TABLE filter - (INDEX (itemFk)) - ENGINE = MEMORY - SELECT id itemFk FROM vn.item - WHERE typeFk = vType - AND (vFilter IS NULL OR `name` LIKE vFilter); - - DROP TEMPORARY TABLE IF EXISTS currentStock; - CREATE TEMPORARY TABLE currentStock - (INDEX (itemFk)) - ENGINE = MEMORY - SELECT itemFk, SUM(quantity) quantity - FROM ( - SELECT b.itemFk, b.quantity - FROM vn.buy b - JOIN vn.entry e ON e.id = b.entryFk - JOIN vn.travel t ON t.id = e.travelFk - WHERE t.landed BETWEEN vDateInv AND vDate - AND t.warehouseInFk = vWarehouse - AND NOT e.isRaid - UNION ALL - SELECT b.itemFk, -b.quantity - FROM vn.buy b - JOIN vn.entry e ON e.id = b.entryFk - JOIN vn.travel t ON t.id = e.travelFk - WHERE t.shipped BETWEEN vDateInv AND CURDATE() - AND t.warehouseOutFk = vWarehouse - AND NOT e.isRaid - AND t.isDelivered - UNION ALL - SELECT m.itemFk, -m.quantity - FROM vn.sale m - JOIN vn.ticket t ON t.id = m.ticketFk - JOIN vn.ticketState s ON s.ticket = t.id - WHERE t.shipped BETWEEN vDateInv AND CURDATE() - AND t.warehouseFk = vWarehouse - AND s.alertLevel = 3 - ) t - GROUP BY itemFk - HAVING quantity > 0; - - DROP TEMPORARY TABLE IF EXISTS tmp; - CREATE TEMPORARY TABLE tmp - (INDEX (itemFk)) - ENGINE = MEMORY - SELECT * - FROM ( - SELECT b.itemFk, b.packageFk, b.packing - FROM vn.buy b - JOIN vn.entry e ON e.id = b.entryFk - JOIN vn.travel t ON t.id = e.travelFk - WHERE t.landed BETWEEN vDateInv AND vDate - AND NOT b.isIgnored - AND b.price2 >= 0 - AND b.packageFk IS NOT NULL - ORDER BY t.warehouseInFk = vWarehouse DESC, t.landed DESC - ) t GROUP BY itemFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.itemVisible; - CREATE TEMPORARY TABLE tmp.itemVisible - ENGINE = MEMORY - SELECT i.id Id_Article, - SUBSTRING(i.`name`, vPrefixLen) Article, - t.packing, p.id Id_Cubo, - IF(p.depth > 0, p.depth, 0) depth, p.width, p.height, - CEIL(s.quantity / t.packing) etiquetas - FROM vn.item i - JOIN filter f ON f.itemFk = i.id - JOIN currentStock s ON s.itemFk = i.id - LEFT JOIN tmp t ON t.itemFk = i.id - LEFT JOIN vn.packaging p ON p.id = t.packageFk - WHERE CEIL(s.quantity / t.packing) > 0 - -- FIXME: Column Cubos.box not included in view vn.packaging - /* AND p.box */; - - DROP TEMPORARY TABLE - filter, - currentStock, - tmp; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `item_listAllocation` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -15068,9 +12509,9 @@ DELIMITER ; /*!50003 SET character_set_results = utf8mb4 */ ; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_listAllocation`(IN `vWh` TINYINT, IN `vDate` DATE, IN `vType` INT, IN `vPrefix` VARCHAR(255), IN `vUseIds` BOOLEAN) +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_listAllocation`(IN `vWh` TINYINT, IN `vDate` DATE, IN `vType` INT, IN `vPrefix` VARCHAR(255), IN `vUseIds` BOOLEAN) BEGIN /** * Lists visible items and it's box sizes of the specified @@ -15107,11 +12548,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myBasket_addItem`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `myBasket_addItem`( vWarehouse INT, vItem INT, vAmount INT) @@ -15127,13 +12568,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myBasket_calcCatalogFromItem`(vItem INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `myBasket_calcCatalogFromItem`(vItem INT) BEGIN /** * Gets the availability and prices for the given item @@ -15157,13 +12598,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myBasket_calcCatalogFull`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `myBasket_calcCatalogFull`() BEGIN /** * Gets the availability and prices for the given items @@ -15189,11 +12630,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myBasket_check`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `myBasket_check`() BEGIN /** * Comprueba que la cesta esta creada y que su configuración es @@ -15216,8 +12657,8 @@ BEGIN IF vStatus = 'OK' THEN CALL order_checkConfig(vSelf); - - IF vStatus = 'OK' AND vCreated < TIMESTAMPADD(DAY, -1, NOW()) + + IF vStatus = 'OK' AND vCreated < TIMESTAMPADD(DAY, -1, util.VN_NOW()) THEN CALL order_update(vSelf); SET vStatus = 'UPDATED'; @@ -15235,20 +12676,20 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myBasket_configure`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `myBasket_configure`( vDelivery DATE, vDeliveryMethod VARCHAR(45), vAgency INT, vAddress INT) BEGIN /** - * Configura la cesta de la compra utilizando los parámetros + * Configura la cesta de la compra utilizando los parámetros * pasados. Si los parámetros no son válidos devuelve un error. * * @param vDelivery Fecha de recogida @@ -15277,18 +12718,18 @@ BEGIN SELECT defaultAddressFk INTO vAddress FROM myClient; END IF; - + SET vSelf = myBasket_getId(); IF vSelf IS NULL THEN - + SELECT defaultCompanyFk INTO vCompany FROM orderConfig; INSERT INTO `order` SET - customer_id = account.userGetId(), + customer_id = account.myUser_getId(), date_send = vDelivery, delivery_method_id = vDeliveryMethodId, agency_id = vAgency, @@ -15297,9 +12738,9 @@ BEGIN company_id = vCompany; SET vSelf = LAST_INSERT_ID(); - + INSERT INTO basketOrder SET - clientFk = account.userGetId(), + clientFk = account.myUser_getId(), orderFk = vSelf; ELSE UPDATE `order` @@ -15310,7 +12751,7 @@ BEGIN address_id = vAddress WHERE id = vSelf; - + CALL order_update(vSelf); END IF; @@ -15329,28 +12770,28 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myBasket_configureForGuest`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `myBasket_configureForGuest`() BEGIN DECLARE vMethod VARCHAR(255); DECLARE vAgency INT; DECLARE vAddress INT; DECLARE vDate DATE; - + SELECT guestMethod, guestAgencyFk, guestAddressFk INTO vMethod, vAgency, vAddress FROM orderConfig LIMIT 1; - - SET vDate = TIMESTAMPADD(DAY, 1, CURDATE()); - + + SET vDate = TIMESTAMPADD(DAY, 1, util.VN_CURDATE()); + IF WEEKDAY(vDate) BETWEEN 5 AND 6 THEN SET vDate = TIMESTAMPADD(DAY, 7 - WEEKDAY(vDate), vDate); END IF; - + CALL myBasket_configure(vDate, vMethod, vAgency, vAddress); END ;; DELIMITER ; @@ -15364,17 +12805,17 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myBasket_confirm`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `myBasket_confirm`() BEGIN DECLARE vSelf INT DEFAULT myBasket_getId(); IF vSelf IS NOT NULL THEN CALL order_confirm(vSelf); - + DELETE FROM basketOrder WHERE orderFk = vSelf; END IF; @@ -15388,13 +12829,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myBasket_getAvailable`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `myBasket_getAvailable`() BEGIN /** * Gets the available items list. @@ -15414,11 +12855,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myBasket_getTax`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `myBasket_getTax`() READS SQL DATA BEGIN /** @@ -15430,9 +12871,9 @@ BEGIN CREATE TEMPORARY TABLE tmp.`order` ENGINE = MEMORY SELECT myBasket_getId() orderFk; - + CALL order_getTax(); - + DROP TEMPORARY TABLE IF EXISTS tmp.`order`; END ;; DELIMITER ; @@ -15446,11 +12887,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myOrder_addItem`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `myOrder_addItem`( vSelf INT, vWarehouse INT, vItem INT, @@ -15461,7 +12902,7 @@ BEGIN SELECT COUNT(*) INTO vIsMine FROM myOrder WHERE id = vSelf; - + IF vIsMine THEN CALL order_addItem(vSelf, vWarehouse, vItem, vAmount); END IF; @@ -15477,18 +12918,18 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myOrder_confirm`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `myOrder_confirm`(vSelf INT) BEGIN DECLARE vIsMine BOOL; - - SELECT COUNT(*) INTO vIsMine + + SELECT COUNT(*) INTO vIsMine FROM myOrder WHERE id = vSelf; - + IF vIsMine THEN CALL order_confirm(vSelf); END IF; @@ -15502,13 +12943,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myOrder_getAvailable`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `myOrder_getAvailable`(vSelf INT) BEGIN /** * Gets the available items list. @@ -15521,7 +12962,7 @@ BEGIN SELECT COUNT(*) INTO isMine FROM myOrder WHERE id = vSelf; - + IF isMine THEN CALL order_getAvailable(vSelf); END IF; @@ -15535,13 +12976,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myOrder_newWithAddress`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `myOrder_newWithAddress`( OUT vSelf INT, vLandingDate DATE, vAddressFk INT) @@ -15567,15 +13008,15 @@ BEGIN START TRANSACTION; - SELECT a.agencyModeFk, a.id + SELECT a.agencyModeFk, a.id INTO vAgencyMode, vAddressFk - FROM vn.address a + FROM vn.address a WHERE a.id = vAddressFk; - + SELECT deliveryMethodFk INTO vDeliveryMethodId FROM vn.agencyMode am WHERE am.id = vAgencyMode; - + IF vCompany IS NULL THEN SELECT defaultCompanyFk INTO vCompany @@ -15584,7 +13025,7 @@ BEGIN INSERT INTO `order` SET - customer_id = account.userGetId(), + customer_id = account.myUser_getId(), date_send = vLandingDate, delivery_method_id = vDeliveryMethodId, agency_id = vAgencyMode, @@ -15593,7 +13034,7 @@ BEGIN company_id = vCompany; SET vSelf = LAST_INSERT_ID(); - + CALL order_checkConfig(vSelf); COMMIT; @@ -15607,13 +13048,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myOrder_newWithDate`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `myOrder_newWithDate`( OUT vSelf INT, vLandingDate DATE) BEGIN @@ -15639,15 +13080,15 @@ BEGIN START TRANSACTION; - SELECT a.agencyModeFk, a.id + SELECT a.agencyModeFk, a.id INTO vAgencyMode, vAddress FROM myClient c JOIN vn.address a ON a.id = c.defaultAddressFk; - + SELECT deliveryMethodFk INTO vDeliveryMethodId FROM vn.agencyMode am WHERE am.id = vAgencyMode; - + IF vCompany IS NULL THEN SELECT defaultCompanyFk INTO vCompany @@ -15656,7 +13097,7 @@ BEGIN INSERT INTO `order` SET - customer_id = account.userGetId(), + customer_id = account.myUser_getId(), date_send = vLandingDate, delivery_method_id = vDeliveryMethodId, agency_id = vAgencyMode, @@ -15665,7 +13106,7 @@ BEGIN company_id = vCompany; SET vSelf = LAST_INSERT_ID(); - + CALL order_checkConfig(vSelf); COMMIT; @@ -15681,11 +13122,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myTicket_get`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `myTicket_get`(vSelf INT) BEGIN /** * Returns a current user ticket header. @@ -15735,11 +13176,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myTicket_getPackages`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `myTicket_getPackages`(vSelf INT) BEGIN /** * Returns a current user ticket packages. @@ -15768,11 +13209,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myTicket_getRows`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `myTicket_getRows`(vSelf INT) BEGIN SELECT r.itemFk, r.quantity, r.concept, r.price, r.discount, i.category, i.size, i.stems, i.inkFk, @@ -15795,13 +13236,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myTicket_getServices`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `myTicket_getServices`(vSelf INT) BEGIN /** * Returns a current user ticket services. @@ -15824,11 +13265,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myTicket_list`(vFrom DATE, vTo DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `myTicket_list`(vFrom DATE, vTo DATE) BEGIN /** * Returns the current user list of tickets between two dates reange. @@ -15838,8 +13279,8 @@ BEGIN * @param vTo To date, if %NULL current date * @select The tickets list */ - SET vFrom = IFNULL(vFrom, DATE_FORMAT(TIMESTAMPADD(MONTH, -3, CURDATE()), '%Y-%m-01')); - SET vTo = IFNULL(vTo, TIMESTAMPADD(YEAR, 1, CURDATE())); + SET vFrom = IFNULL(vFrom, DATE_FORMAT(TIMESTAMPADD(MONTH, -3, util.VN_CURDATE()), '%Y-%m-01')); + SET vTo = IFNULL(vTo, TIMESTAMPADD(YEAR, 1, util.VN_CURDATE())); DROP TEMPORARY TABLE IF EXISTS tmp.ticket; CREATE TEMPORARY TABLE tmp.ticket @@ -15848,7 +13289,7 @@ BEGIN SELECT t.id ticketFk FROM myTicket t WHERE shipped BETWEEN TIMESTAMP(vFrom) AND TIMESTAMP(vTo, '23:59:59'); - + CALL vn.ticketGetTotal; SELECT v.id, IFNULL(v.landed, v.shipped) landed, @@ -15876,11 +13317,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myTicket_logAccess`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `myTicket_logAccess`(vSelf INT) BEGIN /** * Logs an access to a ticket. @@ -15889,7 +13330,7 @@ BEGIN */ INSERT INTO vn.ticketLog (originFk, userFk, `action`, description) - SELECT vSelf, account.userGetId(), 'select', 'Accede a ticket' + SELECT vSelf, account.myUser_getId(), 'select', 'Accede a ticket' FROM myTicket t WHERE t.id = vSelf; END ;; @@ -15904,11 +13345,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myTpvTransaction_end`(vSelf INT, vStatus VARCHAR(12)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `myTpvTransaction_end`(vSelf INT, vStatus VARCHAR(12)) BEGIN /** * Finaliza una transaccción estableciendo su estado a 'ok' o @@ -15937,11 +13378,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myTpvTransaction_start`(vAmount INT, vCompany INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `myTpvTransaction_start`(vAmount INT, vCompany INT) BEGIN /** * Inicia una nueva transacción con el TPV virtual, generando @@ -15994,7 +13435,7 @@ BEGIN INSERT INTO myTpvTransaction SET merchantFk = vMerchant - ,clientFk = account.userGetId() + ,clientFk = account.myUser_getId() ,amount = vAmount; SET vSelf = LAST_INSERT_ID(); @@ -16022,13 +13463,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `order_addItem`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `order_addItem`( vSelf INT, vWarehouse INT, vItem INT, @@ -16091,7 +13532,7 @@ BEGIN IF vDone THEN LEAVE l; END IF; - + SET vAdd = vAmount - MOD(vAmount, vGrouping); SET vAmount = vAmount - vAdd; @@ -16107,7 +13548,7 @@ BEGIN rate = vRate, amount = vAdd, price = vPrice; - + SET vRow = LAST_INSERT_ID(); INSERT INTO orderRowComponent (rowFk, componentFk, price) @@ -16125,7 +13566,7 @@ BEGIN IF vAmount > 0 THEN CALL util.throw ('AMOUNT_NOT_MATCH_GROUPING'); END IF; - + COMMIT; CALL vn.ticketCalculatePurge; END ;; @@ -16140,11 +13581,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `order_calcCatalog`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `order_calcCatalog`(vSelf INT) BEGIN /** * Gets the availability and prices for order items. @@ -16168,10 +13609,10 @@ BEGIN CREATE TEMPORARY TABLE tmp.item (PRIMARY KEY (itemFk)) ENGINE = MEMORY - SELECT itemFk FROM orderRow + SELECT itemFk FROM orderRow WHERE orderFk = vSelf GROUP BY itemFk; - + CALL vn.catalog_calculate(vDate, vAddress, vAgencyMode); DROP TEMPORARY TABLE tmp.item; @@ -16185,13 +13626,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `order_calcCatalogFromItem`(vSelf INT, vItem INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `order_calcCatalogFromItem`(vSelf INT, vItem INT) BEGIN /** * Gets the availability and prices for the given item @@ -16227,11 +13668,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `order_calcCatalogFull`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `order_calcCatalogFull`(vSelf INT) BEGIN /** * Gets the availability and prices for the given items @@ -16256,7 +13697,7 @@ BEGIN CALL vn.catalog_calculate(vDate, vAddress, vAgencyMode); - IF account.myUserGetName() = 'visitor' + IF account.myUser_getName() = 'visitor' THEN DROP TEMPORARY TABLE tmp.ticketComponent; UPDATE tmp.ticketCalculateItem SET price = NULL; @@ -16273,22 +13714,24 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `order_checkConfig`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `order_checkConfig`(vSelf INT) BEGIN /** - * Comprueba que la configuración del pedido es correcta. - * - * @param vSelf Identificador del pedido - */ +* Comprueba que la configuración del pedido es correcta. +* +* @param vSelf Identificador del pedido +*/ DECLARE vDeliveryMethod VARCHAR(255); DECLARE vLanded DATE; DECLARE vAgencyMode INT; DECLARE vAddress INT; - DECLARE vIsAvailable BOOL; + DECLARE vIsAvailable BOOL; + DECLARE vIsActive BOOL; + DECLARE vClientFk INT; -- Obtiene los datos del pedido @@ -16306,19 +13749,33 @@ BEGIN CALL util.throw ('ORDER_EMPTY_ADDRESS'); END IF; + -- Comprueba que el cliente esté activo + + SELECT customer_id INTO vClientFk + FROM hedera.`order` + WHERE id = vSelf; + + SELECT isActive INTO vIsActive + FROM vn.client + WHERE id = vClientFk; + + IF NOT vIsActive THEN + CALL util.throw ('CLIENT_NOT_ACTIVE'); + END IF; + -- Comprueba que la agencia es correcta CALL vn.zone_getAgency(vAddress, vLanded); - - SELECT COUNT(*) > 0 INTO vIsAvailable + + SELECT COUNT(*) > 0 INTO vIsAvailable FROM tmp.zoneGetAgency - WHERE agencyModeFk = vAgencyMode; + WHERE agencyModeFk = vAgencyMode; IF NOT vIsAvailable THEN CALL util.throw ('ORDER_INVALID_AGENCY'); END IF; - - DROP TEMPORARY TABLE tmp.zoneGetAgency; + + DROP TEMPORARY TABLE tmp.zoneGetAgency; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -16331,11 +13788,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `order_confirm`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `order_confirm`(vSelf INT) BEGIN /** * Confirms an order, creating each of its tickets on @@ -16343,7 +13800,7 @@ BEGIN * * @param vSelf The order identifier */ - DECLARE vUser INT DEFAULT account.userGetId(); + DECLARE vUser INT DEFAULT account.myUser_getId(); CALL order_confirmWithUser(vSelf, vUser); END ;; DELIMITER ; @@ -16355,15 +13812,14 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `order_confirmWithUser`(IN `vOrder` INT, IN `vUserId` INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `order_confirmWithUser`(IN `vOrder` INT, IN `vUserId` INT) BEGIN - /** * Confirms an order, creating each of its tickets on the corresponding * date, store and user. @@ -16391,8 +13847,8 @@ BEGIN DECLARE vCompanyId INT; DECLARE vAgencyModeId INT; DECLARE TICKET_FREE INT DEFAULT 2; - DECLARE vIsFloramondoWarehouse BOOL; - DECLARE vCalc INT; + DECLARE vCalc INT; + DECLARE vIsLogifloraItem BOOL; DECLARE cDates CURSOR FOR SELECT zgs.shipped, r.warehouse_id @@ -16402,8 +13858,8 @@ BEGIN WHERE o.id = vOrder AND r.amount != 0 GROUP BY r.warehouse_id; - DECLARE cRows CURSOR FOR - SELECT r.id, r.item_id, i.name, r.amount, r.price, r.rate + DECLARE cRows CURSOR FOR + SELECT r.id, r.item_id, i.name, r.amount, r.price, r.rate, i.isFloramondo FROM order_row r JOIN vn.item i ON i.id = r.item_id WHERE r.amount != 0 @@ -16422,14 +13878,33 @@ BEGIN -- Carga los datos del pedido SELECT o.date_send, o.address_id, o.note, - a.clientFk, o.company_id, o.agency_id - INTO vDelivery, vAddress, vNotes, - vClientId, vCompanyId, vAgencyModeId + a.clientFk, o.company_id, o.agency_id + INTO vDelivery, vAddress, vNotes, + vClientId, vCompanyId, vAgencyModeId FROM hedera.`order` o JOIN vn.address a ON a.id = o.address_id WHERE o.id = vOrder; - - -- Comprueba que el pedido no est? vac?o + + -- Carga las fechas de salida de cada almac?n + CALL vn.zone_getShipped (vDelivery, vAddress, vAgencyModeId, FALSE); + + -- Trabajador que realiza la accion + IF vUserId IS NULL THEN + SELECT employeeFk INTO vUserId FROM orderConfig; + END IF; + + START TRANSACTION; + -- Comprueba que el pedido no esta confirmado + SELECT o.confirmed INTO vIsConfirmed + FROM hedera.`order` o + WHERE o.id = vOrder + FOR UPDATE; + + IF vIsConfirmed THEN + CALL util.throw ('ORDER_ALREADY_CONFIRMED'); + END IF; + + -- Comprueba que el pedido no esta vacio SELECT COUNT(*) > 0 INTO vOk FROM order_row WHERE order_id = vOrder AND amount > 0; @@ -16437,18 +13912,7 @@ BEGIN CALL util.throw ('ORDER_EMPTY'); END IF; - -- Carga las fechas de salida de cada almac?n - CALL vn.zone_getShipped (vDelivery, vAddress, vAgencyModeId, FALSE); - - -- Trabajador que realiza la acci?n - IF vUserId IS NULL THEN - SELECT employeeFk INTO vUserId FROM orderConfig; - END IF; - -- Crea los tickets del pedido - - START TRANSACTION; - OPEN cDates; lDates: @@ -16456,7 +13920,7 @@ BEGIN SET vTicket = NULL; SET vDone = FALSE; FETCH cDates INTO vShipment, vWarehouse; - + IF vDone THEN LEAVE lDates; END IF; @@ -16470,21 +13934,21 @@ BEGIN ON o.address_id = t.addressFk AND vWarehouse = t.warehouseFk -- AND o.agency_id = t.agencyModeFk - AND o.date_send = t.landed + AND o.date_send = t.landed AND vShipment = DATE(t.shipped) WHERE o.id = vOrder - AND t.invoiceOutFk IS NULL + AND t.refFk IS NULL AND IFNULL(tls.alertLevel,0) = 0 LIMIT 1; - + -- Crea el ticket en el caso de no existir uno adecuado IF vTicket IS NULL THEN - - SET vShipment = IFNULL(vShipment, CURDATE()); - - CALL vn.ticketCreateWithUser( + + SET vShipment = IFNULL(vShipment, util.VN_CURDATE()); + + CALL vn.ticket_add( vClientId, vShipment, vWarehouse, @@ -16494,6 +13958,7 @@ BEGIN NULL, vDelivery, vUserId, + TRUE, vTicket ); ELSE @@ -16502,12 +13967,12 @@ BEGIN Id_Trabajador = vUserId, state_id = TICKET_FREE; END IF; - + INSERT IGNORE INTO vn.orderTicket SET orderFk = vOrder, ticketFk = vTicket; - -- A?ade las notas + -- Añade las notas IF vNotes IS NOT NULL AND vNotes != '' THEN @@ -16519,32 +13984,37 @@ BEGIN `description` = CONCAT(VALUES(`description`),'. ', `description`); END IF; - -- A?ade los movimientos y sus componentes + -- Añade los movimientos y sus componentes OPEN cRows; lRows: LOOP + SET vDone = FALSE; - FETCH cRows INTO vRowId, vItem, vConcept, vAmount, vPrice, vRate; + + FETCH cRows INTO vRowId, vItem, vConcept, vAmount, vPrice, vRate, vIsLogifloraItem; IF vDone THEN LEAVE lRows; END IF; + SET vSale = NULL; + SELECT s.id INTO vSale FROM vn.sale s WHERE ticketFk = vTicket AND price = vPrice AND itemFk = vItem - AND discount = 0 + AND discount = 0 LIMIT 1; + IF vSale THEN UPDATE vn.sale SET quantity = quantity + vAmount WHERE id = vSale; ELSE - INSERT INTO vn.sale + INSERT INTO vn.sale SET itemFk = vItem, ticketFk = vTicket, @@ -16564,54 +14034,56 @@ BEGIN WHERE cm.order_row_id = vRowId GROUP BY vSale, cm.component_id; END IF; - UPDATE order_row SET Id_Movimiento = vSale + UPDATE order_row SET Id_Movimiento = vSale WHERE id = vRowId; - - -- Inserta en putOrder si la compra es de Floramondo - IF vn.isLogifloraDay(vShipment, vWarehouse) THEN - + + -- Inserta en putOrder si la compra es de Floramondo + IF vIsLogifloraItem THEN + CALL cache.availableNoRaids_refresh(vCalc,FALSE,vWarehouse,vShipment); - + SET @available := 0; - + SELECT GREATEST(0,available) INTO @available FROM cache.availableNoRaids WHERE calc_id = vCalc AND item_id = vItem; - - UPDATE cache.availableNoRaids + + UPDATE cache.availableNoRaids SET available = GREATEST(0,available - vAmount) WHERE item_id = vItem AND calc_id = vCalc; - - INSERT INTO edi.putOrder (deliveryInformationID, - supplyResponseId, - quantity , - EndUserPartyId, + + INSERT INTO edi.putOrder (deliveryInformationID, + supplyResponseId, + quantity , + EndUserPartyId, EndUserPartyGLN, - FHAdminNumber) - SELECT di.ID, - i.supplyResponseFk, - CEIL((vAmount - @available)/ sr.NumberOfItemsPerCask ), - o.address_id , + FHAdminNumber, + saleFk) + SELECT di.ID, + i.supplyResponseFk, + CEIL((vAmount - @available)/ sr.NumberOfItemsPerCask), + o.address_id , vClientId, - IFNULL(ca.fhAdminNumber, fhc.defaultAdminNumber) + IFNULL(ca.fhAdminNumber, fhc.defaultAdminNumber), + vSale FROM edi.deliveryInformation di JOIN vn.item i ON i.supplyResponseFk = di.supplyResponseID JOIN edi.supplyResponse sr ON sr.ID = i.supplyResponseFk LEFT JOIN edi.clientFHAdminNumber ca ON ca.clientFk = vClientId JOIN edi.floraHollandConfig fhc JOIN hedera.`order` o ON o.id = vOrder - WHERE i.id = vItem - AND di.LatestOrderDateTime > NOW() + WHERE i.id = vItem + AND di.LatestOrderDateTime > util.VN_NOW() AND vAmount > @available LIMIT 1; - + END IF; - + END LOOP; - - CLOSE cRows; + + CLOSE cRows; -- Fija el coste DROP TEMPORARY TABLE IF EXISTS tComponents; @@ -16636,19 +14108,8 @@ BEGIN CLOSE cDates; DELETE FROM basketOrder WHERE orderFk = vOrder; - - SELECT o.confirmed INTO vIsConfirmed - FROM hedera.`order` o - JOIN vn.address a ON a.id = o.address_id - WHERE o.id = vOrder; - -- Comprueba que el pedido no est? confirmado - - IF vIsConfirmed THEN - CALL util.throw ('ORDER_ALREADY_CONFIRMED'); - END IF; - - UPDATE `order` SET confirmed = TRUE, confirm_date = NOW() + UPDATE `order` SET confirmed = TRUE, confirm_date = util.VN_NOW() WHERE id = vOrder; COMMIT; @@ -16662,13 +14123,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `order_doRecalc`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `order_doRecalc`() proc: BEGIN /** * Recalculates modified orders. @@ -16677,24 +14138,27 @@ proc: BEGIN DECLARE vOrderFk INT; DECLARE cCur CURSOR FOR - SELECT orderFk FROM orderRecalc; + SELECT DISTINCT orderFk FROM tOrder; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + DECLARE CONTINUE HANDLER FOR SQLEXCEPTION - BEGIN + BEGIN DO RELEASE_LOCK('hedera.order_doRecalc'); - # Agregado por Ernesto 9.Agosto.2020, quiero comprobar cuantos rollbacks suceden. - CALL util.debugAdd('Event Hedera order_doRecalc() (ernesto)', 'Rollback! '); # max 255 chars en variable y 255 en value, ya hay campo de fecha ROLLBACK; - RESIGNAL; + RESIGNAL; END; IF !GET_LOCK('hedera.order_doRecalc', 0) THEN LEAVE proc; END IF; + DROP TEMPORARY TABLE IF EXISTS tOrder; + CREATE TEMPORARY TABLE tOrder + ENGINE = MEMORY + SELECT id, orderFk FROM orderRecalc; + OPEN cCur; myLoop: LOOP @@ -16705,14 +14169,15 @@ proc: BEGIN LEAVE myLoop; END IF; - START TRANSACTION; - CALL order_recalc(vOrderFk); - COMMIT; - - DELETE FROM orderRecalc WHERE orderFk = vOrderFk; + CALL order_recalc(vOrderFk); END LOOP; CLOSE cCur; + + DELETE o FROM orderRecalc o JOIN tOrder t ON t.id = o.id; + + DROP TEMPORARY TABLE tOrder; + DO RELEASE_LOCK('hedera.order_doRecalc'); END ;; DELIMITER ; @@ -16724,13 +14189,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `order_getAvailable`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `order_getAvailable`(vSelf INT) BEGIN /** * Gets the available items list. @@ -16746,7 +14211,7 @@ BEGIN INTO vDelivery, vAddress, vAgencyMode FROM `order` WHERE id = vSelf; - + CALL vn.available_calc(vDelivery, vAddress, vAgencyMode); DROP TEMPORARY TABLE IF EXISTS tmp.itemAvailable; @@ -16769,13 +14234,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `order_getTax`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `order_getTax`() READS SQL DATA BEGIN /** @@ -16788,7 +14253,7 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.addressCompany; CREATE TEMPORARY TABLE tmp.addressCompany (INDEX (addressFk, companyFk)) - ENGINE = MEMORY + ENGINE = MEMORY SELECT DISTINCT o.address_id addressFk, o.company_id companyFk FROM tmp.`order` tmpOrder JOIN hedera.`order` o ON o.id = tmpOrder.orderFk; @@ -16823,7 +14288,7 @@ BEGIN JOIN vn.taxClass tc ON tc.id = bp.taxClassFk GROUP BY tmpOrder.orderFk, pgc.`code`, pgc.rate HAVING taxableBase != 0; - + DROP TEMPORARY TABLE IF EXISTS tmp.orderAmount; CREATE TEMPORARY TABLE tmp.orderAmount (INDEX (orderFk)) @@ -16832,7 +14297,7 @@ BEGIN SUM(CAST(taxableBase * rate / 100 AS DECIMAL(10, 2))) tax FROM tmp.orderTax GROUP BY orderFk, `code`; - + DROP TEMPORARY TABLE tmp.addressTaxArea; END ;; DELIMITER ; @@ -16846,11 +14311,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `order_getTotal`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `order_getTotal`() BEGIN /** * Calcula el total con IVA para un conjunto de orders. @@ -16884,11 +14349,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `order_recalc`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `order_recalc`(vSelf INT) BEGIN /** * Recalculates the order total. @@ -16902,7 +14367,7 @@ BEGIN CREATE TEMPORARY TABLE tmp.`order` ENGINE = MEMORY SELECT vSelf orderFk; - + CALL order_getTax; SELECT IFNULL(SUM(taxableBase), 0.0), IFNULL(SUM(tax), 0.0) @@ -16930,11 +14395,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `order_requestRecalc`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `order_requestRecalc`(vSelf INT) proc: BEGIN /** * Adds a request to recalculate the order total. @@ -16945,7 +14410,7 @@ proc: BEGIN LEAVE proc; END IF; - INSERT IGNORE INTO orderRecalc SET orderFk = vSelf; + INSERT INTO orderRecalc SET orderFk = vSelf; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -16956,13 +14421,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `order_update`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `order_update`(vSelf INT) proc: BEGIN /** * Actualiza las líneas de un pedido. @@ -16993,7 +14458,7 @@ proc: BEGIN FROM orderRow r JOIN orderRowComponent c ON c.rowFk = r.id WHERE r.orderFk = vSelf; - + UPDATE orderRow r LEFT JOIN tmp.ticketComponentPrice p ON p.warehouseFk = r.warehouseFk @@ -17018,11 +14483,11 @@ proc: BEGIN ON t.id = c.componentFk AND (t.classRate IS NULL OR t.classRate = r.rate) WHERE r.orderFk = vSelf; - + CALL vn.ticketCalculatePurge; END IF; - UPDATE `order` SET date_make = NOW() + UPDATE `order` SET date_make = util.VN_NOW() WHERE id = vSelf; COMMIT; @@ -17038,11 +14503,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `survey_vote`(vAnswer INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `survey_vote`(vAnswer INT) BEGIN DECLARE vSurvey INT; DECLARE vCount TINYINT; @@ -17054,7 +14519,7 @@ BEGIN INSERT INTO surveyVote SET surveyFk = vSurvey, - userFk = account.userGetId(); + userFk = account.myUser_getId(); UPDATE surveyAnswer SET votes = votes + 1 WHERE id = vAnswer; @@ -17068,13 +14533,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `tpvTransaction_confirm`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `tpvTransaction_confirm`( vAmount INT ,vOrder INT ,vMerchant INT @@ -17195,11 +14660,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `tpvTransaction_confirmAll`(vDate DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `tpvTransaction_confirmAll`(vDate DATE) BEGIN /** * Confirma todas las transacciones confirmadas por el cliente pero no @@ -17246,11 +14711,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `tpvTransaction_confirmById`(vOrder INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `tpvTransaction_confirmById`(vOrder INT) BEGIN /** * Confirma manualmente una transacción espedificando su identificador. @@ -17283,17 +14748,16 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `tpvTransaction_undo` */; -ALTER DATABASE `hedera` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `tpvTransaction_undo`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `tpvTransaction_undo`(vSelf INT) p: BEGIN DECLARE vCustomer INT; DECLARE vAmount DOUBLE; @@ -17363,13 +14827,13 @@ p: BEGIN AND DATE(FECHA) = vDate AND EURODEBE = vAmount LIMIT 1; - + -- Actualiza la transaccion UPDATE tpvTransaction SET response = NULL, status = 'started' WHERE id = vSelf; - + COMMIT; END ;; DELIMITER ; @@ -17377,18 +14841,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `hedera` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `visitUser_new` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `visitUser_new`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `visitUser_new`( vAccess INT ,vSsid VARCHAR(64) ) @@ -17397,15 +14860,15 @@ BEGIN INSERT INTO visitUser SET accessFk = vAccess, - userFk = account.userGetId(); + userFk = account.myUser_getId(); SET vUserVisit = LAST_INSERT_ID(); UPDATE userSession SET userVisitFk = vUserVisit WHERE ssid = vSsid; - + DELETE FROM userSession - WHERE lastUpdate < TIMESTAMPADD(HOUR, -1, NOW()); + WHERE lastUpdate < TIMESTAMPADD(HOUR, -1, util.VN_NOW()); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -17418,11 +14881,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `visit_listByBrowser`(vFrom DATE, vTo DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `visit_listByBrowser`(vFrom DATE, vTo DATE) BEGIN /** * Lists visits grouped by browser. @@ -17455,11 +14918,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `visit_register`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `visit_register`( vVisit INT ,vPlatform VARCHAR(30) ,vBrowser VARCHAR(30) @@ -17527,7 +14990,7 @@ BEGIN UPDATE visitAgent SET firstAccessFk = vAccessId WHERE id = vAgentId; END IF; - + -- Returns the visit info SELECT vVisit visit, vAccessId access; @@ -17542,7 +15005,7 @@ DELIMITER ; -- Current Database: `nst` -- -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `nst` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `nst` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci */; USE `nst`; @@ -17557,11 +15020,11 @@ CREATE TABLE `balance` ( `id` int(11) NOT NULL AUTO_INCREMENT, `lft` int(11) NOT NULL, `rgt` int(11) NOT NULL, - `name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `lft_UNIQUE` (`lft`), UNIQUE KEY `rgt_UNIQUE` (`rgt`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -17577,12 +15040,12 @@ CREATE TABLE `geo` ( `rgt` int(11) DEFAULT NULL, `depth` int(11) DEFAULT NULL, `sons` int(11) DEFAULT NULL, - `item` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `item` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `lft_UNIQUE` (`lft`), UNIQUE KEY `rgt_UNIQUE` (`rgt`), CONSTRAINT `nst_geo_id` FOREIGN KEY (`id`) REFERENCES `nst` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -17596,11 +15059,11 @@ CREATE TABLE `labourTree` ( `id` int(11) NOT NULL AUTO_INCREMENT, `lft` int(11) NOT NULL, `rgt` int(11) NOT NULL, - `depth` int(11) NOT NULL DEFAULT '0', - `sons` int(11) NOT NULL DEFAULT '0', - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `depth` int(11) NOT NULL DEFAULT 0, + `sons` int(11) NOT NULL DEFAULT 0, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -17617,7 +15080,7 @@ CREATE TABLE `nst` ( PRIMARY KEY (`id`), UNIQUE KEY `lft_UNIQUE` (`lft`), UNIQUE KEY `rgt_UNIQUE` (`rgt`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -17631,26 +15094,26 @@ CREATE TABLE `nst` ( /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `nodeAdd`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45), IN `vParentFk` INT, IN `vChild` VARCHAR(100)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `nodeAdd`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45), IN `vParentFk` INT, IN `vChild` VARCHAR(100)) BEGIN DECLARE vSql TEXT; DECLARE vTableClone VARCHAR(45); SET vTableClone = CONCAT(vTable, 'Clone'); - + CALL util.exec(CONCAT('DROP TEMPORARY TABLE IF EXISTS tmp.', vTableClone)); CALL util.exec(CONCAT( 'CREATE TEMPORARY TABLE tmp.', vTableClone, ' ENGINE = MEMORY', ' SELECT * FROM ', vScheme, '.', vTable )); - + CALL util.exec(CONCAT( 'SELECT COUNT(c.id) INTO @childs', ' FROM ', vScheme, '.', vTable, ' p', @@ -17658,14 +15121,14 @@ BEGIN ' AND c.lft BETWEEN p.lft AND p.rgt AND c.id != ', vParentFk, ' WHERE p.id = ', vParentFk )); - + IF @childs = 0 THEN CALL util.exec(CONCAT( 'SELECT lft, depth INTO @vLeft, @vDepth', - ' FROM ', vScheme, '.', vTable, + ' FROM ', vScheme, '.', vTable, ' WHERE id = ', vParentFk )); - ELSE + ELSE CALL util.exec(CONCAT( 'SELECT c.rgt, p.depth INTO @vLeft, @vDepth', ' FROM ', vScheme, '.', vTable, ' p', @@ -17676,7 +15139,7 @@ BEGIN ' DESC LIMIT 1' )); END IF; - + CALL util.exec(CONCAT( 'UPDATE ', vScheme, '.', vTable, ' SET rgt = rgt + 2', ' WHERE rgt > @vLeft', @@ -17687,14 +15150,14 @@ BEGIN ' WHERE lft > @vLeft', ' ORDER BY lft DESC' )); - + SET vChild = REPLACE(vChild, "'", "\\'"); - + CALL util.exec(CONCAT( 'INSERT INTO ', vScheme, '.', vTable, ' (name, lft, rgt, depth)', ' VALUES ("', vChild, '", @vLeft + 1, @vLeft + 2, @vDepth + 1)' )); - + CALL util.exec(CONCAT('DROP TEMPORARY TABLE tmp.', vTableClone)); END ;; DELIMITER ; @@ -17706,13 +15169,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `nodeDelete`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45), IN `vNodeId` INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `nodeDelete`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45), IN `vNodeId` INT) BEGIN DECLARE vMyRight INT; DECLARE vMyLeft INT; @@ -17726,7 +15189,7 @@ BEGIN )); CALL util.exec(CONCAT( - 'DELETE FROM ', vScheme, '.', vTable, + 'DELETE FROM ', vScheme, '.', vTable, ' WHERE lft BETWEEN @vMyLeft AND @vMyRight' )); @@ -17749,15 +15212,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `nodeMove`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45), IN `vNodeId` INT, IN `vFatherId` INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `nodeMove`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45), IN `vNodeId` INT, IN `vFatherId` INT) BEGIN - -- Averiguamos el ancho de la rama + -- Averiguamos el ancho de la rama CALL util.exec (sql_printf ( 'SELECT t.rgt - t.lft +1 INTO @vMyWidth FROM %t.%t t WHERE t.id = %v' ,vScheme @@ -17780,13 +15243,13 @@ BEGIN 'UPDATE %t.%t SET rgt = rgt + @vMyWidth WHERE rgt >= @vFatherRight ORDER BY rgt DESC' ,vScheme ,vTable - )); + )); CALL util.exec (sql_printf ( 'UPDATE %t.%t SET lft = lft + @vMyWidth WHERE lft >= @vFatherRight ORDER BY lft DESC' ,vScheme ,vTable - )); + )); -- Es preciso recalcular los valores del nodo en el caso de que estuviera a la derecha del nuevo padre @@ -17802,7 +15265,7 @@ BEGIN 'UPDATE %t.%t SET lft = lft + @vGap WHERE lft BETWEEN @vMyLeft AND @vMyRight ORDER BY lft DESC' ,vScheme ,vTable - )); + )); CALL util.exec (sql_printf ( 'UPDATE %t.%t SET rgt = rgt + @vGap WHERE rgt BETWEEN @vMyLeft AND @vMyRight ORDER BY rgt DESC' ,vScheme @@ -17832,13 +15295,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `nodeRecalc`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `nodeRecalc`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45)) BEGIN CALL util.exec(CONCAT ( 'UPDATE ', vScheme, '.', vTable, ' d', @@ -17864,13 +15327,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `nodeTree`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45), IN `vGap` INT, IN `vShouldShow` BOOLEAN) +CREATE DEFINER=`root`@`localhost` PROCEDURE `nodeTree`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45), IN `vGap` INT, IN `vShouldShow` BOOLEAN) BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.nest; @@ -17907,13 +15370,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `nodeTree_pako`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45), IN `vGap` INT, IN `vShouldShow` BOOLEAN) +CREATE DEFINER=`root`@`localhost` PROCEDURE `nodeTree_pako`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45), IN `vGap` INT, IN `vShouldShow` BOOLEAN) BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.nest; @@ -17952,7 +15415,7 @@ DELIMITER ; -- Current Database: `pbx` -- -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `pbx` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `pbx` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci */; USE `pbx`; @@ -17964,22 +15427,22 @@ DROP TABLE IF EXISTS `blacklist`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `blacklist` ( - `phone` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + `phone` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`phone`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Hangup input calls from this list'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Hangup input calls from this list'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`blacklist_beforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pbx`.`blacklist_beforeInsert` BEFORE INSERT ON `blacklist` - FOR EACH ROW + FOR EACH ROW BEGIN CALL phone_isValid(NEW.phone); END */;; @@ -17993,13 +15456,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`blacklist_berforeUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pbx`.`blacklist_berforeUpdate` BEFORE UPDATE ON `blacklist` - FOR EACH ROW + FOR EACH ROW BEGIN CALL phone_isValid(NEW.phone); END */;; @@ -18018,22 +15481,22 @@ DROP TABLE IF EXISTS `cdr`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cdr` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `call_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `clid` varchar(80) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `src` varchar(80) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `dst` varchar(80) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `dcontext` varchar(80) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `channel` varchar(80) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `dst_channel` varchar(80) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `last_app` varchar(80) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `last_data` varchar(80) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `duration` int(11) NOT NULL DEFAULT '0', - `billsec` int(11) NOT NULL DEFAULT '0', - `disposition` varchar(45) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `ama_flags` int(11) NOT NULL DEFAULT '0', - `account_code` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `unique_id` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `user_field` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `call_date` datetime NOT NULL DEFAULT current_timestamp(), + `clid` varchar(80) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `src` varchar(80) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `dst` varchar(80) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `dcontext` varchar(80) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `channel` varchar(80) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `dst_channel` varchar(80) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `last_app` varchar(80) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `last_data` varchar(80) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `duration` int(11) NOT NULL DEFAULT 0, + `billsec` int(11) NOT NULL DEFAULT 0, + `disposition` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `ama_flags` int(11) NOT NULL DEFAULT 0, + `account_code` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `unique_id` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `user_field` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `calldate` (`call_date`), KEY `dst` (`dst`), @@ -18041,7 +15504,7 @@ CREATE TABLE `cdr` ( KEY `dstchannel` (`dst_channel`), KEY `disposition` (`disposition`), KEY `src` (`src`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -18082,9 +15545,9 @@ DROP TABLE IF EXISTS `config`; CREATE TABLE `config` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `sundayFestive` tinyint(4) NOT NULL, - `countryPrefix` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `countryPrefix` varchar(20) CHARACTER SET utf8mb3 DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Global configuration'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Global configuration'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -18095,24 +15558,24 @@ DROP TABLE IF EXISTS `followme`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `followme` ( - `extension` varchar(128) CHARACTER SET utf8 NOT NULL, - `phone` varchar(20) CHARACTER SET utf8 NOT NULL, + `extension` varchar(128) CHARACTER SET utf8mb3 NOT NULL, + `phone` varchar(20) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`extension`), CONSTRAINT `followme_ibfk_1` FOREIGN KEY (`extension`) REFERENCES `sip` (`extension`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`followme_beforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pbx`.`followme_beforeInsert` BEFORE INSERT ON `followme` - FOR EACH ROW + FOR EACH ROW BEGIN CALL pbx.phone_isValid(NEW.phone); END */;; @@ -18126,13 +15589,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`followme_beforeUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pbx`.`followme_beforeUpdate` BEFORE UPDATE ON `followme` - FOR EACH ROW + FOR EACH ROW BEGIN CALL pbx.phone_isValid(NEW.phone); END */;; @@ -18168,13 +15631,13 @@ DROP TABLE IF EXISTS `followmeConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `followmeConfig` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `music` varchar(50) CHARACTER SET utf8 DEFAULT NULL, - `context` varchar(50) CHARACTER SET utf8 NOT NULL, - `takeCall` char(1) CHARACTER SET utf8 NOT NULL, - `declineCall` char(1) CHARACTER SET utf8 NOT NULL, + `music` varchar(50) CHARACTER SET utf8mb3 DEFAULT NULL, + `context` varchar(50) CHARACTER SET utf8mb3 NOT NULL, + `takeCall` char(1) CHARACTER SET utf8mb3 NOT NULL, + `declineCall` char(1) CHARACTER SET utf8mb3 NOT NULL, `timeout` int(11) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -18202,28 +15665,28 @@ DROP TABLE IF EXISTS `queue`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `queue` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `description` varchar(128) CHARACTER SET utf8 NOT NULL, - `name` varchar(128) CHARACTER SET utf8 NOT NULL, + `description` varchar(128) CHARACTER SET utf8mb3 NOT NULL, + `name` varchar(128) CHARACTER SET utf8mb3 NOT NULL, `config` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`), UNIQUE KEY `description` (`description`), KEY `config` (`config`), CONSTRAINT `queue_ibfk_1` FOREIGN KEY (`config`) REFERENCES `queueConfig` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Queues'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Queues'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`queue_beforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pbx`.`queue_beforeInsert` BEFORE INSERT ON `queue` - FOR EACH ROW + FOR EACH ROW BEGIN CALL queue_isValid(NEW.`name`); END */;; @@ -18237,13 +15700,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`queue_beforeUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pbx`.`queue_beforeUpdate` BEFORE UPDATE ON `queue` - FOR EACH ROW + FOR EACH ROW BEGIN CALL queue_isValid(NEW.`name`); END */;; @@ -18281,14 +15744,14 @@ DROP TABLE IF EXISTS `queueConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `queueConfig` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `strategy` varchar(128) CHARACTER SET utf8 NOT NULL, + `strategy` varchar(128) CHARACTER SET utf8mb3 NOT NULL, `timeout` int(10) unsigned NOT NULL, `retry` int(10) unsigned NOT NULL, `weight` int(10) unsigned NOT NULL, `maxLen` int(10) unsigned NOT NULL, `ringInUse` tinyint(4) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Default values for queues configuration'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Default values for queues configuration'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -18300,14 +15763,14 @@ DROP TABLE IF EXISTS `queueMember`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `queueMember` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `queue` varchar(128) CHARACTER SET utf8 NOT NULL, - `extension` varchar(128) CHARACTER SET utf8 NOT NULL, + `queue` varchar(128) CHARACTER SET utf8mb3 NOT NULL, + `extension` varchar(128) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `queue` (`queue`,`extension`), KEY `extension` (`extension`), CONSTRAINT `queueMember_ibfk_1` FOREIGN KEY (`queue`) REFERENCES `queue` (`name`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `queueMember_ibfk_2` FOREIGN KEY (`extension`) REFERENCES `sip` (`extension`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Queue members'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Queue members'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -18335,25 +15798,25 @@ DROP TABLE IF EXISTS `queuePhone`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `queuePhone` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `queue` varchar(128) CHARACTER SET utf8 NOT NULL, - `phone` varchar(128) CHARACTER SET utf8 NOT NULL, + `queue` varchar(128) CHARACTER SET utf8mb3 NOT NULL, + `phone` varchar(128) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `queue` (`queue`,`phone`), CONSTRAINT `queuePhone_ibfk_1` FOREIGN KEY (`queue`) REFERENCES `queue` (`name`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`queuePhone_beforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pbx`.`queuePhone_beforeInsert` BEFORE INSERT ON `queuePhone` - FOR EACH ROW + FOR EACH ROW BEGIN CALL phone_isValid(NEW.phone); END */;; @@ -18367,13 +15830,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`queuePhone_beforeUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pbx`.`queuePhone_beforeUpdate` BEFORE UPDATE ON `queuePhone` - FOR EACH ROW + FOR EACH ROW BEGIN CALL phone_isValid(NEW.phone); END */;; @@ -18395,11 +15858,11 @@ CREATE TABLE `schedule` ( `weekDay` tinyint(3) unsigned NOT NULL COMMENT '0 = Monday, 6 = Sunday', `timeStart` time NOT NULL, `timeEnd` time NOT NULL, - `queue` varchar(128) CHARACTER SET utf8 NOT NULL, + `queue` varchar(128) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`id`), KEY `queue` (`queue`), CONSTRAINT `schedule_ibfk_1` FOREIGN KEY (`queue`) REFERENCES `queue` (`name`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -18410,28 +15873,28 @@ DROP TABLE IF EXISTS `sip`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `sip` ( - `user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'The user id', - `extension` varchar(128) CHARACTER SET utf8 NOT NULL COMMENT 'The softphone extension', - `md5Secret` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'MD5 hash of extension and password', - `secret` varchar(80) CHARACTER SET utf8 DEFAULT NULL COMMENT 'Deprecated', - `caller_id` varchar(80) CHARACTER SET utf8 DEFAULT NULL COMMENT 'Deprecated', + `user_id` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'The user id', + `extension` varchar(128) CHARACTER SET utf8mb3 NOT NULL COMMENT 'The softphone extension', + `md5Secret` varchar(80) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'MD5 hash of extension and password', + `secret` varchar(80) CHARACTER SET utf8mb3 DEFAULT NULL COMMENT 'Deprecated', + `caller_id` varchar(80) CHARACTER SET utf8mb3 DEFAULT NULL COMMENT 'Deprecated', PRIMARY KEY (`user_id`), UNIQUE KEY `extension` (`extension`), CONSTRAINT `sip_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='SIP accounts'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='SIP accounts'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`sip_beforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pbx`.`sip_beforeInsert` BEFORE INSERT ON `sip` - FOR EACH ROW + FOR EACH ROW BEGIN CALL sip_isValid(NEW.extension); END */;; @@ -18443,15 +15906,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `sip_afterInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pbx`.`sip_afterInsert` AFTER INSERT ON `sip` - FOR EACH ROW + FOR EACH ROW BEGIN INSERT INTO sipReg SET userId = NEW.user_id; @@ -18470,13 +15933,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`sip_beforeUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pbx`.`sip_beforeUpdate` BEFORE UPDATE ON `sip` - FOR EACH ROW + FOR EACH ROW BEGIN CALL sip_isValid(NEW.extension); END */;; @@ -18488,15 +15951,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`sip_afterUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `pbx`.`sip_afterUpdate` AFTER UPDATE ON `sip` - FOR EACH ROW + FOR EACH ROW BEGIN IF !(OLD.extension <=> NEW.extension) OR !(OLD.user_id <=> NEW.user_id) THEN @@ -18556,27 +16019,27 @@ DROP TABLE IF EXISTS `sipConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `sipConfig` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, - `host` varchar(40) CHARACTER SET utf8 DEFAULT NULL, - `deny` varchar(95) CHARACTER SET utf8 NOT NULL, - `permit` varchar(95) CHARACTER SET utf8 NOT NULL, - `type` enum('user','peer','friend') CHARACTER SET utf8 NOT NULL, - `context` varchar(80) CHARACTER SET utf8 NOT NULL, - `incomingLimit` varchar(10) CHARACTER SET utf8 NOT NULL, - `pickupGroup` varchar(10) CHARACTER SET utf8 NOT NULL, - `careInvite` varchar(10) CHARACTER SET utf8 NOT NULL, - `insecure` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `transport` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `avpf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `icesupport` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `encryption` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `dtlsenable` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `dtlverify` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `dtlscertfile` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `dtlsprivatekey` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `dtlssetup` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `nat` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `host` varchar(40) CHARACTER SET utf8mb3 DEFAULT NULL, + `deny` varchar(95) CHARACTER SET utf8mb3 NOT NULL, + `permit` varchar(95) CHARACTER SET utf8mb3 NOT NULL, + `type` enum('user','peer','friend') CHARACTER SET utf8mb3 NOT NULL, + `context` varchar(80) CHARACTER SET utf8mb3 NOT NULL, + `incomingLimit` varchar(10) CHARACTER SET utf8mb3 NOT NULL, + `pickupGroup` varchar(10) CHARACTER SET utf8mb3 NOT NULL, + `careInvite` varchar(10) CHARACTER SET utf8mb3 NOT NULL, + `insecure` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `transport` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `avpf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `icesupport` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `encryption` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `dtlsenable` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `dtlverify` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `dtlscertfile` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `dtlsprivatekey` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `dtlssetup` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `nat` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Default values for SIP accounts'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Default values for SIP accounts'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -18588,17 +16051,17 @@ DROP TABLE IF EXISTS `sipReg`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `sipReg` ( `userId` int(10) unsigned NOT NULL, - `ipAddr` varchar(45) CHARACTER SET utf8 DEFAULT NULL, + `ipAddr` varchar(45) CHARACTER SET utf8mb3 DEFAULT NULL, `regSeconds` bigint(20) unsigned DEFAULT NULL, - `port` varchar(50) CHARACTER SET utf8 DEFAULT NULL, - `defaultUser` varchar(50) CHARACTER SET utf8 DEFAULT NULL, - `userAgent` varchar(80) CHARACTER SET utf8 DEFAULT NULL, - `lastMs` varchar(50) CHARACTER SET utf8 DEFAULT NULL, - `fullContact` varchar(50) CHARACTER SET utf8 DEFAULT NULL, - `regServer` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `port` varchar(50) CHARACTER SET utf8mb3 DEFAULT NULL, + `defaultUser` varchar(50) CHARACTER SET utf8mb3 DEFAULT NULL, + `userAgent` varchar(80) CHARACTER SET utf8mb3 DEFAULT NULL, + `lastMs` varchar(50) CHARACTER SET utf8mb3 DEFAULT NULL, + `fullContact` varchar(50) CHARACTER SET utf8mb3 DEFAULT NULL, + `regServer` varchar(20) CHARACTER SET utf8mb3 DEFAULT NULL, PRIMARY KEY (`userId`), CONSTRAINT `sipReg_ibfk_1` FOREIGN KEY (`userId`) REFERENCES `sip` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='SIP registrations'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='SIP registrations'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -18614,11 +16077,11 @@ CREATE TABLE `sipReg` ( /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `clientFromPhone`(vPhone VARCHAR(255)) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `clientFromPhone`(vPhone VARCHAR(255)) RETURNS int(11) DETERMINISTIC BEGIN /** @@ -18637,11 +16100,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `phone_format`(vPhone VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `phone_format`(vPhone VARCHAR(255)) RETURNS varchar(255) CHARSET utf8mb3 DETERMINISTIC BEGIN DECLARE vI INT DEFAULT 0; @@ -18652,7 +16115,7 @@ BEGIN WHILE vI < vLen DO SET vChr = SUBSTR(vPhone, vI + 1, 1); - + IF vChr REGEXP '^[0-9]$' THEN SET vNewPhone = CONCAT(vNewPhone, vChr); @@ -18660,7 +16123,7 @@ BEGIN THEN SET vNewPhone = CONCAT(vNewPhone, '00'); END IF; - + SET vI = vI + 1; END WHILE; @@ -18685,11 +16148,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `phone_isValid`(vPhone VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `phone_isValid`(vPhone VARCHAR(255)) BEGIN /** * Check if an phone has the correct format and @@ -18720,12 +16183,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `queue_isValid`(vQueue VARCHAR(255)) - DETERMINISTIC +CREATE DEFINER=`root`@`localhost` PROCEDURE `queue_isValid`(vQueue VARCHAR(255)) BEGIN /** * Check if an queue has the correct format and @@ -18754,24 +16216,24 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sip_getExtension`(vUserId INT(10)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `sip_getExtension`(vUserId INT(10)) BEGIN - + /* * Devuelve la extensión pbx del usuario - * - * @param vUserId Id del usuario - * + * + * @param vUserId Id del usuario + * */ SELECT extension - FROM sip s + FROM sip s WHERE s.user_id = vUserId; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -18784,12 +16246,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sip_isValid`(vExtension VARCHAR(255)) - DETERMINISTIC +CREATE DEFINER=`root`@`localhost` PROCEDURE `sip_isValid`(vExtension VARCHAR(255)) BEGIN /** * Check if an extension has the correct format and @@ -18819,11 +16280,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sip_setPassword`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `sip_setPassword`( vUser VARCHAR(255), vPassword VARCHAR(255) ) @@ -18842,7 +16303,7 @@ DELIMITER ; -- Current Database: `postgresql` -- -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `postgresql` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `postgresql` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci */; USE `postgresql`; @@ -18866,7 +16327,7 @@ CREATE TABLE `address` ( KEY `address_town_id_idx` (`town_id`), CONSTRAINT `address_ibfk_1` FOREIGN KEY (`address_type_id`) REFERENCES `address_type` (`address_type_id`) ON DELETE NO ACTION ON UPDATE CASCADE, CONSTRAINT `address_ibfk_2` FOREIGN KEY (`town_id`) REFERENCES `townKk` (`town_id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -18880,19 +16341,19 @@ CREATE TABLE `address_type` ( `address_type_id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, PRIMARY KEY (`address_type_id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `bank_account` +-- Table structure for table `bank_account__` -- -DROP TABLE IF EXISTS `bank_account`; +DROP TABLE IF EXISTS `bank_account__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `bank_account` ( +CREATE TABLE `bank_account__` ( `bank_account_id` int(11) NOT NULL AUTO_INCREMENT, - `client_id` int(11) DEFAULT NULL, + `client_id__` int(11) DEFAULT NULL, `account` char(50) DEFAULT NULL, `bic` char(20) DEFAULT NULL, `bank_account_type_id` int(11) DEFAULT NULL, @@ -18902,16 +16363,17 @@ CREATE TABLE `bank_account` ( `bank_adress` char(125) DEFAULT NULL, `bank_city` char(50) DEFAULT NULL, `bank_account_link_id` int(11) DEFAULT NULL, + `workerFk` int(10) unsigned NOT NULL, PRIMARY KEY (`bank_account_id`), - KEY `fki_bank_profile` (`client_id`), - KEY `fki_business_account_fk` (`client_id`), - KEY `fki_person_account_fk` (`client_id`), + UNIQUE KEY `workerFk_UNIQUE` (`workerFk`), + KEY `fki_business_account_fk` (`client_id__`), + KEY `fki_person_account_fk` (`client_id__`), KEY `bank_account_bank_account_type` (`bank_account_type_id`), KEY `bank_account_nation_id` (`nation_id`), CONSTRAINT `bank_account_bank_account_type` FOREIGN KEY (`bank_account_type_id`) REFERENCES `bank_account_type` (`bank_account_type_id`) ON UPDATE CASCADE, - CONSTRAINT `bank_account_client_id` FOREIGN KEY (`client_id`) REFERENCES `profile` (`profile_id`) ON UPDATE CASCADE, - CONSTRAINT `bank_account_nation_id` FOREIGN KEY (`nation_id`) REFERENCES `vn`.`country` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8; + CONSTRAINT `bank_account_nation_id` FOREIGN KEY (`nation_id`) REFERENCES `vn`.`country` (`id`) ON UPDATE CASCADE, + CONSTRAINT `bank_account_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `vn`.`worker` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -18925,7 +16387,7 @@ CREATE TABLE `bank_account_type` ( `bank_account_type_id` int(11) NOT NULL AUTO_INCREMENT, `name` char(15) DEFAULT NULL, PRIMARY KEY (`bank_account_type_id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -18943,68 +16405,54 @@ CREATE TABLE `bank_bic__` ( `referenciaVNL` varchar(35) DEFAULT NULL, PRIMARY KEY (`nrbe`), KEY `bankbic_ikey1` (`bic`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `business` +-- Table structure for table `business__` -- -DROP TABLE IF EXISTS `business`; +DROP TABLE IF EXISTS `business__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `business` ( +CREATE TABLE `business__` ( `business_id` int(11) NOT NULL AUTO_INCREMENT, `client_id` int(11) DEFAULT NULL, - `provider_id` int(11) DEFAULT NULL, + `provider_id__` int(11) DEFAULT NULL, + `companyCodeFk` char(3) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_start` date DEFAULT NULL, `date_end` date DEFAULT NULL, - `workerBusiness` longtext, + `workerBusiness` longtext DEFAULT NULL, `reasonEndFk` int(11) DEFAULT NULL, + `payedHolidays` decimal(5,2) NOT NULL DEFAULT 0.00, `occupationCodeFk` varchar(1) DEFAULT NULL, + `workerFk` int(10) unsigned NOT NULL, PRIMARY KEY (`business_id`), KEY `business_client` (`client_id`), - KEY `bussiness_provider` (`provider_id`), KEY `business_occupationCodeFk` (`occupationCodeFk`), - CONSTRAINT `business_client` FOREIGN KEY (`client_id`) REFERENCES `profile` (`profile_id`) ON DELETE CASCADE ON UPDATE CASCADE, + KEY `business_companyCodeFk` (`companyCodeFk`), + KEY `business_workerFk_idx` (`workerFk`), + CONSTRAINT `business_client` FOREIGN KEY (`client_id`) REFERENCES `profile__` (`profile_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `business_companyCodeFk` FOREIGN KEY (`companyCodeFk`) REFERENCES `vn`.`company` (`code`) ON UPDATE CASCADE, CONSTRAINT `business_occupationCodeFk` FOREIGN KEY (`occupationCodeFk`) REFERENCES `vn`.`occupationCode` (`code`) ON UPDATE CASCADE, - CONSTRAINT `bussiness_provider` FOREIGN KEY (`provider_id`) REFERENCES `profile` (`profile_id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8; + CONSTRAINT `business_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `vn`.`worker` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `postgresql`.`business_beforeUpdate` - BEFORE UPDATE ON `business` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `postgresql`.`business_beforeInsert` + BEFORE INSERT ON `business__` FOR EACH ROW BEGIN - DECLARE isOverlapping BOOL; - - IF !(OLD.date_start <=> NEW.date_start AND OLD.date_end <=> NEW.date_end) THEN - - SELECT COUNT(*) > 0 INTO isOverlapping - FROM business b - WHERE (util.hasDateOverlapped( - NEW.date_start, - IFNULL(NEW.date_end,b.date_start), - b.date_start, - IFNULL(b.date_end,NEW.date_start)) - OR (NEW.date_end <=> NULL AND b.date_end <=> NULL)) - AND b.business_id <> OLD.business_id - AND client_id = OLD.client_id - ; - - IF isOverlapping THEN - CALL util.throw ('IS_OVERLAPPING'); - END IF; - + IF NEW.date_end IS NULL THEN + SET NEW.payedHolidays = 0; END IF; - END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -19013,55 +16461,54 @@ DELIMITER ; /*!50003 SET collation_connection = @saved_col_connection */ ; -- --- Table structure for table `business_labour` +-- Table structure for table `business_labour__` -- -DROP TABLE IF EXISTS `business_labour`; +DROP TABLE IF EXISTS `business_labour__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `business_labour` ( +CREATE TABLE `business_labour__` ( `business_id` int(11) NOT NULL, - `notes` longtext, + `notes` longtext DEFAULT NULL, `department_id` int(11) NOT NULL, - `professional_category_id` int(11) DEFAULT '0', - `incentivo` double DEFAULT '0', - `calendar_labour_type_id` int(11) DEFAULT '1', - `porhoras` smallint(6) NOT NULL DEFAULT '0', + `professional_category_id` int(11) DEFAULT 0, + `incentivo` double DEFAULT 0, + `calendar_labour_type_id` int(11) DEFAULT 1, + `porhoras` smallint(6) NOT NULL DEFAULT 0, `labour_agreement_id` int(11) DEFAULT NULL, - `workcenter_id` int(11) DEFAULT NULL, + `workcenter_id` int(11) NOT NULL, PRIMARY KEY (`business_id`), KEY `fki_business_labour_agreement` (`labour_agreement_id`), KEY `fki_workcenter_labour` (`workcenter_id`), KEY `horario_tipo` (`calendar_labour_type_id`), KEY `business_labour_department_idx` (`department_id`), - CONSTRAINT `bus_restriction` FOREIGN KEY (`business_id`) REFERENCES `business` (`business_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `business_labour_FK` FOREIGN KEY (`workcenter_id`) REFERENCES `vn`.`workCenter` (`id`) ON UPDATE CASCADE, CONSTRAINT `business_labour_agreement` FOREIGN KEY (`labour_agreement_id`) REFERENCES `labour_agreement` (`labour_agreement_id`) ON UPDATE CASCADE, + CONSTRAINT `business_labour_business_id` FOREIGN KEY (`business_id`) REFERENCES `vn`.`business` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `business_labour_department_id` FOREIGN KEY (`department_id`) REFERENCES `vn`.`department` (`id`) ON UPDATE CASCADE, - CONSTRAINT `horario_tipo` FOREIGN KEY (`calendar_labour_type_id`) REFERENCES `calendar_labour_type` (`calendar_labour_type_id`) ON UPDATE CASCADE, - CONSTRAINT `workcenter_labour` FOREIGN KEY (`workcenter_id`) REFERENCES `workcenter` (`workcenter_id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB DEFAULT CHARSET=utf8; + CONSTRAINT `horario_tipo` FOREIGN KEY (`calendar_labour_type_id`) REFERENCES `calendar_labour_type` (`calendar_labour_type_id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `business_labour_payroll` +-- Table structure for table `business_labour_payroll__` -- -DROP TABLE IF EXISTS `business_labour_payroll`; +DROP TABLE IF EXISTS `business_labour_payroll__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `business_labour_payroll` ( +CREATE TABLE `business_labour_payroll__` ( `business_id` int(11) NOT NULL, `cod_tarifa` int(11) DEFAULT NULL, `cod_categoria` int(11) DEFAULT NULL, `cod_contrato` int(11) DEFAULT NULL, - `importepactado` decimal(10,2) NOT NULL DEFAULT '0.00', + `importepactado` decimal(10,2) NOT NULL DEFAULT 0.00, PRIMARY KEY (`business_id`), KEY `business_labour_payroll_cod_categoria_idx` (`cod_categoria`), - KEY `business_labour_payroll_cod_contrato` (`cod_contrato`), - CONSTRAINT `business_labour_payroll_cod_categoria` FOREIGN KEY (`cod_categoria`) REFERENCES `vn2008`.`payroll_categorias` (`codcategoria`) ON UPDATE CASCADE, - CONSTRAINT `business_labour_payroll_cod_contrato` FOREIGN KEY (`cod_contrato`) REFERENCES `vn2008`.`payroll_contratos` (`CodContrato`) ON UPDATE CASCADE, - CONSTRAINT `business_labour_payroll_fk1` FOREIGN KEY (`business_id`) REFERENCES `business` (`business_id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + KEY `business_labour_payroll_FK` (`cod_contrato`), + CONSTRAINT `business_labour_payroll_FK` FOREIGN KEY (`cod_contrato`) REFERENCES `vn`.`workerBusinessType` (`id`) ON UPDATE CASCADE, + CONSTRAINT `business_labour_payroll_business_id` FOREIGN KEY (`business_id`) REFERENCES `vn`.`business` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19074,7 +16521,7 @@ SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; /*!50001 CREATE TABLE `calendar_employee` ( `id` tinyint NOT NULL, - `business_id` tinyint NOT NULL, + `businessFk` tinyint NOT NULL, `calendar_state_id` tinyint NOT NULL, `date` tinyint NOT NULL ) ENGINE=MyISAM */; @@ -19092,7 +16539,7 @@ CREATE TABLE `calendar_free__` ( `type` varchar(20) NOT NULL, `rgb` varchar(7) DEFAULT NULL, PRIMARY KEY (`calendar_free_id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19117,8 +16564,8 @@ CREATE TABLE `calendar_labour__` ( KEY `fki_workcenter_calendar` (`workcenter_id`), CONSTRAINT `fk_calendar_labour_calendar_free1` FOREIGN KEY (`calendar_free_id`) REFERENCES `calendar_free__` (`calendar_free_id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_calendar_labour_legend_id` FOREIGN KEY (`calendar_labour_legend_id`) REFERENCES `calendar_labour_legend__` (`calendar_labour_legend_id`) ON DELETE NO ACTION ON UPDATE CASCADE, - CONSTRAINT `workcenter_calendar` FOREIGN KEY (`workcenter_id`) REFERENCES `workcenter` (`workcenter_id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8; + CONSTRAINT `workcenter_calendar` FOREIGN KEY (`workcenter_id`) REFERENCES `workcenter__` (`workcenter_id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19130,10 +16577,10 @@ DROP TABLE IF EXISTS `calendar_labour_legend__`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `calendar_labour_legend__` ( `calendar_labour_legend_id` int(11) NOT NULL AUTO_INCREMENT, - `descripcion` longtext, + `descripcion` longtext DEFAULT NULL, PRIMARY KEY (`calendar_labour_legend_id`), UNIQUE KEY `calendar_labour_legend_calendar_labour_legend_id_key` (`calendar_labour_legend_id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19148,32 +16595,10 @@ CREATE TABLE `calendar_labour_type` ( `descripcion` varchar(50) DEFAULT NULL, `pausa_remunerada` time DEFAULT NULL, `hours_week` smallint(6) DEFAULT NULL, - `isPartial` tinyint(1) NOT NULL DEFAULT '0', + `isPartial` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (`calendar_labour_type_id`), UNIQUE KEY `hours_labour_hours_labour_id_key` (`calendar_labour_type_id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `calendar_state` --- - -DROP TABLE IF EXISTS `calendar_state`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `calendar_state` ( - `calendar_state_id` int(11) NOT NULL AUTO_INCREMENT, - `type` varchar(30) NOT NULL, - `rgb` varchar(7) NOT NULL, - `color` bigint(20) DEFAULT '0', - `permissionRate` decimal(3,2) DEFAULT NULL, - `code` varchar(45) DEFAULT NULL, - `isAllowedToWork` tinyint(4) NOT NULL DEFAULT '0', - `isPrintable` tinyint(1) NOT NULL DEFAULT '0', - `discountRate` decimal(3,2) DEFAULT NULL, - `holidayEntitlementRate` decimal(3,2) DEFAULT '1.00', - PRIMARY KEY (`calendar_state_id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19187,7 +16612,7 @@ CREATE TABLE `currency__` ( `currency_id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(15) NOT NULL, PRIMARY KEY (`currency_id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19199,10 +16624,10 @@ DROP TABLE IF EXISTS `erte_COVID19`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `erte_COVID19` ( `personFk` int(11) NOT NULL, - `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`personFk`), - CONSTRAINT `erte_COVID19_FK` FOREIGN KEY (`personFk`) REFERENCES `vn`.`person` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + CONSTRAINT `erte_COVID19_FK` FOREIGN KEY (`personFk`) REFERENCES `vn`.`person__` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19214,18 +16639,19 @@ DROP TABLE IF EXISTS `income_employee`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `income_employee` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `debe` decimal(10,2) DEFAULT NULL, - `haber` decimal(10,2) DEFAULT '0.00', + `debe` decimal(10,2) NOT NULL DEFAULT 0.00, + `haber` decimal(10,2) NOT NULL DEFAULT 0.00, `id_incomeType` int(11) DEFAULT NULL, `odbc_date` date DEFAULT NULL, - `person_id` int(11) DEFAULT NULL, - `concepto` longtext, + `workerFk` int(11) unsigned NOT NULL, + `person_id__` int(11) DEFAULT NULL, + `concepto` longtext DEFAULT NULL, PRIMARY KEY (`id`), - KEY `fincometype_id` (`id_incomeType`), - KEY `fperson_id` (`person_id`), - CONSTRAINT `fincometype_id` FOREIGN KEY (`id_incomeType`) REFERENCES `incometype_employee` (`id_incometype`) ON DELETE NO ACTION ON UPDATE NO ACTION, - CONSTRAINT `income_employee_FK` FOREIGN KEY (`person_id`) REFERENCES `vn`.`person` (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; + KEY `income_employeeId_incomeType_idx` (`id_incomeType`), + KEY `income_employee_workerFk_idx` (`workerFk`), + CONSTRAINT `income_employeeId_incomeType` FOREIGN KEY (`id_incomeType`) REFERENCES `vn2008`.`payroll_conceptos` (`conceptoid`) ON UPDATE CASCADE, + CONSTRAINT `income_employee_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `vn`.`worker` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19238,10 +16664,10 @@ DROP TABLE IF EXISTS `incometype_employee`; CREATE TABLE `incometype_employee` ( `id_incometype` int(11) NOT NULL, `descripcion` varchar(255) DEFAULT NULL, - `nomina` smallint(6) DEFAULT '0', - `isExtraSalarial` tinyint(4) NOT NULL DEFAULT '0', + `nomina` smallint(6) DEFAULT 0, + `isExtraSalarial` tinyint(4) NOT NULL DEFAULT 0, PRIMARY KEY (`id_incometype`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19253,15 +16679,15 @@ DROP TABLE IF EXISTS `journey`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `journey` ( `journey_id` int(11) NOT NULL AUTO_INCREMENT, - `day_id` smallint(6) NOT NULL DEFAULT '1' COMMENT 'Lunes = 1 \nDomingo = 7', + `day_id` smallint(6) NOT NULL DEFAULT 1 COMMENT 'Lunes = 1 \nDomingo = 7', `start` time DEFAULT NULL, `end` time DEFAULT NULL, `business_id` int(11) NOT NULL, PRIMARY KEY (`journey_id`), UNIQUE KEY `day_id` (`day_id`,`start`,`end`,`business_id`), - KEY `fki_business_journey` (`business_id`), - CONSTRAINT `business_journey` FOREIGN KEY (`business_id`) REFERENCES `business` (`business_id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8; + KEY `journey_business_id_idx` (`business_id`), + CONSTRAINT `journey_business_id` FOREIGN KEY (`business_id`) REFERENCES `vn`.`business` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19279,7 +16705,7 @@ CREATE TABLE `labour_agreement` ( `date_START` date DEFAULT NULL, `date_END` date DEFAULT NULL, PRIMARY KEY (`labour_agreement_id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19297,7 +16723,7 @@ CREATE TABLE `media` ( PRIMARY KEY (`media_id`), KEY `media_media_type_id_idx` (`media_type_id`), CONSTRAINT `media_ibfk_1` FOREIGN KEY (`media_type_id`) REFERENCES `media_type` (`media_type_id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19312,7 +16738,7 @@ CREATE TABLE `media_type` ( `name` varchar(15) NOT NULL, PRIMARY KEY (`media_type_id`), UNIQUE KEY `media_type_name_key` (`name`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19324,56 +16750,31 @@ DROP TABLE IF EXISTS `nation__`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `nation__` ( `nation_id` int(11) NOT NULL AUTO_INCREMENT, - `currency_id` int(11) NOT NULL DEFAULT '1', + `currency_id` int(11) NOT NULL DEFAULT 1, `name` varchar(20) NOT NULL, `brief` char(3) NOT NULL, - `flag` longblob, + `flag` longblob DEFAULT NULL, PRIMARY KEY (`nation_id`), UNIQUE KEY `nation_name_key` (`name`), KEY `nation_currency_id_idx` (`currency_id`), CONSTRAINT `nation___ibfk_1` FOREIGN KEY (`currency_id`) REFERENCES `currency__` (`currency_id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `periodos` +-- Table structure for table `periodos__` -- -DROP TABLE IF EXISTS `periodos`; +DROP TABLE IF EXISTS `periodos__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `periodos` ( +CREATE TABLE `periodos__` ( `fecha` date NOT NULL, `periodo` int(11) DEFAULT NULL, PRIMARY KEY (`fecha`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `person` --- - -DROP TABLE IF EXISTS `person`; -/*!50001 DROP VIEW IF EXISTS `person`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `person` ( - `person_id` tinyint NOT NULL, - `name` tinyint NOT NULL, - `nickname` tinyint NOT NULL, - `nif` tinyint NOT NULL, - `birth` tinyint NOT NULL, - `firstname` tinyint NOT NULL, - `p2` tinyint NOT NULL, - `nis` tinyint NOT NULL, - `id_trabajador` tinyint NOT NULL, - `isDisable` tinyint NOT NULL, - `isFreelance` tinyint NOT NULL, - `isSsDiscounted` tinyint NOT NULL, - `sex` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `person__` -- @@ -19388,12 +16789,12 @@ CREATE TABLE `person__` ( `nif` varchar(15) DEFAULT NULL, `birth` date DEFAULT NULL, `firstname` varchar(20) DEFAULT NULL, - `p2` longtext, + `p2` longtext DEFAULT NULL, `nis` int(11) DEFAULT NULL, `id_trabajador` int(10) unsigned DEFAULT NULL, - `isDisable` smallint(6) NOT NULL DEFAULT '0', - `isFreelance` smallint(6) NOT NULL DEFAULT '0' COMMENT 'M Male\nF Female', - `isSsDiscounted` smallint(6) NOT NULL DEFAULT '0', + `isDisable` smallint(6) NOT NULL DEFAULT 0, + `isFreelance` smallint(6) NOT NULL DEFAULT 0 COMMENT 'M Male\nF Female', + `isSsDiscounted` smallint(6) NOT NULL DEFAULT 0, `sex` enum('M','F') NOT NULL DEFAULT 'F' COMMENT 'M Masculino F Femenino', PRIMARY KEY (`person_id`), UNIQUE KEY `person_nis` (`person_id`), @@ -19403,7 +16804,7 @@ CREATE TABLE `person__` ( KEY `index1` (`person_id`,`name`,`nickname`,`firstname`), KEY `person_worker` (`id_trabajador`), CONSTRAINT `Person_ibfk_1` FOREIGN KEY (`id_trabajador`) REFERENCES `vn`.`worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19417,12 +16818,12 @@ CREATE TABLE `professional_category` ( `professional_category_id` int(11) NOT NULL AUTO_INCREMENT, `category_name` varchar(50) NOT NULL, `professional_levels_id` int(11) DEFAULT NULL, - `fichajes` tinyint(4) NOT NULL DEFAULT '1', + `fichajes` tinyint(4) NOT NULL DEFAULT 1, `holiday_days` decimal(3,1) DEFAULT NULL, `dayBreak` int(11) DEFAULT NULL, PRIMARY KEY (`professional_category_id`), UNIQUE KEY `professional_category_name_category_key` (`category_name`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19437,25 +16838,27 @@ CREATE TABLE `professional_levels` ( `level_name` varchar(5) DEFAULT NULL, `price_overtime` double DEFAULT NULL, PRIMARY KEY (`professional_levels_id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `profile` +-- Table structure for table `profile__` -- -DROP TABLE IF EXISTS `profile`; +DROP TABLE IF EXISTS `profile__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `profile` ( +CREATE TABLE `profile__` ( `profile_id` int(11) NOT NULL AUTO_INCREMENT, - `person_id` int(11) NOT NULL, - `profile_type_id` int(11) NOT NULL DEFAULT '1', + `person_id__` int(11) DEFAULT NULL, + `profile_type_id` int(11) NOT NULL DEFAULT 1, + `workerFk` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`profile_id`), - KEY `profile_person_id_idx` (`person_id`), + KEY `profile_person_id_idx` (`person_id__`), KEY `profile_profile_type_id_idx` (`profile_type_id`), - CONSTRAINT `profile_FK` FOREIGN KEY (`person_id`) REFERENCES `vn`.`person` (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; + KEY `profile_workerFk_idx` (`workerFk`), + CONSTRAINT `profile_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `vn`.`worker` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19472,7 +16875,7 @@ CREATE TABLE `profile_address` ( PRIMARY KEY (`profile_address_id`), KEY `profile_address_address_id_idx` (`address_id`), KEY `profile_address_profile_id_idx` (`profile_id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19490,8 +16893,8 @@ CREATE TABLE `profile_media` ( KEY `profile_media_media_id_idx` (`media_id`), KEY `profile_media_profile_id_idx` (`profile_id`), CONSTRAINT `fk_profile_media_media1` FOREIGN KEY (`media_id`) REFERENCES `media` (`media_id`) ON DELETE NO ACTION ON UPDATE NO ACTION, - CONSTRAINT `media_ibfk_20` FOREIGN KEY (`profile_id`) REFERENCES `profile` (`profile_id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8; + CONSTRAINT `media_ibfk_20` FOREIGN KEY (`profile_id`) REFERENCES `profile__` (`profile_id`) ON DELETE NO ACTION ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19505,7 +16908,7 @@ CREATE TABLE `profile_type` ( `profile_type_id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(15) NOT NULL, PRIMARY KEY (`profile_type_id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19523,7 +16926,7 @@ CREATE TABLE `province` ( UNIQUE KEY `province_name_key` (`name`), KEY `province_nation_id_idx` (`nation_id`), CONSTRAINT `fk_province_nation1` FOREIGN KEY (`nation_id`) REFERENCES `nation__` (`nation_id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19541,19 +16944,19 @@ CREATE TABLE `townKk` ( PRIMARY KEY (`town_id`), KEY `town_province_id_idx` (`province_id`), CONSTRAINT `townKk_ibfk_1` FOREIGN KEY (`province_id`) REFERENCES `province` (`province_id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `workcenter` +-- Table structure for table `workcenter__` -- -DROP TABLE IF EXISTS `workcenter`; +DROP TABLE IF EXISTS `workcenter__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `workcenter` ( +CREATE TABLE `workcenter__` ( `workcenter_id` int(11) NOT NULL AUTO_INCREMENT, - `name` longtext, + `name` longtext DEFAULT NULL, `center_id` int(11) DEFAULT NULL, `counter` bigint(20) DEFAULT NULL, `warehouseFk` smallint(6) DEFAULT NULL, @@ -19562,7 +16965,7 @@ CREATE TABLE `workcenter` ( PRIMARY KEY (`workcenter_id`), KEY `workcenter_geoFk_idx` (`geoFk`), CONSTRAINT `workCenter_geoFk` FOREIGN KEY (`geoFk`) REFERENCES `vn`.`zoneGeo` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19573,12 +16976,12 @@ DROP TABLE IF EXISTS `workerTimeControlConfig__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workerTimeControlConfig__` ( - `id` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `id` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, `warehouseFk` smallint(6) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `warehouseFk_1_idx` (`warehouseFk`), CONSTRAINT `warehouseFk_1` FOREIGN KEY (`warehouseFk`) REFERENCES `vn`.`warehouse` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19590,17 +16993,17 @@ DROP TABLE IF EXISTS `workers20190711_FichadasAbril`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workers20190711_FichadasAbril` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `person_id` int(11) NOT NULL DEFAULT '0', - `nif` varchar(15) CHARACTER SET utf8 DEFAULT NULL, - `Apellidos` varchar(60) CHARACTER SET utf8 NOT NULL, - `Nombre` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `person_id` int(11) NOT NULL DEFAULT 0, + `nif` varchar(15) CHARACTER SET utf8mb3 DEFAULT NULL, + `Apellidos` varchar(60) CHARACTER SET utf8mb3 NOT NULL, + `Nombre` varchar(20) CHARACTER SET utf8mb3 DEFAULT NULL, `Fecha` date DEFAULT NULL, `Hora` int(2) DEFAULT NULL, `Minuto` int(2) DEFAULT NULL, `sumable` double DEFAULT NULL, - `jornada` decimal(5,2) NOT NULL DEFAULT '8.00', + `jornada` decimal(5,2) NOT NULL DEFAULT 8.00, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19615,7 +17018,7 @@ CREATE TABLE `workers20190711_FichadasAbril` ( -- Current Database: `sage` -- -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `sage` /*!40100 DEFAULT CHARACTER SET utf8 */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `sage` /*!40100 DEFAULT CHARACTER SET utf8mb3 */; USE `sage`; @@ -19631,7 +17034,7 @@ CREATE TABLE `ClavesOperacion` ( `Descripcion` varchar(250) NOT NULL, PRIMARY KEY (`ClaveOperacionFactura_`), UNIQUE KEY `ClaveOperacionFactura__UNIQUE` (`ClaveOperacionFactura_`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19651,7 +17054,7 @@ CREATE TABLE `Municipios` ( `Autonomia` smallint(6) NOT NULL, `Nacion` tinyint(4) NOT NULL, PRIMARY KEY (`Codigo`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19663,20 +17066,20 @@ DROP TABLE IF EXISTS `Naciones`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `Naciones` ( `countryFk` mediumint(8) NOT NULL, - `CodigoNacion` smallint(6) NOT NULL DEFAULT '108', - `CodigoNacion347` smallint(6) NOT NULL DEFAULT '108', - `Nacion` varchar(25) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `SiglaNacion` varchar(2) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'ES', - `TipoCodigo` varchar(1) CHARACTER SET utf8 NOT NULL DEFAULT 'A', - `Longitud1` tinyint(4) NOT NULL DEFAULT '0', - `Longitud2` tinyint(4) NOT NULL DEFAULT '0', - `Longitud3` tinyint(4) NOT NULL DEFAULT '0', - `Longitud4` tinyint(4) NOT NULL DEFAULT '0', - `NacionCEE` smallint(6) NOT NULL DEFAULT '0', + `CodigoNacion` smallint(6) NOT NULL DEFAULT 108, + `CodigoNacion347` smallint(6) NOT NULL DEFAULT 108, + `Nacion` varchar(25) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `SiglaNacion` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'ES', + `TipoCodigo` varchar(1) CHARACTER SET utf8mb3 NOT NULL DEFAULT 'A', + `Longitud1` tinyint(4) NOT NULL DEFAULT 0, + `Longitud2` tinyint(4) NOT NULL DEFAULT 0, + `Longitud3` tinyint(4) NOT NULL DEFAULT 0, + `Longitud4` tinyint(4) NOT NULL DEFAULT 0, + `NacionCEE` smallint(6) NOT NULL DEFAULT 0, `FechaCEE` datetime DEFAULT NULL, - `NacionISO` varchar(3) CHARACTER SET utf8 NOT NULL DEFAULT '', + `NacionISO` varchar(3) CHARACTER SET utf8mb3 NOT NULL DEFAULT '', PRIMARY KEY (`countryFk`,`CodigoNacion`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19690,10 +17093,10 @@ CREATE TABLE `Provincias` ( `provinceFk` smallint(6) NOT NULL, `CodigoProvincia` varchar(5) NOT NULL DEFAULT '', `CodigoMatricula` varchar(2) NOT NULL DEFAULT '', - `Provincia` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `RecargoProvincial` decimal(28,10) NOT NULL DEFAULT '0.0000000000', + `Provincia` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `RecargoProvincial` decimal(28,10) NOT NULL DEFAULT 0.0000000000, PRIMARY KEY (`CodigoProvincia`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19704,12 +17107,12 @@ DROP TABLE IF EXISTS `TiposIva`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `TiposIva` ( - `CodigoIva` smallint(6) NOT NULL DEFAULT '0', - `CodigoTerritorio` smallint(6) NOT NULL DEFAULT '0', + `CodigoIva` smallint(6) NOT NULL DEFAULT 0, + `CodigoTerritorio` smallint(6) NOT NULL DEFAULT 0, `Iva` varchar(30) NOT NULL DEFAULT '', - `BaseCorrectora` decimal(28,10) NOT NULL DEFAULT '0.0000000000', - `PorcentajeIva` decimal(28,10) NOT NULL DEFAULT '0.0000000000', - `RecargoEquivalencia` decimal(28,10) NOT NULL DEFAULT '0.0000000000', + `BaseCorrectora` decimal(28,10) NOT NULL DEFAULT 0.0000000000, + `PorcentajeIva` decimal(28,10) NOT NULL DEFAULT 0.0000000000, + `RecargoEquivalencia` decimal(28,10) NOT NULL DEFAULT 0.0000000000, `CuentaIvaSoportado` varchar(15) NOT NULL DEFAULT '', `CuentaIvaRepercutido` varchar(15) NOT NULL DEFAULT '', `CuentaRecargo` varchar(15) NOT NULL DEFAULT '', @@ -19728,10 +17131,10 @@ CREATE TABLE `TiposIva` ( `CuentaIVARecCaja` varchar(15) NOT NULL DEFAULT '', `CuentaIVARecCajaPu` varchar(15) NOT NULL DEFAULT '', `CuentaIVARecCajaVen` varchar(15) NOT NULL DEFAULT '', - `IGICImplicito` smallint(6) NOT NULL DEFAULT '0', - `isIntracommunity` tinyint(2) NOT NULL DEFAULT '0', + `IGICImplicito` smallint(6) NOT NULL DEFAULT 0, + `isIntracommunity` tinyint(2) NOT NULL DEFAULT 0, PRIMARY KEY (`CodigoIva`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19742,9 +17145,9 @@ DROP TABLE IF EXISTS `TiposRetencion`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `TiposRetencion` ( - `CodigoRetencion` smallint(6) NOT NULL DEFAULT '0', + `CodigoRetencion` smallint(6) NOT NULL DEFAULT 0, `Retencion` varchar(50) NOT NULL DEFAULT '', - `PorcentajeRetencion` decimal(28,10) NOT NULL DEFAULT '0.0000000000', + `PorcentajeRetencion` decimal(28,10) NOT NULL DEFAULT 0.0000000000, `CuentaCargo` varchar(15) DEFAULT NULL, `CuentaAbono` varchar(15) DEFAULT NULL, `ClaveIrpf` varchar(2) DEFAULT NULL, @@ -19752,7 +17155,7 @@ CREATE TABLE `TiposRetencion` ( `CuentaAbonoANT_` varchar(15) DEFAULT NULL, `IdTipoRetencion` varchar(45) DEFAULT NULL, PRIMARY KEY (`CodigoRetencion`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19763,95 +17166,13 @@ DROP TABLE IF EXISTS `TiposTransacciones`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `TiposTransacciones` ( - `CodigoTransaccion` tinyint(4) NOT NULL DEFAULT '0', + `CodigoTransaccion` tinyint(4) NOT NULL DEFAULT 0, `Transaccion` varchar(50) NOT NULL DEFAULT '', `TipoFactura` varchar(1) NOT NULL DEFAULT '', - `Autofactura` smallint(6) NOT NULL DEFAULT '0', + `Autofactura` smallint(6) NOT NULL DEFAULT 0, `ClaveOperacionDefecto` varchar(1) NOT NULL DEFAULT '', PRIMARY KEY (`CodigoTransaccion`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `XDiario_movConta_IVA__` --- - -DROP TABLE IF EXISTS `XDiario_movConta_IVA__`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `XDiario_movConta_IVA__` ( - `id` int(11) NOT NULL, - `CodigoDivisa` varchar(3) COLLATE utf8_unicode_ci NOT NULL, - `BaseIva1` double DEFAULT NULL, - `PorBaseCorrectora1` double DEFAULT NULL, - `PorIva1` double DEFAULT NULL, - `CuotaIva1` double DEFAULT NULL, - `PorRecargoEquivalencia1` double DEFAULT NULL, - `RecargoEquivalencia1` double DEFAULT NULL, - `CodigoTransaccion1` double NOT NULL DEFAULT '0', - `CodigoIva1` smallint(6) NOT NULL, - `BaseIva2` double DEFAULT NULL, - `PorBaseCorrectora2` double DEFAULT NULL, - `PorIva2` double DEFAULT NULL, - `CuotaIva2` double DEFAULT NULL, - `PorRecargoEquivalencia2` double DEFAULT NULL, - `RecargoEquivalencia2` double DEFAULT NULL, - `CodigoTransaccion2` double NOT NULL DEFAULT '0', - `CodigoIva2` smallint(6) NOT NULL, - `BaseIva3` double DEFAULT NULL, - `PorBaseCorrectora3` double DEFAULT NULL, - `PorIva3` double DEFAULT NULL, - `CuotaIva3` double DEFAULT NULL, - `PorRecargoEquivalencia3` double DEFAULT NULL, - `RecargoEquivalencia3` double DEFAULT NULL, - `CodigoTransaccion3` double NOT NULL DEFAULT '0', - `CodigoIva3` smallint(6) NOT NULL, - `BaseIva4` double DEFAULT NULL, - `PorBaseCorrectora4` double DEFAULT NULL, - `PorIva4` double DEFAULT NULL, - `CuotaIva4` double DEFAULT NULL, - `PorRecargoEquivalencia4` double DEFAULT NULL, - `RecargoEquivalencia4` double DEFAULT NULL, - `CodigoTransaccion4` double NOT NULL DEFAULT '0', - `CodigoIva4` smallint(6) NOT NULL, - `Año` int(11) DEFAULT NULL, - `Serie` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `Factura` int(11) DEFAULT NULL, - `SuFacturaNo` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL, - `FechaFactura` date DEFAULT NULL, - `ImporteFactura` double DEFAULT NULL, - `TipoFactura` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, - `CodigoCuentaFactura` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `CifDni` varchar(13) COLLATE utf8_unicode_ci DEFAULT NULL, - `Nombre` varchar(35) COLLATE utf8_unicode_ci DEFAULT NULL, - `CodigoRetencion` int(2) DEFAULT NULL, - `BaseRetencion` double DEFAULT NULL, - `PorRetencion` double DEFAULT NULL, - `ImporteRetencion` double DEFAULT NULL, - `SiglaNacion` varchar(2) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'ES', - `EjercicioFactura` int(2) DEFAULT NULL, - `FechaOperacion` date DEFAULT NULL, - `Exclusion347` int(2) DEFAULT NULL, - `MantenerAsiento` int(2) DEFAULT '-1', - `Metalico347` int(2) DEFAULT NULL, - `ClaveOperacionFactura` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, - `TipoRectificativa` int(2) DEFAULT NULL, - `FechaFacturaOriginal` date DEFAULT NULL, - `CuotaIvaOriginal` double DEFAULT NULL, - `BaseImponibleOriginal` double DEFAULT NULL, - `ClaseAbonoRectificativas` int(2) DEFAULT NULL, - `RecargoEquivalenciaOriginal` double DEFAULT NULL, - `LibreA1` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `IvaDeducible1` int(2) NOT NULL DEFAULT '-1', - `IvaDeducible2` int(2) NOT NULL DEFAULT '-1', - `IvaDeducible3` int(2) NOT NULL DEFAULT '-1', - `IvaDeducible4` int(2) NOT NULL DEFAULT '-1', - `FechaGrabacion` date DEFAULT NULL, - `Intracomunitaria` tinyint(1) DEFAULT '0', - `moveData` tinyint(1) DEFAULT '1', - PRIMARY KEY (`id`), - CONSTRAINT `XDiario_movConta_IVA_fk1` FOREIGN KEY (`id`) REFERENCES `vn`.`XDiario` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Informa del valor de los campos de IVA para enlazar en la tabla vn.movConta'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19877,127 +17198,127 @@ DROP TABLE IF EXISTS `clientesProveedores`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `clientesProveedores` ( `CodigoEmpresa` smallint(6) NOT NULL, - `ClienteOProveedor` varchar(1) COLLATE utf8_unicode_ci NOT NULL, + `ClienteOProveedor` varchar(1) COLLATE utf8mb3_unicode_ci NOT NULL, `CodigoClienteProveedor` int(11) NOT NULL, - `RazonSocial` varchar(40) COLLATE utf8_unicode_ci NOT NULL, - `RazonSocial2` varchar(40) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `Nombre` varchar(35) COLLATE utf8_unicode_ci NOT NULL, - `Domicilio` varchar(40) COLLATE utf8_unicode_ci NOT NULL, - `Cargo1` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `Nombre1` varchar(30) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `Cargo2` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `Nombre2` varchar(30) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoCuenta` varchar(15) CHARACTER SET utf8 NOT NULL, - `CifDni` varchar(13) COLLATE utf8_unicode_ci NOT NULL, - `CifEuropeo` varchar(15) COLLATE utf8_unicode_ci NOT NULL, - `CodigoSigla` varchar(2) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `ViaPublica` varchar(40) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `Numero1` varchar(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `Numero2` varchar(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `Escalera` varchar(2) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `Piso` varchar(2) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `Puerta` varchar(2) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `Letra` varchar(2) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoPostal` varchar(8) COLLATE utf8_unicode_ci NOT NULL, - `CodigoMunicipio` varchar(7) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `Municipio` varchar(25) COLLATE utf8_unicode_ci NOT NULL, - `ColaMunicipio` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoProvincia` varchar(5) COLLATE utf8_unicode_ci NOT NULL, - `Provincia` varchar(20) COLLATE utf8_unicode_ci NOT NULL, - `CodigoNacion` smallint(6) NOT NULL DEFAULT '0', - `Nacion` varchar(25) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `Telefono` varchar(15) COLLATE utf8_unicode_ci NOT NULL, - `Telefono2` varchar(15) COLLATE utf8_unicode_ci NOT NULL, - `Telefono3` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `Fax` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoTransaccion` tinyint(4) NOT NULL DEFAULT '0', + `RazonSocial` varchar(40) COLLATE utf8mb3_unicode_ci NOT NULL, + `RazonSocial2` varchar(40) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `Nombre` varchar(35) COLLATE utf8mb3_unicode_ci NOT NULL, + `Domicilio` varchar(40) COLLATE utf8mb3_unicode_ci NOT NULL, + `Cargo1` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `Nombre1` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `Cargo2` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `Nombre2` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoCuenta` varchar(15) CHARACTER SET utf8mb3 NOT NULL, + `CifDni` varchar(13) COLLATE utf8mb3_unicode_ci NOT NULL, + `CifEuropeo` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, + `CodigoSigla` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `ViaPublica` varchar(40) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `Numero1` varchar(4) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `Numero2` varchar(4) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `Escalera` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `Piso` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `Puerta` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `Letra` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoPostal` varchar(8) COLLATE utf8mb3_unicode_ci NOT NULL, + `CodigoMunicipio` varchar(7) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `Municipio` varchar(25) COLLATE utf8mb3_unicode_ci NOT NULL, + `ColaMunicipio` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoProvincia` varchar(5) COLLATE utf8mb3_unicode_ci NOT NULL, + `Provincia` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, + `CodigoNacion` smallint(6) NOT NULL DEFAULT 0, + `Nacion` varchar(25) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `Telefono` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, + `Telefono2` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, + `Telefono3` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `Fax` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoTransaccion` tinyint(4) NOT NULL DEFAULT 0, `CodigoRetencion` smallint(6) NOT NULL, - `Deducible` smallint(6) NOT NULL DEFAULT '0', - `CodigoIva` smallint(6) NOT NULL DEFAULT '0', - `Mediacion` smallint(6) NOT NULL DEFAULT '0', - `Exclusion347` smallint(6) NOT NULL DEFAULT '0', - `NumeroPlazos` tinyint(4) NOT NULL DEFAULT '1', - `DiasPrimerPlazo` smallint(6) NOT NULL DEFAULT '0', - `DiasEntrePlazos` smallint(6) NOT NULL DEFAULT '0', - `DiasFijos1` tinyint(4) NOT NULL DEFAULT '0', - `DiasFijos2` tinyint(4) NOT NULL DEFAULT '0', - `DiasFijos3` tinyint(4) NOT NULL DEFAULT '0', - `InicioNoPago` smallint(6) NOT NULL DEFAULT '0', - `FinNoPago` smallint(6) NOT NULL DEFAULT '0', - `ControlarFestivos` smallint(6) NOT NULL DEFAULT '0', - `DiasRetroceso` tinyint(4) NOT NULL DEFAULT '0', - `MesesComerciales` smallint(6) NOT NULL DEFAULT '0', - `RemesaHabitual` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoTipoEfecto` smallint(6) NOT NULL DEFAULT '0', - `Email1` varchar(250) COLLATE utf8_unicode_ci NOT NULL, - `Email2` varchar(250) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoCategoriaCliente_` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'CLI', - `IdDelegacion` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoMotivoBajaClienteLc` varchar(3) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoDepartamento` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoCanal` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoBanco` varchar(6) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoAgencia` varchar(6) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `DC` varchar(2) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CCC` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `IBAN` varchar(34) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoCondiciones` smallint(6) NOT NULL DEFAULT '0', - `StatusTraspasadoIME` tinyint(4) NOT NULL DEFAULT '0', - `TipoImportacionIME` tinyint(4) NOT NULL DEFAULT '2', - `TipoPlanCuentaIME` smallint(6) NOT NULL DEFAULT '2', - `Contrapartida` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoCuentaImpagado` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoCuentaEfecto` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `Comentarios` text COLLATE utf8_unicode_ci NOT NULL, - `CodigoTerritorio` smallint(6) NOT NULL DEFAULT '0', - `CodigoIdioma_` varchar(3) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `TarifaPrecio` smallint(6) NOT NULL DEFAULT '0', - `%Descuento` decimal(28,10) NOT NULL DEFAULT '0.0000000000', - `%Rappel` decimal(28,10) NOT NULL DEFAULT '0.0000000000', - `%ProntoPago` decimal(28,10) NOT NULL DEFAULT '0.0000000000', - `%Financiacion` decimal(28,10) NOT NULL DEFAULT '0.0000000000', - `CodigoComisionista` int(11) NOT NULL DEFAULT '0', - `TarifaDescuento` smallint(6) NOT NULL DEFAULT '0', - `SiglaNacion` varchar(2) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `MarcaMenorSinNif` smallint(6) NOT NULL DEFAULT '0', - `PersonaFisicaJuridica` varchar(1) COLLATE utf8_unicode_ci NOT NULL, - `SiglaNacionRepresentante` varchar(2) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CifDniRepresentante` varchar(13) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `NombreRepresentante` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `Deducible` smallint(6) NOT NULL DEFAULT 0, + `CodigoIva` smallint(6) NOT NULL DEFAULT 0, + `Mediacion` smallint(6) NOT NULL DEFAULT 0, + `Exclusion347` smallint(6) NOT NULL DEFAULT 0, + `NumeroPlazos` tinyint(4) NOT NULL DEFAULT 1, + `DiasPrimerPlazo` smallint(6) NOT NULL DEFAULT 0, + `DiasEntrePlazos` smallint(6) NOT NULL DEFAULT 0, + `DiasFijos1` tinyint(4) NOT NULL DEFAULT 0, + `DiasFijos2` tinyint(4) NOT NULL DEFAULT 0, + `DiasFijos3` tinyint(4) NOT NULL DEFAULT 0, + `InicioNoPago` smallint(6) NOT NULL DEFAULT 0, + `FinNoPago` smallint(6) NOT NULL DEFAULT 0, + `ControlarFestivos` smallint(6) NOT NULL DEFAULT 0, + `DiasRetroceso` tinyint(4) NOT NULL DEFAULT 0, + `MesesComerciales` smallint(6) NOT NULL DEFAULT 0, + `RemesaHabitual` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoTipoEfecto` smallint(6) NOT NULL DEFAULT 0, + `Email1` varchar(250) COLLATE utf8mb3_unicode_ci NOT NULL, + `Email2` varchar(250) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoCategoriaCliente_` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'CLI', + `IdDelegacion` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoMotivoBajaClienteLc` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoDepartamento` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoCanal` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoBanco` varchar(6) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoAgencia` varchar(6) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `DC` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CCC` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `IBAN` varchar(34) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoCondiciones` smallint(6) NOT NULL DEFAULT 0, + `StatusTraspasadoIME` tinyint(4) NOT NULL DEFAULT 0, + `TipoImportacionIME` tinyint(4) NOT NULL DEFAULT 2, + `TipoPlanCuentaIME` smallint(6) NOT NULL DEFAULT 2, + `Contrapartida` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoCuentaImpagado` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoCuentaEfecto` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `Comentarios` text COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoTerritorio` smallint(6) NOT NULL DEFAULT 0, + `CodigoIdioma_` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `TarifaPrecio` smallint(6) NOT NULL DEFAULT 0, + `%Descuento` decimal(28,10) NOT NULL DEFAULT 0.0000000000, + `%Rappel` decimal(28,10) NOT NULL DEFAULT 0.0000000000, + `%ProntoPago` decimal(28,10) NOT NULL DEFAULT 0.0000000000, + `%Financiacion` decimal(28,10) NOT NULL DEFAULT 0.0000000000, + `CodigoComisionista` int(11) NOT NULL DEFAULT 0, + `TarifaDescuento` smallint(6) NOT NULL DEFAULT 0, + `SiglaNacion` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `MarcaMenorSinNif` smallint(6) NOT NULL DEFAULT 0, + `PersonaFisicaJuridica` varchar(1) COLLATE utf8mb3_unicode_ci NOT NULL, + `SiglaNacionRepresentante` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CifDniRepresentante` varchar(13) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `NombreRepresentante` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', `TipoDocumentoPersona` smallint(6) NOT NULL, - `TipoCif` varchar(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `MotivoBajaClienteLc` varchar(30) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `PuntosSR` decimal(28,10) NOT NULL DEFAULT '0.0000000000', - `TarjetaSR` varchar(100) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `TipoCif` varchar(1) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `MotivoBajaClienteLc` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `PuntosSR` decimal(28,10) NOT NULL DEFAULT 0.0000000000, + `TarjetaSR` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', `FechaNacimiento` datetime DEFAULT NULL, - `Domicilio2` varchar(40) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CuentaProvision` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoTransportista` int(11) NOT NULL DEFAULT '0', - `FormadePago` varchar(35) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `ObservacionesCliente` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoTipoClienteLc` varchar(3) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `TipoCliente` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoActividadLc` varchar(2) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `Actividad` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `IndicadorIva` varchar(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoRuta_` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `NombreEmpleado` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `PrimerApellidoEmpleado` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `SegundoApellidoEmpleado` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `sysTick` int(11) NOT NULL DEFAULT '0', - `RiesgoMaximo` decimal(28,10) NOT NULL DEFAULT '0.0000000000', - `PlazoMedioPCMA` smallint(6) NOT NULL DEFAULT '0', - `CriterioIvaIME` smallint(6) NOT NULL DEFAULT '0', - `ReferenciaMandato` varchar(35) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `%Comision` decimal(28,10) NOT NULL DEFAULT '0.0000000000', - `CodigoZona` int(11) NOT NULL DEFAULT '0', - `BloqueoAlbaran` smallint(6) NOT NULL DEFAULT '0', - `CodigoSeccion` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoSector_` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CodigoProyecto` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `Domicilio2` varchar(40) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CuentaProvision` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoTransportista` int(11) NOT NULL DEFAULT 0, + `FormadePago` varchar(35) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `ObservacionesCliente` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoTipoClienteLc` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `TipoCliente` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoActividadLc` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `Actividad` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `IndicadorIva` varchar(1) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoRuta_` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `NombreEmpleado` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `PrimerApellidoEmpleado` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `SegundoApellidoEmpleado` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `sysTick` int(11) NOT NULL DEFAULT 0, + `RiesgoMaximo` decimal(28,10) NOT NULL DEFAULT 0.0000000000, + `PlazoMedioPCMA` smallint(6) NOT NULL DEFAULT 0, + `CriterioIvaIME` smallint(6) NOT NULL DEFAULT 0, + `ReferenciaMandato` varchar(35) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `%Comision` decimal(28,10) NOT NULL DEFAULT 0.0000000000, + `CodigoZona` int(11) NOT NULL DEFAULT 0, + `BloqueoAlbaran` smallint(6) NOT NULL DEFAULT 0, + `CodigoSeccion` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoSector_` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CodigoProyecto` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', PRIMARY KEY (`CodigoEmpresa`,`ClienteOProveedor`,`CodigoClienteProveedor`), KEY `CodigoCuenta` (`CodigoCuenta`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -20032,7 +17353,7 @@ CREATE TABLE `invoiceType` ( PRIMARY KEY (`code`), UNIQUE KEY `code_UNIQUE` (`code`), UNIQUE KEY `codeSage_UNIQUE` (`codeSage`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -20044,14 +17365,14 @@ DROP TABLE IF EXISTS `movContaIVA`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `movContaIVA` ( `id` int(11) NOT NULL, - `CodigoDivisa` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `CodigoDivisa` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, `BaseIva1` double DEFAULT NULL, `PorBaseCorrectora1` double DEFAULT NULL, `PorIva1` double DEFAULT NULL, `CuotaIva1` double DEFAULT NULL, `PorRecargoEquivalencia1` double DEFAULT NULL, `RecargoEquivalencia1` double DEFAULT NULL, - `CodigoTransaccion1` double NOT NULL DEFAULT '0', + `CodigoTransaccion1` double NOT NULL DEFAULT 0, `CodigoIva1` smallint(6) NOT NULL, `BaseIva2` double DEFAULT NULL, `PorBaseCorrectora2` double DEFAULT NULL, @@ -20059,7 +17380,7 @@ CREATE TABLE `movContaIVA` ( `CuotaIva2` double DEFAULT NULL, `PorRecargoEquivalencia2` double DEFAULT NULL, `RecargoEquivalencia2` double DEFAULT NULL, - `CodigoTransaccion2` double NOT NULL DEFAULT '0', + `CodigoTransaccion2` double NOT NULL DEFAULT 0, `CodigoIva2` smallint(6) NOT NULL, `BaseIva3` double DEFAULT NULL, `PorBaseCorrectora3` double DEFAULT NULL, @@ -20067,7 +17388,7 @@ CREATE TABLE `movContaIVA` ( `CuotaIva3` double DEFAULT NULL, `PorRecargoEquivalencia3` double DEFAULT NULL, `RecargoEquivalencia3` double DEFAULT NULL, - `CodigoTransaccion3` double NOT NULL DEFAULT '0', + `CodigoTransaccion3` double NOT NULL DEFAULT 0, `CodigoIva3` smallint(6) NOT NULL, `BaseIva4` double DEFAULT NULL, `PorBaseCorrectora4` double DEFAULT NULL, @@ -20075,46 +17396,46 @@ CREATE TABLE `movContaIVA` ( `CuotaIva4` double DEFAULT NULL, `PorRecargoEquivalencia4` double DEFAULT NULL, `RecargoEquivalencia4` double DEFAULT NULL, - `CodigoTransaccion4` double NOT NULL DEFAULT '0', + `CodigoTransaccion4` double NOT NULL DEFAULT 0, `CodigoIva4` smallint(6) NOT NULL, `Año` int(11) DEFAULT NULL, - `Serie` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `Serie` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `Factura` int(11) DEFAULT NULL, - `SuFacturaNo` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL, + `SuFacturaNo` varchar(40) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `FechaFactura` date DEFAULT NULL, `ImporteFactura` double DEFAULT NULL, - `TipoFactura` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, - `CodigoCuentaFactura` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `CifDni` varchar(13) COLLATE utf8_unicode_ci DEFAULT NULL, - `Nombre` varchar(35) COLLATE utf8_unicode_ci DEFAULT NULL, + `TipoFactura` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `CodigoCuentaFactura` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `CifDni` varchar(13) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `Nombre` varchar(35) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `CodigoRetencion` int(2) DEFAULT NULL, `BaseRetencion` double DEFAULT NULL, `PorRetencion` double DEFAULT NULL, `ImporteRetencion` double DEFAULT NULL, - `SiglaNacion` varchar(2) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'ES', + `SiglaNacion` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'ES', `EjercicioFactura` int(2) DEFAULT NULL, `FechaOperacion` date DEFAULT NULL, `Exclusion347` int(2) DEFAULT NULL, - `MantenerAsiento` int(2) DEFAULT '-1', + `MantenerAsiento` int(2) DEFAULT -1, `Metalico347` int(2) DEFAULT NULL, - `ClaveOperacionFactura` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `ClaveOperacionFactura` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `TipoRectificativa` int(2) DEFAULT NULL, `FechaFacturaOriginal` date DEFAULT NULL, `CuotaIvaOriginal` double DEFAULT NULL, `BaseImponibleOriginal` double DEFAULT NULL, `ClaseAbonoRectificativas` int(2) DEFAULT NULL, `RecargoEquivalenciaOriginal` double DEFAULT NULL, - `LibreA1` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `IvaDeducible1` int(2) NOT NULL DEFAULT '-1', - `IvaDeducible2` int(2) NOT NULL DEFAULT '-1', - `IvaDeducible3` int(2) NOT NULL DEFAULT '-1', - `IvaDeducible4` int(2) NOT NULL DEFAULT '-1', + `LibreA1` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `IvaDeducible1` int(2) NOT NULL DEFAULT -1, + `IvaDeducible2` int(2) NOT NULL DEFAULT -1, + `IvaDeducible3` int(2) NOT NULL DEFAULT -1, + `IvaDeducible4` int(2) NOT NULL DEFAULT -1, `FechaGrabacion` date DEFAULT NULL, - `Intracomunitaria` tinyint(1) DEFAULT '0', - `moveData` tinyint(1) DEFAULT '1', + `Intracomunitaria` tinyint(1) DEFAULT 0, + `moveData` tinyint(1) DEFAULT 1, PRIMARY KEY (`id`), CONSTRAINT `movContaIVA_fk1` FOREIGN KEY (`id`) REFERENCES `vn`.`XDiario` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Informa del valor de los campos de IVA para enlazar en la tabla vn.movConta'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Informa del valor de los campos de IVA para enlazar en la tabla vn.movConta'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -20128,10 +17449,10 @@ CREATE TABLE `pgcToSage` ( `id` int(11) NOT NULL AUTO_INCREMENT, `taxCodeSage` int(11) NOT NULL, `transactionCode` int(11) NOT NULL, - `accountTaxInput` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, - `accountTaxOutput` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, + `accountTaxInput` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL, + `accountTaxOutput` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COMMENT='Tabla relaciona cuentas pgc con Código de IVA y Código de Transacción en Sage'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='Tabla relaciona cuentas pgc con Código de IVA y Código de Transacción en Sage'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -20143,39 +17464,39 @@ DROP TABLE IF EXISTS `planCuentasPGC`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `planCuentasPGC` ( `CodigoEmpresa` smallint(6) NOT NULL, - `CodigoCuenta` varchar(15) CHARACTER SET utf8 NOT NULL, - `Cuenta` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `ClienteOProveedor` varchar(1) COLLATE utf8_unicode_ci NOT NULL, - `CodigoDivisa` varchar(3) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `IndicadorProrrata` smallint(6) NOT NULL DEFAULT '0', - `TipoPlanCuentaIME` smallint(6) NOT NULL DEFAULT '2', - `StatusAnalitica` smallint(6) NOT NULL DEFAULT '0', - `AnaCodigoCuenta` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `StatusTraspasadoIME` tinyint(4) NOT NULL DEFAULT '0', - `TipoImportacionIME` tinyint(4) NOT NULL DEFAULT '0', - `CierrePatrimonio_` smallint(6) NOT NULL DEFAULT '0', - `CuentaPatrimonio_` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `CuentaVarios` smallint(6) NOT NULL DEFAULT '0', - `TodasLasActividades` smallint(6) NOT NULL DEFAULT '0', - `ValorDelegacion` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `ValorDepartamento` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `ValorProyecto` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `ValorCanal` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `ValorSeccion` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `CodigoCuenta` varchar(15) CHARACTER SET utf8mb3 NOT NULL, + `Cuenta` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `ClienteOProveedor` varchar(1) COLLATE utf8mb3_unicode_ci NOT NULL, + `CodigoDivisa` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `IndicadorProrrata` smallint(6) NOT NULL DEFAULT 0, + `TipoPlanCuentaIME` smallint(6) NOT NULL DEFAULT 2, + `StatusAnalitica` smallint(6) NOT NULL DEFAULT 0, + `AnaCodigoCuenta` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `StatusTraspasadoIME` tinyint(4) NOT NULL DEFAULT 0, + `TipoImportacionIME` tinyint(4) NOT NULL DEFAULT 0, + `CierrePatrimonio_` smallint(6) NOT NULL DEFAULT 0, + `CuentaPatrimonio_` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `CuentaVarios` smallint(6) NOT NULL DEFAULT 0, + `TodasLasActividades` smallint(6) NOT NULL DEFAULT 0, + `ValorDelegacion` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `ValorDepartamento` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `ValorProyecto` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `ValorCanal` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `ValorSeccion` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', PRIMARY KEY (`CodigoEmpresa`,`CodigoCuenta`), KEY `CodigoCuenta` (`CodigoCuenta`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Temporary table structure for view `providerLastThreeMonths` +-- Temporary table structure for view `supplierLastThreeMonths` -- -DROP TABLE IF EXISTS `providerLastThreeMonths`; -/*!50001 DROP VIEW IF EXISTS `providerLastThreeMonths`*/; +DROP TABLE IF EXISTS `supplierLastThreeMonths`; +/*!50001 DROP VIEW IF EXISTS `supplierLastThreeMonths`*/; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; -/*!50001 CREATE TABLE `providerLastThreeMonths` ( +/*!50001 CREATE TABLE `supplierLastThreeMonths` ( `supplierFk` tinyint NOT NULL, `companyFk` tinyint NOT NULL ) ENGINE=MyISAM */; @@ -20188,17 +17509,54 @@ SET character_set_client = @saved_cs_client; -- -- Dumping routines for database 'sage' -- +/*!50003 DROP FUNCTION IF EXISTS `company_getCode` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` FUNCTION `company_getCode`(vCompanyFk INT) RETURNS int(2) + READS SQL DATA +BEGIN +/** + * Devuelve la correspondencía del código de empresa de sage. + * Tiene en cuenta el entorno + * + * @param vSelf Id de empresa de verdnatura + * @return Código de empresa sage + */ + DECLARE vCompanySageFk INT(2); + + SELECT IF(c.environment = 'production', + co.companyCode, + co.companyCodeTest + ) INTO vCompanySageFk + FROM util.config c + JOIN vn.company co + WHERE co.id = vCompanyFk; + + RETURN vCompanySageFk; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `accountingMovements_add` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `accountingMovements_add`(vYear INT, vCompanyFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `accountingMovements_add`(vYear INT, vCompanyFk INT) BEGIN /** * Traslada la info de contabilidad generada en base a vn.XDiario a la tabla sage.movConta para poder ejecutar posteriormente el proceso de importación de datos de SQL Server @@ -20211,6 +17569,7 @@ BEGIN DECLARE vDuaTransactionFk INT; DECLARE vTaxImportFk INT; DECLARE vTaxImportReducedFk INT; + DECLARE vTaxImportSuperReducedFk INT; DECLARE vTransactionExportFk INT; DECLARE vTransactionExportTaxFreeFk INT; DECLARE vSerialDua VARCHAR(1) DEFAULT 'D'; @@ -20219,25 +17578,29 @@ BEGIN DECLARE vBookEntries TEXT; SELECT SiglaNacion INTO vCountryCanariasCode - FROM Naciones + FROM Naciones WHERE Nacion ='ISLAS CANARIAS'; SELECT SiglaNacion INTO vCountryCeutaMelillaCode - FROM Naciones + FROM Naciones WHERE Nacion ='CEUTA Y MELILLA'; SELECT CodigoTransaccion INTO vDuaTransactionFk FROM TiposTransacciones WHERE Transaccion = 'Import. bienes y serv. corrientes pdte. liquidar'; - - SELECT CodigoIva INTO vTaxImportFk + + SELECT CodigoIva INTO vTaxImportFk FROM TiposIva - WHERE Iva = 'IVA 21% importaciones'; - - SELECT CodigoIva INTO vTaxImportReducedFk + WHERE Iva = 'IVA 21% importaciones'; + + SELECT CodigoIva INTO vTaxImportReducedFk FROM TiposIva WHERE Iva = 'IVA 10% importaciones'; - + + SELECT CodigoIva INTO vTaxImportSuperReducedFk + FROM TiposIva + WHERE Iva = 'H.P. IVA Soportado Impor 4%'; + SELECT CodigoTransaccion INTO vTransactionExportFk FROM TiposTransacciones WHERE Transaccion = 'Exportaciones definitivas'; @@ -20247,22 +17610,22 @@ BEGIN WHERE Transaccion = 'Envíos definitivos a Canarias, Ceuta y Melilla'; SELECT codeSage INTO vInvoiceTypeInformativeCode - FROM invoiceType WHERE code ='informative'; + FROM invoiceType WHERE code ='informative'; SELECT CAST(CONCAT(vYear, '-01-01') AS DATETIME), util.dayEnd(CAST(CONCAT(vYear, '-12-31') AS DATE)) INTO vDatedFrom, vDatedTo; - + TRUNCATE movContaIVA; - - DELETE FROM movConta - WHERE enlazadoSage = FALSE + + DELETE FROM movConta + WHERE enlazadoSage = FALSE AND Asiento <> 1 ; - + CALL clientSupplier_add(vCompanyFk); CALL pgc_add(vCompanyFk); CALL invoiceOut_manager(vYear, vCompanyFk); CALL invoiceIn_manager(vYear, vCompanyFk); - + INSERT INTO movConta(TipoEntrada, Ejercicio, CodigoEmpresa, @@ -20338,7 +17701,7 @@ BEGIN BaseImponibleOriginal, CuotaIvaOriginal, ClaseAbonoRectificativas, - RecargoEquivalenciaOriginal, + RecargoEquivalenciaOriginal, LibreA1, CodigoIva1, CodigoIva2, @@ -20351,8 +17714,8 @@ BEGIN Intracomunitaria ) SELECT 'EN' TipoEntrada, - YEAR(x.FECHA) Ejercicio, - IF (@@hostname = 'db', c.companyCode, companyCodeTest) AS CodigoEmpresa, + YEAR(x.FECHA) Ejercicio, + company_getCode(vCompanyFk) AS CodigoEmpresa, x.ASIEN Asiento, IF(EURODEBE <> 0 OR (EURODEBE = 0 AND EUROHABER IS NULL), 'D', 'H') CargoAbono, x.SUBCTA CodigoCuenta, @@ -20437,63 +17800,63 @@ BEGIN mci.IvaDeducible4, mci.Intracomunitaria FROM vn.XDiario x - JOIN vn.company c ON c.id = x.empresa_id - LEFT JOIN movContaIVA mci ON mci.id = x.id - LEFT JOIN (SELECT * + LEFT JOIN movContaIVA mci ON mci.id = x.id + LEFT JOIN (SELECT * FROM (SELECT DISTINCT ASIEN, FECREGCON, FECHA_EX FROM vn.XDiario - WHERE enlazadoSage = FALSE + WHERE enlazadoSage = FALSE ORDER BY ASIEN, FECREGCON DESC, FECHA_EX DESC + LIMIT 10000000000000000000 ) sub GROUP BY ASIEN - )sub2 ON sub2.ASIEN = x.ASIEN - LEFT JOIN ( SELECT DISTINCT(account),cu.code + )sub2 ON sub2.ASIEN = x.ASIEN + LEFT JOIN ( SELECT DISTINCT(account),cu.code FROM vn.bank b JOIN vn.currency cu ON cu.id = b.currencyFk WHERE cu.code <> 'EUR' -- no se informa cuando la divisa en EUR - )sub3 ON sub3.account = x.SUBCTA - WHERE x.enlazadoSage = FALSE + )sub3 ON sub3.account = x.SUBCTA + WHERE x.enlazadoSage = FALSE AND x.empresa_id = vCompanyFk AND x.FECHA BETWEEN vDatedFrom AND vDatedTo; -- Metálicos UPDATE movConta m - JOIN (SELECT Asiento, - c.socialName name, - c.fi, - n.SiglaNacion, - m.CodigoCuenta, + JOIN (SELECT Asiento, + c.socialName name, + c.fi, + n.SiglaNacion, + m.CodigoCuenta, m.Contrapartida - FROM movConta m + FROM movConta m LEFT JOIN vn.client c ON c.id = IF(m.CargoAbono = 'H', CAST(SUBSTRING(m.CodigoCuenta, 3, LENGTH(m.CodigoCuenta)) AS UNSIGNED), CAST(SUBSTRING(m.Contrapartida, 3, LENGTH(m.Contrapartida)) AS UNSIGNED)) - LEFT JOIN Naciones n ON n.countryFk = c.countryFk - WHERE m.Metalico347 = TRUE - AND m.enlazadoSage = FALSE - )sub ON m.Asiento = sub.Asiento + LEFT JOIN Naciones n ON n.countryFk = c.countryFk + WHERE m.Metalico347 = TRUE + AND m.enlazadoSage = FALSE + )sub ON m.Asiento = sub.Asiento SET m.Metalico347 = TRUE, m.TipoFactura = vInvoiceTypeInformativeCode, m.CifDni = sub.fi, m.Nombre = sub.name, - m.SiglaNacion = sub.SiglaNacion + m.SiglaNacion = sub.SiglaNacion WHERE m.enlazadoSage = FALSE; UPDATE movConta m SET m.Metalico347 = FALSE, m.TipoFactura = '' - WHERE m.CargoAbono = 'D' - AND m.enlazadoSage = FALSE; + WHERE m.CargoAbono = 'D' + AND m.enlazadoSage = FALSE; -- Elimina cuentas de cliente/proveedor que no se utilizarán en la importación - DELETE cp + DELETE cp FROM clientesProveedores cp - LEFT JOIN movConta mc ON mc.codigoCuenta = cp.codigoCuenta + LEFT JOIN movConta mc ON mc.codigoCuenta = cp.codigoCuenta AND mc.enlazadoSage = FALSE WHERE mc.codigoCuenta IS NULL; -- Elimina cuentas contables que no se utilizarán en la importación - DELETE pc - FROM planCuentasPGC pc + DELETE pc + FROM planCuentasPGC pc LEFT JOIN movConta mc ON mc.codigoCuenta = pc.codigoCuenta AND mc.enlazadoSage = FALSE WHERE mc.codigoCuenta IS NULL; @@ -20502,7 +17865,7 @@ BEGIN UPDATE movConta mci JOIN vn.XDiario x ON x.ASIEN = mci.Asiento JOIN TiposIva ti ON ti.CodigoIva = x.IVA - JOIN vn.pgcMaster pm ON pm.code = mci.CodigoCuenta COLLATE utf8_general_ci + JOIN vn.pgcMaster pm ON pm.code = mci.CodigoCuenta COLLATE utf8mb3_unicode_ci SET mci.BaseIva1 = x.BASEEURO, mci.PorIva1 = x.IVA, mci.CuotaIva1 = CAST((x.IVA / 100) * x.BASEEURO AS DECIMAL(10, 2)), @@ -20515,13 +17878,13 @@ BEGIN mci.ImporteFactura = mci.ImporteFactura + x.BASEEURO + CAST((x.IVA / 100) * x.BASEEURO AS DECIMAL(10, 2)) WHERE pm.description = 'HP Iva pendiente' AND mci.enlazadoSage = FALSE - AND x.SERIE = vSerialDua COLLATE utf8_general_ci + AND x.SERIE = vSerialDua COLLATE utf8mb3_unicode_ci AND ti.Iva = 'I.V.A. 10% Nacional'; UPDATE movConta mci JOIN vn.XDiario x ON x.ASIEN = mci.Asiento JOIN TiposIva ti ON ti.CodigoIva = x.IVA - JOIN vn.pgcMaster pm ON pm.code = mci.CodigoCuenta COLLATE utf8_general_ci + JOIN vn.pgcMaster pm ON pm.code = mci.CodigoCuenta COLLATE utf8mb3_unicode_ci SET mci.BaseIva2 = x.BASEEURO , mci.PorIva2 = x.IVA, mci.CuotaIva2 = CAST((x.IVA / 100) * x.BASEEURO AS DECIMAL(10,2)), @@ -20531,23 +17894,39 @@ BEGIN mci.ImporteFactura = mci.ImporteFactura + x.BASEEURO + CAST((x.IVA / 100) * x.BASEEURO AS DECIMAL(10, 2)) WHERE pm.description = 'HP Iva pendiente' AND mci.enlazadoSage = FALSE - AND x.SERIE = vSerialDua COLLATE utf8_general_ci + AND x.SERIE = vSerialDua COLLATE utf8mb3_unicode_ci AND ti.Iva = 'I.V.A. 21%'; + UPDATE movConta mci + JOIN vn.XDiario x ON x.ASIEN = mci.Asiento + JOIN TiposIva ti ON ti.CodigoIva = x.IVA + JOIN vn.pgcMaster pm ON pm.code = mci.CodigoCuenta COLLATE utf8mb3_unicode_ci + SET mci.BaseIva3 = x.BASEEURO , + mci.PorIva3 = x.IVA, + mci.CuotaIva3 = CAST((x.IVA / 100) * x.BASEEURO AS DECIMAL(10,2)), + mci.CodigoTransaccion3 = vDuaTransactionFk , + mci.CodigoIva3 = vTaxImportSuperReducedFk, + mci.IvaDeducible3 = TRUE, + mci.ImporteFactura = mci.ImporteFactura + x.BASEEURO + CAST((x.IVA / 100) * x.BASEEURO AS DECIMAL(10, 2)) + WHERE pm.description = 'HP Iva pendiente' + AND mci.enlazadoSage = FALSE + AND x.SERIE = vSerialDua COLLATE utf8mb3_unicode_ci + AND ti.Iva = 'I.V.A. 4%'; + -- Rectificativas - UPDATE movConta mci - JOIN (SELECT x.ASIEN, x.FECHA_RT, x.SERIE_RT, x.FACTU_RT - FROM movConta mci + UPDATE movConta mci + JOIN (SELECT x.ASIEN, x.FECHA_RT, x.SERIE_RT, x.FACTU_RT + FROM movConta mci JOIN vn.XDiario x ON x.ASIEN = mci.Asiento - WHERE mci.TipoRectificativa > 0 - AND mci.enlazadoSage = FALSE + WHERE mci.TipoRectificativa > 0 + AND mci.enlazadoSage = FALSE AND x.FACTU_RT IS NOT NULL GROUP BY x.ASIEN ) sub ON sub.ASIEN = mci.Asiento - SET mci.EjercicioFacturaOriginal = YEAR(sub.FECHA_RT), - mci.SerieFacturaOriginal = sub.SERIE_RT, - mci.NumeroFacturaOriginal = sub.FACTU_RT - WHERE mci.TipoRectificativa > 0 AND + SET mci.EjercicioFacturaOriginal = YEAR(sub.FECHA_RT), + mci.SerieFacturaOriginal = sub.SERIE_RT, + mci.NumeroFacturaOriginal = sub.FACTU_RT + WHERE mci.TipoRectificativa > 0 AND mci.enlazadoSage = FALSE ; -- Exportaciones Andorras y Canarias cambia TT (la cuenta es compartida) @@ -20556,24 +17935,24 @@ BEGIN CodigoTransaccion2 = IF(CodigoTransaccion2 = 0, 0, vTransactionExportTaxFreeFk), CodigoTransaccion3 = IF(CodigoTransaccion3 = 0, 0, vTransactionExportTaxFreeFk), CodigoTransaccion4 = IF(CodigoTransaccion4 = 0, 0, vTransactionExportTaxFreeFk) - WHERE enlazadoSage = FALSE - AND (CodigoTransaccion1 = vTransactionExportFk - OR CodigoTransaccion2 = vTransactionExportFk - OR CodigoTransaccion3 = vTransactionExportFk - OR CodigoTransaccion4 = vTransactionExportFk) - AND SiglaNacion IN (vCountryCanariasCode COLLATE utf8_general_ci, vCountryCeutaMelillaCode COLLATE utf8_general_ci); + WHERE enlazadoSage = FALSE + AND (CodigoTransaccion1 = vTransactionExportFk + OR CodigoTransaccion2 = vTransactionExportFk + OR CodigoTransaccion3 = vTransactionExportFk + OR CodigoTransaccion4 = vTransactionExportFk) + AND SiglaNacion IN (vCountryCanariasCode COLLATE utf8mb3_unicode_ci, vCountryCeutaMelillaCode COLLATE utf8mb3_unicode_ci); UPDATE movConta mc SET CodigoDivisa = 'USD', FactorCambio = TRUE, ImporteCambio = ABS( CAST( IF( ImporteDivisa <> 0 AND ImporteCambio = 0, ImporteAsiento / ImporteDivisa, ImporteCambio) AS DECIMAL( 10, 2))) - WHERE enlazadoSage = FALSE + WHERE enlazadoSage = FALSE AND (ImporteCambio <> 0 OR ImporteDivisa <> 0 OR FactorCambio); UPDATE movConta mc SET importeDivisa= -importeDivisa - WHERE enlazadoSage = FALSE - AND importeDivisa > 0 + WHERE enlazadoSage = FALSE + AND importeDivisa > 0 AND ImporteAsiento < 0; -- Comprobación que los importes e ivas sean correctos, avisa vía CAU @@ -20584,11 +17963,11 @@ BEGIN WHERE mc.enlazadoSage = FALSE GROUP BY mc.Asiento)sub JOIN (SELECT x.ASIEN, SUM(IFNULL(x.EURODEBE,0) + IFNULL(x.EUROHABER,0)) amount - FROM vn.XDiario x + FROM vn.XDiario x WHERE x.enlazadoSage = FALSE GROUP BY ASIEN)sub2 ON sub2.ASIEN = sub.Asiento WHERE sub.amount <> sub2.amount - UNION ALL + UNION ALL SELECT sub.Asiento FROM (SELECT Asiento, SUM(BaseIva1 + BaseIva2 + BaseIva3 + BaseIva4) amountTaxableBase FROM movConta @@ -20597,13 +17976,13 @@ BEGIN GROUP BY Asiento) sub JOIN (SELECT ASIEN, SUM(BASEEURO) amountTaxableBase FROM (SELECT ASIEN, SUM(BASEEURO) BASEEURO - FROM vn.XDiario - WHERE FACTURA + FROM vn.XDiario + WHERE FACTURA AND auxiliar <> '*' AND enlazadoSage = FALSE GROUP BY FACTURA, ASIEN)sub3 GROUP BY ASIEN) sub2 ON sub2.ASIEN = sub.Asiento - WHERE sub.amountTaxableBase<>sub2.amountTaxableBase + WHERE sub.amountTaxableBase<>sub2.amountTaxableBase AND sub.amountTaxableBase/2 <> sub2.amountTaxableBase) sub; IF vBookEntries IS NOT NULL THEN @@ -20619,152 +17998,31 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `clientesProveedoresAdd__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clientesProveedoresAdd__`() -BEGIN -TRUNCATE TABLE clientesProveedores; - INSERT INTO clientesProveedores - (CodigoEmpresa, - ClienteOProveedor, - CodigoClienteProveedor, - RazonSocial, - Nombre, - Domicilio, - CodigoCuenta, - CifDni, - CifEuropeo, - CodigoPostal, - Municipio, - CodigoProvincia, - Provincia, - CodigoNacion, - SiglaNacion, - PersonaFisicaJuridica, - TipoDocumentoPersona, - CodigoIva, - Nacion, - Telefono, - Telefono2, - CodigoTransaccion, - CodigoRetencion, - Email1, - iban) - SELECT IF (@@hostname = 'db', c.companyCode, companyCodeTest) CodigoEmpresa, - 'C' ClienteOProveedor, - cl.id CodigoClienteProveedor, - cl.socialName RazonSocial, - cl.name Nombre, - cl.street Domicilio, - cl.accountingAccount CodigoCuenta, - TRIM(IF(co.code = LEFT(cl.fi,2), MID(cl.fi,3, length(cl.fi)-1), cl.fi)) AS CifDni, - IF(sn.NacionCEE,TRIM(CONCAT(co.code, IF(co.code = LEFT(cl.fi,2), MID(cl.fi,3, length(cl.fi)-1), cl.fi))) , "")AS CifEuropeo, - cl.postcode CodigoPostal, - cl.city Municipio, - sp.CodigoProvincia CodigoProvincia, - p.name Provincia, - IF (sn.SiglaNacion = "XB",IF(sp.CodigoProvincia IN (51,52), 22, IF (sp.CodigoProvincia IN (35,38), 21, sn.CodigoNacion)), sn.CodigoNacion) CodigoNacion, - IF (sn.SiglaNacion = "XB",IF(sp.CodigoProvincia IN (51,52), "XC",IF (sp.CodigoProvincia IN (35,38), "XB", sn.SiglaNacion)), sn.SiglaNacion) SiglaNacion, - IF((cl.fi REGEXP '^([[:blank:]]|[[:digit:]])'), 'J','F') PersonaFisicaJuridica, - IF((co.id = 1 OR co.id = 30), 1, IF((co.isUeeMember = 1 AND cl.isVies), 2, 4)) TipoDocumentoPersona, - -- IF(cl.isEqualizated, 'R', IF ((cl.isVies AND cl.countryFk <> 1) OR (NOT co.isUeeMember),'E','I'))AS CodigoIva, - cl.taxTypeSageFk CodigoIva, - IF(sn.SiglaNacion = "XB", IF(sp.CodigoProvincia IN (51,52), "CEUTA Y MELILLA", IF (sp.CodigoProvincia IN (35,38), "ISLAS CANARIAS",sn.Nacion)) , sn.Nacion) Nacion, - cl.phone Telefono, - cl.mobile Telefono2, - cl.transactionTypeSageFk CodigoTransaccion, - 0 CodigoRetencion, - SUBSTR(cl.email, 1, LOCATE(',', CONCAT(cl.email,','))-1) Email1, - cl.iban iban - FROM vn.client cl - JOIN vn2008.v_xsubclien ON v_xsubclien.Id_Cliente = cl.id - LEFT JOIN vn.country co ON co.id = cl.countryFk - LEFT JOIN sage.Naciones sn ON sn.countryFk = co.id - LEFT JOIN vn.province p ON p.id = cl.provinceFk - LEFT JOIN sage.Provincias sp ON sp.provinceFk = p.id - JOIN vn.company c ON c.id = v_xsubclien.empresa_id - WHERE cl.isRelevant AND c.code = 'VNL' - UNION ALL - SELECT IF (@@hostname = 'db', c.companyCode, companyCodeTest) CodigoEmpresa, - 'P' ClienteOProveedor, - s.id CodigoClienteProveedor, - s.name RazonSocial, - s.name Nombre, - s.street Domicilio, - s.account CodigoCuenta, - TRIM(IF(co.code = LEFT(s.nif,2), MID(s.nif,3, length(s.nif)-1), s.nif)) CifDni, - IF(sn.NacionCEE,TRIM(CONCAT(co.code, IF(co.code = LEFT(s.nif,2), MID(s.nif,3, length(s.nif)-1), s.nif))), "") AS CifEuropeo, - s.postCode CodigoPostal, - s.city Municipio, - sp.CodigoProvincia CodigoProvincia, - p.name Provincia, - sn.CodigoNacion CodigoNacion, - sn.SiglaNacion SiglaNacion, - IF((s.nif REGEXP '^([[:blank:]]|[[:digit:]])'),'J','F') PersonaFisicaJuridica, - IF((co.id = 1 OR co.id = 30),1,IF((co.isUeeMember = 1), 2, 4)) TipoDocumentoPersona, - -- 'I' CodigoIva, - s.taxTypeSageFk CodigoIva, - sn.Nacion Nacion, - con.Telefono Telefono, - con.Movil Telefono2, - s.transactionTypeSageFk CodigoTransaccion, - s.withholdingSageFk CodigoRetencion, - SUBSTR(con.email,1,(COALESCE(NULLIF(LOCATE(',', con.email), 0), 99) - 1)) Email1, - sa.iban iban - FROM vn.supplier s - JOIN vn2008.v_xsubprov xsp ON xsp.proveedor_id = s.id -- Proveedores activos los últimos 3 meses - LEFT JOIN vn.country co ON co.id = s.countryFk - LEFT JOIN sage.Naciones sn ON sn.countryFk = co.id - LEFT JOIN vn.province p ON p.id = s.provinceFk - LEFT JOIN sage.Provincias sp ON sp.provinceFk = p.id - LEFT JOIN vn2008.Relaciones r ON r.Id_Proveedor = s.id - LEFT JOIN vn.supplierAccount sa ON sa.supplierFk = s.id - LEFT JOIN vn2008.Contactos con ON con.Id_Contacto = r.Id_Contacto - JOIN vn.company c ON c.id = xsp.empresa_id - WHERE - c.code = 'VNL' AND - s.isActive AND - s.nif <> '' -GROUP BY xsp.proveedor_id , xsp.empresa_id; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `clientSupplier_add` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clientSupplier_add`(vCompanyFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `clientSupplier_add`(vCompanyFk INT) BEGIN /** - * Prepara los datos de clientes y proveedores para exportarlos a Sage + * Prepara los datos de clientes y proveedores para exportarlos a Sage * @vCompanyFk Empresa dela que se quiere trasladar datos */ DECLARE vCountryCeutaMelillaFk INT; DECLARE vCountryCanariasCode, vCountryCeutaMelillaCode VARCHAR(2); SELECT SiglaNacion INTO vCountryCanariasCode - FROM Naciones + FROM Naciones WHERE Nacion ='ISLAS CANARIAS'; SELECT CodigoNacion, SiglaNacion INTO vCountryCeutaMelillaFk, vCountryCeutaMelillaCode - FROM Naciones + FROM Naciones WHERE Nacion ='CEUTA Y MELILLA'; TRUNCATE TABLE clientesProveedores; @@ -20795,8 +18053,8 @@ BEGIN CodigoRetencion, Email1, iban) - SELECT - IF (@@hostname = 'db', co.companyCode, co.companyCodeTest), + SELECT + company_getCode(vCompanyFk), 'C', c.id, c.socialName, @@ -20809,15 +18067,15 @@ BEGIN IFNULL(c.city, ''), IFNULL(pr.CodigoProvincia, ''), IFNULL(p.name, ''), - IF(n.SiglaNacion = vCountryCanariasCode COLLATE utf8_general_ci, IF(@isCeutaMelilla := IF(pr.Provincia IN ('CEUTA', 'MELILLA'), TRUE, FALSE), vCountryCeutaMelillaFk, IF (@isCanarias, vCountryCanariasCode, n.CodigoNacion)), n.CodigoNacion), - IF(n.SiglaNacion = vCountryCanariasCode COLLATE utf8_general_ci, IF(@isCeutaMelilla, vCountryCeutaMelillaCode, IF (@isCanarias, vCountryCanariasCode, n.SiglaNacion)), n.SiglaNacion), + IF(n.SiglaNacion = vCountryCanariasCode COLLATE utf8mb3_unicode_ci, IF(@isCeutaMelilla := IF(pr.Provincia IN ('CEUTA', 'MELILLA'), TRUE, FALSE), vCountryCeutaMelillaFk, IF (@isCanarias, vCountryCanariasCode, n.CodigoNacion)), n.CodigoNacion), + IF(n.SiglaNacion = vCountryCanariasCode COLLATE utf8mb3_unicode_ci, IF(@isCeutaMelilla, vCountryCeutaMelillaCode, IF (@isCanarias, vCountryCanariasCode, n.SiglaNacion)), n.SiglaNacion), IF((c.fi REGEXP '^([[:blank:]]|[[:digit:]])'), 'J','F'), - IF(cu.code IN('ES','EX'), - 1, + IF(cu.code IN('ES','EX'), + 1, IF((cu.isUeeMember AND c.isVies), 2, 4)), IFNULL(c.taxTypeSageFk,0), - IF(n.SiglaNacion = vCountryCanariasCode COLLATE utf8_general_ci, - IF(@isCeutaMelilla, 'CEUTA Y MELILLA', IF (@isCanarias, 'ISLAS CANARIAS', n.Nacion)), + IF(n.SiglaNacion = vCountryCanariasCode COLLATE utf8mb3_unicode_ci, + IF(@isCeutaMelilla, 'CEUTA Y MELILLA', IF (@isCanarias, 'ISLAS CANARIAS', n.Nacion)), n.Nacion), IFNULL(c.phone, ''), IFNULL(c.mobile, ''), @@ -20827,15 +18085,14 @@ BEGIN IFNULL(c.iban, '') FROM vn.`client` c JOIN clientLastTwoMonths clm ON clm.clientFk = c.id - JOIN vn.company co ON co.id = clm.companyFk LEFT JOIN vn.country cu ON cu.id = c.countryFk LEFT JOIN Naciones n ON n.countryFk = cu.id LEFT JOIN vn.province p ON p.id = c.provinceFk LEFT JOIN Provincias pr ON pr.provinceFk = p.id - WHERE c.isRelevant - AND co.id = vCompanyFk + WHERE c.isRelevant + AND clm.companyFk = vCompanyFk UNION ALL - SELECT IF (@@hostname = 'db', c.companyCode, companyCodeTest), + SELECT company_getCode(vCompanyFk), 'P', s.id, s.name, @@ -20849,169 +18106,27 @@ BEGIN IFNULL(pr.CodigoProvincia, ''), IFNULL(p.name, ''), n.CodigoNacion, - n.SiglaNacion COLLATE utf8_general_ci, + n.SiglaNacion COLLATE utf8mb3_unicode_ci, IF((s.nif REGEXP '^([[:blank:]]|[[:digit:]])'),'J','F'), IF(co.country IN ('España', 'España exento'), 1,IF(co.isUeeMember = 1, 2, 4)), IFNULL(s.taxTypeSageFk, 0), n.Nacion, - IFNULL(con.Telefono, ''), - IFNULL(con.Movil, ''), + IFNULL(sc.phone, ''), + IFNULL(sc.mobile, ''), IFNULL(s.transactionTypeSageFk, 0), IFNULL(s.withholdingSageFk, '0'), - IFNULL(SUBSTR(con.email, 1, (COALESCE(NULLIF(LOCATE(',', con.email), 0), 99) - 1)), ''), + IFNULL(SUBSTR(sc.email, 1, (COALESCE(NULLIF(LOCATE(',', sc.email), 0), 99) - 1)), ''), IFNULL(iban, '') FROM vn.supplier s - JOIN providerLastThreeMonths pl ON pl.supplierFk = s.id + JOIN supplierLastThreeMonths pl ON pl.supplierFk = s.id LEFT JOIN vn.country co ON co.id = s.countryFk LEFT JOIN Naciones n ON n.countryFk = co.id LEFT JOIN vn.province p ON p.id = s.provinceFk LEFT JOIN Provincias pr ON pr.provinceFk = p.id - LEFT JOIN vn2008.Relaciones r ON r.Id_Proveedor = s.id + LEFT JOIN vn.supplierContact sc ON sc.supplierFk = s.id LEFT JOIN vn.supplierAccount sa ON sa.supplierFk = s.id - LEFT JOIN vn2008.Contactos con ON con.Id_Contacto = r.Id_Contacto - JOIN vn.company c ON c.id = pl.companyFk - WHERE c.id = vCompanyFk AND - s.isActive AND - s.nif <> '' - GROUP BY pl.supplierFk, pl.companyFk; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `clientSupplier_add__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clientSupplier_add__`(vCompanyFk INT) -BEGIN -/** - * Prepara los datos de clientes y proveedores para exportarlos a Sage - * @vCompanyFk Empresa dela que se quiere trasladar datos - */ - DECLARE vCountryCeutaMelillaFk INT; - DECLARE vCountryCanariasCode, vCountryCeutaMelillaCode VARCHAR(2); - - SELECT SiglaNacion INTO vCountryCanariasCode - FROM Naciones - WHERE Nacion ='ISLAS CANARIAS'; - - SELECT CodigoNacion, SiglaNacion INTO vCountryCeutaMelillaFk, vCountryCeutaMelillaCode - FROM Naciones - WHERE Nacion ='CEUTA Y MELILLA'; - - TRUNCATE TABLE clientesProveedores; - - INSERT INTO clientesProveedores - (CodigoEmpresa, - ClienteOProveedor, - CodigoClienteProveedor, - RazonSocial, - Nombre, - Domicilio, - CodigoCuenta, - CifDni, - CifEuropeo, - CodigoPostal, - Municipio, - CodigoProvincia, - Provincia, - CodigoNacion, - SiglaNacion, - PersonaFisicaJuridica, - TipoDocumentoPersona, - CodigoIva, - Nacion, - Telefono, - Telefono2, - CodigoTransaccion, - CodigoRetencion, - Email1, - iban) - SELECT - IF (@@hostname = 'db', co.companyCode, co.companyCodeTest), - 'C', - c.id, - c.socialName, - c.name, - IFNULL(c.street, ''), - c.accountingAccount, - TRIM(IF(cu.code = LEFT(c.fi, 2), MID(c.fi, 3, LENGTH(c.fi)-1), c.fi)), - IF(n.NacionCEE,TRIM(CONCAT(cu.code, IF(cu.code = LEFT(c.fi,2), MID(c.fi,3, LENGTH(c.fi)-1), c.fi))) , ''), - IFNULL(c.postcode, ''), - IFNULL(c.city, ''), - IFNULL(pr.CodigoProvincia, ''), - IFNULL(p.name, ''), - IF(n.SiglaNacion = vCountryCanariasCode COLLATE utf8_general_ci, IF(@isCeutaMelilla := IF(pr.Provincia IN ('CEUTA', 'MELILLA'), TRUE, FALSE), vCountryCeutaMelillaFk, IF (@isCanarias, vCountryCanariasCode, n.CodigoNacion)), n.CodigoNacion), - IF(n.SiglaNacion = vCountryCanariasCode COLLATE utf8_general_ci, IF(@isCeutaMelilla, vCountryCeutaMelillaCode, IF (@isCanarias, vCountryCanariasCode, n.SiglaNacion)), n.SiglaNacion), - IF((c.fi REGEXP '^([[:blank:]]|[[:digit:]])'), 'J','F'), - IF(cu.code IN('ES','EX'), - 1, - IF((cu.isUeeMember AND c.isVies), 2, 4)), - IFNULL(c.taxTypeSageFk,0), - IF(n.SiglaNacion = vCountryCanariasCode COLLATE utf8_general_ci, - IF(@isCeutaMelilla, 'CEUTA Y MELILLA', IF (@isCanarias, 'ISLAS CANARIAS', n.Nacion)), - n.Nacion), - IFNULL(c.phone, ''), - IFNULL(c.mobile, ''), - IFNULL(c.transactionTypeSageFk, 0), - '0', - IFNULL(SUBSTR(c.email, 1, LOCATE(',', CONCAT(c.email, ','))-1), ''), - IFNULL(c.iban, '') - FROM vn.`client` c - JOIN clientLastTwoMonths clm ON clm.clientFk = c.id - JOIN vn.company co ON co.id = clm.companyFk - LEFT JOIN vn.country cu ON cu.id = c.countryFk - LEFT JOIN Naciones n ON n.countryFk = cu.id - LEFT JOIN vn.province p ON p.id = c.provinceFk - LEFT JOIN Provincias pr ON pr.provinceFk = p.id - WHERE c.isRelevant - AND co.id = vCompanyFk - UNION ALL - SELECT IF (@@hostname = 'db', c.companyCode, companyCodeTest), - 'P', - s.id, - s.name, - s.name, - IFNULL(s.street, ''), - s.account, - TRIM(IF(co.code = LEFT(s.nif, 2), MID(s.nif, 3, LENGTH(s.nif) - 1), s.nif)), - IF(n.NacionCEE, TRIM(CONCAT(co.code, IF(co.code = LEFT(s.nif, 2), MID(s.nif, 3, LENGTH(s.nif) - 1), s.nif))), ''), - IFNULL(s.postCode,''), - IFNULL(s.city, ''), - IFNULL(pr.CodigoProvincia, ''), - IFNULL(p.name, ''), - n.CodigoNacion, - n.SiglaNacion COLLATE utf8_general_ci, - IF((s.nif REGEXP '^([[:blank:]]|[[:digit:]])'),'J','F'), - IF(co.country IN ('España', 'España exento'), 1,IF(co.isUeeMember = 1, 2, 4)), - IFNULL(s.taxTypeSageFk, 0), - n.Nacion, - IFNULL(con.Telefono, ''), - IFNULL(con.Movil, ''), - IFNULL(s.transactionTypeSageFk, 0), - IFNULL(s.withholdingSageFk, '0'), - IFNULL(SUBSTR(con.email, 1, (COALESCE(NULLIF(LOCATE(',', con.email), 0), 99) - 1)), ''), - IFNULL(iban, '') - FROM vn.supplier s - JOIN providerLastThreeMonths pl ON pl.supplierFk = s.id - LEFT JOIN vn.country co ON co.id = s.countryFk - LEFT JOIN Naciones n ON n.countryFk = co.id - LEFT JOIN vn.province p ON p.id = s.provinceFk - LEFT JOIN Provincias pr ON pr.provinceFk = p.id - LEFT JOIN vn2008.Relaciones r ON r.Id_Proveedor = s.id - LEFT JOIN vn.supplierAccount sa ON sa.supplierFk = s.id - LEFT JOIN vn2008.Contactos con ON con.Id_Contacto = r.Id_Contacto - JOIN vn.company c ON c.id = pl.companyFk - WHERE c.id = vCompanyFk AND - s.isActive AND + WHERE pl.companyFk = vCompanyFk AND + s.isActive AND s.nif <> '' GROUP BY pl.supplierFk, pl.companyFk; END ;; @@ -21026,18 +18141,18 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceIn_add`(vInvoiceInFk INT, vXDiarioFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceIn_add`(vInvoiceInFk INT, vXDiarioFk INT) BEGIN /** * Traslada la info de contabilidad relacionada con las facturas recibidas - * + * * @vInvoiceInFk Factura recibida * @vXDiarioFk Id tabla XDiario - */ + */ DECLARE vDone BOOL DEFAULT FALSE; DECLARE vBase DOUBLE; DECLARE vVat DOUBLE; @@ -21053,24 +18168,24 @@ BEGIN DECLARE vInvoiceTypeReceived VARCHAR(1); DECLARE vInvoiceTypeInformative VARCHAR(1); - DECLARE vCursor CURSOR FOR + DECLARE vCursor CURSOR FOR SELECT it.taxableBase, CAST((( it.taxableBase / 100) * t.PorcentajeIva) AS DECIMAL (10,2)), t.PorcentajeIva, it.transactionTypeSageFk, it.taxTypeSageFk, t.isIntracommunity, - tt.ClaveOperacionDefecto + tt.ClaveOperacionDefecto FROM vn.invoiceIn i - JOIN vn.invoiceInTax it ON it.InvoiceInFk = i.id + JOIN vn.invoiceInTax it ON it.InvoiceInFk = i.id JOIN TiposIva t ON t.CodigoIva = it.taxTypeSageFk JOIN TiposTransacciones tt ON tt.CodigoTransaccion = it.transactionTypeSageFk LEFT JOIN vn.dua d ON d.id = vInvoiceInFk - WHERE i.id = vInvoiceInFk + WHERE i.id = vInvoiceInFk AND d.id IS NULL; - + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + DELETE FROM movContaIVA WHERE id = vXDiarioFk; @@ -21093,22 +18208,22 @@ BEGIN vTaxCode, vIsIntracommunity, vOperationCode; - - IF vDone THEN + + IF vDone THEN LEAVE l; END IF; - SET vTransactionCodeOld = vTransactionCode; - SET vTaxCodeOld = vTaxCode; + SET vTransactionCodeOld = vTransactionCode; + SET vTaxCodeOld = vTaxCode; - IF vOperationCode IS NOT NULL THEN + IF vOperationCode IS NOT NULL THEN UPDATE movContaIVA SET ClaveOperacionFactura = vOperationCode WHERE id = vXDiarioFk; END IF; - + SET vCounter = vCounter + 1; - CASE vCounter + CASE vCounter WHEN 1 THEN UPDATE movContaIVA SET BaseIva1 = vBase, @@ -21144,21 +18259,21 @@ BEGIN WHERE id = vXDiarioFk; ELSE SELECT vXDiarioFk INTO vXDiarioFk; - END CASE; + END CASE; IF vIsIntracommunity THEN UPDATE movContaIVA SET Intracomunitaria = TRUE WHERE id = vXDiarioFk; END IF; - - SET vTransactionCodeOld = vTransactionCode; - SET vTaxCodeOld = vTaxCode; - + + SET vTransactionCodeOld = vTransactionCode; + SET vTaxCodeOld = vTaxCode; + END LOOP; CLOSE vCursor; - + UPDATE movContaIVA mci JOIN tmp.invoiceIn ii ON ii.id = vInvoiceInFk JOIN vn.XDiario x ON x.id = mci.id @@ -21170,11 +18285,11 @@ BEGIN mci.Serie = ii.serial, mci.Factura = ii.serialNumber, mci.FechaFactura = ii.issued, - mci.ImporteFactura = IFNULL(mci.BaseIva1, 0) + IFNULL(mci.CuotaIva1, 0) + - IFNULL(mci.BaseIva2, 0) + IFNULL(mci.CuotaIva2, 0) + - IFNULL(mci.BaseIva3, 0) + IFNULL(mci.CuotaIva3, 0) + + mci.ImporteFactura = IFNULL(mci.BaseIva1, 0) + IFNULL(mci.CuotaIva1, 0) + + IFNULL(mci.BaseIva2, 0) + IFNULL(mci.CuotaIva2, 0) + + IFNULL(mci.BaseIva3, 0) + IFNULL(mci.CuotaIva3, 0) + IFNULL(mci.BaseIva4, 0) + IFNULL(mci.CuotaIva4, 0), - mci.TipoFactura = IF(id.id, IF( ii.serial = vSerialDua, vInvoiceTypeReceived, vInvoiceTypeInformative), vInvoiceTypeReceived), + mci.TipoFactura = IF(id.id, IF( ii.serial = vSerialDua COLLATE utf8mb3_unicode_ci, vInvoiceTypeReceived, vInvoiceTypeInformative), vInvoiceTypeReceived), mci.CodigoCuentaFactura = x.SUBCTA, mci.CifDni = IF(LEFT(TRIM(s.nif), 2) = n.SiglaNacion, SUBSTRING(TRIM(s.nif), 3), s.nif), mci.Nombre = s.name, @@ -21198,10 +18313,11 @@ BEGIN JOIN vn.invoiceInTax iit ON iit.invoiceInFk = ii.id JOIN vn.expence e ON e.id = iit.expenceFk JOIN TiposRetencion t ON t.CodigoRetencion = ii.withholdingSageFk + LEFT JOIN tmp.invoiceDua id ON id.id = mci.id JOIN (SELECT SUM(x2.BASEEURO) taxableBase, SUM(x2.EURODEBE) taxBase FROM vn.XDiario x1 JOIN vn.XDiario x2 ON x1.ASIEN = x2.ASIEN - WHERE x2.BASEEURO <> 0 + WHERE x2.BASEEURO <> 0 AND x1.id = vXDiarioFk )sub JOIN ClavesOperacion co ON co.Descripcion = 'Arrendamiento de locales de negocio' @@ -21209,9 +18325,10 @@ BEGIN mci.ClaveOperacionFactura = IF( t.Retencion = 'ARRENDAMIENTO Y SUBARRENDAMIENTO', co.ClaveOperacionFactura_, mci.ClaveOperacionFactura), mci.BaseRetencion = IF (t.Retencion = 'ACTIVIDADES AGRICOLAS O GANADERAS', sub.taxableBase + sub.taxBase, sub.taxableBase), mci.PorRetencion = t.PorcentajeRetencion, - mci.ImporteRetencion = iit.taxableBase * - 1 - WHERE mci.id = vXDiarioFk - AND e.name = 'Retenciones'; + mci.ImporteRetencion = iit.taxableBase * - 1 + WHERE mci.id = vXDiarioFk + AND e.name = 'Retenciones' + AND id.id IS NULL; END ;; DELIMITER ; @@ -21225,17 +18342,17 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceIn_manager`(vYear INT, vCompanyFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceIn_manager`(vYear INT, vCompanyFk INT) BEGIN /** - * Traslada la info de contabilidad relacionada con las facturas recibidas - * + * Traslada la info de contabilidad relacionada con las facturas recibidas + * * @vYear Año contable del que se quiere trasladar la información - * @vCompany Empresa de la que se quiere trasladar datos + * @vCompany Empresa de la que se quiere trasladar datos */ DECLARE vDone BOOL DEFAULT FALSE; DECLARE vInvoiceFk INT; @@ -21247,22 +18364,22 @@ BEGIN DECLARE vAccountTaxOutstanding VARCHAR(10); DECLARE vInvoiceTypeSended VARCHAR(1); DECLARE vCursor CURSOR FOR - SELECT IFNULL(x.CLAVE, x.FACTURA) invoiceInFk, + SELECT IFNULL(x.CLAVE, x.FACTURA) invoiceInFk, x.id XDiarioFk - FROM vn.XDiario x + FROM vn.XDiario x JOIN(SELECT DISTINCT(x.ASIEN) FROM vn.XDiario x LEFT JOIN vn.invoiceIn ii ON x.CLAVE = ii.id LEFT JOIN vn.invoiceInTax it ON it.invoiceInFk = ii.id - WHERE(it.taxTypeSageFk IS NOT NULL OR x.SERIE = vSerialDua COLLATE utf8_general_ci) - AND x.enlazadoSage = FALSE + WHERE(it.taxTypeSageFk IS NOT NULL OR x.SERIE = vSerialDua COLLATE utf8mb3_unicode_ci) + AND x.enlazadoSage = FALSE AND x.FECHA BETWEEN vDatedFrom AND vDatedTo - AND x.empresa_id = vCompanyFk + AND x.empresa_id = vCompanyFk ) sub ON sub.ASIEN = x.ASIEN WHERE x.CLAVE IS NOT NULL; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + SELECT CAST(CONCAT(vYear, '-01-01') AS DATETIME), util.dayEnd(CAST(CONCAT(vYear, '-12-31') AS DATE)) INTO vDatedFrom, vDatedTo; @@ -21276,16 +18393,16 @@ BEGIN SELECT codeSage INTO vInvoiceTypeSended FROM invoiceType WHERE `code` ='sended'; - + DROP TEMPORARY TABLE IF EXISTS tmp.invoiceDua; CREATE TEMPORARY TABLE tmp.invoiceDua - SELECT x.id + SELECT x.id FROM vn.XDiario x JOIN vn.company c ON c.id = x.empresa_id JOIN (SELECT ASIEN - FROM vn.XDiario x - WHERE x.enlazadoSage = FALSE - AND x.SUBCTA = vAccountTaxOutstanding COLLATE utf8_general_ci + FROM vn.XDiario x + WHERE x.enlazadoSage = FALSE + AND x.SUBCTA = vAccountTaxOutstanding COLLATE utf8mb3_unicode_ci AND x.FECHA BETWEEN vDatedFrom AND vDatedTo )sub ON sub.ASIEN = x.ASIEN WHERE NOT x.CONTRA <=> vAccountVNL; @@ -21294,7 +18411,7 @@ BEGIN CREATE TEMPORARY TABLE tmp.invoiceIn SELECT i.id, i.supplierRef, - i.serial COLLATE utf8_general_ci serial, + i.serial COLLATE utf8mb3_unicode_ci serial, i.supplierFk, i.issued, IF(expenceFkDeductible, FALSE, i.isVatDeductible) isVatDeductible, @@ -21303,7 +18420,7 @@ BEGIN FROM vn.invoiceIn i JOIN vn.currency c ON c.id = i.currencyFk WHERE i.bookEntried BETWEEN vDatedFrom AND vDatedTo - UNION ALL + UNION ALL SELECT d.id, d.code, vSerialDua, @@ -21312,8 +18429,8 @@ BEGIN FALSE, d.id, '' -- EUROS - FROM vn.dua d - WHERE d.issued IS NOT NULL + FROM vn.dua d + WHERE d.issued IS NOT NULL AND code IS NOT NULL; OPEN vCursor; @@ -21321,7 +18438,7 @@ BEGIN l: LOOP FETCH vCursor INTO vInvoiceFk, vXDiarioFk; - IF vDone THEN + IF vDone THEN LEAVE l; END IF; CALL invoiceIn_add(vInvoiceFk, vXDiarioFk); @@ -21409,21 +18526,21 @@ BEGIN JOIN (SELECT x.ASIEN, x.id FROM vn.XDiario x JOIN(SELECT DISTINCT(x.ASIEN) ASIEN - FROM vn.XDiario x + FROM vn.XDiario x JOIN (SELECT DISTINCT(ASIEN) FROM vn.XDiario x - WHERE SUBCTA LIKE '472%' + WHERE SUBCTA LIKE '472%' AND x.enlazadoSage = FALSE AND x.empresa_id = vCompanyFk AND x.FECHA BETWEEN vDatedFrom AND vDatedTo ) sub ON sub.ASIEN = x.ASIEN WHERE x.SUBCTA LIKE '477%' )sub2 ON sub2.ASIEN = x.ASIEN - WHERE x.CONTRA IS NOT NULL + WHERE x.CONTRA IS NOT NULL AND x.SUBCTA LIKE '477%' GROUP BY x.ASIEN )sub3 ON sub3.ASIEN = x.ASIEN; - + INSERT INTO movContaIVA (`id`, `CodigoDivisa`, @@ -21494,9 +18611,9 @@ BEGIN `FechaGrabacion`, `Intracomunitaria`, `moveData`) - SELECT * + SELECT * FROM tmp.movContaIVA; - + DROP TEMPORARY TABLE tmp.movContaIVA; END ;; @@ -21511,17 +18628,17 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOut_add`(IN vInvoiceOutFk INT, IN vXDiarioFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceOut_add`(IN vInvoiceOutFk INT, IN vXDiarioFk INT) BEGIN /** - * Traslada la info de contabilidad relacionada con las facturas emitidas - * + * Traslada la info de contabilidad relacionada con las facturas emitidas + * * @vYear Año contable del que se quiere trasladar la información - * @vCompany Empresa de la que se quiere trasladar datos + * @vCompany Empresa de la que se quiere trasladar datos */ DECLARE vDone BOOL DEFAULT FALSE; DECLARE vMaxLengthName INT DEFAULT 35; @@ -21538,14 +18655,14 @@ BEGIN DECLARE vIsIntracommunity BOOL DEFAULT FALSE; DECLARE vInvoiceTypeSended VARCHAR(1); DECLARE vOperationCode VARCHAR(1); - + DECLARE vCursor CURSOR FOR - SELECT oit.taxableBase, - oit.vat, - pgc.rate, - pgc.mod347, - pgcRE.rate, - oitRE.vat, + SELECT oit.taxableBase, + oit.vat, + pgc.rate, + pgc.mod347, + pgcRE.rate, + oitRE.vat, tc.transactionCode, tc.taxCode, tc.isIntracommunity, @@ -21554,22 +18671,22 @@ BEGIN JOIN vn.pgc ON pgc.code = oit.pgcFk LEFT JOIN vn.pgcEqu e ON e.vatFk = oit.pgcFk LEFT JOIN vn.pgcEqu eRE ON eRE.equFk = oit.pgcFk - LEFT JOIN vn.invoiceOutTax oitRE ON oitRE.invoiceOutFk = oit.invoiceOutFk + LEFT JOIN vn.invoiceOutTax oitRE ON oitRE.invoiceOutFk = oit.invoiceOutFk AND oitRE.pgcFk = e.equFk LEFT JOIN vn.pgc pgcRE ON pgcRE.code = oitRE.pgcFk - LEFT JOIN vn.taxCode tc ON tc.code = pgc.code COLLATE 'utf8_general_ci' + LEFT JOIN vn.taxCode tc ON tc.code = pgc.code COLLATE 'utf8mb3_unicode_ci' WHERE eRE.equFk IS NULL AND oit.invoiceOutFk = vInvoiceOutFk GROUP BY pgc.code; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + SELECT codeSage INTO vInvoiceTypeSended FROM invoiceType WHERE code ='sended'; - + DELETE FROM movContaIVA WHERE id = vXDiarioFk; - + INSERT INTO movContaIVA(id) VALUES (vXDiarioFk); OPEN vCursor; @@ -21586,13 +18703,13 @@ BEGIN vIsIntracommunity, vOperationCode; - IF vDone THEN + IF vDone THEN LEAVE l; END IF; SET vCounter = vCounter + 1; - - CASE vCounter + + CASE vCounter WHEN 1 THEN UPDATE movContaIVA SET BaseIva1 = vBase, @@ -21633,7 +18750,7 @@ BEGIN CodigoTransaccion4 = vTransactionCode, CodigoIva4 = vTaxCode WHERE id = vXDiarioFk; - END CASE; + END CASE; UPDATE movContaIVA SET Exclusion347 = NOT vMod347, @@ -21644,7 +18761,7 @@ BEGIN END LOOP; CLOSE vCursor; - + UPDATE movContaIVA mci JOIN vn.invoiceOut i ON i.id = vInvoiceOutFk LEFT JOIN vn.invoiceCorrection ic ON ic.correctedFk = vInvoiceOutFk @@ -21669,25 +18786,25 @@ BEGIN mci.MantenerAsiento = TRUE, mci.FechaFacturaOriginal = x.FECHA_EX WHERE mci.id = vXDiarioFk; - + SELECT correctedFk INTO vInvoiceOutCorrectedFk FROM vn.invoiceCorrection WHERE correctingFk = vInvoiceOutFk; - - IF vInvoiceOutCorrectedFk THEN + + IF vInvoiceOutCorrectedFk THEN UPDATE movContaIVA mci JOIN vn.invoiceOut i ON i.id = vInvoiceOutCorrectedFk JOIN vn.invoiceCorrection ic ON ic.correctedFk = vInvoiceOutCorrectedFk - JOIN (SELECT SUM(IF(IFNULL(e.vatFk, TRUE), iot.taxableBase, 0)) taxableBase, + JOIN (SELECT SUM(IF(IFNULL(e.vatFk, TRUE), iot.taxableBase, 0)) taxableBase, SUM(IF(IFNULL(e.vatFk, TRUE), iot.vat, 0)) vat, SUM(IF(IFNULL(e.vatFk, TRUE), 0, iot.vat)) equ FROM vn.invoiceOutTax iot - LEFT JOIN vn.pgcEqu e ON e.vatFk = iot.pgcFk + LEFT JOIN vn.pgcEqu e ON e.vatFk = iot.pgcFk WHERE iot.invoiceOutFk = vInvoiceOutCorrectedFk ) tax JOIN ClavesOperacion co ON co.Descripcion = 'Factura rectificativa' SET mci.TipoRectificativa = 2, - mci.ClaseAbonoRectificativas = 1, + mci.ClaseAbonoRectificativas = 1, mci.FechaFacturaOriginal = i.issued, mci.FechaOperacion = i.issued, mci.BaseImponibleOriginal = tax.taxableBase, @@ -21711,17 +18828,17 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOut_manager`(vYear INT, vCompanyFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceOut_manager`(vYear INT, vCompanyFk INT) BEGIN /** - * Traslada la info de contabilidad relacionada con las facturas emitidas - * + * Traslada la info de contabilidad relacionada con las facturas emitidas + * * @vYear Año contable del que se quiere trasladar la información - * @vCompany Empresa de la que se quiere trasladar datos + * @vCompany Empresa de la que se quiere trasladar datos */ DECLARE vDone BOOL DEFAULT FALSE; DECLARE vInvoiceFk INT; @@ -21738,7 +18855,7 @@ BEGIN JOIN (SELECT x.ASIEN, CONCAT(x.SERIE, x.FACTURA) refFk FROM vn.XDiario x WHERE x.enlazadoSage = FALSE - AND x.FACTURA + AND x.FACTURA AND x.empresa_id = vCompanyFk AND x.FECHA BETWEEN vDatedFrom AND vDatedTo GROUP BY refFk @@ -21747,580 +18864,25 @@ BEGIN )sub2 ON sub2.refFk = i.ref; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + SELECT CAST(CONCAT(vYear, '-01-01') AS DATETIME), util.dayEnd(CAST(CONCAT(vYear, '-12-31') AS DATE)) INTO vDatedFrom, vDatedTo; - + OPEN vCursor; l: LOOP FETCH vCursor INTO vInvoiceFk, vXDiarioFk; - IF vDone THEN + IF vDone THEN LEAVE l; END IF; - + CALL invoiceOut_add(vInvoiceFk, vXDiarioFk); END LOOP; CLOSE vCursor; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `movContaAdd__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `movContaAdd__`() -BEGIN - /* Copia en movConta los asientos de XDiario para que luego los importe el proceso automático que hay en SQL Server - */ - DECLARE vDated DATE; - SELECT CONCAT(YEAR(CURDATE()), "-01-01") INTO vDated; -SELECT "2021-01-01" INTO vDated; - TRUNCATE XDiario_movConta_IVA; - DELETE FROM movConta WHERE enlazadoSage = FALSE AND Asiento <> 1 ; - CALL clientesProveedoresAdd; - CALL planCuentasPgcAdd; - CALL XDiario_movConta_IVA_InvoiceOutAdd_Manager; - CALL XDiario_movConta_IVA_InvoiceInAdd_Manager; - INSERT INTO movConta( - TipoEntrada, -- VARCHAR(2) - Ejercicio, -- Año - CodigoEmpresa, -- ENT(2) - Asiento, -- LONG(4), nº ASIENTO - CargoAbono, -- VARCHAR(1) "D" debe ó "H" haber - CodigoCuenta, -- VARCHAR(15) partida contable - Contrapartida, -- VARCHAR(15) partida contable - FechaAsiento, -- FECHA(8) - Comentario, -- VARCHAR(40) - ImporteAsiento, -- DOBLE(19) - NumeroPeriodo, -- ENT(2) "-1" Al informar este valor se calcula automát. A partir de la fecha de asiento - FechaGrabacion, -- FECHA(8) - CodigoDivisa, -- VARCHAR(3) - ImporteCambio, -- DOBLE(19) - ImporteDivisa, -- DOBLE(19) - FactorCambio, -- DOBLE(19) - IdProcesoIME, -- GUID(16) - TipoCarteraIME, -- ENT(2) "0" para que no genere cartera - TipoAnaliticaIME, -- ENT(2) - StatusTraspasadoIME, -- BYTE "0" para dejar como no importado aún - TipoImportacionIME, -- BYTE "0" Alta "1" Baja - Metalico347, -- ENT(2) - /* ESTOS CAMPOS SOLO SE INFORMAN EN EL CASO DE SER FACTURA */ - BaseIva1, -- DOBLE(19) - PorBaseCorrectora1, -- DOBLE(19) - PorIva1, -- DOBLE(19) - CuotaIva1, -- DOBLE(19) - PorRecargoEquivalencia1,-- DOBLE(19) - RecargoEquivalencia1, -- DOBLE(19) - CodigoTransaccion1, -- BYTE "0" Nacional "1" Intracomunitario "2" Extracomunitario - BaseIva2, - PorBaseCorrectora2, - PorIva2, - CuotaIva2, - PorRecargoEquivalencia2, - RecargoEquivalencia2, - CodigoTransaccion2, - BaseIva3, - PorBaseCorrectora3, - PorIva3, - CuotaIva3, - PorRecargoEquivalencia3, - RecargoEquivalencia3, - CodigoTransaccion3, - BaseIva4, - PorBaseCorrectora4, - PorIva4, - CuotaIva4, - PorRecargoEquivalencia4, - RecargoEquivalencia4, - CodigoTransaccion4, - Año, -- ENT(2) - Serie, -- VARCHAR(10) - Factura, -- LONG(4) - SuFacturaNo, -- VARCHAR(40) - FechaFactura, -- FECHA(8) - ImporteFactura, -- DOBLE(19) - TipoFactura, -- VARCHAR(1) "E" / "R" / "I" - CodigoCuentaFactura, -- VARCHAR(15) cuenta del cliente/proveedor - CifDni, -- VARCHAR(13) - Nombre, -- VARCHAR(35) - CodigoRetencion, -- ENT(2) - BaseRetencion, -- DOBLE(19) - PorRetencion, -- DOBLE(19) - ImporteRetencion, -- DOBLE(19) - SiglaNacion, -- VARCHAR(2) "ES" por defecto - EjercicioFactura, -- ENT(2) - FechaOperacion, -- FECHA(8) - Exclusion347, -- ENT(2) - MantenerAsiento, -- BYTE "-1" mantener "0" Sage asigna nuevo - ClaveOperacionFactura_, -- VARCHAR(1) P(4721000011,4721000021)-I(4721000015-4720000005-4720000006)-D (Rectificativas) - TipoRectificativa, -- ENT(2) - FechaFacturaOriginal, -- FECHA(8) - BaseImponibleOriginal, -- DOBLE(19) - CuotaIvaOriginal, -- DOBLE(19) - ClaseAbonoRectificativas,-- ENT(2) - RecargoEquivalenciaOriginal, -- DOBLE(19) */ - LibreA1, - CodigoIva1, -- ENT(6) - CodigoIva2, -- ENT(6) - CodigoIva3, -- ENT(6) - CodigoIva4, -- ENT(6) - IvaDeducible1, -- Entero 2 ((-1)) - IvaDeducible2, -- Entero 2 ((-1)) - IvaDeducible3, -- Entero 2 ((-1)) - IvaDeducible4, -- Entero 2 ((-1))-- ENT(6) - Intracomunitaria -- INT(2) - ) - SELECT 'EN' as TipoEntrada, - YEAR(x.FECHA) AS Ejercicio, - IF (@@hostname = 'db', c.companyCode, companyCodeTest) AS CodigoEmpresa, -- ENT(2) c.companyCode AS CodigoEmpresa, - x.ASIEN AS Asiento, -- LONG(4), nº ASIENTO - IF(EURODEBE<>0 OR (EURODEBE=0 AND EUROHABER IS NULL),'D','H')AS CargoAbono, -- IF(EURODEBE IS NULL,"H","D") AS CargoAbono, VARCHAR(1) "D" debe ó "H" haber - x.SUBCTA AS CodigoCuenta, -- VARCHAR(15) partida contable - x.CONTRA AS Contrapartida, -- VARCHAR(15) partida contable - x.FECHA AS FechaAsiento, -- FECHA(8) - SUBSTRING(x.CONCEPTO, 1, 40) AS Comentario, -- VARCHAR(40) - IF(x.EURODEBE,x.EURODEBE,x.EUROHABER) AS ImporteAsiento, -- DOBLE(19) - MONTH(x.FECHA) AS NumeroPeriodo, -- ENT(2) "-1" Al informar este valor se calcula automát. A partir de la fecha de asiento - IF( sub2.FECREGCON IS NULL, sub2.FECHA_EX, sub2.FECREGCON) FechaGrabacion, -- FECHA(8) - IF(x.CAMBIO,IFNULL(xmi.CodigoDivisa, sub3.code),'') CodigoDivisa, -- VARCHAR(3) - x.CAMBIO AS ImporteCambio, -- DOBLE(19) - IFNULL(x.DEBEME,x.HABERME) AS ImporteDivisa, -- DOBLE(19) - IF(x.CAMBIO,1,0) AS FactorCambio, -- DOBLE(19) - NULL AS IdProcesoIME, -- GUID(16) - 0 AS TipoCarteraIME, -- ENT(2) "0" para que no genere cartera - 0 AS TipoAnaliticaIME, -- ENT(2) - 0 AS StatusTraspasadoIME, -- BYTE "0" para dejar como no importado aún - 0 AS TipoImportacionIME, -- BYTE "0" Alta "1" Baja - x.METAL as Metalico347, - /* ESTOS CAMPOS SOLO SE INFORMAN EN EL CASO DE SER FACTURA */ - xmi.BaseIva1, -- DOBLE(19) - xmi.PorBaseCorrectora1, -- DOBLE(19) - xmi.PorIva1, -- DOBLE(19) - xmi.CuotaIva1, -- DOBLE(19) - xmi.PorRecargoEquivalencia1,-- DOBLE(19) - xmi.RecargoEquivalencia1, -- DOBLE(19) - xmi.CodigoTransaccion1, -- BYTE "0" Nacional "1" Intracomunitario "2" Extracomunitario - xmi.BaseIva2, - xmi.PorBaseCorrectora2, - xmi.PorIva2, - xmi.CuotaIva2, - xmi.PorRecargoEquivalencia2, - xmi.RecargoEquivalencia2, - xmi.CodigoTransaccion2, - xmi.BaseIva3, - xmi.PorBaseCorrectora3, - xmi.PorIva3, - xmi.CuotaIva3, - xmi.PorRecargoEquivalencia3, - xmi.RecargoEquivalencia3, - xmi.CodigoTransaccion3, - xmi.BaseIva4, - xmi.PorBaseCorrectora4, - xmi.PorIva4, - xmi.CuotaIva4, - xmi.PorRecargoEquivalencia4, - xmi.RecargoEquivalencia4, - xmi.CodigoTransaccion4, - xmi.Año, -- ENT(2) - xmi.Serie, -- VARCHAR(10) - xmi.Factura, -- LONG(4) - xmi.SuFacturaNo, -- VARCHAR(40) - xmi.FechaFactura, -- FECHA(8) - xmi.ImporteFactura, -- DOBLE(19) - xmi.TipoFactura, -- VARCHAR(1) "E" / "R" - xmi.CodigoCuentaFactura, -- VARCHAR(15) cuenta del cliente/proveedor - xmi.CifDni, -- VARCHAR(13) - xmi.Nombre, -- VARCHAR(35) - xmi.CodigoRetencion, -- ENT(2) - xmi.BaseRetencion, -- DOBLE(19) - xmi.PorRetencion, -- DOBLE(19) - xmi.ImporteRetencion, -- DOBLE(19) - xmi.SiglaNacion, -- VARCHAR(2) "ES" por defecto - xmi.EjercicioFactura, -- ENT(2) - xmi.FechaOperacion, -- FECHA(8) - xmi.Exclusion347, -- ENT(2) - 1, -- xmi.MantenerAsiento BYTE "-1" mantener "0" Sage asigna nuevo - xmi.ClaveOperacionFactura, -- VARCHAR(1) - xmi.TipoRectificativa, -- ENT(2) - xmi.FechaFacturaOriginal, -- FECHA(8) - xmi.BaseImponibleOriginal, -- DOBLE(19) - xmi.CuotaIvaOriginal, -- DOBLE(19) - xmi.ClaseAbonoRectificativas,-- ENT(2) - xmi.RecargoEquivalenciaOriginal,-- DOBLE(19) */ - xmi.LibreA1, - xmi.CodigoIva1, -- ENT(6) - xmi.CodigoIva2, -- ENT(6) - xmi.CodigoIva3, -- ENT(6) - xmi.CodigoIva4, -- ENT(6) - xmi.IvaDeducible1, -- Entero 2 ((-1)) - xmi.IvaDeducible2, -- Entero 2 ((-1)) - xmi.IvaDeducible3, -- Entero 2 ((-1)) - xmi.IvaDeducible4, -- Entero 2 ((-1))-- ENT(6) - xmi.Intracomunitaria -- TINYINT(1) - FROM vn2008.XDiario x - JOIN vn.company c ON c.id = x.empresa_id - LEFT JOIN XDiario_movConta_IVA xmi ON xmi.id = x.id AND xmi.moveData > 0 - LEFT JOIN (SELECT ASIEN, FECREGCON, FECHA_EX - FROM (SELECT DISTINCT ASIEN, FECREGCON, FECHA_EX - FROM vn2008.XDiario - ORDER BY ASIEN, FECREGCON DESC, FECHA_EX DESC - ) sub GROUP BY ASIEN - )sub2 ON sub2.ASIEN = x.ASIEN - LEFT JOIN ( SELECT DISTINCT(account),cu.code - FROM vn.bank b - JOIN vn.currency cu ON cu.id = b.currencyFk - WHERE cu.code <> "EUR" -- no se informa cuando la divisa en EUR - )sub3 ON sub3.account = x.SUBCTA - WHERE x.enlazadoSage = 0 AND - c.companyCode AND - x.FECHA >= vDated; - --- Prepara Metálicos - UPDATE sage.movConta m - JOIN (SELECT Asiento, SUBSTR(c.socialName,1,35) Nombre, c.fi, n.SiglaNacion - FROM sage.movConta m - JOIN vn.client c ON c.id = IF(m.CargoAbono = "H", m.CodigoCuenta-4300000000, m.Contrapartida-4300000000 ) - LEFT JOIN Naciones n ON n.countryFk = c.countryFk - WHERE m.Metalico347 = TRUE AND - m.enlazadoSage = FALSE - ) AS sub ON m.Asiento = sub.Asiento - SET m.Metalico347 = TRUE, - m.TipoFactura = "I", - m.CifDni = sub.fi , - m.Nombre = sub.Nombre, - m.SiglaNacion = sub.SiglaNacion - WHERE m.enlazadoSage = FALSE; - - UPDATE sage.movConta m - SET Metalico347 = FALSE, - m.TipoFactura = "", - m.Metalico347 = FALSE - WHERE CargoAbono = "D" AND - m.enlazadoSage = FALSE; - --- Elimina cuentas de cliente/proveedor que no se utilizarán en la importación - DELETE cp - FROM clientesProveedores cp - JOIN (SELECT cp.codigoCuenta - FROM clientesProveedores cp - LEFT JOIN movConta mc ON mc.codigoCuenta = cp.codigoCuenta AND mc.enlazadoSage = FALSE - WHERE mc.codigoCuenta IS NULL - GROUP BY cp.codigoCuenta - ) sub ON sub.codigoCuenta = cp.codigoCuenta ; - --- Elimina cuentas contables que no se utilizarán en la importación - DELETE pc - FROM planCuentasPGC pc - JOIN ( SELECT pc.codigoCuenta - FROM planCuentasPGC pc - LEFT JOIN movConta mc ON mc.codigoCuenta = pc.codigoCuenta AND mc.enlazadoSage = FALSE - WHERE mc.codigoCuenta IS NULL - GROUP BY pc.codigoCuenta - ) sub ON sub.codigoCuenta = pc.codigoCuenta ; - --- DUAS - UPDATE movConta m - JOIN vn.XDiario x ON x.ASIEN = m.Asiento - SET m.BaseIva1 = x.BASEEURO , - m.PorIva1 = x.IVA, - m.CuotaIva1 = CAST((x.IVA/100) * x.BASEEURO AS DECIMAL(10,2)) , - m.CodigoTransaccion1 = 56 , - m.CodigoIva1 = 22, - m.IvaDeducible1 = TRUE, - m.FechaFacturaOriginal = x.FECHA_EX, - m.SuFacturaNo = x.FACTURAEX, - m.FechaOperacion = x.FECHA_OP, - m.ImporteFactura = m.ImporteFactura + x.BASEEURO + CAST((x.IVA/100) * x.BASEEURO AS DECIMAL(10,2)) - WHERE m.CodigoCuenta = 4700000999 - AND m.enlazadoSage = FALSE - AND x.SERIE='D' - AND x.IVA = 10; - - UPDATE movConta m - JOIN vn.XDiario x ON x.ASIEN = m.Asiento - SET m.BaseIva2 = x.BASEEURO , - m.PorIva2 = x.IVA, - m.CuotaIva2 = CAST((x.IVA/100) * x.BASEEURO AS DECIMAL(10,2)), - m.CodigoTransaccion2 = 56 , - m.CodigoIva2 = 90, - m.IvaDeducible2 = TRUE, - m.ImporteFactura = m.ImporteFactura + x.BASEEURO + CAST((x.IVA/100) * x.BASEEURO AS DECIMAL(10,2)) - WHERE m.CodigoCuenta = 4700000999 - AND m.enlazadoSage = FALSE - AND x.SERIE='D' - AND x.IVA = 21; - --- Rectificativas -UPDATE movConta m - JOIN (SELECT x.ASIEN, x.FECHA_RT, x.SERIE_RT, x.FACTU_RT - FROM movConta m - JOIN vn.XDiario x ON x.ASIEN = m.Asiento - WHERE m.TipoRectificativa>0 AND - m.enlazadoSage = FALSE AND - x.FACTU_RT IS NOT NULL - GROUP BY x.ASIEN - ) sub ON sub.ASIEN = m.Asiento - SET m.EjercicioFacturaOriginal = YEAR(sub.FECHA_RT), - m.SerieFacturaOriginal = sub.SERIE_RT, - m.NumeroFacturaOriginal = sub.FACTU_RT - WHERE m.TipoRectificativa > 0 AND - m.enlazadoSage = FALSE ; - --- Exportaciones Andorras y Canarias cambia TT (la cuenta de taxCode es compartida, id:125) -UPDATE sage.movConta m - SET CodigoTransaccion1 = 15, - CodigoTransaccion2 = IF(CodigoTransaccion2 = 0, 0, 15), - CodigoTransaccion3 = IF(CodigoTransaccion3 = 0, 0, 15), - CodigoTransaccion4 = IF(CodigoTransaccion4 = 0, 0, 15) - WHERE enlazadoSage = FALSE AND - (CodigoTransaccion1 = 14 OR CodigoTransaccion2 = 14 OR CodigoTransaccion3 = 14 OR CodigoTransaccion4 = 14) AND - SiglaNAcion IN ('XC','XB'); - --- Divisas - - UPDATE sage.movConta mc - SET CodigoDivisa = 'USD', - FactorCambio = 1, - ImporteCambio = ABS( CAST( IF( ImporteDivisa <> 0 AND ImporteCambio=0, ImporteAsiento / ImporteDivisa, ImporteCambio) AS DECIMAL( 10, 2))) - WHERE (ImporteCambio <> 0 OR ImporteDivisa <> 0 OR FactorCambio <> 0) - AND enlazadoSage = FALSE ; - - UPDATE sage.movConta mc - SET importeDivisa= importeDivisa * -1 - WHERE enlazadoSage = FALSE - AND importeDivisa > 0 - AND ImporteAsiento < 0; - - - -/*-- Actualiza las facturas DUA para excluirlas del 347 y marcarlas como intracomunitarias -/*UPDATE sage.movConta mc - SET - mc.Intracomunitaria = 1, - mc.Exclusion347 = 1 -WHERE - mc.CodigoCuenta = '4700000999'; */ - - --- MARCAR EN CASO DE SER INTRACOMUNITARIA -/* -UPDATE sage.movConta mc - SET - mc.Intracomunitaria = 1 -WHERE - mc.CodigoTransaccion1 IN (20,29); -*/ - - - -- LAS FACTURAS RTECTIFICATIVAS QUE TIENEN CUENTA DE IVA 477.2 SALE CON T.T. 1, TODAS ESTAS FACTURAS DEBEN DE TENER T.T. 15 - - /*UPDATE sage.movConta mc - JOIN - (SELECT - Asiento - FROM - sage.movConta - WHERE - CodigoCuenta = 4770000002) sub ON sub.Asiento = mc.Asiento -SET - CodigoTransaccion1 = CASE - WHEN CodigoTransaccion1 = 1 THEN 15 - ELSE CodigoTransaccion1 - END, - CodigoTransaccion2 = CASE - WHEN CodigoTransaccion2 = 1 THEN 15 - ELSE CodigoTransaccion2 - END, - CodigoTransaccion3 = CASE - WHEN CodigoTransaccion3 = 1 THEN 15 - ELSE CodigoTransaccion3 - END, - CodigoTransaccion4 = CASE - WHEN CodigoTransaccion4 = 1 THEN 15 - ELSE CodigoTransaccion4 - END -WHERE - serie = 'R'; - -*/ - -/* -Nombre Tipo Longitud Descripción campo / Valor por defecto -MovPosicion Guid contador 16 Automático, no informar -Ejercicio Entero 2 -1 -- Al informar este valor se calcula automát. A partir de la fecha de asiento -CodigoEmpresa Entero 2 Empresa de Sage 200c donde va destinado el asiento -Asiento Entero Largo 4 Número de asiento -CargoAbono Texto 1 "D" - Debe / "H" - Haber -CodigoCuenta Texto 15 Cuenta contable del movimiento -Contrapartida Texto 15 Es informativo, no es necesario informarlo -FechaAsiento Fecha 8 Fecha del asiento -TipoDocumento Texto 6 -DocumentoConta Texto 9 -Comentario Texto 40 Comentario del asiento -ImporteAsiento Doble 19 Importe del movimiento -CodigoDiario Entero 2 -CodigoCanal Texto 10 Centro coste analítico (no necesario informar) -CodigoActividad Texto 1 -FechaVencimiento Fecha 8 Si se tienen que generar efectos, será la fecha de vto. Del efecto. No informar -NumeroPeriodo Entero 2 -1 -- Al informar este valor se calcula automát. A partir de la fecha de asiento -CodigoUsuario Entero 2 -FechaGrabacion Fecha 8 -TipoEntrada Texto 2 -CodigoDepartamento Texto 10 Centro coste analítico (no necesario informar) -CodigoSeccion Texto 10 Centro coste analítico (no necesario informar) -CodigoDivisa Texto 3 -ImporteCambio Doble 19 -ImporteDivisa Doble 19 -FactorCambio Doble 19 -CodigoProyecto Texto 10 Centro coste analítico (no necesario informar) -LibreN1 Entero Largo 4 Campo libre numérico -LibreN2 Entero Largo 4 Campo libre numérico -LibreA1 Texto 15 Campo libre alfanumérico -LibreA2 Texto 15 Campo libre alfanumérico -IdDelegacion Texto 10 Centro coste analítico (no necesario informar) -OrdenMovimientos Contador 4 Número de orden de cada movimiento dentro de un mismo asiento, autonumerar para cada asiento -MovCartera Guid 16 -IdProcesoIME Guid 16 guid igual para todos los registros que correspondan a una misma importación. -TipoCarteraIME Entero 2 0 - Para que no genere cartera -TipoAnaliticaIME Entero 2 -StatusTraspasadoIME Byte 1 0 - Para que quede marcado el movimiento como no importado todavía. -TipoImportacionIME Byte 1 0 - Alta -BaseIva1 Doble 19 Base para el IVA 1 (idéntico para cada posible IVA hasta el 4) (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -PorBaseCorrectora1 Doble 19 Base correctora (en caso de que la haya) para el IVA 1 (idéntico para cada posible IVA hasta el 4) (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -PorIva1 Doble 19 Porcentaje IVA 1 (idéntico para cada posible IVA hasta el 4) (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -CuotaIva1 Doble 19 Cuota IVA 1 (idéntico para cada posible IVA hasta el 4) (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -PorRecargoEquivalencia1 Doble 19 Si hay recargo - Porcentaje de recargo para el IVA 1 (idéntico para cada posible IVA hasta el 4) (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -RecargoEquivalencia1 Doble 19 Si hay recargo - Importe de Recargo para el IVA 1 (idéntico para cada posible IVA hasta el 4) (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -CodigoTransaccion1 Byte 1 Ver con dpto. de contabilidad - Depende de la naturaleza del asiento (Nacional, Intracoumunitario, etc…) (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -BaseIva2 Doble 19 0 -PorBaseCorrectora2 Doble 19 0 -PorIva2 Doble 19 0 -CuotaIva2 Doble 19 0 -PorRecargoEquivalencia2 Doble 19 0 -RecargoEquivalencia2 Doble 19 0 -CodigoTransaccion2 Byte 1 0 -BaseIva3 Doble 19 0 -PorBaseCorrectora3 Doble 19 0 -PorIva3 Doble 19 0 -CuotaIva3 Doble 19 0 -PorRecargoEquivalencia3 Doble 19 0 -RecargoEquivalencia3 Doble 19 0 -CodigoTransaccion3 Byte 1 0 -BaseIva4 Doble 19 0 -PorBaseCorrectora4 Doble 19 0 -PorIva4 Doble 19 0 -CuotaIva4 Doble 19 0 -PorRecargoEquivalencia4 Doble 19 0 -RecargoEquivalencia4 Doble 19 0 -CodigoTransaccion4 Byte 1 0 -Año Entero 2 Ejercicio de la factura en el caso de que sea un asiento de facturas. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -Serie Texto 10 Serie de la factura en el caso de que sea un asiento de facturas. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -Factura Entero Largo 4 Número de la factura en el caso de que sea un asiento de facturas. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -SuFacturaNo Texto 40 Número de la factura del proveedor para factura recibidas, en el caso de que el asiento sea de una factura. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -FechaFactura Fecha 8 Fecha de la factura en el caso de que sea un asiento de facturas. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -ImporteFactura Doble 19 Importe de la factura en el caso de que sea un asiento de facturas. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -TipoFactura Texto 1 "E" - Factura emitida / "R" - Factura Recibida - en el caso de que sea un asiento de facturas. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -CodigoCuentaFactura Texto 15 Cuenta contable del cliente / proveedor en el caso de que sea un asiento de facturas. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -CifDni Texto 13 CIF del cliente / proveedor en el caso de que sea un asiento de facturas. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -Nombre Texto 35 Nombre del cliente / proveedor en el caso de que sea un asiento de facturas. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -CodigoRetencion Entero 2 Código de retención de la factura en el caso de que sea un asiento de facturas. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -BaseRetencion Doble 19 Base de retención de la factura en el caso de que sea un asiento de facturas. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -PorRetencion Doble 19 Porcentaje de retención de la factura en el caso de que sea un asiento de facturas. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -ImporteRetencion Doble 19 Importe de retención de la factura en el caso de que sea un asiento de facturas. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -AbonoIva Entero 2 0 -CodigoActividadF Texto 1 ('') -Intracomunitaria Entero 2 0 -CodigoTerritorio Entero 2 0 -SiglaNacion Texto 2 Sigla de la nación de la factura en el caso de que sea un asiento de facturas. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -RetencionInformativa Entero 2 0 -EjercicioFacturaOriginal Entero 2 0 -SerieFacturaOriginal Texto 10 ('') -NumeroFacturaOriginal Entero Largo 4 0 -EjercicioFactura Entero 2 Ejercicio de la factura en el caso de que sea un asiento de facturas. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -CobroPagoRetencion Texto 1 ('') -FechaOperacion Fecha 8 Normalmente Fecha Factura en el caso de que sea un asiento de facturas. (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -Exclusion347 Entero 2 0 -MovIdentificadorIME Guid contador 16 (newid()) -Previsiones Texto 1 ('') -MantenerAsiento Byte 1 -1 si se quiere mantener el número de asiento que se informa en la importación o "0" si se quiere que se asigne automáticamente el asiento en Sage 200c -OrdenMovIME Entero 2 0 -Metalico347 Entero 2 0 -ClaveOperacionFactura_ Texto 1 Ver con dpto. de contabilidad - Depende de la naturaleza del asiento (Nacional, Intracoumunitario, etc…) (Solamente se informa en el movimiento de la factura - cuenta cliente / proveedor) -SerieAgrupacion_ Texto 10 ('') -NumeroFacturaInicial_ Entero Largo 4 0 -NumeroFacturaFinal_ Entero Largo 4 0 -IdAsientoExterno Texto 50 ('') -IdDiarioExterno Texto 10 ('') -IdFacturaExterno Texto 50 ('') -IdMovimiento Texto 40 ('') -IdCuadre Entero 2 ((0)) -FechaCuadre Fecha 8 (getdate()) -TipoCuadre Texto 4 ('') -AgrupacionCuadre Entero Largo 4 ((0)) -StatusSaldo Entero 2 ((0)) -StatusConciliacion Entero 2 ((0)) -CodigoConciliacion Entero Largo 4 ((0)) -FechaConciliacion Fecha 8 -TipoConciliacion Entero 2 ((0)) -IndicadorContaBanco Texto 1 ('') -Descripcion3 Texto 40 ('') -Descripcion4 Texto 40 ('') -Descripcion5 Texto 40 ('') -Descripcion6 Texto 40 ('') -Descripcion7 Texto 40 ('') -Descripcion8 Texto 50 ('') -Descripcion9 Texto 50 ('') -Descripcion2 Texto 250 ('') -Descripcion1 Texto 250 ('') -Punteo1 Entero 2 ((0)) -Punteo9 Entero 2 ((0)) -Punteo8 Entero 2 ((0)) -Punteo7 Entero 2 ((0)) -Punteo6 Entero 2 ((0)) -Punteo5 Entero 2 ((0)) -Punteo4 Entero 2 ((0)) -Punteo3 Entero 2 ((0)) -Punteo2 Entero 2 ((0)) -CodigoIva1 Entero 2 ((0)) -CodigoIva2 Entero 2 ((0)) -CodigoIva3 Entero 2 ((0)) -CodigoIva4 Entero 2 ((0)) -CriterioIva Byte 1 ((0)) -FechaMaxVencimiento Fecha 8 -TipoCriterioCaja Byte 1 ((0)) -MovFacturaOrigenIME Texto 50 ('') -IdFacturaExternoFinal Texto 50 ('') -IdFacturaExternoInicial Texto 50 ('') -IdFacturaExternoOriginal Texto 50 ('') -NumFacturasExternoAgrupacion Entero Largo 4 ((0)) -CodigoMedioCobro Texto 1 ('') -MedioCobro Texto 31 ('') -IvaDeducible1 Entero 2 ((-1)) -IvaDeducible2 Entero 2 ((-1)) -IvaDeducible3 Entero 2 ((-1)) -IvaDeducible4 Entero 2 ((-1)) -TipoRectificativa Entero 2 ((0)) -FechaFacturaOriginal Fecha 8 -BaseImponibleOriginal Doble 19 ((0)) -CuotaIvaOriginal Doble 19 ((0)) -ClaseAbonoRectificativas Entero 2 ((0)) -RecargoEquivalenciaOriginal Doble 19 ((0)) -ObjetoFactura Texto 500 ('') -*/ END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -22333,14 +18895,14 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `pgc_add`(vCompanyFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `pgc_add`(vCompanyFk INT) BEGIN /** - * Añade cuentas del plan general contable para exportarlos a Sage + * Añade cuentas del plan general contable para exportarlos a Sage * @vCompanyFk Empresa de la que se quiere trasladar datos */ TRUNCATE TABLE planCuentasPGC; @@ -22350,29 +18912,25 @@ BEGIN CodigoCuenta, Cuenta, ClienteOProveedor) - SELECT * - FROM (SELECT IF(@@hostname = 'db', c.companyCode, companyCodeTest) companyFk, + SELECT * + FROM (SELECT company_getCode(vCompanyFk) companyFk, e.id accountFk, UCASE(e.name), '' FROM vn.expence e - JOIN vn.company c - WHERE c.id = vCompanyFk - UNION - SELECT IF(@@hostname = 'db', c.companyCode, companyCodeTest), - b.account, + UNION + SELECT company_getCode(vCompanyFk), + b.account, UCASE(b.bank), - '' + '' FROM vn.bank b - JOIN vn.company c - WHERE c.id = vCompanyFk - AND b.isActive + WHERE b.isActive AND b.`account` - UNION + UNION SELECT CodigoEmpresa, CodigoCuenta, Nombre, - ClienteOProveedor + ClienteOProveedor FROM clientesProveedores)sub GROUP BY companyFk, accountFk; END ;; @@ -22381,799 +18939,12 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `planCuentasPgcAdd__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `planCuentasPgcAdd__`() -BEGIN - -TRUNCATE TABLE planCuentasPGC; - -REPLACE INTO planCuentasPGC( - CodigoEmpresa, - CodigoCuenta, - Cuenta, - ClienteOProveedor - ) - SELECT codigoEmpresa, CodigoCuenta, Cuenta, ClienteOProveedor - FROM - ( - SELECT - IF (@@hostname = 'db', c.companyCode, companyCodeTest) AS codigoEmpresa, - e.id AS CodigoCuenta, - UCASE(e.name) AS Cuenta, - '' AS ClienteOProveedor - FROM - (vn.expence e - JOIN vn.company c) - WHERE - c.companyCode - GROUP BY e.id - - UNION - SELECT - IF (@@hostname = 'db', c.companyCode, companyCodeTest) AS codigoEmpresa, - b.account AS CodigoCuenta, - UCASE(b.bank) AS Cuenta, - '' AS ClienteOProveedor - FROM - (vn.bank b - JOIN vn.company c) - WHERE (c.companyCode AND b.isActive) - AND b.account - GROUP BY b.account - UNION - SELECT - codigoEmpresa, - CodigoCuenta, - Nombre AS Cuenta, - ClienteOProveedor - FROM clientesProveedores - GROUP BY CodigoCuenta - ) pgc - GROUP BY CodigoCuenta; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `XDiario_movConta_IVA_InvoiceInAdd_Manager__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `XDiario_movConta_IVA_InvoiceInAdd_Manager__`() -BEGIN - DECLARE done BOOL DEFAULT FALSE; - DECLARE vInvoiceFk INT; - DECLARE vXDiarioFk INT; - DECLARE vDated DATE; - DECLARE rs CURSOR FOR - SELECT IFNULL(x.CLAVE,x.FACTURA) invoiceInFk, x.id XDiarioFk - FROM vn2008.XDiario x - JOIN(SELECT DISTINCT (x.ASIEN) - FROM vn2008.XDiario x - LEFT JOIN vn.invoiceIn ii ON x.CLAVE = ii.id - LEFT JOIN vn.invoiceInTax it ON it.invoiceInFk = ii.id - WHERE(it.taxTypeSageFk IS NOT NULL OR x.SERIE='D') AND - x.enlazadoSage = FALSE AND - x.FECHA >= vDated - ) sub ON sub.ASIEN =x.ASIEN -- Elimina las Facturas con IVA 0 (-) no se trasladan a sage - WHERE x.enlazadoSage = FALSE AND - x.FECHA >= vDated AND - x.CLAVE IS NOT NULL ; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - - SELECT CONCAT(YEAR(CURDATE()), "-01-01") INTO vDated; - SELECT "2021-01-01" INTO vDated; - DROP TEMPORARY TABLE IF EXISTS tmp.invoiceDua; - CREATE TEMPORARY TABLE tmp.invoiceDua - SELECT id - FROM vn2008.XDiario x - WHERE ASIEN IN (SELECT ASIEN - FROM vn2008.XDiario x - WHERE x.enlazadoSage = FALSE AND - x.SUBCTA = '4700000999' AND - x.FECHA >= vDated - ) AND - NOT CONTRA <=> "4330002067"; - - DROP TEMPORARY TABLE IF EXISTS tmp.invoiceInList; - CREATE TEMPORARY TABLE tmp.invoiceInList - SELECT i.id id, - i.supplierRef supplierRef, - i.serial serial, - i.supplierFk supplierFk, - i.issued issued, - IF(expenceFkDeductible, FALSE, i.isVatDeductible) isVatDeductible, - i.serialNumber serialNumber, - IF(c.code = "EUR", '',c.code) currencyFk - FROM vn.invoiceIn i - JOIN vn.currency c ON c.id = i.currencyFk - WHERE i.bookEntried >= vDated - UNION ALL - SELECT d.id , - d.code , - 'D' , - d.companyFk , - d.issued , - FALSE, - d.id, - '' -- EUROS - FROM vn.dua d - WHERE d.issued IS NOT NULL AND - code IS NOT NULL; - - OPEN rs; - FETCH rs INTO vInvoiceFk, vXDiarioFk; - WHILE NOT done DO - CALL XDiario_movConta_IVA_InvoiceInAdd(vInvoiceFk, vXDiarioFk); - FETCH rs INTO vInvoiceFk, vXDiarioFk; - END WHILE; - CLOSE rs; - - DROP TEMPORARY TABLE tmp.invoiceDua; - DROP TEMPORARY TABLE tmp.invoiceInList; - - -- ASIENTOS CON IVA SOPORTADO 472. y 477. hay que informar 2 líneas la info de facturas una como tipo de factura emitida y otra como recibida - DROP TEMPORARY TABLE IF EXISTS tmp.XDiario_movConta_IVA; - CREATE TEMPORARY TABLE tmp.XDiario_movConta_IVA - SELECT - sub3.id, - mc.CodigoDivisa, - mc.BaseIva1, - mc.PorBaseCorrectora1, - mc.PorIva1, - mc.CuotaIva1, - mc.PorRecargoEquivalencia1, - mc.RecargoEquivalencia1, - mc.CodigoTransaccion1, - mc.CodigoIva1, - mc.BaseIva2, - mc.PorBaseCorrectora2, - mc.PorIva2, - mc.CuotaIva2, - mc.PorRecargoEquivalencia2, - mc.RecargoEquivalencia2, - mc.CodigoTransaccion2, - mc.CodigoIva2, - mc.BaseIva3, - mc.PorBaseCorrectora3, - mc.PorIva3, - mc.CuotaIva3, - mc.PorRecargoEquivalencia3, - mc.RecargoEquivalencia3, - mc.CodigoTransaccion3, - mc.CodigoIva3, - mc.BaseIva4, - mc.PorBaseCorrectora4, - mc.PorIva4, - mc.CuotaIva4, - mc.PorRecargoEquivalencia4, - mc.RecargoEquivalencia4, - mc.CodigoTransaccion4, - mc.CodigoIva4, - mc.Año, - mc.Serie, - mc.Factura, - mc.SuFacturaNo, - mc.FechaFactura, - mc.ImporteFactura, - 'E', - mc.CodigoCuentaFactura, - mc.CifDni, - mc.Nombre, - mc.CodigoRetencion, - mc.BaseRetencion, - mc.PorRetencion, - mc.ImporteRetencion, - mc.SiglaNacion, - mc.EjercicioFactura, - x.FECHA, - mc.Exclusion347, - mc.MantenerAsiento, - mc.Metalico347, - mc.ClaveOperacionFactura, - mc.TipoRectificativa, - mc.FechaFacturaOriginal, - mc.CuotaIvaOriginal, - mc.BaseImponibleOriginal, - mc.ClaseAbonoRectificativas, - mc.RecargoEquivalenciaOriginal, - mc.LibreA1, - mc.IvaDeducible1, - mc.IvaDeducible2, - mc.IvaDeducible3, - mc.IvaDeducible4, - mc.FechaGrabacion, - mc.Intracomunitaria, - mc.moveData - FROM sage.XDiario_movConta_IVA mc - JOIN vn.XDiario x ON x.id = mc.id - JOIN (SELECT x.ASIEN, x.id - FROM vn.XDiario x - JOIN(SELECT DISTINCT(x.ASIEN) ASIEN - FROM (SELECT DISTINCT(ASIEN) - FROM vn.XDiario x - WHERE SUBCTA LIKE '472%' AND - x.enlazadoSage = FALSE AND - x.FECHA >= vDated - ) sub JOIN vn.XDiario x ON x.ASIEN = sub.ASIEN - WHERE x.SUBCTA LIKE '477%' - )sub2 ON sub2.ASIEN = x.ASIEN - WHERE x.CONTRA IS NOT NULL AND x.SUBCTA LIKE '477%' - GROUP BY x.ASIEN - )sub3 ON sub3.ASIEN = x.ASIEN; - - INSERT INTO sage.XDiario_movConta_IVA - (`id`, - `CodigoDivisa`, - `BaseIva1`, - `PorBaseCorrectora1`, - `PorIva1`, - `CuotaIva1`, - `PorRecargoEquivalencia1`, - `RecargoEquivalencia1`, - `CodigoTransaccion1`, - `CodigoIva1`, - `BaseIva2`, - `PorBaseCorrectora2`, - `PorIva2`, - `CuotaIva2`, - `PorRecargoEquivalencia2`, - `RecargoEquivalencia2`, - `CodigoTransaccion2`, - `CodigoIva2`, - `BaseIva3`, - `PorBaseCorrectora3`, - `PorIva3`, - `CuotaIva3`, - `PorRecargoEquivalencia3`, - `RecargoEquivalencia3`, - `CodigoTransaccion3`, - `CodigoIva3`, - `BaseIva4`, - `PorBaseCorrectora4`, - `PorIva4`, - `CuotaIva4`, - `PorRecargoEquivalencia4`, - `RecargoEquivalencia4`, - `CodigoTransaccion4`, - `CodigoIva4`, - `Año`, - `Serie`, - `Factura`, - `SuFacturaNo`, - `FechaFactura`, - `ImporteFactura`, - `TipoFactura`, - `CodigoCuentaFactura`, - `CifDni`, - `Nombre`, - `CodigoRetencion`, - `BaseRetencion`, - `PorRetencion`, - `ImporteRetencion`, - `SiglaNacion`, - `EjercicioFactura`, - `FechaOperacion`, - `Exclusion347`, - `MantenerAsiento`, - `Metalico347`, - `ClaveOperacionFactura`, - `TipoRectificativa`, - `FechaFacturaOriginal`, - `CuotaIvaOriginal`, - `BaseImponibleOriginal`, - `ClaseAbonoRectificativas`, - `RecargoEquivalenciaOriginal`, - `LibreA1`, - `IvaDeducible1`, - `IvaDeducible2`, - `IvaDeducible3`, - `IvaDeducible4`, - `FechaGrabacion`, - `Intracomunitaria`, - `moveData`) - SELECT * - FROM tmp.XDiario_movConta_IVA; - DROP TEMPORARY TABLE tmp.XDiario_movConta_IVA; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `XDiario_movConta_IVA_InvoiceInAdd__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `XDiario_movConta_IVA_InvoiceInAdd__`(IN vInvoiceInFk INT, IN vXDiarioId INT) -BEGIN - - DECLARE vDone BOOL DEFAULT FALSE; - DECLARE vBase DOUBLE; - DECLARE vVat DOUBLE; - DECLARE vRate DOUBLE; - DECLARE vTransactionCode INT; - DECLARE vCounter INT DEFAULT 0; - DECLARE vTransactionCodeOld INT; - DECLARE vTaxCode INT; - DECLARE vTaxCodeOld INT; - DECLARE vOperationCode VARCHAR(1); - DECLARE vIsIntracommunity BOOL DEFAULT FALSE; - DECLARE vDuaExcluded INT; - - DECLARE rs CURSOR FOR -- IVA - SELECT it.taxableBase BASEEURO, - CAST((( it.taxableBase / 100) * t.PorcentajeIva) AS DECIMAL (10,2)) vat, - t.PorcentajeIva rate, - it.transactionTypeSageFk transactionCode, - it.taxTypeSageFk taxCode, - t.isIntracommunity, - tt.ClaveOperacionDefecto operationCode, - id.id - FROM vn.invoiceIn i - JOIN vn.invoiceInTax it ON it.InvoiceInFk = i.id - JOIN TiposIva t ON t.CodigoIva = it.taxTypeSageFk - JOIN TiposTransacciones tt ON tt.CodigoTransaccion = it.transactionTypeSageFk - LEFT JOIN tmp.invoiceDua id ON id.id = vXDiarioId - WHERE i.id = vInvoiceInFk - AND i.id> 70000; -- los DUAS no son vInvoiceInFk, pero se pasan en el mismo parametro comparten id en tablas distintas de InvoiceIN (100000) dua(20000) - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - DELETE FROM XDiario_movConta_IVA - WHERE id = vXDiarioId; - - INSERT INTO XDiario_movConta_IVA(id, LibreA1) - VALUES (vXDiarioId, vInvoiceInFk); - - OPEN rs; - FETCH rs INTO vBase, - vVat, - vRate, - vTransactionCode, - vTaxCode, - vIsIntracommunity, - vOperationCode, - vDuaExcluded; - - SET vTransactionCodeOld=vTransactionCode; - SET vTaxCodeOld=vTaxCode; - - WHILE NOT vDone DO - IF vOperationCode IS NOT NULL THEN - UPDATE XDiario_movConta_IVA - SET ClaveOperacionFactura = vOperationCode - WHERE id = vXDiarioId; - END IF; - - IF vTransactionCode IS NULL THEN - SET vTransactionCode = vTransactionCodeOld; - END IF; - - IF vTaxCodeOld IS NULL THEN - SET vTaxCode = vTaxCodeOld; - END IF; - - SET vCounter = vCounter + 1; - CASE vCounter - WHEN 1 THEN - UPDATE XDiario_movConta_IVA - SET BaseIva1 = vBase, - PorIva1 = vRate, - CuotaIva1 = vVat, - CodigoTransaccion1 = vTransactionCode, - CodigoIva1 = vTaxCode - WHERE id = vXDiarioId; - WHEN 2 THEN - UPDATE XDiario_movConta_IVA - SET BaseIva2 = vBase, - PorIva2 = vRate, - CuotaIva2 = vVat, - CodigoTransaccion2 = vTransactionCode, - CodigoIva2 = vTaxCode - WHERE id = vXDiarioId; - WHEN 3 THEN - UPDATE XDiario_movConta_IVA - SET BaseIva3 = vBase, - PorIva3 = vRate, - CuotaIva3 = vVat, - CodigoTransaccion3 = vTransactionCode, - CodigoIva3 = vTaxCode - WHERE id = vXDiarioId; - WHEN 4 THEN - UPDATE XDiario_movConta_IVA - SET BaseIva4 = vBase, - PorIva4 = vRate, - CuotaIva4 = vVat, - CodigoTransaccion4 = vTransactionCode, - CodigoIva4 = vTaxCode - WHERE id = vXDiarioId; - ELSE - SELECT vXDiarioId INTO vXDiarioId; - END CASE; - - IF vIsIntracommunity THEN - UPDATE XDiario_movConta_IVA - SET Intracomunitaria = TRUE - WHERE id = vXDiarioId; - END IF; - - SET vTransactionCodeOld=vTransactionCode; - SET vTaxCodeOld=vTaxCode; - - FETCH rs INTO vBase, - vVat, - vRate, - vTransactionCode, - vTaxCode, - vIsIntracommunity, - vOperationCode, - vDuaExcluded; - END WHILE; - CLOSE rs; - - UPDATE XDiario_movConta_IVA xmi - JOIN tmp.invoiceInList ii ON ii.id = vInvoiceInFk - JOIN vn2008.XDiario x ON x.id = xmi.id - LEFT JOIN tmp.invoiceDua id ON id.id = xmi.id - JOIN vn.supplier s ON s.id = ii.supplierFk - JOIN Naciones n ON n.countryFk = s.countryFk - SET xmi.CodigoDivisa = ii.currencyFk, - xmi.Año = YEAR(ii.issued), - xmi.Serie = ii.serial, - xmi.Factura = ii.serialNumber, -- x.FACTURA, DUAS¿? - xmi.FechaFactura = ii.issued, - xmi.ImporteFactura = IFNULL(xmi.BaseIva1, 0) + IFNULL(xmi.CuotaIva1, 0) + - IFNULL(xmi.BaseIva2, 0) + IFNULL(xmi.CuotaIva2, 0) + - IFNULL(xmi.BaseIva3, 0) + IFNULL(xmi.CuotaIva3, 0) + - IFNULL(xmi.BaseIva4, 0) + IFNULL(xmi.CuotaIva4, 0), - xmi.TipoFactura = IF(id.id,IF( ii.serial = 'D', 'R','I'), 'R'), -- MARCAR I para informativa - xmi.CodigoCuentaFactura = x.SUBCTA, - xmi.CifDni = IF(LEFT(TRIM(s.nif),2) = n.SiglaNacion, SUBSTRING(TRIM(s.nif),3) ,s.nif), - xmi.Nombre = s.name, - xmi.SiglaNacion = n.SiglaNacion, - xmi.EjercicioFactura = YEAR(ii.issued), - xmi.FechaOperacion = ii.issued, - xmi.MantenerAsiento = TRUE, - xmi.SuFacturaNo = ii.supplierRef, - xmi.IvaDeducible1 = IF(id.id, FALSE, IF(IFNULL(xmi.BaseIva1, FALSE) = FALSE, FALSE, ii.isVatDeductible)), - xmi.IvaDeducible2 = IF(id.id, FALSE, IF(IFNULL(xmi.BaseIva2, FALSE) = FALSE, FALSE, ii.isVatDeductible)), - xmi.IvaDeducible3 = IF(id.id, FALSE, IF(IFNULL(xmi.BaseIva3, FALSE) = FALSE, FALSE, ii.isVatDeductible)), - xmi.IvaDeducible4 = IF(id.id, FALSE, IF(IFNULL(xmi.BaseIva4, FALSE) = FALSE, FALSE, ii.isVatDeductible)), - xmi.FechaFacturaOriginal = x.FECHA_EX - WHERE xmi.id = vXDiarioId; - - -- RETENCIONES - - UPDATE XDiario_movConta_IVA xmi - JOIN vn.invoiceIn ii ON ii.id = vInvoiceInFk - JOIN vn2008.XDiario x ON x.id = xmi.id - JOIN vn.supplier s ON s.id = supplierFk - JOIN vn.invoiceInTax iit ON iit.invoiceInFk = ii.id - JOIN TiposRetencion t ON t.CodigoRetencion = ii.withholdingSageFk - JOIN (SELECT SUM(BASEEURO) taxableBase, SUM(EURODEBE) taxBase - FROM vn.XDiario - WHERE BASEEURO <> 0 AND ASIEN = (SELECT ASIEN FROM vn.XDiario WHERE id = vXDiarioId) - )sub - SET xmi.CodigoRetencion = t.CodigoRetencion, - xmi.ClaveOperacionFactura = IF( t.Retencion = 'ARRENDAMIENTO Y SUBARRENDAMIENTO', 'R', xmi.ClaveOperacionFactura), - xmi.BaseRetencion = IF (t.CodigoRetencion = 2, sub.taxableBase + sub.taxBase, sub.taxableBase), - xmi.PorRetencion = t.PorcentajeRetencion, - xmi.ImporteRetencion = iit.taxableBase * - 1 - WHERE xmi.id = vXDiarioId AND iit.expenceFk = 4751000000; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `XDiario_movConta_IVA_InvoiceOutAdd_Manager__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `XDiario_movConta_IVA_InvoiceOutAdd_Manager__`() -BEGIN - - DECLARE done BOOL DEFAULT FALSE; - DECLARE vInvoiceFk INT; - DECLARE vXDiarioFk INT; - DECLARE vDated DATE; - - DECLARE rs CURSOR FOR - SELECT io.id invoiceOutFk, x.XDiarioFk - FROM vn.invoiceOut io - JOIN (SELECT MIN(id) XDiarioFk, refFk - FROM vn2008.XDiario x - JOIN (SELECT x.ASIEN, CONCAT(x.SERIE,x.FACTURA) AS refFk - FROM vn2008.XDiario x - JOIN vn.company c ON c.id = x.empresa_id - WHERE enlazadoSage = FALSE AND - x.FACTURA AND - c.companyCode AND - x.FECHA >= vDated - GROUP BY refFk - ) a ON a.ASIEN = x.ASIEN - GROUP BY refFk - ) x ON x.refFk = io.ref; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - SELECT CONCAT(YEAR(CURDATE()), "-01-01") INTO vDated; -SELECT "2021-01-01" INTO vDated; - OPEN rs; - FETCH rs INTO vInvoiceFk, vXDiarioFk; - WHILE NOT done DO - CALL XDiario_movConta_IVA_InvoiceOutAdd(vInvoiceFk, vXDiarioFk); - FETCH rs INTO vInvoiceFk, vXDiarioFk; - END WHILE; - CLOSE rs; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `XDiario_movConta_IVA_InvoiceOutAdd__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `XDiario_movConta_IVA_InvoiceOutAdd__`(IN vInvoiceOutFk INT, IN vXDiarioId INT) -BEGIN - - DECLARE vDone BOOL DEFAULT FALSE; - DECLARE vBase DOUBLE; - DECLARE vVat DOUBLE; - DECLARE vRate DOUBLE; - DECLARE vIs340 DOUBLE; - DECLARE vIs347 DOUBLE; - DECLARE vVatRE DOUBLE; - DECLARE vRateRE DOUBLE; - DECLARE vTransactionCode INT; - DECLARE vCounter INT DEFAULT 0; - DECLARE vInvoiceOutCorrectedFk INT; - DECLARE vTaxCode INT; - DECLARE vIsIntracommunity BOOL DEFAULT FALSE; - DECLARE vOperationCode VARCHAR(1); - - -- IVA - DECLARE rs CURSOR FOR - SELECT oit.taxableBase, - oit.vat, - pgc.rate, - pgc.mod340, - pgc.mod347, - pgcRE.rate as rateRE, - oitRE.vat as vatRE, - tc.transactionCode , - tc.taxCode, - tc.isIntracommunity, - tc.operationcode - FROM vn.invoiceOutTax oit - JOIN vn.pgc ON pgc.code = oit.pgcFk - LEFT JOIN vn.pgcEqu e ON e.vatFk = oit.pgcFk - LEFT JOIN vn.pgcEqu eRE ON eRE.equFk = oit.pgcFk - LEFT JOIN vn.invoiceOutTax oitRE ON oitRE.invoiceOutFk = oit.invoiceOutFk AND oitRE.pgcFk = e.equFk - LEFT JOIN vn.pgc pgcRE ON pgcRE.code = oitRE.pgcFk - LEFT JOIN vn.taxCode tc ON tc.code = pgc.code COLLATE 'utf8_general_ci' - WHERE eRE.equFk Is NULL - AND oit.invoiceOutFk = vInvoiceOutFk - GROUP by pgc.code; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - DELETE FROM XDiario_movConta_IVA - WHERE id = vXDiarioId; - - INSERT INTO XDiario_movConta_IVA(id) - VALUES (vXDiarioId); - OPEN rs; - FETCH rs INTO vBase, - vVat, - vRate, - vIs340, - vIs347, - vVatRE, - vRateRE, - vTransactionCode, - vTaxCode, - vIsIntracommunity, - vOperationCode; - - WHILE NOT vDone DO - - IF vOperationCode IS NOT NULL THEN - UPDATE XDiario_movConta_IVA - SET ClaveOperacionFactura = vOperationCode - WHERE id = vXDiarioId; - END IF; - - SET vCounter = vCounter + 1; - CASE vCounter - WHEN 1 THEN - UPDATE XDiario_movConta_IVA - SET BaseIva1 = vBase, - PorIva1 = vRate, - CuotaIva1 = vVat, - PorRecargoEquivalencia1 = vVatRE, - RecargoEquivalencia1 = vRateRE, - CodigoTransaccion1 = vTransactionCode, - CodigoIva1 = vTaxCode - WHERE id = vXDiarioId; - WHEN 2 THEN - UPDATE XDiario_movConta_IVA - SET BaseIva2 = vBase, - PorIva2 = vRate, - CuotaIva2 = vVat, - PorRecargoEquivalencia2 = vVatRE, - RecargoEquivalencia2 =vRateRE, - CodigoTransaccion2 = vTransactionCode, - CodigoIva2 = vTaxCode - WHERE id = vXDiarioId; - WHEN 3 THEN - UPDATE XDiario_movConta_IVA - SET BaseIva3 = vBase, - PorIva3 = vRate, - CuotaIva3 = vVat, - PorRecargoEquivalencia3 = vVatRE, - RecargoEquivalencia3 = vRateRE, - CodigoTransaccion3 = vTransactionCode, - CodigoIva3 = vTaxCode - WHERE id = vXDiarioId; - WHEN 4 THEN - UPDATE XDiario_movConta_IVA - SET BaseIva4 = vBase, - PorIva4 = vRate, - CuotaIva4 = vVat, - PorRecargoEquivalencia4 = vVatRE, - RecargoEquivalencia4 = vRateRE, - CodigoTransaccion4 = vTransactionCode, - CodigoIva4 = vTaxCode - WHERE id = vXDiarioId; - END CASE; - - UPDATE XDiario_movConta_IVA - SET Exclusion347 = NOT vIs347 - WHERE id = vXDiarioId; - - IF vIsIntracommunity THEN - UPDATE XDiario_movConta_IVA - SET Intracomunitaria = TRUE - WHERE id = vXDiarioId; - END IF; - - FETCH rs INTO vBase, - vVat, - vRate, - vIs340, - vIs347, - vVatRE, - vRateRE, - vTransactionCode, - vTaxCode, - vIsIntracommunity, - vOperationCode; - END WHILE; - CLOSE rs; - -- OTROS CAMPOS RELATIVOS A LAS FACTURAS - UPDATE XDiario_movConta_IVA xmi - JOIN vn.invoiceOut io ON io.id = vInvoiceOutFk - LEFT JOIN vn.invoiceCorrection ic ON ic.correctedFk = vInvoiceOutFk - LEFT JOIN vn.invoiceOut ioc ON ioc.id = ic.correctingFk - JOIN vn2008.XDiario x ON x.id = xmi.id - JOIN vn.client c ON c.id = io.clientFk - JOIN Naciones n ON n.countryFk = c.countryFk - JOIN vn.invoiceOutSerial ios ON ios.code = io.serial - JOIN vn.taxArea ta ON ta.code = ios.taxAreaFk - JOIN (SELECT SERIE - FROM vn2008.XDiario - WHERE ASIEN = (SELECT ASIEN - FROM vn2008.XDiario - WHERE id = vXDiarioId - ) - AND SERIE IS NOT NULL - ) sub - SET xmi.Año = YEAR(io.issued), - xmi.Serie = sub.SERIE, - xmi.Factura = RIGHT(io.ref, LENGTH(io.ref) -1), - xmi.FechaFactura = io.issued, - xmi.ImporteFactura = io.amount, - xmi.TipoFactura = "E", - xmi.CodigoCuentaFactura = x.SUBCTA, - xmi.CifDni = c.fi, - xmi.Nombre = SUBSTR(c.socialName,1,35), - xmi.SiglaNacion = n.SiglaNacion, - xmi.EjercicioFactura = YEAR(io.issued), - xmi.FechaOperacion = io.issued, - xmi.MantenerAsiento = TRUE, - xmi.FechaFacturaOriginal = x.FECHA_EX - WHERE xmi.id = vXDiarioId; - - -- RECTIFICATIVAS - SELECT correctedFk - INTO vInvoiceOutCorrectedFk - FROM vn.invoiceCorrection - WHERE correctingFk = vInvoiceOutFk; - - IF vInvoiceOutCorrectedFk THEN - UPDATE XDiario_movConta_IVA xmi - JOIN vn.invoiceOut ioc ON ioc.id = vInvoiceOutCorrectedFk - JOIN vn.invoiceCorrection ic ON ic.correctedFk = vInvoiceOutCorrectedFk - JOIN vn.invoiceOut io ON io.id = vInvoiceOutCorrectedFk - JOIN ( - SELECT sum(IF(IFNULL(e.vatFk,1),iot.taxableBase,0)) AS Base, - sum(IF(IFNULL(e.vatFk,1),iot.vat,0)) AS CuotaIva, - sum(IF(IFNULL(e.vatFk,1),0,iot.vat)) as RE - FROM vn.invoiceOutTax iot - LEFT JOIN vn.pgcEqu e ON e.vatFk = iot.pgcFk - WHERE iot.invoiceOutFk = vInvoiceOutCorrectedFk - ) iocTAX - SET xmi.TipoRectificativa = 2, - xmi.ClaseAbonoRectificativas = 1, -- ic.invoiceCorrectionTypeFk no coincide con las opcioens de SAGE * - xmi.FechaFacturaOriginal = io.issued, - xmi.FechaOperacion = io.issued, - xmi.BaseImponibleOriginal = iocTAX.Base, - xmi.CuotaIvaOriginal = iocTAX.CuotaIva, - xmi.RecargoEquivalenciaOriginal = RE, - xmi.ClaveOperacionFactura = 'D' - WHERE xmi.id = vXDiarioId; - /* - Envases y embalajes / descuentos y bonificaciones / eror fundado - Concurso de acreedores - Creditos incobrables - resto de tectificativas - Restificativas de facturas simplificadas - */ - END IF; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -- -- Current Database: `salix` -- -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `salix` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `salix` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci */; USE `salix`; @@ -23186,17 +18957,17 @@ DROP TABLE IF EXISTS `ACL`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ACL` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `model` varchar(512) CHARACTER SET utf8 DEFAULT NULL, - `property` varchar(512) CHARACTER SET utf8 DEFAULT NULL, - `accessType` set('READ','WRITE','*') COLLATE utf8_unicode_ci DEFAULT 'READ', - `permission` set('DENY','ALLOW') COLLATE utf8_unicode_ci DEFAULT 'ALLOW', - `principalType` set('ROLE','USER') COLLATE utf8_unicode_ci DEFAULT 'ROLE', - `principalId` varchar(512) CHARACTER SET utf8 DEFAULT NULL, + `model` varchar(512) CHARACTER SET utf8mb3 DEFAULT NULL, + `property` varchar(512) CHARACTER SET utf8mb3 DEFAULT NULL, + `accessType` set('READ','WRITE','*') COLLATE utf8mb3_unicode_ci DEFAULT 'READ', + `permission` set('DENY','ALLOW') COLLATE utf8mb3_unicode_ci DEFAULT 'ALLOW', + `principalType` set('ROLE','USER') COLLATE utf8mb3_unicode_ci DEFAULT 'ROLE', + `principalId` varchar(512) CHARACTER SET utf8mb3 DEFAULT NULL, PRIMARY KEY (`id`), KEY `model_ix` (`model`(255)) COMMENT 'ernesto 3.8.2020. Mysql pide indices', KEY `property_ix` (`property`(255)), KEY `accessType_ix` (`accessType`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -23207,13 +18978,13 @@ DROP TABLE IF EXISTS `AccessToken`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `AccessToken` ( - `id` varchar(255) CHARACTER SET utf8 NOT NULL, + `id` varchar(255) CHARACTER SET utf8mb3 NOT NULL, `ttl` int(11) DEFAULT NULL, - `scopes` varchar(255) CHARACTER SET utf8 DEFAULT NULL, + `scopes` varchar(255) CHARACTER SET utf8mb3 DEFAULT NULL, `created` datetime DEFAULT NULL, `userId` int(11) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -23296,9 +19067,9 @@ DROP TABLE IF EXISTS `defaultViewConfig`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `defaultViewConfig` ( - `tableCode` varchar(25) COLLATE utf8_unicode_ci NOT NULL, - `columns` text COLLATE utf8_unicode_ci NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='The default configuration of columns for views'; + `tableCode` varchar(25) COLLATE utf8mb3_unicode_ci NOT NULL, + `columns` text COLLATE utf8mb3_unicode_ci NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='The default configuration of columns for views'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -23310,12 +19081,12 @@ DROP TABLE IF EXISTS `fieldAcl`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `fieldAcl` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `model` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `property` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `actionType` set('insert','update','*') COLLATE utf8_unicode_ci DEFAULT '*', - `role` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `model` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `property` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `actionType` set('insert','update','*') COLLATE utf8mb3_unicode_ci DEFAULT '*', + `role` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -23326,9 +19097,9 @@ DROP TABLE IF EXISTS `module`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `module` ( - `code` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -23341,11 +19112,11 @@ DROP TABLE IF EXISTS `userConfigView`; CREATE TABLE `userConfigView` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userFk` int(10) unsigned NOT NULL, - `tableCode` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `configuration` text COLLATE utf8_unicode_ci, + `tableCode` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `configuration` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uniqueUser_TableCode` (`userFk`,`tableCode`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -23360,7 +19131,7 @@ CREATE TABLE `userConfigView` ( -- Current Database: `stock` -- -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `stock` /*!40100 DEFAULT CHARACTER SET utf8 */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `stock` /*!40100 DEFAULT CHARACTER SET utf8mb3 */; USE `stock`; @@ -23376,7 +19147,7 @@ CREATE TABLE `inbound` ( `tableName` set('buy','sale') NOT NULL, `tableId` int(10) unsigned NOT NULL, `isSync` tinyint(4) NOT NULL, - `isPicked` tinyint(4) NOT NULL DEFAULT '0', + `isPicked` tinyint(4) NOT NULL DEFAULT 0, `warehouseFk` int(10) unsigned NOT NULL, `itemFk` int(10) unsigned NOT NULL, `dated` datetime NOT NULL, @@ -23387,24 +19158,23 @@ CREATE TABLE `inbound` ( UNIQUE KEY `source` (`tableName`,`tableId`), KEY `warehouseFk` (`warehouseFk`,`itemFk`,`dated`,`expired`,`available`), KEY `isSync` (`isSync`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -ALTER DATABASE `stock` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `stock`.`inbound_beforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `stock`.`inbound_beforeInsert` BEFORE INSERT ON `inbound` - FOR EACH ROW + FOR EACH ROW BEGIN - SET NEW.isPicked = NEW.isPicked OR NEW.dated < CURDATE(); - + SET NEW.isPicked = NEW.isPicked OR NEW.dated < util.VN_CURDATE(); + CALL visible_log( NEW.isPicked, NEW.warehouseFk, @@ -23417,19 +19187,18 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `stock` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `stock`.`inbound_afterDelete` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `stock`.`inbound_afterDelete` AFTER DELETE ON `inbound` - FOR EACH ROW + FOR EACH ROW BEGIN UPDATE outbound o JOIN inboundPick ou ON ou.outboundFk = o.id @@ -23467,7 +19236,7 @@ CREATE TABLE `inboundPick` ( PRIMARY KEY (`inboundFk`,`outboundFk`,`quantity`), UNIQUE KEY `buyFk` (`inboundFk`,`outboundFk`), KEY `saleFk` (`outboundFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -23484,7 +19253,7 @@ CREATE TABLE `log` ( `tableId` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `tableName` (`tableName`,`tableId`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -23499,7 +19268,7 @@ CREATE TABLE `outbound` ( `tableName` set('sale','buy','orderRow') NOT NULL, `tableId` int(10) unsigned NOT NULL, `isSync` tinyint(3) unsigned NOT NULL, - `isPicked` tinyint(4) NOT NULL DEFAULT '0', + `isPicked` tinyint(4) NOT NULL DEFAULT 0, `warehouseFk` int(10) unsigned NOT NULL, `itemFk` int(10) unsigned NOT NULL, `dated` datetime NOT NULL, @@ -23512,25 +19281,24 @@ CREATE TABLE `outbound` ( KEY `warehouseFk` (`warehouseFk`,`itemFk`,`dated`), KEY `expired` (`expired`), KEY `isSync` (`isSync`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -ALTER DATABASE `stock` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `stock`.`outbound_beforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `stock`.`outbound_beforeInsert` BEFORE INSERT ON `outbound` FOR EACH ROW BEGIN SET NEW.lack = NEW.quantity; - SET NEW.isPicked = NEW.isPicked OR NEW.dated < CURDATE(); - + SET NEW.isPicked = NEW.isPicked OR NEW.dated < util.VN_CURDATE(); + CALL visible_log( NEW.isPicked, NEW.warehouseFk, @@ -23543,19 +19311,18 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `stock` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `stock`.`outbound_afterDelete` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `stock`.`outbound_afterDelete` AFTER DELETE ON `outbound` - FOR EACH ROW + FOR EACH ROW BEGIN UPDATE inbound i JOIN inboundPick ou ON ou.inboundFk = i.id @@ -23591,7 +19358,7 @@ CREATE TABLE `visible` ( `warehouseFk` int(10) unsigned NOT NULL, `quantity` int(11) NOT NULL, PRIMARY KEY (`itemFk`,`warehouseFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -23607,10 +19374,10 @@ DELIMITER ;; /*!50003 SET character_set_results = utf8mb4 */ ;; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `log_clean` ON SCHEDULE EVERY 1 DAY STARTS '2019-06-17 02:45:00' ON COMPLETION PRESERVE ENABLE DO CALL log_clean */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `log_clean` ON SCHEDULE EVERY 1 DAY STARTS '2022-01-28 09:29:18' ON COMPLETION PRESERVE ENABLE DO CALL log_clean */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -23625,10 +19392,10 @@ DELIMITER ;; /*!50003 SET character_set_results = utf8mb4 */ ;; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `log_syncNoWait` ON SCHEDULE EVERY 5 SECOND STARTS '2017-06-27 17:15:02' ON COMPLETION NOT PRESERVE DISABLE DO CALL log_syncNoWait */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `log_syncNoWait` ON SCHEDULE EVERY 5 SECOND STARTS '2017-06-27 17:15:02' ON COMPLETION NOT PRESERVE DISABLE DO CALL log_syncNoWait */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -23646,11 +19413,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `inbound_addPick`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `inbound_addPick`( vSelf INT, vOutboundFk INT, vQuantity INT @@ -23675,11 +19442,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `inbound_removePick`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `inbound_removePick`( vSelf INT, vOutboundFk INT, vQuantity INT, @@ -23708,11 +19475,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `inbound_requestQuantity`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `inbound_requestQuantity`( vSelf INT, vRequested INT, vDated DATETIME, @@ -23742,7 +19509,7 @@ BEGIN DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + SET vSupplied = 0; OPEN vPicks; @@ -23758,7 +19525,7 @@ BEGIN SET vPickGranted = LEAST(vRequested - vSupplied, vPickQuantity); SET vSupplied = vSupplied + vPickGranted; CALL inbound_removePick(vSelf, vOutboundFk, vPickGranted, vPickQuantity); - + UPDATE outbound SET isSync = FALSE, lack = lack + vPickGranted @@ -23782,11 +19549,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `inbound_sync`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `inbound_sync`(vSelf INT) BEGIN /** * Associates a inbound with their possible outbounds, updating it's available. @@ -23838,7 +19605,7 @@ BEGIN END IF; SET vSupplied = LEAST(vAvailable, vLack); - + IF vSupplied > 0 THEN SET vAvailable = vAvailable - vSupplied; UPDATE outbound @@ -23851,7 +19618,7 @@ BEGIN SET vSupplied = vSupplied + vSuppliedFromRequest; SET vAvailable = vAvailable - vSuppliedFromRequest; END IF; - + IF vSupplied > 0 THEN CALL inbound_addPick(vSelf, vOutboundFk, vSupplied); END IF; @@ -23879,11 +19646,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `log_add`(IN `vTableName` VARCHAR(255), IN `vNewId` VARCHAR(255), IN `vOldId` VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `log_add`(IN `vTableName` VARCHAR(255), IN `vNewId` VARCHAR(255), IN `vOldId` VARCHAR(255)) proc: BEGIN -- XXX: Disabled while testing LEAVE proc; @@ -23907,87 +19674,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `log_add_beta__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `log_add_beta__`(IN `vTableName` VARCHAR(255), IN `vNewId` VARCHAR(255), IN `vOldId` VARCHAR(255)) -proc: BEGIN - -- XXX: Disabled while testing - DECLARE vLanded DATE; - DECLARE vWarehouseFk INT; - DECLARE vBuyerFk INT; - DECLARE vEntryFk INT; - DECLARE vItemFk INT; - DECLARE vItemName VARCHAR(50); - - -- LEAVE proc; - - IF vOldId IS NOT NULL AND !(vOldId <=> vNewId) THEN - INSERT IGNORE INTO `log` SET - tableName = vTableName, - tableId = vOldId, - operation = 'delete'; - END IF; - - IF vNewId IS NOT NULL THEN - INSERT IGNORE INTO `log` SET - tableName = vTableName, - tableId = vNewId, - operation = 'insert'; - END IF; - - IF vTableName = 'buy' THEN - - SELECT IFNULL(tr.landed,'2000-01-01') - INTO vLanded - FROM vn.travel tr - JOIN vn.entry e ON e.travelFk = tr.id - JOIN vn.buy b ON b.entryFk = e.id - JOIN vn.warehouse w ON w.id = tr.warehouseInFk - WHERE b.id = vNewId - AND w.isBuyerToBeEmailed; - - IF vLanded = CURDATE() THEN - - SELECT it.workerFk, b.entryFk, i.id, i.longName - INTO vBuyerFk, vEntryFk, vItemFk, vItemName - FROM vn.itemType it - JOIN vn.item i ON i.typeFk = it.id - JOIN vn.buy b ON b.itemFk = i.id - WHERE b.id = vNewId; - - CALL vn.mail_insert(CONCAT(account.user_getNameFromId(vBuyerFk),'@verdnatura.es'), - CONCAT(account.myUser_getName(),'@verdnatura.es'), - CONCAT('E-',vEntryFk,' Se ha modificado item ', vItemFk, ' ',vItemName), - 'Este email se ha generado automáticamente'); - - END IF; - END IF; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `log_clean` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `log_clean`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `log_clean`() BEGIN DELETE FROM inbound WHERE dated = vn.getInventoryDate(); DELETE FROM outbound WHERE dated = vn.getInventoryDate(); @@ -24003,11 +19700,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `log_delete`(vTableName VARCHAR(255), vTableId INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `log_delete`(vTableName VARCHAR(255), vTableId INT) proc: BEGIN /** * Processes orphan transactions. @@ -24035,11 +19732,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `log_refreshAll`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `log_refreshAll`() BEGIN /** * Recalculates the entire cache. It takes a considerable time, @@ -24050,7 +19747,7 @@ BEGIN DO RELEASE_LOCK('stock.log_sync'); RESIGNAL; END; - + IF !GET_LOCK('stock.log_sync', 30) THEN CALL util.throw('Lock timeout exceeded'); END IF; @@ -24081,11 +19778,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `log_refreshBuy`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `log_refreshBuy`( `vTableName` VARCHAR(255), `vTableId` INT) BEGIN @@ -24168,16 +19865,16 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `log_refreshOrder`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `log_refreshOrder`( `vTableName` VARCHAR(255), `vTableId` INT) BEGIN DECLARE vExpireTime INT DEFAULT 20; - DECLARE vExpired DATETIME DEFAULT TIMESTAMPADD(MINUTE, -vExpireTime, NOW()); + DECLARE vExpired DATETIME DEFAULT TIMESTAMPADD(MINUTE, -vExpireTime, util.VN_NOW()); DROP TEMPORARY TABLE IF EXISTS tValues; CREATE TEMPORARY TABLE tValues @@ -24228,11 +19925,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `log_refreshSale`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `log_refreshSale`( `vTableName` VARCHAR(255), `vTableId` INT) BEGIN @@ -24306,11 +20003,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `log_sync`(vSync BOOL) +CREATE DEFINER=`root`@`localhost` PROCEDURE `log_sync`(vSync BOOL) proc: BEGIN DECLARE vDone BOOL; DECLARE vLogId INT; @@ -24381,7 +20078,7 @@ proc: BEGIN -- Deletes expired outbounds - DELETE FROM outbound WHERE expired <= NOW(); + DELETE FROM outbound WHERE expired <= util.VN_NOW(); -- Attaches desync inbounds @@ -24440,13 +20137,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `log_syncNoWait`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `log_syncNoWait`() BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN @@ -24471,11 +20168,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `outbound_requestQuantity`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `outbound_requestQuantity`( vSelf INT, vRequested INT, vDated DATETIME, @@ -24521,7 +20218,7 @@ BEGIN SET vPickGranted = LEAST(vRequested - vSupplied, vPickQuantity); SET vSupplied = vSupplied + vPickGranted; CALL inbound_removePick(vInboundFk, vSelf, vPickGranted, vPickQuantity); - + UPDATE inbound SET isSync = FALSE, available = available + vPickGranted @@ -24545,11 +20242,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `outbound_sync`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `outbound_sync`(vSelf INT) BEGIN /** * Attaches a outbound with available inbounds. @@ -24631,17 +20328,16 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `visible_log` */; -ALTER DATABASE `stock` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `visible_log`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `visible_log`( vIsPicked BOOL, vWarehouseFk INT, vItemFk INT, @@ -24664,16 +20360,30 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `stock` CHARACTER SET utf8 COLLATE utf8_general_ci ; -- -- Current Database: `util` -- -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `util` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `util` /*!40100 DEFAULT CHARACTER SET utf8mb4 */; USE `util`; +-- +-- Table structure for table `binlogQueue` +-- + +DROP TABLE IF EXISTS `binlogQueue`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `binlogQueue` ( + `code` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `logName` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `position` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Binary log position of asynchronous queues'; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Table structure for table `config` -- @@ -24683,12 +20393,12 @@ DROP TABLE IF EXISTS `config`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `config` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `dbVersion` char(11) CHARACTER SET utf8 DEFAULT NULL COMMENT 'The current database version', - `hasTriggersDisabled` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Defines if triggers are disabled', - `environment` varchar(45) CHARACTER SET utf8 DEFAULT NULL COMMENT 'The current Database environment', + `dbVersion` char(11) CHARACTER SET utf8mb3 DEFAULT NULL COMMENT 'The current database version', + `hasTriggersDisabled` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Defines if triggers are disabled', + `environment` varchar(45) CHARACTER SET utf8mb3 DEFAULT NULL COMMENT 'The current Database environment', `lastDump` datetime DEFAULT NULL COMMENT 'Timestamp of the last data dump', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Global configuration table'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Global configuration table'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -24700,17 +20410,50 @@ DROP TABLE IF EXISTS `debug`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `debug` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `connectionId` int(10) unsigned DEFAULT NULL, - `user` varchar(255) CHARACTER SET utf8 DEFAULT NULL, - `host` varchar(255) CHARACTER SET utf8 DEFAULT NULL, - `variable` varchar(255) CHARACTER SET utf8 DEFAULT NULL, - `value` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `user` varchar(255) CHARACTER SET utf8mb3 DEFAULT NULL, + `host` varchar(255) CHARACTER SET utf8mb3 DEFAULT NULL, + `variable` varchar(255) CHARACTER SET utf8mb3 DEFAULT NULL, + `value` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `created` (`created`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Log de depuración'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Log de depuración'; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Table structure for table `eventLog` +-- + +DROP TABLE IF EXISTS `eventLog`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `eventLog` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `date` datetime NOT NULL, + `event` varchar(512) COLLATE utf8mb3_unicode_ci NOT NULL, + `error` varchar(1024) COLLATE utf8mb3_unicode_ci NOT NULL, + PRIMARY KEY (`id`), + KEY `date` (`date`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Event scheduler error log'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary table structure for view `eventLogGrouped` +-- + +DROP TABLE IF EXISTS `eventLogGrouped`; +/*!50001 DROP VIEW IF EXISTS `eventLogGrouped`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `eventLogGrouped` ( + `lastHappened` tinyint NOT NULL, + `nErrors` tinyint NOT NULL, + `event` tinyint NOT NULL, + `error` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + -- -- Table structure for table `version` -- @@ -24719,30 +20462,32 @@ DROP TABLE IF EXISTS `version`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `version` ( - `code` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `number` char(11) COLLATE utf8_unicode_ci DEFAULT NULL, - `gitCommit` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `number` char(11) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `gitCommit` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `updated` datetime DEFAULT NULL, - `lastNumber` char(11) COLLATE utf8_unicode_ci DEFAULT NULL, + `lastNumber` char(11) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `versionUser` +-- Table structure for table `versionLog` -- -DROP TABLE IF EXISTS `versionUser`; +DROP TABLE IF EXISTS `versionLog`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `versionUser` ( - `code` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `user` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `number` char(11) COLLATE utf8_unicode_ci DEFAULT NULL, - `gitCommit` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, +CREATE TABLE `versionLog` ( + `code` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `number` char(11) COLLATE utf8mb3_unicode_ci NOT NULL, + `file` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `user` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `updated` datetime NOT NULL, - PRIMARY KEY (`code`,`user`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + `errorNumber` int(10) unsigned DEFAULT NULL, + `errorMessage` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`code`,`number`,`file`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -24754,14 +20499,14 @@ DELIMITER ;; /*!50003 SET @saved_cs_client = @@character_set_client */ ;; /*!50003 SET @saved_cs_results = @@character_set_results */ ;; /*!50003 SET @saved_col_connection = @@collation_connection */ ;; -/*!50003 SET character_set_client = utf8 */ ;; -/*!50003 SET character_set_results = utf8 */ ;; -/*!50003 SET collation_connection = utf8_general_ci */ ;; +/*!50003 SET character_set_client = utf8mb4 */ ;; +/*!50003 SET character_set_results = utf8mb4 */ ;; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `slowLog_prune` ON SCHEDULE EVERY 1 DAY STARTS '2021-10-08 00:00:00' ON COMPLETION PRESERVE ENABLE DO CALL util.slowLog_prune */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `slowLog_prune` ON SCHEDULE EVERY 1 DAY STARTS '2021-10-08 00:00:00' ON COMPLETION PRESERVE ENABLE DO CALL util.slowLog_prune */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -24779,11 +20524,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `accountShortToStandard`(vAccount VARCHAR(10)) RETURNS varchar(10) CHARSET utf8 COLLATE utf8_unicode_ci +CREATE DEFINER=`root`@`localhost` FUNCTION `accountShortToStandard`(vAccount VARCHAR(10)) RETURNS varchar(10) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci DETERMINISTIC BEGIN RETURN REPLACE(vAccount, '.', REPEAT('0', 11 - LENGTH(vAccount))); @@ -24797,13 +20542,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `capitalizeFirst`(vString VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `capitalizeFirst`(vString VARCHAR(255)) RETURNS varchar(255) CHARSET utf8mb3 NO SQL DETERMINISTIC BEGIN @@ -24821,11 +20566,11 @@ BEGIN WHILE vI < vLen DO SET vSpaceIni = vI; - + WHILE MID(vString, vI, 1) REGEXP '[[:space:]]' DO SET vI = vI + 1; END WHILE; - + SET vWordIni = vI; SET vI = vWordIni + 1; @@ -24851,22 +20596,22 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `crypt`(vText VARCHAR(255), vKey VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `crypt`(vText VARCHAR(255), vKey VARCHAR(255)) RETURNS varchar(255) CHARSET utf8mb3 READS SQL DATA BEGIN DECLARE vResult VARCHAR(255); - + CALL vn.crypt(vText, vKey, vResult); RETURN vResult; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -24877,22 +20622,22 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `cryptOff`(vText VARCHAR(255), vKey VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `cryptOff`(vText VARCHAR(255), vKey VARCHAR(255)) RETURNS varchar(255) CHARSET utf8mb3 READS SQL DATA BEGIN DECLARE vResult VARCHAR(255); - + CALL vn.cryptOff(vText, vKey, vResult); RETURN vResult; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -24903,13 +20648,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `dayend`(vDated DATE) RETURNS datetime +CREATE DEFINER=`root`@`localhost` FUNCTION `dayEnd`(vDated DATE) RETURNS datetime NO SQL DETERMINISTIC BEGIN @@ -24932,11 +20677,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `firstDayOfMonth`(vDate DATE) RETURNS date +CREATE DEFINER=`root`@`localhost` FUNCTION `firstDayOfMonth`(vDate DATE) RETURNS date NO SQL DETERMINISTIC BEGIN @@ -24957,13 +20702,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `firstDayOfYear`(vDate DATE) RETURNS date +CREATE DEFINER=`root`@`localhost` FUNCTION `firstDayOfYear`(vDate DATE) RETURNS date NO SQL DETERMINISTIC BEGIN @@ -24980,19 +20725,87 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `formatRow` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` FUNCTION `formatRow`(vType CHAR(3), vValues VARCHAR(512)) RETURNS varchar(512) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci + DETERMINISTIC +BEGIN + DECLARE vRow VARCHAR(512); + + IF vValues IS NOT NULL THEN + SET vRow = CONCAT(' + + ', vType ,' + ', REPLACE(vValues, ',', '') ,' + + '); + ELSE + SET vRow = ''; + END IF; + + RETURN vRow; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `formatTable` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` FUNCTION `formatTable`(vFields VARCHAR(512), vOldValues VARCHAR(512), vNewValues VARCHAR(512)) RETURNS text CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci + DETERMINISTIC +BEGIN + DECLARE vTable TEXT; + + SET vTable = CONCAT(' + + + + + + ', formatRow('old', vOldValues) ,' + ', formatRow('new', vNewValues) ,' + +
type', REPLACE(vFields, ',', '') ,' +
+ '); + + RETURN vTable; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `hasDateOverlapped` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `hasDateOverlapped`(vSarted1 DATE, vEnded1 DATE, vSarted2 DATE, vEnded2 DATE) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `hasDateOverlapped`(vSarted1 DATE, vEnded1 DATE, vSarted2 DATE, vEnded2 DATE) RETURNS tinyint(1) DETERMINISTIC -BEGIN +BEGIN RETURN GREATEST(vSarted1, vSarted2) <= LEAST(vEnded1,vEnded2); @@ -25006,13 +20819,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `hmacSha2`(`vAlg` SMALLINT, `vMsg` MEDIUMBLOB, `vKey` MEDIUMBLOB) RETURNS varchar(128) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `hmacSha2`(`vAlg` SMALLINT, `vMsg` MEDIUMBLOB, `vKey` MEDIUMBLOB) RETURNS varchar(128) CHARSET utf8mb3 NO SQL DETERMINISTIC BEGIN @@ -25021,7 +20834,7 @@ BEGIN */ DECLARE vHashlen INT UNSIGNED; DECLARE vOpad, vIpad TINYBLOB; - + CASE vAlg WHEN 224 THEN SET vHashlen = 64; WHEN 256 THEN SET vHashlen = 64; @@ -25029,16 +20842,16 @@ BEGIN WHEN 512 THEN SET vHashlen = 128; ELSE CALL throw ('WRONG_ALGORYTHM_IDENTIFICATOR_USED'); END CASE; - + IF LENGTH(vKey) > vHashlen THEN SET vKey = UNHEX(SHA2(vKey, vAlg)); END IF; - + SET vKey = RPAD(vKey, vHashlen, 0x00); - + SET vIpad = stringXor(vKey, 0x36); SET vOpad = stringXor(vKey, 0x5C); - + RETURN SHA2(CONCAT(vOpad, UNHEX(SHA2(CONCAT(vIpad, vMsg), vAlg))), vAlg); END ;; DELIMITER ; @@ -25052,16 +20865,16 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `isLeapYear`(vYear INT) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `isLeapYear`(vYear INT) RETURNS tinyint(1) DETERMINISTIC BEGIN RETURN (DAYOFYEAR(CONCAT(vYear, "-02-29")) IS NOT NULL); - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -25072,13 +20885,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `lang`() RETURNS char(2) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `lang`() RETURNS char(2) CHARSET utf8mb3 NO SQL DETERMINISTIC BEGIN @@ -25100,11 +20913,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `lastDayOfYear`(vDate DATE) RETURNS date +CREATE DEFINER=`root`@`localhost` FUNCTION `lastDayOfYear`(vDate DATE) RETURNS date NO SQL DETERMINISTIC BEGIN @@ -25125,17 +20938,17 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `midnight`() RETURNS datetime +CREATE DEFINER=`root`@`localhost` FUNCTION `midnight`() RETURNS datetime READS SQL DATA BEGIN - - RETURN TIMESTAMP(CURDATE(), '23:59:59'); + + RETURN TIMESTAMP(util.VN_CURDATE(), '23:59:59'); END ;; DELIMITER ; @@ -25143,18 +20956,29 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `nextWeek` */; -ALTER DATABASE `util` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `nextWeek` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `nextWeek`(vYearWeek INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `nextWeek`(vYearWeek INT) RETURNS int(11) DETERMINISTIC BEGIN /** @@ -25163,7 +20987,7 @@ BEGIN * modo 3. */ DECLARE vYear INT DEFAULT FLOOR(vYearWeek / 100); - + IF vYearWeek < YEARWEEK(CONCAT(vYear, '-12-31'), 3) THEN RETURN vYearWeek + 1; ELSE @@ -25175,18 +20999,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `util` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP FUNCTION IF EXISTS `quarterFirstDay` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `quarterFirstDay`(vYear INT, vQuarter INT) RETURNS date +CREATE DEFINER=`root`@`localhost` FUNCTION `quarterFirstDay`(vYear INT, vQuarter INT) RETURNS date DETERMINISTIC BEGIN RETURN CONCAT(vYear,"-", ((vQuarter - 1) * 3) + 1, "-01"); @@ -25200,13 +21023,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `stringXor`(vString MEDIUMBLOB, vConst TINYINT UNSIGNED) RETURNS mediumblob +CREATE DEFINER=`root`@`localhost` FUNCTION `stringXor`(vString MEDIUMBLOB, vConst TINYINT UNSIGNED) RETURNS mediumblob NO SQL DETERMINISTIC BEGIN @@ -25215,16 +21038,16 @@ BEGIN */ DECLARE vLen, vPos INT UNSIGNED; DECLARE vResult MEDIUMBLOB; - + SET vLen = LENGTH(vString); SET vPos = 1; SET vResult = ''; - + WHILE vPos <= vLen DO SET vResult = CONCAT(vResult, LPAD(HEX( ORD(SUBSTR(vString, vPos, 1)) ^ vConst), 2, '0')); SET vPos = vPos + 1; END WHILE; - + RETURN UNHEX(vResult); END ;; DELIMITER ; @@ -25233,45 +21056,43 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `today` */; -ALTER DATABASE `util` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `today`() RETURNS date +CREATE DEFINER=`root`@`localhost` FUNCTION `today`() RETURNS date DETERMINISTIC BEGIN /** * Devuelve la fecha actual. Usar en lugar de la función nativa - * CURDATE() en aquellos que se necesite rendimiento ya que la + * util.VN_CURDATE() en aquellos que se necesite rendimiento ya que la * la última no es determinista. * * @return La fecha actual */ - RETURN CURDATE(); + RETURN util.VN_CURDATE(); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `util` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP FUNCTION IF EXISTS `tomorrow` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `tomorrow`() RETURNS date +CREATE DEFINER=`root`@`localhost` FUNCTION `tomorrow`() RETURNS date DETERMINISTIC BEGIN /** @@ -25279,7 +21100,7 @@ BEGIN * * @return La fecha de mañana */ - RETURN TIMESTAMPADD(DAY, 1, CURDATE()); + RETURN TIMESTAMPADD(DAY, 1, util.VN_CURDATE()); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -25287,17 +21108,16 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `twoDaysAgo` */; -ALTER DATABASE `util` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `twoDaysAgo`() RETURNS date +CREATE DEFINER=`root`@`localhost` FUNCTION `twoDaysAgo`() RETURNS date DETERMINISTIC BEGIN /** @@ -25305,26 +21125,84 @@ BEGIN * * @return La fecha de antes de ayer */ - RETURN TIMESTAMPADD(DAY, -2, CURDATE()); + RETURN TIMESTAMPADD(DAY, -2, util.VN_CURDATE()); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `util` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -/*!50003 DROP FUNCTION IF EXISTS `yearRelativePosition` */; -ALTER DATABASE `util` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 DROP FUNCTION IF EXISTS `VN_CURDATE` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `yearRelativePosition`(vYear INT) RETURNS varchar(20) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `VN_CURDATE`() RETURNS date + DETERMINISTIC +BEGIN + RETURN DATE(mockedDate()); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `VN_CURTIME` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` FUNCTION `VN_CURTIME`() RETURNS time + DETERMINISTIC +BEGIN + RETURN TIME(mockedDate()); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `VN_NOW` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` FUNCTION `VN_NOW`() RETURNS datetime + DETERMINISTIC +BEGIN + RETURN mockedDate(); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `yearRelativePosition` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` FUNCTION `yearRelativePosition`(vYear INT) RETURNS varchar(20) CHARSET utf8mb3 DETERMINISTIC BEGIN /** @@ -25334,16 +21212,16 @@ BEGIN * @param vYear Año a evaluar * @return La posicion relativa del año */ - DECLARE vCurYear INT DEFAULT YEAR(CURDATE()); + DECLARE vCurYear INT DEFAULT YEAR(util.VN_CURDATE()); IF vYear = vCurYear THEN RETURN 'curYear'; END IF; - + IF vYear = vCurYear - 1 THEN RETURN 'lastYear'; END IF; - + IF vYear = vCurYear - 2 THEN RETURN 'twoYearsAgo'; END IF; @@ -25355,19 +21233,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `util` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP FUNCTION IF EXISTS `yesterday` */; -ALTER DATABASE `util` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `yesterday`() RETURNS date +CREATE DEFINER=`root`@`localhost` FUNCTION `yesterday`() RETURNS date DETERMINISTIC BEGIN /** @@ -25375,25 +21251,24 @@ BEGIN * * @return La fecha de ayer */ - RETURN TIMESTAMPADD(DAY, -1, CURDATE()); + RETURN TIMESTAMPADD(DAY, -1, util.VN_CURDATE()); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `util` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `compareObjects` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `compareObjects`(vChain VARCHAR(45),vCompare VARCHAR(45)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `compareObjects`(vChain VARCHAR(45),vCompare VARCHAR(45)) READS SQL DATA BEGIN /** @@ -25407,10 +21282,10 @@ BEGIN */ SET vChain = CONCAT('%', vChain, '%'); SET vCompare = CONCAT('%', vCompare, '%'); - SELECT * FROM + SELECT * FROM ( SELECT t1.* FROM - ( + ( SELECT `db`, `name`, @@ -25437,7 +21312,7 @@ BEGIN 'TRIGGER', `ACTION_STATEMENT`, NULL, - NULL + NULL FROM `information_schema`.`TRIGGERS` WHERE `ACTION_STATEMENT` LIKE vChain COLLATE utf8_general_ci UNION ALL @@ -25447,7 +21322,7 @@ BEGIN 'VIEW', `VIEW_DEFINITION`, NULL, - NULL + NULL FROM `information_schema`.`VIEWS` WHERE `VIEW_DEFINITION` LIKE vChain COLLATE utf8_general_ci ) t1 @@ -25478,7 +21353,7 @@ BEGIN 'TRIGGER', `ACTION_STATEMENT`, NULL, - NULL + NULL FROM `information_schema`.`TRIGGERS` WHERE `ACTION_STATEMENT` LIKE vCompare COLLATE utf8_general_ci UNION ALL @@ -25488,7 +21363,7 @@ BEGIN 'VIEW', `VIEW_DEFINITION`, NULL, - NULL + NULL FROM `information_schema`.`VIEWS` WHERE `VIEW_DEFINITION` LIKE vCompare COLLATE utf8_general_ci) t2 ON t2.name = t1.name ORDER BY t1.`db`, t1.`name` @@ -25500,17 +21375,16 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `debugAdd` */; -ALTER DATABASE `util` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `debugAdd`(vVariable VARCHAR(255), vValue VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `debugAdd`(vVariable VARCHAR(255), vValue VARCHAR(255)) MODIFIES SQL DATA BEGIN /** @@ -25520,7 +21394,7 @@ BEGIN * @param vValue Valor de la variable */ DECLARE vIndex INT DEFAULT INSTR(USER(), '@'); - + INSERT INTO debug SET `connectionId` = CONNECTION_ID(), `user` = LEFT(USER(), vIndex - 1), @@ -25533,18 +21407,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `util` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `exec` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `exec`(vSqlQuery TEXT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `exec`(vSqlQuery TEXT) BEGIN /** * Executes a string with an SQL query. @@ -25568,13 +21441,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `findObject`(vChain VARCHAR(45)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `findObject`(vChain VARCHAR(45)) READS SQL DATA BEGIN /** @@ -25587,7 +21460,7 @@ BEGIN SET vChain = CONCAT('%', vChain, '%'); SELECT * FROM - ( + ( SELECT `routine_schema` `schema`, `routine_name` `name`, @@ -25614,7 +21487,7 @@ BEGIN 'TRIGGER', `ACTION_STATEMENT`, NULL, - NULL + NULL FROM `information_schema`.`TRIGGERS` WHERE `ACTION_STATEMENT` LIKE vChain COLLATE utf8_general_ci UNION ALL @@ -25624,7 +21497,7 @@ BEGIN 'VIEW', `VIEW_DEFINITION`, NULL, - NULL + NULL FROM `information_schema`.`VIEWS` WHERE `VIEW_DEFINITION` LIKE vChain COLLATE utf8_general_ci ) t @@ -25639,13 +21512,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `procNoOverlap`(procName VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `procNoOverlap`(procName VARCHAR(255)) SQL SECURITY INVOKER proc: BEGIN /** @@ -25678,11 +21551,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `proc_changedPrivs`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_changedPrivs`() BEGIN SELECT s.* FROM proc_privs s @@ -25706,11 +21579,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `proc_restorePrivs`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_restorePrivs`() BEGIN /** * Restores the privileges saved by proc_savePrivs(). @@ -25734,11 +21607,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `proc_savePrivs`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_savePrivs`() BEGIN /** * Saves routine privileges, used to simplify the task of keeping @@ -25760,27 +21633,32 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `slowLog_prune`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `slowLog_prune`() BEGIN /** * Prunes MySQL slow query log table deleting all records older than one week. */ DECLARE vSlowQueryLog INT DEFAULT @@slow_query_log; + DECLARE vSqlLogBin INT DEFAULT @@SESSION.sql_log_bin; + + SET sql_log_bin = OFF; + SET GLOBAL slow_query_log = OFF; - SET GLOBAL slow_query_log = 'OFF'; RENAME TABLE `mysql`.`slow_log` TO `mysql`.`slow_log_temp`; DELETE FROM `mysql`.`slow_log_temp` - WHERE start_time < TIMESTAMPADD(WEEK, -1, NOW()); + WHERE start_time < TIMESTAMPADD(WEEK, -1, util.VN_NOW()); RENAME TABLE `mysql`.`slow_log_temp` TO `mysql`.`slow_log`; + SET GLOBAL slow_query_log = vSlowQueryLog; + SET sql_log_bin = vSqlLogBin; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -25793,11 +21671,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `throw`(vMessage CHAR(55)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `throw`(vMessage CHAR(55)) BEGIN /** * Throws a user-defined exception. @@ -25816,13 +21694,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `time_createTable`(vStarted DATE, vEnded DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `time_createTable`(vStarted DATE, vEnded DATE) BEGIN DECLARE vCurrentDate DATE; @@ -25833,7 +21711,33 @@ BEGIN INSERT INTO tmp.time (dated) VALUES (vCurrentDate); SET vCurrentDate = DATE_ADD(vCurrentDate, INTERVAL 1 DAY); END WHILE; - + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `udf_test` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`$itBoss`@`%` PROCEDURE `udf_test`(vLoops BIGINT) +BEGIN + DECLARE vI BIGINT DEFAULT 0; + DECLARE vRes VARCHAR(255); + WHILE vI < vLoops DO + SELECT minacum(2, -10, 1) INTO vRes; + SELECT multimax(10, 20) INTO vRes; + SELECT sql_printf('SELECT %v FROM %t', TRUE, 'myTable') INTO vRes; + SET vI = vI + 1; + END WHILE; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -25844,13 +21748,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `warn`(vCode CHAR(35)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `warn`(vCode CHAR(35)) BEGIN DECLARE w VARCHAR(1) DEFAULT '__'; SET @warn = vCode; @@ -25865,10 +21769,25 @@ DELIMITER ; -- Current Database: `vn` -- -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `vn` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `vn` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci */; USE `vn`; +-- +-- Temporary table structure for view `NewView` +-- + +DROP TABLE IF EXISTS `NewView`; +/*!50001 DROP VIEW IF EXISTS `NewView`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `NewView` ( + `clientFk` tinyint NOT NULL, + `lastShipped` tinyint NOT NULL, + `notBuyingMonths` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + -- -- Table structure for table `XDiario` -- @@ -25880,21 +21799,21 @@ CREATE TABLE `XDiario` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ASIEN` double DEFAULT NULL, `FECHA` datetime DEFAULT NULL, - `SUBCTA` varchar(12) CHARACTER SET utf8 DEFAULT NULL, - `CONTRA` varchar(12) CHARACTER SET utf8 DEFAULT NULL, - `CONCEPTO` varchar(50) CHARACTER SET utf8 DEFAULT NULL, + `SUBCTA` varchar(12) CHARACTER SET utf8mb3 DEFAULT NULL, + `CONTRA` varchar(12) CHARACTER SET utf8mb3 DEFAULT NULL, + `CONCEPTO` varchar(50) CHARACTER SET utf8mb3 DEFAULT NULL, `EURODEBE` decimal(10,2) DEFAULT NULL, `EUROHABER` decimal(10,2) DEFAULT NULL, `BASEEURO` decimal(10,2) DEFAULT NULL, - `SERIE` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, - `FACTURA` varchar(8) COLLATE utf8_unicode_ci DEFAULT '0', + `SERIE` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `FACTURA` varchar(8) COLLATE utf8mb3_unicode_ci DEFAULT '0', `BASEIMPO` decimal(10,2) DEFAULT NULL, `IVA` decimal(10,2) DEFAULT NULL, - `RECEQUIV` decimal(10,2) DEFAULT '0.00', - `DOCUMENTO` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `DEPARTA` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `RECEQUIV` decimal(10,2) DEFAULT 0.00, + `DOCUMENTO` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `DEPARTA` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `CLAVE` int(11) DEFAULT NULL, - `ESTADO` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `ESTADO` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `NCASADO` decimal(10,2) DEFAULT NULL, `TCASADO` decimal(10,2) DEFAULT NULL, `TRANS` decimal(10,2) DEFAULT NULL, @@ -25902,49 +21821,49 @@ CREATE TABLE `XDiario` ( `DEBEME` decimal(10,2) DEFAULT NULL, `HABERME` decimal(10,2) DEFAULT NULL, `PTAHABER` decimal(10,2) DEFAULT NULL, - `AUXILIAR` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, - `SUCURSAL` varchar(4) COLLATE utf8_unicode_ci DEFAULT NULL, + `AUXILIAR` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `SUCURSAL` varchar(4) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `PTADEBE` decimal(10,2) DEFAULT NULL, - `CODDIVISA` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `CODDIVISA` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `IMPAUXME` decimal(10,2) DEFAULT NULL, - `MONEDAUSO` varchar(1) COLLATE utf8_unicode_ci DEFAULT '2', - `NOCONV` tinyint(1) NOT NULL DEFAULT '0', - `NUMEROINV` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `TIPOOPE` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, - `NFACTICK` tinyint(1) NOT NULL DEFAULT '1', - `TERIDNIF` tinyint(1) NOT NULL DEFAULT '2', - `TERNIF` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'I.F.', - `TERNOM` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Nombre Importador', - `OPBIENES` tinyint(1) NOT NULL DEFAULT '1', - `TIPOFAC` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, - `TIPOIVA` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, - `L340` tinyint(2) NOT NULL DEFAULT '0', - `enlazado` tinyint(1) NOT NULL DEFAULT '0', + `MONEDAUSO` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT '2', + `NOCONV` tinyint(1) NOT NULL DEFAULT 0, + `NUMEROINV` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `TIPOOPE` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `NFACTICK` tinyint(1) NOT NULL DEFAULT 1, + `TERIDNIF` tinyint(1) NOT NULL DEFAULT 2, + `TERNIF` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'I.F.', + `TERNOM` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'Nombre Importador', + `OPBIENES` tinyint(1) NOT NULL DEFAULT 1, + `TIPOFAC` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `TIPOIVA` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `L340` tinyint(2) NOT NULL DEFAULT 0, + `enlazado` tinyint(1) NOT NULL DEFAULT 0, `FECHA_EX` date DEFAULT NULL COMMENT 'FEcha de expedicion de la factura', - `LRECT349` tinyint(1) NOT NULL DEFAULT '0', - `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', - `LDIFADUAN` tinyint(4) NOT NULL DEFAULT '0', - `METAL` tinyint(1) NOT NULL DEFAULT '0', - `METALIMP` decimal(10,2) NOT NULL DEFAULT '0.00', - `CLIENTE` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, - `METALEJE` varchar(4) COLLATE utf8_unicode_ci DEFAULT NULL, + `LRECT349` tinyint(1) NOT NULL DEFAULT 0, + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT 442, + `LDIFADUAN` tinyint(4) NOT NULL DEFAULT 0, + `METAL` tinyint(1) NOT NULL DEFAULT 0, + `METALIMP` decimal(10,2) NOT NULL DEFAULT 0.00, + `CLIENTE` varchar(12) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `METALEJE` varchar(4) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `FECHA_OP` date DEFAULT NULL COMMENT 'FEcha de operacion', - `FACTURAEX` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Numero de factura del proveedor', + `FACTURAEX` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'Numero de factura del proveedor', `TIPOCLAVE` int(3) DEFAULT NULL, `TIPOEXENCI` int(3) DEFAULT NULL, `TIPONOSUJE` int(3) DEFAULT NULL, `TIPOFACT` int(3) DEFAULT NULL, `TIPORECTIF` int(3) DEFAULT NULL, - `SERIE_RT` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, - `FACTU_RT` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `SERIE_RT` varchar(2) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `FACTU_RT` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `BASEIMP_RT` decimal(10,2) DEFAULT NULL, `BASEIMP_RF` decimal(10,2) DEFAULT NULL, - `RECTIFICA` int(1) NOT NULL DEFAULT '0', + `RECTIFICA` int(1) NOT NULL DEFAULT 0, `FECHA_RT` date DEFAULT NULL, - `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `updated` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `created` timestamp NULL DEFAULT current_timestamp(), + `updated` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `FECREGCON` date DEFAULT NULL, - `enlazadoSage` tinyint(1) NOT NULL DEFAULT '0', + `enlazadoSage` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `empresa_id` (`empresa_id`), KEY `ASIENidx` (`id`,`ASIEN`), @@ -25952,47 +21871,55 @@ CREATE TABLE `XDiario` ( KEY `XDiario` (`enlazado`), KEY `enlazadoSage` (`enlazadoSage`), CONSTRAINT `XDiario_ibfk_1` FOREIGN KEY (`empresa_id`) REFERENCES `company` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`XDiario_beforeInsert` BEFORE INSERT ON `XDiario` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`XDiario_beforeInsert` + BEFORE INSERT ON `XDiario` + FOR EACH ROW BEGIN -/* - IF NEW.EURODEBE < 0 THEN - - SET NEW.EUROHABER = - NEW.EURODEBE; - SET NEW.EURODEBE = NULL; - + IF (NOT isDateRangeAccounting(NEW.FECHA) AND NEW.FECHA IS NOT NULL) OR + (NOT isDateRangeAccounting(NEW.FECHA_EX) AND NEW.FECHA_EX IS NOT NULL) OR + (NOT isDateRangeAccounting(NEW.FECHA_OP) AND NEW.FECHA_OP IS NOT NULL) OR + (NOT isDateRangeAccounting(NEW.FECHA_RT) AND NEW.FECHA_RT IS NOT NULL) OR + (NOT isDateRangeAccounting(NEW.FECREGCON) AND NEW.FECREGCON IS NOT NULL) THEN + CALL util.throw ('Fecha fuera de rango'); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`XDiario_beforeUpdate` + BEFORE UPDATE ON `XDiario` + FOR EACH ROW +BEGIN + IF (!(NEW.FECHA <=> OLD.FECHA) AND NOT isDateRangeAccounting(NEW.FECHA)) OR + (!(NEW.FECHA_EX <=> OLD.FECHA_EX) AND NOT isDateRangeAccounting(NEW.FECHA_EX)) OR + (!(NEW.FECHA_OP <=> OLD.FECHA_OP) AND NOT isDateRangeAccounting(NEW.FECHA_OP)) OR + (!(NEW.FECHA_RT <=> OLD.FECHA_RT) AND NOT isDateRangeAccounting(NEW.FECHA_RT)) OR + (!(NEW.FECREGCON <=> OLD.FECREGCON) AND NOT isDateRangeAccounting(NEW.FECREGCON)) THEN + CALL util.throw ('Fecha fuera de rango'); END IF; - IF NEW.EUROHABER < 0 THEN - - SET NEW.EURODEBE = - NEW.EUROHABER; - SET NEW.EUROHABER = NULL; - - END IF; - - IF NEW.DEBEME < 0 THEN - - SET NEW.HABERME = - NEW.DEBEME; - SET NEW.DEBEME = NULL; - - END IF; - - IF NEW.HABERME < 0 THEN - - SET NEW.DEBEME = - NEW.HABERME; - SET NEW.HABERME = NULL; - END IF; - */ END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -26001,57 +21928,70 @@ DELIMITER ; /*!50003 SET collation_connection = @saved_col_connection */ ; -- --- Temporary table structure for view `__coolerPathDetail` --- - -DROP TABLE IF EXISTS `__coolerPathDetail`; -/*!50001 DROP VIEW IF EXISTS `__coolerPathDetail`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `__coolerPathDetail` ( - `id` tinyint NOT NULL, - `coolerPathFk` tinyint NOT NULL, - `hallway` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - --- --- Temporary table structure for view `absenceType` +-- Table structure for table `absenceType` -- DROP TABLE IF EXISTS `absenceType`; -/*!50001 DROP VIEW IF EXISTS `absenceType`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `absenceType` ( - `id` tinyint NOT NULL, - `name` tinyint NOT NULL, - `rgb` tinyint NOT NULL, - `code` tinyint NOT NULL, - `permissionRate` tinyint NOT NULL, - `holidayEntitlementRate` tinyint NOT NULL, - `discountRate` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `absenceType` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(30) NOT NULL, + `rgb` varchar(7) NOT NULL, + `color` bigint(20) DEFAULT 0, + `permissionRate` decimal(3,2) DEFAULT NULL, + `code` varchar(45) DEFAULT NULL, + `isAllowedToWork` tinyint(4) NOT NULL DEFAULT 0, + `isPrintable` tinyint(1) NOT NULL DEFAULT 0, + `discountRate` decimal(3,2) DEFAULT NULL, + `holidayEntitlementRate` decimal(3,2) DEFAULT 1.00, + `isNaturalDay` tinyint(1) DEFAULT 0 COMMENT 'Para el cálculo de los salarios de los repartidores', + `isCalculate` tinyint(1) DEFAULT 0 COMMENT 'Para el cálculo de los salarios de los repartidores', + PRIMARY KEY (`id`) +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; +/*!40101 SET character_set_client = @saved_cs_client */; -- --- Temporary table structure for view `accounting` +-- Table structure for table `accounting` -- DROP TABLE IF EXISTS `accounting`; -/*!50001 DROP VIEW IF EXISTS `accounting`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `accounting` ( - `id` tinyint NOT NULL, - `bank` tinyint NOT NULL, - `account` tinyint NOT NULL, - `accountingTypeFk` tinyint NOT NULL, - `entityFk` tinyint NOT NULL, - `isActive` tinyint NOT NULL, - `currencyFk` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `accounting` ( + `id` int(11) NOT NULL DEFAULT 0, + `bank` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `account` varchar(10) CHARACTER SET utf8mb3 DEFAULT NULL, + `accountingTypeFk` smallint(6) NOT NULL DEFAULT 0, + `entityFk` int(10) unsigned DEFAULT NULL, + `isActive` tinyint(4) NOT NULL DEFAULT 1, + `currencyFk` tinyint(3) unsigned DEFAULT 1, + `code` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `BancosBanco` (`bank`), + KEY `fk_Bancos_entity1_idx` (`entityFk`), + KEY `foreignkey1_idx` (`accountingTypeFk`), + KEY `Bancoscurrency_idx` (`currencyFk`), + CONSTRAINT `Bancoscurrency` FOREIGN KEY (`currencyFk`) REFERENCES `currency` (`id`) ON UPDATE CASCADE, + CONSTRAINT `accounting_FK` FOREIGN KEY (`entityFk`) REFERENCES `bankEntity` (`id`) ON UPDATE CASCADE, + CONSTRAINT `bank_FK` FOREIGN KEY (`accountingTypeFk`) REFERENCES `accountingType` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Apunta a la vista vn.Accounting\nLa columna cash es la FK de vn.AccountingType'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `accountingConfig` +-- + +DROP TABLE IF EXISTS `accountingConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `accountingConfig` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `minDate` date NOT NULL, + `maxDate` date NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `accountingType` @@ -26061,29 +22001,30 @@ DROP TABLE IF EXISTS `accountingType`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `accountingType` ( - `id` smallint(6) NOT NULL DEFAULT '0', - `description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, - `receiptDescription` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Descripción por defecto al crear nuevo recibo', - `code` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `isAutoConciliated` tinyint(1) DEFAULT '1' COMMENT 'Si hay que marcar como conciliado el recibo al usar este tipo', + `id` smallint(6) NOT NULL DEFAULT 0, + `description` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + `receiptDescription` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'Descripción por defecto al crear nuevo recibo', + `code` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isAutoConciliated` tinyint(1) DEFAULT 1 COMMENT 'Si hay que marcar como conciliado el recibo al usar este tipo', `maxAmount` int(11) DEFAULT NULL, + `daysInFuture` int(11) DEFAULT 0, PRIMARY KEY (`id`), KEY `accountingType_code_IDX` (`code`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='descripcio dels valors de la columna "cash" de la taula vn2008.Bancios'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='descripcio dels valors de la columna "cash" de la taula vn2008.Bancios'; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `activeContrat` +-- Table structure for table `activeContrat__` -- -DROP TABLE IF EXISTS `activeContrat`; +DROP TABLE IF EXISTS `activeContrat__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `activeContrat` ( +CREATE TABLE `activeContrat__` ( `date` date NOT NULL, `business_id` int(11) NOT NULL, PRIMARY KEY (`date`,`business_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26095,12 +22036,12 @@ DROP TABLE IF EXISTS `activityTaxDismissed`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `activityTaxDismissed` ( `clientFk` int(11) NOT NULL, - `isNotified` tinyint(1) DEFAULT '0', - `isDismissed` tinyint(1) DEFAULT '0', - `notified` int(11) DEFAULT '0', + `isNotified` tinyint(1) DEFAULT 0, + `isDismissed` tinyint(1) DEFAULT 0, + `notified` int(11) DEFAULT 0, PRIMARY KEY (`clientFk`), CONSTRAINT `clientFk` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26112,34 +22053,34 @@ DROP TABLE IF EXISTS `address`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `address` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `clientFk` int(11) NOT NULL DEFAULT '0', - `warehouseFk` smallint(6) unsigned DEFAULT '1', - `street` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `city` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `clientFk` int(11) NOT NULL DEFAULT 0, + `warehouseFk__` smallint(6) unsigned DEFAULT 1, + `street` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `city` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `provinceFk` smallint(5) unsigned DEFAULT NULL, - `postalCode` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `phone` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `mobile` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `nickname` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL, - `isDefaultAddress` tinyint(1) NOT NULL DEFAULT '0', - `agencyModeFk` int(11) NOT NULL DEFAULT '2', - `notes__` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `hasInsurance__` tinyint(1) NOT NULL DEFAULT '0', + `postalCode` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `phone` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `mobile` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `nickname` varchar(40) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isDefaultAddress` tinyint(1) NOT NULL DEFAULT 0, + `agencyModeFk` int(11) NOT NULL DEFAULT 2, + `notes__` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `hasInsurance__` tinyint(1) NOT NULL DEFAULT 0, `porte__` double DEFAULT NULL, - `isActive` tinyint(4) NOT NULL DEFAULT '1', + `isActive` tinyint(4) NOT NULL DEFAULT 1, `postcodeOLD__` int(11) unsigned DEFAULT NULL, `longitude` decimal(11,7) DEFAULT NULL, `latitude` decimal(11,7) DEFAULT NULL, - `codPosOld__` char(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `codPosOld__` char(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `isEqualizated` tinyint(1) DEFAULT NULL, `customsAgentFk` int(11) DEFAULT NULL, - `incotermsFk` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `isVilassarBuyer__` tinyint(4) NOT NULL DEFAULT '0', - `isLogifloraAllowed` tinyint(4) NOT NULL DEFAULT '0', + `incotermsFk` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isVilassarBuyer__` tinyint(4) NOT NULL DEFAULT 0, + `isLogifloraAllowed` tinyint(4) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `Id_Agencia` (`agencyModeFk`), KEY `Id_cliente` (`clientFk`), - KEY `warehouse_id` (`warehouseFk`), + KEY `warehouse_id` (`warehouseFk__`), KEY `province_id` (`provinceFk`), KEY `telefono` (`phone`), KEY `movil` (`mobile`), @@ -26148,23 +22089,24 @@ CREATE TABLE `address` ( KEY `address_incotermsFk_idx` (`incotermsFk`), CONSTRAINT `address_customer_id` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE, CONSTRAINT `address_customsAgentFk` FOREIGN KEY (`customsAgentFk`) REFERENCES `customsAgent` (`id`) ON UPDATE CASCADE, - CONSTRAINT `address_ibfk_1` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `address_ibfk_1` FOREIGN KEY (`warehouseFk__`) REFERENCES `warehouse` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `address_ibfk_3` FOREIGN KEY (`provinceFk`) REFERENCES `province` (`id`) ON UPDATE CASCADE, CONSTRAINT `address_ibfk_4` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`) ON UPDATE CASCADE, CONSTRAINT `address_incotermsFk` FOREIGN KEY (`incotermsFk`) REFERENCES `incoterms` (`code`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`address_beforeInsert` - BEFORE INSERT ON `vn`.`address` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`address_beforeInsert` + BEFORE INSERT ON `address` + FOR EACH ROW BEGIN DECLARE vIsEqualizated BOOL; @@ -26177,11 +22119,11 @@ BEGIN END IF; IF NEW.isEqualizated IS NULL THEN - SELECT isEqualizated + SELECT isEqualizated INTO vIsEqualizated FROM client WHERE id = NEW.clientFk; - + SET NEW.isEqualizated = vIsEqualizated; END IF; END */;; @@ -26195,18 +22137,19 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`address_beforeUpdate` - BEFORE UPDATE ON `vn`.`address` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`address_beforeUpdate` + BEFORE UPDATE ON `address` + FOR EACH ROW BEGIN - + IF !(NEW.phone <=> OLD.phone) AND (NEW.phone <> '') THEN CALL pbx.phone_isValid(NEW.phone); END IF; - + IF !(NEW.mobile <=> OLD.mobile) AND (NEW.mobile <> '')THEN CALL pbx.phone_isValid(NEW.mobile); END IF; @@ -26220,27 +22163,28 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`address_afterUpdate` - AFTER UPDATE ON `address` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`address_afterUpdate` + AFTER UPDATE ON `address` + FOR EACH ROW BEGIN -- Recargos de equivalencia distintos implican facturacion por consignatario IF NEW.isEqualizated != OLD.isEqualizated THEN - IF + IF (SELECT COUNT(*) FROM ( SELECT DISTINCT (isEqualizated = FALSE) as Equ - FROM address + FROM address WHERE clientFk = NEW.clientFk ) t1 ) > 1 - THEN - UPDATE client + THEN + UPDATE client SET hasToInvoiceByAddress = TRUE WHERE id = NEW.clientFk; END IF; @@ -26248,10 +22192,10 @@ BEGIN IF NEW.isDefaultAddress AND NEW.isActive = FALSE THEN CALL util.throw ('Cannot desactivate the default address'); END IF; - + IF NOT (NEW.isEqualizated <=> OLD.isEqualizated) THEN INSERT IGNORE INTO ticketRecalc (ticketFk) - SELECT id FROM ticket t + SELECT id FROM ticket t WHERE t.addressFk = NEW.id AND t.refFk IS NULL; END IF; @@ -26271,13 +22215,15 @@ DROP TABLE IF EXISTS `addressFilter`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `addressFilter` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `provinceFk` smallint(5) unsigned DEFAULT NULL, `countryFk` mediumint(8) unsigned DEFAULT NULL, - `isLogifloraAllowed` tinyint(1) DEFAULT '0', - `isVNHSupplier` tinyint(1) DEFAULT '0' COMMENT 'corresponde al campo edi.VMPSettings.isVNHSupplier', - `isEarlyBird` tinyint(1) DEFAULT '0' COMMENT 'corresponde al campo edi.marketPlace.isEarlybird', + `isLogifloraAllowed` tinyint(1) DEFAULT 0, + `isVNHSupplier` tinyint(1) DEFAULT 0 COMMENT 'corresponde al campo edi.VMPSettings.isVNHSupplier', + `isEarlyBird` tinyint(1) DEFAULT 0 COMMENT 'corresponde al campo edi.marketPlace.isEarlybird', `warehouseFk` smallint(5) unsigned DEFAULT NULL, + `beforeDated` date DEFAULT NULL, + `afterDated` date DEFAULT NULL, PRIMARY KEY (`id`), KEY `addressFilter_FK` (`provinceFk`), KEY `addressFilter_FK_1` (`countryFk`), @@ -26285,7 +22231,7 @@ CREATE TABLE `addressFilter` ( CONSTRAINT `addressFilter_FK` FOREIGN KEY (`provinceFk`) REFERENCES `province` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `addressFilter_FK_1` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `addressFilter_FK_2` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Establece los criterios para habilitar las compras directas a Floraholland'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Establece los criterios para habilitar las compras directas a Logiflora'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26297,10 +22243,10 @@ DROP TABLE IF EXISTS `addressForPackaging`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `addressForPackaging` ( `addressFk` int(11) NOT NULL, - `packagingValue` decimal(10,2) NOT NULL DEFAULT '0.04', + `packagingValue` decimal(10,2) NOT NULL DEFAULT 0.04, PRIMARY KEY (`addressFk`), CONSTRAINT `addresForPackaging_fk1` FOREIGN KEY (`addressFk`) REFERENCES `address` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26314,13 +22260,13 @@ CREATE TABLE `addressObservation` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `addressFk` int(11) NOT NULL, `observationTypeFk` tinyint(3) unsigned NOT NULL, - `description` text COLLATE utf8_unicode_ci NOT NULL, + `description` text COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `Id_Consigna` (`addressFk`,`observationTypeFk`), KEY `addressObservationFgn_idx` (`observationTypeFk`), CONSTRAINT `addressFgn` FOREIGN KEY (`addressFk`) REFERENCES `address` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `addressObservationFgn` FOREIGN KEY (`observationTypeFk`) REFERENCES `observationType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Observaciones de los consignatarios'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Observaciones de los consignatarios'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26332,38 +22278,40 @@ DROP TABLE IF EXISTS `agency`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `agency` ( `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(25) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(25) COLLATE utf8mb3_unicode_ci NOT NULL, `warehouseFk` smallint(5) unsigned DEFAULT NULL COMMENT 'A nulo si se puede enrutar desde todos los almacenes', - `isVolumetric` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Si el calculo del porte se hacer por volumen', - `bankFk` int(11) NOT NULL DEFAULT '8' COMMENT 'para realizar los reembolsos', + `isVolumetric__` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'Si el calculo del porte se hacer por volumen', + `bankFk__` int(11) NOT NULL DEFAULT 8 COMMENT 'para realizar los reembolsos', `warehouseAliasFk` smallint(5) unsigned DEFAULT NULL, - `isOwn` tinyint(1) NOT NULL DEFAULT '0', - `labelZone` tinyint(4) NOT NULL DEFAULT '0', + `isOwn` tinyint(1) NOT NULL DEFAULT 0, + `labelZone__` tinyint(4) NOT NULL DEFAULT 0, `workCenterFk` int(11) DEFAULT NULL, - `supplierFk` int(11) DEFAULT NULL, - `isAnyVolumeAllowed` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Permite vender productos cualquier volumen', + `supplierFk__` int(11) DEFAULT NULL, + `isAnyVolumeAllowed` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Permite vender productos que tengan vn.itemType.IsUnconventionalSize = TRUE', PRIMARY KEY (`id`), KEY `warehouse_id` (`warehouseFk`), - KEY `Id_Banco` (`bankFk`), + KEY `Id_Banco` (`bankFk__`), KEY `agencias_alias_idx` (`warehouseAliasFk`), KEY `agency_ibfk_3_idx` (`workCenterFk`), - KEY `agency_ibfk_4_idx` (`supplierFk`), + KEY `agency_ibfk_4_idx` (`supplierFk__`), + CONSTRAINT `agency_FK` FOREIGN KEY (`warehouseAliasFk`) REFERENCES `warehouseAlias` (`id`) ON UPDATE CASCADE, CONSTRAINT `agency_ibfk_1` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, - CONSTRAINT `agency_ibfk_2` FOREIGN KEY (`bankFk`) REFERENCES `bank` (`id`) ON UPDATE CASCADE, - CONSTRAINT `agency_ibfk_3` FOREIGN KEY (`workCenterFk`) REFERENCES `workCenter` (`id`) ON UPDATE CASCADE, - CONSTRAINT `agency_ibfk_4` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + CONSTRAINT `agency_ibfk_2` FOREIGN KEY (`bankFk__`) REFERENCES `accounting` (`id`) ON UPDATE CASCADE, + CONSTRAINT `agency_ibfk_3` FOREIGN KEY (`workCenterFk`) REFERENCES `workCenter` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`agency_afterInsert` AFTER INSERT ON `vn`.`agency` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`agency_afterInsert` + AFTER INSERT ON `agency` + FOR EACH ROW BEGIN INSERT INTO agencyMode(name,agencyFk) VALUES(NEW.name,NEW.id); END */;; @@ -26390,7 +22338,7 @@ CREATE TABLE `agencyExtraCharge` ( PRIMARY KEY (`id`), UNIQUE KEY `agencyExtraChargeUniqueIdx` (`agencyFk`,`sinced`,`sizeMin`), CONSTRAINT `agencyExtraChargeFk1` FOREIGN KEY (`agencyFk`) REFERENCES `agency` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26402,22 +22350,23 @@ DROP TABLE IF EXISTS `agencyMode`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `agencyMode` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `deliveryMethodFk` int(11) DEFAULT NULL, - `m3` double DEFAULT '0', - `cod71__` tinyint(3) unsigned DEFAULT '0', - `web` smallint(1) unsigned zerofill NOT NULL DEFAULT '0', + `m3` double DEFAULT 0, + `cod71__` tinyint(3) unsigned DEFAULT 0, + `web` smallint(1) unsigned zerofill NOT NULL DEFAULT 0, `agencyFk` smallint(5) unsigned NOT NULL, - `inflation` decimal(5,2) NOT NULL DEFAULT '0.00' COMMENT 'Este valor se utiliza para aumentar el valor del componente porte.', - `isVolumetric` tinyint(1) NOT NULL DEFAULT '0', - `reportMail` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `showAgencyName` tinyint(1) DEFAULT '1' COMMENT 'obsoleta', - `isActive` tinyint(1) NOT NULL DEFAULT '1', - `isExternalAgency` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'obsoleta', - `flag` blob COMMENT 'obsoleta', - `code` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `isRiskFree` tinyint(1) NOT NULL DEFAULT '0', + `inflation` decimal(5,2) NOT NULL DEFAULT 0.00 COMMENT 'Este valor se utiliza para aumentar el valor del componente porte.', + `isVolumetric` tinyint(1) NOT NULL DEFAULT 0, + `reportMail` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `showAgencyName` tinyint(1) DEFAULT 1 COMMENT 'obsoleta', + `isActive` tinyint(1) NOT NULL DEFAULT 1, + `isExternalAgency` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'obsoleta', + `flag` blob DEFAULT NULL COMMENT 'obsoleta', + `code` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isRiskFree` tinyint(1) NOT NULL DEFAULT 0, + `hasWeightVolumetric` int(11) NOT NULL DEFAULT 0 COMMENT 'Tiene en cuenta el peso volumetrico para los calculos', PRIMARY KEY (`id`), KEY `Agencias` (`name`), KEY `Vista` (`deliveryMethodFk`), @@ -26425,44 +22374,42 @@ CREATE TABLE `agencyMode` ( KEY `agencyMode_code` (`code`), CONSTRAINT `agencyMode_agencyFk` FOREIGN KEY (`agencyFk`) REFERENCES `agency` (`id`) ON UPDATE CASCADE, CONSTRAINT `agencyMode_deliveryMethodFk` FOREIGN KEY (`deliveryMethodFk`) REFERENCES `deliveryMethod` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Temporary table structure for view `agencyProvince__` +-- Temporary table structure for view `agencyTerm` -- -DROP TABLE IF EXISTS `agencyProvince__`; -/*!50001 DROP VIEW IF EXISTS `agencyProvince__`*/; +DROP TABLE IF EXISTS `agencyTerm`; +/*!50001 DROP VIEW IF EXISTS `agencyTerm`*/; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; -/*!50001 CREATE TABLE `agencyProvince__` ( - `provinceFk` tinyint NOT NULL, +/*!50001 CREATE TABLE `agencyTerm` ( `agencyFk` tinyint NOT NULL, - `zone` tinyint NOT NULL, - `warehouseFk` tinyint NOT NULL, - `isVolumetric` tinyint NOT NULL + `minimumPackages` tinyint NOT NULL, + `kmPrice` tinyint NOT NULL, + `packagePrice` tinyint NOT NULL, + `routePrice` tinyint NOT NULL, + `minimumKm` tinyint NOT NULL, + `minimumM3` tinyint NOT NULL, + `m3Price` tinyint NOT NULL ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; -- --- Table structure for table `agencyTerm` +-- Table structure for table `agencyTermConfig` -- -DROP TABLE IF EXISTS `agencyTerm`; +DROP TABLE IF EXISTS `agencyTermConfig`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `agencyTerm` ( - `agencyFk` smallint(5) unsigned NOT NULL, - `minimumPackages` int(11) NOT NULL DEFAULT '0' COMMENT 'numero minimo de bultos', - `kmPrice` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT 'precio extra por km', - `packagePrice` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT 'precio extra por bulto', - `routePrice` decimal(10,2) DEFAULT NULL COMMENT 'precio fijo por ruta', - `minimumKm` int(11) NOT NULL DEFAULT '0', - `minimumM3` decimal(10,2) NOT NULL DEFAULT '0.00', - `m3Price` decimal(10,0) NOT NULL DEFAULT '0', - PRIMARY KEY (`agencyFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +CREATE TABLE `agencyTermConfig` ( + `expenceFk` varchar(10) DEFAULT NULL, + `vatAccountSupported` varchar(15) DEFAULT NULL, + `vatPercentage` decimal(28,10) DEFAULT NULL, + `transaction` varchar(50) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26473,10 +22420,10 @@ DROP TABLE IF EXISTS `alertLevel`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `alertLevel` ( - `code` varchar(45) CHARACTER SET utf8 NOT NULL, + `code` varchar(45) CHARACTER SET utf8mb3 NOT NULL, `id` int(11) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26487,10 +22434,10 @@ DROP TABLE IF EXISTS `amortizationType`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `amortizationType` ( - `code` varchar(45) CHARACTER SET utf8 NOT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(45) CHARACTER SET utf8mb3 NOT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26521,7 +22468,7 @@ CREATE TABLE `assignedTicketToWorker` ( PRIMARY KEY (`id`), UNIQUE KEY `idWorker_UNIQUE` (`idWorker`), UNIQUE KEY `idTicket_UNIQUE` (`idTicket`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Tabla para relacionar un ticket con el sacador del altillo '; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Tabla para relacionar un ticket con el sacador del altillo '; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26533,15 +22480,13 @@ DROP TABLE IF EXISTS `autoRadioConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `autoRadioConfig` ( `id` int(11) NOT NULL, - `password` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `user` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `port` int(11) DEFAULT NULL, - `url` varchar(75) COLLATE utf8_unicode_ci DEFAULT NULL, - `login` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `password` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `user` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `url` varchar(75) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `client` int(32) DEFAULT NULL, - `center` int(32) DEFAULT NULL, + `center` varchar(2) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26554,12 +22499,12 @@ DROP TABLE IF EXISTS `autoRadioLogCall`; CREATE TABLE `autoRadioLogCall` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ticketFk` int(11) NOT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `response` longtext COLLATE utf8_unicode_ci NOT NULL, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `response` longtext COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), KEY `ticket_idx` (`ticketFk`), CONSTRAINT `ticket` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26571,13 +22516,13 @@ DROP TABLE IF EXISTS `autonomousRegion__`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `autonomousRegion__` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(50) CHARACTER SET utf8 NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb3 NOT NULL, `geoFk` int(11) DEFAULT NULL, `countryFk` mediumint(8) unsigned DEFAULT NULL, PRIMARY KEY (`id`), KEY `countryFk` (`countryFk`), CONSTRAINT `countryFk` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26589,7 +22534,7 @@ DROP TABLE IF EXISTS `autonomy`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `autonomy` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, `countryFk` mediumint(8) unsigned NOT NULL, `geoFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), @@ -26597,22 +22542,22 @@ CREATE TABLE `autonomy` ( KEY `autonomy_FK_1` (`geoFk`), CONSTRAINT `autonomy_FK` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `autonomy_FK_1` FOREIGN KEY (`geoFk`) REFERENCES `zoneGeo` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Comunidades autónomas o su equivalente en otros paises. Agrupación de provincias, en una categoria inferior a country.'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Comunidades autónomas o su equivalente en otros paises. Agrupación de provincias, en una categoria inferior a country.'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER autonomy_BI -BEFORE INSERT -ON autonomy FOR EACH ROW -BEGIN - +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`autonomy_BI` + BEFORE INSERT ON `autonomy` + FOR EACH ROW +BEGIN + SET NEW.geoFk = zoneGeo_new('autonomy', NEW.`name`, (SELECT geoFk FROM country WHERE id = NEW.countryFk)); END */;; @@ -26624,15 +22569,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER autonomy_BU -BEFORE UPDATE -ON autonomy FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`autonomy_BU` + BEFORE UPDATE ON `autonomy` + FOR EACH ROW BEGIN IF !(OLD.countryFk <=> NEW.countryFk) THEN CALL zoneGeo_setParent(NEW.geoFk, @@ -26652,17 +22597,17 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER autonomy_AD -AFTER DELETE -ON autonomy FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`autonomy_AD` + AFTER DELETE ON `autonomy` + FOR EACH ROW BEGIN - CALL zoneGeo_delete(OLD.geoFk); + CALL zoneGeo_delete(OLD.geoFk); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -26679,19 +22624,19 @@ DROP TABLE IF EXISTS `awb`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `awb` ( `id` smallint(11) unsigned NOT NULL AUTO_INCREMENT, - `code` varchar(18) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(18) COLLATE utf8mb3_unicode_ci NOT NULL, `package` float unsigned NOT NULL, `weight` float unsigned DEFAULT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `transitoryFk` int(11) DEFAULT NULL, - `taxFk` int(10) unsigned DEFAULT '62', - `duakk` varchar(18) COLLATE utf8_unicode_ci DEFAULT NULL, + `taxFk` int(10) unsigned DEFAULT 62, + `duakk` varchar(18) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `docFk` int(11) DEFAULT NULL, - `amount` double NOT NULL DEFAULT '0', + `amount` double NOT NULL DEFAULT 0, `freightFk` int(11) DEFAULT NULL, `m3` double unsigned DEFAULT NULL, `stems` int(10) unsigned DEFAULT NULL, - `flightFk` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `flightFk` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `volumeWeight` float unsigned DEFAULT NULL, `hb` decimal(10,1) unsigned DEFAULT NULL, `rate` decimal(10,2) unsigned DEFAULT NULL, @@ -26700,11 +22645,13 @@ CREATE TABLE `awb` ( `operated` datetime DEFAULT NULL, `bookEntried` date DEFAULT NULL, `invoiceInFk` mediumint(8) unsigned DEFAULT NULL, - `isChecked` tinyint(3) DEFAULT '0', - `isTransitoryChecked` tinyint(3) DEFAULT '0', + `isChecked` tinyint(3) DEFAULT 0, + `isTransitoryChecked` tinyint(3) DEFAULT 0, `year` int(4) DEFAULT NULL, - `observation` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `hasFreightPrepaid` tinyint(3) DEFAULT '0', + `observation` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `hasFreightPrepaid` tinyint(3) DEFAULT 0, + `invoiceInPaletizedFk` mediumint(8) unsigned DEFAULT NULL, + `propertyNumber` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `codigo_UNIQUE` (`code`,`year`), KEY `proveedor_id` (`transitoryFk`), @@ -26712,47 +22659,33 @@ CREATE TABLE `awb` ( KEY `carguera_id` (`freightFk`), KEY `flight_id` (`flightFk`), KEY `awbInvoiceIn` (`invoiceInFk`), + KEY `awb_FK` (`docFk`), + KEY `awb_FK_3` (`invoiceInPaletizedFk`), CONSTRAINT `awbInvoiceIn` FOREIGN KEY (`invoiceInFk`) REFERENCES `invoiceIn` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `awbTransitoryFk` FOREIGN KEY (`transitoryFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE, + CONSTRAINT `awb_FK` FOREIGN KEY (`docFk`) REFERENCES `dms` (`id`) ON UPDATE CASCADE, + CONSTRAINT `awb_FK_1` FOREIGN KEY (`flightFk`) REFERENCES `vn2008`.`flight` (`flight_id`) ON UPDATE CASCADE, + CONSTRAINT `awb_FK_2` FOREIGN KEY (`freightFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE, + CONSTRAINT `awb_FK_3` FOREIGN KEY (`invoiceInPaletizedFk`) REFERENCES `invoiceIn` (`id`) ON UPDATE CASCADE, CONSTRAINT `awb_ibfk_1` FOREIGN KEY (`taxFk`) REFERENCES `taxCode` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`awb_bi` BEFORE INSERT ON `awb` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`awb_bi` + BEFORE INSERT ON `awb` + FOR EACH ROW BEGIN - - SET NEW.year= year(CURDATE()); + SET NEW.year= year(util.VN_CURDATE()); -END */;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`awb_au` AFTER UPDATE ON `awb` FOR EACH ROW -BEGIN - - IF NEW.amount <> OLD.amount THEN - CALL vn2008.buy_tarifas_awb(NEW.code); - END IF; END */;; DELIMITER ; @@ -26762,64 +22695,39 @@ DELIMITER ; /*!50003 SET collation_connection = @saved_col_connection */ ; -- --- Temporary table structure for view `awb__` +-- Temporary table structure for view `awbVolume` -- -DROP TABLE IF EXISTS `awb__`; -/*!50001 DROP VIEW IF EXISTS `awb__`*/; +DROP TABLE IF EXISTS `awbVolume`; +/*!50001 DROP VIEW IF EXISTS `awbVolume`*/; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; -/*!50001 CREATE TABLE `awb__` ( - `id` tinyint NOT NULL, - `code` tinyint NOT NULL, - `package` tinyint NOT NULL, - `weight` tinyint NOT NULL, - `created` tinyint NOT NULL, - `transitoryFk` tinyint NOT NULL, - `taxFk` tinyint NOT NULL, - `docFk` tinyint NOT NULL, - `amount` tinyint NOT NULL, - `freightFk` tinyint NOT NULL, - `m3` tinyint NOT NULL, - `stems` tinyint NOT NULL, - `flightFk` tinyint NOT NULL, - `volumeWeight` tinyint NOT NULL, - `hb` tinyint NOT NULL, - `rate` tinyint NOT NULL, - `booked` tinyint NOT NULL, - `issued` tinyint NOT NULL, - `operated` tinyint NOT NULL, - `bookEntried` tinyint NOT NULL, - `invoiceInFk` tinyint NOT NULL, - `isChecked` tinyint NOT NULL +/*!50001 CREATE TABLE `awbVolume` ( + `awbFk` tinyint NOT NULL, + `volume` tinyint NOT NULL, + `buyFk` tinyint NOT NULL ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; -- --- Table structure for table `bank` +-- Temporary table structure for view `bank` -- DROP TABLE IF EXISTS `bank`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `bank` ( - `id` int(11) NOT NULL DEFAULT '0', - `bank` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `account` varchar(10) CHARACTER SET utf8 DEFAULT NULL, - `cash` smallint(6) NOT NULL DEFAULT '0', - `entityFk` int(10) unsigned NOT NULL, - `isActive` tinyint(4) NOT NULL DEFAULT '1', - `currencyFk` tinyint(3) unsigned DEFAULT '1', - `code` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `BancosBanco` (`bank`), - KEY `fk_Bancos_entity1_idx` (`entityFk`), - KEY `foreignkey1_idx` (`cash`), - KEY `Bancoscurrency_idx` (`currencyFk`), - CONSTRAINT `Bancoscurrency` FOREIGN KEY (`currencyFk`) REFERENCES `currency` (`id`) ON UPDATE CASCADE, - CONSTRAINT `bank_FK` FOREIGN KEY (`cash`) REFERENCES `accountingType` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Apunta a la vista vn.Accounting\nLa columna cash es la FK de vn.AccountingType'; -/*!40101 SET character_set_client = @saved_cs_client */; +/*!50001 DROP VIEW IF EXISTS `bank`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `bank` ( + `id` tinyint NOT NULL, + `bank` tinyint NOT NULL, + `account` tinyint NOT NULL, + `cash` tinyint NOT NULL, + `entityFk` tinyint NOT NULL, + `isActive` tinyint NOT NULL, + `currencyFk` tinyint NOT NULL, + `code` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; -- -- Table structure for table `bankEntity` @@ -26829,47 +22737,72 @@ DROP TABLE IF EXISTS `bankEntity`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `bankEntity` ( - `countryFk` mediumint(8) unsigned NOT NULL DEFAULT '1', + `countryFk` mediumint(8) unsigned NOT NULL DEFAULT 1, `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `bic` varchar(11) CHARACTER SET utf8 DEFAULT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `bic` varchar(11) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `bic_UNIQUE` (`bic`), KEY `fg_entity1_idx` (`countryFk`), CONSTRAINT `fg_entity1` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Entidades bancarias '; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Entidades bancarias '; /*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`bankEntity_beforeInsert` + BEFORE INSERT ON `bankEntity` + FOR EACH ROW +BEGIN + CALL bankEntity_checkBic(NEW.bic); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`bankEntity_beforeUpdate` + BEFORE UPDATE ON `bankEntity` + FOR EACH ROW +BEGIN + IF NOT (NEW.bic <=> OLD.bic) THEN + CALL bankEntity_checkBic(NEW.bic); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; -- --- Temporary table structure for view `bankPolicy` +-- Table structure for table `bankEntityConfig` -- -DROP TABLE IF EXISTS `bankPolicy`; -/*!50001 DROP VIEW IF EXISTS `bankPolicy`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `bankPolicy` ( - `id` tinyint NOT NULL, - `ref` tinyint NOT NULL, - `amount` tinyint NOT NULL, - `balanceInterestDrawn` tinyint NOT NULL, - `commissionAvailableBalances` tinyint NOT NULL, - `openingCommission` tinyint NOT NULL, - `started` tinyint NOT NULL, - `ended` tinyint NOT NULL, - `bankFk` tinyint NOT NULL, - `companyFk` tinyint NOT NULL, - `supplierFk` tinyint NOT NULL, - `description` tinyint NOT NULL, - `hasGuarantee` tinyint NOT NULL, - `dmsFk` tinyint NOT NULL, - `notaryFk` tinyint NOT NULL, - `currencyFk` tinyint NOT NULL, - `amortizationTypeFk` tinyint NOT NULL, - `periodicityTypeFk` tinyint NOT NULL, - `insuranceExpired` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; +DROP TABLE IF EXISTS `bankEntityConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `bankEntityConfig` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `bicLength` tinyint(4) DEFAULT 11 COMMENT 'Tamaño del campo bic', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `beach` @@ -26879,14 +22812,10 @@ DROP TABLE IF EXISTS `beach`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `beach` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `warehouseFk` smallint(6) NOT NULL, - `x` int(11) NOT NULL, - `y` int(11) NOT NULL, - `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `isShowed` tinyint(1) DEFAULT '0', - PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Ubicaciones respecto a la playa del almacén'; + `code` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `warehouseFk` smallint(6) NOT NULL DEFAULT 60, + PRIMARY KEY (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Ubicaciones respecto a la playa del almacén'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26903,7 +22832,7 @@ CREATE TABLE `bionicConfig` ( `verdnaturaVolumeBox` int(11) NOT NULL, `itemCarryBox` int(11) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26915,12 +22844,12 @@ DROP TABLE IF EXISTS `bookingPlanner`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `bookingPlanner` ( `id` int(10) NOT NULL AUTO_INCREMENT, - `effectived` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `pgcFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL, - `taxAreaFk` varchar(15) CHARACTER SET utf8 NOT NULL DEFAULT 'SPAIN', + `effectived` timestamp NOT NULL DEFAULT current_timestamp(), + `pgcFk` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `taxAreaFk` varchar(15) CHARACTER SET utf8mb3 NOT NULL DEFAULT 'SPAIN', `priority` int(2) unsigned DEFAULT NULL, - `taxClassFk` tinyint(3) unsigned NOT NULL DEFAULT '1', - `countryFk` mediumint(8) unsigned NOT NULL DEFAULT '1', + `taxClassFk` tinyint(3) unsigned NOT NULL DEFAULT 1, + `countryFk` mediumint(8) unsigned NOT NULL DEFAULT 1, PRIMARY KEY (`id`), KEY `pgcFk_bookingPlanner_idx` (`pgcFk`), KEY `taxClassFk` (`taxClassFk`), @@ -26930,7 +22859,7 @@ CREATE TABLE `bookingPlanner` ( CONSTRAINT `bookingPlanner_ibfk_1` FOREIGN KEY (`pgcFk`) REFERENCES `pgc` (`code`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `bookingPlanner_ibfk_2` FOREIGN KEY (`taxClassFk`) REFERENCES `taxClass` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `bookingPlanner_ibfk_3` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON DELETE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26945,27 +22874,29 @@ CREATE TABLE `botanicExport` ( `ediGenusFk` mediumint(8) unsigned NOT NULL, `ediSpecieFk` mediumint(8) unsigned DEFAULT NULL, `countryFk` mediumint(8) unsigned DEFAULT NULL, - `restriction` enum('Sin restriccion','Importacion Prohibida','pasaporte fitosanitario','pasaporte individual','declaracion origen') CHARACTER SET utf8 NOT NULL, - `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `isProtectedZone` tinyint(1) NOT NULL DEFAULT '0', - `code` enum('importProhibited','phytosanitaryPassport','individualPassport') COLLATE utf8_unicode_ci DEFAULT NULL, + `restriction` enum('Sin restriccion','Importacion Prohibida','pasaporte fitosanitario','pasaporte individual','declaracion origen') CHARACTER SET utf8mb3 NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isProtectedZone` tinyint(1) NOT NULL DEFAULT 0, + `code` enum('importProhibited','phytosanitaryPassport','individualPassport') COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `Id_Paises` (`countryFk`), KEY `botanicExport_ibfk_2_idx` (`ediGenusFk`), KEY `botanicExport_ibfk_3_idx` (`ediSpecieFk`), CONSTRAINT `botanicExport_ibfk_1` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Especifica los generos y especies prohibidos en paises'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Especifica los generos y especies prohibidos en paises'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`botanicExport_beforeInsert` BEFORE INSERT ON `botanicExport` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`botanicExport_beforeInsert` + BEFORE INSERT ON `botanicExport` + FOR EACH ROW BEGIN IF (SELECT botanicExport_isUpdatable (NEW.ediGenusFk, NEW.ediSpecieFk, NEW.countryFk, NEW.restriction) ) > 0 THEN CALL util.throw ('Datos duplicados'); @@ -26977,6 +22908,303 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +-- +-- Table structure for table `budget` +-- + +DROP TABLE IF EXISTS `budget`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `budget` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `name` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + `started` date DEFAULT NULL, + `finished` date DEFAULT NULL, + `userFk` int(10) unsigned DEFAULT NULL, + `departmentFk` int(11) DEFAULT NULL, + `supplierFk` int(11) DEFAULT NULL, + `photo` blob DEFAULT NULL, + `amount` decimal(10,2) DEFAULT NULL, + `projectFk` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `budget_FK` (`projectFk`), + KEY `budget_FK_1` (`userFk`), + KEY `budget_FK_2` (`departmentFk`), + KEY `budget_FK_3` (`supplierFk`), + CONSTRAINT `budget_FK` FOREIGN KEY (`projectFk`) REFERENCES `project` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `budget_FK_1` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `budget_FK_2` FOREIGN KEY (`departmentFk`) REFERENCES `department` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `budget_FK_3` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Master de presupuestos de project'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `budgetDms` +-- + +DROP TABLE IF EXISTS `budgetDms`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `budgetDms` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `budgetFk` int(11) NOT NULL, + `dmsFk` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `budgetDms_FK` (`budgetFk`), + KEY `budgetDms_FK_1` (`dmsFk`), + CONSTRAINT `budgetDms_FK` FOREIGN KEY (`budgetFk`) REFERENCES `budget` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `budgetDms_FK_1` FOREIGN KEY (`dmsFk`) REFERENCES `dms` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Gestion documental de budget'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `budgetInvoiceIn` +-- + +DROP TABLE IF EXISTS `budgetInvoiceIn`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `budgetInvoiceIn` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `budgetFk` int(11) NOT NULL, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `invoiceInFk` mediumint(8) unsigned NOT NULL, + `amount` decimal(10,2) NOT NULL, + PRIMARY KEY (`id`), + KEY `budgetInvoiceIn_FK` (`budgetFk`), + KEY `budgetInvoiceIn_FK_1` (`invoiceInFk`), + CONSTRAINT `budgetInvoiceIn_FK` FOREIGN KEY (`budgetFk`) REFERENCES `budget` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `budgetInvoiceIn_FK_1` FOREIGN KEY (`invoiceInFk`) REFERENCES `invoiceIn` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Facturas relativas al presupuesto'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `budgetNotes` +-- + +DROP TABLE IF EXISTS `budgetNotes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `budgetNotes` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `budgetFk` int(11) NOT NULL, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `txt` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `userFk` int(10) unsigned DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `budgetNotes_FK` (`budgetFk`), + KEY `budgetNotes_FK_2` (`userFk`), + CONSTRAINT `budgetNotes_FK` FOREIGN KEY (`budgetFk`) REFERENCES `budget` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `budgetNotes_FK_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Historico de budget'; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`budgetNotes_BeforeInsert` + BEFORE INSERT ON `budgetNotes` + FOR EACH ROW +BEGIN + + IF ISNULL(NEW.userFk) THEN + + SET NEW.userFk = account.myUser_getId(); + + END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `business` +-- + +DROP TABLE IF EXISTS `business`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `business` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `companyCodeFk` char(3) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `started` date DEFAULT NULL, + `ended` date DEFAULT NULL, + `workerBusiness` longtext DEFAULT NULL, + `reasonEndFk` int(11) DEFAULT NULL, + `payedHolidays` decimal(5,2) NOT NULL DEFAULT 0.00, + `occupationCodeFk` varchar(1) DEFAULT NULL, + `workerFk` int(10) unsigned NOT NULL, + `notes` longtext DEFAULT NULL, + `departmentFk` int(11) DEFAULT NULL, + `workerBusinessProfessionalCategoryFk` int(11) DEFAULT NULL, + `calendarTypeFk` int(11) DEFAULT 1, + `isHourlyLabor` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Contrato por horas', + `workcenterFk` int(11) NOT NULL, + `rate` int(11) DEFAULT NULL, + `workerBusinessCategoryFk` int(11) DEFAULT NULL, + `workerBusinessTypeFk` int(11) DEFAULT NULL, + `amount` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT 'Importe pactado', + `workerBusinessAgreementFk` int(11) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `business_occupationCodeFk` (`occupationCodeFk`), + KEY `business_companyCodeFk` (`companyCodeFk`), + KEY `business_workerFk_idx` (`workerFk`), + KEY `business_departmentFk_idx` (`departmentFk`), + KEY `business_workerBusinessProfessionalCategoryFk_idx` (`workerBusinessProfessionalCategoryFk`), + KEY `business_calendarTypeFk_idx` (`calendarTypeFk`), + KEY `business_workerBusinessCategoryFk` (`workerBusinessCategoryFk`), + KEY `business_workerBusinessTypeFk_idx` (`workerBusinessTypeFk`), + KEY `business_workerBusinessAgreementFk_idx` (`workerBusinessAgreementFk`), + CONSTRAINT `business_calendarTypeFk` FOREIGN KEY (`calendarTypeFk`) REFERENCES `postgresql`.`calendar_labour_type` (`calendar_labour_type_id`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `business_companyCodeFk` FOREIGN KEY (`companyCodeFk`) REFERENCES `company` (`code`) ON UPDATE CASCADE, + CONSTRAINT `business_departmentFk` FOREIGN KEY (`departmentFk`) REFERENCES `department` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `business_occupationCodeFk` FOREIGN KEY (`occupationCodeFk`) REFERENCES `occupationCode` (`code`) ON UPDATE CASCADE, + CONSTRAINT `business_workerBusinessAgreementFk` FOREIGN KEY (`workerBusinessAgreementFk`) REFERENCES `postgresql`.`labour_agreement` (`labour_agreement_id`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `business_workerBusinessProfessionalCategoryFk` FOREIGN KEY (`workerBusinessProfessionalCategoryFk`) REFERENCES `postgresql`.`professional_category` (`professional_category_id`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `business_workerBusinessTypeFk` FOREIGN KEY (`workerBusinessTypeFk`) REFERENCES `workerBusinessType` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `business_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`business_beforeInsert` + BEFORE INSERT ON `business` + FOR EACH ROW +BEGIN + IF NEW.ended IS NULL THEN + SET NEW.payedHolidays = 0; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`business_afterInsert` + AFTER INSERT ON `business` + FOR EACH ROW +BEGIN + CALL worker_updateBusiness(NEW.workerFk); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`business_beforeUpdate` + BEFORE UPDATE ON `business` + FOR EACH ROW +BEGIN + DECLARE isOverlapping BOOL; + + IF NEW.ended IS NULL THEN + SET NEW.payedHolidays = 0; + END IF; + + IF !(OLD.started <=> NEW.started AND OLD.ended <=> NEW.ended) THEN + + SELECT COUNT(*) > 0 INTO isOverlapping + FROM business b + WHERE (util.hasDateOverlapped( + NEW.started, + IFNULL(NEW.ended, b.started), + b.started, + IFNULL(b.ended, NEW.started)) + OR (NEW.ended <=> NULL AND b.ended <=> NULL)) + AND b.id <> OLD.id + AND workerFk = OLD.workerFk; + + IF isOverlapping THEN + CALL util.throw ('IS_OVERLAPPING'); + END IF; + + END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`business_afterUpdate` + AFTER UPDATE ON `business` + FOR EACH ROW +BEGIN + CALL worker_updateBusiness(NEW.workerFk); + + IF NOT (OLD.workerFk <=> NEW.workerFk) THEN + CALL worker_updateBusiness(OLD.workerFk); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`business_afterDelete` + AFTER DELETE ON `business` + FOR EACH ROW +BEGIN + CALL worker_updateBusiness(OLD.workerFk); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + -- -- Temporary table structure for view `businessCalendar` -- @@ -27002,9 +23230,9 @@ DROP TABLE IF EXISTS `businessReasonEnd`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `businessReasonEnd` ( `id` tinyint(3) NOT NULL AUTO_INCREMENT, - `reason` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `reason` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27015,10 +23243,10 @@ DROP TABLE IF EXISTS `businessType`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `businessType` ( - `code` varchar(100) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `description` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27030,33 +23258,33 @@ DROP TABLE IF EXISTS `buy`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `buy` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `entryFk` int(11) NOT NULL DEFAULT '0', - `itemFk` int(11) NOT NULL DEFAULT '90', - `quantity` int(11) DEFAULT '0', - `dispatched` int(11) NOT NULL DEFAULT '0', - `buyingValue` decimal(10,3) DEFAULT '0.000', - `freightValue` decimal(10,3) DEFAULT '0.000', - `isIgnored` tinyint(1) NOT NULL DEFAULT '0', - `stickers` int(11) DEFAULT '0', - `packing` int(11) DEFAULT '0', - `grouping` smallint(5) unsigned NOT NULL DEFAULT '1', - `groupingMode` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0=sin obligar 1=groping 2=packing', + `entryFk` int(11) NOT NULL DEFAULT 0, + `itemFk` int(11) NOT NULL DEFAULT 90, + `quantity` int(11) DEFAULT 0, + `dispatched` int(11) NOT NULL DEFAULT 0, + `buyingValue` decimal(10,3) DEFAULT 0.000, + `freightValue` decimal(10,3) DEFAULT 0.000, + `isIgnored` tinyint(1) NOT NULL DEFAULT 0, + `stickers` int(11) NOT NULL DEFAULT 0, + `packing` int(11) DEFAULT 0, + `grouping` smallint(5) unsigned NOT NULL DEFAULT 1, + `groupingMode` tinyint(4) NOT NULL DEFAULT 0 COMMENT '0=sin obligar 1=groping 2=packing', `containerFk` smallint(5) unsigned DEFAULT NULL, - `comissionValue` decimal(10,3) DEFAULT '0.000', - `packageValue` decimal(10,3) DEFAULT '0.000', - `location` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, - `packageFk` varchar(10) COLLATE utf8_unicode_ci DEFAULT '--', - `price1` decimal(10,2) DEFAULT '0.00', - `price2` decimal(10,2) DEFAULT '0.00', - `price3` decimal(10,2) DEFAULT '0.00', - `minPrice` decimal(10,2) DEFAULT '0.00', - `producer` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `printedStickers` int(11) DEFAULT '0', - `workerFk` int(11) DEFAULT '0', - `isChecked` tinyint(1) NOT NULL DEFAULT '0', - `isPickedOff` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Esta mercancia no va a la zona de picking.', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `__cm2` int(10) unsigned NOT NULL DEFAULT '0', + `comissionValue` decimal(10,3) DEFAULT 0.000, + `packageValue` decimal(10,3) DEFAULT 0.000, + `location` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `packageFk` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT '--', + `price1` decimal(10,2) DEFAULT 0.00, + `price2` decimal(10,2) DEFAULT 0.00, + `price3` decimal(10,2) DEFAULT 0.00, + `minPrice` decimal(10,2) DEFAULT 0.00, + `producer` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `printedStickers` int(11) DEFAULT 0, + `workerFk` int(11) DEFAULT 0, + `isChecked` tinyint(1) NOT NULL DEFAULT 0, + `isPickedOff` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Esta mercancia no va a la zona de picking.', + `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `__cm2` int(10) unsigned NOT NULL DEFAULT 0, `ektFk` int(11) DEFAULT NULL, `weight` decimal(10,2) unsigned DEFAULT NULL, `deliveryFk` int(11) DEFAULT NULL, @@ -27071,44 +23299,44 @@ CREATE TABLE `buy` ( KEY `buy_fk_4_idx` (`deliveryFk`), KEY `buy_FK` (`itemOriginalFk`), CONSTRAINT `buy_FK` FOREIGN KEY (`itemOriginalFk`) REFERENCES `item` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `buy_FK_1` FOREIGN KEY (`containerFk`) REFERENCES `vn2008`.`container` (`container_id`) ON UPDATE CASCADE, CONSTRAINT `buy_ektFk` FOREIGN KEY (`ektFk`) REFERENCES `edi`.`ekt` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `buy_fk_4` FOREIGN KEY (`deliveryFk`) REFERENCES `edi`.`deliveryInformation` (`ID`) ON DELETE SET NULL ON UPDATE SET NULL, CONSTRAINT `buy_ibfk_1` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON UPDATE CASCADE, CONSTRAINT `buy_ibfk_2` FOREIGN KEY (`packageFk`) REFERENCES `packaging` (`id`) ON UPDATE CASCADE, CONSTRAINT `buy_id` FOREIGN KEY (`entryFk`) REFERENCES `entry` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, CONSTRAINT `buy_itemfk` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `buy_beforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`buy_beforeInsert` BEFORE INSERT ON `buy` - FOR EACH ROW + FOR EACH ROW trig: BEGIN DECLARE vWarehouse INT; DECLARE vLanding DATE; DECLARE vGrouping INT; DECLARE vGroupingMode TINYINT; DECLARE vGenericFk INT; - - IF @isModeInventory THEN + DECLARE vGenericInDate BOOL; + + IF @isModeInventory THEN LEAVE trig; END IF; - - CALL buy_checkGrouping(NEW.`grouping`); + CALL buy_checkGrouping(NEW.`grouping`); SELECT t.warehouseInFk, t.landed INTO vWarehouse, vLanding - FROM entry e + FROM entry e JOIN travel t ON t.id = e.travelFk WHERE e.id = NEW.entryFk; - SELECT b.`grouping`, b.groupingMode INTO vGrouping, vGroupingMode FROM buy b JOIN entry e ON e.id = b.entryFk @@ -27118,101 +23346,32 @@ trig: BEGIN AND !b.isIgnored ORDER BY t.warehouseInFk = vWarehouse DESC, t.landed DESC, b.id DESC LIMIT 1; - IF NEW.`grouping` IS NULL THEN SET NEW.`grouping` = vGrouping; END IF; - IF NEW.groupingMode IS NULL THEN SET NEW.groupingMode = vGroupingMode; END IF; - -- Generics - SELECT i.genericFk INTO vGenericFk FROM vn.item i WHERE i.id = NEW.itemFk; - + IF vGenericFk THEN - - SET NEW.itemOriginalFk = NEW.itemFk; - - SET NEW.itemFk = vGenericFk; - + + SELECT COUNT(*) INTO vGenericInDate + FROM vn.genericAllocation ga + JOIN vn.entry e ON e.id = NEW.entryFk + JOIN vn.travel tr on tr.id = e.travelFk + WHERE ga.itemFk = vGenericFk + AND tr.landed BETWEEN ga.startDated AND ga.endDated; + IF vGenericInDate THEN + SET NEW.itemOriginalFk = NEW.itemFk; + + SET NEW.itemFk = vGenericFk; + END IF; + END IF; - -END */;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `buy_afterInsert` - AFTER INSERT ON `buy` - FOR EACH ROW -trig: BEGIN - CALL stock.log_add('buy', NEW.id, NULL); - - IF @isModeInventory THEN - LEAVE trig; - END IF; - - CALL buy_afterUpsert(NEW.id); -END */;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `buy_beforeUpdate` - BEFORE UPDATE ON `buy` - FOR EACH ROW -trig:BEGIN - - DECLARE vGenericFk INT; - - IF @isTriggerDisabled THEN - - LEAVE trig; - - END IF; - - IF !(NEW.`grouping` <=> OLD.`grouping`) THEN - CALL buy_checkGrouping(NEW.`grouping`); - END IF; - - -- Generics - - SELECT i.genericFk INTO vGenericFk - FROM vn.item i - WHERE i.id = NEW.itemFk; - - IF vGenericFk THEN - - SET NEW.itemOriginalFk = NEW.itemFk; - - SET NEW.itemFk = vGenericFk; - - END IF; - END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -27224,16 +23383,121 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `buy_afterUpdate` AFTER UPDATE ON `buy` FOR EACH ROW trig: BEGIN +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`buy_afterInsert` + AFTER INSERT ON `buy` + FOR EACH ROW +trig: BEGIN + DECLARE vValues VARCHAR(255); + + CALL stock.log_add('buy', NEW.id, NULL); + + IF @isModeInventory THEN + LEAVE trig; + END IF; + + IF @isTriggerDisabled THEN + LEAVE trig; + END IF; + + CALL buy_afterUpsert(NEW.id); + + /*IF entry_isInventoryOrPrevious(NEW.entryFk) THEN + SET vValues = CONCAT_WS(',', + NEW.entryFk, + NEW.itemFk, + NEW.quantity, + NEW.price1, + NEW.price2, + NEW.price3 + ); + CALL entry_notifyChanged(NEW.entryFk, NEW.id, vValues, NULL); + END IF;*/ +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`buy_beforeUpdate` + BEFORE UPDATE ON `buy` + FOR EACH ROW +trig:BEGIN + DECLARE vGenericFk INT; + DECLARE vGenericInDate BOOL; + DECLARE vIsInventory BOOL; + IF @isTriggerDisabled THEN + LEAVE trig; + END IF; + IF !(NEW.`grouping` <=> OLD.`grouping`) THEN + CALL buy_checkGrouping(NEW.`grouping`); + END IF; + -- Generics + SELECT i.genericFk INTO vGenericFk + FROM vn.item i + WHERE i.id = NEW.itemFk; + + IF vGenericFk THEN + SELECT COUNT(*) INTO vGenericInDate + FROM vn.genericAllocation ga + JOIN vn.entry e ON e.id = NEW.entryFk + JOIN vn.travel tr on tr.id = e.travelFk + WHERE ga.itemFk = vGenericFk + AND tr.landed BETWEEN ga.startDated AND ga.endDated; + IF vGenericInDate THEN + SET NEW.itemOriginalFk = NEW.itemFk; + SET NEW.itemFk = vGenericFk; + END IF; + END IF; + SELECT COUNT(*) INTO vIsInventory + FROM vn.entry e + JOIN vn.supplier s ON s.id = e.supplierFk + JOIN vn.entryConfig ec ON ec.inventorySupplierFk = e.supplierFk + WHERE e.id = NEW.entryFk; + + IF vIsInventory THEN + IF NOT NEW.printedStickers <=> OLD.printedStickers THEN + CALL util.throw("Stickers cannot be modified if they are inventory"); + END IF; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`buy_afterUpdate` + AFTER UPDATE ON `buy` + FOR EACH ROW +trig: BEGIN DECLARE vLanded DATE; DECLARE vBuyerFk INT; DECLARE vIsBuyerToBeEmailed BOOL; DECLARE vItemName VARCHAR(50); - + DECLARE vNewValues VARCHAR(255); + DECLARE vOldValues VARCHAR(255); + IF !(NEW.id <=> OLD.id) OR !(NEW.entryFk <=> OLD.entryFk) OR !(NEW.itemFk <=> OLD.itemFk) @@ -27241,41 +23505,39 @@ DELIMITER ;; OR !(NEW.created <=> OLD.created) THEN CALL stock.log_add('buy', NEW.id, OLD.id); END IF; - + IF @isModeInventory THEN LEAVE trig; END IF; + IF @isTriggerDisabled THEN + LEAVE trig; + END IF; + CALL buy_afterUpsert(NEW.id); - IF !(NEW.weight <=> OLD.weight) AND NEW.weight THEN - UPDATE item - SET density = NEW.weight / (item_getVolume(NEW.itemFk, NEW.packageFk) / 1000000) - WHERE id = NEW.itemFk; - END IF; - SELECT w.isBuyerToBeEmailed, t.landed INTO vIsBuyerToBeEmailed, vLanded FROM entry e JOIN travel t ON t.id = e.travelFk - JOIN warehouse w ON w.id = t.warehouseInFk + JOIN warehouse w ON w.id = t.warehouseInFk WHERE e.id = NEW.entryFk; - - SELECT it.workerFk, i.longName + + SELECT it.workerFk, i.longName INTO vBuyerFk, vItemName FROM itemCategory k JOIN itemType it ON it.categoryFk = k.id JOIN item i ON i.typeFk = it.id WHERE i.id = OLD.itemFk; - - IF vIsBuyerToBeEmailed AND - vBuyerFk != account.myUser_getId() AND - vLanded = CURDATE() THEN - IF !(NEW.itemFk <=> OLD.itemFk) OR - !(NEW.quantity <=> OLD.quantity) OR + + IF vIsBuyerToBeEmailed AND + vBuyerFk != account.myUser_getId() AND + vLanded = util.VN_CURDATE() THEN + IF !(NEW.itemFk <=> OLD.itemFk) OR + !(NEW.quantity <=> OLD.quantity) OR !(NEW.packing <=> OLD.packing) OR - !(NEW.grouping <=> OLD.grouping) OR - !(NEW.packageFk <=> OLD.packageFk) OR + !(NEW.grouping <=> OLD.grouping) OR + !(NEW.packageFk <=> OLD.packageFk) OR !(NEW.weight <=> OLD.weight) THEN CALL vn.mail_insert( CONCAT(account.user_getNameFromId(vBuyerFk),'@verdnatura.es'), @@ -27284,7 +23546,38 @@ DELIMITER ;; 'Este email se ha generado automáticamente' ); END IF; - END IF; + END IF; + + IF OLD.printedStickers <> 0 AND NEW.printedStickers = 0 THEN + CALL util.debugAdd('buy_deleted', CONCAT(OLD.id,' ', OLD.itemFk,' ', vn.getWorkerCode())); + END IF; +/* + IF (!(NEW.entryFk <=> OLD.entryFk) + OR !(NEW.quantity <=> OLD.quantity) + OR !(NEW.price1 <=> OLD.price1) + OR !(NEW.price2 <=> OLD.price2) + OR !(NEW.price3 <=> OLD.price3)) + AND (entry_isInventoryOrPrevious(NEW.entryFk) + OR entry_isInventoryOrPrevious(OLD.entryFk)) THEN + SET vOldValues = CONCAT_WS(',', + OLD.entryFk, + OLD.itemFk, + OLD.quantity, + OLD.price1, + OLD.price2, + OLD.price3 + ); + SET vNewValues = CONCAT_WS(',', + NEW.entryFk, + NEW.itemFk, + NEW.quantity, + NEW.price1, + NEW.price2, + NEW.price3 + ); + CALL entry_notifyChanged(NEW.entryFk, NEW.id, vNewValues, vOldValues); + END IF; + */ END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -27294,19 +23587,18 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `buy_beforeDelete` - BEFORE DELETE ON `buy` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`buy_beforeDelete` + BEFORE DELETE ON buy FOR EACH ROW -BEGIN - IF OLD.printedStickers > 0 THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'A buy from which labels have been printed cannot be deleted'; +BEGIN + IF OLD.printedStickers <> 0 THEN + CALL util.throw("it is not possible to delete buys with printed labels "); END IF; END */;; DELIMITER ; @@ -27319,15 +23611,33 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `buy_afterDelete` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`buy_afterDelete` AFTER DELETE ON `buy` - FOR EACH ROW -BEGIN + FOR EACH ROW +trig: BEGIN + DECLARE vValues VARCHAR(255); + + IF @isTriggerDisabled THEN + LEAVE trig; + END IF; + CALL stock.log_add('buy', NULL, OLD.id); + + /*IF entry_isInventoryOrPrevious(OLD.entryFk) THEN + SET vValues = CONCAT_WS(',', + OLD.entryFk, + OLD.itemFk, + OLD.quantity, + OLD.price1, + OLD.price2, + OLD.price3 + ); + CALL entry_notifyChanged(OLD.entryFk, OLD.id, NULL, vValues); + END IF;*/ END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -27344,12 +23654,12 @@ DROP TABLE IF EXISTS `buyMark`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `buyMark` ( `id` int(11) NOT NULL, - `comment` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `comment` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `mark` tinyint(1) DEFAULT NULL, - `odbcDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `odbcDate` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), CONSTRAINT `Compres_mark_ibfk_1` FOREIGN KEY (`id`) REFERENCES `buy` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27395,13 +23705,12 @@ CREATE TABLE `calendar` ( `dayOffTypeFk` int(11) NOT NULL, `dated` date NOT NULL, PRIMARY KEY (`id`), - UNIQUE KEY `business_id_date` (`businessFk`,`dated`), KEY `calendar_employee_business_labour_id_idx` (`businessFk`), KEY `calendar_employee_calendar_state_calendar_state_id_idx` (`dayOffTypeFk`), KEY `id_index` (`id`), - CONSTRAINT `calendar_businessFk` FOREIGN KEY (`businessFk`) REFERENCES `postgresql`.`business` (`business_id`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `calendar_employee_state_id` FOREIGN KEY (`dayOffTypeFk`) REFERENCES `postgresql`.`calendar_state` (`calendar_state_id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8; + CONSTRAINT `calendar_FK` FOREIGN KEY (`dayOffTypeFk`) REFERENCES `absenceType` (`id`) ON UPDATE CASCADE, + CONSTRAINT `calendar_businessFk` FOREIGN KEY (`businessFk`) REFERENCES `business` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27425,7 +23734,7 @@ CREATE TABLE `calendarHolidays` ( CONSTRAINT `calendarHolidaysNameFk` FOREIGN KEY (`calendarHolidaysNameFk`) REFERENCES `calendarHolidaysName` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `calendarholidaystypeFk` FOREIGN KEY (`calendarHolidaysTypeFk`) REFERENCES `calendarHolidaysType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `workCenterFk` FOREIGN KEY (`workCenterFk`) REFERENCES `workCenter` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27439,7 +23748,7 @@ CREATE TABLE `calendarHolidaysName` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27454,25 +23763,9 @@ CREATE TABLE `calendarHolidaysType` ( `name` varchar(50) NOT NULL, `hexColour` char(7) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `calendar__` --- - -DROP TABLE IF EXISTS `calendar__`; -/*!50001 DROP VIEW IF EXISTS `calendar__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `calendar__` ( - `id` tinyint NOT NULL, - `businessFk` tinyint NOT NULL, - `dayOffTypeFk` tinyint NOT NULL, - `dated` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `campaign` -- @@ -27482,12 +23775,12 @@ DROP TABLE IF EXISTS `campaign`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `campaign` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `code` enum('mothersDay','allSaints','valentinesDay') COLLATE utf8_unicode_ci NOT NULL, - `dated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `scopeDays` int(11) NOT NULL DEFAULT '15', + `code` enum('mothersDay','allSaints','valentinesDay') COLLATE utf8mb3_unicode_ci NOT NULL, + `dated` datetime NOT NULL DEFAULT current_timestamp(), + `scopeDays` int(11) NOT NULL DEFAULT 15, PRIMARY KEY (`id`), UNIQUE KEY `campaign_dated_uindex` (`dated`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27499,10 +23792,10 @@ DROP TABLE IF EXISTS `category`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `category` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `nick` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `nick` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27514,13 +23807,36 @@ DROP TABLE IF EXISTS `chain`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `chain` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `rappel` decimal(5,2) NOT NULL DEFAULT '0.00', + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `rappel` decimal(5,2) NOT NULL DEFAULT 0.00, `componentFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `chain_FK` (`componentFk`), CONSTRAINT `chain_FK` FOREIGN KEY (`componentFk`) REFERENCES `component` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Grupos de clientes'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Grupos de clientes'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `chat` +-- + +DROP TABLE IF EXISTS `chat`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `chat` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `senderFk` int(10) unsigned DEFAULT NULL, + `recipient` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `dated` datetime DEFAULT NULL, + `checkUserStatus` tinyint(1) DEFAULT NULL, + `message` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `status` tinyint(1) DEFAULT NULL, + `attempts` int(1) DEFAULT NULL, + `error` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `chat_FK` (`senderFk`), + CONSTRAINT `chat_FK` FOREIGN KEY (`senderFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27532,12 +23848,12 @@ DROP TABLE IF EXISTS `chatConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `chatConfig` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `host` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `api` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `user` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `password` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `host` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `api` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `user` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `password` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27551,15 +23867,16 @@ CREATE TABLE `claim` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `ticketCreated` date NOT NULL, `claimDepartmentFk__` tinyint(3) unsigned DEFAULT NULL, - `claimStateFk` int(10) unsigned NOT NULL DEFAULT '1', - `observation` text COLLATE utf8_unicode_ci, + `claimStateFk` int(10) unsigned NOT NULL DEFAULT 1, + `observation` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `clientFk` int(11) NOT NULL, `workerFk` int(11) NOT NULL, - `responsibility` int(1) unsigned NOT NULL DEFAULT '3', - `isChargedToMana` tinyint(1) NOT NULL DEFAULT '0', - `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `responsibility` int(1) unsigned NOT NULL DEFAULT 3, + `isChargedToMana` tinyint(1) NOT NULL DEFAULT 0, + `created` timestamp NULL DEFAULT current_timestamp(), `ticketFk` int(11) DEFAULT NULL, `hasToPickUp` tinyint(1) NOT NULL, + `packages` smallint(10) unsigned DEFAULT 0 COMMENT 'packages received by the client', PRIMARY KEY (`id`), KEY `cl_dep_id` (`claimDepartmentFk__`), KEY `cl_est_id` (`claimStateFk`), @@ -27570,7 +23887,7 @@ CREATE TABLE `claim` ( CONSTRAINT `claim_ibfk_3` FOREIGN KEY (`claimStateFk`) REFERENCES `claimState` (`id`) ON UPDATE CASCADE, CONSTRAINT `claim_ibfk_4` FOREIGN KEY (`claimDepartmentFk__`) REFERENCES `vn2008`.`cl_dep` (`id`) ON UPDATE CASCADE, CONSTRAINT `claim_ibfk_5` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Reclamaciones, tabla principal'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Reclamaciones, tabla principal'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27584,28 +23901,28 @@ CREATE TABLE `claimBeginning` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `claimFk` int(10) unsigned NOT NULL, `saleFk` int(11) DEFAULT NULL, - `claimComplaintFk__` int(10) unsigned NOT NULL DEFAULT '1', - `claimRequestFk__` int(1) unsigned NOT NULL DEFAULT '1', + `claimComplaintFk__` int(10) unsigned NOT NULL DEFAULT 1, + `claimRequestFk__` int(1) unsigned NOT NULL DEFAULT 1, `quantity` double DEFAULT NULL, PRIMARY KEY (`id`), KEY `Id_Movimiento` (`saleFk`), KEY `cl_main_id` (`claimFk`), CONSTRAINT `claimBeginning_ibfk_7` FOREIGN KEY (`saleFk`) REFERENCES `sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `claimBeginning_ibfk_8` FOREIGN KEY (`claimFk`) REFERENCES `claim` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Detalle de las reclamaciones'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Detalle de las reclamaciones'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`claimBeginning_afterInsert` - AFTER INSERT ON `claimBeginning` - FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`claimBeginning_afterInsert` + AFTER INSERT ON `claimBeginning` + FOR EACH ROW BEGIN DECLARE vTicket INT; @@ -27613,7 +23930,7 @@ BEGIN FROM sale WHERE id = NEW.saleFk; - UPDATE claim + UPDATE claim SET ticketFk = vTicket WHERE id = NEW.claimFk; END */;; @@ -27623,6 +23940,21 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +-- +-- Table structure for table `claimConfig` +-- + +DROP TABLE IF EXISTS `claimConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `claimConfig` ( + `id` int(11) NOT NULL, + `pickupContact` varchar(250) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `maxResponsibility` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Table structure for table `claimDestination` -- @@ -27632,12 +23964,12 @@ DROP TABLE IF EXISTS `claimDestination`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `claimDestination` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, - `description` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, `addressFk` int(10) DEFAULT NULL COMMENT 'Indica el consignatario para el ticket que regulariza el inventario', PRIMARY KEY (`id`), KEY `clSolAddressFk_idx` (`addressFk`), CONSTRAINT `clSolAddressFk` FOREIGN KEY (`addressFk`) REFERENCES `address` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Solucion ofrecida a la reclamación'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Solucion ofrecida a la reclamación'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27650,12 +23982,12 @@ DROP TABLE IF EXISTS `claimDevelopment`; CREATE TABLE `claimDevelopment` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `claimFk` int(10) unsigned NOT NULL, - `claimResponsibleFk` int(10) unsigned NOT NULL DEFAULT '1', + `claimResponsibleFk` int(10) unsigned NOT NULL DEFAULT 1, `workerFk` int(10) unsigned DEFAULT NULL, - `claimReasonFk` int(10) unsigned NOT NULL DEFAULT '1', - `claimResultFk` int(10) unsigned NOT NULL DEFAULT '1', - `claimRedeliveryFk` tinyint(3) unsigned NOT NULL DEFAULT '1', - `claimDestinationFk` tinyint(3) unsigned NOT NULL DEFAULT '2', + `claimReasonFk` int(10) unsigned NOT NULL DEFAULT 1, + `claimResultFk` int(10) unsigned NOT NULL DEFAULT 1, + `claimRedeliveryFk` tinyint(3) unsigned NOT NULL DEFAULT 1, + `claimDestinationFk` tinyint(3) unsigned NOT NULL DEFAULT 2, PRIMARY KEY (`id`), KEY `cl_main_id` (`claimFk`), KEY `cl_res_id` (`claimResponsibleFk`), @@ -27671,7 +24003,7 @@ CREATE TABLE `claimDevelopment` ( CONSTRAINT `claimDevelopment_ibfk_7` FOREIGN KEY (`claimReasonFk`) REFERENCES `claimReason` (`id`) ON UPDATE CASCADE, CONSTRAINT `claimDevelopment_ibfk_8` FOREIGN KEY (`claimResultFk`) REFERENCES `claimResult` (`id`) ON UPDATE CASCADE, CONSTRAINT `claimDevelopment_ibfk_9` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Causas de las reclamaciones'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Causas de las reclamaciones'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27688,7 +24020,7 @@ CREATE TABLE `claimDms` ( KEY `dmsFk_idx` (`dmsFk`), CONSTRAINT `claimFk` FOREIGN KEY (`claimFk`) REFERENCES `claim` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `dmsFk` FOREIGN KEY (`dmsFk`) REFERENCES `dms` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27702,9 +24034,9 @@ CREATE TABLE `claimEnd` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `saleFk` int(11) DEFAULT NULL, `claimFk` int(10) unsigned NOT NULL, - `workerFk` int(10) unsigned NOT NULL DEFAULT '20', + `workerFk` int(10) unsigned NOT NULL DEFAULT 20, `claimDestinationFk` tinyint(4) DEFAULT NULL, - `isGreuge` tinyint(4) NOT NULL DEFAULT '0', + `isGreuge` tinyint(4) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `cl_main_id` (`claimFk`), KEY `Id_Trabajador` (`workerFk`), @@ -27713,7 +24045,7 @@ CREATE TABLE `claimEnd` ( CONSTRAINT `claimEnd_ibfk_1` FOREIGN KEY (`saleFk`) REFERENCES `sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `claimEnd_ibfk_3` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, CONSTRAINT `claimEnd_ibfk_4` FOREIGN KEY (`claimFk`) REFERENCES `claim` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Acciones en respuesta a las reclamaciones'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Acciones en respuesta a las reclamaciones'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27727,20 +24059,42 @@ CREATE TABLE `claimLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `originFk` int(10) unsigned NOT NULL, `userFk` int(10) unsigned DEFAULT NULL, - `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `description` text CHARACTER SET utf8, - `changedModel` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `oldInstance` text COLLATE utf8_unicode_ci, - `newInstance` text COLLATE utf8_unicode_ci, + `action` set('insert','update','delete') COLLATE utf8mb3_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT current_timestamp(), + `description` text CHARACTER SET utf8mb3 DEFAULT NULL, + `changedModel` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `oldInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `newInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `changedModelId` int(11) DEFAULT NULL, - `changedModelValue` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `changedModelValue` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `originFk` (`originFk`), KEY `userFk` (`userFk`), CONSTRAINT `claimOriginFk` FOREIGN KEY (`originFk`) REFERENCES `claim` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `claimUserFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `claimObservation` +-- + +DROP TABLE IF EXISTS `claimObservation`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `claimObservation` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `claimFk` int(10) unsigned NOT NULL, + `workerFk` int(10) unsigned DEFAULT NULL, + `text` text COLLATE utf8mb3_unicode_ci NOT NULL, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + KEY `worker_key` (`workerFk`), + KEY `claim_key` (`claimFk`), + KEY `claimObservation_created_IDX` (`created`) USING BTREE, + CONSTRAINT `claimObservation_ibfk_1` FOREIGN KEY (`claimFk`) REFERENCES `claim` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `claimObservation_ibfk_2` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Todas las observaciones referentes a una reclamación'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27751,35 +24105,17 @@ DROP TABLE IF EXISTS `claimRatio`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `claimRatio` ( - `clientFk` int(11) NOT NULL DEFAULT '0', + `clientFk` int(11) NOT NULL DEFAULT 0, `yearSale` decimal(10,2) DEFAULT NULL, `claimAmount` decimal(10,2) DEFAULT NULL, `claimingRate` decimal(5,2) DEFAULT NULL, `priceIncreasing` decimal(5,2) DEFAULT NULL, - `packingRate` decimal(5,2) NOT NULL DEFAULT '1.00', + `packingRate` decimal(5,2) NOT NULL DEFAULT 1.00, PRIMARY KEY (`clientFk`), CONSTRAINT `claimRatio_ibfk_1` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `claimRatio__` --- - -DROP TABLE IF EXISTS `claimRatio__`; -/*!50001 DROP VIEW IF EXISTS `claimRatio__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `claimRatio__` ( - `clientFk` tinyint NOT NULL, - `yearSale` tinyint NOT NULL, - `claimAmount` tinyint NOT NULL, - `claimingRate` tinyint NOT NULL, - `priceIncreasing` tinyint NOT NULL, - `packingRate` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `claimReason` -- @@ -27789,10 +24125,10 @@ DROP TABLE IF EXISTS `claimReason`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `claimReason` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `isTired` tinyint(1) NOT NULL DEFAULT '0', + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `isTired` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Motivos de las fallos'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Motivos de las fallos'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27804,9 +24140,9 @@ DROP TABLE IF EXISTS `claimRedelivery`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `claimRedelivery` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Método por el cual el cliente nos devuelve la mercancía'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Método por el cual el cliente nos devuelve la mercancía'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27818,10 +24154,10 @@ DROP TABLE IF EXISTS `claimResponsible`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `claimResponsible` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `responsability` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'if=1 >sensib >culpa', + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `responsability` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'if=1 >sensib >culpa', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Responsables de las causas'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Responsables de las causas'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27833,9 +24169,9 @@ DROP TABLE IF EXISTS `claimResult`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `claimResult` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Consecuencias de los motivos'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Consecuencias de los motivos'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27847,14 +24183,15 @@ DROP TABLE IF EXISTS `claimState`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `claimState` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `code` varchar(45) CHARACTER SET utf8 DEFAULT NULL, - `description` varchar(15) COLLATE utf8_unicode_ci NOT NULL, - `roleFk` int(10) unsigned NOT NULL DEFAULT '1', - `priority` int(11) NOT NULL DEFAULT '1', + `code` varchar(45) CHARACTER SET utf8mb3 DEFAULT NULL, + `description` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, + `roleFk` int(10) unsigned NOT NULL DEFAULT 1, + `priority` int(11) NOT NULL DEFAULT 1, + `hasToNotify` tinyint(4) DEFAULT 0, PRIMARY KEY (`id`), KEY `roleFgn_idx` (`roleFk`), CONSTRAINT `roleFgn` FOREIGN KEY (`roleFk`) REFERENCES `account`.`role` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Estados posibles de las reclamaciones'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Estados posibles de las reclamaciones'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -27866,74 +24203,74 @@ DROP TABLE IF EXISTS `client`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `client` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `discount` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'obsoleta (comprobar)', + `name` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `discount__` tinyint(3) unsigned NOT NULL DEFAULT 0 COMMENT 'obsoleta (comprobar)', `defaultAddressFk` int(11) DEFAULT NULL, - `street` longtext COLLATE utf8_unicode_ci, - `fi` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `phone` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `fax__` varchar(11) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'obsoleta (comprobar)', - `email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `cc` varchar(23) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'obsoleta (comprobar)', - `dueDay` smallint(6) NOT NULL DEFAULT '5', - `receipt__` int(11) DEFAULT '1' COMMENT 'obsoleta', - `isOfficial__` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'obsoleta (comprobar)', - `isTaxDataChecked` tinyint(1) NOT NULL DEFAULT '0', - `mobile` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountingAccount` varchar(10) CHARACTER SET utf8 NOT NULL, - `isEqualizated` tinyint(1) NOT NULL DEFAULT '0', - `city` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL, + `street` longtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fi` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `phone` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fax__` varchar(11) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'obsoleta (comprobar)', + `email` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `dueDay` smallint(6) NOT NULL DEFAULT 5, + `receipt__` int(11) DEFAULT 1 COMMENT 'obsoleta', + `isOfficial__` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'obsoleta (comprobar)', + `isTaxDataChecked` tinyint(1) NOT NULL DEFAULT 0, + `mobile` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountingAccount` varchar(10) CHARACTER SET utf8mb3 NOT NULL, + `isEqualizated` tinyint(1) NOT NULL DEFAULT 0, + `city` varchar(25) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `provinceFk` smallint(5) unsigned DEFAULT NULL, - `postcode` varchar(8) COLLATE utf8_unicode_ci DEFAULT NULL, - `socialName` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL, - `contact` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `wholesaler__` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'obsoleta (comprobar)', - `isReExpedition__` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'obsoleta (comprobar)', - `hasToInvoice` tinyint(1) NOT NULL DEFAULT '1', - `notes` text COLLATE utf8_unicode_ci COMMENT 'obsoleta (comprobar)', - `administrativeNotes__` text COLLATE utf8_unicode_ci NOT NULL COMMENT 'obsoleta (comprobar)', - `invoiceCopy__` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'obsoleta (comprobar)', - `hold__` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'obsoleta (comprobar)', - `isFreezed` tinyint(1) NOT NULL DEFAULT '0', + `postcode` varchar(8) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `socialName` varchar(60) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `contact` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `wholesaler__` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'obsoleta (comprobar)', + `isReExpedition__` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'obsoleta (comprobar)', + `hasToInvoice` tinyint(1) NOT NULL DEFAULT 1, + `notes__` text COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'obsoleta (comprobar)', + `administrativeNotes__` text COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'obsoleta (comprobar)', + `invoiceCopy__` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'obsoleta (comprobar)', + `hold__` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'obsoleta (comprobar)', + `isFreezed` tinyint(1) NOT NULL DEFAULT 0, `salesPersonFk` int(10) unsigned DEFAULT NULL, - `credit` decimal(10,2) NOT NULL DEFAULT '0.00', - `cyc` double DEFAULT NULL COMMENT 'obsoleta (comprobar)', - `countryFk` mediumint(8) unsigned NOT NULL DEFAULT '1', - `isActive` tinyint(1) NOT NULL DEFAULT '1', + `credit` decimal(10,2) NOT NULL DEFAULT 0.00, + `cyc__` double DEFAULT NULL COMMENT 'obsoleta (comprobar)', + `countryFk` mediumint(8) unsigned NOT NULL DEFAULT 1, + `isActive` tinyint(1) NOT NULL DEFAULT 1, `gestdocFk` int(11) DEFAULT NULL, - `quality` int(2) DEFAULT '11', - `payMethodFk` tinyint(3) unsigned NOT NULL DEFAULT '5', - `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `isToBeMailed` tinyint(1) NOT NULL DEFAULT '1', + `quality` int(2) DEFAULT 11, + `payMethodFk` tinyint(3) unsigned NOT NULL DEFAULT 5, + `created` timestamp NULL DEFAULT current_timestamp(), + `isToBeMailed` tinyint(1) NOT NULL DEFAULT 1, `contactChannelFk` smallint(6) DEFAULT NULL, - `isVies` tinyint(4) NOT NULL DEFAULT '0', - `splitHolland__` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'obsoleta (comprobar)', - `sepaFth__` tinyint(1) DEFAULT '0' COMMENT 'campo para recibir los escritos de los clientes para el sepaobsoleta (comprobar)', - `hasSepaVnl` tinyint(1) DEFAULT '0', - `coreFth__` tinyint(1) DEFAULT '0' COMMENT 'obsoleta (comprobar)', - `hasCoreVnl` tinyint(1) DEFAULT '0', + `isVies` tinyint(4) NOT NULL DEFAULT 0, + `splitHolland__` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'obsoleta (comprobar)', + `sepaFth__` tinyint(1) DEFAULT 0 COMMENT 'campo para recibir los escritos de los clientes para el sepaobsoleta (comprobar)', + `hasSepaVnl` tinyint(1) DEFAULT 0, + `coreFth__` tinyint(1) DEFAULT 0 COMMENT 'obsoleta (comprobar)', + `hasCoreVnl` tinyint(1) DEFAULT 0, `riskCalculated` date NOT NULL, - `hasCoreVnh` tinyint(1) DEFAULT '0', - `isRelevant` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'Define los clientes cuyas ventas hay que tener en cuenta en los calculos estadisticos.', - `clientTypeFk` int(11) NOT NULL DEFAULT '1', + `hasCoreVnh` tinyint(1) DEFAULT 0, + `isRelevant` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Define los clientes cuyas ventas hay que tener en cuenta en los calculos estadisticos.', + `clientTypeFk` int(11) NOT NULL DEFAULT 1, `postcodeOld__` int(11) unsigned DEFAULT NULL COMMENT 'obsoleta (comprobar)', `mailAddress` int(11) DEFAULT NULL, - `codposOLD__` char(5) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'obsoleta (comprobar)', + `codposOLD__` char(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'obsoleta (comprobar)', `creditInsurance` int(11) DEFAULT NULL, - `eypbc` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Email\\nYesterday\\nPurchases\\nBy\\nConsigna', - `hasToInvoiceByAddress` tinyint(1) DEFAULT '0', - `cplusTerIdNifFk__` int(11) NOT NULL DEFAULT '1' COMMENT 'OBSOLETO', - `isCreatedAsServed` tinyint(1) DEFAULT '0', - `hasInvoiceSimplified` tinyint(1) NOT NULL DEFAULT '0', - `iban` varchar(45) CHARACTER SET utf8 DEFAULT NULL, - `hasLcr` tinyint(1) NOT NULL DEFAULT '0', - `bankEntityFk` int(10) DEFAULT NULL, - `typeFk` varchar(20) CHARACTER SET utf8 NOT NULL DEFAULT 'normal', + `eypbc` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Email\\nYesterday\\nPurchases\\nBy\\nConsigna', + `hasToInvoiceByAddress` tinyint(1) DEFAULT 0, + `cplusTerIdNifFk__` int(11) NOT NULL DEFAULT 1 COMMENT 'OBSOLETO', + `isCreatedAsServed` tinyint(1) DEFAULT 0, + `hasInvoiceSimplified` tinyint(1) NOT NULL DEFAULT 0, + `iban` varchar(45) CHARACTER SET utf8mb3 DEFAULT NULL, + `hasLcr` tinyint(1) NOT NULL DEFAULT 0, + `bankEntityFk` int(10) unsigned DEFAULT NULL, + `typeFk` varchar(20) CHARACTER SET utf8mb3 NOT NULL DEFAULT 'normal', `taxTypeSageFk` smallint(6) DEFAULT NULL COMMENT 'Tipo de Iva por defecto asociado al cliente en SAGE', `transactionTypeSageFk` tinyint(4) DEFAULT NULL COMMENT 'Tipo de transacción por defecto asociado al cliente en SAGE', `transferorFk` int(11) DEFAULT NULL COMMENT 'Cliente que le ha transmitido la titularidad de la empresa', - `lastSalesPersonFk` int(11) DEFAULT NULL COMMENT 'ultimo comercial que tuvo, para el calculo del peso en los rankings de equipo', - `businessTypeFk` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `lastSalesPersonFk` int(10) unsigned DEFAULT NULL COMMENT 'ultimo comercial que tuvo, para el calculo del peso en los rankings de equipo', + `businessTypeFk` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `hasIncoterms` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Received incoterms authorization from client', PRIMARY KEY (`id`), UNIQUE KEY `IF` (`fi`), KEY `Id_Trabajador` (`salesPersonFk`), @@ -27952,8 +24289,13 @@ CREATE TABLE `client` ( KEY `client_taxTypeSageFk_idx` (`taxTypeSageFk`), KEY `client_transactionTypeSageFk_idx` (`transactionTypeSageFk`), KEY `client_FK` (`businessTypeFk`), + KEY `client_lastSalesPersonFk_IDX` (`lastSalesPersonFk`) USING BTREE, + KEY `client_FK_3` (`transferorFk`), CONSTRAINT `canal_nuevo_cliente` FOREIGN KEY (`contactChannelFk`) REFERENCES `contactChannel` (`id`) ON UPDATE CASCADE, CONSTRAINT `client_FK` FOREIGN KEY (`businessTypeFk`) REFERENCES `businessType` (`code`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `client_FK_1` FOREIGN KEY (`bankEntityFk`) REFERENCES `bankEntity` (`id`) ON UPDATE CASCADE, + CONSTRAINT `client_FK_2` FOREIGN KEY (`lastSalesPersonFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, + CONSTRAINT `client_FK_3` FOREIGN KEY (`transferorFk`) REFERENCES `client` (`id`), CONSTRAINT `client_ibfk_1` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON UPDATE CASCADE, CONSTRAINT `client_ibfk_2` FOREIGN KEY (`payMethodFk`) REFERENCES `payMethod` (`id`) ON UPDATE CASCADE, CONSTRAINT `client_ibfk_3` FOREIGN KEY (`salesPersonFk`) REFERENCES `worker` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, @@ -27963,18 +24305,18 @@ CREATE TABLE `client` ( CONSTRAINT `client_transactionTypeSageFk` FOREIGN KEY (`transactionTypeSageFk`) REFERENCES `sage`.`TiposTransacciones` (`CodigoTransaccion`) ON UPDATE CASCADE, CONSTRAINT `tipos_de_cliente` FOREIGN KEY (`clientTypeFk`) REFERENCES `clientType` (`id`) ON UPDATE CASCADE, CONSTRAINT `typeFk` FOREIGN KEY (`typeFk`) REFERENCES `clientType` (`code`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`client_beforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`client_beforeInsert` BEFORE INSERT ON `client` FOR EACH ROW BEGIN @@ -27988,7 +24330,7 @@ BEGIN END IF; SET NEW.accountingAccount = 4300000000 + NEW.id; - + SET NEW.lastSalesPersonFk = NEW.salesPersonFk; END */;; DELIMITER ; @@ -28001,13 +24343,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`client_beforeUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`client_beforeUpdate` BEFORE UPDATE ON `client` - FOR EACH ROW + FOR EACH ROW BEGIN DECLARE vText VARCHAR(255) DEFAULT NULL; DECLARE vPayMethodFk INT; @@ -28016,19 +24358,19 @@ BEGIN IF !(NEW.phone <=> OLD.phone) AND (NEW.phone <> '') THEN CALL pbx.phone_isValid(NEW.phone); END IF; - + IF !(NEW.mobile <=> OLD.mobile) AND (NEW.mobile <> '')THEN CALL pbx.phone_isValid(NEW.mobile); END IF; SELECT id INTO vPayMethodFk - FROM vn.payMethod + FROM vn.payMethod WHERE code = 'bankDraft'; - + IF NEW.payMethodFk = vPayMethodFk AND NEW.dueDay = 0 THEN SET NEW.dueDay = 5; END IF; - + -- Avisar al comercial si ha llegado la documentación sepa/core IF NEW.hasSepaVnl AND !OLD.hasSepaVnl THEN @@ -28041,7 +24383,7 @@ BEGIN IF vText IS NOT NULL THEN - INSERT INTO mail(receiver, replyTo, `subject`, body) + INSERT INTO mail(receiver, replyTo, `subject`, body) SELECT CONCAT(IF(ac.id,u.name, 'jgallego'), '@verdnatura.es'), 'administracion@verdnatura.es', @@ -28052,21 +24394,22 @@ BEGIN LEFT JOIN account.account ac ON ac.id = u.id WHERE w.id = NEW.salesPersonFk; END IF; - + IF NEW.salespersonFk IS NULL AND OLD.salespersonFk IS NOT NULL THEN - IF (SELECT COUNT(clientFk) + IF (SELECT COUNT(clientFk) FROM clientProtected WHERE clientFk = NEW.id ) > 0 THEN CALL util.throw("HAS_CLIENT_PROTECTED"); END IF; - UPDATE vn2008.Clientes_cedidos - SET datEND = CURDATE() - WHERE Id_Cliente = NEW.id; END IF; - + SET NEW.lastSalesPersonFk = IFNULL(NEW.salesPersonFk, OLD.salesPersonFk); + IF !(NEW.businessTypeFk <=> OLD.businessTypeFk) THEN + SET NEW.isTaxDataChecked = 0; + END IF; + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -28078,29 +24421,34 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`client_afterUpdate` -AFTER UPDATE ON `client` -FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`client_afterUpdate` + AFTER UPDATE ON `client` + FOR EACH ROW BEGIN - IF !(NEW.defaultAddressFk <=> OLD.defaultAddressFk) THEN - UPDATE `address` SET isDefaultAddress = 0 - WHERE clientFk = NEW.id; - + IF !(NEW.defaultAddressFk <=> OLD.defaultAddressFk) THEN + UPDATE `address` SET isDefaultAddress = 0 + WHERE clientFk = NEW.id; + UPDATE `address` SET isDefaultAddress = 1 - WHERE id = NEW.defaultAddressFk; - END IF; - - IF NOT (NEW.provinceFk <=> OLD.provinceFk) OR NOT (NEW.isVies <=> OLD.isVies) THEN - INSERT IGNORE INTO ticketRecalc (ticketFk) - SELECT id FROM ticket t - WHERE t.clientFk = NEW.id - AND t.refFk IS NULL; + WHERE id = NEW.defaultAddressFk; END IF; + IF NOT (NEW.provinceFk <=> OLD.provinceFk) OR NOT (NEW.isVies <=> OLD.isVies) THEN + INSERT IGNORE INTO ticketRecalc (ticketFk) + SELECT id FROM ticket t + WHERE t.clientFk = NEW.id + AND t.refFk IS NULL; + END IF; + + IF NOT NEW.isActive THEN + UPDATE account.`user` + SET active = FALSE + WHERE id = NEW.id; + END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -28124,7 +24472,7 @@ CREATE TABLE `clientChain` ( KEY `clientChain_fk2_idx` (`chainFk`), CONSTRAINT `clientChain_fk1` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `clientChain_fk2` FOREIGN KEY (`chainFk`) REFERENCES `chain` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -28137,8 +24485,10 @@ DROP TABLE IF EXISTS `clientConfig`; CREATE TABLE `clientConfig` ( `id` int(11) NOT NULL AUTO_INCREMENT, `riskTolerance` int(11) DEFAULT NULL COMMENT 'Maximo riesgo de un cliente para preparar su pedido', + `maxCreditRows` int(11) DEFAULT NULL COMMENT 'Máximo número de registros a mantener en la tabla clientCredit', + `maxPriceIncreasingRatio` decimal(2,2) NOT NULL DEFAULT 0.25 COMMENT 'máximo recobro permitido', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -28151,10 +24501,10 @@ DROP TABLE IF EXISTS `clientContact`; CREATE TABLE `clientContact` ( `id` int(11) NOT NULL AUTO_INCREMENT, `clientFk` int(11) NOT NULL, - `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `phone` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `phone` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -28168,15 +24518,50 @@ CREATE TABLE `clientCredit` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `clientFk` int(11) NOT NULL, `amount` double unsigned NOT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `workerFk` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`), KEY `workers_fk_idx` (`workerFk`), KEY `credit_ClienteFk` (`clientFk`), CONSTRAINT `credit_ClienteFk` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `workers_fk` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER clientCredit_AfterInsert +AFTER INSERT +ON clientCredit FOR EACH ROW +BEGIN + + DECLARE vSender VARCHAR(50); + + SELECT u.name INTO vSender + FROM account.`user` u + WHERE u.id = NEW.workerFk; + + IF vSender IN ('juanvi','pepe') THEN + + CALL `vn`.`mail_insert`('pako@verdnatura.es', + NULL, + CONCAT('ClientCredit ',vSender, ' ', NEW.clientFk, ' ' , NEW.amount, ' €'), + CONCAT('ClientCredit ',vSender, ' ', NEW.clientFk, ' ' , NEW.amount, ' €')); + + END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; -- -- Table structure for table `clientCreditLimit` @@ -28192,7 +24577,7 @@ CREATE TABLE `clientCreditLimit` ( PRIMARY KEY (`id`), KEY `clientCreditLimit_FK_idx` (`roleFk`), CONSTRAINT `clientCreditLimit_FK` FOREIGN KEY (`roleFk`) REFERENCES `account`.`role` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -28208,9 +24593,49 @@ CREATE TABLE `clientDms` ( PRIMARY KEY (`dmsFk`), KEY `gest_doc_id` (`dmsFk`), KEY `fk_clientes_gestdoc_1_idx` (`clientFk`), - CONSTRAINT `clientDms_ibfk_2` FOREIGN KEY (`dmsFk`) REFERENCES `dms` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `clientDms_ibfk_2` FOREIGN KEY (`dmsFk`) REFERENCES `dms` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_clientes_gestdoc_3` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `clientItemCategory` +-- + +DROP TABLE IF EXISTS `clientItemCategory`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `clientItemCategory` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `clientFk` int(11) NOT NULL, + `itemCategoryFk` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `clientItemCategory_FK` (`clientFk`), + KEY `clientItemCategory_FK_1` (`itemCategoryFk`), + CONSTRAINT `clientItemCategory_FK` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `clientItemCategory_FK_1` FOREIGN KEY (`itemCategoryFk`) REFERENCES `itemCategory` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `clientItemType` +-- + +DROP TABLE IF EXISTS `clientItemType`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `clientItemType` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `clientFk` int(11) NOT NULL, + `itemTypeFk` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, + `isAllowed` tinyint(1) DEFAULT 0, + PRIMARY KEY (`id`), + KEY `clientItemType_FK` (`clientFk`), + KEY `clientItemType_FK_1` (`itemTypeFk`), + CONSTRAINT `clientItemType_FK` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `clientItemType_FK_1` FOREIGN KEY (`itemTypeFk`) REFERENCES `itemType` (`code`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='son familias de productos que se quieren sustraer a la oferta del cliente'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -28224,22 +24649,37 @@ CREATE TABLE `clientLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `originFk` int(11) NOT NULL, `userFk` int(10) unsigned DEFAULT NULL, - `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `description` text CHARACTER SET utf8, - `changedModel` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `oldInstance` text COLLATE utf8_unicode_ci, - `newInstance` text COLLATE utf8_unicode_ci, + `action` set('insert','update','delete') COLLATE utf8mb3_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT current_timestamp(), + `description` text CHARACTER SET utf8mb3 DEFAULT NULL, + `changedModel` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `oldInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `newInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `changedModelId` int(11) DEFAULT NULL, - `changedModelValue` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `changedModelValue` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `originFk` (`originFk`), KEY `userFk` (`userFk`), CONSTRAINT `clientLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `clientLog_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Temporary table structure for view `clientLost` +-- + +DROP TABLE IF EXISTS `clientLost`; +/*!50001 DROP VIEW IF EXISTS `clientLost`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `clientLost` ( + `clientFk` tinyint NOT NULL, + `lastShipped` tinyint NOT NULL, + `notBuyingMonths` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + -- -- Table structure for table `clientManaCache` -- @@ -28249,29 +24689,14 @@ DROP TABLE IF EXISTS `clientManaCache`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `clientManaCache` ( `clientFk` int(11) NOT NULL, - `mana` decimal(10,0) NOT NULL DEFAULT '0', + `mana` decimal(10,0) NOT NULL DEFAULT 0, `dated` date NOT NULL, PRIMARY KEY (`clientFk`,`dated`), KEY `manaCustomerIdx1` (`dated`), CONSTRAINT `cliente_fk` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `clientManaCache__` --- - -DROP TABLE IF EXISTS `clientManaCache__`; -/*!50001 DROP VIEW IF EXISTS `clientManaCache__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `clientManaCache__` ( - `clientFk` tinyint NOT NULL, - `mana` tinyint NOT NULL, - `dated` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `clientObservation` -- @@ -28283,57 +24708,34 @@ CREATE TABLE `clientObservation` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `clientFk` int(11) NOT NULL, `workerFk` int(10) unsigned DEFAULT NULL, - `text` text COLLATE utf8_unicode_ci NOT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `text` text COLLATE utf8mb3_unicode_ci NOT NULL, + `created` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `Id_Trabajador` (`workerFk`), KEY `Id_Cliente` (`clientFk`), KEY `clientObservation_created_IDX` (`created`) USING BTREE, CONSTRAINT `clientObservation_ibfk_1` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `clientObservation_ibfk_2` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Todas las observaciones referentes a un ticket'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Todas las observaciones referentes a un ticket'; /*!40101 SET character_set_client = @saved_cs_client */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`clientObservation_AFTER_INSERT` AFTER INSERT ON `clientObservation` FOR EACH ROW -BEGIN -/* DECLARE vMailSender VARCHAR(90); - DECLARE vUserName VARCHAR(30); - DECLARE vUserId INT ; - - SELECT u.name, u.id INTO vUserName, vUserId - FROM account.user u - JOIN vn.worker w ON w.userFk = u.id - WHERE w.id = NEW.workerFk; - - SELECT CONCAT(salesPerson.name, '@verdnatura.es, ',vUserName, '@verdnatura.es') INTO vMailSender - FROM vn.client c - JOIN vn.worker w ON w.id = c.salesPersonFk - JOIN account.user salesPerson ON salesPerson.id = w.userFk - WHERE c.id = NEW.clientFk - AND salesPerson.id <> vUserId; - IF vMailSender >'' THEN - INSERT INTO vn.mail SET - `sender` = vMailSender, - `replyTo` = CONCAT(vUserName, '@verdnatura.es'), - `subject` = CONCAT ('Nota añadida al cliente ', NEW.clientFk) , - `body` = CONCAT(vUserName, ' ha añadido la siguiente nota: ', NEW.`text`); - END IF; -*/ -END */;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; +-- +-- Table structure for table `clientPackagingGifts` +-- + +DROP TABLE IF EXISTS `clientPackagingGifts`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `clientPackagingGifts` ( + `clientFk` int(11) NOT NULL, + `giftFk` int(11) NOT NULL, + `added` timestamp NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`clientFk`,`giftFk`), + KEY `clientPackagingGifts_FK_1` (`giftFk`), + CONSTRAINT `clientPackagingGifts_FK` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`), + CONSTRAINT `clientPackagingGifts_FK_1` FOREIGN KEY (`giftFk`) REFERENCES `packagingGifts` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; -- -- Temporary table structure for view `clientPhoneBook` @@ -28359,12 +24761,12 @@ DROP TABLE IF EXISTS `clientProtected`; CREATE TABLE `clientProtected` ( `clientFk` int(11) NOT NULL, `workerFk` int(10) unsigned NOT NULL, - `isValidated__` tinyint(1) NOT NULL DEFAULT '0', + `isValidated__` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (`clientFk`), KEY `clientProtected_fk2_idx` (`workerFk`), CONSTRAINT `clientProtected_fk1` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `clientProtected_fk2` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Lista de clientes y comerciales que no se van a ver afectados por las desagsignaciones mensuales automaticas'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Lista de clientes y comerciales que no se van a ver afectados por las desagsignaciones mensuales automaticas'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -28375,31 +24777,16 @@ DROP TABLE IF EXISTS `clientRisk`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `clientRisk` ( - `clientFk` int(11) NOT NULL DEFAULT '0', - `companyFk` smallint(6) unsigned NOT NULL DEFAULT '0', + `clientFk` int(11) NOT NULL DEFAULT 0, + `companyFk` smallint(6) unsigned NOT NULL DEFAULT 0, `amount` decimal(10,2) DEFAULT NULL, PRIMARY KEY (`clientFk`,`companyFk`), KEY `company_id` (`companyFk`), CONSTRAINT `clientRisk_ibfk_1` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `clientRisk_ibfk_2` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Saldo de apertura < 2015-01-01'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Saldo de apertura < 2015-01-01'; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `clientRisk__` --- - -DROP TABLE IF EXISTS `clientRisk__`; -/*!50001 DROP VIEW IF EXISTS `clientRisk__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `clientRisk__` ( - `clientFk` tinyint NOT NULL, - `companyFk` tinyint NOT NULL, - `amount` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `clientSample` -- @@ -28411,7 +24798,7 @@ CREATE TABLE `clientSample` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `clientFk` int(10) unsigned NOT NULL, `typeFk` int(10) unsigned NOT NULL, - `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` datetime NOT NULL DEFAULT current_timestamp(), `workerFk` int(10) unsigned NOT NULL, `balance` float NOT NULL, `companyFk` smallint(5) unsigned DEFAULT NULL, @@ -28419,7 +24806,7 @@ CREATE TABLE `clientSample` ( PRIMARY KEY (`id`), KEY `empresa_id` (`companyFk`), CONSTRAINT `clientSample_ibfk_1` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -28431,12 +24818,28 @@ DROP TABLE IF EXISTS `clientType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `clientType` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(20) CHARACTER SET utf8 NOT NULL, - `type` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `isCreatedAsServed` tinyint(1) DEFAULT '0', + `code` varchar(20) CHARACTER SET utf8mb3 NOT NULL, + `type` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `isCreatedAsServed` tinyint(1) DEFAULT 0, PRIMARY KEY (`id`), UNIQUE KEY `code_UNIQUE` (`code`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Establece categorias para poder agrupar las ventas'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Establece categorias para poder agrupar las ventas'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `clientUnpaid` +-- + +DROP TABLE IF EXISTS `clientUnpaid`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `clientUnpaid` ( + `clientFk` int(11) NOT NULL, + `dated` date NOT NULL, + `amount` double DEFAULT 0, + PRIMARY KEY (`clientFk`), + CONSTRAINT `clientUnpaid_clientFk` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -28453,7 +24856,7 @@ CREATE TABLE `clientYoke` ( KEY `clientYoke_fk2_idx` (`rightOx`), CONSTRAINT `clientYoke_fk1` FOREIGN KEY (`leftOx`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `clientYoke_fk2` FOREIGN KEY (`rightOx`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='emparejamiento de clientes a efectos de precios'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='emparejamiento de clientes a efectos de precios'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -28466,63 +24869,68 @@ DROP TABLE IF EXISTS `cmr`; CREATE TABLE `cmr` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ticketFk` int(11) DEFAULT NULL, - `truckPlate` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `observations` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `senderInstruccions` varchar(255) COLLATE utf8_unicode_ci DEFAULT 'Flowers 4º C. Plants 14º C', - `paymentInstruccions` varchar(255) COLLATE utf8_unicode_ci DEFAULT 'Carriage paid', - `specialAgreements` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `truckPlate` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `observations` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `senderInstruccions` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT 'Flowers 4º C. Plants 14º C', + `paymentInstruccions` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT 'Carriage paid', + `specialAgreements` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `created` timestamp NULL DEFAULT current_timestamp(), `companyFk` smallint(5) unsigned DEFAULT NULL, `addressToFk` int(11) DEFAULT NULL, `addressFromFk` int(11) DEFAULT NULL, `supplierFk` int(11) DEFAULT NULL, - `packagesList` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `merchandiseDetail` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `state` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `packagesList` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `merchandiseDetail` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `state` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `landed` datetime DEFAULT NULL COMMENT 'Hora de llegada a destino', + `ead` datetime DEFAULT NULL COMMENT 'Estimated Arriving Date', PRIMARY KEY (`id`), KEY `cmr_fk1_idx` (`ticketFk`), KEY `cmr_fk2_idx` (`companyFk`), KEY `cmr_fk3_idx` (`addressToFk`), KEY `cm_fk4_idx` (`supplierFk`), + KEY `cmr_FK` (`addressFromFk`), CONSTRAINT `cm_fk4` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE, + CONSTRAINT `cmr_FK` FOREIGN KEY (`addressFromFk`) REFERENCES `address` (`id`) ON UPDATE CASCADE, CONSTRAINT `cmr_fk1` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `cmr_fk2` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `cmr_fk3` FOREIGN KEY (`addressToFk`) REFERENCES `address` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`cmr_BEFORE_INSERT` BEFORE INSERT ON `cmr` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`cmr_BEFORE_INSERT` + BEFORE INSERT ON `cmr` + FOR EACH ROW BEGIN DECLARE vLastSenderInstructions VARCHAR(255); DECLARE vLastId INT; DECLARE vCurrentAgency INT; - + SELECT am.agencyFk INTO vCurrentAgency FROM vn.agencyMode am JOIN vn.ticket t ON t.agencyModeFk = am.id WHERE t.id = NEW.ticketFk; - + SELECT MAX(cmr.id) INTO vLastId FROM cmr JOIN vn.ticket t ON t.id = cmr.ticketFk JOIN vn.agencyMode am ON am.id = t.agencyModeFk - WHERE am.agencyFk = vCurrentAgency + WHERE am.agencyFk = vCurrentAgency ; - + SELECT senderInstruccions INTO vLastSenderInstructions FROM cmr WHERE id = vLastId; - + SET NEW.senderInstruccions = vLastSenderInstructions; END */;; @@ -28540,8 +24948,9 @@ DROP TABLE IF EXISTS `cmrConfig`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cmrConfig` ( - `dayOfMonth` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + `dayOfMonth` int(11) DEFAULT NULL, + `landingDays` tinyint(4) NOT NULL DEFAULT 1 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -28555,13 +24964,13 @@ CREATE TABLE `cmr_expeditionPallet` ( `id` int(11) NOT NULL AUTO_INCREMENT, `cmrFk` int(11) NOT NULL, `expeditionPalletFk` int(11) NOT NULL, - `scanned` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `scanned` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `cmr_expeditionPallet_fk1_idx` (`cmrFk`), KEY `cmr_expeditionPallet_fk2_idx` (`expeditionPalletFk`), CONSTRAINT `cmr_expeditionPallet_fk1` FOREIGN KEY (`cmrFk`) REFERENCES `cmr` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `cmr_expeditionPallet_fk2` FOREIGN KEY (`expeditionPalletFk`) REFERENCES `expeditionPallet` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='relaciona los cmr con los pallets de expediciones'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='relaciona los cmr con los pallets de expediciones'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -28619,63 +25028,67 @@ DROP TABLE IF EXISTS `collection`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `collection` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `workerFk` int(10) unsigned DEFAULT NULL, `stateFk` tinyint(3) unsigned DEFAULT NULL, - `itemPackingTypeFk` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, - `saleTotalCount` int(11) NOT NULL DEFAULT '0', - `salePickedCount` int(11) NOT NULL DEFAULT '0', - `trainFk` int(11) NOT NULL DEFAULT '1', + `itemPackingTypeFk` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `saleTotalCount` int(11) NOT NULL DEFAULT 0, + `salePickedCount` int(11) NOT NULL DEFAULT 0, + `trainFk` int(11) NOT NULL DEFAULT 1, + `sectorFk` int(11) DEFAULT NULL, + `wagons` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `ticketCollection_idx` (`workerFk`), KEY `collection_id2_idx` (`stateFk`), KEY `collection_FK` (`itemPackingTypeFk`), KEY `collectionTrain_Fk` (`trainFk`), + KEY `collectionSector_FK` (`sectorFk`), + CONSTRAINT `collectionSector_FK` FOREIGN KEY (`sectorFk`) REFERENCES `sector` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `collectionTrain_Fk` FOREIGN KEY (`trainFk`) REFERENCES `train` (`id`) ON UPDATE CASCADE, CONSTRAINT `collection_id2` FOREIGN KEY (`stateFk`) REFERENCES `state` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `ticketCollection` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER collection_BEFORE_UPDATE -BEFORE UPDATE -ON collection FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`collection_BEFORE_UPDATE` + BEFORE UPDATE ON `collection` + FOR EACH ROW BEGIN - + DECLARE vStateFk INT; DECLARE vTotalLines INT; DECLARE vPickedLines INT; - IF NEW.saleTotalCount <= NEW.salePickedCount - AND (NEW.saleTotalCount != OLD.saleTotalCount + IF NEW.saleTotalCount <= NEW.salePickedCount + AND (NEW.saleTotalCount != OLD.saleTotalCount OR NEW.salePickedCount != OLD.salePickedCount) - THEN - + THEN + SELECT id INTO vStateFk - FROM vn.state + FROM vn.state WHERE code = 'PREPARED'; - + SET NEW.stateFk = vStateFk; - + END IF; - IF NEW.saleTotalCount > NEW.salePickedCount - AND (NEW.saleTotalCount != OLD.saleTotalCount OR NEW.salePickedCount != OLD.salePickedCount) THEN + IF NEW.saleTotalCount > NEW.salePickedCount + AND (NEW.saleTotalCount != OLD.saleTotalCount OR NEW.salePickedCount != OLD.salePickedCount) THEN SELECT id INTO vStateFk - FROM vn.state + FROM vn.state WHERE code = 'ON_PREPARATION'; - + SET NEW.stateFk = vStateFk; - + END IF; END */;; @@ -28694,79 +25107,16 @@ DROP TABLE IF EXISTS `collectionColors`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `collectionColors` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(20) COLLATE utf8_unicode_ci NOT NULL, - `shelve` int(11) NOT NULL DEFAULT '1', - `wagon` int(11) NOT NULL DEFAULT '1', - `trainFk` int(11) NOT NULL DEFAULT '1', + `code` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, + `shelve` int(11) NOT NULL DEFAULT 1, + `wagon` int(11) NOT NULL DEFAULT 1, + `trainFk` int(11) NOT NULL DEFAULT 1, PRIMARY KEY (`id`), KEY `collectionColors_FK` (`trainFk`), CONSTRAINT `collectionColors_FK` FOREIGN KEY (`trainFk`) REFERENCES `train` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Recoge los colores para las baldas de las colecciones'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Recoge los colores para las baldas de las colecciones'; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `collectionReportSource` --- - -DROP TABLE IF EXISTS `collectionReportSource`; -/*!50001 DROP VIEW IF EXISTS `collectionReportSource`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `collectionReportSource` ( - `collectionFk` tinyint NOT NULL, - `ticketFk` tinyint NOT NULL, - `itemFk` tinyint NOT NULL, - `concept` tinyint NOT NULL, - `size` tinyint NOT NULL, - `quantity` tinyint NOT NULL, - `nicho` tinyint NOT NULL, - `level` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - --- --- Temporary table structure for view `collectionSmartTag` --- - -DROP TABLE IF EXISTS `collectionSmartTag`; -/*!50001 DROP VIEW IF EXISTS `collectionSmartTag`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `collectionSmartTag` ( - `code` tinyint NOT NULL, - `ticketFk` tinyint NOT NULL, - `level` tinyint NOT NULL, - `wagon` tinyint NOT NULL, - `shelvingFk` tinyint NOT NULL, - `collectionFk` tinyint NOT NULL, - `agencyFk` tinyint NOT NULL, - `clientFk` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - --- --- Temporary table structure for view `collectionSmartTag2` --- - -DROP TABLE IF EXISTS `collectionSmartTag2`; -/*!50001 DROP VIEW IF EXISTS `collectionSmartTag2`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `collectionSmartTag2` ( - `code` tinyint NOT NULL, - `ticketFk` tinyint NOT NULL, - `level` tinyint NOT NULL, - `wagon` tinyint NOT NULL, - `shelvingFk` tinyint NOT NULL, - `collectionFk` tinyint NOT NULL, - `agencyFk` tinyint NOT NULL, - `clientFk` tinyint NOT NULL, - `worker` tinyint NOT NULL, - `shipped` tinyint NOT NULL, - `landed` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `collectionVolumetry` -- @@ -28776,35 +25126,18 @@ DROP TABLE IF EXISTS `collectionVolumetry`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `collectionVolumetry` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `level` int(10) unsigned NOT NULL DEFAULT '0', - `lines` int(10) unsigned NOT NULL DEFAULT '1', - `liters` int(10) unsigned NOT NULL DEFAULT '0', - `height` int(10) unsigned NOT NULL DEFAULT '20', - `itemPackingTypeFk` varchar(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'H', - `trainFk` int(11) NOT NULL DEFAULT '1', + `level` int(10) unsigned NOT NULL DEFAULT 0, + `lines` int(10) unsigned NOT NULL DEFAULT 1, + `liters` int(10) unsigned NOT NULL DEFAULT 0, + `height` int(10) unsigned NOT NULL DEFAULT 20, + `itemPackingTypeFk` varchar(1) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'H', + `trainFk` int(11) NOT NULL DEFAULT 1, PRIMARY KEY (`id`), KEY `collectionVolumetry_FK` (`itemPackingTypeFk`), KEY `collectionVolumetry_FK_1` (`trainFk`), CONSTRAINT `collectionVolumetry_FK` FOREIGN KEY (`itemPackingTypeFk`) REFERENCES `itemPackingType` (`code`) ON UPDATE CASCADE, CONSTRAINT `collectionVolumetry_FK_1` FOREIGN KEY (`trainFk`) REFERENCES `train` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `collectionVolumetry_Paloma__` --- - -DROP TABLE IF EXISTS `collectionVolumetry_Paloma__`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `collectionVolumetry_Paloma__` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `level` int(10) unsigned NOT NULL DEFAULT '0', - `lines` int(10) unsigned NOT NULL DEFAULT '1', - `liters` int(10) unsigned NOT NULL DEFAULT '0', - `height` int(10) unsigned NOT NULL DEFAULT '20', - PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -28815,7 +25148,7 @@ DROP TABLE IF EXISTS `commissionConfig`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `commissionConfig` ( - `rate` decimal(5,4) NOT NULL DEFAULT '0.0000', + `rate` decimal(5,4) NOT NULL DEFAULT 0.0000, `plusTeamAmount` int(11) DEFAULT NULL, `plusNewBornAmount` int(11) DEFAULT NULL, `plusSalesAmount` int(11) DEFAULT NULL, @@ -28827,8 +25160,14 @@ CREATE TABLE `commissionConfig` ( `minScoreForPlusBoss` int(11) DEFAULT NULL, `plusTeam` int(11) DEFAULT NULL, `plusBoss` int(11) DEFAULT NULL COMMENT 'Este campo se deberá multiplicar x el número de miembros del equipo', + `executionDay` smallint(6) DEFAULT NULL, + `salesPersonWithPlusNewClient` int(11) DEFAULT NULL, + `maxPlusNewClient` int(11) DEFAULT NULL, + `plusDifference` int(11) DEFAULT NULL, + `maxScoreNewClient` int(11) DEFAULT NULL, + `scoreDifference` int(11) DEFAULT NULL, PRIMARY KEY (`rate`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -28840,29 +25179,30 @@ DROP TABLE IF EXISTS `company`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `company` ( `id` smallint(5) unsigned NOT NULL, - `code` char(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `register` varchar(120) COLLATE utf8_unicode_ci NOT NULL, + `code` char(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `register` varchar(120) COLLATE utf8mb3_unicode_ci NOT NULL, `workerManagerFk` int(10) unsigned NOT NULL, `registered` date NOT NULL, `expired` date DEFAULT NULL, - `logo` longblob, - `isOfficial` tinyint(1) unsigned NOT NULL DEFAULT '1', - `hasCyc` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0', - `rgb` varchar(6) COLLATE utf8_unicode_ci NOT NULL, - `email` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `stamp` blob, - `created` timestamp NOT NULL ON UPDATE CURRENT_TIMESTAMP, + `logo` longblob DEFAULT NULL, + `isOfficial` tinyint(1) unsigned NOT NULL DEFAULT 1, + `hasCyc` tinyint(1) unsigned zerofill NOT NULL DEFAULT 0, + `rgb` varchar(6) COLLATE utf8mb3_unicode_ci NOT NULL, + `email` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `stamp` blob DEFAULT NULL, + `created` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE current_timestamp(), `clientFk` int(11) DEFAULT NULL, `sage200Company` int(2) DEFAULT NULL, `supplierAccountFk` mediumint(8) unsigned DEFAULT NULL, - `isDefaulter` tinyint(4) NOT NULL DEFAULT '0', - `companyGroupFk` int(11) NOT NULL DEFAULT '1' COMMENT 'usado para calcular los greuges ', + `isDefaulter` tinyint(4) NOT NULL DEFAULT 0, + `companyGroupFk` int(11) NOT NULL DEFAULT 1 COMMENT 'usado para calcular los greuges ', `companyCode` int(2) DEFAULT NULL COMMENT 'Campo para movConta', `companyCodeTest` int(2) DEFAULT NULL, - `footnotes` longtext COLLATE utf8_unicode_ci COMMENT 'pie de paginas en las facturas', - `phytosanitary` longtext COLLATE utf8_unicode_ci, + `footnotes` longtext COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'pie de paginas en las facturas', + `phytosanitary` longtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fhAdminNumber` int(11) DEFAULT NULL COMMENT 'número de cliente en FloraHolland', PRIMARY KEY (`id`), + UNIQUE KEY `companyCode_UNIQUE` (`code`), KEY `gerente_id` (`workerManagerFk`), KEY `empresa_cliente_idx` (`clientFk`), KEY `Id_Proveedores_account` (`supplierAccountFk`), @@ -28872,7 +25212,7 @@ CREATE TABLE `company` ( CONSTRAINT `empresa_cliente` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `empresa_fk4` FOREIGN KEY (`supplierAccountFk`) REFERENCES `supplierAccount` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `fk_empresa_grupo` FOREIGN KEY (`companyGroupFk`) REFERENCES `companyGroup` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -28884,9 +25224,24 @@ DROP TABLE IF EXISTS `companyGroup`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `companyGroup` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `comparativeFilterType` +-- + +DROP TABLE IF EXISTS `comparativeFilterType`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `comparativeFilterType` ( + `comparativeFilterFk` int(11) NOT NULL, + `itemTypeFk` int(11) NOT NULL, + PRIMARY KEY (`comparativeFilterFk`,`itemTypeFk`), + CONSTRAINT `comparativeFilterType_FK` FOREIGN KEY (`comparativeFilterFk`) REFERENCES `comparativeFilter` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -28898,39 +25253,20 @@ DROP TABLE IF EXISTS `component`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `component` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, `typeFk` int(11) NOT NULL, `classRate` smallint(6) DEFAULT NULL, `tax` double DEFAULT NULL, - `isRenewable` tinyint(2) NOT NULL DEFAULT '1', - `code` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `isRequired` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Son componentes imprescindibles en toda venta', + `isRenewable` tinyint(2) NOT NULL DEFAULT 1, + `code` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isRequired` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Son componentes imprescindibles en toda venta', PRIMARY KEY (`id`), KEY `series_componentes_idx` (`typeFk`), KEY `comp` (`classRate`), CONSTRAINT `serie_componente` FOREIGN KEY (`typeFk`) REFERENCES `componentType` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `componentRate__` --- - -DROP TABLE IF EXISTS `componentRate__`; -/*!50001 DROP VIEW IF EXISTS `componentRate__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `componentRate__` ( - `id` tinyint NOT NULL, - `name` tinyint NOT NULL, - `componentTypeRate` tinyint NOT NULL, - `classRate` tinyint NOT NULL, - `tax` tinyint NOT NULL, - `isRenewable` tinyint NOT NULL, - `code` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `componentType` -- @@ -28940,64 +25276,15 @@ DROP TABLE IF EXISTS `componentType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `componentType` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `type` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `isBase` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Marca aquellas series que se utilizan para calcular el precio base de las ventas, a efectos estadisticos', - `isMargin` tinyint(4) NOT NULL DEFAULT '0', + `type` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `isBase` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'Marca aquellas series que se utilizan para calcular el precio base de las ventas, a efectos estadisticos', + `isMargin` tinyint(4) NOT NULL DEFAULT 0, + `code` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `Serie_UNIQUE` (`type`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Permite organizar de forma ordenada los distintos componentes'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Permite organizar de forma ordenada los distintos componentes'; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `componentTypeRate__` --- - -DROP TABLE IF EXISTS `componentTypeRate__`; -/*!50001 DROP VIEW IF EXISTS `componentTypeRate__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `componentTypeRate__` ( - `id` tinyint NOT NULL, - `type` tinyint NOT NULL, - `base` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - --- --- Temporary table structure for view `componentType__` --- - -DROP TABLE IF EXISTS `componentType__`; -/*!50001 DROP VIEW IF EXISTS `componentType__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `componentType__` ( - `id` tinyint NOT NULL, - `type` tinyint NOT NULL, - `isBase` tinyint NOT NULL, - `isMargin` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - --- --- Temporary table structure for view `component__` --- - -DROP TABLE IF EXISTS `component__`; -/*!50001 DROP VIEW IF EXISTS `component__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `component__` ( - `id` tinyint NOT NULL, - `name` tinyint NOT NULL, - `typeFk` tinyint NOT NULL, - `classRate` tinyint NOT NULL, - `tax` tinyint NOT NULL, - `isRenewable` tinyint NOT NULL, - `code` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `confectionType` -- @@ -29007,9 +25294,9 @@ DROP TABLE IF EXISTS `confectionType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `confectionType` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29022,52 +25309,52 @@ DROP TABLE IF EXISTS `config`; CREATE TABLE `config` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ochoa` int(10) unsigned NOT NULL, - `invoiceOutFk` int(11) DEFAULT '0', - `bookFk` int(11) DEFAULT '0', - `serialAFk` int(11) DEFAULT '0', - `serialEFk` int(11) DEFAULT '0', - `serialRFk` int(11) DEFAULT '0', - `serialCFk` int(11) DEFAULT '0', - `serialHFk` int(11) NOT NULL, - `serialPFk` int(11) DEFAULT '0', - `serialTFk` int(11) DEFAULT '0', + `invoiceOutFk` int(11) DEFAULT 0, + `bookFk__` int(11) DEFAULT 0, + `serialAFk__` int(11) DEFAULT 0, + `serialEFk__` int(11) DEFAULT 0, + `serialRFk__` int(11) DEFAULT 0, + `serialCFk__` int(11) DEFAULT 0, + `serialHFk__` int(11) NOT NULL, + `serialPFk__` int(11) DEFAULT 0, + `serialTFk__` int(11) DEFAULT 0, `inventoried` datetime DEFAULT NULL, - `serialMFk` int(11) DEFAULT '0', - `itemLog` int(11) DEFAULT '0', + `serialMFk__` int(11) DEFAULT 0, + `itemLog` int(11) DEFAULT 0, `weekGoal` int(11) DEFAULT NULL, - `photosPath` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `cashBoxNumber` int(11) DEFAULT '0', - `redCode` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `photosPath` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `cashBoxNumber` int(11) DEFAULT 0, + `redCode` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `TabletTime` datetime DEFAULT NULL, - `t0` int(11) NOT NULL DEFAULT '0', - `t1` int(11) NOT NULL DEFAULT '0', - `t2` int(11) NOT NULL DEFAULT '0', - `t3` int(11) NOT NULL DEFAULT '0', - `cc` double NOT NULL DEFAULT '0', - `palet` double NOT NULL DEFAULT '0', + `t0` int(11) NOT NULL DEFAULT 0, + `t1` int(11) NOT NULL DEFAULT 0, + `t2` int(11) NOT NULL DEFAULT 0, + `t3` int(11) NOT NULL DEFAULT 0, + `cc` double NOT NULL DEFAULT 0, + `palet` double NOT NULL DEFAULT 0, `campaign` datetime NOT NULL, `campaignLife` tinyint(3) unsigned NOT NULL, `truckDays` tinyint(3) unsigned NOT NULL, `transportCharges` double NOT NULL, - `escanerPath` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `escanerPath` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, `printedTurn` int(4) DEFAULT NULL, - `truckLength` int(11) DEFAULT '24', + `truckLength` int(11) DEFAULT 24, `fuelConsumption` int(11) DEFAULT NULL, `petrol` decimal(10,1) DEFAULT NULL, `maintenance` decimal(10,1) DEFAULT NULL, `hourPrice` decimal(10,1) DEFAULT NULL, `meterPrice` decimal(10,1) DEFAULT NULL, `kmPrice` decimal(10,1) DEFAULT NULL, - `routeOption` int(11) DEFAULT '1', - `dbproduccion` tinyint(1) NOT NULL DEFAULT '1', - `mdbServer` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `fakeEmail` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `defaultersMaxAmount` int(10) DEFAULT '200' COMMENT 'maxima deuda permitida a partir de la cual se bloquea a un usuario', + `routeOption` int(11) DEFAULT 1, + `dbproduccion` tinyint(1) NOT NULL DEFAULT 1, + `mdbServer` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `fakeEmail` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `defaultersMaxAmount` int(10) DEFAULT 200 COMMENT 'maxima deuda permitida a partir de la cual se bloquea a un usuario', `ASIEN` bigint(20) DEFAULT NULL, - `dayStartingHour` int(11) NOT NULL DEFAULT '3' COMMENT 'Hora a la que empieza una nueva jornada de producción', + `dayStartingHour` int(11) NOT NULL DEFAULT 3 COMMENT 'Hora a la que empieza una nueva jornada de producción', PRIMARY KEY (`id`), KEY `fechainv_idx` (`inventoried`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29079,9 +25366,9 @@ DROP TABLE IF EXISTS `contactChannel`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `contactChannel` ( `id` smallint(6) NOT NULL AUTO_INCREMENT, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Canal por el que nos ha conocido un cliente y se ha dado de'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Canal por el que nos ha conocido un cliente y se ha dado de'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29093,11 +25380,11 @@ DROP TABLE IF EXISTS `continent`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `continent` ( `id` tinyint(4) NOT NULL AUTO_INCREMENT, - `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `code` varchar(2) CHARACTER SET utf8 NOT NULL, + `name` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `code` varchar(2) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `continent_name_uindex` (`name`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='World continents'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='World continents'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29112,17 +25399,17 @@ CREATE TABLE `contratos_subvencion_270619` ( `workerFk` int(10) unsigned NOT NULL, `cod_centroFk` int(11) NOT NULL, `CodContratoFk` int(11) NOT NULL, - `journey` decimal(5,2) NOT NULL DEFAULT '8.00', - `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `nif` varchar(12) COLLATE utf8_unicode_ci NOT NULL, + `journey` decimal(5,2) NOT NULL DEFAULT 8.00, + `name` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `nif` varchar(12) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), KEY `contratos_subvencion_270619_fk2_idx` (`cod_centroFk`), KEY `contratos_subvencion_270619_fk3_idx` (`CodContratoFk`), KEY `contratos_subvencion_270619_fk1_idx` (`workerFk`), CONSTRAINT `contratos_subvencion_270619_fk1` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, CONSTRAINT `contratos_subvencion_270619_fk2` FOREIGN KEY (`cod_centroFk`) REFERENCES `vn2008`.`payroll_centros` (`cod_centro`) ON UPDATE CASCADE, - CONSTRAINT `contratos_subvencion_270619_fk3` FOREIGN KEY (`CodContratoFk`) REFERENCES `vn2008`.`payroll_contratos` (`CodContrato`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Segun los informes de vida laboral aportados por la SS'; + CONSTRAINT `contratos_subvencion_270619_fk3` FOREIGN KEY (`CodContratoFk`) REFERENCES `vn2008`.`payroll_contratos__` (`CodContrato`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Segun los informes de vida laboral aportados por la SS'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29135,20 +25422,20 @@ DROP TABLE IF EXISTS `conveyor`; CREATE TABLE `conveyor` ( `id` int(11) NOT NULL AUTO_INCREMENT, `typeFk` int(11) NOT NULL, - `stratum` int(11) NOT NULL DEFAULT '0', + `stratum` int(11) NOT NULL DEFAULT 0, `length` int(11) DEFAULT NULL, `width` int(11) DEFAULT NULL, `height` int(11) DEFAULT NULL, `x` int(11) DEFAULT NULL, `y` int(11) DEFAULT NULL, - `freeSpace` int(11) NOT NULL DEFAULT '0', - `isBusy` tinyint(1) NOT NULL DEFAULT '0', + `freeSpace` int(11) NOT NULL DEFAULT 0, + `isBusy` tinyint(1) NOT NULL DEFAULT 0, `tandem` int(11) DEFAULT NULL COMMENT 'agrupa conveyors para dividir las cajas por tipo en una misma ruta', `conveyorBuildingClassFk` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `conveyor_fk1_idx` (`typeFk`), CONSTRAINT `conveyor_fk1` FOREIGN KEY (`typeFk`) REFERENCES `conveyorType` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29160,11 +25447,11 @@ DROP TABLE IF EXISTS `conveyorBuildingClass`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `conveyorBuildingClass` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `priority` int(11) NOT NULL DEFAULT '0', + `description` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `priority` int(11) NOT NULL DEFAULT 0, `weightThreshold` int(11) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Tipo de caja para el montaje de pallets'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Tipo de caja para el montaje de pallets'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29176,13 +25463,13 @@ DROP TABLE IF EXISTS `conveyorConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `conveyorConfig` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `itemName` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `itemName` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, `length` int(11) DEFAULT NULL, `width` int(11) DEFAULT NULL, `height` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `itemName_UNIQUE` (`itemName`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29195,26 +25482,26 @@ DROP TABLE IF EXISTS `conveyorExpedition`; CREATE TABLE `conveyorExpedition` ( `expeditionFk` int(11) NOT NULL, `conveyorFk` int(11) DEFAULT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `conveyorBuildingClassFk` int(11) NOT NULL DEFAULT '1', - `length` int(11) NOT NULL DEFAULT '1', - `width` int(11) NOT NULL DEFAULT '1', - `height` int(11) NOT NULL DEFAULT '1', - `x` int(11) NOT NULL DEFAULT '18100', - `y` int(11) NOT NULL DEFAULT '1', + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `conveyorBuildingClassFk` int(11) NOT NULL DEFAULT 1, + `length` int(11) NOT NULL DEFAULT 1, + `width` int(11) NOT NULL DEFAULT 1, + `height` int(11) NOT NULL DEFAULT 1, + `x` int(11) NOT NULL DEFAULT 18100, + `y` int(11) NOT NULL DEFAULT 1, `routeFk` int(11) NOT NULL, - `isIn` tinyint(4) NOT NULL DEFAULT '0', + `isIn` tinyint(4) NOT NULL DEFAULT 0, `productionMinute` int(11) DEFAULT NULL, - `isOut` tinyint(4) NOT NULL DEFAULT '0', - `truck` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `isOut` tinyint(4) NOT NULL DEFAULT 0, + `truck` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `criterion` int(11) DEFAULT NULL, - `isHeavy` tinyint(1) NOT NULL DEFAULT '1', + `isHeavy` tinyint(1) NOT NULL DEFAULT 1, PRIMARY KEY (`expeditionFk`), KEY `conveyorExpedition_fk1_idx` (`conveyorFk`), KEY `conveyorExpedition_fk2_idx` (`conveyorBuildingClassFk`), CONSTRAINT `conveyorExpedition_fk1` FOREIGN KEY (`conveyorFk`) REFERENCES `conveyor` (`id`) ON UPDATE CASCADE, CONSTRAINT `conveyorExpedition_fk2` FOREIGN KEY (`conveyorBuildingClassFk`) REFERENCES `conveyorBuildingClass` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29225,12 +25512,12 @@ DROP TABLE IF EXISTS `conveyorMode`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `conveyorMode` ( - `code` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, `saturacion` int(11) NOT NULL, `gap` int(11) NOT NULL, - `isActive` tinyint(4) NOT NULL DEFAULT '0', + `isActive` tinyint(4) NOT NULL DEFAULT 0, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29242,10 +25529,10 @@ DROP TABLE IF EXISTS `conveyorType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `conveyorType` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `color` int(11) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29256,11 +25543,11 @@ DROP TABLE IF EXISTS `corridor`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `corridor` ( - `code` varchar(1) COLLATE utf8_unicode_ci NOT NULL COMMENT 'letra que da nombre al pasillo', - `isAscendent` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'TRUE cuando se prepara de menor a mayor, FALSE cuando es a la inversa', + `code` varchar(1) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'letra que da nombre al pasillo', + `isAscendent` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'TRUE cuando se prepara de menor a mayor, FALSE cuando es a la inversa', `prepOrder` int(10) unsigned NOT NULL COMMENT 'orden de preparacion de los pasillos', PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='establece el orden y sentido de preparacion de los pasillos del parking'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='establece el orden y sentido de preparacion de los pasillos del parking'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29272,36 +25559,41 @@ DROP TABLE IF EXISTS `country`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `country` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, - `country` varchar(25) COLLATE utf8_unicode_ci NOT NULL, - `CEE` tinyint(1) NOT NULL DEFAULT '1', - `code` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, - `currencyFk` tinyint(3) unsigned NOT NULL DEFAULT '1', + `country` varchar(25) COLLATE utf8mb3_unicode_ci NOT NULL, + `CEE` tinyint(1) NOT NULL DEFAULT 1, + `code` varchar(2) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `currencyFk` tinyint(3) unsigned NOT NULL DEFAULT 1, `politicalCountryFk` mediumint(8) unsigned NOT NULL COMMENT 'Pais Real(apaño por culpa del España Exento)', `geoFk` int(11) DEFAULT NULL, - `hasDailyInvoice` tinyint(4) NOT NULL DEFAULT '0', - `isUeeMember` tinyint(4) NOT NULL DEFAULT '0', + `hasDailyInvoice` tinyint(4) NOT NULL DEFAULT 0, + `isUeeMember` tinyint(4) NOT NULL DEFAULT 0, `ibanLength` tinyint(4) DEFAULT NULL, `continentFk` tinyint(4) DEFAULT NULL, + `a3Code` int(11) DEFAULT NULL COMMENT 'Código país para a3', PRIMARY KEY (`id`), KEY `Id_Paisreal` (`politicalCountryFk`), KEY `currency_id_fk_idx` (`currencyFk`), KEY `country_Ix4` (`country`), KEY `continent_id_fk_idx` (`continentFk`), + KEY `country_FK_1` (`geoFk`), CONSTRAINT `continent_id_fk` FOREIGN KEY (`continentFk`) REFERENCES `continent` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `country_FK` FOREIGN KEY (`politicalCountryFk`) REFERENCES `country` (`id`) ON UPDATE CASCADE, + CONSTRAINT `country_FK_1` FOREIGN KEY (`geoFk`) REFERENCES `zoneGeo` (`id`) ON UPDATE CASCADE, CONSTRAINT `currency_id_fk` FOREIGN KEY (`currencyFk`) REFERENCES `currency` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`country_beforeInsert` - BEFORE INSERT ON `country` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`country_beforeInsert` + BEFORE INSERT ON `country` + FOR EACH ROW BEGIN SET NEW.geoFk = zoneGeo_new('country', NEW.country, NULL); END */;; @@ -29315,14 +25607,15 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`country_AFTER_INSERT` AFTER INSERT ON `country` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`country_AFTER_INSERT` + AFTER INSERT ON `country` + FOR EACH ROW BEGIN - - UPDATE sage.Naciones + UPDATE sage.Naciones SET countryFk = NEW.id WHERE Nacion = NEW.country; @@ -29331,12 +25624,9 @@ BEGIN 'cau@verdnatura.es', NULL, 'Actualizar tabla sage.Naciones', - CONCAT('Se ha insertado un nuevo país en la tabla vn.conuntry. Para el correcto funcionamiento del sistema - de contabilidad es necesario actualizar la columna sage.Naciones.countryFk con el valor del nuevo país. - Hay que buscar el nuevo país: ', NEW.country, ' en la tabla sage.Naciones y actualizar el campo sage.Naciones.countryFk con el valor ', NEW.id) + CONCAT('Se ha insertado un nuevo país en la tabla vn.conuntry. Para el correcto funcionamiento del sistema \n\t\t\t\tde contabilidad es necesario actualizar la columna sage.Naciones.countryFk con el valor del nuevo país. \n\t\t\t Hay que buscar el nuevo país: ', NEW.country, ' en la tabla sage.Naciones y actualizar el campo sage.Naciones.countryFk con el valor ', NEW.id) ); END IF; - END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -29348,12 +25638,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`country_beforeUpdate` - BEFORE UPDATE ON `country` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`country_beforeUpdate` + BEFORE UPDATE ON `country` + FOR EACH ROW BEGIN -- IF !(OLD.geoFk <=> NEW.geoFk) THEN -- CALL zoneGeo_throwNotEditable; @@ -29369,11 +25660,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`country_afterUpdate` AFTER UPDATE ON `country` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`country_afterUpdate` + AFTER UPDATE ON `country` + FOR EACH ROW BEGIN IF !(OLD.country <=> NEW.country) THEN UPDATE zoneGeo SET `name` = NEW.country @@ -29390,11 +25683,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`country_afterDelete` AFTER DELETE ON `country` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`country_afterDelete` + AFTER DELETE ON `country` + FOR EACH ROW BEGIN CALL zoneGeo_delete(OLD.geoFk); END */;; @@ -29413,9 +25708,9 @@ DROP TABLE IF EXISTS `cplusCorrectingType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusCorrectingType` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29427,9 +25722,9 @@ DROP TABLE IF EXISTS `cplusInvoiceType472`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusInvoiceType472` ( `id` int(10) unsigned NOT NULL, - `description` varchar(255) CHARACTER SET utf8 NOT NULL, + `description` varchar(255) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*18) TIPO FACTURA (Asientos)SOPORTADO – DEDUCIBLE (472)'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='(*18) TIPO FACTURA (Asientos)SOPORTADO – DEDUCIBLE (472)'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29441,9 +25736,9 @@ DROP TABLE IF EXISTS `cplusInvoiceType477`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusInvoiceType477` ( `id` int(10) unsigned NOT NULL, - `description` varchar(255) CHARACTER SET utf8 NOT NULL, + `description` varchar(255) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*18) TIPO FACTURA (Asientos)REPERCUTIDO - DEVENGADO (477)'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='(*18) TIPO FACTURA (Asientos)REPERCUTIDO - DEVENGADO (477)'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29455,9 +25750,9 @@ DROP TABLE IF EXISTS `cplusRectificationType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusRectificationType` ( `id` int(10) unsigned NOT NULL, - `description` varchar(255) CHARACTER SET utf8 NOT NULL, + `description` varchar(255) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*20) TIPO RECTIFICATIVA (Asientos)'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='(*20) TIPO RECTIFICATIVA (Asientos)'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29469,9 +25764,9 @@ DROP TABLE IF EXISTS `cplusSubjectOp`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusSubjectOp` ( `id` int(10) unsigned NOT NULL, - `description` varchar(255) CHARACTER SET utf8 NOT NULL, + `description` varchar(255) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*17) TIPO OPERACIÓN SUJETA/NO SUJETA (Asientos)'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='(*17) TIPO OPERACIÓN SUJETA/NO SUJETA (Asientos)'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29483,9 +25778,9 @@ DROP TABLE IF EXISTS `cplusTaxBreak`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusTaxBreak` ( `id` int(10) unsigned NOT NULL, - `description` varchar(255) CHARACTER SET utf8 NOT NULL, + `description` varchar(255) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*16) TIPO EXENCIÓN (Asientos)'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='(*16) TIPO EXENCIÓN (Asientos)'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29497,9 +25792,9 @@ DROP TABLE IF EXISTS `cplusTerIdNif`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusTerIdNif` ( `id` int(11) NOT NULL, - `description` varchar(255) CHARACTER SET utf8 NOT NULL, + `description` varchar(255) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29511,9 +25806,9 @@ DROP TABLE IF EXISTS `cplusTrascendency472`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusTrascendency472` ( `id` int(10) unsigned NOT NULL, - `description` varchar(255) CHARACTER SET utf8 NOT NULL, + `description` varchar(255) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*15) CLAVE DE RÉGIMEN ESPECIAL O TRASCENDENCIA(Asientos)SOPORTADO – DEDUCIBLE (472)'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='(*15) CLAVE DE RÉGIMEN ESPECIAL O TRASCENDENCIA(Asientos)SOPORTADO – DEDUCIBLE (472)'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29525,9 +25820,9 @@ DROP TABLE IF EXISTS `cplusTrascendency477`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `cplusTrascendency477` ( `id` int(10) unsigned NOT NULL, - `description` varchar(255) CHARACTER SET utf8 NOT NULL, + `description` varchar(255) CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*15) CLAVE DE RÉGIMEN ESPECIAL O TRASCENDENCIA(Asientos) REPERCUTIDO - DEVENGADO (477)'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='(*15) CLAVE DE RÉGIMEN ESPECIAL O TRASCENDENCIA(Asientos) REPERCUTIDO - DEVENGADO (477)'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29546,18 +25841,20 @@ CREATE TABLE `creditClassification` ( KEY `creditClassifClientFk_idx` (`client`), KEY `creditClassifdateEnd_idx` (`dateEnd`), CONSTRAINT `creditClassifClientFk` FOREIGN KEY (`client`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`creditClassification_beforeUpdate` BEFORE UPDATE ON `creditClassification` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`creditClassification_beforeUpdate` + BEFORE UPDATE ON `creditClassification` + FOR EACH ROW BEGIN IF NEW.client <> OLD.client THEN CALL util.throw('NOT_ALLOWED_CHANGE_CLIENT'); @@ -29584,28 +25881,55 @@ CREATE TABLE `creditInsurance` ( `id` int(11) NOT NULL AUTO_INCREMENT, `creditClassification` int(11) DEFAULT NULL, `credit` int(11) DEFAULT NULL, - `creationDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `creationDate` timestamp NOT NULL DEFAULT current_timestamp(), `grade` tinyint(1) DEFAULT NULL, + `creditClassificationFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `CreditInsurance_Fk1_idx` (`creditClassification`), - CONSTRAINT `CreditInsurance_Fk1` FOREIGN KEY (`creditClassification`) REFERENCES `creditClassification` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Detalla los clientes que tienen seguro de credito'; + KEY `creditInsurance_creditClassificationFk` (`creditClassificationFk`), + CONSTRAINT `CreditInsurance_Fk1` FOREIGN KEY (`creditClassification`) REFERENCES `creditClassification` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `creditInsurance_creditClassificationFk` FOREIGN KEY (`creditClassificationFk`) REFERENCES `creditClassification` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Detalla los clientes que tienen seguro de credito'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`creditInsurance_afterInsert` AFTER INSERT ON `creditInsurance` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`creditInsurance_beforeInsert` + BEFORE INSERT ON `creditInsurance` + FOR EACH ROW +BEGIN + IF NEW.creditClassificationFk THEN + SET NEW.creditClassification = NEW.creditClassificationFk; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`creditInsurance_afterInsert` + AFTER INSERT ON `creditInsurance` + FOR EACH ROW BEGIN UPDATE `client` c JOIN vn.creditClassification cc ON cc.client = c.id SET creditInsurance = NEW.credit WHERE cc.id = NEW.creditClassification; - + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -29622,12 +25946,12 @@ DROP TABLE IF EXISTS `currency`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `currency` ( `id` tinyint(3) unsigned NOT NULL, - `code` varchar(3) COLLATE utf8_unicode_ci NOT NULL, - `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `ratio` double NOT NULL DEFAULT '1', + `code` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ratio` double NOT NULL DEFAULT 1, PRIMARY KEY (`id`), UNIQUE KEY `Moneda_UNIQUE` (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29663,7 +25987,7 @@ CREATE TABLE `dayMinute` ( PRIMARY KEY (`id`), KEY `dayMinute_ix1` (`hh`), KEY `dayMinute_ix2` (`mm`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='sirve de soporte para el calculo presencial de los trabjadores'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='sirve de soporte para el calculo presencial de los trabjadores'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29683,6 +26007,26 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; +-- +-- Table structure for table `delivery` +-- + +DROP TABLE IF EXISTS `delivery`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `delivery` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `longitude` decimal(11,7) DEFAULT NULL, + `latitude` decimal(11,7) DEFAULT NULL, + `dated` datetime DEFAULT NULL, + `addressFk` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `delivery_FK` (`addressFk`), + CONSTRAINT `delivery_FK` FOREIGN KEY (`addressFk`) REFERENCES `address` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Informa de los datos geográficos y temporales de las entregas de los repartidores'; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Table structure for table `deliveryMethod` -- @@ -29692,11 +26036,11 @@ DROP TABLE IF EXISTS `deliveryMethod`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `deliveryMethod` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `code` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29708,10 +26052,10 @@ DROP TABLE IF EXISTS `deliveryPoint`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `deliveryPoint` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `ubication` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `ubication` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29722,18 +26066,18 @@ DROP TABLE IF EXISTS `delivery_zip`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `delivery_zip` ( - `postal_code` varchar(2) COLLATE utf8_unicode_ci NOT NULL, - `country_code` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, - `place_name` varchar(150) COLLATE utf8_unicode_ci NOT NULL, - `admin_name1` varchar(150) COLLATE utf8_unicode_ci NOT NULL, - `code_name1` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, - `admin_name2` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_name2` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, - `admin_name3` varchar(150) COLLATE utf8_unicode_ci NOT NULL, - `code_name3` varchar(5) COLLATE utf8_unicode_ci NOT NULL, - `latitude` varchar(10) COLLATE utf8_unicode_ci NOT NULL, - `longitude` varchar(10) COLLATE utf8_unicode_ci NOT NULL, - `accuracy` varchar(1) COLLATE utf8_unicode_ci NOT NULL, + `postal_code` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL, + `country_code` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `place_name` varchar(150) COLLATE utf8mb3_unicode_ci NOT NULL, + `admin_name1` varchar(150) COLLATE utf8mb3_unicode_ci NOT NULL, + `code_name1` varchar(150) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `admin_name2` varchar(150) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_name2` varchar(2) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `admin_name3` varchar(150) COLLATE utf8mb3_unicode_ci NOT NULL, + `code_name3` varchar(5) COLLATE utf8mb3_unicode_ci NOT NULL, + `latitude` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `longitude` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `accuracy` varchar(1) COLLATE utf8mb3_unicode_ci NOT NULL, `delivery_zipPK` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`delivery_zipPK`), KEY `country_code_idx` (`country_code`), @@ -29741,7 +26085,7 @@ CREATE TABLE `delivery_zip` ( KEY `postal_code_idx` (`postal_code`), KEY `admin_name3_idx` (`admin_name3`), KEY `admin_name2_idx` (`admin_name2`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29753,8 +26097,8 @@ DROP TABLE IF EXISTS `department`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `department` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, `lft` int(11) DEFAULT NULL, `rgt` int(11) DEFAULT NULL, `workerFk` int(10) unsigned DEFAULT NULL COMMENT 'Id_Trabajador es el jefe del departamento', @@ -29762,37 +26106,44 @@ CREATE TABLE `department` ( `bossFk__` int(11) DEFAULT NULL, `x__` int(11) DEFAULT NULL, `y__` int(11) DEFAULT NULL, - `isProduction` tinyint(4) NOT NULL DEFAULT '0', - `isSelected` tinyint(1) NOT NULL DEFAULT '0', - `depth` int(11) NOT NULL DEFAULT '0', - `sons` decimal(10,0) NOT NULL DEFAULT '0', - `parentFk` int(10) unsigned DEFAULT NULL, - `path` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `chatName` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `isTeleworking` tinyint(1) DEFAULT '0', - `notificationEmail` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, - `hasToRefill` tinyint(1) DEFAULT '0' COMMENT 'Rellenar días sin fichadas presenciales', - `hasToSendMail` tinyint(1) DEFAULT '0' COMMENT 'Para el envio de mail en el procedimiento workerTimeControl_sendMail()', - `hasToCheckLogin` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Para comprobar en el login de la app', + `isProduction` tinyint(4) NOT NULL DEFAULT 0, + `isSelected` tinyint(1) NOT NULL DEFAULT 0, + `depth` int(11) NOT NULL DEFAULT 0, + `sons` decimal(10,0) NOT NULL DEFAULT 0, + `parentFk` int(11) DEFAULT 1, + `path` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `chatName` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isTeleworking` tinyint(1) DEFAULT 0, + `notificationEmail` varchar(150) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `hasToRefill` tinyint(1) DEFAULT 0 COMMENT 'Rellenar días sin fichadas presenciales', + `hasToSendMail` tinyint(1) DEFAULT 0 COMMENT 'Para el envio de mail en el procedimiento workerTimeControl_sendMail()', + `hasToCheckLogin` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Para comprobar en el login de la app', + `hasToMistake` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Indica si al departamento pueden serles puestos errores', + `clientFk` int(11) DEFAULT NULL COMMENT 'Cuenta de cliente que se utiliza para los compras de consumo departamental', PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`name`), KEY `fk_department_Trabajadores1_idx` (`workerFk`), KEY `dep_org_ibfk_3_idx` (`companyFk`), KEY `lft_rgt_depth_idx` (`lft`,`rgt`,`depth`), + KEY `department_FK` (`clientFk`), + KEY `department_FK_1` (`parentFk`), + CONSTRAINT `department_FK` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `department_FK_1` FOREIGN KEY (`parentFk`) REFERENCES `department` (`id`), CONSTRAINT `fk_department_Trabajadores1` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`department_beforeInsert` - BEFORE INSERT ON `department` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`department_beforeInsert` + BEFORE INSERT ON `department` + FOR EACH ROW BEGIN UPDATE vn.department_recalc SET isChanged = TRUE; END */;; @@ -29806,12 +26157,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`department_afterUpdate` - AFTER UPDATE ON `department` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`department_afterUpdate` + AFTER UPDATE ON `department` + FOR EACH ROW BEGIN IF !(OLD.parentFk <=> NEW.parentFk) THEN UPDATE vn.department_recalc SET isChanged = TRUE; @@ -29827,42 +26179,52 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`department_afterDelete` - AFTER DELETE ON `department` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`department_beforeDelete` + BEFORE DELETE ON `department` + FOR EACH ROW BEGIN - UPDATE vn.department_recalc SET isChanged = TRUE; + + UPDATE vn.business b + JOIN vn.department d ON d.id = b.departmentFk + SET b.departmentFk = d.parentFk + WHERE b.departmentFk = OLD.id; + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`department_afterDelete` + AFTER DELETE ON `department` + FOR EACH ROW +BEGIN --- --- Table structure for table `departmentItemType__` --- + UPDATE vn.department_recalc SET isChanged = TRUE; -DROP TABLE IF EXISTS `departmentItemType__`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `departmentItemType__` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `departmentFk` int(11) NOT NULL, - `itemTypeFk` smallint(5) unsigned NOT NULL, - `workerFk` int(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `departmentItemTypeIdx1_idx` (`departmentFk`,`itemTypeFk`), - KEY `departmentItemTypeIdx2_idx` (`itemTypeFk`), - KEY `departmentItemTypeIdx3_idx` (`workerFk`), - CONSTRAINT `departmentItemTypeIdx1` FOREIGN KEY (`departmentFk`) REFERENCES `department` (`id`) ON UPDATE CASCADE, - CONSTRAINT `departmentItemTypeIdx2` FOREIGN KEY (`itemTypeFk`) REFERENCES `itemType` (`id`) ON UPDATE CASCADE, - CONSTRAINT `departmentItemTypeIdx3` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; + UPDATE vn.business b + JOIN vn.department d ON d.id = b.departmentFk + SET b.departmentFk = d.parentFk + WHERE b.departmentFk = OLD.id; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; -- -- Temporary table structure for view `departmentTree` @@ -29889,7 +26251,7 @@ CREATE TABLE `department_recalc` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `isChanged` tinyint(4) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29901,13 +26263,13 @@ DROP TABLE IF EXISTS `device`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `device` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `sn` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `model` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `sn` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `userFk` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `device_fk1_idx` (`userFk`), CONSTRAINT `device_fk1` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29919,13 +26281,15 @@ DROP TABLE IF EXISTS `deviceLog`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `deviceLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `android_id` varchar(100) COLLATE utf8_unicode_ci NOT NULL, - `userFk` int(11) DEFAULT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `nameApp` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `versionApp` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + `android_id` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + `userFk` int(10) unsigned DEFAULT NULL, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `nameApp` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `versionApp` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `deviceLog_FK` (`userFk`), + CONSTRAINT `deviceLog_FK` FOREIGN KEY (`userFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29937,13 +26301,14 @@ DROP TABLE IF EXISTS `deviceProduction`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `deviceProduction` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `imei` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `modelFk` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `macWifi` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `serialNumber` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `imei` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `modelFk` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `macWifi` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `serialNumber` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `departmentFk` int(11) DEFAULT NULL, - `isOutOfService` tinyint(1) NOT NULL DEFAULT '0', - `android_id` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `isOutOfService` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0: Ok - 1: No disponible - 2: Sat', + `android_id` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `purchased` date NOT NULL DEFAULT '1900-01-01' COMMENT 'Fecha de compra', PRIMARY KEY (`id`), UNIQUE KEY `device_id_UNIQUE` (`id`), UNIQUE KEY `sn_UNIQUE` (`imei`), @@ -29952,7 +26317,7 @@ CREATE TABLE `deviceProduction` ( KEY `departmentFgn` (`departmentFk`), CONSTRAINT `departmentFgn` FOREIGN KEY (`departmentFk`) REFERENCES `department` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `deviceProductionModelsFgn` FOREIGN KEY (`modelFk`) REFERENCES `deviceProductionModels` (`code`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -29964,26 +26329,26 @@ DROP TABLE IF EXISTS `deviceProductionConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `deviceProductionConfig` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `isAllUsersallowed` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Permite que cualquier usuario pueda loguearse', - `isTractorHuntingMode` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Habilita el modo cazador para usuarios que no se han logeado un tractor para sacar', + `isAllUsersallowed` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Permite que cualquier usuario pueda loguearse', + `isTractorHuntingMode` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Habilita el modo cazador para usuarios que no se han logeado un tractor para sacar', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER deviceProductionConfig_afterUpdate - AFTER UPDATE ON deviceProductionConfig +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`deviceProductionConfig_afterUpdate` + AFTER UPDATE ON `deviceProductionConfig` FOR EACH ROW BEGIN IF NEW.isAllUsersAllowed = 1 OR NEW.isAllUsersAllowed = -1 THEN - SET @username := (SELECT account.userGetName()); + SET @username := (SELECT account.myUser_getName()); INSERT INTO vn.mail (receiver, subject, body) VALUES ('cau@verdnatura.es', 'Se ha activado la autenticación sin restricciones en la app', CONCAT('El usuario ', @username,' ha habilitado la opción para que todos los usuarios puedan acceder a la app sin restricciones')); @@ -30003,9 +26368,9 @@ DROP TABLE IF EXISTS `deviceProductionModels`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `deviceProductionModels` ( - `code` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30018,11 +26383,13 @@ DROP TABLE IF EXISTS `deviceProductionUser`; CREATE TABLE `deviceProductionUser` ( `deviceProductionFk` int(11) NOT NULL, `userFk` int(10) unsigned NOT NULL, - PRIMARY KEY (`deviceProductionFk`,`userFk`), + `created` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`deviceProductionFk`), + UNIQUE KEY `deviceProductionUser_UN` (`userFk`), KEY `userFgn_idx` (`userFk`), - CONSTRAINT `deviceProductionFgn` FOREIGN KEY (`deviceProductionFk`) REFERENCES `deviceProduction` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `userFgn` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + CONSTRAINT `deviceProductionUser_FK` FOREIGN KEY (`deviceProductionFk`) REFERENCES `deviceProduction` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `deviceProductionUser_PK` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30034,9 +26401,9 @@ DROP TABLE IF EXISTS `disabilityGrade`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `disabilityGrade` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Grados de discapacidad Modelo 145 IRPF', - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30048,17 +26415,17 @@ DROP TABLE IF EXISTS `dms`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `dms` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `dmsTypeFk` int(11) NOT NULL DEFAULT '1', - `reference` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL, - `companyFk` smallint(5) unsigned NOT NULL DEFAULT '442', + `dmsTypeFk` int(11) NOT NULL DEFAULT 1, + `reference` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` varchar(200) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `companyFk` smallint(5) unsigned NOT NULL DEFAULT 442, `hardCopyNumber` mediumint(8) unsigned DEFAULT NULL, - `contentType` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, - `file` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `hasFile` tinyint(4) NOT NULL DEFAULT '0', + `contentType` varchar(150) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `file` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `hasFile` tinyint(4) NOT NULL DEFAULT 0, `workerFk` int(10) unsigned DEFAULT NULL, - `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `warehouseFk` smallint(5) unsigned DEFAULT '60', + `created` timestamp NULL DEFAULT current_timestamp(), + `warehouseFk` smallint(5) unsigned DEFAULT 60, PRIMARY KEY (`id`), UNIQUE KEY `emp_id` (`companyFk`,`hardCopyNumber`,`warehouseFk`), UNIQUE KEY `dms_hardCopyNumber_IDX` (`hardCopyNumber`,`warehouseFk`) USING BTREE, @@ -30069,35 +26436,37 @@ CREATE TABLE `dms` ( CONSTRAINT `dms_dmsTypeFk` FOREIGN KEY (`dmsTypeFk`) REFERENCES `dmsType` (`id`) ON UPDATE CASCADE, CONSTRAINT `dms_warehouseFk` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, CONSTRAINT `dms_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='document managment system'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='document managment system'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`dms_beforeInsert` BEFORE INSERT ON `vn`.`dms` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`dms_beforeInsert` + BEFORE INSERT ON `dms` + FOR EACH ROW BEGIN DECLARE vHardCopyNumber INT; DECLARE vDmsTypeCode INT; - + IF (SELECT NOT hasDms FROM warehouse WHERE id = NEW.warehouseFk) THEN CALL util.throw('this warehouse has not dms'); END IF; IF NEW.hasFile THEN - SELECT 1 + MAX(hardCopyNumber) INTO vHardCopyNumber - FROM dms + SELECT 1 + MAX(hardCopyNumber) INTO vHardCopyNumber + FROM dms WHERE warehouseFk = NEW.warehouseFk; - + SET NEW.hardCopyNumber = IFNULL(vHardCopyNumber,1); END IF; - - SELECT code INTO vDmsTypeCode + + SELECT code INTO vDmsTypeCode FROM dmsType WHERE NEW.dmsTypeFk = id; IF (vDmsTypeCode ='ticket') THEN UPDATE ticket SET isSigned = 1 WHERE id = NEW.reference; @@ -30111,31 +26480,35 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`dms_beforeUpdate` BEFORE UPDATE ON `vn`.`dms` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`dms_beforeUpdate` + BEFORE UPDATE ON `dms` + FOR EACH ROW BEGIN DECLARE vHardCopyNumber INT; - - IF (NEW.hasFile <> 0) AND (OLD.hasFile = 0) AND (NEW.hardCopyNumber IS NULL) THEN - - IF (SELECT NOT hasDms FROM warehouse WHERE id = NEW.warehouseFk) THEN + + IF (NEW.hasFile <> 0) AND (OLD.hasFile = 0) AND (NEW.hardCopyNumber IS NULL) + OR + (NEW.hardCopyNumber = OLD.hardCopyNumber AND OLD.warehouseFk <> NEW.warehouseFk) THEN + + IF (SELECT NOT hasDms FROM warehouse WHERE id = NEW.warehouseFk) THEN SET NEW.warehouseFk = (SELECT id FROM warehouse WHERE name = 'Algemesi'); END IF; - - SELECT 1 + MAX(hardCopyNumber) INTO vHardCopyNumber - FROM dms + + SELECT 1 + MAX(hardCopyNumber) INTO vHardCopyNumber + FROM dms WHERE warehouseFk = NEW.warehouseFk; - + SET NEW.hardCopyNumber = IFNULL(vHardCopyNumber,1); END IF; - + IF ((NEW.hardCopyNumber = 0) OR NEW.hardCopyNumber IS NULL) AND (OLD.hardCopyNumber <> 0) THEN - + SET NEW.hasFile = 0; END IF; END */;; @@ -30144,6 +26517,34 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`dms_beforeDelete` + BEFORE DELETE ON `dms` + FOR EACH ROW +BEGIN + DECLARE vCanNotBeDeleted INT; + SELECT COUNT(*) INTO vCanNotBeDeleted + FROM dmsType dt + WHERE NOT (code <=> 'trash') + AND dt.id = OLD.dmsTypeFk; + + IF vCanNotBeDeleted THEN + CALL util.throw('A dms can not be deleted'); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; -- -- Table structure for table `dmsRecover` @@ -30155,12 +26556,12 @@ DROP TABLE IF EXISTS `dmsRecover`; CREATE TABLE `dmsRecover` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ticketFk` int(11) DEFAULT NULL, - `sign` text COLLATE utf8_unicode_ci, - `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `sign` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `created` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `ticketFk_idx` (`ticketFk`), CONSTRAINT `ticketFk` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30172,17 +26573,64 @@ DROP TABLE IF EXISTS `dmsType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `dmsType` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `path` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `path` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `writeRoleFk` int(10) unsigned DEFAULT NULL, `readRoleFk` int(10) unsigned DEFAULT NULL, - `code` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `monthToDelete` int(10) unsigned DEFAULT NULL COMMENT 'Meses en el pasado para ir borrando registros, dejar a null para no borrarlos nunca', PRIMARY KEY (`id`), KEY `readRoleFk` (`readRoleFk`), KEY `writeRoleFk` (`writeRoleFk`), CONSTRAINT `readRoleFk` FOREIGN KEY (`readRoleFk`) REFERENCES `account`.`role` (`id`), CONSTRAINT `writeRoleFk` FOREIGN KEY (`writeRoleFk`) REFERENCES `account`.`role` (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dock` +-- + +DROP TABLE IF EXISTS `dock`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `dock` ( + `code` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `description` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Se utiliza para el panel de grafana: https://grafana.verdnatura.es/d/w9w3Uo-7z/'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `docuware` +-- + +DROP TABLE IF EXISTS `docuware`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `docuware` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `code` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fileCabinetName` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `dialogName` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `find` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `docuwareConfig` +-- + +DROP TABLE IF EXISTS `docuwareConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `docuwareConfig` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `url` varchar(75) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `token` varchar(1000) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30194,7 +26642,7 @@ DROP TABLE IF EXISTS `dua`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `dua` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `awbFk` smallint(11) unsigned NOT NULL, `issued` date DEFAULT NULL, `operated` date DEFAULT NULL, @@ -30202,7 +26650,7 @@ CREATE TABLE `dua` ( `bookEntried` date DEFAULT NULL, `gestdocFk` int(11) DEFAULT NULL, `customsValue` decimal(10,2) DEFAULT NULL, - `companyFk` smallint(5) unsigned NOT NULL DEFAULT '442', + `companyFk` smallint(5) unsigned NOT NULL DEFAULT 442, `ASIEN` double DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code_UNIQUE` (`code`), @@ -30212,7 +26660,7 @@ CREATE TABLE `dua` ( CONSTRAINT `dua_fk1` FOREIGN KEY (`gestdocFk`) REFERENCES `dms` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `dua_fk2` FOREIGN KEY (`awbFk`) REFERENCES `awb` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `dua_fk4` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30233,7 +26681,7 @@ CREATE TABLE `duaEntry` ( KEY `fk_duaEntry_Entradas1_idx` (`entryFk`), CONSTRAINT `fk_duaEntry_Entradas1` FOREIGN KEY (`entryFk`) REFERENCES `entry` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_duaEntry_dua1` FOREIGN KEY (`duaFk`) REFERENCES `dua` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30247,13 +26695,13 @@ CREATE TABLE `duaIntrastat` ( `id` int(11) NOT NULL AUTO_INCREMENT, `duaFk` int(11) NOT NULL, `intrastatFk` int(8) unsigned NOT NULL, - `amount` decimal(10,2) NOT NULL DEFAULT '0.00', + `amount` decimal(10,2) NOT NULL DEFAULT 0.00, PRIMARY KEY (`id`), KEY `duaIntrastat_fk1_idx` (`intrastatFk`), KEY `duaIntrastat_fk2_idx` (`duaFk`), CONSTRAINT `duaIntrastat_fk1` FOREIGN KEY (`intrastatFk`) REFERENCES `intrastat` (`id`) ON UPDATE CASCADE, CONSTRAINT `duaIntrastat_fk2` FOREIGN KEY (`duaFk`) REFERENCES `dua` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30273,7 +26721,7 @@ CREATE TABLE `duaInvoiceIn` ( KEY `duaInvoiceIn_fk2_idx` (`invoiceInFk`), CONSTRAINT `duaInvoiceIn_fk1` FOREIGN KEY (`duaFk`) REFERENCES `dua` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `duaInvoiceIn_fk2` FOREIGN KEY (`invoiceInFk`) REFERENCES `invoiceIn` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Facturas asociadas a la declaración aduanera, básicamente la del agente transitario'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Facturas asociadas a la declaración aduanera, básicamente la del agente transitario'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30298,18 +26746,20 @@ CREATE TABLE `duaTax` ( CONSTRAINT `duaTax_fk1` FOREIGN KEY (`duaFk`) REFERENCES `dua` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `duaTax_fk2` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE, CONSTRAINT `duaTax_fk3` FOREIGN KEY (`taxClassFk`) REFERENCES `taxClass` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`duaTax_BEFORE_INSERT` BEFORE INSERT ON `duaTax` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`duaTax_BEFORE_INSERT` + BEFORE INSERT ON `duaTax` + FOR EACH ROW BEGIN SET NEW.rate = duaTax_getRate(NEW.duaFk, NEW.taxClassFk); SET NEW.tax = NEW.base * NEW.rate / 100; @@ -30324,11 +26774,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`duaTax_BEFORE_UPDATE` BEFORE UPDATE ON `duaTax` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`duaTax_BEFORE_UPDATE` + BEFORE UPDATE ON `duaTax` + FOR EACH ROW BEGIN SET NEW.rate = duaTax_getRate(NEW.duaFk, NEW.taxClassFk); SET NEW.tax = NEW.base * NEW.rate / 100; @@ -30383,9 +26835,9 @@ DROP TABLE IF EXISTS `educationLevel`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `educationLevel` ( `id` smallint(6) NOT NULL, - `name` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(200) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Nivel de formación mismo de a3'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Nivel de formación mismo de a3'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30400,17 +26852,38 @@ CREATE TABLE `ektEntryAssign` ( `kop` int(11) DEFAULT NULL, `sub` mediumint(8) unsigned DEFAULT NULL, `pro` mediumint(8) unsigned DEFAULT NULL, + `auction` int(11) DEFAULT NULL, `warehouseOutFk` int(11) DEFAULT NULL, `warehouseInFk` int(11) DEFAULT NULL, `agencyModeFk` int(11) DEFAULT NULL, `supplierFk` int(11) DEFAULT NULL, `entryFk` int(11) DEFAULT NULL, - `ref` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `addressFk` int(11) DEFAULT NULL, + `companyFk` smallint(5) unsigned NOT NULL DEFAULT 442, PRIMARY KEY (`id`), - UNIQUE KEY `ektEntryAssign_ix1` (`kop`,`sub`,`pro`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='define las condiciones para asignar entradas a los ekt'; + UNIQUE KEY `ektEntryAssign_ix1` (`kop`,`sub`,`pro`), + KEY `ektEntryAssign_FK` (`addressFk`), + CONSTRAINT `ektEntryAssign_FK` FOREIGN KEY (`addressFk`) REFERENCES `address` (`id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='define las condiciones para asignar entradas a los ekt'; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Temporary table structure for view `ektSubAddress` +-- + +DROP TABLE IF EXISTS `ektSubAddress`; +/*!50001 DROP VIEW IF EXISTS `ektSubAddress`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `ektSubAddress` ( + `sub` tinyint NOT NULL, + `clientFk` tinyint NOT NULL, + `nickname` tinyint NOT NULL, + `addressFk` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + -- -- Table structure for table `emergencyMedia` -- @@ -30420,10 +26893,10 @@ DROP TABLE IF EXISTS `emergencyMedia`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `emergencyMedia` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `value` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Table to save all emergency phones', + `name` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `value` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'Table to save all emergency phones', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30435,10 +26908,10 @@ DROP TABLE IF EXISTS `energyInput`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `energyInput` ( `input` int(11) NOT NULL COMMENT 'The input number', - `description` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `consumption` int(11) NOT NULL COMMENT 'Consumption in watts', PRIMARY KEY (`input`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Defines inputs and the power of each one'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Defines inputs and the power of each one'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30454,7 +26927,7 @@ CREATE TABLE `energyMeter` ( `activeTime` int(11) NOT NULL COMMENT 'Number of seconds active', `consumption` decimal(10,2) NOT NULL COMMENT 'Comsumption in watts', PRIMARY KEY (`input`,`period`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='History of consumption of each input with one hour intervals'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='History of consumption of each input with one hour intervals'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30466,28 +26939,32 @@ DROP TABLE IF EXISTS `entry`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `entry` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `supplierFk` int(11) NOT NULL DEFAULT '644', + `supplierFk` int(11) NOT NULL DEFAULT 644, `dated` datetime NOT NULL, - `ref` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `isBooked` tinyint(1) NOT NULL DEFAULT '0', - `isInventory` tinyint(1) NOT NULL DEFAULT '0', - `notes` longtext COLLATE utf8_unicode_ci, - `isConfirmed` tinyint(1) NOT NULL DEFAULT '0', - `isOrdered` tinyint(1) NOT NULL DEFAULT '0', - `isRaid` tinyint(1) NOT NULL DEFAULT '0', - `commission` float DEFAULT '0', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `evaNotes` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isBooked` tinyint(1) NOT NULL DEFAULT 0, + `isExcludedFromAvailable` tinyint(1) NOT NULL DEFAULT 0, + `notes` longtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isConfirmed` tinyint(1) NOT NULL DEFAULT 0, + `isOrdered` tinyint(1) NOT NULL DEFAULT 0, + `isRaid` tinyint(1) NOT NULL DEFAULT 0, + `commission` float DEFAULT 0, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `evaNotes` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `travelFk` int(11) unsigned DEFAULT NULL, - `currencyFk` tinyint(3) unsigned DEFAULT '1', - `companyFk` smallint(5) unsigned NOT NULL DEFAULT '442', + `currencyFk` tinyint(3) unsigned DEFAULT 1, + `companyFk` smallint(5) unsigned NOT NULL DEFAULT 442, `gestDocFk` int(11) DEFAULT NULL, `invoiceInFk` mediumint(8) unsigned DEFAULT NULL, - `isBlocked` tinyint(4) NOT NULL DEFAULT '0', + `isBlocked` tinyint(4) NOT NULL DEFAULT 0, `loadPriority` int(11) DEFAULT NULL, `kop` int(11) DEFAULT NULL, `sub` mediumint(8) unsigned DEFAULT NULL, `pro` mediumint(8) unsigned DEFAULT NULL, + `auction` int(11) DEFAULT NULL, + `invoiceAmount` decimal(10,2) DEFAULT NULL, + `buyerFk` int(10) unsigned DEFAULT NULL, + `typeFk` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'Tipo de entrada', PRIMARY KEY (`id`), KEY `Id_Proveedor` (`supplierFk`), KEY `Fecha` (`dated`), @@ -30495,25 +26972,30 @@ CREATE TABLE `entry` ( KEY `empresa_id` (`companyFk`), KEY `gestdoc_id` (`gestDocFk`), KEY `recibida_id` (`invoiceInFk`), + KEY `entry_FK` (`buyerFk`), + KEY `entry_FK_1` (`typeFk`), CONSTRAINT `Entradas_fk8` FOREIGN KEY (`invoiceInFk`) REFERENCES `invoiceIn` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `entry_FK` FOREIGN KEY (`buyerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, + CONSTRAINT `entry_FK_1` FOREIGN KEY (`typeFk`) REFERENCES `entryType` (`code`) ON UPDATE CASCADE, CONSTRAINT `entry_ibfk_1` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE, CONSTRAINT `entry_ibfk_6` FOREIGN KEY (`travelFk`) REFERENCES `travel` (`id`) ON UPDATE CASCADE, CONSTRAINT `entry_ibfk_7` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='InnoDB free: 88064 kB; (`Id_Proveedor`) REFER `vn2008/Provee'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='InnoDB free: 88064 kB; (`Id_Proveedor`) REFER `vn2008/Provee'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `entry_beforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`entry_beforeInsert` BEFORE INSERT ON `entry` - FOR EACH ROW + FOR EACH ROW BEGIN + CALL supplier_checkIsActive(NEW.supplierFk); SET NEW.currencyFk = entry_getCurrency(NEW.currencyFk, NEW.supplierFk); SET NEW.commission = entry_getCommission(NEW.travelFk, NEW.currencyFk,NEW.supplierFk); END */;; @@ -30527,14 +27009,14 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `entry_afterInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`entry_afterInsert` AFTER INSERT ON `entry` - FOR EACH ROW -BEGIN + FOR EACH ROW +BEGIN CALL travel_requestRecalc(NEW.travelFk); END */;; DELIMITER ; @@ -30547,13 +27029,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`entry_beforeUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`entry_beforeUpdate` BEFORE UPDATE ON `entry` - FOR EACH ROW + FOR EACH ROW BEGIN DECLARE vIsVirtual BOOL; DECLARE vPrintedCount INT; @@ -30574,7 +27056,7 @@ BEGIN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'A cloned entry cannot be moved to a travel with different warehouses'; END IF; - + IF NEW.travelFk IS NULL THEN SELECT COUNT(*) INTO vPrintedCount FROM buy @@ -30589,11 +27071,12 @@ BEGIN END IF; IF !(NEW.supplierFk <=> OLD.supplierFk) THEN + CALL supplier_checkIsActive(NEW.supplierFk); SET NEW.currencyFk = entry_getCurrency(NEW.currencyFk, NEW.supplierFk); END IF; IF !(NEW.travelFk <=> OLD.travelFk) - OR !(NEW.currencyFk <=> OLD.currencyFk) THEN + OR !(NEW.currencyFk <=> OLD.currencyFk) THEN SET NEW.commission = entry_getCommission(NEW.travelFk, NEW.currencyFk,NEW.supplierFk); END IF; @@ -30615,24 +27098,34 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `entry_afterUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`entry_afterUpdate` AFTER UPDATE ON `entry` - FOR EACH ROW + FOR EACH ROW BEGIN IF !(NEW.id <=> OLD.id) OR !(NEW.travelFk <=> OLD.travelFk) OR !(NEW.isRaid <=> OLD.isRaid) THEN CALL stock.log_add('entry', NEW.id, OLD.id); END IF; - + IF !(NEW.travelFk <=> OLD.travelFk) THEN CALL travel_requestRecalc(OLD.travelFk); CALL travel_requestRecalc(NEW.travelFk); END IF; + + IF NOT (NEW.invoiceAmount <=> OLD.invoiceAmount) THEN + INSERT INTO vn.entryLog SET + `action` = 'update', + userFk = account.myUser_getId(), + originFk = NEW.id, + changedModel = 'Entry', + oldInstance = CONCAT('{"old invoiceAmount":', OLD.invoiceAmount, '}'), + newInstance = CONCAT('{"new invoiceAmount":', NEW.invoiceAmount, '}'); + END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -30644,13 +27137,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `entry_beforeDelete` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`entry_beforeDelete` BEFORE DELETE ON `entry` - FOR EACH ROW + FOR EACH ROW BEGIN DELETE FROM buy WHERE entryFk = OLD.id; END */;; @@ -30664,14 +27157,14 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `entry_afterDelete` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`entry_afterDelete` AFTER DELETE ON `entry` - FOR EACH ROW -BEGIN + FOR EACH ROW +BEGIN CALL travel_requestRecalc(OLD.travelFk); END */;; DELIMITER ; @@ -30689,32 +27182,12 @@ DROP TABLE IF EXISTS `entryConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `entryConfig` ( `defaultEntry` int(11) NOT NULL, + `mailToNotify` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `inventorySupplierFk` int(11) DEFAULT 4, PRIMARY KEY (`defaultEntry`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `entryList` --- - -DROP TABLE IF EXISTS `entryList`; -/*!50001 DROP VIEW IF EXISTS `entryList`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `entryList` ( - `entryFk` tinyint NOT NULL, - `isHere` tinyint NOT NULL, - `landed` tinyint NOT NULL, - `supplier` tinyint NOT NULL, - `entryRef` tinyint NOT NULL, - `agency` tinyint NOT NULL, - `travelRef` tinyint NOT NULL, - `appointment` tinyint NOT NULL, - `supplierFk` tinyint NOT NULL, - `warehouseInFk` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `entryLog` -- @@ -30726,20 +27199,20 @@ CREATE TABLE `entryLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `originFk` int(11) NOT NULL, `userFk` int(10) unsigned NOT NULL, - `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `description` text CHARACTER SET utf8, - `changedModel` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `oldInstance` text COLLATE utf8_unicode_ci, - `newInstance` text COLLATE utf8_unicode_ci, + `action` set('insert','update','delete') COLLATE utf8mb3_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT current_timestamp(), + `description` text CHARACTER SET utf8mb3 DEFAULT NULL, + `changedModel` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `oldInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `newInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `changedModelId` int(11) DEFAULT NULL, - `changedModelValue` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `changedModelValue` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `logEntry_ibfk_1` (`originFk`), KEY `entryLog_ibfk_2` (`userFk`), CONSTRAINT `entryLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `entry` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `entryLog_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30753,13 +27226,13 @@ CREATE TABLE `entryObservation` ( `id` int(11) NOT NULL AUTO_INCREMENT, `entryFk` int(11) NOT NULL, `observationTypeFk` tinyint(3) unsigned DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `entryFk_observationTypeFk_UNIQUE` (`entryFk`,`observationTypeFk`), KEY `observationType_id_observationTypeFk` (`observationTypeFk`), CONSTRAINT `entry_id_entryFk` FOREIGN KEY (`entryFk`) REFERENCES `entry` (`id`), CONSTRAINT `observationType_id_observationTypeFk` FOREIGN KEY (`observationTypeFk`) REFERENCES `observationType` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30776,7 +27249,21 @@ CREATE TABLE `entrySplit__` ( KEY `entrySplit_fk2_idx` (`delayedFk`), CONSTRAINT `entrySplit_fk1` FOREIGN KEY (`receivedFk`) REFERENCES `entry` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `entrySplit_fk2` FOREIGN KEY (`delayedFk`) REFERENCES `entry` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `entryType` +-- + +DROP TABLE IF EXISTS `entryType`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `entryType` ( + `code` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + PRIMARY KEY (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30790,7 +27277,7 @@ CREATE TABLE `entryVirtual` ( `entryFk` int(11) NOT NULL, PRIMARY KEY (`entryFk`), CONSTRAINT `entryVirtual_ibfk_1` FOREIGN KEY (`entryFk`) REFERENCES `entry` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='entradas que se van moviendo automaticamente al futuro'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='entradas que se van moviendo automaticamente al futuro'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30801,25 +27288,27 @@ DROP TABLE IF EXISTS `envialiaAgency`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `envialiaAgency` ( - `id` varchar(6) COLLATE utf8_unicode_ci NOT NULL, - `route` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `agencyName` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `id` varchar(6) COLLATE utf8mb3_unicode_ci NOT NULL, + `route` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `agencyName` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id_UNIQUE` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`envialiaAgency_bd` BEFORE DELETE ON `envialiaAgency` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`envialiaAgency_bd` + BEFORE DELETE ON `envialiaAgency` + FOR EACH ROW BEGIN - CALL util.debugAdd("envialiaAgency", OLD.id); + CALL util.debugAdd("envialiaAgency", OLD.id); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -30836,26 +27325,28 @@ DROP TABLE IF EXISTS `envialiaCity`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `envialiaCity` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `city` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `postalCode` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `agencyFk` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `city` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `postalCode` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `agencyFk` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), KEY `agencyFk` (`agencyFk`), KEY `postalCode` (`postalCode`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`envialiaCity_bd` BEFORE DELETE ON `envialiaCity` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`envialiaCity_bd` + BEFORE DELETE ON `envialiaCity` + FOR EACH ROW BEGIN - CALL util.debugAdd("envialiaCity", OLD.id); + CALL util.debugAdd("envialiaCity", OLD.id); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -30871,16 +27362,16 @@ DROP TABLE IF EXISTS `envialiaConfig`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `envialiaConfig` ( - `serviceType` varchar(3) COLLATE utf8_unicode_ci NOT NULL DEFAULT '024' COMMENT 'Tipo de servicio en horas. 024 -> servicio las 24h', - `numBox` varchar(3) COLLATE utf8_unicode_ci DEFAULT '001' COMMENT 'cajas por envio', + `serviceType` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '024' COMMENT 'Tipo de servicio en horas. 024 -> servicio las 24h', + `numBox` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT '001' COMMENT 'cajas por envio', `startRange` bigint(25) DEFAULT NULL COMMENT 'Principio del rango que nos proporciona enviaría', `endRange` bigint(25) DEFAULT NULL COMMENT 'limite del rango que nos proporciona enviaría', - `cargoAgency` varchar(25) COLLATE utf8_unicode_ci DEFAULT '004666' COMMENT 'numero de verdnatura dado por enviaría', + `cargoAgency` varchar(25) COLLATE utf8mb3_unicode_ci DEFAULT '004666' COMMENT 'numero de verdnatura dado por enviaría', `actualNumber` bigint(25) DEFAULT NULL COMMENT 'Numero actual de etiquetas imprimidas , comprimido entre startRange y endRange, ', - `isAlreadyNotified` int(1) NOT NULL DEFAULT '0' COMMENT 'Booleano para que el evento vn.envialiaRangeChecker compruebe si se a enviado una notificación\n', + `isAlreadyNotified` int(1) NOT NULL DEFAULT 0 COMMENT 'Booleano para que el evento vn.envialiaRangeChecker compruebe si se a enviado una notificación\n', `notificationThrehold` int(11) DEFAULT NULL COMMENT 'Umbral para avisar a enviaría de reseetar el startRange y endRange\nSe avisara a enviaría si el umbral + el actualNumber es superior a endRange\n', PRIMARY KEY (`serviceType`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30892,11 +27383,11 @@ DROP TABLE IF EXISTS `errorLogApp`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `errorLogApp` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `error` varchar(55) COLLATE utf8_unicode_ci DEFAULT NULL, + `error` varchar(55) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date` datetime DEFAULT NULL, `workerFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Guarda un registro de errores e la app de almacén'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Guarda un registro de errores e la app de almacén'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30909,19 +27400,19 @@ DROP TABLE IF EXISTS `errorProduction`; CREATE TABLE `errorProduction` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userFk` int(11) DEFAULT NULL, - `firstname` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `lastname` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `rol` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `firstname` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `lastname` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `rol` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `ticketNumber` int(11) DEFAULT NULL, + `lineNumber` int(11) DEFAULT NULL, `error` int(11) DEFAULT NULL, - `ratio` double DEFAULT NULL, `volume` double DEFAULT NULL, - `hourStart` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `hourEnd` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `hourWorked` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `hourStart` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `hourEnd` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `hourWorked` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `dated` date DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30934,9 +27425,9 @@ DROP TABLE IF EXISTS `errorProduction__`; CREATE TABLE `errorProduction__` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userFk` int(11) DEFAULT NULL, - `firstname` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `lastname` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `rol` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `firstname` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `lastname` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `rol` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `ticketNumber` int(11) DEFAULT NULL, `error` int(11) DEFAULT NULL, `ratio` double DEFAULT NULL, @@ -30944,7 +27435,7 @@ CREATE TABLE `errorProduction__` ( `month` int(11) DEFAULT NULL, `year` int(11) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30959,7 +27450,7 @@ CREATE TABLE `erte` ( `workerFk` int(11) NOT NULL, `started` date DEFAULT NULL, `ended` date DEFAULT NULL, - `reduction` int(3) NOT NULL DEFAULT '1', + `reduction` int(3) NOT NULL DEFAULT 1, `monday` tinyint(1) DEFAULT NULL, `tuesday` tinyint(1) DEFAULT NULL, `wednesday` tinyint(1) DEFAULT NULL, @@ -30968,7 +27459,7 @@ CREATE TABLE `erte` ( `saturday` tinyint(1) DEFAULT NULL, `sunday` tinyint(1) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -30986,21 +27477,6 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `exchangeInsuranceIn` --- - -DROP TABLE IF EXISTS `exchangeInsuranceIn`; -/*!50001 DROP VIEW IF EXISTS `exchangeInsuranceIn`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `exchangeInsuranceIn` ( - `dated` tinyint NOT NULL, - `amount` tinyint NOT NULL, - `rate` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Temporary table structure for view `exchangeInsuranceOut` -- @@ -31016,25 +27492,6 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `exchangeReportSourcePrevious` --- - -DROP TABLE IF EXISTS `exchangeReportSourcePrevious`; -/*!50001 DROP VIEW IF EXISTS `exchangeReportSourcePrevious`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `exchangeReportSourcePrevious` ( - `dated` tinyint NOT NULL, - `amountIn` tinyint NOT NULL, - `rateIn` tinyint NOT NULL, - `amountOut` tinyint NOT NULL, - `rateOut` tinyint NOT NULL, - `amountEntry` tinyint NOT NULL, - `rateEntry` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `excuse` -- @@ -31045,9 +27502,9 @@ DROP TABLE IF EXISTS `excuse`; CREATE TABLE `excuse` ( `id` int(11) NOT NULL AUTO_INCREMENT, `txt` varchar(255) CHARACTER SET latin1 NOT NULL, - `date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `date` datetime NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -31061,69 +27518,78 @@ CREATE TABLE `expedition` ( `id` int(11) NOT NULL AUTO_INCREMENT, `agencyModeFk` int(11) NOT NULL, `ticketFk` int(10) NOT NULL, - `isBox` int(11) DEFAULT '1' COMMENT 'Este campo realmente en un campo itemFk, haciendo referencia al artículo que nos va a facturar el proveedor de transporte.\nSe debería llamar freightItemFk', - `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `isRefund` bit(1) DEFAULT b'0', - `isPickUp` bit(1) DEFAULT b'0', - `itemFk` int(11) DEFAULT NULL COMMENT 'Este campo hace referencia al artículo que habria que facturar si las cajas no fueran incluidos.\\nSe debería llamar packageItemFk', + `freightItemFk` int(11) DEFAULT 1 COMMENT 'Este campo realmente en un campo itemFk, haciendo referencia al artículo que nos va a facturar el proveedor de transporte.\nSe debería llamar freightItemFk', + `created` timestamp NULL DEFAULT current_timestamp(), + `isRefund__` bit(1) DEFAULT b'0' COMMENT 'Deprecado 01/06/2022', + `isPickUp__` bit(1) DEFAULT b'0' COMMENT 'Deprecado 01/06/2022', + `itemFk` int(11) DEFAULT NULL COMMENT 'Si es necesario el itemFk del cubo, se obtiene mediante packagingFk, join packing.itemFk', `counter` smallint(5) unsigned NOT NULL, - `checked` tinyint(4) NOT NULL DEFAULT '0', + `checked__` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'Deprecado 01/06/2022', `workerFk` int(10) unsigned DEFAULT NULL, - `externalId` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `packagingFk` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `itemPackingTypeFk` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, - `hostFk` varchar(6) COLLATE utf8_unicode_ci NOT NULL, + `externalId` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `packagingFk` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `itemPackingTypeFk` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `hostFk` varchar(6) COLLATE utf8mb3_unicode_ci NOT NULL, + `stateTypeFk` int(11) DEFAULT NULL COMMENT 'Ultimo estado de la expedicion', + `hasNewRoute` bit(1) NOT NULL DEFAULT b'0', PRIMARY KEY (`id`), KEY `index1` (`agencyModeFk`), - KEY `index2` (`isBox`), + KEY `index2` (`freightItemFk`), KEY `index3` (`created`), KEY `index4` (`ticketFk`), KEY `expedition_fk3_idx` (`packagingFk`), KEY `expedition_itemPackingTypeFk` (`itemPackingTypeFk`), KEY `workerFk` (`workerFk`), + KEY `expedition_FK` (`stateTypeFk`), + CONSTRAINT `expedition_FK` FOREIGN KEY (`stateTypeFk`) REFERENCES `expeditionStateType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `expedition_fk1` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`) ON UPDATE CASCADE, CONSTRAINT `expedition_fk2` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `expedition_fk3` FOREIGN KEY (`packagingFk`) REFERENCES `packaging` (`id`) ON UPDATE CASCADE, CONSTRAINT `expedition_ibfk_1` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`), CONSTRAINT `expedition_itemPackingTypeFk` FOREIGN KEY (`itemPackingTypeFk`) REFERENCES `itemPackingType` (`code`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`expedition_beforeInsert` - BEFORE INSERT ON `expedition` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`expedition_beforeInsert` + BEFORE INSERT ON `expedition` + FOR EACH ROW BEGIN + DECLARE intcounter INT; + DECLARE vShipFk INT; - IF NEW.isBox > 0 THEN + IF NEW.freightItemFk > 0 THEN UPDATE ticket SET packages = nz(packages) + 1 WHERE id = NEW.ticketFk; - SELECT IFNULL(MAX(counter),0) +1 INTO intcounter - FROM expedition e - INNER JOIN ticket t1 ON e.ticketFk = t1.id + SELECT IFNULL(MAX(counter),0) +1 INTO intcounter + FROM expedition e + INNER JOIN ticket t1 ON e.ticketFk = t1.id LEFT JOIN ticketState ts ON ts.ticket = t1.id - INNER JOIN ticket t2 ON t2.addressFk = t1.addressFk AND DATE(t2.shipped) = DATE(t1.shipped) + INNER JOIN ticket t2 ON t2.addressFk = t1.addressFk AND DATE(t2.shipped) = DATE(t1.shipped) AND t1.warehouseFk = t2.warehouseFk - WHERE t2.id = NEW.ticketFk AND ts.alertLevel < 3 AND t1.companyFk = t2.companyFk + WHERE t2.id = NEW.ticketFk AND ts.alertLevel < 3 AND t1.companyFk = t2.companyFk AND t1.agencyModeFk = t2.agencyModeFk; SET NEW.`counter` = intcounter; END IF; - + +/* SELECT shipFk INTO vShipFk FROM stowaway WHERE id = NEW.ticketFk; IF vShipFk THEN CALL stowaway_unboarding(vShipFk, NEW.ticketFk); END IF; +*/ END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -31135,18 +27601,18 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`expedition_beforeUpdate` - BEFORE UPDATE ON `expedition` FOR EACH ROW --- Edit trigger body code below this line. Do not edit lines above this one +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`expedition_beforeUpdate` + BEFORE UPDATE ON `expedition` + FOR EACH ROW BEGIN IF NEW.counter <> OLD.counter THEN - IF (SELECT COUNT(*) FROM expedition e + IF (SELECT COUNT(*) FROM expedition e INNER JOIN ticket t1 ON e.ticketFk = t1.id - INNER JOIN ticket t2 ON t2.addressFk = t1.addressFk AND DATE(t2.shipped) = DATE(t1.shipped) + INNER JOIN ticket t2 ON t2.addressFk = t1.addressFk AND DATE(t2.shipped) = DATE(t1.shipped) WHERE t1.id = NEW.ticketFk AND counter = NEW.counter) > 0 THEN SET NEW.id = NULL; END IF; @@ -31162,18 +27628,19 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`expedition_beforeDelete` - BEFORE DELETE ON `expedition` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`expedition_beforeDelete` + BEFORE DELETE ON `expedition` + FOR EACH ROW BEGIN - UPDATE ticket t - SET packages = (SELECT COUNT(counter)-1 - FROM expedition e WHERE e.ticketFk = OLD.ticketFk and e.isBox) - WHERE t.id = OLD.ticketFk; - + UPDATE ticket t + SET packages = (SELECT COUNT(counter)-1 + FROM expedition e WHERE e.ticketFk = OLD.ticketFk and e.freightItemFk) + WHERE t.id = OLD.ticketFk; + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -31192,8 +27659,9 @@ CREATE TABLE `expeditionBoxVol` ( `boxFk` int(11) NOT NULL, `m3` double NOT NULL, `ratio` double NOT NULL, - PRIMARY KEY (`boxFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Establece el volumen de cada servicio para poder comparar el teorico y el real en el control de portes'; + PRIMARY KEY (`boxFk`), + CONSTRAINT `expeditionBoxVol_FK` FOREIGN KEY (`boxFk`) REFERENCES `item` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Establece el volumen de cada servicio para poder comparar el teorico y el real en el control de portes'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -31229,60 +27697,73 @@ DROP TABLE IF EXISTS `expeditionPallet`; CREATE TABLE `expeditionPallet` ( `id` int(11) NOT NULL AUTO_INCREMENT, `truckFk` int(11) NOT NULL, - `built` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `built` datetime NOT NULL DEFAULT current_timestamp(), `position` int(11) DEFAULT NULL, - `isPrint` tinyint(4) NOT NULL DEFAULT '2', + `isPrint` tinyint(4) NOT NULL DEFAULT 2, PRIMARY KEY (`id`), KEY `expeditionPallet_fk1_idx` (`truckFk`), CONSTRAINT `expeditionPallet_fk1` FOREIGN KEY (`truckFk`) REFERENCES `expeditionTruck` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`expeditionPallet_BEFORE_INSERT` BEFORE INSERT ON `expeditionPallet` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`expeditionPallet_BEFORE_INSERT` + BEFORE INSERT ON `expeditionPallet` + FOR EACH ROW BEGIN DECLARE vNewPosition INT; - + SELECT MAX(position) + 1 INTO vNewPosition FROM vn.expeditionPallet WHERE truckFk = NEW.truckFk; - + SET NEW.position = IFNULL(vNewPosition,1); - + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER vn.expeditionPallet_beforeDelete +BEFORE DELETE +ON expeditionPallet FOR EACH ROW +BEGIN + DECLARE vIndex INT DEFAULT INSTR(USER(), '@'); --- --- Temporary table structure for view `expeditionPallet_Print` --- + CALL util.debugAdd('expeditionPallet_deleted', CONCAT(OLD.id,' ', vn.getWorkerCode())); -DROP TABLE IF EXISTS `expeditionPallet_Print`; -/*!50001 DROP VIEW IF EXISTS `expeditionPallet_Print`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `expeditionPallet_Print` ( - `truck` tinyint NOT NULL, - `routeFk` tinyint NOT NULL, - `zone` tinyint NOT NULL, - `eti` tinyint NOT NULL, - `palletFk` tinyint NOT NULL, - `isMatch` tinyint NOT NULL, - `warehouseFk` tinyint NOT NULL, - `nombreDia` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; + INSERT INTO util.debug(connectionId, `user`, host, variable, value) + SELECT CONNECTION_ID(), + LEFT(USER(), vIndex - 1), + RIGHT(USER(), CHAR_LENGTH(USER()) - vIndex), + 'expeditionScan_deleted', + es.id + FROM vn.expeditionScan es + WHERE es.palletFk = OLD.id; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; -- -- Temporary table structure for view `expeditionRoute_Monitor` @@ -31330,7 +27811,7 @@ DROP TABLE IF EXISTS `expeditionScan`; CREATE TABLE `expeditionScan` ( `id` int(11) NOT NULL AUTO_INCREMENT, `expeditionFk` int(11) NOT NULL, - `scanned` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `scanned` datetime NOT NULL DEFAULT current_timestamp(), `palletFk` int(11) NOT NULL, `workerFk` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`), @@ -31341,22 +27822,46 @@ CREATE TABLE `expeditionScan` ( CONSTRAINT `expeditionScan_fk1` FOREIGN KEY (`expeditionFk`) REFERENCES `expedition` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `expeditionScan_fk2` FOREIGN KEY (`palletFk`) REFERENCES `expeditionPallet` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `expeditionScan_fk3` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`expeditionScan_BEFORE_INSERT` BEFORE INSERT ON `expeditionScan` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`expeditionScan_BEFORE_INSERT` + BEFORE INSERT ON `expeditionScan` + FOR EACH ROW BEGIN SET NEW.workerFk = vn.getUser(); - + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER vn.expeditionScan_afterDelete +AFTER DELETE +ON expeditionScan FOR EACH ROW +BEGIN + + CALL util.debugAdd('expeditionScan_deleted', CONCAT(OLD.id,' ', vn.getWorkerCode())); + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -31385,6 +27890,88 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; +-- +-- Table structure for table `expeditionState` +-- + +DROP TABLE IF EXISTS `expeditionState`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `expeditionState` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `expeditionFk` int(11) NOT NULL, + `typeFk` int(11) NOT NULL, + `userFk` int(11) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `expeditionState_FK` (`expeditionFk`), + KEY `expeditionState_FK_1` (`typeFk`), + CONSTRAINT `expeditionState_FK` FOREIGN KEY (`expeditionFk`) REFERENCES `expedition` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `expeditionState_FK_1` FOREIGN KEY (`typeFk`) REFERENCES `expeditionStateType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Historico de estados de las expediciones'; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER expeditionState_BeforeInsert +BEFORE INSERT +ON expeditionState FOR EACH ROW +BEGIN + + SET NEW.userFk = account.myUser_getId(); + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER expeditionState_AfterInsert +AFTER INSERT +ON expeditionState FOR EACH ROW +BEGIN + + UPDATE vn.expedition e + SET e.stateTypeFk = NEW.typeFk + WHERE e.id = NEW.expeditionFk; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `expeditionStateType` +-- + +DROP TABLE IF EXISTS `expeditionStateType`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `expeditionStateType` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `description` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + `code` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Posibles estados de una expedición'; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Temporary table structure for view `expeditionSticker` -- @@ -31411,31 +27998,6 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `expeditionSticker__` --- - -DROP TABLE IF EXISTS `expeditionSticker__`; -/*!50001 DROP VIEW IF EXISTS `expeditionSticker__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `expeditionSticker__` ( - `expeditionFk` tinyint NOT NULL, - `ticketFk` tinyint NOT NULL, - `addressFk` tinyint NOT NULL, - `clientFk` tinyint NOT NULL, - `street` tinyint NOT NULL, - `postalCode` tinyint NOT NULL, - `city` tinyint NOT NULL, - `nickname` tinyint NOT NULL, - `routeFk` tinyint NOT NULL, - `beachFk` tinyint NOT NULL, - `zona` tinyint NOT NULL, - `province` tinyint NOT NULL, - `phone` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Temporary table structure for view `expeditionTicket_NoBoxes` -- @@ -31480,24 +28042,26 @@ DROP TABLE IF EXISTS `expeditionTruck`; CREATE TABLE `expeditionTruck` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ETD` datetime DEFAULT NULL, - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, `bufferFk` int(11) DEFAULT NULL COMMENT 'buffer destino de las cajas', PRIMARY KEY (`id`), KEY `expeditionTruck_idx1` (`ETD`), KEY `expeditionTruck_FK` (`bufferFk`), CONSTRAINT `expeditionTruck_FK` FOREIGN KEY (`bufferFk`) REFERENCES `srt`.`buffer` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`expeditionTruck_BEFORE_INSERT` BEFORE INSERT ON `expeditionTruck` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`expeditionTruck_BEFORE_INSERT` + BEFORE INSERT ON `expeditionTruck` + FOR EACH ROW BEGIN SET NEW.description = UCASE(NEW.description); @@ -31511,13 +28075,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`expeditionTruck_BEFORE_UPDATE` BEFORE UPDATE ON `expeditionTruck` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`expeditionTruck_BEFORE_UPDATE` + BEFORE UPDATE ON `expeditionTruck` + FOR EACH ROW BEGIN SET NEW.description = UCASE(NEW.description); @@ -31602,15 +28168,30 @@ DROP TABLE IF EXISTS `expence`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `expence` ( + `id` varchar(10) NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isWithheld` tinyint(4) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `expence__` +-- + +DROP TABLE IF EXISTS `expence__`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `expence__` ( `id` varchar(10) NOT NULL, `taxTypeFk` tinyint(4) NOT NULL, - `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, - `isConbase` tinyint(4) NOT NULL DEFAULT '1', - `isWithheld` tinyint(4) NOT NULL DEFAULT '0', - `isForSale` tinyint(4) NOT NULL DEFAULT '0', + `name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isConbase` tinyint(4) NOT NULL DEFAULT 1, + `isWithheld` tinyint(4) NOT NULL DEFAULT 0, + `isForSale` tinyint(4) NOT NULL DEFAULT 0, PRIMARY KEY (`id`,`taxTypeFk`), KEY `iva_tipo_id` (`taxTypeFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -31659,7 +28240,7 @@ CREATE TABLE `floramondoConfig` ( `warehouseOutFk__` smallint(6) unsigned DEFAULT NULL, `agencyModeFk__` int(11) DEFAULT NULL, `MaxLatestDeliveryHour` int(11) DEFAULT NULL, - `MaxLatestOrderHour` int(11) DEFAULT '12' COMMENT 'Hora máxima para aceptar pedidos hoy', + `MaxLatestOrderHour` int(11) DEFAULT 12 COMMENT 'Hora máxima para aceptar pedidos hoy', `LastUpdated` datetime DEFAULT NULL, `itemMaxSize` int(11) DEFAULT NULL COMMENT 'tamaño maximo de los articulos a mostrar', PRIMARY KEY (`id`), @@ -31669,18 +28250,20 @@ CREATE TABLE `floramondoConfig` ( CONSTRAINT `floramondoConfigAgencyModeFk` FOREIGN KEY (`agencyModeFk__`) REFERENCES `agencyMode` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `floramondoConfigWarehouseInFk` FOREIGN KEY (`warehouseInFk`) REFERENCES `warehouse` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `floramondoConfigWarehouseOutFk` FOREIGN KEY (`warehouseOutFk__`) REFERENCES `warehouse` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`floramondoConfig_AFTER_INSERT` AFTER INSERT ON `floramondoConfig` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`floramondoConfig_AFTER_INSERT` + AFTER INSERT ON `floramondoConfig` + FOR EACH ROW BEGIN CALL util.throw ("Tabla config no permite añadir más registros"); END */;; @@ -31691,17 +28274,17 @@ DELIMITER ; /*!50003 SET collation_connection = @saved_col_connection */ ; -- --- Table structure for table `floramondoNotOfferDay` +-- Table structure for table `floramondoNotOfferDay__` -- -DROP TABLE IF EXISTS `floramondoNotOfferDay`; +DROP TABLE IF EXISTS `floramondoNotOfferDay__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `floramondoNotOfferDay` ( +CREATE TABLE `floramondoNotOfferDay__` ( `dated` date NOT NULL, - `warehouseFk` int(11) NOT NULL DEFAULT '60', + `warehouseFk` int(11) NOT NULL DEFAULT 60, PRIMARY KEY (`dated`,`warehouseFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='no muestra oferta en floramondo para ese dia y almacen'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='no muestra oferta en floramondo para ese dia y almacen'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -31713,11 +28296,11 @@ DROP TABLE IF EXISTS `fuelType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `fuelType` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `code` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `code` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code_UNIQUE` (`code`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -31729,10 +28312,10 @@ DROP TABLE IF EXISTS `gateArea`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `gateArea` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`name`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -31746,12 +28329,16 @@ CREATE TABLE `genericAllocation` ( `id` int(11) NOT NULL AUTO_INCREMENT, `itemFk` int(11) NOT NULL, `typeFk` smallint(5) unsigned NOT NULL COMMENT ' vn.itemType.id', - `origin` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `color` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `quality` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `numFlores` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `category` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `productor` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `origin` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `color` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `quality` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `numFlores` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `category` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `productor` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `longName` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `size` int(11) DEFAULT NULL, + `startDated` date DEFAULT NULL, + `endDated` date DEFAULT NULL, PRIMARY KEY (`id`), KEY `genericAllocation_FK` (`itemFk`), KEY `genericAllocation_FK_1` (`typeFk`), @@ -31761,8 +28348,10 @@ CREATE TABLE `genericAllocation` ( KEY `genericAllocation_numFlores_IDX` (`numFlores`) USING BTREE, KEY `genericAllocation_category_IDX` (`category`) USING BTREE, KEY `genericAllocation_productor_IDX` (`productor`) USING BTREE, + KEY `genericAllocation_longName_IDX` (`longName`) USING BTREE, + KEY `genericAllocation_size_IDX` (`size`) USING BTREE, CONSTRAINT `genericAllocation_FK` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacena los filtros para asignar códigos genéricos a los items'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Almacena los filtros para asignar códigos genéricos a los items'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -31774,10 +28363,10 @@ DROP TABLE IF EXISTS `genus`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `genus` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `genus_PK2` (`name`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -31791,32 +28380,32 @@ CREATE TABLE `glsConfig` ( `id` int(11) NOT NULL AUTO_INCREMENT, `service` int(1) DEFAULT NULL, `schedule` int(1) DEFAULT NULL, - `token` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `labelType` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `token` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `labelType` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `supplierFk` int(11) DEFAULT NULL, `package` int(1) DEFAULT NULL, `refund` int(1) DEFAULT NULL, `weight` int(1) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `glsExpedition` +-- Table structure for table `glsExpedition__` -- -DROP TABLE IF EXISTS `glsExpedition`; +DROP TABLE IF EXISTS `glsExpedition__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `glsExpedition` ( +CREATE TABLE `glsExpedition__` ( `expeditionFk` int(11) NOT NULL, `barcode` bigint(20) unsigned DEFAULT NULL, - `uid` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `uid` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `codexp` int(11) DEFAULT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`expeditionFk`), CONSTRAINT `glsInfo_FK` FOREIGN KEY (`expeditionFk`) REFERENCES `expedition` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -31829,35 +28418,63 @@ DROP TABLE IF EXISTS `greuge`; CREATE TABLE `greuge` ( `Id` int(10) unsigned NOT NULL AUTO_INCREMENT, `clientFk` int(10) unsigned NOT NULL, - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, `amount` decimal(10,2) NOT NULL, - `shipped` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `shipped` datetime NOT NULL DEFAULT current_timestamp(), + `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `greugeTypeFk` int(11) DEFAULT NULL, `ticketFk` int(11) DEFAULT NULL, + `userFK` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`Id`), KEY `greuges_type_fk_idx` (`greugeTypeFk`), KEY `Id_Ticket_Greuge_Ticket_idx` (`ticketFk`), KEY `Greuges_cliente_idx` (`clientFk`), + KEY `greuge_shipped_IDX` (`shipped`) USING BTREE, + KEY `greuge_FK` (`userFK`), CONSTRAINT `Id_Ticket_Greuge_Ticket` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `greuge_FK` FOREIGN KEY (`userFK`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `greuges_type_fk` FOREIGN KEY (`greugeTypeFk`) REFERENCES `greugeType` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=COMPACT; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci ROW_FORMAT=COMPACT; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`greuge_beforeUpdate` BEFORE UPDATE ON `greuge` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`gregue_beforeInsert` + BEFORE INSERT ON greuge + FOR EACH ROW BEGIN - DECLARE vMaxDate DATETIME DEFAULT TIMESTAMPADD(YEAR,1,CURDATE()); + IF NEW.userFk IS NULL THEN + SET NEW.userFk = account.myUser_getId(); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`greuge_beforeUpdate` + BEFORE UPDATE ON `greuge` + FOR EACH ROW +BEGIN + DECLARE vMaxDate DATETIME DEFAULT TIMESTAMPADD(YEAR,1,util.VN_CURDATE()); IF NEW.shipped > vMaxDate THEN - SET NEW.shipped = vMaxDate; + SET NEW.shipped = vMaxDate; END IF; END */;; DELIMITER ; @@ -31876,8 +28493,9 @@ DROP TABLE IF EXISTS `greugeConfig`; CREATE TABLE `greugeConfig` ( `id` int(11) NOT NULL AUTO_INCREMENT, `freightPickUpPrice` decimal(10,2) NOT NULL, + `yearsToDelete` int(11) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -31889,71 +28507,12 @@ DROP TABLE IF EXISTS `greugeType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `greugeType` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `code` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `code` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `holidayDetail__` --- - -DROP TABLE IF EXISTS `holidayDetail__`; -/*!50001 DROP VIEW IF EXISTS `holidayDetail__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `holidayDetail__` ( - `id` tinyint NOT NULL, - `description` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - --- --- Temporary table structure for view `holidayLegend__` --- - -DROP TABLE IF EXISTS `holidayLegend__`; -/*!50001 DROP VIEW IF EXISTS `holidayLegend__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `holidayLegend__` ( - `id` tinyint NOT NULL, - `description` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - --- --- Temporary table structure for view `holidayType__` --- - -DROP TABLE IF EXISTS `holidayType__`; -/*!50001 DROP VIEW IF EXISTS `holidayType__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `holidayType__` ( - `id` tinyint NOT NULL, - `name` tinyint NOT NULL, - `rgb` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - --- --- Temporary table structure for view `holiday__` --- - -DROP TABLE IF EXISTS `holiday__`; -/*!50001 DROP VIEW IF EXISTS `holiday__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `holiday__` ( - `holidayDetailFk` tinyint NOT NULL, - `holidayTypeFk` tinyint NOT NULL, - `workCenterFk` tinyint NOT NULL, - `dated` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `host` -- @@ -31962,48 +28521,50 @@ DROP TABLE IF EXISTS `host`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `host` ( - `code` varchar(30) CHARACTER SET utf8 NOT NULL, - `description` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `id` int(11) NOT NULL AUTO_INCREMENT, + `code` varchar(30) CHARACTER SET utf8mb3 NOT NULL, + `description` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `workerFk` int(10) unsigned DEFAULT NULL, - `windowsSerial` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL, + `windowsSerial` varchar(40) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `printerFk` tinyint(3) unsigned DEFAULT NULL, - `itemPackingTypeFk` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, - `packingSite` tinyint(3) unsigned DEFAULT NULL, - `warehouseFk` smallint(5) unsigned DEFAULT '60', - `companyFk` smallint(5) unsigned DEFAULT '442', - `bankFk` int(11) DEFAULT '13', - `routeDaysBefore` smallint(6) DEFAULT '2', - `routeDaysAfter` smallint(6) DEFAULT '1', - `updated` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY (`code`), + `itemPackingTypeFk__` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `packingSite__` tinyint(3) unsigned DEFAULT NULL, + `warehouseFk` smallint(5) unsigned DEFAULT 60, + `companyFk` smallint(5) unsigned DEFAULT 442, + `bankFk` int(11) DEFAULT 13, + `routeDaysBefore` smallint(6) DEFAULT 2, + `routeDaysAfter` smallint(6) DEFAULT 1, + `updated` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + UNIQUE KEY `host_UN` (`code`), KEY `configHost_FK_3` (`companyFk`), KEY `configHost_FK` (`printerFk`), - KEY `configHost_FK_1` (`itemPackingTypeFk`), + KEY `configHost_FK_1` (`itemPackingTypeFk__`), KEY `configHost_FK_2` (`warehouseFk`), KEY `configHost_FK_4` (`bankFk`), KEY `configHost_FK_5` (`workerFk`), CONSTRAINT `configHost_FK` FOREIGN KEY (`printerFk`) REFERENCES `printer` (`id`) ON UPDATE CASCADE, - CONSTRAINT `configHost_FK_1` FOREIGN KEY (`itemPackingTypeFk`) REFERENCES `itemPackingType` (`code`) ON UPDATE CASCADE, + CONSTRAINT `configHost_FK_1` FOREIGN KEY (`itemPackingTypeFk__`) REFERENCES `itemPackingType` (`code`) ON UPDATE CASCADE, CONSTRAINT `configHost_FK_2` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, CONSTRAINT `configHost_FK_3` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON UPDATE CASCADE, - CONSTRAINT `configHost_FK_4` FOREIGN KEY (`bankFk`) REFERENCES `bank` (`id`) ON UPDATE CASCADE, + CONSTRAINT `configHost_FK_4` FOREIGN KEY (`bankFk`) REFERENCES `accounting` (`id`) ON UPDATE CASCADE, CONSTRAINT `configHost_FK_5` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER host_beforeUpdate -BEFORE UPDATE ON vn.host -FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`host_beforeUpdate` + BEFORE UPDATE ON `host` + FOR EACH ROW BEGIN - SET new.updated = NOW(); + SET new.updated = util.VN_NOW(); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -32011,6 +28572,38 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +-- +-- Table structure for table `improvedGeneralLog` +-- + +DROP TABLE IF EXISTS `improvedGeneralLog`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `improvedGeneralLog` ( + `user` char(128) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `db` char(64) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `tables` char(64) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `type` set('Select','Insert','Update','Delete') COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`user`,`db`,`tables`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `improvedGeneralLogProcedures` +-- + +DROP TABLE IF EXISTS `improvedGeneralLogProcedures`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `improvedGeneralLogProcedures` ( + `user` char(128) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `db` varchar(250) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `routine` char(64) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `type` enum('FUNCTION','PROCEDURE') COLLATE utf8mb3_unicode_ci NOT NULL, + PRIMARY KEY (`user`,`db`,`routine`,`type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Table structure for table `incoterms` -- @@ -32019,10 +28612,10 @@ DROP TABLE IF EXISTS `incoterms`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `incoterms` ( - `code` varchar(3) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `name` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Internacional Commercial Terms'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Internacional Commercial Terms'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -32033,19 +28626,19 @@ DROP TABLE IF EXISTS `ink`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ink` ( - `id` char(3) COLLATE utf8_unicode_ci NOT NULL, - `name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `id` char(3) COLLATE utf8mb3_unicode_ci NOT NULL, + `name` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `picture` blob NOT NULL, `showOrder` int(11) NOT NULL, - `ball` blob, - `isCargex` tinyint(4) NOT NULL DEFAULT '0', - `dutchCode` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `hex` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `isRealColor` tinyint(1) NOT NULL DEFAULT '1', + `ball` blob DEFAULT NULL, + `isCargex` tinyint(4) NOT NULL DEFAULT 0, + `dutchCode` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `hex` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isRealColor` tinyint(1) NOT NULL DEFAULT 1, PRIMARY KEY (`id`), UNIQUE KEY `dutchCode_UNIQUE` (`dutchCode`), CONSTRAINT `ink_fk1` FOREIGN KEY (`dutchCode`) REFERENCES `edi`.`feature` (`feature_value`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -32056,11 +28649,12 @@ DROP TABLE IF EXISTS `inkI18n`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `inkI18n` ( - `inkFk` char(3) COLLATE utf8_unicode_ci NOT NULL, - `lang` char(2) CHARACTER SET utf8 NOT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - PRIMARY KEY (`inkFk`,`lang`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + `inkFk` char(3) COLLATE utf8mb3_unicode_ci NOT NULL, + `lang` char(2) CHARACTER SET utf8mb3 NOT NULL, + `name` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + PRIMARY KEY (`inkFk`,`lang`), + CONSTRAINT `inkI18n_FK` FOREIGN KEY (`inkFk`) REFERENCES `ink` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -32086,14 +28680,14 @@ DROP TABLE IF EXISTS `intrastat`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `intrastat` ( `id` int(8) unsigned zerofill NOT NULL, - `description` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `import__` tinyint(4) NOT NULL DEFAULT '0', - `taxClassFk` tinyint(3) unsigned NOT NULL DEFAULT '2', - `taxCodeFk` tinyint(2) unsigned NOT NULL DEFAULT '64', + `description` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import__` tinyint(4) NOT NULL DEFAULT 0, + `taxClassFk` tinyint(3) unsigned NOT NULL DEFAULT 2, + `taxCodeFk` tinyint(2) unsigned NOT NULL DEFAULT 64, PRIMARY KEY (`id`), KEY `iva_group_id` (`taxClassFk`), CONSTRAINT `intrastat_ibfk_1` FOREIGN KEY (`taxClassFk`) REFERENCES `taxClass` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -32113,7 +28707,7 @@ CREATE TABLE `inventoryFailure` ( `throwerFk` int(10) unsigned DEFAULT NULL, `guiltyFk` int(10) unsigned DEFAULT NULL, `causeFk` int(11) DEFAULT NULL, - `explanation` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL, + `explanation` varchar(250) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `inventoryFailure_fk1_idx` (`itemFk`), KEY `inventoryFailure_fk2_idx` (`throwerFk`), @@ -32125,7 +28719,7 @@ CREATE TABLE `inventoryFailure` ( CONSTRAINT `inventoryFailure_fk3` FOREIGN KEY (`guiltyFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `inventoryFailure_fk4` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `inventoryFailure_fk5` FOREIGN KEY (`causeFk`) REFERENCES `inventoryFailureCause` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -32137,9 +28731,9 @@ DROP TABLE IF EXISTS `inventoryFailureCause`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `inventoryFailureCause` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -32154,7 +28748,7 @@ CREATE TABLE `invoiceCorrection` ( `correctedFk` int(10) unsigned NOT NULL COMMENT 'Factura rectificada', `cplusRectificationTypeFk` int(10) unsigned NOT NULL, `cplusInvoiceType477Fk` int(10) unsigned NOT NULL, - `invoiceCorrectionTypeFk` int(11) NOT NULL DEFAULT '3', + `invoiceCorrectionTypeFk` int(11) NOT NULL DEFAULT 3, PRIMARY KEY (`correctingFk`), KEY `correctedFk_idx` (`correctedFk`), KEY `invoiceCorrection_ibfk_1_idx` (`cplusRectificationTypeFk`), @@ -32165,7 +28759,7 @@ CREATE TABLE `invoiceCorrection` ( CONSTRAINT `cplusInvoiceTyoeFk` FOREIGN KEY (`cplusInvoiceType477Fk`) REFERENCES `cplusInvoiceType477` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoiceCorrectionType_Fk33` FOREIGN KEY (`invoiceCorrectionTypeFk`) REFERENCES `invoiceCorrectionType` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoiceCorrection_ibfk_1` FOREIGN KEY (`cplusRectificationTypeFk`) REFERENCES `cplusRectificationType` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Relacion entre las facturas rectificativas y las rectificadas.'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Relacion entre las facturas rectificativas y las rectificadas.'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -32197,10 +28791,10 @@ DROP TABLE IF EXISTS `invoiceCorrectionType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `invoiceCorrectionType` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `description_UNIQUE` (`description`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -32213,26 +28807,26 @@ DROP TABLE IF EXISTS `invoiceIn`; CREATE TABLE `invoiceIn` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `serialNumber` mediumint(11) unsigned DEFAULT NULL COMMENT 'insertado por Trigger', - `serial` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'R', + `serial` char(1) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'R', `supplierFk` int(11) NOT NULL, `issued` date DEFAULT NULL COMMENT 'Fecha de emision de la factura', - `supplierRef` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `isBooked` tinyint(1) NOT NULL DEFAULT '0', - `currencyFk` tinyint(3) unsigned NOT NULL DEFAULT '1', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `companyFk` smallint(5) unsigned NOT NULL DEFAULT '442', + `supplierRef` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isBooked` tinyint(1) NOT NULL DEFAULT 0, + `currencyFk` tinyint(3) unsigned NOT NULL DEFAULT 1, + `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `companyFk` smallint(5) unsigned NOT NULL DEFAULT 442, `docFk` int(11) DEFAULT NULL, `booked` date DEFAULT NULL COMMENT 'Fecha de contabilizacion', `operated` date DEFAULT NULL COMMENT 'Fecha de entrega de la mercancia o el suministro', - `cplusInvoiceType472Fk` int(10) unsigned DEFAULT '1', - `cplusRectificationTypeFk` int(10) unsigned DEFAULT '1', - `cplusSubjectOpFk` int(10) unsigned DEFAULT '1', - `cplusTaxBreakFk` int(10) unsigned DEFAULT '1', - `cplusTrascendency472Fk` int(10) unsigned DEFAULT '1', + `cplusInvoiceType472Fk` int(10) unsigned DEFAULT 1, + `cplusRectificationTypeFk` int(10) unsigned DEFAULT 1, + `cplusSubjectOpFk` int(10) unsigned DEFAULT 1, + `cplusTaxBreakFk` int(10) unsigned DEFAULT 1, + `cplusTrascendency472Fk` int(10) unsigned DEFAULT 1, `bookEntried` date DEFAULT NULL COMMENT 'Fecha Asiento', - `isVatDeductible` tinyint(1) NOT NULL DEFAULT '1', + `isVatDeductible` tinyint(1) NOT NULL DEFAULT 1, `withholdingSageFk` smallint(6) DEFAULT NULL COMMENT 'Tipos de retención SAGE', - `expenceFkDeductible` varchar(10) CHARACTER SET utf8 DEFAULT NULL, + `expenceFkDeductible` varchar(10) CHARACTER SET utf8mb3 DEFAULT NULL, PRIMARY KEY (`id`), KEY `proveedor_id` (`supplierFk`), KEY `empresa_id` (`companyFk`), @@ -32246,7 +28840,7 @@ CREATE TABLE `invoiceIn` ( KEY `recibida_ibfk_6` (`cplusRectificationTypeFk`), KEY `recibida_ibfk_7` (`cplusTrascendency472Fk`), KEY `invoiceIn_withholdingFk_idx` (`withholdingSageFk`), - KEY `invoiceIn_expenceFkDeductible` (`expenceFkDeductible`), + KEY `invoiceIn_expenceFkDeductible_idx` (`expenceFkDeductible`), CONSTRAINT `invoiceIn_expenceFkDeductible` FOREIGN KEY (`expenceFkDeductible`) REFERENCES `expence` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoiceIn_ibfk_1` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoiceIn_ibfk_2` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON UPDATE CASCADE, @@ -32256,66 +28850,69 @@ CREATE TABLE `invoiceIn` ( CONSTRAINT `invoiceIn_ibfk_6` FOREIGN KEY (`cplusRectificationTypeFk`) REFERENCES `cplusRectificationType` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoiceIn_ibfk_7` FOREIGN KEY (`cplusTrascendency472Fk`) REFERENCES `cplusTrascendency472` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoiceIn_withholdingFk` FOREIGN KEY (`withholdingSageFk`) REFERENCES `sage`.`TiposRetencion` (`CodigoRetencion`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `invoiceIn_bi` BEFORE INSERT ON `invoiceIn` FOR EACH ROW BEGIN +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`invoiceIn_bi` + BEFORE INSERT ON `invoiceIn` + FOR EACH ROW +BEGIN DECLARE vSerie CHAR(1) DEFAULT 'R'; DECLARE vNumReceived INT; DECLARE vIssuingCountry, vhostCountry INT; DECLARE vActive TINYINT; DECLARE vWithholdingSageFk INT; - - SELECT withholdingSageFk INTO vWithholdingSageFk - FROM vn.supplier + + SELECT withholdingSageFk INTO vWithholdingSageFk + FROM vn.supplier WHERE id = NEW.supplierFk; - SET NEW.withholdingSageFk = vWithholdingSageFk; - - SELECT countryFk, isActive INTO vIssuingCountry, vActive - FROM vn.supplier + SET NEW.withholdingSageFk = vWithholdingSageFk; + + SELECT countryFk, isActive INTO vIssuingCountry, vActive + FROM vn.supplier WHERE id = NEW.supplierFk; - - SELECT countryFk INTO vhostCountry - FROM vn.supplier + + SELECT countryFk INTO vhostCountry + FROM vn.supplier WHERE id = NEW.companyFk; IF vActive = 0 THEN CALL util.throw('INACTIVE_PROVIDER'); END IF; - - IF (SELECT COUNT(*) FROM vn.invoiceIn - WHERE supplierRef = NEW.supplierRef - AND supplierFk = NEW.supplierFk + + IF (SELECT COUNT(*) FROM vn.invoiceIn + WHERE supplierRef = NEW.supplierRef + AND supplierFk = NEW.supplierFk AND YEAR(issued) = YEAR(NEW.issued) ) THEN CALL util.throw('reference duplicated'); END IF; - + SELECT CASE WHEN (SELECT account FROM vn.supplier where id = NEW.supplierFk) LIKE '___3______' THEN 'C' - WHEN (SELECT vIssuingCountry=vhostCountry from vn.country p1 join vn.country p2 ON p2.id = vhostCountry AND p1.id = vIssuingCountry + WHEN (SELECT vIssuingCountry=vhostCountry from vn.country p1 join vn.country p2 ON p2.id = vhostCountry AND p1.id = vIssuingCountry where p1.CEE < 2 and p2.CEE < 2) = 1 THEN 'R' - WHEN (SELECT vIssuingCountry <> vhostCountry from vn.country p1 join vn.country p2 ON p2.id = vhostCountry AND p1.id = vIssuingCountry - where p1.CEE < 2 and p2.CEE < 2) = 1 THEN 'E' + WHEN (SELECT vIssuingCountry <> vhostCountry from vn.country p1 join vn.country p2 ON p2.id = vhostCountry AND p1.id = vIssuingCountry + where p1.CEE < 2 and p2.CEE < 2) = 1 THEN 'E' WHEN (SELECT vIssuingCountry<>vhostCountry from vn.country p1 join vn.country p2 ON p2.id = vhostCountry AND p1.id = vIssuingCountry - where NOT p1.CEE < 2 AND not p1.id = 1) = 1 THEN 'W' + where NOT p1.CEE < 2 AND not p1.id = 1) = 1 THEN 'W' END INTO vSerie; - + SET NEW.serial = IFNULL(vSerie,'R'); IF vSerie LIKE 'W' THEN - SELECT IFNULL(MAX(serialNumber) + 1,1) INTO vNumReceived - FROM invoiceIn - WHERE `serial` LIKE NEW.serial AND - YEAR(issued) = YEAR(NEW.issued) AND + SELECT IFNULL(MAX(serialNumber) + 1,1) INTO vNumReceived + FROM invoiceIn + WHERE `serial` LIKE NEW.serial AND + YEAR(issued) = YEAR(NEW.issued) AND companyFk = NEW.companyFk; SET NEW.serialNumber = vNumReceived; END IF; @@ -32330,18 +28927,20 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `invoiceIn_bu` BEFORE UPDATE ON `invoiceIn` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`invoiceIn_bu` + BEFORE UPDATE ON `invoiceIn` + FOR EACH ROW BEGIN DECLARE vWithholdingSageFk INT; - IF (SELECT COUNT(*) FROM vn.invoiceIn - WHERE supplierRef = NEW.supplierRef - AND supplierFk = NEW.supplierFk + IF (SELECT COUNT(*) FROM vn.invoiceIn + WHERE supplierRef = NEW.supplierRef + AND supplierFk = NEW.supplierFk AND YEAR(issued) = YEAR(NEW.issued) AND id <> NEW.id ) THEN @@ -32349,8 +28948,9 @@ BEGIN END IF; IF NEW.supplierFk != OLD.supplierFk THEN + CALL supplier_checkIsActive(NEW.supplierFk); SELECT withholdingSageFk INTO vWithholdingSageFk - FROM vn.supplier + FROM vn.supplier WHERE id = NEW.supplierFk; SET NEW.withholdingSageFk = vWithholdingSageFk; END IF; @@ -32366,30 +28966,32 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `invoiceIn_au` AFTER UPDATE ON `invoiceIn` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`invoiceIn_au` + AFTER UPDATE ON `invoiceIn` + FOR EACH ROW BEGIN - IF NEW.issued != OLD.issued + IF NEW.issued != OLD.issued OR NEW.currencyFk != OLD.currencyFk THEN UPDATE invoiceInTax iit JOIN invoiceIn ii ON ii.id = iit.invoiceInFk LEFT JOIN referenceRate rr ON rr.dated = ii.issued - AND rr.currencyFk = ii.currencyFk + AND rr.currencyFk = ii.currencyFk SET iit.taxableBase = IF(iit.foreignValue IS NULL, iit.taxableBase, iit.foreignValue / rr.value) WHERE ii.id = NEW.id; - + UPDATE invoiceInDueDay iidd JOIN invoiceIn ii ON ii.id = iidd.invoiceInFk LEFT JOIN referenceRate rr ON rr.dated = ii.issued - AND rr.currencyFk = ii.currencyFk + AND rr.currencyFk = ii.currencyFk SET iidd.amount = IF(iidd.foreignValue IS NULL, iidd.amount, iidd.foreignValue / rr.value) - WHERE ii.id = NEW.id; - + WHERE ii.id = NEW.id; + END IF; END */;; @@ -32399,21 +29001,6 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; --- --- Temporary table structure for view `invoiceInAwb__` --- - -DROP TABLE IF EXISTS `invoiceInAwb__`; -/*!50001 DROP VIEW IF EXISTS `invoiceInAwb__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `invoiceInAwb__` ( - `invoiceInFk` tinyint NOT NULL, - `awbFk` tinyint NOT NULL, - `dua` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `invoiceInDueDay` -- @@ -32425,51 +29012,51 @@ CREATE TABLE `invoiceInDueDay` ( `id` int(11) NOT NULL AUTO_INCREMENT, `invoiceInFk` mediumint(8) unsigned NOT NULL, `dueDated` date NOT NULL, - `bankFk` int(11) NOT NULL DEFAULT '3117', - `amount` decimal(10,2) NOT NULL DEFAULT '0.00', + `bankFk` int(11) NOT NULL DEFAULT 3117, + `amount` decimal(10,2) NOT NULL DEFAULT 0.00, `foreignValue` decimal(10,2) DEFAULT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `recibida_id` (`invoiceInFk`), KEY `banco_id` (`bankFk`), - CONSTRAINT `invoiceInDueDay_ibfk_6` FOREIGN KEY (`bankFk`) REFERENCES `bank` (`id`) ON UPDATE CASCADE, + CONSTRAINT `invoiceInDueDay_ibfk_6` FOREIGN KEY (`bankFk`) REFERENCES `accounting` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoiceInDueDay_ibfk_7` FOREIGN KEY (`invoiceInFk`) REFERENCES `invoiceIn` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`invoiceInDueDay_beforeInsert` -BEFORE INSERT ON `vn`.`invoiceInDueDay` -FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`invoiceInDueDay_beforeInsert` + BEFORE INSERT ON `invoiceInDueDay` + FOR EACH ROW BEGIN DECLARE vIsNotified BOOLEAN; - - SELECT isNotified INTO vIsNotified - FROM vn.invoiceIn ii + + SELECT isNotified INTO vIsNotified + FROM vn.invoiceIn ii JOIN vn.supplier s ON s.id = ii.supplierFk JOIN vn.payMethod pm ON pm.id = s.payMethodFk WHERE ii.id = NEW.invoiceInFk; - - IF (NEW.dueDated <= CURDATE() AND vIsNotified) + + IF (NEW.dueDated <= util.VN_CURDATE() AND vIsNotified) THEN CALL mail_insert( 'begonya@verdnatura.es', 'begonya@verdnatura.es', 'Añadido vencimiento en el pasado', CONCAT( - account.myUserGetName(), ' ha añadido un vencimiento de ', + account.myUser_getName(), ' ha añadido un vencimiento de ', NEW.amount, '€ en una fecha pasada en la recibida ', NEW.invoiceInFk ) ); END IF; - + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -32481,35 +29068,35 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`invoiceInDueDay_beforeUpdate` -BEFORE UPDATE ON `vn`.`invoiceInDueDay` -FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`invoiceInDueDay_beforeUpdate` + BEFORE UPDATE ON `invoiceInDueDay` + FOR EACH ROW BEGIN DECLARE vIsNotified BOOLEAN; - - SELECT isNotified INTO vIsNotified - FROM vn.invoiceIn ii + + SELECT isNotified INTO vIsNotified + FROM vn.invoiceIn ii JOIN vn.supplier s ON s.id = ii.supplierFk JOIN vn.payMethod pm ON pm.id = s.payMethodFk WHERE ii.id = NEW.invoiceInFk; - - IF (NEW.dueDated <= CURDATE() AND vIsNotified) + + IF (NEW.dueDated <= util.VN_CURDATE() AND vIsNotified) THEN CALL mail_insert( 'begonya@verdnatura.es', 'begonya@verdnatura.es', 'Añadido vencimiento en el pasado', CONCAT( - account.myUserGetName(), ' ha añadido un vencimiento de ', + account.myUser_getName(), ' ha añadido un vencimiento de ', NEW.amount,'€ en una fecha pasada en la recibida ',NEW.invoiceInFk ) ); END IF; - + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -32517,25 +29104,6 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; --- --- Temporary table structure for view `invoiceInDueDay__` --- - -DROP TABLE IF EXISTS `invoiceInDueDay__`; -/*!50001 DROP VIEW IF EXISTS `invoiceInDueDay__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `invoiceInDueDay__` ( - `id` tinyint NOT NULL, - `invoiceInFk` tinyint NOT NULL, - `dueDated` tinyint NOT NULL, - `bankFk` tinyint NOT NULL, - `amount` tinyint NOT NULL, - `foreignValue` tinyint NOT NULL, - `created` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `invoiceInIntrastat` -- @@ -32544,32 +29112,42 @@ DROP TABLE IF EXISTS `invoiceInIntrastat`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `invoiceInIntrastat` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `invoiceInFk` mediumint(8) unsigned NOT NULL, + `net` decimal(10,2) DEFAULT NULL, + `intrastatFk` int(8) unsigned zerofill NOT NULL DEFAULT 06049190, + `amount` double NOT NULL, + `stems` int(11) NOT NULL, + `countryFk` mediumint(8) unsigned DEFAULT NULL, + `dated` timestamp NOT NULL DEFAULT current_timestamp(), + `statisticalValue` double NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + KEY `intrastat_id` (`intrastatFk`), + KEY `invoiceInIntrastat_FK` (`invoiceInFk`), + CONSTRAINT `invoiceInIntrastat_FK` FOREIGN KEY (`invoiceInFk`) REFERENCES `invoiceIn` (`id`) ON DELETE CASCADE, + CONSTRAINT `invoiceInIntrastat_ibfk_1` FOREIGN KEY (`intrastatFk`) REFERENCES `intrastat` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `invoiceInIntrastat__` +-- + +DROP TABLE IF EXISTS `invoiceInIntrastat__`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `invoiceInIntrastat__` ( `invoiceInFk` mediumint(8) unsigned NOT NULL, `intrastatFk` int(8) unsigned zerofill NOT NULL, `amount` decimal(10,2) NOT NULL, PRIMARY KEY (`invoiceInFk`,`intrastatFk`), KEY `Codintrastat` (`intrastatFk`), KEY `recibida_id` (`invoiceInFk`), - CONSTRAINT `invoiceInIntrastat_ibfk_1` FOREIGN KEY (`invoiceInFk`) REFERENCES `invoiceIn` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `invoiceInIntrastat_ibfk_2` FOREIGN KEY (`intrastatFk`) REFERENCES `intrastat` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + CONSTRAINT `invoiceInIntrastat___ibfk_1` FOREIGN KEY (`invoiceInFk`) REFERENCES `invoiceIn` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `invoiceInIntrastat___ibfk_2` FOREIGN KEY (`intrastatFk`) REFERENCES `intrastat` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `invoiceInIntrastat__` --- - -DROP TABLE IF EXISTS `invoiceInIntrastat__`; -/*!50001 DROP VIEW IF EXISTS `invoiceInIntrastat__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `invoiceInIntrastat__` ( - `invoiceInFk` tinyint NOT NULL, - `intrastatFk` tinyint NOT NULL, - `amount` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `invoiceInLog` -- @@ -32581,20 +29159,20 @@ CREATE TABLE `invoiceInLog` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `originFk` mediumint(8) unsigned NOT NULL, `userFk` int(10) unsigned DEFAULT NULL, - `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `description` text CHARACTER SET utf8, - `changedModel` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `oldInstance` text COLLATE utf8_unicode_ci, - `newInstance` text COLLATE utf8_unicode_ci, + `action` set('insert','update','delete') COLLATE utf8mb3_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT current_timestamp(), + `description` text CHARACTER SET utf8mb3 DEFAULT NULL, + `changedModel` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `oldInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `newInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `changedModelId` int(11) DEFAULT NULL, - `changedModelValue` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `changedModelValue` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `originFk` (`originFk`), KEY `userFk` (`userFk`), CONSTRAINT `invoiceInLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `invoiceIn` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `invoiceInLog_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -32606,28 +29184,28 @@ DROP TABLE IF EXISTS `invoiceInSage`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `invoiceInSage` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `taxClassFk` varchar(1) COLLATE utf8_unicode_ci NOT NULL, - `invoiceInSerialFk` varchar(2) COLLATE utf8_unicode_ci NOT NULL, + `taxClassFk` varchar(1) COLLATE utf8mb3_unicode_ci NOT NULL, + `invoiceInSerialFk` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL, `taxTypeSageFk` smallint(6) NOT NULL, `transactionTypeSageFk` tinyint(4) NOT NULL, - `isService` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Para diferenciar producto de servicio', - `expenceFk` varchar(10) CHARACTER SET utf8 NOT NULL, + `isService` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Para diferenciar producto de servicio', + `expenceFk` varchar(10) CHARACTER SET utf8mb3 NOT NULL, `withholdingSageFk` smallint(6) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `invoiceInSafe_unique` (`taxClassFk`,`invoiceInSerialFk`,`isService`,`withholdingSageFk`), - KEY `invoiceInSage_expenceFk` (`expenceFk`), KEY `invoiceInSage_withholdingSageFk` (`withholdingSageFk`), KEY `invoiceInSage_taxClassFk` (`taxClassFk`), KEY `invoiceInSage_invoiceInSerialFk` (`invoiceInSerialFk`), KEY `invoiceInSage_taxTypeSageFk` (`taxTypeSageFk`), KEY `invoiceInSage_transactionTypeSageFk` (`transactionTypeSageFk`), + KEY `invoiceInSage_idx` (`expenceFk`), CONSTRAINT `invoiceInSage_expenceFk` FOREIGN KEY (`expenceFk`) REFERENCES `expence` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoiceInSage_invoiceInSerialFk` FOREIGN KEY (`invoiceInSerialFk`) REFERENCES `invoiceInSerial` (`code`) ON UPDATE CASCADE, CONSTRAINT `invoiceInSage_taxClassFk` FOREIGN KEY (`taxClassFk`) REFERENCES `taxClass` (`code`) ON UPDATE CASCADE, CONSTRAINT `invoiceInSage_taxTypeSageFk` FOREIGN KEY (`taxTypeSageFk`) REFERENCES `sage`.`TiposIva` (`CodigoIva`) ON UPDATE CASCADE, CONSTRAINT `invoiceInSage_transactionTypeSageFk` FOREIGN KEY (`transactionTypeSageFk`) REFERENCES `sage`.`TiposTransacciones` (`CodigoTransaccion`) ON UPDATE CASCADE, CONSTRAINT `invoiceInSage_withholdingSageFk` FOREIGN KEY (`withholdingSageFk`) REFERENCES `sage`.`TiposRetencion` (`CodigoRetencion`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Relaciones de entrelas series de facturas recibidas y sus tipo de IVA con código Iva y codigo de Transación en Sage. Para precontabilizadar facturas recibidas'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Relaciones de entrelas series de facturas recibidas y sus tipo de IVA con código Iva y codigo de Transación en Sage. Para precontabilizadar facturas recibidas'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -32638,16 +29216,16 @@ DROP TABLE IF EXISTS `invoiceInSerial`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `invoiceInSerial` ( - `code` varchar(2) COLLATE utf8_unicode_ci NOT NULL, - `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `cplusTerIdNifFk` int(11) NOT NULL DEFAULT '1', - `taxAreaFk` varchar(15) CHARACTER SET utf8 DEFAULT NULL, + `code` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `cplusTerIdNifFk` int(11) NOT NULL DEFAULT 1, + `taxAreaFk` varchar(15) CHARACTER SET utf8mb3 DEFAULT NULL, PRIMARY KEY (`code`), KEY `InvoiceInSerial_Fk1_idx` (`cplusTerIdNifFk`), KEY `InvoiceInSerialTaxArea_idx` (`taxAreaFk`), CONSTRAINT `InvoiceInSerialTaxArea` FOREIGN KEY (`taxAreaFk`) REFERENCES `taxArea` (`code`) ON UPDATE CASCADE, CONSTRAINT `InvoiceInSerial_Fk1` FOREIGN KEY (`cplusTerIdNifFk`) REFERENCES `cplusTerIdNif` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -32662,22 +29240,22 @@ CREATE TABLE `invoiceInTax` ( `invoiceInFk` mediumint(8) unsigned NOT NULL, `taxCodeFk` int(10) DEFAULT NULL, `taxableBase` decimal(10,2) NOT NULL, - `expenceFk` varchar(10) CHARACTER SET utf8 NOT NULL, + `expenceFk` varchar(10) CHARACTER SET utf8mb3 NOT NULL, `foreignValue` decimal(10,2) DEFAULT NULL, `taxTypeSageFk` smallint(6) DEFAULT NULL COMMENT 'Tipo de IVA SAGE', `transactionTypeSageFk` tinyint(4) DEFAULT NULL COMMENT 'Tipo de transacción SAGE', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`id`), KEY `recibida_id` (`invoiceInFk`), KEY `recibida_iva_ibfk_2` (`taxCodeFk`), - KEY `recibida_iva_gastos_id` (`expenceFk`), KEY `recibida_iva_taxTypeSageFk` (`taxTypeSageFk`), KEY `invoiceInTax_transactionTypeSageFk_idx` (`transactionTypeSageFk`), + KEY `invoiceInTax_idx` (`expenceFk`), + CONSTRAINT `invoiceInTax_expenceFk` FOREIGN KEY (`expenceFk`) REFERENCES `expence` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoiceInTax_ibfk_5` FOREIGN KEY (`invoiceInFk`) REFERENCES `invoiceIn` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `invoiceInTax_transactionTypeSageFk` FOREIGN KEY (`transactionTypeSageFk`) REFERENCES `sage`.`TiposTransacciones` (`CodigoTransaccion`) ON UPDATE CASCADE, - CONSTRAINT `recibida_iva_gastos_id` FOREIGN KEY (`expenceFk`) REFERENCES `expence` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `recibida_iva_taxTypeSageFk` FOREIGN KEY (`taxTypeSageFk`) REFERENCES `sage`.`TiposIva` (`CodigoIva`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -32689,13 +29267,13 @@ DROP TABLE IF EXISTS `invoiceInTaxBookingAccount`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `invoiceInTaxBookingAccount` ( `id` int(10) NOT NULL AUTO_INCREMENT, - `effectived` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `account` varchar(10) COLLATE utf8_unicode_ci NOT NULL, - `taxAreaFk` varchar(15) CHARACTER SET utf8 NOT NULL, + `effectived` timestamp NOT NULL DEFAULT current_timestamp(), + `account` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `taxAreaFk` varchar(15) CHARACTER SET utf8mb3 NOT NULL, `priority` int(2) unsigned DEFAULT NULL, - `taxClassFk` tinyint(3) unsigned NOT NULL DEFAULT '1', - `countryFk` mediumint(8) unsigned NOT NULL DEFAULT '1', - `rate` decimal(5,2) NOT NULL DEFAULT '0.00', + `taxClassFk` tinyint(3) unsigned NOT NULL DEFAULT 1, + `countryFk` mediumint(8) unsigned NOT NULL DEFAULT 1, + `rate` decimal(5,2) NOT NULL DEFAULT 0.00, PRIMARY KEY (`id`), KEY `invoiceInTaxBookingAccount_fk1_idx` (`taxAreaFk`), KEY `invoiceInTaxBookingAccount_fk2_idx` (`taxClassFk`), @@ -32703,42 +29281,9 @@ CREATE TABLE `invoiceInTaxBookingAccount` ( CONSTRAINT `invoiceInTaxBookingAccount_fk1` FOREIGN KEY (`taxAreaFk`) REFERENCES `taxArea` (`code`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `invoiceInTaxBookingAccount_fk2` FOREIGN KEY (`taxClassFk`) REFERENCES `taxClass` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoiceInTaxBookingAccount_fk3` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `invoiceIn__` --- - -DROP TABLE IF EXISTS `invoiceIn__`; -/*!50001 DROP VIEW IF EXISTS `invoiceIn__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `invoiceIn__` ( - `id` tinyint NOT NULL, - `serialNumber` tinyint NOT NULL, - `serial` tinyint NOT NULL, - `supplierFk` tinyint NOT NULL, - `issued` tinyint NOT NULL, - `supplierRef` tinyint NOT NULL, - `isBooked` tinyint NOT NULL, - `currencyFk` tinyint NOT NULL, - `created` tinyint NOT NULL, - `companyFk` tinyint NOT NULL, - `docFk` tinyint NOT NULL, - `booked` tinyint NOT NULL, - `operated` tinyint NOT NULL, - `cplusInvoiceType472Fk` tinyint NOT NULL, - `cplusRectificationTypeFk` tinyint NOT NULL, - `cplusSubjectOpFk` tinyint NOT NULL, - `cplusTaxBreakFk` tinyint NOT NULL, - `cplusTrascendency472Fk` tinyint NOT NULL, - `bookEntried` tinyint NOT NULL, - `isVatDeductible` tinyint NOT NULL, - `withholdingSageFk` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `invoiceOut` -- @@ -32748,28 +29293,28 @@ DROP TABLE IF EXISTS `invoiceOut`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `invoiceOut` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `ref` varchar(20) COLLATE utf8_unicode_ci NOT NULL, - `serial` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, + `serial` varchar(2) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `issued` date DEFAULT NULL, - `amount` decimal(12,2) DEFAULT '0.00', + `amount` decimal(12,2) DEFAULT 0.00, `dued` datetime DEFAULT NULL, `bankFk` int(11) DEFAULT NULL, - `clientFk` int(11) DEFAULT '0', - `taxableBase7__` decimal(12,2) DEFAULT '0.00', - `taxableBase16__` decimal(12,2) DEFAULT '0.00', - `equ1__` decimal(12,2) DEFAULT '0.00', - `equ4__` decimal(12,2) DEFAULT '0.00', - `vat7__` decimal(12,2) DEFAULT '0.00', - `vat16__` decimal(12,2) DEFAULT '0.00', - `workerFk__` int(11) DEFAULT '0', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `companyFk` smallint(5) unsigned NOT NULL DEFAULT '442', - `hasPdf` tinyint(3) unsigned NOT NULL DEFAULT '0', + `clientFk` int(11) DEFAULT 0, + `taxableBase7__` decimal(12,2) DEFAULT 0.00, + `taxableBase16__` decimal(12,2) DEFAULT 0.00, + `equ1__` decimal(12,2) DEFAULT 0.00, + `equ4__` decimal(12,2) DEFAULT 0.00, + `vat7__` decimal(12,2) DEFAULT 0.00, + `vat16__` decimal(12,2) DEFAULT 0.00, + `workerFk__` int(11) DEFAULT 0, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `companyFk` smallint(5) unsigned NOT NULL DEFAULT 442, + `hasPdf` tinyint(3) unsigned NOT NULL DEFAULT 0, `booked` date DEFAULT NULL, - `cplusInvoiceType477Fk` int(10) unsigned NOT NULL DEFAULT '1', - `cplusTaxBreakFk` int(10) unsigned NOT NULL DEFAULT '1', - `cplusSubjectOpFk` int(10) unsigned NOT NULL DEFAULT '1', - `cplusTrascendency477Fk` int(10) unsigned NOT NULL DEFAULT '1', + `cplusInvoiceType477Fk` int(10) unsigned NOT NULL DEFAULT 1, + `cplusTaxBreakFk` int(10) unsigned NOT NULL DEFAULT 1, + `cplusSubjectOpFk` int(10) unsigned NOT NULL DEFAULT 1, + `cplusTrascendency477Fk` int(10) unsigned NOT NULL DEFAULT 1, PRIMARY KEY (`id`,`ref`), UNIQUE KEY `Id_Factura` (`ref`), KEY `Id_Banco` (`bankFk`), @@ -32788,49 +29333,48 @@ CREATE TABLE `invoiceOut` ( CONSTRAINT `invoiceOut_ibfk_3` FOREIGN KEY (`cplusSubjectOpFk`) REFERENCES `cplusSubjectOp` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoiceOut_ibfk_4` FOREIGN KEY (`cplusTaxBreakFk`) REFERENCES `cplusTaxBreak` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoiceOut_serial` FOREIGN KEY (`serial`) REFERENCES `invoiceOutSerial` (`code`), - CONSTRAINT `invoice_bank_id` FOREIGN KEY (`bankFk`) REFERENCES `bank` (`id`) ON UPDATE CASCADE, + CONSTRAINT `invoice_bank_id` FOREIGN KEY (`bankFk`) REFERENCES `accounting` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoice_customer_id` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`invoiceOut_beforeInsert` - BEFORE INSERT ON `invoiceOut` FOR EACH ROW --- Edit trigger body code below this line. Do not edit lines above this one +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`invoiceOut_beforeInsert` + BEFORE INSERT ON `invoiceOut` + FOR EACH ROW BEGIN DECLARE vRef CHAR(10) ; - + IF YEAR(NEW.issued) <= 2021 THEN - + SELECT CONCAT(NEW.serial, - IFNULL(RIGHT(MAX(i.ref), LENGTH(i.ref)-1) , - RPAD(CONCAT(c.sage200Company, RIGHT(YEAR(CURDATE()), 2)), 7,'0')) + 1) INTO vRef + IFNULL(RIGHT(MAX(i.ref), LENGTH(i.ref)-1) , + RPAD(CONCAT(c.sage200Company, RIGHT(YEAR(util.VN_CURDATE()), 2)), 7,'0')) + 1) INTO vRef FROM invoiceOut i LEFT JOIN company c ON c.id = i.companyFk WHERE i.serial = NEW.serial - AND i.issued BETWEEN util.firstDayOfYear(NEW.issued) AND util.dayEnd(util.lastDayOfYear(NEW.issued)) + AND i.issued BETWEEN util.firstDayOfYear(NEW.issued) AND util.dayEnd(util.lastDayOfYear(NEW.issued)) AND c.id = NEW.companyFk; ELSE - + SELECT CONCAT(NEW.serial, - IFNULL(RIGHT(MAX(i.ref), LENGTH(i.ref)-1) , - RPAD(CONCAT(c.sage200Company, RIGHT(YEAR(CURDATE()), 2)), 8,'0')) + 1) INTO vRef + IFNULL(RIGHT(MAX(i.ref), LENGTH(i.ref)-1) , + RPAD(CONCAT(c.sage200Company, RIGHT(YEAR(util.VN_CURDATE()), 2)), 8,'0')) + 1) INTO vRef FROM invoiceOut i LEFT JOIN company c ON c.id = i.companyFk WHERE i.serial = NEW.serial - AND i.issued BETWEEN util.firstDayOfYear(NEW.issued) AND util.dayEnd(util.lastDayOfYear(NEW.issued)) + AND i.issued BETWEEN util.firstDayOfYear(NEW.issued) AND util.dayEnd(util.lastDayOfYear(NEW.issued)) AND c.id = NEW.companyFk; END IF; - + SET NEW.ref = vRef; - END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -32842,21 +29386,24 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`invoiceOut_afterInsert` AFTER INSERT ON `vn`.`invoiceOut` FOR EACH ROW BEGIN +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`invoiceOut_afterInsert` + AFTER INSERT ON `invoiceOut` + FOR EACH ROW +BEGIN CALL clientRisk_update(NEW.clientFk, NEW.companyFk, NEW.amount); - IF (SELECT COUNT(*) - FROM client - WHERE id = NEW.clientFk + IF (SELECT COUNT(*) + FROM client + WHERE id = NEW.clientFk AND businessTypeFk = 'officialOrganism' ) THEN CALL mail_insert('administracion@verdnatura.es', NULL, CONCAT('Se ha emitido una factura al organismo: ', NEW.clientFk), - CONCAT('Presentar factura en FACE https://salix.verdnatura.es/#!/invoice-out/', + CONCAT('Presentar factura en FACE https://salix.verdnatura.es/#!/invoice-out/', NEW.id, '/summary')); END IF; @@ -32869,13 +29416,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`invoiceOut_beforeUpdate` BEFORE UPDATE ON `vn`.`invoiceOut` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`invoiceOut_beforeUpdate` + BEFORE UPDATE ON `invoiceOut` + FOR EACH ROW BEGIN CALL clientRisk_update (OLD.clientFk, OLD.companyFk, -OLD.amount); CALL clientRisk_update (NEW.clientFk, NEW.companyFk, NEW.amount); @@ -32888,13 +29437,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`invoiceOut_beforeDelete` BEFORE DELETE ON `invoiceOut` FOR EACH ROW BEGIN +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`invoiceOut_beforeDelete` + BEFORE DELETE ON `invoiceOut` + FOR EACH ROW +BEGIN CALL clientRisk_update (OLD.clientFk, OLD.companyFk, -OLD.amount); END */;; DELIMITER ; @@ -32913,15 +29465,15 @@ DROP TABLE IF EXISTS `invoiceOutExpence`; CREATE TABLE `invoiceOutExpence` ( `id` int(11) NOT NULL AUTO_INCREMENT, `invoiceOutFk` int(10) unsigned NOT NULL, - `amount` decimal(10,2) NOT NULL DEFAULT '0.00', - `expenceFk` varchar(10) CHARACTER SET utf8 NOT NULL, - `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `amount` decimal(10,2) NOT NULL DEFAULT 0.00, + `expenceFk` varchar(10) CHARACTER SET utf8mb3 NOT NULL, + `created` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `invoiceOutExpence_FK_1_idx` (`invoiceOutFk`), - KEY `invoiceOutExpence_FK_2_idx` (`expenceFk`), + KEY `invoiceOutExpence_expenceFk_idx` (`expenceFk`), CONSTRAINT `invoiceOutExpence_FK_1` FOREIGN KEY (`invoiceOutFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `invoiceOutExpence_expenceFk` FOREIGN KEY (`expenceFk`) REFERENCES `expence` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Desglosa la base imponible de una factura en funcion del tipo de gasto/venta'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Desglosa la base imponible de una factura en funcion del tipo de gasto/venta'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -32932,18 +29484,18 @@ DROP TABLE IF EXISTS `invoiceOutSerial`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `invoiceOutSerial` ( - `code` varchar(2) COLLATE utf8_unicode_ci NOT NULL, - `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `isTaxed` tinyint(1) NOT NULL DEFAULT '1', - `taxAreaFk` varchar(15) CHARACTER SET utf8 NOT NULL DEFAULT 'NATIONAL', - `isCEE` tinyint(1) NOT NULL DEFAULT '0', - `cplusInvoiceType477Fk` int(10) unsigned DEFAULT '1', - `footNotes` longtext COLLATE utf8_unicode_ci, - `isRefEditable` tinyint(4) NOT NULL DEFAULT '0', + `code` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isTaxed` tinyint(1) NOT NULL DEFAULT 1, + `taxAreaFk` varchar(15) CHARACTER SET utf8mb3 NOT NULL DEFAULT 'NATIONAL', + `isCEE` tinyint(1) NOT NULL DEFAULT 0, + `cplusInvoiceType477Fk` int(10) unsigned DEFAULT 1, + `footNotes` longtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isRefEditable` tinyint(4) NOT NULL DEFAULT 0, PRIMARY KEY (`code`), KEY `taxAreaFk_idx` (`taxAreaFk`), CONSTRAINT `invoiceOutSeriaTaxArea` FOREIGN KEY (`taxAreaFk`) REFERENCES `taxArea` (`code`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -32957,16 +29509,57 @@ CREATE TABLE `invoiceOutTax` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `invoiceOutFk` int(10) unsigned NOT NULL, `taxableBase` decimal(10,2) NOT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `vat` decimal(10,2) NOT NULL DEFAULT '0.00', - `pgcFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0000000000', + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `vat` decimal(10,2) NOT NULL DEFAULT 0.00, + `pgcFk` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0000000000', PRIMARY KEY (`id`), UNIQUE KEY `invoiceOutTax_Resctriccion` (`invoiceOutFk`,`pgcFk`), KEY `invoiceOutFk_idx` (`invoiceOutFk`), KEY `pgcFk` (`pgcFk`), CONSTRAINT `invoiceOutFk` FOREIGN KEY (`invoiceOutFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `invoiceOutTax_ibfk_1` FOREIGN KEY (`pgcFk`) REFERENCES `pgc` (`code`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `invoiceOutTaxConfig` +-- + +DROP TABLE IF EXISTS `invoiceOutTaxConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `invoiceOutTaxConfig` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `taxClassCodeFk` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `taxTypeSageFk` smallint(6) DEFAULT NULL, + `transactionTypeSageFk` tinyint(4) DEFAULT NULL, + `isService` tinyint(1) DEFAULT 0, + `expenceFk` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `invoiceOutTaxConfig_FK` (`taxClassCodeFk`), + KEY `invoiceOutTaxConfig_FK_1` (`taxTypeSageFk`), + KEY `invoiceOutTaxConfig_FK_2` (`transactionTypeSageFk`), + CONSTRAINT `invoiceOutTaxConfig_FK` FOREIGN KEY (`taxClassCodeFk`) REFERENCES `taxClass` (`code`), + CONSTRAINT `invoiceOutTaxConfig_FK_1` FOREIGN KEY (`taxTypeSageFk`) REFERENCES `sage`.`TiposIva` (`CodigoIva`), + CONSTRAINT `invoiceOutTaxConfig_FK_2` FOREIGN KEY (`transactionTypeSageFk`) REFERENCES `sage`.`TiposTransacciones` (`CodigoTransaccion`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `invoiceOut_queue` +-- + +DROP TABLE IF EXISTS `invoiceOut_queue`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `invoiceOut_queue` ( + `invoiceFk` int(10) unsigned NOT NULL, + `queued` datetime NOT NULL DEFAULT current_timestamp(), + `printed` datetime DEFAULT NULL, + `status` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT '', + PRIMARY KEY (`invoiceFk`), + CONSTRAINT `invoiceOut_queue_invoiceOut_id_fk` FOREIGN KEY (`invoiceFk`) REFERENCES `invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Queue for PDF invoicing'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -32979,66 +29572,69 @@ DROP TABLE IF EXISTS `item`; CREATE TABLE `item` ( `id` int(11) NOT NULL AUTO_INCREMENT, `equivalent` int(11) unsigned DEFAULT NULL, - `name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `size` int(10) unsigned DEFAULT NULL, - `stems` int(11) DEFAULT '1', - `minPrice` double DEFAULT '0', - `isToPrint` tinyint(1) NOT NULL DEFAULT '0', - `isDeliveryNote__` tinyint(1) NOT NULL DEFAULT '0', - `taxClassFk__` tinyint(4) unsigned NOT NULL DEFAULT '1', - `family` varchar(3) CHARACTER SET utf8 NOT NULL DEFAULT 'VT', - `box` tinyint(1) NOT NULL DEFAULT '0', - `category` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `stems` int(11) DEFAULT 1, + `minPrice` double DEFAULT 0, + `isToPrint` tinyint(1) NOT NULL DEFAULT 0, + `isDeliveryNote__` tinyint(1) NOT NULL DEFAULT 0, + `taxClassFk__` tinyint(4) unsigned NOT NULL DEFAULT 1, + `family` varchar(3) CHARACTER SET utf8mb3 NOT NULL DEFAULT 'VT', + `box` tinyint(1) NOT NULL DEFAULT 0, + `category` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `originFk` tinyint(2) unsigned NOT NULL, - `doPhoto` tinyint(4) NOT NULL DEFAULT '0', - `image` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `inkFk` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `niche` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `intrastatFk` int(8) unsigned zerofill NOT NULL DEFAULT '06039010', - `hasMinPrice` tinyint(1) NOT NULL DEFAULT '0', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `isOnOffer__` tinyint(4) NOT NULL DEFAULT '0', - `isBargain__` tinyint(4) NOT NULL DEFAULT '0', - `comment` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, + `doPhoto` tinyint(4) NOT NULL DEFAULT 0, + `image` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `inkFk` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `niche__` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `intrastatFk` int(8) unsigned zerofill NOT NULL DEFAULT 06039010, + `hasMinPrice` tinyint(1) NOT NULL DEFAULT 0, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `isOnOffer__` tinyint(4) NOT NULL DEFAULT 0, + `isBargain__` tinyint(4) NOT NULL DEFAULT 0, + `comment` varchar(150) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `typeFk` smallint(5) unsigned NOT NULL, - `generic` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0', + `generic` tinyint(1) unsigned zerofill NOT NULL DEFAULT 0, `producerFk` mediumint(3) unsigned DEFAULT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `density` int(11) NOT NULL DEFAULT '167' COMMENT 'Almacena la densidad en kg/m3 para el calculo de los portes, si no se especifica se pone por defecto la del tipo en un trigger', - `relevancy` tinyint(1) NOT NULL DEFAULT '0', - `expenceFk` varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT '7001000000', - `isActive` tinyint(1) NOT NULL DEFAULT '1', - `longName` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `subName` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `tag5` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `value5` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `tag6` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `value6` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `tag7` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `value7` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `tag8` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `value8` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `tag9` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `value9` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `tag10` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `value10` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `compression` decimal(5,2) NOT NULL DEFAULT '1.00' COMMENT 'Relacion de compresividad entre el volumen de las entradas en Silla y el empaquetado en los envios a clientes.\n\nMenor que 1 significa que se puede comprimir más que el volumen original.', - `minimum` decimal(10,0) unsigned NOT NULL DEFAULT '3' COMMENT 'Cantidad máxima de cajas / cubos que cabe en un nicho', - `upToDown` decimal(10,0) unsigned NOT NULL DEFAULT '0' COMMENT 'Se muestra el precio por kilo ', + `description` varchar(1000) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `density` int(11) NOT NULL DEFAULT 167 COMMENT 'Almacena la densidad en kg/m3 para el calculo de los portes, si no se especifica se pone por defecto la del tipo en un trigger', + `relevancy` tinyint(1) NOT NULL DEFAULT 0, + `expenceFk` varchar(10) CHARACTER SET utf8mb3 NOT NULL DEFAULT '7001000000', + `isActive` tinyint(1) NOT NULL DEFAULT 1, + `longName` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `subName` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `tag5` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `value5` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `tag6` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `value6` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `tag7` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `value7` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `tag8` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `value8` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `tag9` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `value9` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `tag10` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `value10` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `compression__` decimal(5,2) NOT NULL DEFAULT 1.00 COMMENT 'Relacion de compresividad entre el volumen de las entradas en Silla y el empaquetado en los envios a clientes.', + `minimum` decimal(10,0) unsigned NOT NULL DEFAULT 3 COMMENT 'Cantidad máxima de cajas / cubos que cabe en un nicho', + `upToDown` decimal(10,0) unsigned NOT NULL DEFAULT 0 COMMENT 'Se muestra el precio por kilo ', `supplyResponseFk` int(11) DEFAULT NULL, - `hasKgPrice` tinyint(1) NOT NULL DEFAULT '0', - `sectorFk` int(11) DEFAULT '2', - `isFloramondo` tinyint(1) NOT NULL DEFAULT '0', - `isFragile` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'articulos solo para recogidas por su fragilidad', + `hasKgPrice` tinyint(1) NOT NULL DEFAULT 0, + `sectorFk__` int(11) DEFAULT NULL, + `isFloramondo` tinyint(1) NOT NULL DEFAULT 0, + `isFragile` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'articulos solo para recogidas por su fragilidad', `numberOfItemsPerCask` int(11) DEFAULT NULL COMMENT 'Campo para Floramondo', `embalageCode` int(11) DEFAULT NULL COMMENT 'Campo para Floramondo', - `quality` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Campo para Floramondo', + `quality` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'Campo para Floramondo', `stars` int(11) DEFAULT NULL, - `stemMultiplier` double NOT NULL DEFAULT '1' COMMENT 'este valor multiplica las unidades y divide los precios en el procedimiento edi.ekt_load', - `itemPackingTypeFk` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `stemMultiplier` double NOT NULL DEFAULT 1 COMMENT 'este valor multiplica las unidades y divide los precios en el procedimiento edi.ekt_load', + `itemPackingTypeFk` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `packingOut` decimal(10,2) DEFAULT NULL COMMENT 'cantidad que cabe en una caja de verdnatura', `genericFk` int(11) DEFAULT NULL COMMENT 'Item genérico', `packingShelve` int(11) DEFAULT NULL COMMENT 'unidades que caben en una bandeja, en el caso de los sacadores', + `isLaid` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Indica si el producto se puede tumbar a efectos del transporte desde Holanda', + `lastUsed` datetime DEFAULT current_timestamp(), + `weightByPiece` int(10) unsigned DEFAULT NULL COMMENT 'peso por defecto para un articulo por tallo/unidad', PRIMARY KEY (`id`), UNIQUE KEY `item_supplyResponseFk_idx` (`supplyResponseFk`), KEY `Color` (`inkFk`), @@ -33048,14 +29644,17 @@ CREATE TABLE `item` ( KEY `tipo_id` (`typeFk`), KEY `producer_id` (`producerFk`), KEY `ArticlesIsActive_idx` (`isActive`), - KEY `item_ibfk_6_idx` (`sectorFk`), - KEY `item_expenceFk` (`expenceFk`), + KEY `item_ibfk_6_idx` (`sectorFk__`), KEY `Article` (`name`,`subName`,`value5`,`value6`,`value7`,`value8`,`value9`,`value10`), KEY `item_id10` (`embalageCode`), KEY `item_id11` (`numberOfItemsPerCask`), KEY `item_id12` (`quality`), KEY `item_family` (`family`), KEY `item_FK` (`genericFk`), + KEY `item_size_IDX` (`size`) USING BTREE, + KEY `item_size_IDX2` (`longName`) USING BTREE, + KEY `item_lastUsed_IDX` (`lastUsed`) USING BTREE, + KEY `item_expenceFk_idx` (`expenceFk`), CONSTRAINT `item_FK` FOREIGN KEY (`genericFk`) REFERENCES `item` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `item_expenceFk` FOREIGN KEY (`expenceFk`) REFERENCES `expence` (`id`) ON UPDATE CASCADE, CONSTRAINT `item_family` FOREIGN KEY (`family`) REFERENCES `itemFamily` (`code`) ON UPDATE CASCADE, @@ -33063,50 +29662,34 @@ CREATE TABLE `item` ( CONSTRAINT `item_ibfk_2` FOREIGN KEY (`intrastatFk`) REFERENCES `intrastat` (`id`) ON UPDATE CASCADE, CONSTRAINT `item_ibfk_4` FOREIGN KEY (`taxClassFk__`) REFERENCES `taxClass` (`id`) ON UPDATE CASCADE, CONSTRAINT `item_ibfk_5` FOREIGN KEY (`typeFk`) REFERENCES `itemType` (`id`) ON UPDATE CASCADE, - CONSTRAINT `item_ibfk_6` FOREIGN KEY (`sectorFk`) REFERENCES `sector` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `itemsupplyResponseFk` FOREIGN KEY (`supplyResponseFk`) REFERENCES `edi`.`supplyResponse` (`ID`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `producer_id` FOREIGN KEY (`producerFk`) REFERENCES `producer` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`item_beforeInsert` - BEFORE INSERT ON `item` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`item_beforeInsert` + BEFORE INSERT ON `item` + FOR EACH ROW BEGIN - DECLARE vDensity DOUBLE; - DECLARE vCompression DOUBLE; DECLARE vItemPackingType VARCHAR(1); - IF NEW.density IS NULL THEN - SELECT density INTO vDensity - FROM itemType WHERE id = NEW.typeFk; - - SET NEW.density = vDensity; + IF NEW.itemPackingTypeFk IS NULL THEN + + SELECT itemPackingTypeFk INTO vItemPackingType + FROM vn.itemType it + WHERE id = NEW.typeFk; + + SET NEW.itemPackingTypeFk = vItemPackingType; + END IF; - - IF NEW.compression IS NULL OR NEW.compression = 1 THEN - SELECT compression INTO vCompression - FROM itemType WHERE id = NEW.typeFk; - - SET NEW.compression = vCompression; - END IF; - - IF NEW.itemPackingTypeFk IS NULL THEN - - SELECT itemPackingTypeFk INTO vItemPackingType - FROM vn.itemType it - WHERE id = NEW.typeFk; - - SET NEW.itemPackingTypeFk = vItemPackingType; - - END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -33116,9 +29699,9 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; @@ -33129,14 +29712,18 @@ BEGIN CALL hedera.image_ref('catalog', NEW.image); - INSERT INTO vn.itemTaxCountry(itemFk, countryFk) - SELECT NEW.id, 1; - - INSERT INTO vn.itemTaxCountry(itemFk, countryFk) - SELECT NEW.id, 5; - - INSERT INTO vn.itemTaxCountry(itemFk, countryFk) - SELECT NEW.id, 30; + INSERT INTO vn.itemTaxCountry(itemFk, countryFk) + SELECT NEW.id, 1; + + INSERT INTO vn.itemTaxCountry(itemFk, countryFk) + SELECT NEW.id, 5; + + INSERT INTO vn.itemTaxCountry(itemFk, countryFk) + SELECT NEW.id, 30; + + DELETE ifr.* + FROM edi.item_free ifr + WHERE ifr.id = NEW.id; END */;; DELIMITER ; @@ -33147,33 +29734,33 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER item_beforeUpdate -BEFORE UPDATE -ON item FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`item_beforeUpdate` + BEFORE UPDATE ON `item` + FOR EACH ROW BEGIN - + DECLARE vNewPackingShelve INT; - IF ISNULL(NEW.packingShelve) AND NOT ISNULL(NEW.packingOut) THEN - - SELECT NEW.packingOut * vc.shelveVolume / vc.standardFlowerBox + IF ISNULL(NEW.packingShelve) AND NOT ISNULL(NEW.packingOut) THEN + + SELECT NEW.packingOut * vc.shelveVolume / vc.standardFlowerBox INTO vNewPackingShelve FROM vn.volumeConfig vc; - + SET NEW.packingShelve = vNewPackingShelve; - + END IF; IF NEW.itemPackingTypeFk = '' THEN SET NEW.itemPackingTypeFk = NULL; - + END IF; END */;; @@ -33185,9 +29772,9 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; @@ -33210,15 +29797,16 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`item_afterDelete` - AFTER DELETE ON `item` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`item_afterDelete` + AFTER DELETE ON `item` + FOR EACH ROW BEGIN CALL hedera.image_unref('catalog', OLD.image); - IF OLD.id > 400000 THEN + IF OLD.id > 400000 THEN INSERT IGNORE edi.item_free (id) VALUES (OLD.id); END IF; @@ -33239,13 +29827,13 @@ DROP TABLE IF EXISTS `itemBarcode`; CREATE TABLE `itemBarcode` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `itemFk` int(11) NOT NULL, - `code` varchar(22) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(22) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`), UNIQUE KEY `Id_Article_2` (`itemFk`,`code`), KEY `Id_Article` (`itemFk`), CONSTRAINT `itemBarcode_ibfk_1` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -33257,7 +29845,7 @@ DROP TABLE IF EXISTS `itemBotanical`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `itemBotanical` ( `itemFk` int(11) NOT NULL, - `botanical__` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `botanical__` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `genusFk` int(11) NOT NULL, `specieFk` int(11) DEFAULT NULL, PRIMARY KEY (`itemFk`), @@ -33266,7 +29854,7 @@ CREATE TABLE `itemBotanical` ( CONSTRAINT `itemBotanicalItemFkFk` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemBotanical_FK` FOREIGN KEY (`specieFk`) REFERENCES `specie` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `itemBotanical_FK_1` FOREIGN KEY (`genusFk`) REFERENCES `genus` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Sustituye a antiguo NomBotanic de Articles'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Sustituye a antiguo NomBotanic de Articles'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -33292,31 +29880,36 @@ DROP TABLE IF EXISTS `itemCategory`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `itemCategory` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, `order` int(10) unsigned DEFAULT NULL, - `display` tinyint(4) NOT NULL DEFAULT '1', - `color` char(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `shortLife` int(11) NOT NULL DEFAULT '0' COMMENT 'Sirve para filtrar aquellos reinos que tienen precios estables', - `merchandise` tinyint(1) NOT NULL DEFAULT '1', - `icon` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `code` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `isReclining` tinyint(4) NOT NULL DEFAULT '1', + `display` tinyint(4) NOT NULL DEFAULT 1, + `color` char(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `shortLife` int(11) NOT NULL DEFAULT 0 COMMENT 'Sirve para filtrar aquellos reinos que tienen precios estables', + `merchandise` tinyint(1) NOT NULL DEFAULT 1, + `icon` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isReclining` tinyint(4) NOT NULL DEFAULT 1, + `departmentFk` int(11) DEFAULT NULL COMMENT 'Departamento responsable del manufacturado de esta categoria', PRIMARY KEY (`id`), UNIQUE KEY `reino_UNIQUE` (`name`), KEY `itemCategory_idx3` (`merchandise`), - KEY `itemCategoryDisplayIdx` (`display`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + KEY `itemCategoryDisplayIdx` (`display`), + KEY `itemCategory_FK` (`departmentFk`), + CONSTRAINT `itemCategory_FK` FOREIGN KEY (`departmentFk`) REFERENCES `department` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemCategory_AFTER_INSERT` AFTER INSERT ON `itemCategory` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemCategory_AFTER_INSERT` + AFTER INSERT ON `itemCategory` + FOR EACH ROW BEGIN CALL mail_insert('cau@verdnatura.es', NULL, @@ -33338,10 +29931,10 @@ DROP TABLE IF EXISTS `itemCategoryI18n`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `itemCategoryI18n` ( `categoryFk` int(10) unsigned NOT NULL, - `lang` char(2) CHARACTER SET utf8 NOT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `lang` char(2) CHARACTER SET utf8mb3 NOT NULL, + `name` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`categoryFk`,`lang`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -33358,6 +29951,37 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; +-- +-- Table structure for table `itemCleanConfig` +-- + +DROP TABLE IF EXISTS `itemCleanConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `itemCleanConfig` ( + `id` int(11) NOT NULL, + `quantity` int(11) NOT NULL COMMENT 'Indica el número de items que va a procesar', + `isStop` tinyint(1) DEFAULT NULL COMMENT 'Si está a TRUE para el proceso a tiempo real', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `itemCleanLog` +-- + +DROP TABLE IF EXISTS `itemCleanLog`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `itemCleanLog` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `itemFrom` int(11) DEFAULT NULL COMMENT 'Indica el item por donde ha empezado', + `itemDeleted` int(11) DEFAULT NULL COMMENT 'Indica la cantidad de items que ha eliminado', + `created` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Temporary table structure for view `itemColor` -- @@ -33373,20 +29997,33 @@ SET character_set_client = utf8; SET character_set_client = @saved_cs_client; -- --- Table structure for table `itemConversor` +-- Table structure for table `itemConfig` -- -DROP TABLE IF EXISTS `itemConversor`; +DROP TABLE IF EXISTS `itemConfig`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `itemConversor` ( +CREATE TABLE `itemConfig` ( + `isItemTagTriggerDisabled` tinyint(1) NOT NULL DEFAULT 1, + `monthToDeactivate` int(3) NOT NULL DEFAULT 24 +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `itemConversor__` +-- + +DROP TABLE IF EXISTS `itemConversor__`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `itemConversor__` ( `espItemFk` int(11) NOT NULL, `genItemFk` int(11) DEFAULT NULL, PRIMARY KEY (`espItemFk`), KEY `itemConversor_fk2_idx` (`genItemFk`), CONSTRAINT `itemConversor_fk1` FOREIGN KEY (`espItemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemConversor_fk2` FOREIGN KEY (`genItemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Relaciona los item específicos con los genéricos'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Relaciona los item específicos con los genéricos'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -33399,31 +30036,33 @@ DROP TABLE IF EXISTS `itemCost`; CREATE TABLE `itemCost` ( `itemFk` int(11) NOT NULL, `warehouseFk` smallint(6) unsigned NOT NULL, - `quantity` int(10) NOT NULL DEFAULT '0', - `rotation` decimal(10,4) NOT NULL DEFAULT '0.0000', - `cm3` int(11) NOT NULL DEFAULT '0', - `storage` decimal(10,4) NOT NULL DEFAULT '0.0000', - `handling` decimal(10,4) NOT NULL DEFAULT '0.0000', - `extraCharge` decimal(10,4) NOT NULL DEFAULT '0.0000', - `wasted` decimal(10,4) NOT NULL DEFAULT '0.0000', - `cm3delivery` int(11) NOT NULL DEFAULT '0', - `grams` int(11) NOT NULL DEFAULT '0' COMMENT 'peso en gramos de una unidad de venta', + `quantity` int(10) NOT NULL DEFAULT 0, + `rotation` decimal(10,4) NOT NULL DEFAULT 0.0000, + `cm3` int(11) NOT NULL DEFAULT 0, + `storage` decimal(10,4) NOT NULL DEFAULT 0.0000, + `handling` decimal(10,4) NOT NULL DEFAULT 0.0000, + `extraCharge` decimal(10,4) NOT NULL DEFAULT 0.0000, + `wasted` decimal(10,4) NOT NULL DEFAULT 0.0000, + `cm3delivery` int(11) NOT NULL DEFAULT 0, + `grams` int(11) NOT NULL DEFAULT 0 COMMENT 'peso en gramos de una unidad de venta', PRIMARY KEY (`itemFk`,`warehouseFk`), KEY `warehouse_id_rotacion_idx` (`warehouseFk`), CONSTRAINT `id_article_rotaci` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `warehouse_id_rotaci` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacena los valores de rotacion en los ultimos 365 dias'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Almacena los valores de rotacion en los ultimos 365 dias'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemCost_beforeInsert` BEFORE INSERT ON `vn`.`itemCost` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemCost_beforeInsert` + BEFORE INSERT ON `itemCost` + FOR EACH ROW BEGIN IF NEW.itemFk IN (95, 98) THEN SET NEW.cm3 = 0; @@ -33440,26 +30079,28 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemCost_beforeUpdate` BEFORE UPDATE ON `vn`.`itemCost` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemCost_beforeUpdate` + BEFORE UPDATE ON `itemCost` + FOR EACH ROW BEGIN IF NEW.itemFk IN (95, 98) THEN SET NEW.cm3 = 0; END IF; - + IF !(NEW.cm3delivery <=> OLD.cm3delivery) THEN INSERT IGNORE INTO `vn`.`routeRecalc` (`routeFk`) - SELECT r.id + SELECT r.id FROM vn.itemCost ic JOIN vn.sale s ON s.itemFk = ic.itemFk - JOIN vn.ticket t ON t.id = s.ticketFk AND t.warehouseFk = ic.warehouseFk + JOIN vn.ticket t ON t.id = s.ticketFk AND t.warehouseFk = ic.warehouseFk JOIN vn.route r ON r.id = t.routeFk - WHERE r.isOk = FALSE + WHERE r.isOk = FALSE AND ic.itemFk = NEW.itemFk - AND r.created >= CURDATE() + AND r.created >= util.VN_CURDATE() GROUP BY r.id; IF NEW.cm3Delivery = 0 AND NEW.warehouseFk = 60 THEN CALL mail_insert( @@ -33521,10 +30162,10 @@ DROP TABLE IF EXISTS `itemFamily`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `itemFamily` ( - `code` varchar(3) CHARACTER SET utf8 NOT NULL, - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(3) CHARACTER SET utf8mb3 NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -33536,15 +30177,15 @@ DROP TABLE IF EXISTS `itemImageQueue`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `itemImageQueue` ( `itemFk` int(11) NOT NULL, - `url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `error` text COLLATE utf8_unicode_ci, - `attempts` int(11) DEFAULT '0', - `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `updated` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `priority` int(11) DEFAULT '99', + `url` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `error` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `attempts` int(11) DEFAULT 0, + `created` timestamp NULL DEFAULT current_timestamp(), + `updated` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `priority` int(11) DEFAULT 99, PRIMARY KEY (`itemFk`), CONSTRAINT `itemImageQueueItemIdx` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Cola para añadir las imagenes al campo vn.item.image a partir de una url'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Cola para añadir las imagenes al campo vn.item.image a partir de una url'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -33572,11 +30213,11 @@ DROP TABLE IF EXISTS `itemLabel`; CREATE TABLE `itemLabel` ( `id` int(11) NOT NULL AUTO_INCREMENT, `itemFk` int(11) DEFAULT NULL, - `itemName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `itemName` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `price` decimal(10,2) DEFAULT NULL, `labels` int(11) DEFAULT NULL COMMENT 'Tabla hecha para Ruben Espinosa, para sacar etiquetas en Holanda para un cliente.', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -33590,20 +30231,20 @@ CREATE TABLE `itemLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `originFk` int(11) NOT NULL, `userFk` int(10) unsigned DEFAULT NULL, - `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `description` text CHARACTER SET utf8, - `changedModel` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `oldInstance` text COLLATE utf8_unicode_ci, - `newInstance` text COLLATE utf8_unicode_ci, + `action` set('insert','update','delete') COLLATE utf8mb3_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT current_timestamp(), + `description` text CHARACTER SET utf8mb3 DEFAULT NULL, + `changedModel` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `oldInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `newInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `changedModelId` int(11) DEFAULT NULL, - `changedModelValue` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `changedModelValue` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `itemLogItemFk_idx` (`originFk`), KEY `itemLogUserFk_idx` (`userFk`), CONSTRAINT `itemLogItemFk` FOREIGN KEY (`originFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemLogUserFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -33615,12 +30256,12 @@ DROP TABLE IF EXISTS `itemMatchProperties`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `itemMatchProperties` ( `itemFk` int(11) NOT NULL, - `name` varchar(80) COLLATE utf8_unicode_ci NOT NULL, - `producer` varchar(80) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(80) COLLATE utf8mb3_unicode_ci NOT NULL, + `producer` varchar(80) COLLATE utf8mb3_unicode_ci NOT NULL, `size` int(11) NOT NULL, PRIMARY KEY (`itemFk`,`name`,`producer`,`size`), CONSTRAINT `itemFk___fk` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Propiedades para encontrar articulos equivalentes en verdnatura'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Propiedades para encontrar articulos equivalentes en verdnatura'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -33631,79 +30272,12 @@ DROP TABLE IF EXISTS `itemPackingType`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `itemPackingType` ( - `code` varchar(1) COLLATE utf8_unicode_ci NOT NULL, - `description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(1) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Define la linea de encajado para cada producto'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Define la linea de encajado para cada producto'; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Table structure for table `itemPlacement` --- - -DROP TABLE IF EXISTS `itemPlacement`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `itemPlacement` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `itemFk` int(11) NOT NULL, - `warehouseFk` smallint(6) unsigned NOT NULL DEFAULT '1', - `code` varchar(10) COLLATE utf8_unicode_ci NOT NULL, - `modificationDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `reserve` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `pickable` int(11) unsigned NOT NULL DEFAULT '0', - `sectorFk` int(11) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `Id_Article_UNIQUE` (`itemFk`,`warehouseFk`), - KEY `Articles_nicho_wh_fk` (`warehouseFk`), - KEY `itemPlacement_fk3_idx` (`id`,`sectorFk`), - KEY `itemPlacement_fk3_idx1` (`sectorFk`), - CONSTRAINT `Articles_nicho_wh_fk` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `Articles_nichos_fk` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `itemPlacement_fk3` FOREIGN KEY (`sectorFk`) REFERENCES `sector` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemPlacement_BEFORE_INSERT` BEFORE INSERT ON `itemPlacement` FOR EACH ROW -BEGIN - IF LENGTH(NEW.code) < 3 THEN - CALL util.throw('code too short'); - END IF; -END */;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemPlacement_BEFORE_UPDATE` BEFORE UPDATE ON `itemPlacement` FOR EACH ROW -BEGIN - IF LENGTH(NEW.code) < 3 THEN - CALL util.throw('code too short'); - END IF; -END */;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; - -- -- Table structure for table `itemPlacementSupply` -- @@ -33714,9 +30288,9 @@ DROP TABLE IF EXISTS `itemPlacementSupply`; CREATE TABLE `itemPlacementSupply` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `itemFk` int(11) NOT NULL, - `quantity` decimal(10,0) NOT NULL DEFAULT '0', - `priority` int(10) unsigned NOT NULL DEFAULT '0', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `quantity` decimal(10,0) NOT NULL DEFAULT 0, + `priority` int(10) unsigned NOT NULL DEFAULT 0, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `userFk` int(10) unsigned NOT NULL COMMENT 'Persona que crea la orden', `repoUserFk` int(10) unsigned DEFAULT NULL COMMENT 'Reponedor que la tiene asignada', `sectorFk` int(11) DEFAULT NULL, @@ -33729,7 +30303,7 @@ CREATE TABLE `itemPlacementSupply` ( CONSTRAINT `itemPlacementSupply_fk2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemPlacementSupply_fk3` FOREIGN KEY (`repoUserFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemPlacementSupply_fk4` FOREIGN KEY (`sectorFk`) REFERENCES `sector` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Lista de nichos de picking que hay que reponer'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Lista de nichos de picking que hay que reponer'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -33758,6 +30332,75 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; +-- +-- Table structure for table `itemPlacement__` +-- + +DROP TABLE IF EXISTS `itemPlacement__`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `itemPlacement__` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `itemFk` int(11) NOT NULL, + `warehouseFk` smallint(6) unsigned NOT NULL DEFAULT 1, + `code` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `modificationDate` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `reserve` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `pickable` int(11) unsigned NOT NULL DEFAULT 0, + `sectorFk` int(11) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `Id_Article_UNIQUE` (`itemFk`,`warehouseFk`), + KEY `Articles_nicho_wh_fk` (`warehouseFk`), + KEY `itemPlacement_fk3_idx` (`id`,`sectorFk`), + KEY `itemPlacement_fk3_idx1` (`sectorFk`), + CONSTRAINT `Articles_nicho_wh_fk` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `Articles_nichos_fk` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `itemPlacement_fk3` FOREIGN KEY (`sectorFk`) REFERENCES `sector` (`id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemPlacement_BEFORE_INSERT` + BEFORE INSERT ON `itemPlacement__` FOR EACH ROW +BEGIN + IF LENGTH(NEW.code) < 3 THEN + CALL util.throw('code too short'); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemPlacement_BEFORE_UPDATE` + BEFORE UPDATE ON `itemPlacement__` FOR EACH ROW +BEGIN + IF LENGTH(NEW.code) < 3 THEN + CALL util.throw('code too short'); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + -- -- Temporary table structure for view `itemProductor` -- @@ -33782,27 +30425,27 @@ DROP TABLE IF EXISTS `itemProposal`; CREATE TABLE `itemProposal` ( `itemFk` int(11) NOT NULL, `mateFk` int(11) NOT NULL, - `counter` int(11) NOT NULL DEFAULT '0', + `counter` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`itemFk`,`mateFk`), KEY `itemProposal_fk2_idx` (`mateFk`), CONSTRAINT `itemProposal_fk1` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemProposal_fk2` FOREIGN KEY (`mateFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='almacena los cambios realizados de unos items por otros, cuando faltaban los primeros'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='almacena los cambios realizados de unos items por otros, cuando faltaban los primeros'; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `itemRepo` +-- Table structure for table `itemRepo__` -- -DROP TABLE IF EXISTS `itemRepo`; +DROP TABLE IF EXISTS `itemRepo__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `itemRepo` ( +CREATE TABLE `itemRepo__` ( `itemFk` int(11) NOT NULL, - `quantity` int(10) unsigned NOT NULL DEFAULT '0', + `quantity` int(10) unsigned NOT NULL DEFAULT 0, PRIMARY KEY (`itemFk`), CONSTRAINT `itemRepo_fk1` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -33832,18 +30475,18 @@ DROP TABLE IF EXISTS `itemShelving`; CREATE TABLE `itemShelving` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `itemFk` int(11) NOT NULL, - `shelvingFk` varchar(10) CHARACTER SET utf8 NOT NULL, - `shelve` varchar(2) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'A', - `deep` int(11) unsigned NOT NULL DEFAULT '1', - `quantity` int(11) NOT NULL DEFAULT '0', - `visible` int(11) NOT NULL DEFAULT '0', - `available` int(11) NOT NULL DEFAULT '0', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `shelvingFk` varchar(10) CHARACTER SET utf8mb3 NOT NULL, + `shelve` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'A', + `deep__` int(11) unsigned NOT NULL DEFAULT 1, + `quantity__` int(11) NOT NULL DEFAULT 0, + `visible` int(11) NOT NULL DEFAULT 0, + `available__` int(11) NOT NULL DEFAULT 0, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `priority` int(11) unsigned DEFAULT NULL COMMENT 'El 0 es la mínima prioridad', `grouping` smallint(5) unsigned DEFAULT NULL, `packing` int(11) unsigned DEFAULT NULL, - `packagingFk` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `level` varchar(45) COLLATE utf8_unicode_ci NOT NULL DEFAULT '1', + `packagingFk` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `level__` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '1', `userFk` int(10) unsigned DEFAULT NULL, `stars` int(11) DEFAULT NULL, PRIMARY KEY (`id`), @@ -33854,23 +30497,25 @@ CREATE TABLE `itemShelving` ( CONSTRAINT `itemShelving_fk1` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemShelving_fk2` FOREIGN KEY (`shelvingFk`) REFERENCES `shelving` (`code`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemShelving_fk3` FOREIGN KEY (`packagingFk`) REFERENCES `packaging` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Tabla utilizada para localizar los artículos dentro de los carros. Usado para la gestión del almacén en el altillo '; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Tabla utilizada para localizar los artículos dentro de los carros. Usado para la gestión del almacén en el altillo '; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemShelving_BEFORE_INSERT` BEFORE INSERT ON `itemShelving` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemShelving_BEFORE_INSERT` + BEFORE INSERT ON `itemShelving` + FOR EACH ROW BEGIN - - SET NEW.userFk = account.userGetId(); - + SET NEW.userFk = account.myUser_getId(); + + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -33880,39 +30525,34 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER itemShelving_AFTER_INSERT -AFTER INSERT -ON itemShelving FOR EACH ROW - -INSERT INTO vn.itemShelvingLog(itemShelvingFk, - workerFk, - accion, - itemFk, - shelvingFk, - quantity, - available, - visible, - `grouping`, - packing, - stars) - VALUES( NEW.id, - NEW.userFk, - 'CREA REGISTRO', - NEW.itemFk, - NEW.shelvingFk, - NEW.quantity, - NEW.available, - NEW.visible, - NEW.`grouping`, - NEW.packing, - NEW.stars - ) */;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemShelving_AFTER_INSERT` + AFTER INSERT ON `itemShelving` + FOR EACH ROW +INSERT INTO vn.itemShelvingLog( itemShelvingFk, + workerFk, + accion, + itemFk, + shelvingFk, + visible, + `grouping`, + packing, + stars) + VALUES( NEW.id, + NEW.userFk, + 'CREA REGISTRO', + NEW.itemFk, + NEW.shelvingFk, + NEW.visible, + NEW.`grouping`, + NEW.packing, + NEW.stars + ) */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; @@ -33921,15 +30561,17 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemShelving_BEFORE_UPDATE` BEFORE UPDATE ON `itemShelving` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemShelving_BEFORE_UPDATE` + BEFORE UPDATE ON `itemShelving` + FOR EACH ROW BEGIN - SET NEW.userFk = account.userGetId(); + SET NEW.userFk = account.myUser_getId(); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -33939,38 +30581,34 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER itemShelving_AFTER_UPDATE -AFTER UPDATE -ON itemShelving FOR EACH ROW -INSERT INTO vn.itemShelvingLog(itemShelvingFk, - workerFk, - accion, - itemFk, - shelvingFk, - quantity, - available, - visible, - `grouping`, - packing, - stars) - VALUES( NEW.id, - account.userGetId(), - 'CAMBIO', - NEW.itemFk, - NEW.shelvingFk, - NEW.quantity, - NEW.available, - NEW.visible, - NEW.`grouping`, - NEW.packing, - NEW.stars - ) */;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemShelving_AFTER_UPDATE` + AFTER UPDATE ON `itemShelving` + FOR EACH ROW +INSERT INTO vn.itemShelvingLog( itemShelvingFk, + workerFk, + accion, + itemFk, + shelvingFk, + visible, + `grouping`, + packing, + stars) + VALUES( NEW.id, + account.myUser_getId(), + 'CAMBIO', + NEW.itemFk, + NEW.shelvingFk, + NEW.visible, + NEW.`grouping`, + NEW.packing, + NEW.stars + ) */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; @@ -33979,22 +30617,22 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER itemShelving_BEFORE_DELETE -BEFORE DELETE -ON itemShelving FOR EACH ROW -INSERT INTO vn.itemShelvingLog(itemShelvingFk, - workerFk, +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemShelving_BEFORE_DELETE` + BEFORE DELETE ON `itemShelving` + FOR EACH ROW +INSERT INTO vn.itemShelvingLog(itemShelvingFk, + workerFk, accion, shelvingFk, itemFk) VALUES( OLD.id, - account.userGetId(), + account.myUser_getId(), 'ELIMINADO', OLD.shelvingFk, OLD.itemFk) */;; @@ -34056,7 +30694,8 @@ SET character_set_client = utf8; `longName` tinyint NOT NULL, `size` tinyint NOT NULL, `subName` tinyint NOT NULL, - `parked` tinyint NOT NULL + `parked` tinyint NOT NULL, + `sectorFk` tinyint NOT NULL ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; @@ -34071,10 +30710,10 @@ CREATE TABLE `itemShelvingLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `itemShelvingFk` int(10) unsigned DEFAULT NULL, `workerFk` int(11) DEFAULT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `accion` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `accion` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `itemFk` int(11) DEFAULT NULL, - `shelvingFk` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `shelvingFk` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `quantity` int(11) DEFAULT NULL, `visible` int(11) DEFAULT NULL, `available` int(11) DEFAULT NULL, @@ -34083,7 +30722,7 @@ CREATE TABLE `itemShelvingLog` ( `stars` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `itemShelving_Log_FK` (`itemShelvingFk`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -34097,17 +30736,17 @@ CREATE TABLE `itemShelvingPlacementSupply` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `itemShelvingFk` int(10) unsigned NOT NULL, `itemPlacementSupplyFk` int(10) unsigned NOT NULL, - `quantity` decimal(10,0) NOT NULL DEFAULT '0', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `quantity` decimal(10,0) NOT NULL DEFAULT 0, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `userFk` int(10) unsigned NOT NULL, - `isPicked` tinyint(4) NOT NULL DEFAULT '0', + `isPicked` tinyint(4) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `itemShelvingPlacementSupply_fk1_idx` (`itemShelvingFk`), KEY `itemShelvingPlacementSupply_fk2_idx` (`itemPlacementSupplyFk`), KEY `itemShelvingPlacementSupply_fk3_idx` (`userFk`), CONSTRAINT `itemShelvingPlacementSupply_fk1` FOREIGN KEY (`itemShelvingFk`) REFERENCES `itemShelving` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemShelvingPlacementSupply_fk2` FOREIGN KEY (`itemPlacementSupplyFk`) REFERENCES `itemPlacementSupply` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Detalle de los itemShelving afectados por las ordenes de reposicion de nicho'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Detalle de los itemShelving afectados por las ordenes de reposicion de nicho'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -34121,7 +30760,6 @@ SET character_set_client = utf8; /*!50001 CREATE TABLE `itemShelvingPlacementSupplyStock` ( `itemShelvingFk` tinyint NOT NULL, `itemFk` tinyint NOT NULL, - `quantity` tinyint NOT NULL, `packing` tinyint NOT NULL, `stock` tinyint NOT NULL, `longName` tinyint NOT NULL, @@ -34136,30 +30774,6 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `itemShelvingPlacementSupplyStock__` --- - -DROP TABLE IF EXISTS `itemShelvingPlacementSupplyStock__`; -/*!50001 DROP VIEW IF EXISTS `itemShelvingPlacementSupplyStock__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `itemShelvingPlacementSupplyStock__` ( - `itemShelvingFk` tinyint NOT NULL, - `itemFk` tinyint NOT NULL, - `quantity` tinyint NOT NULL, - `packing` tinyint NOT NULL, - `stock` tinyint NOT NULL, - `longName` tinyint NOT NULL, - `size` tinyint NOT NULL, - `subName` tinyint NOT NULL, - `shelving` tinyint NOT NULL, - `parking` tinyint NOT NULL, - `created` tinyint NOT NULL, - `priority` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `itemShelvingSale` -- @@ -34171,8 +30785,8 @@ CREATE TABLE `itemShelvingSale` ( `id` int(11) NOT NULL AUTO_INCREMENT, `itemShelvingFk` int(10) unsigned NOT NULL, `saleFk` int(11) NOT NULL, - `quantity` decimal(10,0) NOT NULL DEFAULT '0', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `quantity` decimal(10,0) NOT NULL DEFAULT 0, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `userFk` int(11) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `itemShelvingSale_fk1_idx` (`itemShelvingFk`), @@ -34181,46 +30795,26 @@ CREATE TABLE `itemShelvingSale` ( CONSTRAINT `itemShelvingSale_fk1` FOREIGN KEY (`itemShelvingFk`) REFERENCES `itemShelving` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemShelvingSale_fk2` FOREIGN KEY (`saleFk`) REFERENCES `sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemShelvingSale_fk3` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Detalle del producto que se retira de los carros, relacionando la linea de movimiento correspondiente'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Detalle del producto que se retira de los carros, relacionando la linea de movimiento correspondiente'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemShelvingSale_AFTER_INSERT` AFTER INSERT ON `itemShelvingSale` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemShelvingSale_AFTER_INSERT` + AFTER INSERT ON `itemShelvingSale` + FOR EACH ROW BEGIN UPDATE vn.sale - SET isPicked = TRUE + SET isPicked = TRUE WHERE id = NEW.saleFk; -END */;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemShelvingSale_AFTER_DELETE` AFTER DELETE ON `itemShelvingSale` FOR EACH ROW -BEGIN - - UPDATE vn.itemShelving - SET visible = visible + OLD.quantity - WHERE itemShelving.id = OLD.itemShelvingFk; - END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -34268,7 +30862,8 @@ SET character_set_client = utf8; `parkingCode` tinyint NOT NULL, `parkingFk` tinyint NOT NULL, `itemShelvingFk` tinyint NOT NULL, - `created` tinyint NOT NULL + `created` tinyint NOT NULL, + `isPreviousPrepared` tinyint NOT NULL ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; @@ -34338,30 +30933,32 @@ CREATE TABLE `itemTag` ( `id` int(11) NOT NULL AUTO_INCREMENT, `itemFk` int(11) NOT NULL, `tagFk` int(11) NOT NULL, - `value` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `value` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, `intValue` int(11) DEFAULT NULL, - `priority` int(2) NOT NULL DEFAULT '0', + `priority` int(2) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), UNIQUE KEY `itemTagItemUq` (`itemFk`,`tagFk`), + UNIQUE KEY `itemTagItemPriority` (`itemFk`,`priority`), KEY `tagFk` (`tagFk`,`value`), KEY `priorityItem` (`priority`,`itemFk`), KEY `value` (`value`), KEY `itemFk_2` (`itemFk`,`tagFk`,`intValue`), CONSTRAINT `itemTagItemFk` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemTagTagFk` FOREIGN KEY (`tagFk`) REFERENCES `tag` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemTag_beforeInsert` - BEFORE INSERT ON `itemTag` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemTag_beforeInsert` + BEFORE INSERT ON `itemTag` + FOR EACH ROW BEGIN SET NEW.intValue = itemTag_getIntValue(NEW.`value`); END */;; @@ -34375,17 +30972,24 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemTag_AFTER_INSERT` AFTER INSERT ON `itemTag` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemTag_AFTER_INSERT` + AFTER INSERT ON `itemTag` + FOR EACH ROW trig: BEGIN DECLARE vItemFk INT; - IF @isTriggerDisabled THEN + DECLARE visTriggerDisabled BOOL; + + SELECT isItemTagTriggerDisabled INTO visTriggerDisabled + FROM vn.itemConfig; + + IF @isTriggerDisabled OR visTriggerDisabled THEN LEAVE trig; END IF; - + SET vItemFk = NEW.itemFk; DROP TEMPORARY TABLE IF EXISTS tmp.item; CREATE TEMPORARY TABLE tmp.item @@ -34401,15 +31005,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemTag_beforeUpdate` - BEFORE UPDATE ON `itemTag` FOR EACH ROW -BEGIN +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemTag_beforeUpdate` + BEFORE UPDATE ON `itemTag` + FOR EACH ROW +BEGIN IF !(OLD.`value` <=> NEW.`value`) OR !(OLD.intValue <=> NEW.intValue) THEN SET NEW.intValue = itemTag_getIntValue(NEW.`value`); @@ -34423,20 +31028,26 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemTag_afterUpdate` - AFTER UPDATE ON `itemTag` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemTag_afterUpdate` + AFTER UPDATE ON `itemTag` + FOR EACH ROW trig: BEGIN DECLARE vItemFk INT; - IF @isTriggerDisabled THEN + DECLARE visTriggerDisabled BOOL; + + SELECT isItemTagTriggerDisabled INTO visTriggerDisabled + FROM vn.itemConfig; + + IF @isTriggerDisabled OR visTriggerDisabled THEN LEAVE trig; END IF; - + SET vItemFk = NEW.itemFk; DROP TEMPORARY TABLE IF EXISTS tmp.item; CREATE TEMPORARY TABLE tmp.item @@ -34455,18 +31066,24 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemTag_afterDelete` - AFTER DELETE ON `itemTag` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemTag_afterDelete` + AFTER DELETE ON `itemTag` + FOR EACH ROW trig: BEGIN DECLARE vItemFk INT; - IF @isTriggerDisabled THEN + DECLARE visTriggerDisabled BOOL; + + SELECT isItemTagTriggerDisabled INTO visTriggerDisabled + FROM vn.itemConfig; + + IF @isTriggerDisabled OR visTriggerDisabled THEN LEAVE trig; END IF; - + SET vItemFk = OLD.itemFk; DROP TEMPORARY TABLE IF EXISTS tmp.item; CREATE TEMPORARY TABLE tmp.item @@ -34504,8 +31121,8 @@ CREATE TABLE `itemTaxCountry` ( `id` int(11) NOT NULL AUTO_INCREMENT, `itemFk` int(11) DEFAULT NULL, `countryFk` mediumint(8) unsigned DEFAULT NULL, - `taxClassFk` tinyint(3) unsigned NOT NULL DEFAULT '1', - `effectived` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `taxClassFk` tinyint(3) unsigned NOT NULL DEFAULT 1, + `effectived` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `itemFk_UNIQUE` (`itemFk`,`countryFk`), KEY `taxClassFK_idx` (`taxClassFk`), @@ -34513,7 +31130,7 @@ CREATE TABLE `itemTaxCountry` ( CONSTRAINT `countryFK_paises` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON UPDATE CASCADE, CONSTRAINT `itemFK_Article` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `taxClassFK_Iva_Group` FOREIGN KEY (`taxClassFk`) REFERENCES `taxClass` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Define la clase de iva por artículo y pais'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Define la clase de iva por artículo y pais'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -34546,33 +31163,35 @@ DROP TABLE IF EXISTS `itemType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `itemType` ( `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, - `code` varchar(3) COLLATE utf8_unicode_ci NOT NULL, - `name` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `gramsMin` int(11) DEFAULT NULL, + `code` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, + `name` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `gramsMin__` int(11) DEFAULT NULL, `gramsMax` int(11) DEFAULT NULL, - `order` int(11) DEFAULT '0', + `order` int(11) DEFAULT 0, `categoryFk` int(10) unsigned NOT NULL, `workerFk` int(10) unsigned NOT NULL, - `isInventory` tinyint(4) NOT NULL DEFAULT '1' COMMENT 'Se utiliza tanto en el cálculo del inventario, como en el del informe del inventario valorado', - `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `f11` tinyint(4) NOT NULL DEFAULT '0', - `transaction` tinyint(4) NOT NULL DEFAULT '0', + `isInventory` tinyint(4) NOT NULL DEFAULT 1 COMMENT 'Se utiliza tanto en el cálculo del inventario, como en el del informe del inventario valorado', + `created` timestamp NULL DEFAULT current_timestamp(), + `f11__` tinyint(4) NOT NULL DEFAULT 0, + `transaction` tinyint(4) NOT NULL DEFAULT 0, `making` int(10) unsigned DEFAULT NULL COMMENT 'Son productos de confección propia', - `location` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `location` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `life` smallint(5) unsigned DEFAULT NULL, - `maneuver` double NOT NULL DEFAULT '0.21', - `target` double NOT NULL DEFAULT '0.15', - `topMargin` double NOT NULL DEFAULT '0.3', - `profit` double NOT NULL DEFAULT '0.02', - `density` double NOT NULL DEFAULT '167' COMMENT 'Almacena el valor por defecto de la densidad en kg/m3 para el calculo de los portes aereos, en articulos se guarda la correcta', - `promo` double NOT NULL DEFAULT '0', - `isPackaging` tinyint(1) NOT NULL DEFAULT '0', - `hasComponents` tinyint(1) NOT NULL DEFAULT '1', - `warehouseFk` smallint(6) unsigned NOT NULL DEFAULT '60', - `compression` decimal(5,2) DEFAULT '1.00', - `itemPackingTypeFk` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, - `temperatureFk` varchar(10) CHARACTER SET utf8 DEFAULT NULL, - `isUnconventionalSize` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'familia con productos cuyas medidas no son aptas para la cinta transportadora o paletizar', + `maneuver` double NOT NULL DEFAULT 0.21, + `target` double NOT NULL DEFAULT 0.15, + `topMargin` double NOT NULL DEFAULT 0.3, + `profit` double NOT NULL DEFAULT 0.02, + `density` double NOT NULL DEFAULT 167 COMMENT 'Almacena el valor por defecto de la densidad en kg/m3 para el calculo de los portes aereos, en articulos se guarda la correcta', + `promo` double NOT NULL DEFAULT 0, + `isPackaging` tinyint(1) NOT NULL DEFAULT 0, + `hasComponents` tinyint(1) NOT NULL DEFAULT 1, + `warehouseFk` smallint(6) unsigned NOT NULL DEFAULT 60, + `compression` decimal(5,2) DEFAULT 1.00, + `itemPackingTypeFk` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `temperatureFk` varchar(10) CHARACTER SET utf8mb3 DEFAULT NULL, + `isUnconventionalSize` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'familia con productos cuyas medidas no son aptas para la cinta transportadora o paletizar', + `isLaid` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Indica si el producto se puede tumbar a efectos del transporte desde Holanda', + `maxRefs` int(10) unsigned DEFAULT NULL COMMENT 'Indica el número máximo de referencias', PRIMARY KEY (`code`), UNIQUE KEY `tipo_id_UNIQUE` (`id`), UNIQUE KEY `Tipo_UNIQUE` (`name`,`categoryFk`), @@ -34586,33 +31205,31 @@ CREATE TABLE `itemType` ( CONSTRAINT `itemType_ibfk_1` FOREIGN KEY (`categoryFk`) REFERENCES `itemCategory` (`id`) ON UPDATE CASCADE, CONSTRAINT `temperatureFk` FOREIGN KEY (`temperatureFk`) REFERENCES `temperature` (`code`), CONSTRAINT `warehouseFk5` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Protege la tabla tipos de updates para los 4 parámetros de los compradores, en funcion del valor del campo CodigoRojo de tblContadores.'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Protege la tabla tipos de updates para los 4 parámetros de los compradores, en funcion del valor del campo CodigoRojo de tblContadores.'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemType_beforeUpdate` BEFORE UPDATE ON `itemType` FOR EACH ROW --- Edit trigger body code below this line. Do not edit lines above this one +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`itemType_beforeUpdate` + BEFORE UPDATE ON `itemType` + FOR EACH ROW BEGIN - - IF NEW.itemPackingTypeFk = '' THEN - + IF NEW.itemPackingTypeFk = '' THEN + SET NEW.itemPackingTypeFk = NULL; - + END IF; - IF NEW.itemPackingTypeFk != OLD.itemPackingTypeFk THEN - - UPDATE vn.item + IF NEW.itemPackingTypeFk != OLD.itemPackingTypeFk THEN + UPDATE vn.item SET itemPackingTypeFk = NEW.itemPackingTypeFk WHERE typeFk = NEW.id; - END IF; END */;; DELIMITER ; @@ -34630,10 +31247,10 @@ DROP TABLE IF EXISTS `itemTypeI18n`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `itemTypeI18n` ( `typeFk` smallint(5) unsigned NOT NULL, - `lang` char(2) CHARACTER SET utf8 NOT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `lang` char(2) CHARACTER SET utf8mb3 NOT NULL, + `name` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`typeFk`,`lang`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -34666,7 +31283,7 @@ CREATE TABLE `itemTypeRestriction` ( UNIQUE KEY `itemTypeRestriction_UN` (`itemTypeFk`,`dated`), KEY `itemTypeRestriction_dated_IDX` (`dated`,`itemTypeFk`) USING BTREE, CONSTRAINT `itemTypeRestriction_itemType_id_fk` FOREIGN KEY (`itemTypeFk`) REFERENCES `itemType` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -34680,29 +31297,29 @@ CREATE TABLE `itemTypeTag` ( `id` int(11) NOT NULL AUTO_INCREMENT, `itemTypeFk` smallint(5) unsigned NOT NULL, `tagFk` int(11) NOT NULL, - `priority` int(2) unsigned NOT NULL DEFAULT '0', + `priority` int(2) unsigned NOT NULL DEFAULT 0, PRIMARY KEY (`id`), UNIQUE KEY `itemTypeFk_UNIQUE` (`itemTypeFk`,`tagFk`), KEY `itemTypeTagTipo_idx` (`itemTypeFk`), KEY `itemTypeTagTag_idx` (`tagFk`), CONSTRAINT `itemTypeTagTag` FOREIGN KEY (`tagFk`) REFERENCES `tag` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `itemTypeTagTipos` FOREIGN KEY (`itemTypeFk`) REFERENCES `itemType` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `itemVerdecora` +-- Table structure for table `itemVerdecora__` -- -DROP TABLE IF EXISTS `itemVerdecora`; +DROP TABLE IF EXISTS `itemVerdecora__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `itemVerdecora` ( +CREATE TABLE `itemVerdecora__` ( `itemFk` int(11) NOT NULL, `codin` int(11) DEFAULT NULL, PRIMARY KEY (`itemFk`), CONSTRAINT `itemVerdecora_fk1` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Relaciona nuestros articulos con los de Verdecora'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Relaciona nuestros articulos con los de Verdecora'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -34746,20 +31363,6 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; --- --- Table structure for table `labelReport` --- - -DROP TABLE IF EXISTS `labelReport`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `labelReport` ( - `id` tinyint(3) unsigned NOT NULL, - `name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - -- -- Table structure for table `labourTree` -- @@ -34768,14 +31371,14 @@ DROP TABLE IF EXISTS `labourTree`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `labourTree` ( - `id` int(11) NOT NULL DEFAULT '0', - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `id` int(11) NOT NULL DEFAULT 0, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, `lft` int(11) NOT NULL, `rgt` int(11) NOT NULL, - `depth` bigint(22) NOT NULL DEFAULT '0', + `depth` bigint(22) NOT NULL DEFAULT 0, `sons` decimal(10,0) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -34845,7 +31448,7 @@ DROP TABLE IF EXISTS `ledgerConfig`; CREATE TABLE `ledgerConfig` ( `lastBookEntry` int(11) NOT NULL, PRIMARY KEY (`lastBookEntry`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -34860,7 +31463,7 @@ CREATE TABLE `lungSize` ( `size` decimal(5,0) NOT NULL, `dia` date NOT NULL, PRIMARY KEY (`hora`,`size`,`dia`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -34872,19 +31475,19 @@ DROP TABLE IF EXISTS `machine`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `machine` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `plate` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `serialNumber` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `maker` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `model` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `plate` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `serialNumber` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `maker` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `purchased` date DEFAULT NULL, `warehouseFk` int(11) DEFAULT NULL, `departmentFk` int(11) DEFAULT NULL, - `type` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `use` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `type` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `use` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `productionYear` int(11) DEFAULT NULL, - `photo` blob, + `photo` blob DEFAULT NULL, `workerFk` int(10) unsigned DEFAULT NULL, - `companyFk` smallint(5) unsigned NOT NULL DEFAULT '442', + `companyFk` smallint(5) unsigned NOT NULL DEFAULT 442, `ppeFk` int(11) DEFAULT NULL, `supplierFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), @@ -34896,22 +31499,22 @@ CREATE TABLE `machine` ( CONSTRAINT `machine_FK` FOREIGN KEY (`ppeFk`) REFERENCES `ppe` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `machine_FK_1` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, CONSTRAINT `machine_FK_2` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Maquinaria industrial, vehículos y demás elementos amortizables'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Maquinaria industrial, vehículos y demás elementos amortizables'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER machine_BI -BEFORE INSERT -ON machine FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`machine_BI` + BEFORE INSERT ON `machine` + FOR EACH ROW BEGIN - + SET NEW.workerFk = vn.getUser(); END */;; @@ -34932,7 +31535,7 @@ CREATE TABLE `machineDetail` ( `id` int(11) NOT NULL AUTO_INCREMENT, `machineFk` int(11) NOT NULL, `dated` date NOT NULL, - `action` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `action` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, `value` decimal(10,2) DEFAULT NULL, `workerFk` int(10) unsigned NOT NULL, `dmsFk` int(11) DEFAULT NULL, @@ -34943,7 +31546,7 @@ CREATE TABLE `machineDetail` ( CONSTRAINT `machineDetail_FK` FOREIGN KEY (`machineFk`) REFERENCES `machine` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `machineDetail_FK_1` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, CONSTRAINT `machineDetail_FK_2` FOREIGN KEY (`dmsFk`) REFERENCES `dms` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -34962,7 +31565,7 @@ CREATE TABLE `machineDms` ( KEY `machineDms_FK` (`dmsFk`), CONSTRAINT `machineDms_FK` FOREIGN KEY (`dmsFk`) REFERENCES `dms` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `machineDms_FK_1` FOREIGN KEY (`machineFk`) REFERENCES `machine` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -34976,14 +31579,14 @@ CREATE TABLE `machineWorker` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `workerFk` int(10) unsigned NOT NULL, `machineFk` int(11) NOT NULL, - `inTimed` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `inTimed` datetime NOT NULL DEFAULT current_timestamp(), `outTimed` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `machineWorker_FK_1` (`machineFk`), KEY `machineWorker_FK` (`workerFk`), CONSTRAINT `machineWorker_FK` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, CONSTRAINT `machineWorker_FK_1` FOREIGN KEY (`machineFk`) REFERENCES `machine` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Registros horarios de vehículos de almacén por empleado'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Registros horarios de vehículos de almacén por empleado'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -34997,7 +31600,7 @@ CREATE TABLE `machineWorkerConfig` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `maxHours` smallint(5) unsigned NOT NULL COMMENT 'Indicates how many hours a user record is reviewed to update or insert', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35009,40 +31612,45 @@ DROP TABLE IF EXISTS `mail`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `mail` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `receiver` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `sender` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `replyTo` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `subject` varchar(100) COLLATE utf8_unicode_ci NOT NULL, - `body` text COLLATE utf8_unicode_ci NOT NULL, - `sent` tinyint(2) NOT NULL DEFAULT '0', - `creationDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `attachment` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `status` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'OK', - `senderFk` int(11) DEFAULT NULL, - `recipientFk` int(11) DEFAULT NULL, - `plainTextBody` text COLLATE utf8_unicode_ci, + `receiver` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `sender` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `replyTo` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `subject` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + `body` text COLLATE utf8mb3_unicode_ci NOT NULL, + `sent` tinyint(2) NOT NULL DEFAULT 0, + `creationDate` timestamp NOT NULL DEFAULT current_timestamp(), + `attachment` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `status` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'OK', + `senderFk` int(10) unsigned DEFAULT NULL, + `recipientFk` int(10) unsigned DEFAULT NULL, + `plainTextBody` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `sent_idx` (`sent`), - KEY `creation_idx` (`creationDate`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + KEY `creation_idx` (`creationDate`), + KEY `mail_FK_1` (`recipientFk`), + KEY `mail_FK` (`senderFk`), + CONSTRAINT `mail_FK` FOREIGN KEY (`senderFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE, + CONSTRAINT `mail_FK_1` FOREIGN KEY (`recipientFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`mail_beforeInsert` -BEFORE INSERT ON `mail` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`mail_beforeInsert` + BEFORE INSERT ON `mail` + FOR EACH ROW BEGIN IF NEW.sender IS NOT NULL THEN - + SET NEW.receiver = NEW.sender; - + END IF; END */;; @@ -35061,10 +31669,10 @@ DROP TABLE IF EXISTS `mailTemplates`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `mailTemplates` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(50) CHARACTER SET utf8 NOT NULL, - `attachmentPath` text CHARACTER SET utf8 NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb3 NOT NULL, + `attachmentPath` text CHARACTER SET utf8mb3 NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35078,8 +31686,8 @@ CREATE TABLE `mandate` ( `id` int(11) NOT NULL AUTO_INCREMENT, `clientFk` int(11) NOT NULL, `companyFk` smallint(5) unsigned NOT NULL, - `code` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `code` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `created` timestamp NULL DEFAULT current_timestamp(), `finished` timestamp NULL DEFAULT NULL, `mandateTypeFk` smallint(5) NOT NULL, PRIMARY KEY (`id`), @@ -35089,24 +31697,24 @@ CREATE TABLE `mandate` ( CONSTRAINT `mandato_fgkey1` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, CONSTRAINT `mandato_fgkey2` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, CONSTRAINT `mandato_fgkey3` FOREIGN KEY (`mandateTypeFk`) REFERENCES `mandateType` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`mandate_beforeInsert` - BEFORE INSERT ON `mandate` - FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`mandate_beforeInsert` + BEFORE INSERT ON `mandate` + FOR EACH ROW BEGIN IF (NEW.code IS NULL) THEN - SET NEW.code=CONCAT(NEW.clientFk,'-',(SELECT AUTO_INCREMENT - FROM information_schema.TABLES + SET NEW.code=CONCAT(NEW.clientFk,'-',(SELECT AUTO_INCREMENT + FROM information_schema.TABLES WHERE TABLE_SCHEMA='vn' and TABLE_NAME='mandate')); END IF; END */;; @@ -35125,9 +31733,9 @@ DROP TABLE IF EXISTS `mandateType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `mandateType` ( `id` smallint(5) NOT NULL AUTO_INCREMENT, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35139,12 +31747,42 @@ DROP TABLE IF EXISTS `manuscript`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `manuscript` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(45) CHARACTER SET utf8 NOT NULL, - `description` text COLLATE utf8_unicode_ci, - `enabled` tinyint(1) NOT NULL DEFAULT '1', + `code` varchar(45) CHARACTER SET utf8mb3 NOT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `enabled` tinyint(1) NOT NULL DEFAULT 1, PRIMARY KEY (`id`), UNIQUE KEY `code_UNIQUE` (`code`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `mdbBranch` +-- + +DROP TABLE IF EXISTS `mdbBranch`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mdbBranch` ( + `name` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + PRIMARY KEY (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `mdbVersion` +-- + +DROP TABLE IF EXISTS `mdbVersion`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mdbVersion` ( + `app` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `branchFk` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `version` int(11) DEFAULT NULL, + PRIMARY KEY (`app`,`branchFk`), + KEY `mdbVersion_branchFk` (`branchFk`), + CONSTRAINT `mdbVersion_branchFk` FOREIGN KEY (`branchFk`) REFERENCES `mdbBranch` (`name`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35156,9 +31794,9 @@ DROP TABLE IF EXISTS `medicalCenter`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `medicalCenter` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35173,17 +31811,17 @@ CREATE TABLE `medicalReview` ( `workerFk` int(10) unsigned NOT NULL, `centerFk` int(11) NOT NULL, `date` date DEFAULT NULL, - `time` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `time` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `isFit` tinyint(1) DEFAULT NULL, `amount` double DEFAULT NULL, - `invoice` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `remark` longtext COLLATE utf8_unicode_ci, + `invoice` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `remark` longtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `frgcenter_idx` (`centerFk`), KEY `frgnkWorker_idx` (`workerFk`), CONSTRAINT `frgcenter` FOREIGN KEY (`centerFk`) REFERENCES `medicalCenter` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `frgnkWorker` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35195,16 +31833,16 @@ DROP TABLE IF EXISTS `message`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `message` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `uuid` varchar(50) CHARACTER SET utf8 NOT NULL, - `sender` varchar(50) CHARACTER SET utf8 NOT NULL, - `recipient` varchar(50) CHARACTER SET utf8 NOT NULL, - `message` longtext CHARACTER SET utf8, - `sendDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `uuid` varchar(50) CHARACTER SET utf8mb3 NOT NULL, + `sender` varchar(50) CHARACTER SET utf8mb3 NOT NULL, + `recipient` varchar(50) CHARACTER SET utf8mb3 NOT NULL, + `message` longtext CHARACTER SET utf8mb3 DEFAULT NULL, + `sendDate` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `sender` (`sender`), KEY `recipient` (`recipient`), KEY `uuid` (`uuid`(8)) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35216,17 +31854,17 @@ DROP TABLE IF EXISTS `messageInbox`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `messageInbox` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `uuid` varchar(50) CHARACTER SET utf8 NOT NULL, - `sender` varchar(50) CHARACTER SET utf8 NOT NULL, - `recipient` varchar(45) CHARACTER SET utf8 NOT NULL, - `finalRecipient` varchar(50) CHARACTER SET utf8 NOT NULL, - `message` longtext CHARACTER SET utf8, - `sendDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `read` varchar(45) CHARACTER SET utf8 NOT NULL DEFAULT '0', + `uuid` varchar(50) CHARACTER SET utf8mb3 NOT NULL, + `sender` varchar(50) CHARACTER SET utf8mb3 NOT NULL, + `recipient` varchar(45) CHARACTER SET utf8mb3 NOT NULL, + `finalRecipient` varchar(50) CHARACTER SET utf8mb3 NOT NULL, + `message` longtext CHARACTER SET utf8mb3 DEFAULT NULL, + `sendDate` timestamp NULL DEFAULT current_timestamp(), + `read` varchar(45) CHARACTER SET utf8mb3 NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `uuid` (`uuid`(8)), KEY `finalRecipient` (`finalRecipient`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35278,9 +31916,9 @@ DROP TABLE IF EXISTS `mistakeType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `mistakeType` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35292,11 +31930,15 @@ DROP TABLE IF EXISTS `mobileAppVersionControl`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `mobileAppVersionControl` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `appName` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `version` varchar(45) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', - `IsVersionCritical` tinyint(1) DEFAULT '0', + `appName` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `version` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', + `isVersionCritical` tinyint(1) DEFAULT 0, + `urlProduction` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `urlBeta` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `versionBeta` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isVersionBetaCritical` tinyint(1) DEFAULT 0, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Tabla para llevar el control de las Versions de las aplicaciones móvil '; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Tabla para llevar el control de las Versions de las aplicaciones móvil '; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35313,7 +31955,40 @@ CREATE TABLE `mrw` ( `shipped` date DEFAULT NULL, `price` decimal(10,2) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `mrwService` +-- + +DROP TABLE IF EXISTS `mrwService`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mrwService` ( + `agencyModeCodeFk` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `clientType` int(11) unsigned NOT NULL, + `serviceType` int(11) unsigned DEFAULT NULL, + PRIMARY KEY (`agencyModeCodeFk`), + CONSTRAINT `mrwService_agencyModeCodeFk` FOREIGN KEY (`agencyModeCodeFk`) REFERENCES `agencyMode` (`code`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Configuración de los servicios de MRW'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `mrwServiceWeekday` +-- + +DROP TABLE IF EXISTS `mrwServiceWeekday`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mrwServiceWeekday` ( + `agencyModeCodeFk` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `weekdays` set('mon','tue','wed','thu','fri','sat','sun') COLLATE utf8mb3_unicode_ci NOT NULL, + `serviceType` int(11) unsigned NOT NULL, + `params` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`agencyModeCodeFk`), + CONSTRAINT `mrwServiceWeekday_agencyModeCodeFk` FOREIGN KEY (`agencyModeCodeFk`) REFERENCES `agencyMode` (`code`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Configuración de los servicios en relación con el día de la semana para MRW'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35333,23 +32008,6 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `newBornSales__` --- - -DROP TABLE IF EXISTS `newBornSales__`; -/*!50001 DROP VIEW IF EXISTS `newBornSales__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `newBornSales__` ( - `amount` tinyint NOT NULL, - `clientFk` tinyint NOT NULL, - `userFk` tinyint NOT NULL, - `dated` tinyint NOT NULL, - `firstShipped` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `noticeCategory` -- @@ -35359,15 +32017,15 @@ DROP TABLE IF EXISTS `noticeCategory`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `noticeCategory` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `keyName` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `subject` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci, - `isEnabled` tinyint(1) NOT NULL DEFAULT '1', - `requiredRole` int(11) NOT NULL DEFAULT '1', + `keyName` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `name` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `subject` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isEnabled` tinyint(1) NOT NULL DEFAULT 1, + `requiredRole` int(11) NOT NULL DEFAULT 1, PRIMARY KEY (`id`), UNIQUE KEY `keyName_UNIQUE` (`keyName`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35378,13 +32036,13 @@ DROP TABLE IF EXISTS `noticeSubscription`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `noticeSubscription` ( - `noticeCategoryFk` int(11) NOT NULL DEFAULT '0', - `userFk` int(10) unsigned NOT NULL DEFAULT '0', + `noticeCategoryFk` int(11) NOT NULL DEFAULT 0, + `userFk` int(10) unsigned NOT NULL DEFAULT 0, PRIMARY KEY (`noticeCategoryFk`,`userFk`), KEY `noticeSubscription_ibfk_2` (`userFk`), CONSTRAINT `noticeSubscription_ibfk_1` FOREIGN KEY (`noticeCategoryFk`) REFERENCES `noticeCategory` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `noticeSubscription_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35396,10 +32054,11 @@ DROP TABLE IF EXISTS `observationType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `observationType` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, - `description` varchar(15) COLLATE utf8_unicode_ci NOT NULL, - `code` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, + `code` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `hasNewBornMessage` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Indica aquellos que deben de recibir un mensaje advirtiendo de un cliente nuevo', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35410,12 +32069,44 @@ DROP TABLE IF EXISTS `occupationCode`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `occupationCode` ( - `code` varchar(1) CHARACTER SET utf8 NOT NULL, - `name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(1) CHARACTER SET utf8mb3 NOT NULL, + `name` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Código de ocupación de la seguridad social'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Código de ocupación de la seguridad social'; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Table structure for table `operator` +-- + +DROP TABLE IF EXISTS `operator`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `operator` ( + `workerFk` int(10) unsigned NOT NULL, + `numberOfWagons` int(11) DEFAULT 1, + PRIMARY KEY (`workerFk`), + KEY `operator_FK` (`workerFk`), + CONSTRAINT `operator_FK` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary table structure for view `operatorWorkerCode` +-- + +DROP TABLE IF EXISTS `operatorWorkerCode`; +/*!50001 DROP VIEW IF EXISTS `operatorWorkerCode`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `operatorWorkerCode` ( + `workerFk` tinyint NOT NULL, + `fullName` tinyint NOT NULL, + `code` tinyint NOT NULL, + `numberOfWagons` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + -- -- Table structure for table `orderTicket` -- @@ -35425,12 +32116,12 @@ DROP TABLE IF EXISTS `orderTicket`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `orderTicket` ( `orderFk` int(10) unsigned NOT NULL, - `ticketFk` int(11) NOT NULL DEFAULT '0', + `ticketFk` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`ticketFk`,`orderFk`), KEY `order_id` (`orderFk`), CONSTRAINT `hedera_id` FOREIGN KEY (`orderFk`) REFERENCES `hedera`.`order` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `idTicketFk` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35442,18 +32133,18 @@ DROP TABLE IF EXISTS `origin`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `origin` ( `id` tinyint(2) unsigned NOT NULL AUTO_INCREMENT, - `code` varchar(3) COLLATE utf8_unicode_ci NOT NULL, - `name` varchar(20) COLLATE utf8_unicode_ci NOT NULL, - `warehouseFk` smallint(5) unsigned DEFAULT '4', - `flag` blob, - `nl` tinyint(4) NOT NULL DEFAULT '0', - `countryFk` mediumint(8) unsigned NOT NULL DEFAULT '1', + `code` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, + `name` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, + `warehouseFk` smallint(5) unsigned DEFAULT 4, + `flag__` blob DEFAULT NULL, + `nl__` tinyint(4) NOT NULL DEFAULT 0, + `countryFk` mediumint(8) unsigned NOT NULL DEFAULT 1, PRIMARY KEY (`id`), UNIQUE KEY `Abreviatura` (`code`), KEY `warehouse_id` (`warehouseFk`), KEY `Id_Paises` (`countryFk`), CONSTRAINT `origin_ibfk_1` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35465,10 +32156,10 @@ DROP TABLE IF EXISTS `originI18n`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `originI18n` ( `originFk` tinyint(2) unsigned NOT NULL, - `lang` char(2) CHARACTER SET utf8 NOT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `lang` char(2) CHARACTER SET utf8mb3 NOT NULL, + `name` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`originFk`,`lang`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35498,7 +32189,7 @@ CREATE TABLE `outgoingInvoiceVat` ( `equalizationTax` decimal(12,2) DEFAULT NULL, `Vat` decimal(12,2) DEFAULT NULL, PRIMARY KEY (`outgoingInvoice`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35514,7 +32205,7 @@ CREATE TABLE `packageChecked` ( PRIMARY KEY (`id`), UNIQUE KEY `entryFk_UNIQUE` (`itemFk`), KEY `fkItem_idx` (`itemFk`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35525,13 +32216,13 @@ DROP TABLE IF EXISTS `packageEquivalent`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `packageEquivalent` ( - `packagingFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL, - `equivalentFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `packagingFk` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `equivalentFk` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`packagingFk`,`equivalentFk`), KEY `packageEquivalent_fk2_idx` (`equivalentFk`), CONSTRAINT `packageEquivalent_fk1` FOREIGN KEY (`packagingFk`) REFERENCES `packaging` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `packageEquivalent_fk2` FOREIGN KEY (`equivalentFk`) REFERENCES `packaging` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='recoge los modelos de cubos que se han de sustituir a efectos de presentar informes resumidos'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='recoge los modelos de cubos que se han de sustituir a efectos de presentar informes resumidos'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35556,36 +32247,104 @@ DROP TABLE IF EXISTS `packaging`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `packaging` ( - `id` varchar(10) COLLATE utf8_unicode_ci NOT NULL, - `volume` decimal(10,2) DEFAULT '0.00', - `width` decimal(10,2) DEFAULT '0.00', - `depth` decimal(10,2) DEFAULT '0.00', - `height` decimal(10,2) DEFAULT '0.00', - `value` decimal(10,2) DEFAULT '0.00', - `isPackageReturnable` tinyint(1) NOT NULL DEFAULT '0', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `id` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `volume` decimal(10,2) DEFAULT 0.00, + `width` decimal(10,2) DEFAULT 0.00, + `depth` decimal(10,2) DEFAULT 0.00, + `height` decimal(10,2) DEFAULT 0.00, + `value` decimal(10,2) DEFAULT 0.00, + `isPackageReturnable` tinyint(1) NOT NULL DEFAULT 0, + `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `packagingReturnFk` int(11) DEFAULT NULL, `lower` int(11) DEFAULT NULL, `upload` int(11) DEFAULT NULL, `base` decimal(10,2) DEFAULT NULL, `itemFk` int(11) DEFAULT NULL, `price` decimal(10,2) NOT NULL, - `isBox` tinyint(1) NOT NULL DEFAULT '0', + `isBox` tinyint(1) NOT NULL DEFAULT 0, `cubicPackage` decimal(10,2) DEFAULT NULL, - `returnCost` decimal(10,2) NOT NULL DEFAULT '0.00', - `cmrName` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `returnCost` decimal(10,2) NOT NULL DEFAULT 0.00, + `cmrName` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `freightItemFk` int(11) DEFAULT NULL, - `hasCompressionVariations` tinyint(1) DEFAULT '0' COMMENT 'Floramondo puede servirlos no llenos del todo', + `hasCompressionVariations` tinyint(1) DEFAULT 0 COMMENT 'Floramondo puede servirlos no llenos del todo', `conveyorBuildingClassFk` int(11) DEFAULT NULL, + `isTrolley` tinyint(1) NOT NULL DEFAULT 0, + `isPallet` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `packaging_fk1` (`itemFk`), KEY `packaging_fk2_idx` (`freightItemFk`), KEY `packaging_FK` (`conveyorBuildingClassFk`), + KEY `packaging_FK_1` (`packagingReturnFk`), CONSTRAINT `packaging_FK` FOREIGN KEY (`conveyorBuildingClassFk`) REFERENCES `conveyorBuildingClass` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `packaging_FK_1` FOREIGN KEY (`packagingReturnFk`) REFERENCES `returnBuckets` (`id`) ON UPDATE CASCADE, CONSTRAINT `packaging_fk1` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON UPDATE CASCADE, CONSTRAINT `packaging_fk2` FOREIGN KEY (`freightItemFk`) REFERENCES `item` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`packaging_beforeInsert` + BEFORE INSERT ON `packaging` + FOR EACH ROW +BEGIN + DECLARE vAmount INT DEFAULT NULL; + + IF NEW.isPackageReturnable THEN + SELECT cb.freightPackagingFull INTO vAmount + FROM returnBuckets cb + WHERE cb.id = NEW.packagingReturnFk; + + SET NEW.value = IF (vAmount IS NULL, + NEW.base, + vAmount / IFNULL(NEW.upload, 0) + NEW.base); + ELSE + SET NEW.value = NEW.price + NEW.base; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`packaging_beforeUpdate` + BEFORE UPDATE ON `packaging` + FOR EACH ROW +BEGIN + DECLARE vAmount INT DEFAULT NULL; + + IF NEW.isPackageReturnable THEN + SELECT cb.freightPackagingFull INTO vAmount + FROM returnBuckets cb + WHERE cb.id = NEW.packagingReturnFk; + + SET NEW.value = IF (vAmount IS NULL, + NEW.base, + vAmount / IFNULL(NEW.upload, 0) + NEW.base); + ELSE + SET NEW.value = NEW.price + NEW.base; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; -- -- Table structure for table `packagingConfig` @@ -35599,24 +32358,94 @@ CREATE TABLE `packagingConfig` ( `upperGap` int(11) NOT NULL, `previousPreparationMinimumSize` int(11) NOT NULL, `defaultConveyorBuildingClass` int(11) NOT NULL, + `palletPackaging` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT 'pallet USA', + `carryPackaging` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT 'cc', + `freightItemPackaging` int(11) DEFAULT 71, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Altura mínima para preparar pedidos en preparacion previa'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Altura mínima para preparar pedidos en preparacion previa'; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Temporary table structure for view `packingSite` +-- Table structure for table `packagingGifts` +-- + +DROP TABLE IF EXISTS `packagingGifts`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `packagingGifts` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `description` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `photo` blob DEFAULT NULL, + `started` date NOT NULL, + `ended` date NOT NULL, + `warehouseFk` smallint(5) unsigned DEFAULT NULL, + `provinceFk` smallint(5) unsigned DEFAULT NULL, + `countryFk` mediumint(8) unsigned DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `PackagingGifts_FK_2` (`countryFk`), + KEY `PackagingGifts_FK` (`provinceFk`), + KEY `PackagingGifts_FK_1` (`warehouseFk`), + CONSTRAINT `PackagingGifts_FK` FOREIGN KEY (`provinceFk`) REFERENCES `province` (`id`), + CONSTRAINT `PackagingGifts_FK_1` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`), + CONSTRAINT `PackagingGifts_FK_2` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `packagingWithFreight` +-- + +DROP TABLE IF EXISTS `packagingWithFreight`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `packagingWithFreight` ( + `packagingFk` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `priority` int(11) NOT NULL, + PRIMARY KEY (`packagingFk`), + UNIQUE KEY `packagingWithFreight_UN` (`priority`), + CONSTRAINT `packagingWithFreight_FK` FOREIGN KEY (`packagingFk`) REFERENCES `packaging` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Embalajes con porte para encajado'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `packagingWithoutFreight` +-- + +DROP TABLE IF EXISTS `packagingWithoutFreight`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `packagingWithoutFreight` ( + `packagingFk` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `priority` int(11) NOT NULL, + PRIMARY KEY (`packagingFk`), + UNIQUE KEY `packagingWithoutFreight_UN` (`priority`), + CONSTRAINT `packagingWithoutFreight_FK` FOREIGN KEY (`packagingFk`) REFERENCES `packaging` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Embalajes sin porte para encajar'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `packingSite` -- DROP TABLE IF EXISTS `packingSite`; -/*!50001 DROP VIEW IF EXISTS `packingSite`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `packingSite` ( - `hostFk` tinyint NOT NULL, - `printerFk` tinyint NOT NULL, - `code` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `packingSite` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `hostFk` int(11) NOT NULL, + `printerFk` tinyint(3) unsigned DEFAULT NULL, + `collectionFk` int(11) DEFAULT NULL COMMENT 'Last collection packed on this site', + PRIMARY KEY (`id`), + UNIQUE KEY `packingSite_UN` (`code`), + KEY `packingSite_FK_1` (`printerFk`), + KEY `packingSite_FK` (`hostFk`), + KEY `packingSite_FK_2` (`collectionFk`), + CONSTRAINT `packingSite_FK` FOREIGN KEY (`hostFk`) REFERENCES `host` (`id`), + CONSTRAINT `packingSite_FK_1` FOREIGN KEY (`printerFk`) REFERENCES `printer` (`id`), + CONSTRAINT `packingSite_FK_2` FOREIGN KEY (`collectionFk`) REFERENCES `collection` (`id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `packingSiteLog` @@ -35627,37 +32456,38 @@ DROP TABLE IF EXISTS `packingSiteLog`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `packingSiteLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `packingSiteFk` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `hostFk` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `packingSiteFk` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `hostFk` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, `workerFk` int(10) unsigned NOT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `description` text COLLATE utf8_unicode_ci, + `printerModelFk` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `typeErrorFk` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `creationDate` timestamp NULL DEFAULT current_timestamp(), + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `packingSiteLog_UN` (`id`), KEY `packingSiteLog_FK` (`workerFk`), - KEY `packingSiteLog_FK_1` (`packingSiteFk`), + KEY `packingSiteLog_FK_4` (`typeErrorFk`), + KEY `packingSiteLog_FK_1` (`printerModelFk`), + KEY `packingSiteLog_FK_2` (`packingSiteFk`), CONSTRAINT `packingSiteLog_FK` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`), - CONSTRAINT `packingSiteLog_FK_1` FOREIGN KEY (`packingSiteFk`) REFERENCES `packingSite__` (`code`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + CONSTRAINT `packingSiteLog_FK_1` FOREIGN KEY (`printerModelFk`) REFERENCES `printerModel` (`code`) ON UPDATE CASCADE, + CONSTRAINT `packingSiteLog_FK_2` FOREIGN KEY (`packingSiteFk`) REFERENCES `packingSite` (`code`) ON UPDATE CASCADE, + CONSTRAINT `packingSiteLog_FK_4` FOREIGN KEY (`typeErrorFk`) REFERENCES `packingSiteTypeError` (`code`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `packingSite__` +-- Table structure for table `packingSiteTypeError` -- -DROP TABLE IF EXISTS `packingSite__`; +DROP TABLE IF EXISTS `packingSiteTypeError`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `packingSite__` ( - `code` varchar(10) COLLATE utf8_unicode_ci NOT NULL, - `hostFk` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `printerFk` tinyint(3) unsigned DEFAULT NULL, - PRIMARY KEY (`code`), - KEY `packingSite_FK` (`hostFk`), - KEY `packingSite_FK_1` (`printerFk`), - CONSTRAINT `packingSite_FK` FOREIGN KEY (`hostFk`) REFERENCES `vn2008`.`config_host__` (`config_host_id`), - CONSTRAINT `packingSite_FK_1` FOREIGN KEY (`printerFk`) REFERENCES `printer` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +CREATE TABLE `packingSiteTypeError` ( + `code` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35669,27 +32499,29 @@ DROP TABLE IF EXISTS `parking`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `parking` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `column` varchar(5) CHARACTER SET utf8 DEFAULT '--', - `row` varchar(5) CHARACTER SET utf8 DEFAULT '--', - `sectorFk` int(11) NOT NULL DEFAULT '2', - `code` varchar(8) CHARACTER SET utf8 DEFAULT NULL, + `column` varchar(5) CHARACTER SET utf8mb3 DEFAULT '--', + `row` varchar(5) CHARACTER SET utf8mb3 DEFAULT '--', + `sectorFk` int(11) NOT NULL DEFAULT 2, + `code` varchar(8) CHARACTER SET utf8mb3 DEFAULT NULL, `pickingOrder` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code_UNIQUE` (`code`), KEY `parking_fk1_idx` (`sectorFk`), CONSTRAINT `parking_fk1` FOREIGN KEY (`sectorFk`) REFERENCES `sector` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Tabla con los parkings del altillo'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Tabla con los parkings del altillo'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`parking_BEFORE_INSERT` BEFORE INSERT ON `parking` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`parking_BEFORE_INSERT` + BEFORE INSERT ON `parking` + FOR EACH ROW BEGIN -- SET new.`code` = CONCAT(new.`column`,' - ',new.`row`) ; @@ -35703,17 +32535,19 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`parking_BEFORE_UPDATE` BEFORE UPDATE ON `parking` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`parking_BEFORE_UPDATE` + BEFORE UPDATE ON `parking` + FOR EACH ROW BEGIN -- SET new.`code` = CONCAT(new.`column`,' - ',new.`row`) ; - + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -35730,9 +32564,23 @@ DROP TABLE IF EXISTS `payDem`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `payDem` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, - `payDem` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `payDem` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `payDemDetail` +-- + +DROP TABLE IF EXISTS `payDemDetail`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `payDemDetail` ( + `id` tinyint(3) unsigned NOT NULL, + `detail` tinyint(3) unsigned NOT NULL, + PRIMARY KEY (`id`,`detail`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35744,16 +32592,18 @@ DROP TABLE IF EXISTS `payMethod`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `payMethod` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, - `code` varchar(50) CHARACTER SET utf8 DEFAULT NULL, - `name` varchar(20) COLLATE utf8_unicode_ci NOT NULL, - `solution` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, - `outstandingDebt` tinyint(3) unsigned zerofill NOT NULL DEFAULT '000', - `graceDays` int(11) unsigned NOT NULL DEFAULT '0', - `isIbanRequiredForClients` tinyint(3) DEFAULT '0', - `isIbanRequiredForSuppliers` tinyint(3) DEFAULT '0', - `isNotified` tinyint(3) NOT NULL DEFAULT '1', + `code` varchar(50) CHARACTER SET utf8mb3 DEFAULT NULL, + `name` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, + `solution` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `outstandingDebt` tinyint(3) unsigned zerofill NOT NULL DEFAULT 000, + `graceDays` int(11) unsigned NOT NULL DEFAULT 0, + `isIbanRequiredForClients` tinyint(3) DEFAULT 0, + `isIbanRequiredForSuppliers` tinyint(3) DEFAULT 0, + `isNotified` tinyint(3) NOT NULL DEFAULT 1, + `hasVerified` tinyint(1) DEFAULT 0, + `graceMonthsDisableChecked` int(11) unsigned NOT NULL DEFAULT 0 COMMENT 'Deshabilita la comprobación de los datos bancarios de todos aquellos proveedores que no hayan recibido un pago en los meses especificados', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35767,32 +32617,35 @@ CREATE TABLE `payment` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `received` date NOT NULL, `supplierFk` int(11) NOT NULL, - `amount` decimal(10,2) NOT NULL DEFAULT '0.00', - `currencyFk` tinyint(3) unsigned NOT NULL DEFAULT '1', + `amount` decimal(10,2) NOT NULL DEFAULT 0.00, + `currencyFk` tinyint(3) unsigned NOT NULL DEFAULT 1, `divisa` decimal(10,2) DEFAULT NULL, - `bankFk` int(11) NOT NULL DEFAULT '0', + `bankFk` int(11) NOT NULL DEFAULT 0, `payMethodFk` tinyint(3) unsigned NOT NULL, - `bankingFees` double(6,2) unsigned NOT NULL DEFAULT '0.00', - `concept` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `companyFk` smallint(5) unsigned NOT NULL DEFAULT '442', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `isConciliated` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0', - `exchangeInsuranceFk` int(11) DEFAULT NULL, + `bankingFees` double(6,2) unsigned NOT NULL DEFAULT 0.00, + `concept` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `companyFk` smallint(5) unsigned NOT NULL DEFAULT 442, + `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `isConciliated` tinyint(1) unsigned zerofill NOT NULL DEFAULT 0, + `exchangeInsuranceFk__` int(11) DEFAULT NULL, `dueDated` date DEFAULT NULL, + `workerFk` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`), KEY `empresa_id` (`companyFk`), KEY `id_banco` (`bankFk`), KEY `id_moneda` (`currencyFk`), KEY `pay_met` (`payMethodFk`), - KEY `fk_pago_pago_sdc1_idx` (`exchangeInsuranceFk`), + KEY `fk_pago_pago_sdc1_idx` (`exchangeInsuranceFk__`), KEY `pagoDueDatedIdx` (`dueDated`), KEY `pago_ibfk_3` (`supplierFk`), + KEY `payment_FK` (`workerFk`), CONSTRAINT `pago_ibfk_3` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE, CONSTRAINT `pago_moneda_1` FOREIGN KEY (`currencyFk`) REFERENCES `currency` (`id`) ON UPDATE CASCADE, CONSTRAINT `pago_pay_met` FOREIGN KEY (`payMethodFk`) REFERENCES `payMethod` (`id`) ON UPDATE CASCADE, + CONSTRAINT `payment_FK` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`), CONSTRAINT `payment_ibfk_1` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON UPDATE CASCADE, - CONSTRAINT `payment_ibfk_2` FOREIGN KEY (`bankFk`) REFERENCES `bank` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + CONSTRAINT `payment_ibfk_2` FOREIGN KEY (`bankFk`) REFERENCES `accounting` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -35803,86 +32656,167 @@ CREATE TABLE `payment` ( /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `payment_beforeInsert` BEFORE INSERT ON `payment` FOR EACH ROW --- Edit trigger body code below this line. Do not edit lines above this one +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `payment_beforeInsert` BEFORE INSERT ON `payment` FOR EACH ROW BEGIN DECLARE cuenta_banco,cuenta_proveedor DOUBLE; DECLARE vNewBookEntry INT; - DECLARE bolCASH BOOLEAN; - DECLARE isSupplierActive BOOLEAN; - - -- PAK 10/02/15 No se asientan los pagos directamente, salvo en el caso de las cajas de CASH - SELECT (at2.code = 'cash') INTO bolCASH FROM vn.bank b JOIN vn.accountingType at2 ON at2.id = b.cash WHERE b.id = NEW.bankFk ; - - IF bolCASH THEN - - SELECT account INTO cuenta_banco + DECLARE bolCASH BOOLEAN; + DECLARE isSupplierActive BOOLEAN; + + -- PAK 10/02/15 No se asientan los pagos directamente, salvo en el caso de las cajas de CASH + SELECT (at2.code = 'cash') INTO bolCASH + FROM vn.bank b + JOIN vn.accountingType at2 ON at2.id = b.cash + WHERE b.id = NEW.bankFk; + + IF bolCASH THEN + + SELECT account INTO cuenta_banco FROM bank WHERE id = NEW.bankFk; - - SELECT account INTO cuenta_proveedor - FROM supplier + + SELECT account INTO cuenta_proveedor + FROM supplier WHERE id = NEW.supplierFk; - + CALL vn.ledger_next(vNewBookEntry); - - INSERT INTO XDiario (ASIEN,FECHA,SUBCTA,CONTRA,CONCEPTO,EURODEBE,EUROHABER,empresa_id) - SELECT vNewBookEntry,NEW.received,SUBCTA,CONTRA,NEW.concept,EURODEBE,EUROHABER,NEW.companyFk - FROM - ( SELECT cuenta_banco SUBCTA,cuenta_proveedor CONTRA,0 EURODEBE, NEW.amount + NEW.bankingFees EUROHABER - UNION ALL - SELECT cuenta_proveedor SUBCTA, cuenta_banco CONTRA,NEW.amount EURODEBE, 0 EUROHABER - ) gf; - + + INSERT INTO XDiario ( ASIEN, + FECHA, + SUBCTA, + CONTRA, + CONCEPTO, + EURODEBE, + EUROHABER, + empresa_id) + SELECT vNewBookEntry, + NEW.received, + SUBCTA, + CONTRA, + NEW.concept, + EURODEBE, + EUROHABER, + NEW.companyFk + FROM ( SELECT cuenta_banco SUBCTA, + cuenta_proveedor CONTRA, + 0 EURODEBE, + NEW.amount + NEW.bankingFees EUROHABER + UNION ALL + SELECT cuenta_proveedor SUBCTA, + cuenta_banco CONTRA, + NEW.amount EURODEBE, + 0 EUROHABER) gf; + IF NEW.bankingFees <> 0 THEN - INSERT INTO XDiario (ASIEN,FECHA,SUBCTA,CONTRA,CONCEPTO,EURODEBE,EUROHABER,empresa_id) - SELECT vNewBookEntry,NEW.received,IF(c.id = 1,6260000002,IF(CEE = 1,6260000003,6260000004)),cuenta_banco,NEW.concept,NEW.bankingFees,0,NEW.companyFk - FROM supplier s - JOIN country c ON s.countryFk = c.id + INSERT INTO XDiario ( ASIEN, + FECHA, + SUBCTA, + CONTRA, + CONCEPTO, + EURODEBE, + EUROHABER, + empresa_id) + SELECT vNewBookEntry, + NEW.received, + IF(c.id = 1,6260000002, + IF(CEE = 1,6260000003,6260000004)), + cuenta_banco, + NEW.concept, + NEW.bankingFees, + 0, + NEW.companyFk + FROM supplier s + JOIN country c ON s.countryFk = c.id WHERE s.id = NEW.supplierFk; - END IF; + END IF; END IF; - - SET NEW.dueDated = IFNULL(NEW.dueDated, NEW.received); - - SELECT isActive INTO isSupplierActive + + SET NEW.dueDated = IFNULL(NEW.dueDated, NEW.received); + + SELECT isActive INTO isSupplierActive FROM supplier WHERE id = NEW.supplierFk; - + IF isSupplierActive = FALSE THEN CALL util.throw('SUPPLIER_INACTIVE'); END IF; - + + IF ISNULL(NEW.workerFk) THEN + SET NEW.workerFk = account.myUser_getId(); + END IF; + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`payment_afterInsert` + AFTER INSERT ON `payment` + FOR EACH ROW +BEGIN + DECLARE vIsPayMethodChecked BOOLEAN; + DECLARE vEmail VARCHAR(150); --- --- Temporary table structure for view `payment__` --- + SELECT isPayMethodChecked INTO vIsPayMethodChecked + FROM supplier + WHERE id = NEW.supplierFk; -DROP TABLE IF EXISTS `payment__`; -/*!50001 DROP VIEW IF EXISTS `payment__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `payment__` ( - `id` tinyint NOT NULL, - `received` tinyint NOT NULL, - `dueDated` tinyint NOT NULL, - `supplierFk` tinyint NOT NULL, - `amount` tinyint NOT NULL, - `currencyFk` tinyint NOT NULL, - `divisa` tinyint NOT NULL, - `bankFk` tinyint NOT NULL, - `payMethodFk` tinyint NOT NULL, - `companyFk` tinyint NOT NULL, - `exchangeInsuranceFk` tinyint NOT NULL, - `isConciliated` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; + + IF vIsPayMethodChecked = FALSE THEN + + SELECT notificationEmail INTO vEmail + FROM department + WHERE name = 'FINANZAS'; + + CALL mail_insert( + vEmail, + NULL, + 'Pago con método sin verificar', + CONCAT( + 'Se ha realizado el pago ', + NEW.id, + ' al proveedor ', + NEW.supplierFk, + ' con el método de pago sin verificar.' + ) + ); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER payment_beforeUpdate BEFORE UPDATE ON payment FOR EACH ROW +BEGIN + IF ISNULL(NEW.workerFk) THEN + SET NEW.workerFk = account.myUser_getId(); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; -- -- Table structure for table `pcs` @@ -35892,13 +32826,13 @@ DROP TABLE IF EXISTS `pcs`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `pcs` ( - `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NULL DEFAULT current_timestamp(), `routeFk` int(10) unsigned DEFAULT NULL, `id` int(11) NOT NULL AUTO_INCREMENT, `pallet` int(11) DEFAULT NULL, `box` int(11) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35909,7 +32843,7 @@ DROP TABLE IF EXISTS `pcs_graf`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `pcs_graf` ( - `id` int(11) NOT NULL DEFAULT '0', + `id` int(11) NOT NULL DEFAULT 0, `dia` date DEFAULT NULL, `created` datetime DEFAULT NULL, `box` decimal(4,0) DEFAULT NULL, @@ -35920,7 +32854,7 @@ CREATE TABLE `pcs_graf` ( PRIMARY KEY (`id`), KEY `pcs_graf_index1` (`hh`), KEY `pcs_graf_index2` (`mm`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35935,7 +32869,7 @@ CREATE TABLE `pedidosInternos` ( `idArticle` int(11) DEFAULT NULL, `quantity` int(11) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35946,40 +32880,10 @@ DROP TABLE IF EXISTS `periodicityType`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `periodicityType` ( - `code` varchar(45) CHARACTER SET utf8 NOT NULL, - `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(45) CHARACTER SET utf8mb3 NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `person` --- - -DROP TABLE IF EXISTS `person`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `person` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `firstname` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `surnames` varchar(60) COLLATE utf8_unicode_ci NOT NULL, - `fi` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `birth` date DEFAULT NULL, - `readerId` int(11) DEFAULT NULL, - `workerFk` int(10) unsigned DEFAULT NULL, - `isDisable` tinyint(1) NOT NULL DEFAULT '0', - `isFreelance` tinyint(1) NOT NULL DEFAULT '0', - `isSsDiscounted` tinyint(1) NOT NULL DEFAULT '0', - `nickname` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `p2` longtext COLLATE utf8_unicode_ci, - `sex` enum('M','F') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'F' COMMENT 'M Masculino F Femenino', - PRIMARY KEY (`id`), - UNIQUE KEY `nif` (`fi`), - UNIQUE KEY `person_UN` (`readerId`), - KEY `nifIndex` (`fi`), - KEY `workerFk_idx` (`workerFk`), - CONSTRAINT `Person_ibfk_1` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -35996,6 +32900,50 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; +-- +-- Table structure for table `person__` +-- + +DROP TABLE IF EXISTS `person__`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `person__` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `firstname` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `surnames` varchar(60) COLLATE utf8mb3_unicode_ci NOT NULL, + `fi` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `birth` date DEFAULT NULL, + `readerId__` int(11) DEFAULT NULL, + `workerFk` int(10) unsigned DEFAULT NULL, + `isDisable` tinyint(1) NOT NULL DEFAULT 0, + `isFreelance` tinyint(1) NOT NULL DEFAULT 0, + `isSsDiscounted` tinyint(1) NOT NULL DEFAULT 0, + `nickname` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `p2` longtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `sex` enum('M','F') COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'F' COMMENT 'M Masculino F Femenino', + PRIMARY KEY (`id`), + UNIQUE KEY `nif` (`fi`), + UNIQUE KEY `person_UN` (`readerId__`), + KEY `nifIndex` (`fi`), + KEY `workerFk_idx` (`workerFk`), + CONSTRAINT `Person_ibfk_1` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `personalProtectionEquipment` +-- + +DROP TABLE IF EXISTS `personalProtectionEquipment`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `personalProtectionEquipment` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Table structure for table `pgc` -- @@ -36004,20 +32952,20 @@ DROP TABLE IF EXISTS `pgc`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `pgc` ( - `code` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, `rate` decimal(10,2) NOT NULL, - `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `cplusTaxBreakFk` int(10) unsigned DEFAULT '1', - `mod340` tinyint(1) NOT NULL DEFAULT '0', - `mod347` tinyint(1) NOT NULL DEFAULT '0', - `cplusTrascendency477Fk` int(10) unsigned DEFAULT '1', - `isEqualizated` tinyint(1) DEFAULT '0', + `name` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `cplusTaxBreakFk` int(10) unsigned DEFAULT 1, + `mod340` tinyint(1) NOT NULL DEFAULT 0, + `mod347` tinyint(1) NOT NULL DEFAULT 0, + `cplusTrascendency477Fk` int(10) unsigned DEFAULT 1, + `isEqualizated` tinyint(1) DEFAULT 0, PRIMARY KEY (`code`), KEY `pgc_fk1_idx` (`cplusTaxBreakFk`), KEY `pgc_fk2_idx` (`cplusTrascendency477Fk`), CONSTRAINT `pgc_fk1` FOREIGN KEY (`cplusTaxBreakFk`) REFERENCES `cplusTaxBreak` (`id`) ON UPDATE CASCADE, CONSTRAINT `pgc_fk2` FOREIGN KEY (`cplusTrascendency477Fk`) REFERENCES `cplusTrascendency477` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Plan General Contable'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Plan General Contable'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36028,13 +32976,13 @@ DROP TABLE IF EXISTS `pgcEqu`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `pgcEqu` ( - `vatFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Cuenta de IVA', - `equFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Cuenta de recargo de equivalencia', + `vatFk` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'Cuenta de IVA', + `equFk` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'Cuenta de recargo de equivalencia', PRIMARY KEY (`vatFk`,`equFk`), KEY `pgcEqu_fk2_idx` (`equFk`), CONSTRAINT `pgcEqu_fk1` FOREIGN KEY (`vatFk`) REFERENCES `pgc` (`code`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `pgcEqu_fk2` FOREIGN KEY (`equFk`) REFERENCES `pgc` (`code`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Recoge las cuentas contables con recargo de equivalencia e identifica a la que corresponde al iva y la que corresponde al recargo'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Recoge las cuentas contables con recargo de equivalencia e identifica a la que corresponde al iva y la que corresponde al recargo'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36045,12 +32993,28 @@ DROP TABLE IF EXISTS `pgcMaster`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `pgcMaster` ( - `code` varchar(10) COLLATE utf8_unicode_ci NOT NULL, - `description` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='tan solo tiene las cuentas de contaplus'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='tan solo tiene las cuentas de contaplus'; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Temporary table structure for view `phoneBook` +-- + +DROP TABLE IF EXISTS `phoneBook`; +/*!50001 DROP VIEW IF EXISTS `phoneBook`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `phoneBook` ( + `Tipo` tinyint NOT NULL, + `Id` tinyint NOT NULL, + `Cliente` tinyint NOT NULL, + `Telefono` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + -- -- Table structure for table `plantpassport` -- @@ -36061,14 +33025,14 @@ DROP TABLE IF EXISTS `plantpassport`; CREATE TABLE `plantpassport` ( `producerFk` mediumint(3) unsigned NOT NULL, `plantpassportAuthorityFk` mediumint(3) unsigned NOT NULL, - `number` varchar(25) CHARACTER SET utf8 DEFAULT NULL, - `isRequested` tinyint(2) NOT NULL DEFAULT '0', + `number` varchar(25) CHARACTER SET utf8mb3 DEFAULT NULL, + `isRequested` tinyint(2) NOT NULL DEFAULT 0, PRIMARY KEY (`producerFk`,`plantpassportAuthorityFk`), KEY `plantpassport_authority_idx` (`plantpassportAuthorityFk`), KEY `producer_id_idx` (`producerFk`), CONSTRAINT `plantpassport_authority` FOREIGN KEY (`plantpassportAuthorityFk`) REFERENCES `plantpassportAuthority` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `producer` FOREIGN KEY (`producerFk`) REFERENCES `producer` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='tiene la asignacion de cada productor con la autoridad certificadora'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='tiene la asignacion de cada productor con la autoridad certificadora'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36080,13 +33044,13 @@ DROP TABLE IF EXISTS `plantpassportAuthority`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `plantpassportAuthority` ( `id` mediumint(3) unsigned NOT NULL, - `denomination` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `denomination` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `countryFk` mediumint(8) unsigned DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `denomination_UNIQUE` (`denomination`), KEY `Pais_id_idx` (`countryFk`), CONSTRAINT `Pais_id` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='entidades certificadoras'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='entidades certificadoras'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36097,25 +33061,26 @@ DROP TABLE IF EXISTS `postCode`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `postCode` ( - `code` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, `townFk` int(11) NOT NULL, `geoFk` int(11) DEFAULT NULL, PRIMARY KEY (`code`,`townFk`), KEY `postCodeTownFk_idx` (`townFk`), CONSTRAINT `postCodeTownFk` FOREIGN KEY (`townFk`) REFERENCES `town` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`postCode_beforeInsert` - BEFORE INSERT ON `postCode` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`postCode_beforeInsert` + BEFORE INSERT ON `postCode` + FOR EACH ROW BEGIN SET NEW.geoFk = zoneGeo_new('postCode', NEW.`code`, (SELECT geoFk FROM town WHERE id = NEW.townFk)); @@ -36130,12 +33095,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `postCode_beforeUpdate` - BEFORE UPDATE ON `postCode` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`postCode_beforeUpdate` + BEFORE UPDATE ON `postCode` + FOR EACH ROW BEGIN -- IF !(OLD.geoFk <=> NEW.geoFk) THEN -- CALL zoneGeo_throwNotEditable; @@ -36151,12 +33117,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`postCode_afterUpdate` - AFTER UPDATE ON `postCode` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`postCode_afterUpdate` + AFTER UPDATE ON `postCode` + FOR EACH ROW BEGIN IF !(OLD.townFk <=> NEW.townFk) THEN CALL zoneGeo_setParent(NEW.geoFk, @@ -36178,12 +33145,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`postCode_afterDelete` - AFTER DELETE ON `postCode` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`postCode_afterDelete` + AFTER DELETE ON `postCode` + FOR EACH ROW BEGIN CALL zoneGeo_delete(OLD.geoFk); END */;; @@ -36202,25 +33170,25 @@ DROP TABLE IF EXISTS `ppe`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ppe` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `amortization` decimal(10,2) NOT NULL DEFAULT '0.00', + `amortization` decimal(10,2) NOT NULL DEFAULT 0.00, `firstAmortizated` date DEFAULT NULL, `lastAmortizated` date DEFAULT NULL, `finished` date DEFAULT NULL, - `value` decimal(10,2) NOT NULL DEFAULT '0.00', + `value` decimal(10,2) NOT NULL DEFAULT 0.00, `planFk` int(11) NOT NULL, `groupFk` int(11) DEFAULT NULL, - `account` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `endowment` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `elementAccount` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `nature` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `location` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `account` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `endowment` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `elementAccount` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `nature` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `location` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `discharged` date DEFAULT NULL, - `cause` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `photo` blob, - `isInvestmentAsset` tinyint(4) NOT NULL DEFAULT '0', + `cause` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `photo` blob DEFAULT NULL, + `isInvestmentAsset` tinyint(4) NOT NULL DEFAULT 0, `workerFk` int(10) unsigned DEFAULT NULL, - `companyFk` smallint(5) unsigned NOT NULL DEFAULT '442', - `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `companyFk` smallint(5) unsigned NOT NULL DEFAULT 442, + `description` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `ppe_fk1_idx` (`workerFk`), KEY `ppe_fk2_idx` (`planFk`), @@ -36229,6 +33197,8 @@ CREATE TABLE `ppe` ( KEY `ppe_fk5_idx` (`account`), KEY `ppe_fk6` (`endowment`), KEY `ppe_fk7` (`elementAccount`), + KEY `ppe_FK` (`location`), + CONSTRAINT `ppe_FK` FOREIGN KEY (`location`) REFERENCES `ppeLocation` (`code`) ON UPDATE CASCADE, CONSTRAINT `ppe_fk1` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `ppe_fk2` FOREIGN KEY (`planFk`) REFERENCES `ppePlan` (`id`) ON UPDATE CASCADE, CONSTRAINT `ppe_fk3` FOREIGN KEY (`groupFk`) REFERENCES `ppeGroup` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, @@ -36236,7 +33206,7 @@ CREATE TABLE `ppe` ( CONSTRAINT `ppe_fk5` FOREIGN KEY (`account`) REFERENCES `pgcMaster` (`code`) ON UPDATE CASCADE, CONSTRAINT `ppe_fk6` FOREIGN KEY (`endowment`) REFERENCES `pgcMaster` (`code`) ON UPDATE CASCADE, CONSTRAINT `ppe_fk7` FOREIGN KEY (`elementAccount`) REFERENCES `pgcMaster` (`code`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Property, plant & equipment\nInmvolizado, en español'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Property, plant & equipment\nInmvolizado, en español'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36250,13 +33220,13 @@ CREATE TABLE `ppeComponent` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ppeFk` int(11) NOT NULL, `invoiceInFk` mediumint(8) unsigned NOT NULL, - `amount` decimal(10,2) NOT NULL DEFAULT '0.00', + `amount` decimal(10,2) NOT NULL DEFAULT 0.00, PRIMARY KEY (`id`), KEY `ppeComponent_fk1_idx` (`ppeFk`), KEY `ppeComponent_fk2_idx` (`invoiceInFk`), CONSTRAINT `ppeComponent_fk1` FOREIGN KEY (`ppeFk`) REFERENCES `ppe` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ppeComponent_fk2` FOREIGN KEY (`invoiceInFk`) REFERENCES `invoiceIn` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36275,7 +33245,7 @@ CREATE TABLE `ppeDMS` ( KEY `ppeDMS_fk2_idx` (`ppeFk`), CONSTRAINT `ppeDMS_fk1` FOREIGN KEY (`dmsFk`) REFERENCES `dms` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ppeDMS_fk2` FOREIGN KEY (`ppeFk`) REFERENCES `ppe` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36287,9 +33257,23 @@ DROP TABLE IF EXISTS `ppeGroup`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ppeGroup` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Tipo de inmovilizado'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Tipo de inmovilizado'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `ppeLocation` +-- + +DROP TABLE IF EXISTS `ppeLocation`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ppeLocation` ( + `code` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `description` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36301,10 +33285,10 @@ DROP TABLE IF EXISTS `ppePlan`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ppePlan` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `rate` decimal(3,2) NOT NULL DEFAULT '1.00', - `days` int(11) NOT NULL DEFAULT '365', + `rate` decimal(3,2) NOT NULL DEFAULT 1.00, + `days` int(11) NOT NULL DEFAULT 365, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Plan de amortizacion para la tabla ppe'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Plan de amortizacion para la tabla ppe'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36322,9 +33306,9 @@ CREATE TABLE `priceFixed` ( `rate3` double NOT NULL, `started` date NOT NULL, `ended` date NOT NULL, - `bonus` double NOT NULL DEFAULT '0', - `warehouseFk` smallint(5) unsigned NOT NULL DEFAULT '0', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `bonus` double NOT NULL DEFAULT 0, + `warehouseFk` smallint(5) unsigned NOT NULL DEFAULT 0, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `id` int(11) NOT NULL AUTO_INCREMENT, `grouping` smallint(5) DEFAULT NULL, `packing` int(11) DEFAULT NULL, @@ -36337,20 +33321,21 @@ CREATE TABLE `priceFixed` ( KEY `warehouse_id` (`warehouseFk`), CONSTRAINT `priceFixed_ibfk_1` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `priceFixed_ibfk_2` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`priceFixed_beforeInsert` BEFORE INSERT ON `vn`.`priceFixed` - FOR EACH ROW - BEGIN +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`priceFixed_beforeInsert` + BEFORE INSERT ON `priceFixed` + FOR EACH ROW +BEGIN DECLARE vDated DATE; IF NEW.started > NEW.ended THEN SET vDated = NEW.started; @@ -36368,12 +33353,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`priceFixed_beforeUpdate` BEFORE UPDATE ON `vn`.`priceFixed` - FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`priceFixed_beforeUpdate` + BEFORE UPDATE ON `priceFixed` + FOR EACH ROW BEGIN DECLARE vDated DATE; IF NEW.started > NEW.ended THEN @@ -36389,87 +33375,140 @@ DELIMITER ; /*!50003 SET collation_connection = @saved_col_connection */ ; -- --- Table structure for table `printServerQueue` +-- Table structure for table `printQueue` -- -DROP TABLE IF EXISTS `printServerQueue`; +DROP TABLE IF EXISTS `printQueue`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `printServerQueue` ( +CREATE TABLE `printQueue` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `printerFk` tinyint(3) unsigned DEFAULT NULL, - `priorityFk` tinyint(3) unsigned DEFAULT NULL, - `labelReportFk` tinyint(3) unsigned DEFAULT NULL, - `statusFk` tinyint(3) unsigned DEFAULT '1', + `priorityFk` tinyint(3) unsigned NOT NULL DEFAULT 3 COMMENT '1 - high, 2 - normal, 3 - low', + `reportFk` tinyint(3) unsigned DEFAULT NULL, + `statusCode` enum('queued','error','printing') COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'queued', `started` datetime DEFAULT NULL, `finished` datetime DEFAULT NULL, - `param1` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, `workerFk` int(11) DEFAULT NULL, - `param2` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `param3` text COLLATE utf8_unicode_ci, - `error` text COLLATE utf8_unicode_ci, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `reportFk__` tinyint(3) unsigned DEFAULT NULL, + `error` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `errorNumber` int(11) DEFAULT NULL, + `created` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), - UNIQUE KEY `Id_Impresora_2` (`printerFk`,`priorityFk`,`labelReportFk`,`statusFk`,`param1`,`workerFk`,`param2`), - KEY `Id_estado` (`statusFk`), - KEY `Id_Impresora` (`printerFk`), - KEY `Id_Prioridad` (`priorityFk`), - KEY `Id_Trabajador` (`workerFk`), - KEY `printServerQueue_FK` (`labelReportFk`), - CONSTRAINT `printServerQueue_FK` FOREIGN KEY (`labelReportFk`) REFERENCES `labelReport` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `printServerQueue_ibfk_3` FOREIGN KEY (`priorityFk`) REFERENCES `queuePriority` (`id`) ON UPDATE CASCADE, - CONSTRAINT `printServerQueue_ibfk_4` FOREIGN KEY (`printerFk`) REFERENCES `vn2008`.`Impresoras__` (`Id_Impresora`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + KEY `statusCode` (`statusCode`), + KEY `printerFk` (`printerFk`), + KEY `priorityFk` (`priorityFk`), + KEY `workerFk` (`workerFk`), + KEY `printQueue_report` (`reportFk`), + CONSTRAINT `printQueue_printerFk` FOREIGN KEY (`printerFk`) REFERENCES `printer` (`id`) ON UPDATE CASCADE, + CONSTRAINT `printQueue_priorityFk` FOREIGN KEY (`priorityFk`) REFERENCES `queuePriority` (`id`) ON UPDATE CASCADE, + CONSTRAINT `printQueue_report` FOREIGN KEY (`reportFk`) REFERENCES `report` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `printServerQueue2` +-- Table structure for table `printQueueArgs` -- -DROP TABLE IF EXISTS `printServerQueue2`; +DROP TABLE IF EXISTS `printQueueArgs`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `printServerQueue2` ( +CREATE TABLE `printQueueArgs` ( + `printQueueFk` int(10) unsigned NOT NULL, + `name` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `value` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + PRIMARY KEY (`printQueueFk`,`name`), + KEY `printQueueArgs_printQueueFk_idx` (`printQueueFk`), + CONSTRAINT `printQueueArgs_printQueueFk` FOREIGN KEY (`printQueueFk`) REFERENCES `printQueue` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Argumentos que se pasarán al informe para generarlos'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `printQueueConfig` +-- + +DROP TABLE IF EXISTS `printQueueConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `printQueueConfig` ( + `networkDrive` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'X:\\', + `dmsPath` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT ' \\\\server\\dms', + `printQueueLimit` int(11) NOT NULL DEFAULT 30 COMMENT 'Número máximo de filas de la cola de impresión a mostrar al enviar correo a través del evento vn.printQueue_check' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `printServerQueue2__` +-- + +DROP TABLE IF EXISTS `printServerQueue2__`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `printServerQueue2__` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `printerFk` tinyint(3) unsigned DEFAULT NULL, `priorityFk` tinyint(3) unsigned DEFAULT NULL, - `reportFk` tinyint(3) unsigned DEFAULT '0', - `statusFk` tinyint(3) unsigned DEFAULT '1', + `reportFk` tinyint(3) unsigned DEFAULT 0, + `statusFk` tinyint(3) unsigned DEFAULT 1, `started` datetime DEFAULT NULL, `finished` datetime DEFAULT NULL, - `param1` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `param1` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `workerFk` int(11) DEFAULT NULL, - `param2` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `param3` text COLLATE utf8_unicode_ci, - `error` text COLLATE utf8_unicode_ci, + `param2` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `param3` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `error` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `Id_Impresora_2` (`printerFk`,`priorityFk`,`reportFk`,`statusFk`,`param1`,`workerFk`,`param2`), KEY `Id_estado` (`statusFk`), KEY `Id_Impresora` (`printerFk`), KEY `Id_Informe` (`reportFk`), KEY `Id_Prioridad` (`priorityFk`), - KEY `Id_Trabajador` (`workerFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + KEY `Id_Trabajador` (`workerFk`), + CONSTRAINT `printServerQueue2_FK_1` FOREIGN KEY (`printerFk`) REFERENCES `printer` (`id`), + CONSTRAINT `printServerQueue2_FK_2` FOREIGN KEY (`priorityFk`) REFERENCES `queuePriority` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Temporary table structure for view `printer__` +-- Table structure for table `printer` -- -DROP TABLE IF EXISTS `printer__`; -/*!50001 DROP VIEW IF EXISTS `printer__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `printer__` ( - `id` tinyint NOT NULL, - `path` tinyint NOT NULL, - `name` tinyint NOT NULL, - `reference` tinyint NOT NULL, - `isLabeler` tinyint NOT NULL, - `description` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; +DROP TABLE IF EXISTS `printer`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `printer` ( + `id` tinyint(3) unsigned NOT NULL, + `name` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `path` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `modelFk` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `macWifi` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ipAddress` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `reference` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isLabeler` tinyint(1) DEFAULT 0 COMMENT 'Indica si es impresora de etiquetas', + `sectorFk` int(11) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `printer_UN` (`reference`), + UNIQUE KEY `printer_UN1` (`macWifi`), + UNIQUE KEY `printer_UN2` (`name`), + KEY `printer_FK` (`modelFk`), + KEY `printer_sectorFk_idx` (`id`,`sectorFk`), + KEY `printer_sectorFk` (`sectorFk`), + CONSTRAINT `printer_FK` FOREIGN KEY (`modelFk`) REFERENCES `printerModel` (`code`) ON UPDATE CASCADE, + CONSTRAINT `printer_sectorFk` FOREIGN KEY (`sectorFk`) REFERENCES `sector` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `printerModel` +-- + +DROP TABLE IF EXISTS `printerModel`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `printerModel` ( + `code` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + PRIMARY KEY (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; -- -- Table structure for table `printingQueueCheck` @@ -36479,11 +33518,11 @@ DROP TABLE IF EXISTS `printingQueueCheck`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `printingQueueCheck` ( - `lastCount` int(11) unsigned NOT NULL DEFAULT '0', - `lastCheckSum` int(11) unsigned NOT NULL DEFAULT '0', - `isAlreadyNotified` tinyint(2) NOT NULL DEFAULT '0', + `lastCount` int(11) unsigned NOT NULL DEFAULT 0, + `lastCheckSum` int(11) unsigned NOT NULL DEFAULT 0, + `isAlreadyNotified` tinyint(2) NOT NULL DEFAULT 0, PRIMARY KEY (`lastCount`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Comprueba que el servidor de impresion no esta parado'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Comprueba que el servidor de impresion no esta parado'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36495,12 +33534,40 @@ DROP TABLE IF EXISTS `producer`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `producer` ( `id` mediumint(3) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `isVisible` tinyint(1) NOT NULL DEFAULT '1', - `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `name` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isVisible` tinyint(1) NOT NULL DEFAULT 1, + `created` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`name`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `productionConfig` +-- + +DROP TABLE IF EXISTS `productionConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `productionConfig` ( + `isPreviousPreparationRequired` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Impide que los sacadores reciban tickets que tengan productos de prep previa', + `ticketPrintedMax` int(10) unsigned NOT NULL DEFAULT 8 COMMENT 'numero máxido de tickets por carro que se ponen en impreso al pedir colección', + `ticketTrolleyMax` int(10) unsigned NOT NULL DEFAULT 4 COMMENT 'numero máximo de tickets por carro para asignar baldas en una colección', + `rookieDays` int(11) NOT NULL DEFAULT 3 COMMENT 'dias en que se cuida con especial cuidado los pedidos de un cliente por ser nuevo o recuperado', + `notBuyingMonths` int(11) NOT NULL DEFAULT 3 COMMENT 'numero de meses que han de pasar desde su ultima compra para considerar nueva la siguiente compra', + `id` int(11) NOT NULL DEFAULT 1, + `isZoneClosedByExpeditionActivated` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'activa el procedimiento vn.zone_getClosed', + `maxNotReadyCollections` int(11) NOT NULL DEFAULT 5, + `minTicketsToCloseZone` int(11) DEFAULT 15 COMMENT 'mínimo numero de tickets que deben de tener expediciones para cerrar una zona', + `movingTicketDelRoute` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Si está activo, al cambiar la fecha de un ticket desde el F11, le quita la ruta', + `defaultZone` int(11) NOT NULL DEFAULT 697, + `defautlAgencyMode` int(11) NOT NULL DEFAULT 1328 COMMENT 'SENDING', + `hasUniqueCollectionTime` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Determina si los tickets de una colección deben de tener la misma hora y minuto', + `maxCollectionWithoutUser` int(11) NOT NULL DEFAULT 1 COMMENT 'Número máximo de colecciones que pueden estar sin usuario, haciendo de caché....', + `pendingCollectionsOrder` tinyint(3) unsigned DEFAULT 8, + `pendingCollectionsAge` tinyint(3) unsigned DEFAULT 6, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Recoge los parámetros que condicionan la producción'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36543,31 +33610,12 @@ DROP TABLE IF EXISTS `professionalCategory`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `professionalCategory` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `salary` decimal(10,2) DEFAULT NULL, `salaryorSeniority` decimal(10,2) DEFAULT NULL, `year` int(2) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `profile` --- - -DROP TABLE IF EXISTS `profile`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `profile` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `personFk` int(11) DEFAULT NULL, - `profileTypeFk` int(11) NOT NULL DEFAULT '1', - PRIMARY KEY (`id`), - KEY `personFk` (`personFk`), - KEY `profileTypeFk` (`profileTypeFk`), - CONSTRAINT `profile_ibfk_1` FOREIGN KEY (`personFk`) REFERENCES `person` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `profile_ibfk_2` FOREIGN KEY (`profileTypeFk`) REFERENCES `profileType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36579,9 +33627,178 @@ DROP TABLE IF EXISTS `profileType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `profileType` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `project` +-- + +DROP TABLE IF EXISTS `project`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `project` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `name` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + `photo` blob DEFAULT NULL, + `started` date DEFAULT NULL, + `finished` date DEFAULT NULL, + `userFk` int(11) unsigned NOT NULL, + `departmentFk` int(11) DEFAULT NULL, + `companyFk` smallint(5) unsigned NOT NULL DEFAULT 442, + `location` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `amount` decimal(15,2) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `project_FK` (`userFk`), + KEY `project_FK_1` (`departmentFk`), + KEY `project_FK_2` (`companyFk`), + CONSTRAINT `project_FK` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `project_FK_1` FOREIGN KEY (`departmentFk`) REFERENCES `department` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `project_FK_2` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Tabla master de proyectos'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `projectNotes` +-- + +DROP TABLE IF EXISTS `projectNotes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `projectNotes` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `txt` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `userFk` int(10) unsigned DEFAULT NULL, + `projectFk` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `projectNotes_FK` (`projectFk`), + KEY `projectNotes_FK_1` (`userFk`), + CONSTRAINT `projectNotes_FK` FOREIGN KEY (`projectFk`) REFERENCES `project` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `projectNotes_FK_1` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Historico de notas para project'; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER projectNotes_BeforeInsert +BEFORE INSERT +ON projectNotes FOR EACH ROW +BEGIN + + IF ISNULL(NEW.userFk) THEN + + SET NEW.userFk = account.myUser_getId(); + + END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `property` +-- + +DROP TABLE IF EXISTS `property`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `property` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(250) COLLATE utf8mb3_unicode_ci NOT NULL, + `cadaster` varchar(200) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `smallholding` int(11) DEFAULT NULL, + `area` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `townFk` int(11) NOT NULL, + `registry` varchar(200) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `volume` int(11) DEFAULT NULL, + `book` int(11) DEFAULT NULL, + `page` int(11) DEFAULT NULL, + `farm` int(11) DEFAULT NULL, + `registration` int(11) DEFAULT NULL, + `value` int(11) DEFAULT NULL, + `propertyGroupFk` int(11) NOT NULL, + `companyFk` smallint(5) unsigned NOT NULL, + `photo` blob DEFAULT NULL, + `allocation` varchar(200) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `m2` decimal(10,2) DEFAULT NULL, + `tome` int(11) DEFAULT NULL, + `url` varchar(250) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `protocol` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'numero de protocolo notarial de la escritura de compra venta', + PRIMARY KEY (`id`), + KEY `property_FK` (`propertyGroupFk`), + KEY `property_FK_1` (`townFk`), + KEY `property_company` (`companyFk`), + CONSTRAINT `property_FK` FOREIGN KEY (`propertyGroupFk`) REFERENCES `propertyGroup` (`id`) ON UPDATE CASCADE, + CONSTRAINT `property_FK_1` FOREIGN KEY (`townFk`) REFERENCES `town` (`id`) ON UPDATE CASCADE, + CONSTRAINT `property_company` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `propertyDms` +-- + +DROP TABLE IF EXISTS `propertyDms`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `propertyDms` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `dmsFk` int(11) NOT NULL, + `propertyFk` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `propertyDms_FK` (`dmsFk`), + KEY `propertyDms_FK_1` (`propertyFk`), + CONSTRAINT `propertyDms_FK` FOREIGN KEY (`dmsFk`) REFERENCES `dms` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `propertyDms_FK_1` FOREIGN KEY (`propertyFk`) REFERENCES `property` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `propertyGroup` +-- + +DROP TABLE IF EXISTS `propertyGroup`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `propertyGroup` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `description` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `propertyNotes` +-- + +DROP TABLE IF EXISTS `propertyNotes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `propertyNotes` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `propertyFk` int(11) NOT NULL, + `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `note` text COLLATE utf8mb3_unicode_ci NOT NULL, + `userFk` int(10) unsigned DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `propertyNotes_FK_1` (`userFk`), + KEY `propertyNotes_FK` (`propertyFk`), + CONSTRAINT `propertyNotes_FK` FOREIGN KEY (`propertyFk`) REFERENCES `property` (`id`), + CONSTRAINT `propertyNotes_FK_1` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36593,7 +33810,7 @@ DROP TABLE IF EXISTS `province`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `province` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, `countryFk` mediumint(8) unsigned NOT NULL, `warehouseFk` smallint(6) unsigned DEFAULT NULL COMMENT 'warehouse responsable de las rutas', `zoneFk` tinyint(4) DEFAULT NULL, @@ -36608,24 +33825,25 @@ CREATE TABLE `province` ( CONSTRAINT `province_ibfk_1` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON UPDATE CASCADE, CONSTRAINT `province_zone_fk` FOREIGN KEY (`zoneFk`) REFERENCES `vn2008`.`zones` (`zone_id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `warehouse_Id` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`province_beforeInsert` - BEFORE INSERT ON `province` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`province_beforeInsert` + BEFORE INSERT ON `province` + FOR EACH ROW BEGIN - + SET NEW.geoFk = zoneGeo_new('province', NEW.`name`, (SELECT geoFk FROM autonomy WHERE id = NEW.autonomyFk)); - + SET NEW.countryFk = (SELECT a.countryFk FROM vn.autonomy a WHERE a.id = NEW.autonomyFk); END */;; @@ -36637,23 +33855,23 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER province_beforeUpdate -BEFORE UPDATE -ON province FOR EACH ROW -BEGIN - +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`province_beforeUpdate` + BEFORE UPDATE ON `province` + FOR EACH ROW +BEGIN + IF !(OLD.autonomyFk <=> NEW.autonomyFk) THEN - + SET NEW.countryFk = (SELECT a.countryFk FROM vn.autonomy a WHERE a.id = NEW.autonomyFk); END IF; - + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -36663,14 +33881,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`province_afterUpdate` - AFTER UPDATE ON `province` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`province_afterUpdate` + AFTER UPDATE ON `province` + FOR EACH ROW BEGIN IF !(OLD.autonomyFk <=> NEW.autonomyFk) THEN CALL zoneGeo_setParent(NEW.geoFk, @@ -36692,14 +33911,15 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`province_afterDelete` - AFTER DELETE ON `province` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`province_afterDelete` + AFTER DELETE ON `province` + FOR EACH ROW BEGIN - CALL zoneGeo_delete(OLD.geoFk); + CALL zoneGeo_delete(OLD.geoFk); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -36716,10 +33936,10 @@ DROP TABLE IF EXISTS `punchState`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `punchState` ( `workerFk` int(11) NOT NULL, - `state` tinyint(4) DEFAULT '1', + `state` tinyint(4) DEFAULT 1, `created` datetime DEFAULT NULL, PRIMARY KEY (`workerFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Table for storing punches that have cars with errors'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Table for storing punches that have cars with errors'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36730,10 +33950,11 @@ DROP TABLE IF EXISTS `queuePriority`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `queuePriority` ( - `id` tinyint(3) unsigned NOT NULL DEFAULT '0', - `priority` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `id` tinyint(3) unsigned NOT NULL DEFAULT 0, + `priority` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36746,41 +33967,9 @@ DROP TABLE IF EXISTS `rankBonus`; CREATE TABLE `rankBonus` ( `rank` int(11) DEFAULT NULL, `bonus` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `rankingNewBornByQuarter__` --- - -DROP TABLE IF EXISTS `rankingNewBornByQuarter__`; -/*!50001 DROP VIEW IF EXISTS `rankingNewBornByQuarter__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `rankingNewBornByQuarter__` ( - `total` tinyint NOT NULL, - `name` tinyint NOT NULL, - `time_sec` tinyint NOT NULL, - `userFk` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - --- --- Temporary table structure for view `rankingSellingByQuarter__` --- - -DROP TABLE IF EXISTS `rankingSellingByQuarter__`; -/*!50001 DROP VIEW IF EXISTS `rankingSellingByQuarter__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `rankingSellingByQuarter__` ( - `importe` tinyint NOT NULL, - `name` tinyint NOT NULL, - `userFk` tinyint NOT NULL, - `time_sec` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `rate` -- @@ -36799,7 +33988,7 @@ CREATE TABLE `rate` ( PRIMARY KEY (`id`), KEY `tarifa_warehouse` (`warehouseFk`), CONSTRAINT `tarifa_warehouse` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -36816,28 +34005,9 @@ CREATE TABLE `rateConfig` ( `rate2` int(11) DEFAULT NULL, `rate3` int(11) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `rate__` --- - -DROP TABLE IF EXISTS `rate__`; -/*!50001 DROP VIEW IF EXISTS `rate__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `rate__` ( - `id` tinyint NOT NULL, - `dated` tinyint NOT NULL, - `warehouseFk` tinyint NOT NULL, - `rate0` tinyint NOT NULL, - `rate1` tinyint NOT NULL, - `rate2` tinyint NOT NULL, - `rate3` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `receipt` -- @@ -36847,16 +34017,16 @@ DROP TABLE IF EXISTS `receipt`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `receipt` ( `Id` int(11) NOT NULL AUTO_INCREMENT, - `invoiceFk` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'nombre incorrecto, renombrar a description', - `amountPaid` decimal(10,2) NOT NULL DEFAULT '0.00', - `amountUnpaid__` decimal(10,2) NOT NULL DEFAULT '0.00', + `invoiceFk` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'nombre incorrecto, renombrar a description', + `amountPaid` decimal(10,2) NOT NULL DEFAULT 0.00, + `amountUnpaid__` decimal(10,2) NOT NULL DEFAULT 0.00, `payed` datetime DEFAULT NULL, `workerFk` int(10) unsigned DEFAULT NULL, - `bankFk` int(11) DEFAULT '0', - `clientFk` int(11) DEFAULT '0', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `companyFk` smallint(5) unsigned NOT NULL DEFAULT '442', - `isConciliate` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0', + `bankFk` int(11) DEFAULT 0, + `clientFk` int(11) DEFAULT 0, + `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `companyFk` smallint(5) unsigned NOT NULL DEFAULT 442, + `isConciliate` tinyint(1) unsigned zerofill NOT NULL DEFAULT 0, PRIMARY KEY (`Id`), KEY `Id_Banco` (`bankFk`), KEY `Id_Trabajador` (`workerFk`), @@ -36866,22 +34036,22 @@ CREATE TABLE `receipt` ( KEY `payed` (`payed`), CONSTRAINT `receiptWorkerFk` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, CONSTRAINT `receipt_ibfk_1` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON UPDATE CASCADE, - CONSTRAINT `receipt_ibfk_2` FOREIGN KEY (`bankFk`) REFERENCES `bank` (`id`) ON UPDATE CASCADE, + CONSTRAINT `receipt_ibfk_2` FOREIGN KEY (`bankFk`) REFERENCES `accounting` (`id`) ON UPDATE CASCADE, CONSTRAINT `recibo_customer_id` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER vn.receipt_beforeInsert -BEFORE INSERT -ON receipt FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`receipt_beforeInsert` + BEFORE INSERT ON `receipt` + FOR EACH ROW BEGIN DECLARE vIsAutoConciliated BOOLEAN; @@ -36890,7 +34060,7 @@ BEGIN FROM accounting a JOIN accountingType at2 ON at2.id = a.accountingTypeFk WHERE a.id = NEW.bankFk; - + SET NEW.isConciliate = vIsAutoConciliated; END IF; END */;; @@ -36902,14 +34072,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`receipt_afterInsert` AFTER INSERT ON `receipt` FOR EACH ROW - CALL clientRisk_update(NEW.clientFk, NEW.companyFk, -NEW.amountPaid) */;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`receipt_afterInsert` + AFTER INSERT ON `receipt` + FOR EACH ROW +CALL clientRisk_update(NEW.clientFk, NEW.companyFk, -NEW.amountPaid) */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; @@ -36918,13 +34090,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`receipt_beforeUpdate` BEFORE UPDATE ON `receipt` FOR EACH ROW BEGIN +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`receipt_beforeUpdate` + BEFORE UPDATE ON `receipt` + FOR EACH ROW +BEGIN CALL clientRisk_update(OLD.clientFk, OLD.companyFk, OLD.amountPaid); CALL clientRisk_update(NEW.clientFk, NEW.companyFk, -NEW.amountPaid); SET NEW.workerFk = account.myUser_getId(); @@ -36939,11 +34114,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`receipt_afterUpdate` AFTER UPDATE ON `receipt` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`receipt_afterUpdate` + AFTER UPDATE ON `receipt` + FOR EACH ROW BEGIN IF NEW.isConciliate = FALSE AND NEW.payed > OLD.payed THEN CALL mail_insert( @@ -36962,14 +34139,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`receipt_beforeDelete` BEFORE DELETE ON `receipt` FOR EACH ROW - CALL clientRisk_update(OLD.clientFk, OLD.companyFk, OLD.amountPaid) */;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`receipt_beforeDelete` + BEFORE DELETE ON `receipt` + FOR EACH ROW +CALL clientRisk_update(OLD.clientFk, OLD.companyFk, OLD.amountPaid) */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; @@ -36986,18 +34165,20 @@ DROP TABLE IF EXISTS `recipe`; CREATE TABLE `recipe` ( `id` int(11) NOT NULL AUTO_INCREMENT, `itemFk` int(11) NOT NULL COMMENT 'bouquet al que hace referencia la receta', - `name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `size` int(10) unsigned DEFAULT NULL, `originFk` tinyint(2) unsigned DEFAULT NULL, `typeFk` smallint(5) unsigned DEFAULT NULL, - `longName` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `quantity` int(11) NOT NULL DEFAULT '1', - `element` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `inkFk` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `longName` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `quantity` int(11) NOT NULL DEFAULT 1, + `element` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `inkFk` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `recipe_ix_1` (`element`), - KEY `recipe_ix_2` (`itemFk`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + KEY `recipe_ix_2` (`itemFk`), + KEY `recipe_FK` (`inkFk`), + CONSTRAINT `recipe_FK` FOREIGN KEY (`inkFk`) REFERENCES `ink` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37010,13 +34191,15 @@ DROP TABLE IF EXISTS `recipe_log`; CREATE TABLE `recipe_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `recipe_ItemFk` int(11) NOT NULL, - `element` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `element` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, `selected_ItemFk` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `recipe_log_ix1` (`recipe_ItemFk`), KEY `recipe_log_ix2` (`element`), - KEY `recipe_log_ix3` (`selected_ItemFk`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacena las decisiones tomadas al generar recetas'; + KEY `recipe_log_ix3` (`selected_ItemFk`), + CONSTRAINT `recipe_log_FK` FOREIGN KEY (`recipe_ItemFk`) REFERENCES `item` (`id`) ON UPDATE CASCADE, + CONSTRAINT `recipe_log_FK_1` FOREIGN KEY (`selected_ItemFk`) REFERENCES `item` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Almacena las decisiones tomadas al generar recetas'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37028,16 +34211,16 @@ DROP TABLE IF EXISTS `recovery`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `recovery` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `clientFk` int(11) NOT NULL DEFAULT '0', + `clientFk` int(11) NOT NULL DEFAULT 0, `started` date NOT NULL COMMENT 'Fecha a partir de la que comienza el recobro', `finished` date DEFAULT NULL COMMENT 'Fecha en la que acaba', `amount` double NOT NULL, - `period` tinyint(3) unsigned NOT NULL DEFAULT '7' COMMENT 'numero de dias que indica cada cuanto hare el recobro', + `period` tinyint(3) unsigned NOT NULL DEFAULT 7 COMMENT 'numero de dias que indica cada cuanto hare el recobro', PRIMARY KEY (`id`), KEY `cliente_idx` (`clientFk`), CONSTRAINT `cliente333` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE, CONSTRAINT `cliente_cliente` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='En esta tabla apuntaremos los acuerdos de recobro semanal a '; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='En esta tabla apuntaremos los acuerdos de recobro semanal a '; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37054,7 +34237,7 @@ CREATE TABLE `referenceCurrent` ( PRIMARY KEY (`dated`,`currencyFk`), KEY `referenceCurrent_currencyFk _idx` (`currencyFk`), CONSTRAINT `referenceCurrent_currencyFk ` FOREIGN KEY (`currencyFk`) REFERENCES `currency` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37070,7 +34253,7 @@ CREATE TABLE `referenceRate` ( `value` float unsigned NOT NULL, PRIMARY KEY (`currencyFk`,`dated`), KEY `date` (`dated`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37081,9 +34264,39 @@ DROP TABLE IF EXISTS `referenceRateConfig`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `referenceRateConfig` ( - `simulatedValue` float unsigned NOT NULL DEFAULT '1.2309', + `simulatedValue` float unsigned NOT NULL DEFAULT 1.2309, PRIMARY KEY (`simulatedValue`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `report` +-- + +DROP TABLE IF EXISTS `report`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `report` ( + `id` tinyint(3) unsigned NOT NULL, + `name` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `returnBuckets` +-- + +DROP TABLE IF EXISTS `returnBuckets`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `returnBuckets` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `freightContainerType` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, + `freightPackagingEmpty` double NOT NULL DEFAULT 0, + `freightPackagingFull` double NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37116,19 +34329,20 @@ CREATE TABLE `route` ( `vehicleFk` int(10) unsigned DEFAULT NULL, `agencyModeFk` int(11) DEFAULT NULL, `time` datetime DEFAULT NULL, - `isOk` tinyint(1) unsigned NOT NULL DEFAULT '0', - `kmStart` mediumint(9) NOT NULL, - `kmEnd` mediumint(9) NOT NULL, + `isOk` tinyint(1) unsigned NOT NULL DEFAULT 0, + `kmStart` mediumint(9) DEFAULT NULL, + `kmEnd` mediumint(9) DEFAULT NULL, `started` datetime NOT NULL, `finished` datetime NOT NULL, `gestdocFk` int(11) DEFAULT NULL, `cost` double unsigned DEFAULT NULL, `m3` decimal(10,1) unsigned DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `zoneFk` int(11) DEFAULT NULL, - `priority` int(11) NOT NULL DEFAULT '0', + `priority` int(11) NOT NULL DEFAULT 0, `invoiceInFk` mediumint(8) unsigned DEFAULT NULL, `beachFk` int(11) DEFAULT NULL, + `commissionWorkCenterFk` int(11) DEFAULT NULL COMMENT 'WorkerCenter que gestiona la ruta', PRIMARY KEY (`id`), KEY `Id_Agencia` (`agencyModeFk`), KEY `Fecha` (`created`), @@ -37137,55 +34351,33 @@ CREATE TABLE `route` ( KEY `fk_route_1_idx` (`zoneFk`), KEY `asdfasdf_idx` (`invoiceInFk`), KEY `route_idxIsOk` (`isOk`), + KEY `route_WorkCenterFk_idx` (`commissionWorkCenterFk`), CONSTRAINT `fk_route_1` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `route_WorkCenterFk` FOREIGN KEY (`commissionWorkCenterFk`) REFERENCES `workCenter` (`id`) ON UPDATE CASCADE, CONSTRAINT `route_fk5` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `route_ibfk_1` FOREIGN KEY (`gestdocFk`) REFERENCES `dms` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `route_ibfk_2` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, CONSTRAINT `route_invoiceInFk` FOREIGN KEY (`invoiceInFk`) REFERENCES `invoiceIn` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`route_AFTER_INSERT` AFTER INSERT ON `route` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`route_beforeInsert` + BEFORE INSERT ON `route` + FOR EACH ROW BEGIN - IF NEW.kmEnd < NEW.kmStart AND NEW.kmEnd <> 0 THEN - CALL util.throw ('KmEnd menor que kmStart'); - END IF; -END */;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`route_beforeUpdate` - BEFORE UPDATE ON `route` FOR EACH ROW -BEGIN - IF NEW.isOk <> FALSE AND OLD.isOk = FALSE THEN - SET NEW.m3 = ( SELECT SUM(litros)/1000 - FROM vn.saleVolume s - JOIN vn.ticket t ON s.ticketFk = t.id - WHERE t.routeFk = NEW.id); - END IF; - - IF NEW.kmEnd < NEW.kmStart AND NEW.kmEnd <> 0 THEN - CALL util.throw ('KmEnd menor que kmStart'); - END IF; + SET NEW.commissionWorkCenterFk = ( + SELECT IFNULL(b.workCenterFK, r.defaultWorkCenterFk) + FROM vn.routeConfig r + LEFT JOIN vn.business b ON b.workerFk = account.myUser_getId() + AND NEW.created BETWEEN b.started AND IFNULL(b.ended, NEW.created)); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -37197,26 +34389,76 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`route_afterUpdate` - AFTER UPDATE ON `route` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`route_beforeUpdate` + BEFORE UPDATE ON `route` + FOR EACH ROW BEGIN + DECLARE vKmMax INT; + + IF NEW.isOk <> FALSE AND OLD.isOk = FALSE THEN + SET NEW.m3 = ( SELECT SUM(litros)/1000 + FROM vn.saleVolume s + JOIN vn.ticket t ON s.ticketFk = t.id + WHERE t.routeFk = NEW.id); + END IF; + + IF NEW.kmEnd < NEW.kmStart AND NEW.kmEnd <> 0 THEN + CALL util.throw ('KmEnd menor que kmStart'); + END IF; + + SELECT kmMax INTO vKmMax + FROM routeConfig rc; + + IF ((NEW.kmEnd - NEW.kmStart) > vKmMax) AND NEW.kmEnd <> 0 THEN + CALL util.throw (CONCAT('The km can not exceed ', vKmMax)); + END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`route_afterUpdate` + AFTER UPDATE ON `route` + FOR EACH ROW +BEGIN + IF IFNULL(NEW.gestdocFk,0) <> IFNULL(OLD.gestdocFk,0) AND NEW.gestdocFk > 0 THEN -- JGF 09/09/14 cuando se añade un gestdoc a una ruta, se le asigna automagicamente a todos sus Tickets - + -- Inserta el gestdoc en todos los tickets de la ruta INSERT INTO ticketDms(ticketFk,dmsFk) SELECT id, NEW.gestdocFk FROM ticket WHERE routeFk = NEW.id ON DUPLICATE KEY UPDATE dmsFk = NEW.gestdocFk; - -- Update del firmado - UPDATE ticket t - JOIN ticketDms tg ON t.id = tg.ticketFk + -- Update del firmado + UPDATE ticket t + JOIN ticketDms tg ON t.id = tg.ticketFk SET isSigned = 1 WHERE t.routeFk = NEW.id; END IF; + + IF !(NEW.kmStart <=> OLD.kmStart) + OR !(NEW.kmEnd <=> OLD.kmEnd) + OR !(NEW.workerFk <=> OLD.workerFk) + OR !(NEW.m3 <=> OLD.m3) + OR !(NEW.agencyModeFk <=> OLD.agencyModeFk)THEN + CALL route_calcCommission(NEW.id); + END IF; + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -37233,10 +34475,36 @@ DROP TABLE IF EXISTS `routeAction`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `routeAction` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, `price` decimal(10,2) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `routeCommission` +-- + +DROP TABLE IF EXISTS `routeCommission`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `routeCommission` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `routeFk` int(10) unsigned NOT NULL, + `workCenterFk` int(11) DEFAULT NULL, + `km` decimal(5,2) DEFAULT NULL, + `m3` decimal(5,2) DEFAULT NULL, + `yearlyKm` decimal(5,2) DEFAULT NULL, + `yearlyM3` decimal(5,2) DEFAULT NULL, + `cat4m3` decimal(5,2) DEFAULT NULL, + `cat5m3` decimal(5,2) DEFAULT NULL, + `freelanceYearlyM3` decimal(5,2) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `routeCommission_routeFk_idx` (`routeFk`), + KEY `routeCommission_workCenterFk_idx` (`workCenterFk`), + CONSTRAINT `routeCommission_routeFk` FOREIGN KEY (`routeFk`) REFERENCES `route` (`id`) ON UPDATE CASCADE, + CONSTRAINT `routeCommission_workCenterFk` FOREIGN KEY (`workCenterFk`) REFERENCES `workCenter` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37257,7 +34525,7 @@ CREATE TABLE `routeComplement` ( KEY `fgn_routeActionFk_idx` (`routeActionFk`), CONSTRAINT `fgn_routeActionFk` FOREIGN KEY (`routeActionFk`) REFERENCES `routeAction` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fgn_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37287,53 +34555,72 @@ CREATE TABLE `routeConfig` ( `maxSalaryCategory2` decimal(6,2) DEFAULT NULL, `distributionM3Category1` decimal(5,2) DEFAULT NULL, `distributionM3Category2` decimal(5,2) DEFAULT NULL, - `plusCategory1Concept` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `plusCategory2Concept` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `defaultCompanyFk` smallint(5) unsigned DEFAULT '442', + `plusCategory1Concept` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `plusCategory2Concept` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `defaultCompanyFk` smallint(5) unsigned DEFAULT 442, + `kmHeavy` decimal(5,2) DEFAULT NULL COMMENT 'Comisión por kilometro vehículo pesado', + `kmLight` decimal(5,2) DEFAULT NULL COMMENT 'Comisión por kilometro vehículo ligero', + `kmYearly` decimal(5,2) DEFAULT NULL COMMENT 'Comisión por kilometro objetivo anual', + `m3Yearly` decimal(5,2) DEFAULT NULL COMMENT 'Comisión por m3 objetivo anual', + `deliveryM3Cat4` decimal(5,2) DEFAULT NULL COMMENT 'Comisión por m3 repartido Cat.IV', + `deliveryM3Cat5` decimal(5,2) DEFAULT NULL COMMENT 'Comisión por m3 repartido Cat. V', + `plusCat2Fixed` decimal(5,2) DEFAULT NULL COMMENT 'Plus fijo Cat.II vehículo ligero', + `plusCat2Variable` decimal(5,2) DEFAULT NULL COMMENT 'Plus variable Cat.II vehículo ligero', + `plusCat3Fixed` decimal(5,2) DEFAULT NULL COMMENT 'Plus fijo Cat.III vehículo pesado', + `plusCat3Variable` decimal(5,2) DEFAULT NULL COMMENT 'Plus variable Cat.III vehículo pesado', + `distributionCat4M3` decimal(5,2) DEFAULT NULL COMMENT 'Comisión por gestión de la distribución Cat IV', + `distributionCat5M3` decimal(5,2) DEFAULT NULL COMMENT 'Comisión por gestión de la distribución Cat V', + `rateCat4` decimal(5,2) DEFAULT NULL COMMENT 'Ratio aplicado a la media de venta de los repartidores para el cálculo de las comisiones de enrutadores Cat IV', + `rateCat5` decimal(5,2) DEFAULT NULL COMMENT 'Ratio aplicado a la media de venta de los repartidores para el cálculo de las comisiones de enrutadores Cat V', + `freelanceM3` decimal(5,2) DEFAULT NULL COMMENT 'Comisión para enrutadores sobre rutas de autónomos', + `freelanceMinM3` decimal(5,2) DEFAULT NULL COMMENT 'Metros mínimos para considerar las rutas de autónomos', + `mainlineDelivered` decimal(5,2) DEFAULT NULL COMMENT 'Comisión para entregas troncales', + `cutoffDated` date DEFAULT NULL COMMENT 'Fecha a partir de la cual se autoriza calcular la comisión', + `defaultWorkCenterFk` int(11) DEFAULT 9 COMMENT 'Para el cálculo de las comisiones, en caso de el creador de la ruta no tenga workCenter', + `kmMax` int(11) DEFAULT 4000 COMMENT 'Máximo número de km validos para una ruta', PRIMARY KEY (`id`), KEY `routeConfig_FK` (`defaultCompanyFk`), CONSTRAINT `routeConfig_FK` FOREIGN KEY (`defaultCompanyFk`) REFERENCES `company` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `routeGate` +-- Table structure for table `routeGate__` -- -DROP TABLE IF EXISTS `routeGate`; +DROP TABLE IF EXISTS `routeGate__`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `routeGate` ( - `deviceId` varchar(30) CHARACTER SET utf8 NOT NULL, - `displayText` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `status` set('idle','doing','done','') CHARACTER SET utf8 DEFAULT 'idle', - `gateAreaFk` int(11) NOT NULL DEFAULT '1', +CREATE TABLE `routeGate__` ( + `deviceId` varchar(30) CHARACTER SET utf8mb3 NOT NULL, + `displayText` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `status` set('idle','doing','done','') CHARACTER SET utf8mb3 DEFAULT 'idle', + `gateAreaFk` int(11) NOT NULL DEFAULT 1, `routeFk` int(11) NOT NULL, `freeTickets` int(11) DEFAULT NULL, `expeditions` int(11) DEFAULT NULL, `scanned` int(11) DEFAULT NULL, - `flag` blob, + `flag` blob DEFAULT NULL, `pallets` int(11) DEFAULT NULL, `lastScanned` datetime DEFAULT NULL, - `ready` tinyint(4) NOT NULL DEFAULT '0', + `ready` tinyint(4) NOT NULL DEFAULT 0, `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`), UNIQUE KEY `routeFk_UNIQUE` (`routeFk`), KEY `routeGate_fk1_idx` (`gateAreaFk`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`routeGateBeforeUpdate` - BEFORE UPDATE ON `routeGate` - FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`routeGateBeforeUpdate` + BEFORE UPDATE ON `routeGate__` FOR EACH ROW BEGIN IF (NOT (NEW.expeditions <=> OLD.expeditions) OR NOT (NEW.scanned <=> OLD.scanned)) @@ -37370,7 +34657,7 @@ CREATE TABLE `routeLoadWorker` ( KEY `frmWorker_idx` (`workerFk`), CONSTRAINT `frmRutas` FOREIGN KEY (`routeFk`) REFERENCES `route` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `frmWorker` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37384,20 +34671,20 @@ CREATE TABLE `routeLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `originFk` int(10) unsigned NOT NULL, `userFk` int(10) unsigned DEFAULT NULL, - `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `description` text CHARACTER SET utf8, - `changedModel` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `oldInstance` text COLLATE utf8_unicode_ci, - `newInstance` text COLLATE utf8_unicode_ci, + `action` set('insert','update','delete') COLLATE utf8mb3_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT current_timestamp(), + `description` text CHARACTER SET utf8mb3 DEFAULT NULL, + `changedModel` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `oldInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `newInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `changedModelId` int(11) DEFAULT NULL, - `changedModelValue` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `changedModelValue` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `originFk` (`originFk`), KEY `userFk` (`userFk`), CONSTRAINT `routeLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `route` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `routeLog_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37410,7 +34697,7 @@ DROP TABLE IF EXISTS `routeRecalc`; CREATE TABLE `routeRecalc` ( `routeFk` int(11) NOT NULL, PRIMARY KEY (`routeFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Queue of changed volume to recalc route volumen'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='Queue of changed volume to recalc route volumen'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37428,7 +34715,7 @@ CREATE TABLE `routeUserPercentage` ( PRIMARY KEY (`id`), KEY `routeUserPercentageFk_idx` (`workerFk`), CONSTRAINT `routeUserPercentageFk` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37440,28 +34727,51 @@ DROP TABLE IF EXISTS `routesMonitor`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `routesMonitor` ( `routeFk` int(10) unsigned NOT NULL, - `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `beachFk` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `beachFk` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `ticketPacked` int(11) DEFAULT NULL, `ticketFree` int(11) DEFAULT NULL, `ticketProduction` int(11) DEFAULT NULL, `packages` int(11) DEFAULT NULL, - `note` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `dated` date DEFAULT NULL, - `dockFk` int(11) DEFAULT NULL, + `dockFk` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `m3` decimal(10,1) DEFAULT NULL, - `priority` int(11) NOT NULL DEFAULT '0', + `priority` int(11) NOT NULL DEFAULT 0, `etd` time DEFAULT NULL, `expeditionTruckFk` int(11) DEFAULT NULL, `m3boxes` decimal(10,1) DEFAULT NULL, `bufferFk` int(11) DEFAULT NULL COMMENT 'Buffer del sorter por el que se quiere sacar esa ruta', - `isPickingAllowed` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Los tickets de esta ruta se pueden preparar', + `isPickingAllowed` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Los tickets de esta ruta se pueden preparar', PRIMARY KEY (`routeFk`), KEY `routesMonitor_FK` (`bufferFk`), - CONSTRAINT `routesMonitor_FK` FOREIGN KEY (`bufferFk`) REFERENCES `srt`.`buffer` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + KEY `routesMonitor_FK_2` (`beachFk`), + KEY `routesMonitor_FK_1` (`dockFk`), + CONSTRAINT `routesMonitor_FK` FOREIGN KEY (`bufferFk`) REFERENCES `srt`.`buffer` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `routesMonitor_FK_1` FOREIGN KEY (`dockFk`) REFERENCES `dock` (`code`) ON UPDATE CASCADE, + CONSTRAINT `routesMonitor_FK_2` FOREIGN KEY (`beachFk`) REFERENCES `beach` (`code`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Temporary table structure for view `routesReduced` +-- + +DROP TABLE IF EXISTS `routesReduced`; +/*!50001 DROP VIEW IF EXISTS `routesReduced`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `routesReduced` ( + `description` tinyint NOT NULL, + `name` tinyint NOT NULL, + `routeFk` tinyint NOT NULL, + `ETD` tinyint NOT NULL, + `bufferFk` tinyint NOT NULL, + `beachFk` tinyint NOT NULL, + `itempackingTypeFk` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + -- -- Table structure for table `sale` -- @@ -37473,39 +34783,38 @@ CREATE TABLE `sale` ( `id` int(11) NOT NULL AUTO_INCREMENT, `itemFk` int(11) NOT NULL, `ticketFk` int(11) NOT NULL, - `concept` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `quantity` decimal(10,2) NOT NULL DEFAULT '0.00', + `concept` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `quantity` decimal(10,2) NOT NULL DEFAULT 0.00, `originalQuantity` double(9,1) DEFAULT NULL, - `price` decimal(10,2) DEFAULT '0.00', - `discount` tinyint(2) unsigned NOT NULL DEFAULT '0', - `priceFixed` decimal(10,2) NOT NULL DEFAULT '0.00', - `reserved` tinyint(1) NOT NULL DEFAULT '0', - `isPicked` tinyint(1) NOT NULL DEFAULT '0', - `isPriceFixed` tinyint(1) NOT NULL DEFAULT '0', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `isAdded` tinyint(1) NOT NULL DEFAULT '0', + `price` decimal(10,2) DEFAULT 0.00, + `discount` tinyint(2) unsigned NOT NULL DEFAULT 0, + `priceFixed` decimal(10,2) NOT NULL DEFAULT 0.00, + `reserved` tinyint(1) NOT NULL DEFAULT 0, + `isPicked` tinyint(1) NOT NULL DEFAULT 0, + `isPriceFixed` tinyint(1) NOT NULL DEFAULT 0, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `isAdded` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `Id_Ticket` (`ticketFk`), KEY `itemFk_ticketFk` (`itemFk`,`ticketFk`), CONSTRAINT `movement_ticket_id` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `sale_ibfk_1` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER sale_afterInsert - AFTER INSERT - ON sale - FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`sale_afterInsert` + AFTER INSERT ON `sale` + FOR EACH ROW BEGIN - + IF (SELECT COUNT(*) from item i WHERE id = NEW.itemFk AND family = 'SER') THEN CALL util.throw('Cannot insert a service item into a ticket'); END IF; @@ -37514,22 +34823,22 @@ BEGIN CALL ticket_requestRecalc(NEW.ticketFk); IF NEW.quantity > 0 THEN - + UPDATE vn.collection c JOIN vn.ticketCollection tc ON tc.collectionFk = c.id AND tc.ticketFk = NEW.ticketFk - JOIN vn.item i ON i.id = NEW.itemFk - AND (c.itemPackingTypeFk = i.itemPackingTypeFk + JOIN vn.item i ON i.id = NEW.itemFk + AND (c.itemPackingTypeFk = i.itemPackingTypeFk OR ISNULL(c.itemPackingTypeFk)) SET c.saleTotalCount = c.saleTotalCount + 1; - + INSERT IGNORE INTO `vn`.`routeRecalc` (`routeFk`) - SELECT r.id + SELECT r.id FROM vn.sale s JOIN vn.ticket t ON t.id = s.ticketFk JOIN vn.route r ON r.id = t.routeFk - WHERE r.isOk = FALSE + WHERE r.isOk = FALSE AND s.id = NEW.id - AND r.created >= CURDATE() + AND r.created >= util.VN_CURDATE() GROUP BY r.id; END IF; @@ -37544,16 +34853,15 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER sale_beforeUpdate - BEFORE UPDATE - ON sale - FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`sale_beforeUpdate` + BEFORE UPDATE ON `sale` + FOR EACH ROW BEGIN -/* +/* IF (SELECT COUNT(*) from item i WHERE id = NEW.itemFk AND family = 'SER') THEN CALL util.throw('Cannot insert a service item into a ticket'); END IF; @@ -37564,7 +34872,7 @@ BEGIN IF old.discount > 0 AND NEW.discount = 0 THEN INSERT INTO ticketLog - SET originFk = NEW.ticketFk, userFk = account.myUser_getId(), `action` = 'insert', + SET originFk = NEW.ticketFk, userFk = account.myUser_getId(), `action` = 'insert', description = CONCAT('Cambio de descuento del item :', ' ', new.itemFk, ' de ', old.discount ,' a 0 '); END IF; END */;; @@ -37576,21 +34884,21 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `sale_afterUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`sale_afterUpdate` AFTER UPDATE ON `sale` - FOR EACH ROW + FOR EACH ROW BEGIN DECLARE vIsToSendMail BOOL; DECLARE vPickedLines INT; DECLARE vCollectionFk INT; DECLARE vUserRole VARCHAR(255); - + IF !(NEW.id <=> OLD.id) OR !(NEW.ticketFk <=> OLD.ticketFk) OR !(NEW.itemFk <=> OLD.itemFk) @@ -37613,65 +34921,69 @@ BEGIN UPDATE ticketRequest SET ticketFk = NEW.ticketFk WHERE saleFk = NEW.id; END IF; - + SELECT account.myUser_getName() INTO vUserRole; SELECT account.user_getMysqlRole(vUserRole) INTO vUserRole; IF !(OLD.quantity <=> NEW.quantity) THEN - SELECT COUNT(*) INTO vIsToSendMail + SELECT COUNT(*) INTO vIsToSendMail FROM vncontrol.inter i JOIN vn.state s ON s.id = i.state_id - WHERE s.code='PACKED' + WHERE s.code='PACKED' AND i.Id_Ticket = OLD.ticketFk AND vUserRole IN ('salesPerson', 'salesBoss') LIMIT 1; - - IF vIsToSendMail THEN + + IF vIsToSendMail THEN CALL vn.mail_insert('jefesventas@verdnatura.es', 'noreply@verdnatura.es', CONCAT('Ticket ', OLD.ticketFk ,' modificada cantidad tras encajado'), - CONCAT('Ticket ', OLD.ticketFk ,'.
', - 'Modificada la catidad de ', OLD.quantity, ' a ' , NEW.quantity, + CONCAT('Ticket ', OLD.ticketFk ,'.
', + 'Modificada la catidad de ', OLD.quantity, ' a ' , NEW.quantity, ' del artículo ', OLD.itemFk, ' tras estado encajado del ticket.
', 'Este email se ha generado automáticamente' ) ); - END IF; - END IF; + END IF; + IF (OLD.quantity > NEW.quantity) THEN + INSERT INTO saleComponent(saleFk, componentFk, value) + SELECT NEW.id, cm.id, sc.value + FROM saleComponent sc + JOIN component cd ON cd.id = sc.componentFk + JOIN component cm ON cm.code = 'mana' + WHERE saleFk = NEW.id AND cd.code = 'lastUnitsDiscount' + ON DUPLICATE KEY UPDATE value = sc.value + VALUES(value); - IF !(ABS(NEW.isPicked) <=> ABS(OLD.isPicked)) AND NEW.quantity > 0 THEN - - UPDATE vn.collection c - JOIN vn.ticketCollection tc ON tc.collectionFk = c.id AND tc.ticketFk = NEW.ticketFk - /*JOIN vn.item i ON i.id = NEW.itemFk - AND (c.itemPackingTypeFk = i.itemPackingTypeFk - OR ISNULL(c.itemPackingTypeFk))*/ - SET c.salePickedCount = c.salePickedCount + IF(NEW.isPicked != 0, 1, -1); - - - END IF; - - IF !(NEW.quantity <=> OLD.quantity) AND (NEW.quantity = 0 OR OLD.quantity = 0) THEN - - UPDATE vn.collection c - JOIN vn.ticketCollection tc ON tc.collectionFk = c.id AND tc.ticketFk = NEW.ticketFk - /*JOIN vn.item i ON i.id = NEW.itemFk - AND (c.itemPackingTypeFk = i.itemPackingTypeFk - OR ISNULL(c.itemPackingTypeFk))*/ - SET c.saleTotalCount = c.saleTotalCount + IF(OLD.quantity = 0, 1, -1); - - END IF; - - IF !(NEW.quantity <=> OLD.quantity) THEN + DELETE sc.* + FROM vn.saleComponent sc + JOIN component c ON c.id = sc.componentFk + WHERE saleFk = NEW.id AND c.code = 'lastUnitsDiscount'; + END IF; INSERT IGNORE INTO `vn`.`routeRecalc` (`routeFk`) - SELECT r.id + SELECT r.id FROM vn.sale s JOIN vn.ticket t ON t.id = s.ticketFk JOIN vn.route r ON r.id = t.routeFk - WHERE r.isOk = FALSE + WHERE r.isOk = FALSE AND s.id = NEW.id - AND r.created >= CURDATE() + AND r.created >= util.VN_CURDATE() GROUP BY r.id; END IF; + + IF !(ABS(NEW.isPicked) <=> ABS(OLD.isPicked)) AND NEW.quantity > 0 THEN + + UPDATE vn.collection c + JOIN vn.ticketCollection tc ON tc.collectionFk = c.id AND tc.ticketFk = NEW.ticketFk + SET c.salePickedCount = c.salePickedCount + IF(NEW.isPicked != 0, 1, -1); + + END IF; + + IF !(NEW.quantity <=> OLD.quantity) AND (NEW.quantity = 0 OR OLD.quantity = 0) THEN + + UPDATE vn.collection c + JOIN vn.ticketCollection tc ON tc.collectionFk = c.id AND tc.ticketFk = NEW.ticketFk + SET c.saleTotalCount = c.saleTotalCount + IF(OLD.quantity = 0, 1, -1); + + END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -37681,23 +34993,25 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`sale_BEFORE_DELETE` BEFORE DELETE ON `sale` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`sale_BEFORE_DELETE` + BEFORE DELETE ON `sale` + FOR EACH ROW BEGIN IF OLD.quantity > 0 THEN INSERT IGNORE INTO `vn`.`routeRecalc` (`routeFk`) - SELECT r.id + SELECT r.id FROM vn.sale s JOIN vn.ticket t ON t.id = s.ticketFk JOIN vn.route r ON r.id = t.routeFk - WHERE r.isOk = FALSE + WHERE r.isOk = FALSE AND s.id = OLD.id - AND r.created >= CURDATE() + AND r.created >= util.VN_CURDATE() GROUP BY r.id; END IF; END */;; @@ -37711,50 +35025,50 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `sale_afterDelete` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`sale_afterDelete` AFTER DELETE ON `sale` - FOR EACH ROW -BEGIN + FOR EACH ROW +BEGIN DECLARE vIsToSendMail BOOL; DECLARE vUserRole VARCHAR(255); - + CALL stock.log_add('sale', NULL, OLD.id); CALL ticket_requestRecalc(OLD.ticketFk); SELECT account.myUser_getName() INTO vUserRole; SELECT account.user_getMysqlRole(vUserRole) INTO vUserRole; - SELECT COUNT(*) INTO vIsToSendMail + SELECT COUNT(*) INTO vIsToSendMail FROM vncontrol.inter i JOIN vn.state s ON s.id = i.state_id - WHERE s.code='PACKED' + WHERE s.code='PACKED' AND i.Id_Ticket = OLD.ticketFk AND vUserRole IN ('salesPerson', 'salesBoss') LIMIT 1; - IF vIsToSendMail THEN + IF vIsToSendMail THEN CALL vn.mail_insert('jefesventas@verdnatura.es', 'noreply@verdnatura.es', CONCAT('Ticket ', OLD.ticketFk ,' eliminado artículo tras encajado' ), - CONCAT('Ticket ', OLD.ticketFk ,'.
', + CONCAT('Ticket ', OLD.ticketFk ,'.
', 'Eliminado artículo ', OLD.itemFk, ' tras estado encajado del ticket.
Este email se ha generado automáticamente' ) ); - END IF; - + END IF; + IF OLD.quantity > 0 THEN - + UPDATE vn.collection c JOIN vn.ticketCollection tc ON tc.collectionFk = c.id AND tc.ticketFk = OLD.ticketFk - JOIN vn.item i ON i.id = OLD.itemFk - AND (c.itemPackingTypeFk = i.itemPackingTypeFk + JOIN vn.item i ON i.id = OLD.itemFk + AND (c.itemPackingTypeFk = i.itemPackingTypeFk OR ISNULL(c.itemPackingTypeFk)) SET c.saleTotalCount = c.saleTotalCount - 1, c.salePickedCount = c.salePickedCount - ABS(OLD.isPicked); - + END IF; END */;; DELIMITER ; @@ -37773,31 +35087,30 @@ DROP TABLE IF EXISTS `saleBuy`; CREATE TABLE `saleBuy` ( `saleFk` int(11) NOT NULL, `buyFk` int(11) NOT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `workerFk` int(11) NOT NULL, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `workerFk` int(11) DEFAULT NULL, PRIMARY KEY (`saleFk`), KEY `saleBuy_FK` (`buyFk`), CONSTRAINT `saleBuy_FK` FOREIGN KEY (`buyFk`) REFERENCES `buy` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `saleBuy_FK_1` FOREIGN KEY (`saleFk`) REFERENCES `sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER BEFORE_INSERT -BEFORE INSERT -ON saleBuy FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`BEFORE_INSERT` + BEFORE INSERT ON `saleBuy` + FOR EACH ROW +BEGIN - BEGIN - SET NEW.workerFk = vn.getUser(); - + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -37807,22 +35120,22 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER saleBuy_AI -AFTER INSERT -ON saleBuy FOR EACH ROW -BEGIN +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`saleBuy_AI` + AFTER INSERT ON `saleBuy` + FOR EACH ROW +BEGIN /* Activar de nuevo cuando volvamos a vender fruta y verdura - * + * UPDATE vn.sale s SET s.concept = CONCAT(s.concept, ' Lote: ', NEW.buyFk) WHERE s.id = NEW.saleFk; -*/ +*/ END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -37839,10 +35152,10 @@ DROP TABLE IF EXISTS `saleChecked`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `saleChecked` ( `saleFk` int(11) NOT NULL, - `isChecked` int(11) NOT NULL DEFAULT '0', + `isChecked` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`saleFk`), CONSTRAINT `fk_Movimientos_checked_1` FOREIGN KEY (`saleFk`) REFERENCES `sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37859,7 +35172,7 @@ CREATE TABLE `saleCloned` ( KEY `saleOriginalFk_idx` (`saleOriginalFk`), CONSTRAINT `saleClonedFk_fk2` FOREIGN KEY (`saleClonedFk`) REFERENCES `sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `saleOriginalFk_fk1` FOREIGN KEY (`saleOriginalFk`) REFERENCES `sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37873,13 +35186,13 @@ CREATE TABLE `saleComponent` ( `saleFk` int(11) NOT NULL, `componentFk` int(11) NOT NULL, `value` double NOT NULL, - `isGreuge` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Indica si ya se ha tenido en cuenta para calcular el greuge', - `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `isGreuge` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'Indica si ya se ha tenido en cuenta para calcular el greuge', + `created` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`saleFk`,`componentFk`), KEY `fk_mov_comp_idx` (`componentFk`), CONSTRAINT `mc_fk1` FOREIGN KEY (`saleFk`) REFERENCES `sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `mc_fk2` FOREIGN KEY (`componentFk`) REFERENCES `component` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37916,10 +35229,10 @@ CREATE TABLE `saleGoal` ( `rank` smallint(6) NOT NULL, `walletWeightFrom` int(11) NOT NULL, `walletWeightTo` int(11) DEFAULT NULL, - `goal` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `goalType` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `goal` decimal(10,2) DEFAULT NULL, + `goalType` smallint(6) DEFAULT NULL COMMENT 'grado', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37931,12 +35244,12 @@ DROP TABLE IF EXISTS `saleGroup`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `saleGroup` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `userFk` int(11) DEFAULT NULL, `parkingFk` int(11) DEFAULT NULL, `sectorFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='agrupa lineas de venta'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='agrupa lineas de venta'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37948,7 +35261,7 @@ DROP TABLE IF EXISTS `saleGroupDetail`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `saleGroupDetail` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `saleFk` int(11) NOT NULL, `saleGroupFk` int(11) NOT NULL, PRIMARY KEY (`id`), @@ -37956,7 +35269,7 @@ CREATE TABLE `saleGroupDetail` ( KEY `saleGroupDetail_FK_1` (`saleGroupFk`), CONSTRAINT `saleGroupDetail_FK` FOREIGN KEY (`saleFk`) REFERENCES `sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `saleGroupDetail_FK_1` FOREIGN KEY (`saleGroupFk`) REFERENCES `saleGroup` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='relaciona sale y saleGroup'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='relaciona sale y saleGroup'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37970,12 +35283,12 @@ CREATE TABLE `saleItemShelving__` ( `id` int(11) NOT NULL AUTO_INCREMENT, `saleFk` int(11) NOT NULL, `itemShelvingFk` int(10) unsigned NOT NULL, - `quantity` int(11) NOT NULL DEFAULT '0', - `isPicked` tinyint(4) NOT NULL DEFAULT '0', - `ubication` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `quantity` int(11) NOT NULL DEFAULT 0, + `isPicked` tinyint(4) NOT NULL DEFAULT 0, + `ubication` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `saleItemShelving_fk1_idx` (`itemShelvingFk`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -37990,7 +35303,7 @@ CREATE TABLE `saleMistake` ( `saleFk` int(11) NOT NULL, `userFk` int(10) unsigned NOT NULL COMMENT 'Controlador', `typeFk` int(11) NOT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `saleMistake_fk1_idx` (`saleFk`), KEY `saleMistake_fk2_idx` (`userFk`), @@ -37998,7 +35311,7 @@ CREATE TABLE `saleMistake` ( CONSTRAINT `saleMistake_fk1` FOREIGN KEY (`saleFk`) REFERENCES `sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `saleMistake_fk2` FOREIGN KEY (`userFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `saleMistake_fk3` FOREIGN KEY (`typeFk`) REFERENCES `mistakeType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -38020,24 +35333,6 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `saleMistake_list__` --- - -DROP TABLE IF EXISTS `saleMistake_list__`; -/*!50001 DROP VIEW IF EXISTS `saleMistake_list__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `saleMistake_list__` ( - `saleFk` tinyint NOT NULL, - `sacador` tinyint NOT NULL, - `created` tinyint NOT NULL, - `revisador` tinyint NOT NULL, - `description` tinyint NOT NULL, - `controlled` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Temporary table structure for view `saleMistake_list__2` -- @@ -38068,16 +35363,29 @@ CREATE TABLE `saleParking__` ( `id` int(11) NOT NULL AUTO_INCREMENT, `saleFk` int(11) NOT NULL, `parkingFk` int(11) NOT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `userFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `saleParking_FK` (`saleFk`), KEY `saleParking_FK_1` (`parkingFk`), CONSTRAINT `saleParking_FK` FOREIGN KEY (`saleFk`) REFERENCES `sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `saleParking_FK_1` FOREIGN KEY (`parkingFk`) REFERENCES `parking` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='ubica las lineas de venta preparadas previamente'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='ubica las lineas de venta preparadas previamente'; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Temporary table structure for view `saleSaleTracking` +-- + +DROP TABLE IF EXISTS `saleSaleTracking`; +/*!50001 DROP VIEW IF EXISTS `saleSaleTracking`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE TABLE `saleSaleTracking` ( + `saleFk` tinyint NOT NULL +) ENGINE=MyISAM */; +SET character_set_client = @saved_cs_client; + -- -- Table structure for table `saleState` -- @@ -38092,7 +35400,7 @@ CREATE TABLE `saleState` ( KEY `saleState_fk2_idx` (`stateFk`), CONSTRAINT `saleState_fk1` FOREIGN KEY (`saleFk`) REFERENCES `sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `saleState_fk2` FOREIGN KEY (`stateFk`) REFERENCES `state` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='cahce para el estado de la linea'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='cahce para el estado de la linea'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -38104,15 +35412,15 @@ DROP TABLE IF EXISTS `saleTracking`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `saleTracking` ( `saleFk` int(11) NOT NULL, - `isChecked` tinyint(3) unsigned NOT NULL DEFAULT '0', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `isChecked` tinyint(3) unsigned NOT NULL DEFAULT 0, + `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `originalQuantity` double DEFAULT NULL, `workerFk` int(11) NOT NULL, `actionFk` int(11) DEFAULT NULL, `id` int(11) NOT NULL AUTO_INCREMENT, `stateFk` tinyint(3) unsigned NOT NULL, PRIMARY KEY (`id`), - UNIQUE KEY `stateFk_UNIQUE` (`stateFk`,`saleFk`), + UNIQUE KEY `saleTracking_UN` (`saleFk`,`workerFk`,`actionFk`,`stateFk`), KEY `Id_Movimiento` (`saleFk`), KEY `fgnStateFk_idx` (`stateFk`), KEY `saleTracking_idx5` (`created`), @@ -38120,18 +35428,20 @@ CREATE TABLE `saleTracking` ( CONSTRAINT `fgnStateFk` FOREIGN KEY (`stateFk`) REFERENCES `state` (`id`) ON UPDATE CASCADE, CONSTRAINT `saleTracking_FK` FOREIGN KEY (`saleFk`) REFERENCES `sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `saleTracking_FK_1` FOREIGN KEY (`actionFk`) REFERENCES `vncontrol`.`accion` (`accion_id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`saleTracking_beforeInsert` BEFORE INSERT ON `saleTracking` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`saleTracking_beforeInsert` + BEFORE INSERT ON `saleTracking` + FOR EACH ROW BEGIN IF(NEW.stateFk = 14) THEN SET NEW.actionFk = 3; @@ -38152,22 +35462,22 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER saleTracking_After_Insert -AFTER INSERT -ON saleTracking FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`saleTracking_After_Insert` + AFTER INSERT ON `saleTracking` + FOR EACH ROW BEGIN - - IF NEW.isChecked THEN - + + IF NEW.isChecked THEN + UPDATE vn.sale s - SET s.isPicked = TRUE + SET s.isPicked = TRUE WHERE s.id = NEW.saleFk AND s.isPicked = 0; - + END IF; END */;; @@ -38225,7 +35535,8 @@ SET character_set_client = utf8; `zoneFk` tinyint NOT NULL, `clientFk` tinyint NOT NULL, `isPicked` tinyint NOT NULL, - `eurosValue` tinyint NOT NULL + `eurosValue` tinyint NOT NULL, + `itemPackingTypeFk` tinyint NOT NULL ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; @@ -38268,12 +35579,12 @@ DROP TABLE IF EXISTS `salesPersonGoal`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `salesPersonGoal` ( - `salesPersonName` varchar(100) CHARACTER SET utf8 NOT NULL DEFAULT '', + `salesPersonName` varchar(100) CHARACTER SET utf8mb3 NOT NULL DEFAULT '', `month` int(11) DEFAULT NULL, `year` int(11) DEFAULT NULL, `goal` int(11) DEFAULT NULL, PRIMARY KEY (`salesPersonName`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -38328,39 +35639,6 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `salesToPrePrepare__` --- - -DROP TABLE IF EXISTS `salesToPrePrepare__`; -/*!50001 DROP VIEW IF EXISTS `salesToPrePrepare__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `salesToPrePrepare__` ( - `Id_Ticket` tinyint NOT NULL, - `Id_Movimiento` tinyint NOT NULL, - `Id_Movimiento_mark` tinyint NOT NULL, - `Id_Trabjador` tinyint NOT NULL, - `isChecked` tinyint NOT NULL, - `created` tinyint NOT NULL, - `Id_Article` tinyint NOT NULL, - `Concepte` tinyint NOT NULL, - `subName` tinyint NOT NULL, - `Cantidad` tinyint NOT NULL, - `original_quantity` tinyint NOT NULL, - `Hora` tinyint NOT NULL, - `Departure` tinyint NOT NULL, - `Minuto` tinyint NOT NULL, - `agency_id` tinyint NOT NULL, - `warehouse_id` tinyint NOT NULL, - `province_id` tinyint NOT NULL, - `picked` tinyint NOT NULL, - `trabajador` tinyint NOT NULL, - `sectorFk` tinyint NOT NULL, - `stateFk` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `sample` -- @@ -38370,14 +35648,14 @@ DROP TABLE IF EXISTS `sample`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `sample` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `code` varchar(25) CHARACTER SET utf8 NOT NULL, - `description` varchar(105) COLLATE utf8_unicode_ci NOT NULL, - `isVisible` tinyint(1) unsigned NOT NULL DEFAULT '1', - `hasCompany` tinyint(1) unsigned NOT NULL DEFAULT '0', - `hasPreview` tinyint(1) unsigned NOT NULL DEFAULT '1', - `datepickerEnabled` tinyint(1) NOT NULL DEFAULT '0', + `code` varchar(25) CHARACTER SET utf8mb3 NOT NULL, + `description` varchar(105) COLLATE utf8mb3_unicode_ci NOT NULL, + `isVisible` tinyint(1) unsigned NOT NULL DEFAULT 1, + `hasCompany` tinyint(1) unsigned NOT NULL DEFAULT 0, + `hasPreview` tinyint(1) unsigned NOT NULL DEFAULT 1, + `datepickerEnabled` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -38389,30 +35667,72 @@ DROP TABLE IF EXISTS `sector`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `sector` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `warehouseFk` smallint(6) unsigned NOT NULL DEFAULT '1', - `isPreviousPreparedByPacking` tinyint(4) NOT NULL DEFAULT '1', - `code` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `pickingPlacement` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `path` int(11) DEFAULT NULL, - `isPreviousPrepared` tinyint(1) NOT NULL DEFAULT '0', - `isPackagingArea` tinyint(1) NOT NULL DEFAULT '0', - `labelReportFk` tinyint(3) unsigned DEFAULT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `warehouseFk` smallint(6) unsigned NOT NULL DEFAULT 1, + `isPreviousPreparedByPacking` tinyint(4) NOT NULL DEFAULT 1, + `code` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `pickingPlacement__` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `path__` int(11) DEFAULT NULL, + `isPreviousPrepared` tinyint(1) NOT NULL DEFAULT 0, + `isPackagingArea` tinyint(1) NOT NULL DEFAULT 0, + `reportFk` tinyint(3) unsigned DEFAULT NULL, `sonFk` int(11) DEFAULT NULL, - `isMain` tinyint(1) NOT NULL DEFAULT '0', - `itemPackingTypeFk` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `isMain` tinyint(1) NOT NULL DEFAULT 0, + `itemPackingTypeFk` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `workerFk` int(11) DEFAULT NULL, `labelReport__` tinyint(3) DEFAULT NULL, `printerFk` tinyint(3) unsigned DEFAULT NULL, - `isHideForPickers` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'sector a ocultar a los sacadores', - `isReserve` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Sectores de reserva, como Albenfruit o Fuentes', + `isHideForPickers` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'sector a ocultar a los sacadores', + `isReserve` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Sectores de reserva, como Albenfruit o Fuentes', PRIMARY KEY (`id`,`warehouseFk`), UNIQUE KEY `code_UNIQUE` (`code`), KEY `sector_fk1_idx` (`warehouseFk`), - KEY `sector_labelReport` (`labelReportFk`), + KEY `sector_report` (`reportFk`), + KEY `sector_FK` (`sonFk`,`warehouseFk`), + CONSTRAINT `sector_FK` FOREIGN KEY (`sonFk`, `warehouseFk`) REFERENCES `sector` (`id`, `warehouseFk`) ON UPDATE CASCADE, CONSTRAINT `sector_fk1` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `sector_labelReport` FOREIGN KEY (`labelReportFk`) REFERENCES `labelReport` (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + CONSTRAINT `sector_report` FOREIGN KEY (`reportFk`) REFERENCES `report` (`id`) +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `sectorCollection` +-- + +DROP TABLE IF EXISTS `sectorCollection`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `sectorCollection` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `userFk` int(10) unsigned NOT NULL, + `sectorFk` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `sectorCollection_FK` (`userFk`), + KEY `sectorCollection_FK_2` (`sectorFk`), + CONSTRAINT `sectorCollection_FK` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `sectorCollection_FK_1` FOREIGN KEY (`sectorFk`) REFERENCES `sector` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Las lineas de preparacion de pedidos por sectores se agrupan bajo el identificador de esta tabla'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `sectorCollectionSaleGroup` +-- + +DROP TABLE IF EXISTS `sectorCollectionSaleGroup`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `sectorCollectionSaleGroup` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `sectorCollectionFk` int(11) NOT NULL, + `saleGroupFk` int(11) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `sectorCollectionSaleGroup_UN` (`sectorCollectionFk`,`saleGroupFk`), + KEY `sectorCollectionSaleGroup_FK_1` (`saleGroupFk`), + CONSTRAINT `sectorCollectionSaleGroup_FK` FOREIGN KEY (`sectorCollectionFk`) REFERENCES `sectorCollection` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `sectorCollectionSaleGroup_FK_1` FOREIGN KEY (`saleGroupFk`) REFERENCES `saleGroup` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Relaciona las lineas de venta con la coleccion del sector'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -38425,16 +35745,17 @@ DROP TABLE IF EXISTS `sectorProductivity`; CREATE TABLE `sectorProductivity` ( `id` int(11) NOT NULL AUTO_INCREMENT, `workerFk` int(11) DEFAULT NULL, - `firstName` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `lastName` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `sector` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `firstName` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `lastName` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `sector` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `ticketCount` int(11) DEFAULT NULL, `saleCount` int(11) DEFAULT NULL, + `error` int(11) DEFAULT NULL, `volume` decimal(10,6) DEFAULT NULL, `hourWorked` decimal(10,2) DEFAULT NULL, `dated` date DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -38450,31 +35771,33 @@ CREATE TABLE `sharingCart` ( `started` date NOT NULL, `ended` date NOT NULL, `workerSubstitute` int(10) unsigned NOT NULL, - `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `created` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `workerFk_UNIQUE` (`workerFk`,`started`,`ended`,`workerSubstitute`), KEY `Suplent` (`workerSubstitute`), CONSTRAINT `Suplent_key` FOREIGN KEY (`workerSubstitute`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, CONSTRAINT `Trabajador_key` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`sharingCart_beforeInsert` BEFORE INSERT ON `sharingCart` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`sharingCart_beforeInsert` + BEFORE INSERT ON `sharingCart` + FOR EACH ROW BEGIN IF NEW.workerFk = NEW.workerSubstitute THEN CALL util.throw ('worker and workerSubstitute must be different'); ELSE - INSERT IGNORE INTO sharingCartDaily (ownerFk, substituteFk, dated) - SELECT NEW.workerFk, NEW.workerSubstitute, dated - FROM time + INSERT IGNORE INTO sharingCartDaily (ownerFk, substituteFk, dated) + SELECT NEW.workerFk, NEW.workerSubstitute, dated + FROM time WHERE dated BETWEEN NEW.started AND NEW.ended; END IF; END */;; @@ -38488,23 +35811,25 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`sharingCart_beforeUpdate` BEFORE UPDATE ON `sharingCart` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`sharingCart_beforeUpdate` + BEFORE UPDATE ON `sharingCart` + FOR EACH ROW BEGIN IF NEW.workerFk = NEW.workerSubstitute THEN CALL util.throw ('worker and workerSubstitute must be different'); ELSE - DELETE sc FROM sharingCartDaily sc - WHERE sc.dated BETWEEN OLD.started AND OLD.ended AND - sc.ownerFk = OLD.workerFk AND + DELETE sc FROM sharingCartDaily sc + WHERE sc.dated BETWEEN OLD.started AND OLD.ended AND + sc.ownerFk = OLD.workerFk AND sc.substituteFk = OLD.workerSubstitute; - - INSERT IGNORE INTO sharingCartDaily (ownerFk, substituteFk, dated) - SELECT NEW.workerFk, NEW.workerSubstitute, dated - FROM time + + INSERT IGNORE INTO sharingCartDaily (ownerFk, substituteFk, dated) + SELECT NEW.workerFk, NEW.workerSubstitute, dated + FROM time WHERE dated BETWEEN NEW.started AND NEW.ended; END IF; @@ -38519,15 +35844,17 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`sharingCart_beforeDelete` BEFORE DELETE ON `sharingCart` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`sharingCart_beforeDelete` + BEFORE DELETE ON `sharingCart` + FOR EACH ROW BEGIN - DELETE sc FROM sharingCartDaily sc - WHERE sc.dated BETWEEN OLD.started AND OLD.ended AND - sc.ownerFk = OLD.workerFk AND + DELETE sc FROM sharingCartDaily sc + WHERE sc.dated BETWEEN OLD.started AND OLD.ended AND + sc.ownerFk = OLD.workerFk AND sc.substituteFk = OLD.workerSubstitute; END */;; DELIMITER ; @@ -38548,13 +35875,13 @@ CREATE TABLE `sharingCartDaily` ( `ownerFk` int(10) unsigned NOT NULL, `substituteFk` int(10) unsigned NOT NULL, `dated` date NOT NULL, - `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `created` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `sharingCartDailyWorker_idx` (`ownerFk`,`dated`), KEY `sharingCartDailySubstitute_idx` (`substituteFk`), CONSTRAINT `sharingCartDailySubstitute` FOREIGN KEY (`substituteFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `sharingCartDailyWorker` FOREIGN KEY (`ownerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='para calcular las comisiones de las sustituciones de los comerciales'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='para calcular las comisiones de las sustituciones de los comerciales'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -38575,21 +35902,23 @@ CREATE TABLE `sharingClient` ( KEY `Client` (`clientFk`), CONSTRAINT `Clients_key` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE, CONSTRAINT `Trabajadores_key` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`sharingClient_beforeInsert` BEFORE INSERT ON `sharingClient` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`sharingClient_beforeInsert` + BEFORE INSERT ON `sharingClient` + FOR EACH ROW BEGIN - SET NEW.ended = GREATEST(CURDATE(),NEW.ended); - SET NEW.started = GREATEST(CURDATE(),NEW.started); + SET NEW.ended = GREATEST(util.VN_CURDATE(),NEW.ended); + SET NEW.started = GREATEST(util.VN_CURDATE(),NEW.started); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -38601,14 +35930,16 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`sharingClient_beforeUpdate` BEFORE UPDATE ON `sharingClient` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`sharingClient_beforeUpdate` + BEFORE UPDATE ON `sharingClient` + FOR EACH ROW BEGIN - SET NEW.ended = GREATEST(CURDATE(),NEW.ended); - SET NEW.started = GREATEST(CURDATE(),NEW.started); + SET NEW.ended = GREATEST(util.VN_CURDATE(),NEW.ended); + SET NEW.started = GREATEST(util.VN_CURDATE(),NEW.started); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -38624,37 +35955,41 @@ DROP TABLE IF EXISTS `shelving`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `shelving` ( - `code` varchar(10) CHARACTER SET utf8 NOT NULL, + `id` int(11) NOT NULL AUTO_INCREMENT, + `code` varchar(10) CHARACTER SET utf8mb3 NOT NULL, `parkingFk` int(11) DEFAULT NULL, - `isPrinted` tinyint(4) NOT NULL DEFAULT '0', - `priority` int(11) NOT NULL DEFAULT '0', - `parked` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `isPrinted` tinyint(4) NOT NULL DEFAULT 0, + `priority` int(11) NOT NULL DEFAULT 0, + `parked` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `userFk` int(10) unsigned DEFAULT NULL, - `isSpam` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'señala las matrículas con producto que se puede llevar a la reserva', - PRIMARY KEY (`code`), + `isSpam` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'señala las matrículas con producto que se puede llevar a la reserva', + `isRecyclable` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'las matrículas marcadas como reciclables se liberan cada noche desde vn.shelving_clean para poder volver a utilizarlas', + PRIMARY KEY (`id`), + UNIQUE KEY `shelving_UN` (`code`), KEY `shelving_fk1_idx` (`parkingFk`), KEY `shelving_fk2_idx` (`userFk`), CONSTRAINT `shelving_fk1` FOREIGN KEY (`parkingFk`) REFERENCES `parking` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `shelving_fk2` FOREIGN KEY (`userFk`) REFERENCES `worker` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Tabla usada para localizar el carro en el parking del altillo'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Tabla usada para localizar el carro en el parking del altillo'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER shelving_beforeInsert BEFORE INSERT ON shelving FOR EACH ROW - +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`shelving_beforeInsert` + BEFORE INSERT ON `shelving` + FOR EACH ROW BEGIN IF NEW.code = "" THEN - + CALL util.throw('NOT_EMPTY_CODE_ALLOWED'); - + END IF; END */;; @@ -38668,30 +36003,21 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`shelving_BEFORE_UPDATE` BEFORE UPDATE ON `shelving` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`shelving_BEFORE_UPDATE` + BEFORE UPDATE ON `shelving` + FOR EACH ROW BEGIN - IF OLD.parkingFk != NEW.parkingFk THEN - - UPDATE item i - JOIN itemShelving ish ON ish.itemFk = i.id - JOIN shelving sh ON sh.code = ish.shelvingFk - JOIN parking p ON p.id = sh.parkingFk - SET i.sectorFk = p.sectorFk - WHERE sh.`code` = OLD.`code`; - - END IF; - IF NEW.code = "" THEN - + CALL util.throw('NOT_EMPTY_CODE_ALLOWED'); - + END IF; - + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -38708,22 +36034,21 @@ DROP TABLE IF EXISTS `shelvingLog`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `shelvingLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `originFk` varchar(10) CHARACTER SET utf8 NOT NULL, + `originFk` int(11) NOT NULL, `userFk` int(10) unsigned DEFAULT NULL, - `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `description` text CHARACTER SET utf8, - `changedModel` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `oldInstance` text COLLATE utf8_unicode_ci, - `newInstance` text COLLATE utf8_unicode_ci, + `action` set('insert','update','delete') COLLATE utf8mb3_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT current_timestamp(), + `description` text CHARACTER SET utf8mb3 DEFAULT NULL, + `changedModel` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `oldInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `newInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `changedModelId` int(11) DEFAULT NULL, - `changedModelValue` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `changedModelValue` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `userFk` (`userFk`), KEY `originFk` (`originFk`), - CONSTRAINT `shelvingLog_FK_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `shelving` (`code`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `shelvingLog_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -38739,8 +36064,8 @@ CREATE TABLE `silexACL` ( `method` varchar(50) NOT NULL, `role` varchar(20) NOT NULL, PRIMARY KEY (`id`), - UNIQUE KEY `module_UNIQUE` (`module`,`method`,`role`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; + UNIQUE KEY `module_UNIQUE` (`module`,`method`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -38755,9 +36080,9 @@ CREATE TABLE `sinister` ( `supplierFk` int(11) NOT NULL, `clientFk` int(11) NOT NULL, `amount` decimal(10,2) NOT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `insureRate` decimal(3,2) NOT NULL DEFAULT '0.75', - `isBooked` tinyint(4) NOT NULL DEFAULT '0', + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `insureRate` decimal(3,2) NOT NULL DEFAULT 0.75, + `isBooked` tinyint(4) NOT NULL DEFAULT 0, `workerFk` int(10) unsigned NOT NULL, `companyFk` smallint(5) unsigned NOT NULL, PRIMARY KEY (`id`), @@ -38769,7 +36094,7 @@ CREATE TABLE `sinister` ( CONSTRAINT `sinister_fk2` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `sinister_fk3` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, CONSTRAINT `sinister_fk4` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Impago de cliente asegurado'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Impago de cliente asegurado'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -38782,10 +36107,10 @@ DROP TABLE IF EXISTS `sinisterDetail`; CREATE TABLE `sinisterDetail` ( `id` int(11) NOT NULL, `sinisterFk` int(11) NOT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `amountIn` decimal(10,2) DEFAULT NULL, `amountOut` decimal(10,2) DEFAULT NULL, - `isConciliated` tinyint(1) NOT NULL DEFAULT '0', + `isConciliated` tinyint(1) NOT NULL DEFAULT 0, `workerFk` int(10) unsigned NOT NULL, `bankFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), @@ -38794,8 +36119,8 @@ CREATE TABLE `sinisterDetail` ( KEY `sinisterDetail_fk3_idx` (`bankFk`), CONSTRAINT `sinisterDetail_fk1` FOREIGN KEY (`sinisterFk`) REFERENCES `sinister` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `sinisterDetail_fk2` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, - CONSTRAINT `sinisterDetail_fk3` FOREIGN KEY (`bankFk`) REFERENCES `bank` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + CONSTRAINT `sinisterDetail_fk3` FOREIGN KEY (`bankFk`) REFERENCES `accounting` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -38806,13 +36131,13 @@ DROP TABLE IF EXISTS `smartTag`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `smartTag` ( - `code` varchar(12) CHARACTER SET utf8 NOT NULL, - `shelvingFk` varchar(10) CHARACTER SET utf8 DEFAULT NULL, + `code` varchar(12) CHARACTER SET utf8mb3 NOT NULL, + `shelvingFk` varchar(10) CHARACTER SET utf8mb3 DEFAULT NULL, `level` int(11) DEFAULT NULL, PRIMARY KEY (`code`), KEY `smartTag_shelving_fk` (`shelvingFk`), - CONSTRAINT `smartTag_shelving_fk` FOREIGN KEY (`shelvingFk`) REFERENCES `shelving` (`code`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + CONSTRAINT `smartTag_FK` FOREIGN KEY (`shelvingFk`) REFERENCES `shelving` (`code`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -38824,16 +36149,18 @@ DROP TABLE IF EXISTS `sms`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `sms` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, - `senderFk` int(11) NOT NULL, - `destinationFk` int(11) DEFAULT NULL, - `sender` varchar(15) CHARACTER SET utf8 NOT NULL DEFAULT '693474205', - `destination` varchar(15) CHARACTER SET utf8 NOT NULL, - `message` varchar(160) COLLATE utf8_unicode_ci NOT NULL, - `statusCode` smallint(9) NOT NULL DEFAULT '0', - `status` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + `senderFk` int(10) unsigned NOT NULL, + `destinationFk__` int(11) DEFAULT NULL, + `sender` varchar(15) CHARACTER SET utf8mb3 NOT NULL DEFAULT '693474205', + `destination` varchar(15) CHARACTER SET utf8mb3 NOT NULL, + `message` varchar(160) COLLATE utf8mb3_unicode_ci NOT NULL, + `statusCode` smallint(9) DEFAULT 0, + `status` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT 'OK', + `created` timestamp NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + KEY `sms_FK` (`senderFk`), + CONSTRAINT `sms_FK` FOREIGN KEY (`senderFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -38845,12 +36172,13 @@ DROP TABLE IF EXISTS `smsConfig`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `smsConfig` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `uri` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `user` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `password` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `title` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `uri` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `user__` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `password__` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `title` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `apiKey` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='SMS configuration parameters'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='SMS configuration parameters'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -38868,22 +36196,23 @@ CREATE TABLE `solunionCAP` ( PRIMARY KEY (`creditInsurance`,`dateStart`), KEY `solunionCAPdateLeavingIdx` (`dateLeaving`), CONSTRAINT `solunionCAP` FOREIGN KEY (`creditInsurance`) REFERENCES `creditInsurance` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`solunionCAP_AFTER_INSERT` AFTER INSERT ON `solunionCAP` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`solunionCAP_AFTER_INSERT` + AFTER INSERT ON `solunionCAP` + FOR EACH ROW BEGIN UPDATE vn2008.Clientes c - JOIN creditClassification cc ON c.Id_Cliente = cc.client + JOIN creditClassification cc ON c.Id_Cliente = cc.client JOIN creditInsurance ci ON ci.creditClassification = cc.id SET creditInsurance = ci.credit * 2 WHERE ci.id = NEW.creditInsurance; END */;; @@ -38892,27 +36221,27 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`solunionCAP_AFTER_UPDATE` AFTER UPDATE ON `solunionCAP` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`solunionCAP_AFTER_UPDATE` + AFTER UPDATE ON `solunionCAP` + FOR EACH ROW BEGIN IF NEW.dateLeaving IS NOT NULL THEN UPDATE vn2008.Clientes c - JOIN creditClassification cc ON c.Id_Cliente = cc.client + JOIN creditClassification cc ON c.Id_Cliente = cc.client JOIN creditInsurance ci ON ci.creditClassification = cc.id SET creditInsurance = ci.credit WHERE ci.id = OLD.creditInsurance; ELSE UPDATE vn2008.Clientes c - JOIN creditClassification cc ON c.Id_Cliente = cc.client + JOIN creditClassification cc ON c.Id_Cliente = cc.client JOIN creditInsurance ci ON ci.creditClassification = cc.id SET creditInsurance = ci.credit * 2 WHERE ci.id = OLD.creditInsurance; END IF; @@ -38922,21 +36251,21 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`solunionCAP_BEFORE_DELETE` BEFORE DELETE ON `solunionCAP` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`solunionCAP_BEFORE_DELETE` + BEFORE DELETE ON `solunionCAP` + FOR EACH ROW BEGIN UPDATE vn2008.Clientes c - JOIN creditClassification cc ON c.Id_Cliente = cc.client + JOIN creditClassification cc ON c.Id_Cliente = cc.client JOIN creditInsurance ci ON ci.creditClassification = cc.id SET creditInsurance = ci.credit WHERE ci.id = OLD.creditInsurance; END */;; @@ -38945,7 +36274,6 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -- -- Table structure for table `sorter` @@ -38955,23 +36283,40 @@ DROP TABLE IF EXISTS `sorter`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `sorter` ( - `id` int(11) NOT NULL DEFAULT '0', + `id` int(11) NOT NULL DEFAULT 0, `created` datetime NOT NULL, `routeFk` int(10) unsigned NOT NULL, `ticketFk` int(10) NOT NULL, - `isBox` int(11) DEFAULT '1', + `freightItemFk` int(11) DEFAULT 1, `itemFk` int(11) DEFAULT NULL, - `width` decimal(10,2) DEFAULT '0.00', - `depth` decimal(10,2) DEFAULT '0.00', - `height` decimal(10,2) DEFAULT '0.00', - `warehouseFk` smallint(6) unsigned NOT NULL DEFAULT '1', - `weight` decimal(5,2) NOT NULL DEFAULT '0.00', - `buildingOrder` int(5) NOT NULL DEFAULT '0', + `width` decimal(10,2) DEFAULT 0.00, + `depth` decimal(10,2) DEFAULT 0.00, + `height` decimal(10,2) DEFAULT 0.00, + `warehouseFk` smallint(6) unsigned NOT NULL DEFAULT 1, + `weight` decimal(5,2) NOT NULL DEFAULT 0.00, + `buildingOrder` int(5) NOT NULL DEFAULT 0, `ETD` time NOT NULL DEFAULT '23:59:00', `palletOrder` int(5) DEFAULT NULL, - `lungGrow` int(11) DEFAULT '0', + `lungGrow` int(11) DEFAULT 0, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `specialLabels` +-- + +DROP TABLE IF EXISTS `specialLabels`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `specialLabels` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `description` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + `reportName` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + `isVisible` tinyint(1) NOT NULL DEFAULT 0, + `image` blob DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -38983,18 +36328,16 @@ DROP TABLE IF EXISTS `specialPrice`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `specialPrice` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `clientFk` int(11) NOT NULL DEFAULT '0', - `itemFk` int(11) NOT NULL DEFAULT '0', - `value` double NOT NULL DEFAULT '0', + `clientFk` int(11) NOT NULL DEFAULT 0, + `itemFk` int(11) NOT NULL DEFAULT 0, + `value` double NOT NULL DEFAULT 0, PRIMARY KEY (`id`), UNIQUE KEY `Id_Cliente_2` (`clientFk`,`itemFk`), KEY `Id_Article` (`itemFk`), KEY `Id_Cliente` (`clientFk`), CONSTRAINT `sp_article_id` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON UPDATE CASCADE, - CONSTRAINT `sp_customer_id` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE, - CONSTRAINT `{01A99AF1-3D3F-4B15-AC0C-C7A834F319A3}` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `{EE4ADEF6-0AC6-401F-B7C4-D797972FC065}` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + CONSTRAINT `sp_customer_id` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39006,21 +36349,23 @@ DROP TABLE IF EXISTS `specie`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `specie` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `specie_UN` (`name`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`specie_BEFORE_INSERT` BEFORE INSERT ON `specie` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`specie_BEFORE_INSERT` + BEFORE INSERT ON `specie` + FOR EACH ROW BEGIN SET NEW.name = LCASE(NEW.name); END */;; @@ -39032,13 +36377,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`specie_BEFORE_UPDATE` BEFORE UPDATE ON `specie` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`specie_BEFORE_UPDATE` + BEFORE UPDATE ON `specie` + FOR EACH ROW BEGIN SET NEW.name = LCASE(NEW.name); END */;; @@ -39060,7 +36407,7 @@ CREATE TABLE `specieGeoInvasive` ( `genusFk` int(11) NOT NULL, `specieFk` int(11) NOT NULL, `zoneGeofk` int(11) NOT NULL, - `isForbidden` tinyint(1) NOT NULL DEFAULT '1', + `isForbidden` tinyint(1) NOT NULL DEFAULT 1, PRIMARY KEY (`id`), KEY `specieGeoInvasive_FK` (`genusFk`), KEY `specieGeoInvasive_FK_1` (`specieFk`), @@ -39068,7 +36415,29 @@ CREATE TABLE `specieGeoInvasive` ( CONSTRAINT `specieGeoInvasive_FK` FOREIGN KEY (`genusFk`) REFERENCES `genus` (`id`) ON UPDATE CASCADE, CONSTRAINT `specieGeoInvasive_FK_1` FOREIGN KEY (`specieFk`) REFERENCES `specie` (`id`) ON UPDATE CASCADE, CONSTRAINT `specieGeoInvasive_FK_2` FOREIGN KEY (`zoneGeofk`) REFERENCES `zoneGeo` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Esta tabla recoge las prohibiciones de comerciar con especies invasoras de acuerdo con el Catálogo de Especies Exóticas Invasoras publicado por el Estado Español'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Esta tabla recoge las prohibiciones de comerciar con especies invasoras de acuerdo con el Catálogo de Especies Exóticas Invasoras publicado por el Estado Español'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `splitFilter` +-- + +DROP TABLE IF EXISTS `splitFilter`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `splitFilter` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `autonomyFk` int(11) DEFAULT NULL, + `clientFk` int(11) DEFAULT NULL, + `nickname` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `splitFilter_UN` (`autonomyFk`), + UNIQUE KEY `splitFilter_UN1` (`clientFk`), + KEY `splitFilter_FK` (`autonomyFk`), + KEY `splitFilter_FK_1` (`clientFk`), + CONSTRAINT `splitFilter_FK` FOREIGN KEY (`autonomyFk`) REFERENCES `autonomy` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `splitFilter_FK_1` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='define los clientes que tienen split y el nombre a mostrar en la etiqueta'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39081,14 +36450,14 @@ DROP TABLE IF EXISTS `starredModule`; CREATE TABLE `starredModule` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `workerFk` int(10) unsigned NOT NULL, - `moduleFk` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `moduleFk` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, `position` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `starred_workerFk` (`workerFk`), KEY `starred_moduleFk` (`moduleFk`), CONSTRAINT `starred_moduleFk` FOREIGN KEY (`moduleFk`) REFERENCES `salix`.`module` (`code`) ON UPDATE CASCADE, CONSTRAINT `starred_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39100,26 +36469,29 @@ DROP TABLE IF EXISTS `state`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `state` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, `order` tinyint(3) unsigned DEFAULT NULL, - `alertLevel` int(11) NOT NULL DEFAULT '0', - `code` varchar(45) CHARACTER SET utf8 NOT NULL, + `alertLevel` int(11) NOT NULL DEFAULT 0, + `code` varchar(45) CHARACTER SET utf8mb3 NOT NULL, `sectorProdPriority` tinyint(3) DEFAULT NULL, - `nextStateFk` tinyint(4) NOT NULL COMMENT 'Estado al que tiene que cambiar el ticket despues de preparacion previa', - `isPreviousPreparable` tinyint(1) NOT NULL DEFAULT '0', - `isPicked` tinyint(1) NOT NULL DEFAULT '0', - `isPreparable` tinyint(1) NOT NULL DEFAULT '0', - `semaphore` int(11) NOT NULL DEFAULT '0', - `isPrintable` tinyint(4) NOT NULL DEFAULT '0', - `isOK` tinyint(4) NOT NULL DEFAULT '0', - `graphCategory` int(11) NOT NULL DEFAULT '0', - `isNotValidated` tinyint(1) DEFAULT '0' COMMENT 'Los tienen que ser validados por un comercial para prepararse', + `nextStateFk` tinyint(3) unsigned NOT NULL COMMENT 'Estado al que tiene que cambiar el ticket despues de preparacion previa', + `isPreviousPreparable` tinyint(1) NOT NULL DEFAULT 0, + `isPicked` tinyint(1) NOT NULL DEFAULT 0, + `isPreparable` tinyint(1) NOT NULL DEFAULT 0, + `semaphore` int(11) NOT NULL DEFAULT 0, + `isPrintable` tinyint(4) NOT NULL DEFAULT 0, + `isOK` tinyint(4) NOT NULL DEFAULT 0, + `graphCategory` int(11) NOT NULL DEFAULT 0, + `isNotValidated` tinyint(1) DEFAULT 0 COMMENT 'Los tienen que ser validados por un comercial para prepararse', + `classColor` varchar(12) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code_UNIQUE` (`code`), KEY `state_id3` (`semaphore`), KEY `alertLevel` (`alertLevel`), + KEY `state_FK` (`nextStateFk`), + CONSTRAINT `state_FK` FOREIGN KEY (`nextStateFk`) REFERENCES `state` (`id`) ON UPDATE CASCADE, CONSTRAINT `state_ibfk_1` FOREIGN KEY (`alertLevel`) REFERENCES `alertLevel` (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39134,14 +36506,14 @@ CREATE TABLE `stockBuyed` ( `user` int(10) unsigned DEFAULT NULL, `buyed` decimal(10,2) DEFAULT NULL, `date` date DEFAULT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `creationDate` timestamp NULL DEFAULT current_timestamp(), `reserved` decimal(10,2) DEFAULT NULL, `requested` decimal(10,2) DEFAULT NULL, + `description` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), - UNIQUE KEY `date_UNIQUE` (`date`,`user`), KEY `stockBuyed_user_idx` (`user`), CONSTRAINT `stockBuyedUserFk` FOREIGN KEY (`user`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39154,9 +36526,9 @@ DROP TABLE IF EXISTS `stowaway`; CREATE TABLE `stowaway` ( `id` int(11) NOT NULL COMMENT 'ticket pequeño', `shipFk` int(11) NOT NULL COMMENT 'ticket grande', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Tickets polizones y sus naves de embarque'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Tickets polizones y sus naves de embarque'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39168,37 +36540,37 @@ DROP TABLE IF EXISTS `supplier`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `supplier` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, `account` varchar(10) DEFAULT NULL, - `street` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, - `city` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, + `street` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `city` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, `provinceFk` smallint(5) unsigned DEFAULT NULL, `countryFk` mediumint(8) unsigned DEFAULT NULL, - `nif` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, - `isOfficial` tinyint(1) NOT NULL DEFAULT '1', - `isFarmer` tinyint(1) NOT NULL DEFAULT '0', - `retAccount` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, - `phone` varchar(16) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, - `Fax__` varchar(16) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, - `commission` float NOT NULL DEFAULT '0', - `nickname` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, + `nif` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isOfficial` tinyint(1) NOT NULL DEFAULT 1, + `isFarmer` tinyint(1) NOT NULL DEFAULT 0, + `retAccount` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `phone` varchar(16) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `Fax__` varchar(16) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `commission` float NOT NULL DEFAULT 0, + `nickname` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, `payMethodFk` tinyint(3) unsigned NOT NULL, `payDay` tinyint(4) unsigned DEFAULT NULL, - `payDemFk` tinyint(3) unsigned NOT NULL DEFAULT '7', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `isSerious` tinyint(1) unsigned NOT NULL DEFAULT '1', - `note` text CHARACTER SET utf8 COLLATE utf8_unicode_ci, + `payDemFk` tinyint(3) unsigned NOT NULL DEFAULT 7, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `isSerious` tinyint(1) unsigned NOT NULL DEFAULT 1, + `note` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, `postcodeFk` int(11) unsigned DEFAULT NULL, - `postCode` char(5) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, - `isActive` tinyint(4) DEFAULT '1', + `postCode` char(8) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isActive` tinyint(4) NOT NULL DEFAULT 1, `taxTypeSageFk` smallint(6) DEFAULT NULL COMMENT 'Tipo de IVA SAGE', `withholdingSageFk` smallint(6) DEFAULT NULL COMMENT 'Tipos de retención SAGE', `transactionTypeSageFk` tinyint(4) DEFAULT NULL COMMENT 'Ti po de transacción SAGE', - `isTrucker` tinyint(1) NOT NULL DEFAULT '0', + `isTrucker` tinyint(1) NOT NULL DEFAULT 0, `workerFk` int(10) unsigned DEFAULT NULL COMMENT 'Responsible for approving invoices', `supplierActivityFk` varchar(45) NOT NULL DEFAULT 'flowersPlants', `healthRegister` varchar(45) DEFAULT NULL, - `isPayMethodChecked` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Se ha validado la forma de pago', + `isPayMethodChecked` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'Se ha validado la forma de pago', PRIMARY KEY (`id`), UNIQUE KEY `cuenta` (`account`), UNIQUE KEY `NIF` (`nif`), @@ -39221,8 +36593,44 @@ CREATE TABLE `supplier` ( CONSTRAINT `supplier_withholdingFk` FOREIGN KEY (`withholdingSageFk`) REFERENCES `sage`.`TiposRetencion` (`CodigoRetencion`) ON UPDATE CASCADE, CONSTRAINT `supplier_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, CONSTRAINT `suppplier_supplierActivityFk` FOREIGN KEY (`supplierActivityFk`) REFERENCES `supplierActivity` (`code`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`supplier_beforeUpdate` + BEFORE UPDATE ON `supplier` + FOR EACH ROW +BEGIN + DECLARE vHasChange BOOL DEFAULT FALSE; + DECLARE vPayMethodHasVerified BOOL; + + SELECT hasVerified INTO vPayMethodHasVerified + FROM payMethod + WHERE id = NEW.payMethodFk; + + SET vHasChange = (NEW.payDemFk <> OLD.payDemFk) OR (NEW.payDay <> OLD.payDay); + + IF vPayMethodHasVerified AND !vHasChange THEN + SET vHasChange = (NEW.payMethodFk <> OLD.payMethodFk); + END IF; + + IF vHasChange THEN + SET NEW.isPayMethodChecked = FALSE; + END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; -- -- Table structure for table `supplierAccount` @@ -39233,22 +36641,56 @@ DROP TABLE IF EXISTS `supplierAccount`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `supplierAccount` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, - `supplierFk` int(11) NOT NULL, - `iban` varchar(30) CHARACTER SET utf8 DEFAULT NULL, - `office` varchar(4) CHARACTER SET utf8 DEFAULT NULL, - `DC` varchar(2) CHARACTER SET utf8 DEFAULT NULL, - `number` varchar(10) CHARACTER SET utf8 DEFAULT NULL, - `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'obsoleta(comprobar)', - `bicSufix` varchar(3) CHARACTER SET utf8 NOT NULL DEFAULT '', - `bankEntityFk` int(10) DEFAULT NULL, + `supplierFk` int(11) DEFAULT NULL, + `iban` varchar(30) CHARACTER SET utf8mb3 DEFAULT NULL, + `office` varchar(4) CHARACTER SET utf8mb3 DEFAULT NULL, + `DC` varchar(2) CHARACTER SET utf8mb3 DEFAULT NULL, + `number` varchar(10) CHARACTER SET utf8mb3 DEFAULT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'obsoleta(comprobar)', + `bicSufix` varchar(3) CHARACTER SET utf8mb3 NOT NULL DEFAULT '', + `bankEntityFk` int(10) unsigned DEFAULT NULL, `bankFk` int(11) DEFAULT NULL COMMENT 'obsoleta(comprobar)', - `beneficiary` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `beneficiary` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_proveedores_proveedores_account_idx` (`supplierFk`), KEY `fk_Proveedores_account_entity1_idx` (`bankEntityFk`), - KEY `fk_banco_prov_account_idx` (`bankFk`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + KEY `fk_banco_prov_account_idx` (`bankFk`), + CONSTRAINT `supplierAccount_FK` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE, + CONSTRAINT `supplierAccount_FK_1` FOREIGN KEY (`bankEntityFk`) REFERENCES `bankEntity` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER supplierAccount_afterUpdate + AFTER UPDATE ON supplierAccount + FOR EACH ROW +BEGIN + DECLARE vPayMethodHasVerified BOOL; + + SELECT pm.hasVerified INTO vPayMethodHasVerified + FROM vn.supplier s + JOIN vn.payMethod pm ON pm.id = s.payMethodFk + WHERE s.id = OLD.supplierFk; + + IF OLD.iban <> NEW.iban OR OLD.bankEntityFk <> NEW.bankEntityFk AND vPayMethodHasVerified THEN + UPDATE vn.supplier + SET isPayMethodChecked = FALSE + WHERE id = OLD.supplierFk; + END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; -- -- Table structure for table `supplierActivity` @@ -39258,10 +36700,10 @@ DROP TABLE IF EXISTS `supplierActivity`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `supplierActivity` ( - `code` varchar(45) CHARACTER SET utf8 NOT NULL, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(45) CHARACTER SET utf8mb3 NOT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39274,17 +36716,41 @@ DROP TABLE IF EXISTS `supplierAddress`; CREATE TABLE `supplierAddress` ( `id` int(11) NOT NULL AUTO_INCREMENT, `supplierFk` int(11) DEFAULT NULL, - `nickname` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL, - `street` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `nickname` varchar(40) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `street` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `provinceFk` smallint(6) unsigned DEFAULT NULL, - `postalCode` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `city` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `phone` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `mobile` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `postalCode` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `city` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `phone` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `mobile` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `supplierAddress_province_fk` (`provinceFk`), CONSTRAINT `supplierAddress_province_fk` FOREIGN KEY (`provinceFk`) REFERENCES `province` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `supplierAgencyTerm` +-- + +DROP TABLE IF EXISTS `supplierAgencyTerm`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `supplierAgencyTerm` ( + `agencyFk` smallint(5) unsigned NOT NULL, + `supplierFk` int(11) DEFAULT NULL, + `minimumPackages` int(11) NOT NULL DEFAULT 0 COMMENT 'numero minimo de bultos', + `kmPrice` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT 'precio extra por km', + `packagePrice` decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT 'precio extra por bulto', + `routePrice` decimal(10,2) DEFAULT NULL COMMENT 'precio fijo por ruta', + `minimumKm` int(11) NOT NULL DEFAULT 0, + `minimumM3` decimal(10,2) NOT NULL DEFAULT 0.00, + `m3Price` decimal(10,2) NOT NULL DEFAULT 0.00, + PRIMARY KEY (`agencyFk`), + KEY `agencyTerm_FK_1` (`supplierFk`), + CONSTRAINT `agencyTerm_FK` FOREIGN KEY (`agencyFk`) REFERENCES `agency` (`id`) ON UPDATE CASCADE, + CONSTRAINT `agencyTerm_FK_1` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39297,15 +36763,15 @@ DROP TABLE IF EXISTS `supplierContact`; CREATE TABLE `supplierContact` ( `id` int(11) NOT NULL AUTO_INCREMENT, `supplierFk` int(11) DEFAULT NULL, - `phone` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, - `mobile` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, - `email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `observation` text COLLATE utf8_unicode_ci, - `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `phone` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `mobile` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `observation` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `name` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `supplier_id` (`supplierFk`), CONSTRAINT `supplier_id` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39319,13 +36785,13 @@ CREATE TABLE `supplierExpense` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `dated` date NOT NULL, `supplierFk` int(11) NOT NULL, - `currencyFk` tinyint(3) unsigned NOT NULL DEFAULT '2', - `amount` decimal(10,2) NOT NULL DEFAULT '0.00', - `description` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `companyFk` smallint(5) unsigned NOT NULL DEFAULT '442', + `currencyFk` tinyint(3) unsigned NOT NULL DEFAULT 2, + `amount` decimal(10,2) NOT NULL DEFAULT 0.00, + `description` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `companyFk` smallint(5) unsigned NOT NULL DEFAULT 442, `dmsFk` int(11) DEFAULT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `isConciliated` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0', + `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `isConciliated` tinyint(1) unsigned zerofill NOT NULL DEFAULT 0, `dueDated` date NOT NULL, PRIMARY KEY (`id`), KEY `empresa_id` (`companyFk`), @@ -39338,7 +36804,7 @@ CREATE TABLE `supplierExpense` ( CONSTRAINT `pago_ibfk_1` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON UPDATE CASCADE, CONSTRAINT `pago_moneda` FOREIGN KEY (`currencyFk`) REFERENCES `currency` (`id`) ON UPDATE CASCADE, CONSTRAINT `proveedor_pago` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39352,20 +36818,20 @@ CREATE TABLE `supplierLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `originFk` int(11) NOT NULL, `userFk` int(10) unsigned NOT NULL, - `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `description` text CHARACTER SET utf8, - `changedModel` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `oldInstance` text COLLATE utf8_unicode_ci, - `newInstance` text COLLATE utf8_unicode_ci, + `action` set('insert','update','delete') COLLATE utf8mb3_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT current_timestamp(), + `description` text CHARACTER SET utf8mb3 DEFAULT NULL, + `changedModel` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `oldInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `newInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `changedModelId` int(11) DEFAULT NULL, - `changedModelValue` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `changedModelValue` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `logSupplier_ibfk_1` (`originFk`), KEY `supplierLog_ibfk_2` (`userFk`), CONSTRAINT `supplierLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `supplier` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `supplierLog_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39398,12 +36864,12 @@ DROP TABLE IF EXISTS `tablet`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `tablet` ( - `uuid` varchar(100) COLLATE utf8_unicode_ci NOT NULL, - `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `place` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `macwifi` varchar(45) COLLATE utf8_unicode_ci DEFAULT '0', + `uuid` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `place` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `macwifi` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT '0', PRIMARY KEY (`uuid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39414,13 +36880,13 @@ DROP TABLE IF EXISTS `tabletDepartment`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `tabletDepartment` ( - `tabletFk` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `tabletFk` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, `departmentFk` int(11) NOT NULL, PRIMARY KEY (`tabletFk`,`departmentFk`), KEY `departmentFk_idx` (`departmentFk`), CONSTRAINT `departmentFk` FOREIGN KEY (`departmentFk`) REFERENCES `department` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `tablet_uuid` FOREIGN KEY (`tabletFk`) REFERENCES `tablet` (`uuid`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39432,30 +36898,32 @@ DROP TABLE IF EXISTS `tag`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `tag` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(45) CHARACTER SET utf8 DEFAULT NULL, - `name` varchar(25) COLLATE utf8_unicode_ci NOT NULL, - `isFree` tinyint(1) NOT NULL DEFAULT '1', - `isQuantitatif` tinyint(4) NOT NULL DEFAULT '0', - `sourceTable` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `unit` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `ediTypeFk` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `overwrite` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'nombre del campo de item a sobreescribir con el valor del tag, hay que añadir el código correspondiente en item_refreshTags', + `code` varchar(45) CHARACTER SET utf8mb3 DEFAULT NULL, + `name` varchar(25) COLLATE utf8mb3_unicode_ci NOT NULL, + `isFree` tinyint(1) NOT NULL DEFAULT 1, + `isQuantitatif` tinyint(4) NOT NULL DEFAULT 0, + `sourceTable` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `unit` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ediTypeFk` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `overwrite` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'nombre del campo de item a sobreescribir con el valor del tag, hay que añadir el código correspondiente en item_refreshTags', PRIMARY KEY (`id`), UNIQUE KEY `tagNameIdx` (`name`,`ediTypeFk`), UNIQUE KEY `tagEdiTypeFkIdx` (`ediTypeFk`), CONSTRAINT `fgnTag` FOREIGN KEY (`ediTypeFk`) REFERENCES `edi`.`type` (`type_id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Categorias para etiquetar los productos'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Categorias para etiquetar los productos'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`tag_BEFORE_INSERT` BEFORE INSERT ON `tag` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`tag_BEFORE_INSERT` + BEFORE INSERT ON `tag` + FOR EACH ROW BEGIN IF NEW.ediTypeFk IS NULL AND (SELECT COUNT(*) FROM tag WHERE `name` = NEW.`name`) THEN CALL util.throw('name duplicated'); @@ -39475,10 +36943,13 @@ DROP TABLE IF EXISTS `tagAbbreviation`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `tagAbbreviation` ( - `value` varchar(20) COLLATE utf8_unicode_ci NOT NULL, - `abbreviation` varchar(10) COLLATE utf8_unicode_ci NOT NULL, - PRIMARY KEY (`value`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + `value` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, + `abbreviation` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `tagFk` int(11) DEFAULT NULL, + PRIMARY KEY (`value`), + KEY `tagAbbreviation_FK` (`tagFk`), + CONSTRAINT `tagAbbreviation_FK` FOREIGN KEY (`tagFk`) REFERENCES `tag` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39490,10 +36961,10 @@ DROP TABLE IF EXISTS `tagI18n`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `tagI18n` ( `tagFk` int(10) unsigned NOT NULL, - `lang` char(2) CHARACTER SET utf8 NOT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `lang` char(2) CHARACTER SET utf8mb3 NOT NULL, + `name` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`tagFk`,`lang`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39518,11 +36989,11 @@ DROP TABLE IF EXISTS `taxArea`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `taxArea` ( - `code` varchar(15) CHARACTER SET utf8 NOT NULL, - `ClaveOperacionFactura` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(15) CHARACTER SET utf8mb3 NOT NULL, + `ClaveOperacionFactura` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `CodigoTransaccion` int(2) DEFAULT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39534,11 +37005,11 @@ DROP TABLE IF EXISTS `taxClass`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `taxClass` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, - `description` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `code` varchar(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'R', + `description` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `code` varchar(1) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'R', PRIMARY KEY (`id`), UNIQUE KEY `code_UNIQUE` (`code`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39556,7 +37027,7 @@ CREATE TABLE `taxClassCode` ( KEY `iva_codigo_id` (`taxCodeFk`), CONSTRAINT `taxClassCode_ibfk_1` FOREIGN KEY (`taxClassFk`) REFERENCES `taxClass` (`id`) ON UPDATE CASCADE, CONSTRAINT `taxClassCode_ibfk_2` FOREIGN KEY (`taxCodeFk`) REFERENCES `taxCode` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39569,25 +37040,25 @@ DROP TABLE IF EXISTS `taxCode`; CREATE TABLE `taxCode` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `dated` date NOT NULL, - `code` varchar(10) CHARACTER SET utf8 NOT NULL, + `code` varchar(10) CHARACTER SET utf8mb3 NOT NULL, `taxTypeFk` tinyint(2) NOT NULL, - `rate` decimal(4,1) NOT NULL DEFAULT '0.0', - `equalizationTax` decimal(4,1) NOT NULL DEFAULT '0.0', - `type` char(1) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Solo rellenar si en el asiento ira en el DEBE', - `link` tinyint(4) unsigned DEFAULT '0' COMMENT 'las que tienen el mismo valor se contabilizan emparejadas', - `isActive` tinyint(2) NOT NULL DEFAULT '1', - `updated` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `transactionCode` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Código de Transacción de SAGE', - `operationCode` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Código de operaciones de SAGE', + `rate` decimal(4,1) NOT NULL DEFAULT 0.0, + `equalizationTax` decimal(4,1) NOT NULL DEFAULT 0.0, + `type` char(1) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'Solo rellenar si en el asiento ira en el DEBE', + `link` tinyint(4) unsigned DEFAULT 0 COMMENT 'las que tienen el mismo valor se contabilizan emparejadas', + `isActive` tinyint(2) NOT NULL DEFAULT 1, + `updated` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `transactionCode` varchar(2) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'Código de Transacción de SAGE', + `operationCode` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'Código de operaciones de SAGE', `taxCode` int(4) DEFAULT NULL COMMENT 'Código de IVA SAGE', - `isIntracommunity` tinyint(2) DEFAULT '0', + `isIntracommunity` tinyint(2) DEFAULT 0, PRIMARY KEY (`id`), UNIQUE KEY `taxCode_dated_IDX` (`dated`,`taxTypeFk`,`type`,`link`) USING BTREE, KEY `iva_tipo_id` (`taxTypeFk`), KEY `codigo` (`code`), KEY `tipo_index` (`type`), CONSTRAINT `taxCode_ibfk_1` FOREIGN KEY (`taxTypeFk`) REFERENCES `taxType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39599,17 +37070,17 @@ DROP TABLE IF EXISTS `taxType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `taxType` ( `id` tinyint(2) NOT NULL AUTO_INCREMENT, - `nickname` varchar(6) COLLATE utf8_unicode_ci NOT NULL, - `isAccrued` tinyint(4) NOT NULL DEFAULT '0', - `serial` char(1) COLLATE utf8_unicode_ci DEFAULT NULL, - `TIPOOPE` varchar(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT ' ' COMMENT 'respetar el nombre de la columna, se utiliza en contaplus', - `description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `nickname` varchar(6) COLLATE utf8mb3_unicode_ci NOT NULL, + `isAccrued` tinyint(4) NOT NULL DEFAULT 0, + `serial` char(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `TIPOOPE` varchar(1) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT ' ' COMMENT 'respetar el nombre de la columna, se utiliza en contaplus', + `description` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, `countryFk` mediumint(8) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `serie_id` (`serial`), KEY `Id_Pais` (`countryFk`), CONSTRAINT `taxType_ibfk_1` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39620,11 +37091,11 @@ DROP TABLE IF EXISTS `temperature`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `temperature` ( - `code` varchar(10) CHARACTER SET utf8 NOT NULL, - `description` text COLLATE utf8_unicode_ci, - `name` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(10) CHARACTER SET utf8mb3 NOT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `name` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39635,10 +37106,10 @@ DROP TABLE IF EXISTS `thermograph`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `thermograph` ( - `id` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `model` enum('TL30','SENSITECH','TREKVIEW1','TREKVIEW2','DISPOSABLE','TEMPMATE') COLLATE utf8_unicode_ci NOT NULL, + `id` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `model` enum('TL30','SENSITECH','TREKVIEW1','TREKVIEW2','DISPOSABLE','TEMPMATE') COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -39650,40 +37121,41 @@ DROP TABLE IF EXISTS `ticket`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticket` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `clientFk` int(11) NOT NULL DEFAULT '0', - `warehouseFk` smallint(6) unsigned NOT NULL DEFAULT '1', + `clientFk` int(11) NOT NULL DEFAULT 0, + `warehouseFk` smallint(6) unsigned NOT NULL DEFAULT 1, `shipped` datetime NOT NULL, - `nickname` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `notes` longtext COLLATE utf8_unicode_ci, - `refFk` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `invoiceOutFk` int(10) unsigned DEFAULT NULL COMMENT 'eliminar', - `isBooked` tinyint(1) NOT NULL DEFAULT '0', - `addressFk` int(11) NOT NULL DEFAULT '0', + `nickname` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `notes__` longtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `refFk` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `invoiceOutFk__` int(10) unsigned DEFAULT NULL COMMENT 'eliminar', + `isBooked__` tinyint(1) NOT NULL DEFAULT 0, + `addressFk` int(11) NOT NULL DEFAULT 0, `workerFk` int(11) DEFAULT NULL, - `observations` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'eliminar', - `isSigned` tinyint(1) NOT NULL DEFAULT '0', - `isLabeled` tinyint(1) NOT NULL DEFAULT '0', - `isPrinted` tinyint(1) NOT NULL DEFAULT '0', - `packages` smallint(10) unsigned DEFAULT '0', - `location` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, - `hour` int(11) DEFAULT '0', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `isBlocked` tinyint(1) NOT NULL DEFAULT '1', - `solution` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `observations` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'eliminar', + `isSigned` tinyint(1) NOT NULL DEFAULT 0, + `isLabeled` tinyint(1) NOT NULL DEFAULT 0, + `isPrinted` tinyint(1) NOT NULL DEFAULT 0, + `packages` smallint(10) unsigned DEFAULT 0, + `location` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `hour` int(11) DEFAULT 0, + `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `isBlocked` tinyint(1) NOT NULL DEFAULT 1, + `solution` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `routeFk` int(10) unsigned DEFAULT NULL, `priority` tinyint(3) unsigned DEFAULT NULL, - `hasPriority` tinyint(1) unsigned NOT NULL DEFAULT '1', - `companyFk` smallint(5) unsigned NOT NULL DEFAULT '442', + `hasPriority` tinyint(1) unsigned NOT NULL DEFAULT 1, + `companyFk` smallint(5) unsigned NOT NULL DEFAULT 442, `agencyModeFk` int(11) DEFAULT NULL, `landed` date DEFAULT NULL, - `isBoxed` tinyint(2) NOT NULL DEFAULT '0', - `isDeleted` tinyint(2) NOT NULL DEFAULT '0', + `isBoxed` tinyint(2) NOT NULL DEFAULT 0, + `isDeleted` tinyint(2) NOT NULL DEFAULT 0, `zoneFk` int(11) DEFAULT NULL, `collectionFk__` int(11) DEFAULT NULL, `zonePrice` decimal(10,2) DEFAULT NULL, `zoneBonus` decimal(10,2) DEFAULT NULL, `totalWithVat` decimal(10,2) DEFAULT NULL COMMENT 'cache calculada del total con iva', `totalWithoutVat` decimal(10,2) DEFAULT NULL COMMENT 'cache calculada del total sin iva', + `weight` decimal(10,2) DEFAULT NULL COMMENT 'En caso de informar, se utilizará su valor para calcular el peso de la factura', PRIMARY KEY (`id`), KEY `Id_Cliente` (`clientFk`), KEY `Id_Consigna` (`addressFk`), @@ -39706,28 +37178,29 @@ CREATE TABLE `ticket` ( CONSTRAINT `ticket_ibfk_9` FOREIGN KEY (`routeFk`) REFERENCES `route` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `tickets_fk11` FOREIGN KEY (`collectionFk__`) REFERENCES `collection` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `tickets_zone_fk` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `ticket_afterInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`ticket_afterInsert` AFTER INSERT ON `ticket` - FOR EACH ROW + FOR EACH ROW BEGIN + DECLARE vClientType VARCHAR(255); DECLARE vStateCode VARCHAR(255); - DECLARE vTransferorFirstShipped DATE; - + DECLARE vTransferorFirstShipped DATE; + -- Borrar cuando se cambie el insert ticket en la APP móvil - SELECT typeFk INTO vClientType + SELECT typeFk INTO vClientType FROM vn.`client` WHERE id = NEW.clientFk; IF vClientType = 'loses' THEN @@ -39737,20 +37210,22 @@ BEGIN END IF; INSERT INTO vncontrol.inter(Id_Ticket, state_id, Id_Trabajador) - SELECT NEW.id, id, account.myUser_getId() - FROM state + SELECT NEW.id, id, account.myUser_getId() + FROM state WHERE `code` = vStateCode COLLATE utf8_general_ci; - - IF YEAR(NEW.shipped) > 2000 THEN + + IF YEAR(NEW.shipped) > 2000 THEN + SELECT cnb.firstShipped INTO vTransferorFirstShipped FROM bs.clientNewBorn cnb JOIN `client` c ON c.transferorFk = cnb.clientFk - WHERE c.id = NEW.clientFk; - + WHERE c.id = NEW.clientFk; + INSERT INTO bs.clientNewBorn(clientFk, firstShipped, lastShipped) - VALUES(NEW.clientFk, IFNULL(vTransferorFirstShipped, CURDATE()), CURDATE()) - ON DUPLICATE KEY UPDATE lastShipped = CURDATE(); - END IF; + VALUES(NEW.clientFk, IFNULL(vTransferorFirstShipped, util.VN_CURDATE()), util.VN_CURDATE()) + ON DUPLICATE KEY UPDATE lastShipped = util.VN_CURDATE(); + + END IF; END */;; DELIMITER ; @@ -39763,27 +37238,27 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `ticket_beforeUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`ticket_beforeUpdate` BEFORE UPDATE ON `ticket` - FOR EACH ROW + FOR EACH ROW BEGIN DECLARE vNewTime TIME; - + IF !(NEW.routeFk <=> OLD.routeFk) THEN - INSERT IGNORE INTO `vn`.`routeRecalc` (`routeFk`) - SELECT r.id + INSERT IGNORE INTO `vn`.`routeRecalc` (`routeFk`) + SELECT r.id FROM vn.route r - WHERE r.isOk = FALSE + WHERE r.isOk = FALSE AND r.id IN (OLD.routeFk,NEW.routeFk) - AND r.created >= CURDATE() + AND r.created >= util.VN_CURDATE() GROUP BY r.id; call util.debugAdd(NEW.id,CONCAT(OLD.routeFk,' ',NEW.routeFk)); END IF; - + IF !(DATE(NEW.shipped) <=> DATE(OLD.shipped)) THEN IF YEAR(NEW.shipped) < 2000 THEN SIGNAL SQLSTATE '46000' @@ -39795,15 +37270,15 @@ BEGIN END IF; END IF; - + IF !(NEW.isDeleted <=> OLD.isDeleted) AND NEW.isDeleted THEN - INSERT IGNORE INTO `vn`.`routeRecalc` (`routeFk`) - SELECT r.id + INSERT IGNORE INTO `vn`.`routeRecalc` (`routeFk`) + SELECT r.id FROM vn.ticket t JOIN vn.route r ON r.id = t.routeFk - WHERE r.isOk = FALSE + WHERE r.isOk = FALSE AND t.id = NEW.id - AND r.created >= CURDATE() + AND r.created >= util.VN_CURDATE() GROUP BY r.id; SET NEW.shipped = DATE_FORMAT(NEW.shipped, '2000-%m-%d %T'); SET NEW.landed = DATE_FORMAT(NEW.landed, '2000-%m-%d %T'); @@ -39811,7 +37286,7 @@ BEGIN SET NEW.zoneFk = NULL; END IF; - IF NEW.routeFk AND NEW.isDeleted THEN + IF NEW.routeFk AND NEW.isDeleted THEN CALL util.throw ('This ticket is deleted'); END IF; @@ -39820,22 +37295,22 @@ BEGIN FROM vn.ticket WHERE routeFk = NEW.routeFk HAVING MAX(TIME(shipped)) > TIME(NEW.shipped); - + IF vNewTime THEN SET NEW.shipped = TIMESTAMP(DATE(NEW.shipped), vNewTime); INSERT INTO vn.ticketLog - SET originFk = NEW.id, - userFk = account.myUser_getId(), - `action` = 'update', + SET originFk = NEW.id, + userFk = account.myUser_getId(), + `action` = 'update', description = CONCAT('Cambia la hora por cambio de ruta de ', TIME(OLD.shipped), ' a ', TIME(NEW.shipped)); END IF; INSERT IGNORE INTO zoneAgencyMode (agencyModeFk,zoneFk) - SELECT r.agencyModeFk, NEW.zoneFk FROM route r + SELECT r.agencyModeFk, NEW.zoneFk FROM route r WHERE r.id = NEW.routeFk; - + CALL vn.routeUpdateM3(NEW.routeFk); END IF; END */;; @@ -39849,13 +37324,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER vn.`ticket_afterUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`ticket_afterUpdate` AFTER UPDATE ON `ticket` - FOR EACH ROW + FOR EACH ROW BEGIN IF !(NEW.id <=> OLD.id) @@ -39869,17 +37344,25 @@ BEGIN OR !(NEW.companyFk <=> OLD.companyFk) THEN CALL ticket_requestRecalc(NEW.id); END IF; - + IF NEW.clientFk = 2067 AND !(NEW.clientFk <=> OLD.clientFk) THEN -- Fallo que se insertan no se sabe como tickets en este cliente CALL mail_insert( 'jgallego@verdnatura.es', 'jgallego@verdnatura.es', 'Modificado ticket al cliente 2067', - CONCAT(account.myUserGetName(), ' ha modificado el ticket ',NEW.id) + CONCAT(account.myUser_getName(), ' ha modificado el ticket ',NEW.id) ); END IF; + IF NEW.routeFk <> OLD.routeFk THEN + + UPDATE expedition + SET hasNewRoute = TRUE + WHERE ticketFk = NEW.id; + + END IF; + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -39889,22 +37372,22 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `ticket_beforeDelete` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`ticket_beforeDelete` BEFORE DELETE ON `ticket` - FOR EACH ROW -BEGIN - INSERT IGNORE INTO `vn`.`routeRecalc` (`routeFk`) - SELECT r.id + FOR EACH ROW +BEGIN + INSERT IGNORE INTO `vn`.`routeRecalc` (`routeFk`) + SELECT r.id FROM vn.route r - WHERE r.isOk = FALSE + WHERE r.isOk = FALSE AND r.id = OLD.routeFk - AND r.created >= CURDATE() + AND r.created >= util.VN_CURDATE() GROUP BY r.id; DELETE FROM sale WHERE ticketFk = OLD.id; @@ -39928,10 +37411,10 @@ CREATE TABLE `ticketCollection` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ticketFk` int(11) NOT NULL, `collectionFk` int(11) NOT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `level` int(11) DEFAULT NULL, - `wagon` int(11) NOT NULL DEFAULT '0', - `smartTagFk` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, + `wagon` int(11) NOT NULL DEFAULT 0, + `smartTagFk` varchar(12) CHARACTER SET utf8mb3 DEFAULT NULL, `usedShelves` int(11) DEFAULT NULL COMMENT 'número de bandejas que ocupa un ticket en el carro', `itemCount` int(11) DEFAULT NULL COMMENT 'número de productos distintos en el pedido', `liters` int(11) DEFAULT NULL COMMENT 'volumen del pedido en litros', @@ -39941,44 +37424,45 @@ CREATE TABLE `ticketCollection` ( KEY `ticketCollection_fk2_idx` (`ticketFk`), KEY `ticketCollection_smartTagFk_IDX` (`smartTagFk`) USING BTREE, KEY `ticketCollection_created_IDX` (`created`) USING BTREE, + CONSTRAINT `ticketCollection_FK` FOREIGN KEY (`smartTagFk`) REFERENCES `smartTag` (`code`) ON UPDATE CASCADE, CONSTRAINT `ticketCollection_fk1` FOREIGN KEY (`collectionFk`) REFERENCES `collection` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticketCollection_fk2` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER ticketCollection_afterDelete AFTER DELETE ON ticketCollection FOR EACH ROW -BEGIN - +BEGIN + DECLARE vSalesRemaining INT; SELECT count(*) INTO vSalesRemaining FROM vn.ticketCollection tc - JOIN sale s ON s.ticketFk = tc.ticketFk + JOIN sale s ON s.ticketFk = tc.ticketFk WHERE collectionFk = OLD.collectionFk AND tc.id != OLD.id; - + IF NOT vSalesRemaining THEN - + DELETE FROM vn.collection WHERE id = OLD.collectionFk; - + ELSE - - UPDATE vn.collection + + UPDATE vn.collection SET saleTotalCount = vSalesRemaining WHERE id = OLD.collectionFk; - + END IF; - + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -39996,9 +37480,9 @@ DROP TABLE IF EXISTS `ticketConfig`; CREATE TABLE `ticketConfig` ( `id` int(11) NOT NULL AUTO_INCREMENT, `scopeDays` tinyint(3) DEFAULT NULL, - `pickingDelay` int(11) NOT NULL DEFAULT '10' COMMENT 'minutos de cortesia desde que se crea un ticket hasta que se puede preparar', + `pickingDelay` int(11) NOT NULL DEFAULT 10 COMMENT 'minutos de cortesia desde que se crea un ticket hasta que se puede preparar', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -40015,26 +37499,28 @@ CREATE TABLE `ticketDms` ( KEY `gestdoc_id` (`dmsFk`), CONSTRAINT `ticketDms_dmsFk` FOREIGN KEY (`dmsFk`) REFERENCES `dms` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticketDms_ticketFk` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`ticketDms_beforeDelete` BEFORE DELETE ON `ticketDms` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`ticketDms_beforeDelete` + BEFORE DELETE ON `ticketDms` + FOR EACH ROW BEGIN - UPDATE dms - SET dmsTypeFk = (SELECT id - FROM dmsType + UPDATE dms + SET dmsTypeFk = (SELECT id + FROM dmsType WHERE `code` = 'trash' ) - WHERE id = OLD.dmsFk AND ( SELECT IF(COUNT(*) > 0, FALSE, TRUE) - FROM ticketDms + WHERE id = OLD.dmsFk AND ( SELECT IF(COUNT(*) > 0, FALSE, TRUE) + FROM ticketDms WHERE dmsFk = OLD.dmsFk ) ; END */;; @@ -40054,7 +37540,7 @@ DROP TABLE IF EXISTS `ticketDocumentation`; CREATE TABLE `ticketDocumentation` ( `ticketFk` int(11) NOT NULL, PRIMARY KEY (`ticketFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Marca si se ha revisado el ticket para aportar la documentación CRM/DUA (relativa al trasporte internacional de mercancias)'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Marca si se ha revisado el ticket para aportar la documentación CRM/DUA (relativa al trasporte internacional de mercancias)'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -40066,8 +37552,8 @@ DROP TABLE IF EXISTS `ticketDown`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticketDown` ( `ticketFk` int(11) NOT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `selected` int(11) NOT NULL DEFAULT '0', + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `selected` int(11) NOT NULL DEFAULT 0, `collectionFk` int(11) NOT NULL, `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`), @@ -40076,7 +37562,7 @@ CREATE TABLE `ticketDown` ( KEY `ticketDown_FK` (`collectionFk`), CONSTRAINT `ticketDown_FK` FOREIGN KEY (`collectionFk`) REFERENCES `collection` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticketDown_fk1` FOREIGN KEY (`selected`) REFERENCES `ticketDown_SelectionType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Cola de impresion para los tickets que se van a solicitar al altillo'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Cola de impresion para los tickets que se van a solicitar al altillo'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -40088,34 +37574,12 @@ DROP TABLE IF EXISTS `ticketDown_SelectionType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticketDown_SelectionType` ( `id` int(11) NOT NULL, - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `description_UNIQUE` (`description`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `ticketLabel_Source` --- - -DROP TABLE IF EXISTS `ticketLabel_Source`; -/*!50001 DROP VIEW IF EXISTS `ticketLabel_Source`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `ticketLabel_Source` ( - `level` tinyint NOT NULL, - `Id_Ticket` tinyint NOT NULL, - `Agencia` tinyint NOT NULL, - `Id_Cliente` tinyint NOT NULL, - `Notas` tinyint NOT NULL, - `Sacador` tinyint NOT NULL, - `ncarro` tinyint NOT NULL, - `horaagencia` tinyint NOT NULL, - `fecha` tinyint NOT NULL, - `urgente` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `ticketLastState` -- @@ -40124,14 +37588,14 @@ DROP TABLE IF EXISTS `ticketLastState`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticketLastState` ( - `ticketFk` int(11) NOT NULL DEFAULT '0', + `ticketFk` int(11) NOT NULL DEFAULT 0, `ticketTrackingFk` int(11) NOT NULL, - `name` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`ticketFk`), KEY `double_foreign` (`ticketFk`,`ticketTrackingFk`), CONSTRAINT `Id_Ticket` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `double_foreign` FOREIGN KEY (`ticketFk`, `ticketTrackingFk`) REFERENCES `vncontrol`.`inter` (`Id_Ticket`, `inter_id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -40162,21 +37626,6 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `ticketLocation` --- - -DROP TABLE IF EXISTS `ticketLocation`; -/*!50001 DROP VIEW IF EXISTS `ticketLocation`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `ticketLocation` ( - `ticketFk` tinyint NOT NULL, - `longitude` tinyint NOT NULL, - `latitude` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `ticketLog` -- @@ -40188,50 +37637,22 @@ CREATE TABLE `ticketLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `originFk` int(11) NOT NULL, `userFk` int(10) unsigned DEFAULT NULL, - `action` set('insert','update','delete','select') COLLATE utf8_unicode_ci NOT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `description` text CHARACTER SET utf8, - `changedModel` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `oldInstance` text COLLATE utf8_unicode_ci, - `newInstance` text COLLATE utf8_unicode_ci, + `action` set('insert','update','delete','select') COLLATE utf8mb3_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT current_timestamp(), + `description` text CHARACTER SET utf8mb3 DEFAULT NULL, + `changedModel` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `oldInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `newInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `changedModelId` int(11) DEFAULT NULL, - `changedModelValue` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `changedModelValue` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `logTicketoriginFk` (`originFk`), KEY `logTicketuserFk` (`userFk`), CONSTRAINT `ticketLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticketLog_user` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `ticketMRW` --- - -DROP TABLE IF EXISTS `ticketMRW`; -/*!50001 DROP VIEW IF EXISTS `ticketMRW`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `ticketMRW` ( - `id_Agencia` tinyint NOT NULL, - `empresa_id` tinyint NOT NULL, - `Consignatario` tinyint NOT NULL, - `DOMICILIO` tinyint NOT NULL, - `POBLACION` tinyint NOT NULL, - `CODPOSTAL` tinyint NOT NULL, - `telefono` tinyint NOT NULL, - `movil` tinyint NOT NULL, - `IF` tinyint NOT NULL, - `Id_Ticket` tinyint NOT NULL, - `warehouse_id` tinyint NOT NULL, - `Id_Consigna` tinyint NOT NULL, - `CodigoPais` tinyint NOT NULL, - `Fecha` tinyint NOT NULL, - `province_id` tinyint NOT NULL, - `landing` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Temporary table structure for view `ticketNotInvoiced` -- @@ -40261,13 +37682,13 @@ CREATE TABLE `ticketObservation` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `ticketFk` int(11) NOT NULL, `observationTypeFk` tinyint(3) unsigned NOT NULL, - `description` text COLLATE utf8_unicode_ci NOT NULL, + `description` text COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `Id_Ticket` (`ticketFk`,`observationTypeFk`), KEY `observation_type_id` (`observationTypeFk`), CONSTRAINT `ticketObservation_ibfk_1` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticketObservation_ibfk_2` FOREIGN KEY (`observationTypeFk`) REFERENCES `observationType` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Todas las observaciones referentes a un ticket'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Todas las observaciones referentes a un ticket'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -40279,10 +37700,10 @@ DROP TABLE IF EXISTS `ticketPackage`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticketPackage` ( `ticket` int(11) NOT NULL, - `counter` int(10) unsigned NOT NULL DEFAULT '0', + `counter` int(10) unsigned NOT NULL DEFAULT 0, PRIMARY KEY (`ticket`), CONSTRAINT `ticketPackage_ticketFk` FOREIGN KEY (`ticket`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -40295,9 +37716,9 @@ DROP TABLE IF EXISTS `ticketPackaging`; CREATE TABLE `ticketPackaging` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ticketFk` int(11) NOT NULL, - `packagingFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL, - `quantity` int(10) DEFAULT '0', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `packagingFk` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `quantity` int(10) DEFAULT 0, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `pvp` double DEFAULT NULL, `workerFk` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`), @@ -40307,18 +37728,20 @@ CREATE TABLE `ticketPackaging` ( CONSTRAINT `ticketPackaging_fk1` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticketPackaging_fk2` FOREIGN KEY (`packagingFk`) REFERENCES `packaging` (`id`) ON UPDATE CASCADE, CONSTRAINT `ticketPackaging_fk3` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`ticketPackaging_BEFORE_INSERT` BEFORE INSERT ON `ticketPackaging` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`ticketPackaging_BEFORE_INSERT` + BEFORE INSERT ON `ticketPackaging` + FOR EACH ROW BEGIN SET NEW.workerFk = account.myUser_getId(); @@ -40339,18 +37762,18 @@ DROP TABLE IF EXISTS `ticketPackagingStartingStock`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticketPackagingStartingStock` ( `clientFk` int(11) NOT NULL, - `packagingFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `packagingFk` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, `itemFk` int(11) NOT NULL, `sent` int(11) DEFAULT NULL, `returned` int(11) DEFAULT NULL, - `isForgetable` tinyint(1) NOT NULL DEFAULT '0', + `isForgetable` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (`clientFk`,`packagingFk`), KEY `ticketPackagingStartingStock_fk2_idx` (`packagingFk`), KEY `ticketPackagingStartingStock_fk3_idx` (`itemFk`), CONSTRAINT `ticketPackagingStartingStock_fk1` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticketPackagingStartingStock_fk2` FOREIGN KEY (`packagingFk`) REFERENCES `packaging` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticketPackagingStartingStock_fk3` FOREIGN KEY (`itemFk`) REFERENCES `item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -40370,7 +37793,8 @@ SET character_set_client = utf8; `itemFk` tinyint NOT NULL, `concept` tinyint NOT NULL, `quantity` tinyint NOT NULL, - `litros` tinyint NOT NULL + `litros` tinyint NOT NULL, + `observaciones` tinyint NOT NULL ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; @@ -40385,7 +37809,7 @@ CREATE TABLE `ticketParking` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ticketFk` int(11) NOT NULL, `parkingFk` int(11) NOT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `workerFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `ticketParking_idx1` (`ticketFk`,`parkingFk`), @@ -40393,22 +37817,24 @@ CREATE TABLE `ticketParking` ( KEY `ticketParking_fk1_idx` (`parkingFk`), CONSTRAINT `ticketParking_fk1` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticketParking_fk2` FOREIGN KEY (`parkingFk`) REFERENCES `parking` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacena los distintos lugares donde puede estar aparcado cada uno de los prepedidos'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Almacena los distintos lugares donde puede estar aparcado cada uno de los prepedidos'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`ticketParking_BEFORE_INSERT` BEFORE INSERT ON `ticketParking` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`ticketParking_BEFORE_INSERT` + BEFORE INSERT ON `ticketParking` + FOR EACH ROW BEGIN SET NEW.workerFk = vn.getUser(); - + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -40431,8 +37857,9 @@ SET character_set_client = utf8; `alreadyMadeSaleLines` tinyint NOT NULL, `madeRate` tinyint NOT NULL, `created` tinyint NOT NULL, + `parking` tinyint NOT NULL, `sectorFk` tinyint NOT NULL, - `parking` tinyint NOT NULL + `alertCode` tinyint NOT NULL ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; @@ -40444,12 +37871,72 @@ DROP TABLE IF EXISTS `ticketRecalc`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticketRecalc` ( + `id` int(11) NOT NULL AUTO_INCREMENT, `ticketFk` int(11) NOT NULL, - PRIMARY KEY (`ticketFk`), - CONSTRAINT `ticketRecalc_ibfk_1` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Queue of changed tickets to recalc its total'; + PRIMARY KEY (`id`), + KEY `ticketRecalc_ibfk_1` (`ticketFk`) +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Queue of changed tickets to recalc its total'; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Table structure for table `ticketRefund` +-- + +DROP TABLE IF EXISTS `ticketRefund`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ticketRefund` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `refundTicketFk` int(11) NOT NULL, + `originalTicketFk` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `ticketRefund_FK` (`refundTicketFk`), + KEY `ticketRefund_FK_1` (`originalTicketFk`), + CONSTRAINT `ticketRefund_FK` FOREIGN KEY (`refundTicketFk`) REFERENCES `ticket` (`id`) ON UPDATE CASCADE, + CONSTRAINT `ticketRefund_FK_1` FOREIGN KEY (`originalTicketFk`) REFERENCES `ticket` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`ticketRefund_beforeInsert` + BEFORE INSERT ON `ticketRefund` + FOR EACH ROW +BEGIN + CALL ticketRefund_beforeUpsert(NEW.refundTicketFk, NEW.originalTicketFk); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`ticketRefund_beforeUpdate` + BEFORE UPDATE ON `ticketRefund` + FOR EACH ROW +BEGIN + CALL ticketRefund_beforeUpsert(NEW.refundTicketFk, NEW.originalTicketFk); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + -- -- Table structure for table `ticketRequest` -- @@ -40459,23 +37946,23 @@ DROP TABLE IF EXISTS `ticketRequest`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticketRequest` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `ordered` datetime DEFAULT NULL, `shipped` datetime DEFAULT NULL, - `salesPersonCode` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `buyerCode` varchar(3) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'NOE', + `salesPersonCode` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `buyerCode` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'NOE', `quantity` int(11) DEFAULT NULL, `price` double DEFAULT NULL, `price__` double DEFAULT NULL, `itemFk` double DEFAULT NULL, `clientFk` int(11) DEFAULT NULL, - `response` longtext COLLATE utf8_unicode_ci, - `ok__` tinyint(1) NOT NULL DEFAULT '0', + `response` longtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ok__` tinyint(1) NOT NULL DEFAULT 0, `total` int(11) DEFAULT NULL, `buyed` datetime DEFAULT NULL, - `ko__` tinyint(1) NOT NULL DEFAULT '0', + `ko__` tinyint(1) NOT NULL DEFAULT 0, `saleFk` int(11) DEFAULT NULL, - `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NULL DEFAULT current_timestamp(), `isOk` tinyint(1) DEFAULT NULL, `requesterFk` int(10) unsigned DEFAULT NULL, `attenderFk` int(10) unsigned DEFAULT NULL, @@ -40494,18 +37981,20 @@ CREATE TABLE `ticketRequest` ( CONSTRAINT `fgnAtender` FOREIGN KEY (`attenderFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, CONSTRAINT `fgnRequester` FOREIGN KEY (`requesterFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE, CONSTRAINT `fgnTicket` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`ticketRequest_beforeInsert` BEFORE INSERT ON `ticketRequest` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`ticketRequest_beforeInsert` + BEFORE INSERT ON `ticketRequest` + FOR EACH ROW BEGIN IF NEW.ticketFk IS NULL THEN SET NEW.ticketFk = (SELECT s.ticketFk FROM sale s WHERE s.id = NEW.saleFk); @@ -40527,13 +38016,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`ticketRequest_beforeUpdate` BEFORE UPDATE ON `ticketRequest` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`ticketRequest_beforeUpdate` + BEFORE UPDATE ON `ticketRequest` + FOR EACH ROW BEGIN IF NEW.saleFk <> OLD.saleFk THEN SET NEW.ticketFk = (SELECT s.ticketFk FROM sale s WHERE s.id = NEW.saleFk); @@ -40562,10 +38053,10 @@ DROP TABLE IF EXISTS `ticketService`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticketService` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `quantity` int(11) NOT NULL DEFAULT '0', - `price` decimal(10,2) NOT NULL DEFAULT '0.00', - `taxClassFk` tinyint(3) unsigned NOT NULL DEFAULT '2', + `description` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `quantity` int(11) NOT NULL DEFAULT 0, + `price` decimal(10,2) NOT NULL DEFAULT 0.00, + `taxClassFk` tinyint(3) unsigned NOT NULL DEFAULT 2, `ticketFk` int(11) NOT NULL, `ticketServiceTypeFk` int(11) NOT NULL, PRIMARY KEY (`id`), @@ -40575,22 +38066,24 @@ CREATE TABLE `ticketService` ( CONSTRAINT `fgn_ticketFk` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticketServiceIvaGroup` FOREIGN KEY (`taxClassFk`) REFERENCES `taxClass` (`id`) ON UPDATE CASCADE, CONSTRAINT `ticketService_ticketServiceType` FOREIGN KEY (`ticketServiceTypeFk`) REFERENCES `ticketServiceType` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Servicios asociadas a un ticket'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Servicios asociadas a un ticket'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`ticketService_ai` AFTER INSERT ON `ticketService` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`ticketService_ai` + AFTER INSERT ON `ticketService` + FOR EACH ROW BEGIN CALL ticket_requestRecalc(NEW.ticketFk); - + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -40602,11 +38095,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`ticketService_au` AFTER UPDATE ON `ticketService` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`ticketService_au` + AFTER UPDATE ON `ticketService` + FOR EACH ROW BEGIN IF !(NEW.price <=> OLD.price) OR !(NEW.ticketFk <=> OLD.ticketFk) @@ -40625,11 +38120,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`ticketService_ad` AFTER DELETE ON `ticketService` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`ticketService_ad` + AFTER DELETE ON `ticketService` + FOR EACH ROW BEGIN CALL ticket_requestRecalc(OLD.ticketFk); @@ -40650,12 +38147,12 @@ DROP TABLE IF EXISTS `ticketServiceType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticketServiceType` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL, `expenceFk` varchar(10) NOT NULL DEFAULT '7050000000', PRIMARY KEY (`id`), - KEY `ticketServiceType_expenceFk` (`expenceFk`), + KEY `ticketServiceType_expenceFk_idx` (`expenceFk`), CONSTRAINT `ticketServiceType_expenceFk` FOREIGN KEY (`expenceFk`) REFERENCES `expence` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COMMENT='Lista de los posibles servicios a elegir'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COMMENT='Lista de los posibles servicios a elegir'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -40728,10 +38225,10 @@ DROP TABLE IF EXISTS `ticketTrolley`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticketTrolley` ( `ticket` int(11) NOT NULL, - `labelCount` int(11) NOT NULL DEFAULT '0', + `labelCount` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`ticket`), CONSTRAINT `fk_ticketTrolley_vs_ticket` FOREIGN KEY (`ticket`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -40743,10 +38240,10 @@ DROP TABLE IF EXISTS `ticketUpdateAction`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `ticketUpdateAction` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `code` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `code` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='En esta tabla pondremos las distintas opciones que se ofrecen al comecial o al cliente al cambiar alguno de los parametros básicos de un ticket'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='En esta tabla pondremos las distintas opciones que se ofrecen al comecial o al cliente al cambiar alguno de los parametros básicos de un ticket'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -40764,7 +38261,7 @@ CREATE TABLE `ticketWeekly` ( KEY `agencyModeFk_idx` (`agencyModeFk`), CONSTRAINT `Id_Ticket_fk` FOREIGN KEY (`ticketFk`) REFERENCES `ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `agencyModeFk` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -40777,22 +38274,22 @@ DROP TABLE IF EXISTS `till`; CREATE TABLE `till` ( `id` int(11) NOT NULL AUTO_INCREMENT, `dated` date NOT NULL, - `isAccountable` tinyint(1) NOT NULL DEFAULT '0', - `serie` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, + `isAccountable` tinyint(1) NOT NULL DEFAULT 0, + `serie` varchar(2) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `number` int(11) DEFAULT NULL, - `concept` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `concept` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, `in` decimal(10,2) DEFAULT NULL, `out` decimal(10,2) DEFAULT NULL, - `bankFk` int(11) DEFAULT '1', + `bankFk` int(11) DEFAULT 1, `workerFk` int(10) unsigned DEFAULT NULL, - `companyFk` smallint(5) unsigned DEFAULT '442' COMMENT 'kakear', - `isLinked` tinyint(4) DEFAULT '0', - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `isOk` tinyint(4) NOT NULL DEFAULT '0', - `warehouseFk` smallint(5) unsigned NOT NULL DEFAULT '1' COMMENT 'to kak\\n', - `isConciliate` tinyint(4) NOT NULL DEFAULT '0', + `companyFk` smallint(5) unsigned DEFAULT 442 COMMENT 'kakear', + `isLinked` tinyint(4) DEFAULT 0, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + `isOk` tinyint(4) NOT NULL DEFAULT 0, + `warehouseFk` smallint(5) unsigned NOT NULL DEFAULT 1 COMMENT 'to kak\\n', + `isConciliate` tinyint(4) NOT NULL DEFAULT 0, `supplierAccountFk` mediumint(8) unsigned NOT NULL, - `calculatedCode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `calculatedCode` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `InForeignValue` decimal(10,2) DEFAULT NULL, `OutForeignValue` decimal(10,2) DEFAULT NULL, PRIMARY KEY (`id`), @@ -40803,20 +38300,22 @@ CREATE TABLE `till` ( KEY `empresa_id` (`companyFk`), KEY `warehouse_id` (`warehouseFk`), KEY `fk_Cajas_Proveedores_account1_idx` (`supplierAccountFk`), - CONSTRAINT `till_ibfk_2` FOREIGN KEY (`bankFk`) REFERENCES `bank` (`id`) ON UPDATE CASCADE, + CONSTRAINT `till_ibfk_2` FOREIGN KEY (`bankFk`) REFERENCES `accounting` (`id`) ON UPDATE CASCADE, CONSTRAINT `till_ibfk_3` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`till_beforeInsert` BEFORE INSERT ON `till` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`till_beforeInsert` + BEFORE INSERT ON `till` + FOR EACH ROW BEGIN IF IFNULL(NEW.concept,"") = "" THEN CALL util.throw ('Error. El concepto esta vacío'); @@ -40838,9 +38337,9 @@ DROP TABLE IF EXISTS `tillConfig`; CREATE TABLE `tillConfig` ( `id` int(11) NOT NULL, `openingBalance` decimal(10,2) NOT NULL, - `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -40866,24 +38365,26 @@ CREATE TABLE `time` ( KEY `month_index` (`month`) USING HASH, KEY `periodo` (`period`) USING HASH, KEY `yearMonth` (`yearMonth`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Tabla de referencia para las semanas, años y meses'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Tabla de referencia para las semanas, años y meses'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`time_AFTER_UPDATE` AFTER UPDATE ON `time` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`time_AFTER_UPDATE` + AFTER UPDATE ON `time` + FOR EACH ROW BEGIN /*INSERT INTO vn.mail SET `sender` = 'jgallego@verdnatura.es', `replyTo` = 'jgallego@verdnatura.es', `subject` = 'tabla time modificada', - `body` = CONCAT(account.myUserGetName(), ' ha modificado la tabla time ', + `body` = CONCAT(account.myUser_getName(), ' ha modificado la tabla time ', NEW.`dated`);*/ END */;; DELIMITER ; @@ -40892,25 +38393,6 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; --- --- Temporary table structure for view `time__` --- - -DROP TABLE IF EXISTS `time__`; -/*!50001 DROP VIEW IF EXISTS `time__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `time__` ( - `dated` tinyint NOT NULL, - `period` tinyint NOT NULL, - `month` tinyint NOT NULL, - `year` tinyint NOT NULL, - `day` tinyint NOT NULL, - `week` tinyint NOT NULL, - `yearMonth` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `town` -- @@ -40920,26 +38402,27 @@ DROP TABLE IF EXISTS `town`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `town` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, `provinceFk` smallint(6) unsigned NOT NULL, `geoFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `name_idx` (`name`), KEY `townProvinceFk` (`provinceFk`), CONSTRAINT `townProvinceFk` FOREIGN KEY (`provinceFk`) REFERENCES `province` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`town_beforeInsert` - BEFORE INSERT ON `town` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`town_beforeInsert` + BEFORE INSERT ON `town` + FOR EACH ROW BEGIN SET NEW.geoFk = zoneGeo_new('town', NEW.`name`, (SELECT geoFk FROM province WHERE id = NEW.provinceFk)); @@ -40954,12 +38437,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `town_beforeUpdate` - BEFORE UPDATE ON `town` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`town_beforeUpdate` + BEFORE UPDATE ON `town` + FOR EACH ROW BEGIN -- IF !(OLD.geoFk <=> NEW.geoFk) THEN -- CALL zoneGeo_throwNotEditable; @@ -40975,12 +38459,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`town_afterUpdate` - AFTER UPDATE ON `town` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`town_afterUpdate` + AFTER UPDATE ON `town` + FOR EACH ROW BEGIN IF !(OLD.provinceFk <=> NEW.provinceFk) THEN CALL zoneGeo_setParent(NEW.geoFk, @@ -41002,12 +38487,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`town_afterDelete` - AFTER DELETE ON `town` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`town_afterDelete` + AFTER DELETE ON `town` + FOR EACH ROW BEGIN CALL zoneGeo_delete(OLD.geoFk); END */;; @@ -41090,9 +38576,9 @@ DROP TABLE IF EXISTS `train`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `train` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Define la configuración de los carros que se utilizan para sacar pedidos'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Define la configuración de los carros que se utilizan para sacar pedidos'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41104,9 +38590,9 @@ DROP TABLE IF EXISTS `trainingCenter`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `trainingCenter` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41123,11 +38609,11 @@ CREATE TABLE `trainingCourse` ( `centerFk` int(11) DEFAULT NULL, `started` datetime NOT NULL, `ended` datetime NOT NULL, - `invoice` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `invoice` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `amount` double DEFAULT NULL, - `remark` longtext COLLATE utf8_unicode_ci, - `hasDiscount` tinyint(1) NOT NULL DEFAULT '0', - `hasDiploma` tinyint(1) NOT NULL DEFAULT '0', + `remark` longtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `hasDiscount` tinyint(1) NOT NULL DEFAULT 0, + `hasDiploma` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `frgnWorker_idx` (`workerFk`), KEY `frgnCenter_idx` (`centerFk`), @@ -41135,7 +38621,7 @@ CREATE TABLE `trainingCourse` ( CONSTRAINT `frgnCenter` FOREIGN KEY (`centerFk`) REFERENCES `trainingCenter` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `frgnTrainingCourseType` FOREIGN KEY (`trainingCourseTypeFk`) REFERENCES `trainingCourseType` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `frgnWorker` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Lista de trabajadores que han realizado una formación'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Lista de trabajadores que han realizado una formación'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41147,9 +38633,9 @@ DROP TABLE IF EXISTS `trainingCourseType`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `trainingCourseType` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Lista de las formaciones'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Lista de las formaciones'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41168,41 +38654,53 @@ CREATE TABLE `travel` ( `warehouseInFk` smallint(6) unsigned DEFAULT NULL, `warehouseOutFk` smallint(6) unsigned DEFAULT NULL, `agencyFk` int(11) DEFAULT NULL, - `ref` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `isDelivered` tinyint(1) NOT NULL DEFAULT '0', - `isReceived` tinyint(1) NOT NULL DEFAULT '0', + `ref` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isDelivered` tinyint(1) NOT NULL DEFAULT 0, + `isReceived` tinyint(1) NOT NULL DEFAULT 0, `m3` decimal(10,2) unsigned DEFAULT NULL, `kg` decimal(10,0) unsigned DEFAULT NULL, `cargoSupplierFk` int(11) DEFAULT NULL, - `totalEntries` tinyint(4) unsigned DEFAULT '0', + `totalEntries` tinyint(4) unsigned DEFAULT 0, `appointment` datetime DEFAULT NULL, + `agencyModeFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), - UNIQUE KEY `shipment_2` (`shipped`,`landed`,`warehouseInFk`,`warehouseOutFk`,`agencyFk`,`ref`), + UNIQUE KEY `shipment_1` (`shipped`,`landed`,`warehouseInFk`,`warehouseOutFk`,`agencyFk`,`agencyModeFk`,`ref`), KEY `agency_id` (`agencyFk`), KEY `shipment` (`shipped`), KEY `landing` (`landed`), KEY `warehouse_landing` (`warehouseInFk`,`landed`), KEY `warehouse_out_shipment` (`warehouseOutFk`,`shipped`), KEY `travel_ibfk_4_idx` (`cargoSupplierFk`), + KEY `travel_FK` (`agencyModeFk`), + CONSTRAINT `travel_FK` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`) ON UPDATE CASCADE, CONSTRAINT `travel_ibfk_1` FOREIGN KEY (`warehouseInFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, CONSTRAINT `travel_ibfk_2` FOREIGN KEY (`warehouseOutFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, CONSTRAINT `travel_ibfk_3` FOREIGN KEY (`agencyFk`) REFERENCES `agencyMode` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `travel_beforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`travel_beforeInsert` BEFORE INSERT ON `travel` - FOR EACH ROW + FOR EACH ROW BEGIN CALL travel_checkDates(NEW.shipped, NEW.landed); + + -- Actualizar agencyFk y agencyModeFk + IF NEW.agencyFk THEN + SET NEW.agencyModeFk = NEW.agencyFk; + END IF; + + IF NEW.agencyModeFk THEN + SET NEW.agencyFk = NEW.agencyModeFk; + END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -41214,18 +38712,27 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `travel_beforeUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`travel_beforeUpdate` BEFORE UPDATE ON `travel` - FOR EACH ROW + FOR EACH ROW BEGIN IF !(NEW.landed <=> OLD.landed) OR !(NEW.shipped <=> OLD.shipped) THEN CALL travel_checkDates(NEW.shipped, NEW.landed); END IF; + + -- Actualizar agencyFk y agencyModeFk + IF !(NEW.agencyFk <=> OLD.agencyFk)THEN + SET NEW.agencyModeFk = NEW.agencyFk; + END IF; + + IF !(NEW.agencyModeFk <=> OLD.agencyModeFk) THEN + SET NEW.agencyFk = NEW.agencyModeFk; + END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -41237,18 +38744,18 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `travel_afterUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`travel_afterUpdate` AFTER UPDATE ON `travel` - FOR EACH ROW + FOR EACH ROW BEGIN CALL stock.log_add('travel', NEW.id, OLD.id); IF !(NEW.shipped <=> OLD.shipped) THEN - UPDATE entry + UPDATE entry SET commission = entry_getCommission(travelFk, currencyFk,supplierFk) WHERE travelFk = NEW.id; END IF; @@ -41269,6 +38776,40 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +-- +-- Table structure for table `travelClonedWeekly` +-- + +DROP TABLE IF EXISTS `travelClonedWeekly`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `travelClonedWeekly` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `weekStart` tinyint(3) unsigned NOT NULL, + `weekEnd` tinyint(3) unsigned NOT NULL, + `warehouseOutFk` smallint(6) unsigned NOT NULL, + `warehouseInFk` smallint(6) unsigned NOT NULL, + `agencyModeFk` int(11) NOT NULL, + `weekDay` tinyint(3) unsigned NOT NULL, + `duration` tinyint(3) unsigned NOT NULL, + `ref` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `supplierFk` int(11) DEFAULT NULL, + `kg` decimal(10,0) unsigned DEFAULT NULL, + `travelFk` int(11) unsigned DEFAULT NULL COMMENT 'Travel origen para clonar ademas sus entradas', + PRIMARY KEY (`id`), + KEY `travelClonedWeekly_FK` (`warehouseOutFk`), + KEY `travelClonedWeekly_FK_1` (`warehouseInFk`), + KEY `travelClonedWeekly_FK_2` (`agencyModeFk`), + KEY `travelClonedWeekly_FK_3` (`supplierFk`), + KEY `travelClonedWeekly_FK_4` (`travelFk`), + CONSTRAINT `travelClonedWeekly_FK` FOREIGN KEY (`warehouseOutFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, + CONSTRAINT `travelClonedWeekly_FK_1` FOREIGN KEY (`warehouseInFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, + CONSTRAINT `travelClonedWeekly_FK_2` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`) ON UPDATE CASCADE, + CONSTRAINT `travelClonedWeekly_FK_3` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `travelClonedWeekly_FK_4` FOREIGN KEY (`travelFk`) REFERENCES `travel` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Table structure for table `travelLog` -- @@ -41280,20 +38821,20 @@ CREATE TABLE `travelLog` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `originFk` int(10) unsigned NOT NULL, `userFk` int(10) unsigned DEFAULT NULL, - `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `description` text CHARACTER SET utf8, - `changedModel` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `oldInstance` text COLLATE utf8_unicode_ci, - `newInstance` text COLLATE utf8_unicode_ci, + `action` set('insert','update','delete') COLLATE utf8mb3_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT current_timestamp(), + `description` text CHARACTER SET utf8mb3 DEFAULT NULL, + `changedModel` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `oldInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `newInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `changedModelId` int(11) DEFAULT NULL, - `changedModelValue` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `changedModelValue` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `originFk` (`originFk`), KEY `userFk` (`userFk`), CONSTRAINT `travelLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `travel` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `travelLog_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41307,10 +38848,10 @@ CREATE TABLE `travelObservation` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `originFk` int(11) NOT NULL, `userFk` int(11) NOT NULL, - `description` text COLLATE utf8_unicode_ci NOT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `description` text COLLATE utf8mb3_unicode_ci NOT NULL, + `created` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Observaciones de travel'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Observaciones de travel'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41323,7 +38864,7 @@ DROP TABLE IF EXISTS `travelRecalc`; CREATE TABLE `travelRecalc` ( `travelFk` int(10) unsigned NOT NULL, PRIMARY KEY (`travelFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Travels to recalc it''s entry count'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Travels to recalc it''s entry count'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41335,14 +38876,14 @@ DROP TABLE IF EXISTS `travelThermograph`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `travelThermograph` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `thermographFk` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `thermographFk` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, `created` date NOT NULL, `warehouseFk` smallint(6) unsigned NOT NULL, `travelFk` int(10) unsigned DEFAULT NULL, - `temperature` enum('COOL','WARM','DRY') COLLATE utf8_unicode_ci DEFAULT NULL, - `result` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `temperature__` enum('COOL','WARM','DRY') COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `result` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `dmsFk` int(11) DEFAULT NULL, - `temperatureFk` varchar(10) CHARACTER SET utf8 DEFAULT 'cool' COMMENT 'En la versión de Agosto de Salix se empezará a usar este campo y se actualizaran los anteriores mirando temperature.', + `temperatureFk` varchar(10) CHARACTER SET utf8mb3 DEFAULT 'cool' COMMENT 'En la versión de Agosto de Salix se empezará a usar este campo y se actualizaran los anteriores mirando temperature.', PRIMARY KEY (`id`), KEY `thermograph_fk_idx` (`thermographFk`), KEY `gestdoc_fk_idx` (`dmsFk`), @@ -41354,30 +38895,8 @@ CREATE TABLE `travelThermograph` ( CONSTRAINT `travelThermographThermographFgn` FOREIGN KEY (`thermographFk`) REFERENCES `thermograph` (`id`) ON UPDATE CASCADE, CONSTRAINT `travelThermographTravelFgn` FOREIGN KEY (`travelFk`) REFERENCES `travel` (`id`), CONSTRAINT `travelThermographWarehouseFgn` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Registra cada termografo que se ha introducido en cada travel'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Registra cada termografo que se ha introducido en cada travel'; /*!40101 SET character_set_client = @saved_cs_client */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`travelThermograph_beforeInsert` BEFORE INSERT ON `travelThermograph` FOR EACH ROW -BEGIN - - IF NEW.temperature IS NULL THEN - SET NEW.temperature = UCASE(NEW.temperatureFk); - END IF; - -END */;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -- -- Table structure for table `trolley` @@ -41389,11 +38908,11 @@ DROP TABLE IF EXISTS `trolley`; CREATE TABLE `trolley` ( `id` int(11) NOT NULL AUTO_INCREMENT, `workerFk` int(10) unsigned DEFAULT NULL, - `coupled` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `coupled` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `trolley_FK` (`workerFk`), CONSTRAINT `trolley_FK` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41426,10 +38945,11 @@ CREATE TABLE `userConfig` ( `userFk` int(10) unsigned NOT NULL, `warehouseFk` smallint(6) DEFAULT NULL, `companyFk` smallint(5) unsigned DEFAULT NULL, - `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `updated` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `created` timestamp NULL DEFAULT current_timestamp(), + `updated` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `darkMode` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Salix interface dark mode', PRIMARY KEY (`userFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Configuración de usuario en Salix'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Configuración de usuario en Salix'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41443,20 +38963,20 @@ CREATE TABLE `userLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `originFk` int(10) unsigned NOT NULL, `userFk` int(10) unsigned DEFAULT NULL, - `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `description` text CHARACTER SET utf8, - `changedModel` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `oldInstance` text COLLATE utf8_unicode_ci, - `newInstance` text COLLATE utf8_unicode_ci, + `action` set('insert','update','delete') COLLATE utf8mb3_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT current_timestamp(), + `description` text CHARACTER SET utf8mb3 DEFAULT NULL, + `changedModel` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `oldInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `newInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `changedModelId` int(11) DEFAULT NULL, - `changedModelValue` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `changedModelValue` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `originFk` (`originFk`), KEY `userFk` (`userFk`), CONSTRAINT `userLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `userLog_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41469,14 +38989,14 @@ DROP TABLE IF EXISTS `userPhone`; CREATE TABLE `userPhone` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userFk` int(10) unsigned NOT NULL, - `typeFk` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `phone` varchar(25) COLLATE utf8_unicode_ci NOT NULL, + `typeFk` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `phone` varchar(25) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `UserFk_Phone` (`userFk`,`typeFk`,`phone`), KEY `fgnTypeFk` (`typeFk`), CONSTRAINT `fgnTypeFk` FOREIGN KEY (`typeFk`) REFERENCES `userPhoneType` (`code`) ON UPDATE CASCADE, CONSTRAINT `fgnUserFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41487,10 +39007,10 @@ DROP TABLE IF EXISTS `userPhoneType`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `userPhoneType` ( - `code` varchar(45) COLLATE utf8_unicode_ci NOT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41502,24 +39022,129 @@ DROP TABLE IF EXISTS `vehicle`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `vehicle` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `numberPlate` varchar(10) COLLATE utf8_unicode_ci NOT NULL, - `model` varchar(20) COLLATE utf8_unicode_ci NOT NULL, - `tradeMark` varchar(20) COLLATE utf8_unicode_ci NOT NULL, - `companyFk` smallint(5) unsigned NOT NULL DEFAULT '442', + `numberPlate` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `model` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, + `tradeMark` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, + `companyFk` smallint(5) unsigned NOT NULL DEFAULT 442, `m3` double DEFAULT NULL, - `isActive` tinyint(4) NOT NULL DEFAULT '1', + `isActive` tinyint(4) NOT NULL DEFAULT 1, `warehouseFk` smallint(6) unsigned DEFAULT NULL, - `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `deliveryPointFk` int(11) DEFAULT '6' COMMENT 'Direccion para Buscaman', - `isKmTruckRate` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Computar km como camión en el cálculo de salario de reparto', + `description` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `deliveryPointFk` int(11) DEFAULT 6 COMMENT 'Direccion para Buscaman', + `isKmTruckRate` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'Computar km como camión en el cálculo de salario de reparto', + `photo` blob DEFAULT NULL, + `chassis` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'numero de bastidor', + `fuelTypeFk` int(11) DEFAULT NULL, + `ppeFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `empresa_id` (`companyFk`), KEY `provinceFk_idx` (`warehouseFk`), KEY `vehicle_deliveryPointFk_idx` (`deliveryPointFk`), + KEY `vehicle_FK` (`fuelTypeFk`), + KEY `vehicle_FK_1` (`ppeFk`), CONSTRAINT `provinceFk` FOREIGN KEY (`warehouseFk`) REFERENCES `province` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT `vehicle_FK` FOREIGN KEY (`fuelTypeFk`) REFERENCES `fuelType` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `vehicle_FK_1` FOREIGN KEY (`ppeFk`) REFERENCES `ppe` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `vehicle_deliveryPointFk` FOREIGN KEY (`deliveryPointFk`) REFERENCES `deliveryPoint` (`id`) ON UPDATE CASCADE, CONSTRAINT `vehicle_ibfk_1` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `vehicleDms` +-- + +DROP TABLE IF EXISTS `vehicleDms`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `vehicleDms` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `vehicleFk` int(10) unsigned NOT NULL, + `dmsFk` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `vehicleDms_FK` (`vehicleFk`), + KEY `vehicleDms_FK_1` (`dmsFk`), + CONSTRAINT `vehicleDms_FK` FOREIGN KEY (`vehicleFk`) REFERENCES `vehicle` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `vehicleDms_FK_1` FOREIGN KEY (`dmsFk`) REFERENCES `dms` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Gestion documental de vehicle'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `vehicleEvent` +-- + +DROP TABLE IF EXISTS `vehicleEvent`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `vehicleEvent` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `started` date DEFAULT NULL, + `finished` date DEFAULT NULL, + `vehicleStateFk` int(11) DEFAULT NULL, + `description` varchar(250) COLLATE utf8mb3_unicode_ci NOT NULL, + `vehicleFk` int(11) NOT NULL, + `userFk` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `vehicleEvent_FK` (`vehicleStateFk`), + KEY `vehicleEvent_FK_1` (`userFk`), + CONSTRAINT `vehicleEvent_FK` FOREIGN KEY (`vehicleStateFk`) REFERENCES `vehicleState` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `vehicleEvent_FK_1` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `vehicleInvoiceIn` +-- + +DROP TABLE IF EXISTS `vehicleInvoiceIn`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `vehicleInvoiceIn` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `vehicleFk` int(10) unsigned NOT NULL, + `invoiceInFk` mediumint(8) unsigned NOT NULL, + `amount` decimal(10,2) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `vehicleInvoiceIn_FK` (`vehicleFk`), + KEY `vehicleInvoiceIn_FK_1` (`invoiceInFk`), + CONSTRAINT `vehicleInvoiceIn_FK` FOREIGN KEY (`vehicleFk`) REFERENCES `vehicle` (`id`), + CONSTRAINT `vehicleInvoiceIn_FK_1` FOREIGN KEY (`invoiceInFk`) REFERENCES `invoiceIn` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `vehicleNotes` +-- + +DROP TABLE IF EXISTS `vehicleNotes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `vehicleNotes` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `vehicleFk` int(10) unsigned NOT NULL, + `created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `note` text COLLATE utf8mb3_unicode_ci NOT NULL, + `userFk` int(10) unsigned DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `vehicleNotes_FK_1` (`userFk`), + KEY `vehicleNotes_FK` (`vehicleFk`), + CONSTRAINT `vehicleNotes_FK` FOREIGN KEY (`vehicleFk`) REFERENCES `vehicle` (`id`), + CONSTRAINT `vehicleNotes_FK_1` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `vehicleState` +-- + +DROP TABLE IF EXISTS `vehicleState`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `vehicleState` ( + `id` int(11) NOT NULL, + `state` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41532,16 +39157,17 @@ DROP TABLE IF EXISTS `volumeConfig`; CREATE TABLE `volumeConfig` ( `palletM3` decimal(10,2) DEFAULT NULL COMMENT 'metros cúbicos', `trolleyM3` decimal(10,2) DEFAULT NULL COMMENT 'metros cúbicos', - `dutchCompressionRate` double NOT NULL DEFAULT '1', + `dutchCompressionRate` double NOT NULL DEFAULT 1, `standardFlowerBox` int(11) NOT NULL COMMENT 'en litros', - `minCompressionRate` decimal(10,2) DEFAULT '0.30' COMMENT 'minimo permitido por la empresa', - `ccLength` int(11) NOT NULL DEFAULT '130' COMMENT 'longitud útil para la carga de un CC, en cm', - `ccWidth` int(11) NOT NULL DEFAULT '60' COMMENT 'ancho útil para la carga en un CC, en cm', - `sorterPallet_m3` decimal(5,1) NOT NULL DEFAULT '2.0' COMMENT 'volumen minimo para extraer pallet del sorter', - `minTicketVolume` int(11) NOT NULL DEFAULT '75' COMMENT 'volumen mínimo, en litros, para que un pedido sea preparable', - `shelveVolume` int(11) DEFAULT '200' COMMENT 'volumen en litros de una bandeja standard, a efectos de los sacadores', - `minTicketValue` int(11) NOT NULL DEFAULT '50' -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='almacena el valor standard para volumenes convencionales de Verdnatura, en metros cúbicos'; + `minCompressionRate` decimal(10,2) DEFAULT 0.30 COMMENT 'minimo permitido por la empresa', + `ccLength` int(11) NOT NULL DEFAULT 130 COMMENT 'longitud útil para la carga de un CC, en cm', + `ccWidth` int(11) NOT NULL DEFAULT 60 COMMENT 'ancho útil para la carga en un CC, en cm', + `sorterPallet_m3` decimal(5,1) NOT NULL DEFAULT 2.0 COMMENT 'volumen minimo para extraer pallet del sorter', + `minTicketVolume` int(11) NOT NULL DEFAULT 75 COMMENT 'volumen mínimo, en litros, para que un pedido sea preparable', + `shelveVolume` int(11) DEFAULT 200 COMMENT 'volumen en litros de una bandeja standard, a efectos de los sacadores', + `minTicketValue` int(11) NOT NULL DEFAULT 50, + `aerealVolumetricDensity` decimal(10,1) DEFAULT 167.0 COMMENT 'factor de conversión para calcular el peso tasable aereo' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='almacena el valor standard para volumenes convencionales de Verdnatura, en metros cúbicos'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41553,10 +39179,10 @@ DROP TABLE IF EXISTS `wagon`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `wagon` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `volume` int(11) NOT NULL DEFAULT '150' COMMENT 'Volumen en litros', - `plate` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Matrícula', + `volume` int(11) NOT NULL DEFAULT 150 COMMENT 'Volumen en litros', + `plate` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL COMMENT 'Matrícula', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41568,15 +39194,15 @@ DROP TABLE IF EXISTS `wagonVolumetry`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `wagonVolumetry` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `level` int(10) unsigned NOT NULL DEFAULT '0', - `lines` int(10) unsigned NOT NULL DEFAULT '1', - `liters` int(10) unsigned NOT NULL DEFAULT '0', - `height` int(10) unsigned NOT NULL DEFAULT '20', + `level` int(10) unsigned NOT NULL DEFAULT 0, + `lines` int(10) unsigned NOT NULL DEFAULT 1, + `liters` int(10) unsigned NOT NULL DEFAULT 0, + `height` int(10) unsigned NOT NULL DEFAULT 20, `wagonFk` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `wagonVolumetry_FK` (`wagonFk`), CONSTRAINT `wagonVolumetry_FK` FOREIGN KEY (`wagonFk`) REFERENCES `wagon` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41588,57 +39214,62 @@ DROP TABLE IF EXISTS `warehouse`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `warehouse` ( `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(20) COLLATE utf8_unicode_ci NOT NULL, - `code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `isFeedStock` tinyint(1) unsigned NOT NULL DEFAULT '0', - `addressName` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `delay` double NOT NULL DEFAULT '0.004', - `hasAvailable` tinyint(4) NOT NULL DEFAULT '0', - `isForTicket` tinyint(2) unsigned zerofill NOT NULL DEFAULT '00', - `countryFk` mediumint(8) unsigned NOT NULL DEFAULT '1', - `labelZone` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'almacenes donde hay produccion', - `hasComission` tinyint(4) NOT NULL DEFAULT '0', - `isInventory` tinyint(2) NOT NULL DEFAULT '0', - `isComparative` tinyint(2) NOT NULL DEFAULT '0' COMMENT 'Si esta a true,en la comparativa muestra el stock de este almacen, cuando no se especifica almacen.', - `valuatedInventory` tinyint(2) NOT NULL DEFAULT '0' COMMENT 'Determina si se incluye en el informe de inventario valorado', - `isManaged` tinyint(2) NOT NULL DEFAULT '0' COMMENT 'Se añaden los cubos de expedition a la tabla ticketPackaging', - `hasConfectionTeam` tinyint(1) unsigned NOT NULL DEFAULT '0', - `hasStowaway` tinyint(1) NOT NULL DEFAULT '0', - `hasDms` tinyint(1) NOT NULL DEFAULT '0', + `name` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, + `code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `isFeedStock` tinyint(1) unsigned NOT NULL DEFAULT 0, + `addressName` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `delay` double NOT NULL DEFAULT 0.004, + `hasAvailable` tinyint(4) NOT NULL DEFAULT 0, + `isForTicket` tinyint(2) unsigned zerofill NOT NULL DEFAULT 00, + `countryFk` mediumint(8) unsigned NOT NULL DEFAULT 1, + `labelZone` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'almacenes donde hay produccion', + `hasComission` tinyint(4) NOT NULL DEFAULT 0, + `isInventory` tinyint(2) NOT NULL DEFAULT 0, + `isComparative` tinyint(2) NOT NULL DEFAULT 0 COMMENT 'Si esta a true,en la comparativa muestra el stock de este almacen, cuando no se especifica almacen.', + `valuatedInventory` tinyint(2) NOT NULL DEFAULT 0 COMMENT 'Determina si se incluye en el informe de inventario valorado', + `isManaged` tinyint(2) NOT NULL DEFAULT 0 COMMENT 'Se añaden los cubos de expedition a la tabla ticketPackaging', + `hasConfectionTeam` tinyint(1) unsigned NOT NULL DEFAULT 0, + `hasStowaway` tinyint(1) NOT NULL DEFAULT 0, + `hasDms` tinyint(1) NOT NULL DEFAULT 0, `pickUpAgencyModeFk` int(11) DEFAULT NULL, - `isBuyerToBeEmailed` tinyint(2) NOT NULL DEFAULT '0', + `isBuyerToBeEmailed` tinyint(2) NOT NULL DEFAULT 0, `aliasFk` smallint(5) unsigned DEFAULT NULL, `labelReport` int(11) DEFAULT NULL, - `hasUbications` tinyint(1) NOT NULL DEFAULT '1', - `hasProduction` tinyint(1) NOT NULL DEFAULT '0', + `hasUbications` tinyint(1) NOT NULL DEFAULT 1, + `hasProduction` tinyint(1) NOT NULL DEFAULT 0, `addressFk` int(11) DEFAULT NULL, - `hasMachine` tinyint(1) NOT NULL DEFAULT '0', - `isLogiflora` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Este almacén acepta productos de Logiflora', + `hasMachine` tinyint(1) NOT NULL DEFAULT 0, + `isLogiflora` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Este almacén acepta productos de Logiflora', + `isBionic` tinyint(1) NOT NULL DEFAULT 1, PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`name`), KEY `Id_Paises` (`countryFk`), KEY `isComparativeIdx` (`isComparative`), KEY `warehouse_ibfk_1_idx` (`aliasFk`), KEY `warehouse_FK` (`addressFk`), + KEY `warehouse_FK_1` (`pickUpAgencyModeFk`), CONSTRAINT `warehouse_FK` FOREIGN KEY (`addressFk`) REFERENCES `address` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `warehouse_FK_1` FOREIGN KEY (`pickUpAgencyModeFk`) REFERENCES `agencyMode` (`id`) ON UPDATE CASCADE, CONSTRAINT `warehouse_ibfk_1` FOREIGN KEY (`countryFk`) REFERENCES `country` (`id`), CONSTRAINT `warehouse_ibfk_2` FOREIGN KEY (`aliasFk`) REFERENCES `warehouseAlias` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `warehouse_afterInsert` AFTER INSERT ON `warehouse` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`warehouse_afterInsert` + AFTER INSERT ON `warehouse` + FOR EACH ROW BEGIN IF NEW.isFeedStock THEN INSERT INTO warehouseAlias(`name`) VALUES(NEW.`name`); - INSERT INTO warehouseJoined(warehouseFk, warehouseAliasFk) + INSERT INTO warehouseJoined(warehouseFk, warehouseAliasFk) VALUES(NEW.id,LAST_INSERT_ID()); END IF; END */;; @@ -41652,15 +39283,17 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `warehouse_afterUpdate` AFTER UPDATE ON `warehouse` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`warehouse_afterUpdate` + AFTER UPDATE ON `warehouse` + FOR EACH ROW BEGIN IF NEW.isFeedStock IS TRUE and OLD.isFeedStock IS FALSE then INSERT INTO warehouseAlias(`name`) VALUES(NEW.`name`); - INSERT INTO warehouseJoined(warehouseFk, warehouseAliasFk) + INSERT INTO warehouseJoined(warehouseFk, warehouseAliasFk) VALUES(NEW.id,LAST_INSERT_ID()); END IF; END */;; @@ -41679,10 +39312,10 @@ DROP TABLE IF EXISTS `warehouseAlias`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `warehouseAlias` ( `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name_UNIQUE` (`name`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41693,9 +39326,9 @@ DROP TABLE IF EXISTS `workCenter`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workCenter` ( - `id` int(11) NOT NULL DEFAULT '0', + `id` int(11) NOT NULL DEFAULT 0, `name` varchar(255) DEFAULT NULL, - `payrollCenterFk` int(11) DEFAULT NULL, + `payrollCenterFk` int(11) DEFAULT NULL COMMENT 'Campo workcenter en A3', `counter` bigint(20) DEFAULT NULL, `warehouseFk` smallint(6) DEFAULT NULL, `street` varchar(255) DEFAULT NULL, @@ -41703,7 +39336,7 @@ CREATE TABLE `workCenter` ( PRIMARY KEY (`id`), KEY `workCenter_geoFk_idx` (`geoFk`), CONSTRAINT `workCenter_geoFk` FOREIGN KEY (`geoFk`) REFERENCES `zoneGeo` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41718,7 +39351,7 @@ CREATE TABLE `workCenterHoliday` ( `days` double NOT NULL, `year` smallint(6) NOT NULL, PRIMARY KEY (`workCenterFk`,`year`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41730,43 +39363,63 @@ DROP TABLE IF EXISTS `worker`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `worker` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `code` varchar(3) COLLATE utf8_unicode_ci NOT NULL, - `firstName` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `lastName` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `password__` varchar(50) CHARACTER SET utf8 DEFAULT NULL, - `email__` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `extension__` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, + `firstName` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `lastName` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `sub` int(11) unsigned DEFAULT NULL, - `user__` varchar(20) CHARACTER SET utf8 DEFAULT NULL, - `typeBussines__` varchar(30) CHARACTER SET utf8 DEFAULT 'no dejar vacio' COMMENT 'campo obsoleto, actualmente se rellena en laboral', - `laborCategory__` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `started__` datetime DEFAULT NULL, - `ended__` datetime DEFAULT NULL, - `notes__` varchar(254) COLLATE utf8_unicode_ci DEFAULT NULL, - `photo` blob, - `fi__` varchar(9) COLLATE utf8_unicode_ci DEFAULT NULL, - `address__` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `birthed__` date NOT NULL, - `maritalStatus__` enum('soltero/a','casado/a') COLLATE utf8_unicode_ci NOT NULL, - `phone` varchar(9) COLLATE utf8_unicode_ci NOT NULL, - `clientFk__` int(11) DEFAULT NULL, + `photo` blob DEFAULT NULL, + `phone` varchar(9) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `mobileExtension` int(4) DEFAULT NULL, `userFk` int(10) unsigned DEFAULT NULL, - `bossFk` int(11) NOT NULL DEFAULT '103', + `bossFk` int(11) NOT NULL DEFAULT 103, `fiDueDate` datetime DEFAULT NULL, - `hasMachineryAuthorized` tinyint(2) DEFAULT '0', + `hasMachineryAuthorized` tinyint(2) DEFAULT 0, `seniority` date DEFAULT NULL, - `isTodayRelative` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Para el F11. Calcula los problemas de visiblidad en funcion del dia actual', - `isF11Allowed` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Usuario autorizado para abrir el F11', + `isTodayRelative` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Para el F11. Calcula los problemas de visiblidad en funcion del dia actual', + `isF11Allowed` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Usuario autorizado para abrir el F11', + `sectorFk` int(11) DEFAULT NULL COMMENT 'Sector que tiene asociado el trabajador.', + `maritalStatus` enum('S','M') COLLATE utf8mb3_unicode_ci NOT NULL, + `labelerFk` tinyint(3) unsigned DEFAULT NULL, + `originCountryFk` mediumint(8) unsigned DEFAULT NULL COMMENT 'País de origen', + `educationLevelFk` smallint(6) DEFAULT NULL, + `SSN` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fi` varchar(15) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `birth` date DEFAULT NULL, + `isDisable` tinyint(1) NOT NULL DEFAULT 0, + `isFreelance` tinyint(1) NOT NULL DEFAULT 0, + `isSsDiscounted` tinyint(1) NOT NULL DEFAULT 0, + `sex` enum('M','F') COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'F' COMMENT 'M Masculino F Femenino', + `businessFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `CodigoTrabajador_UNIQUE` (`code`), - UNIQUE KEY `user` (`user__`), UNIQUE KEY `user_id_UNIQUE` (`userFk`), - UNIQUE KEY `Id_Cliente_Interno` (`clientFk__`), + UNIQUE KEY `worker_business` (`businessFk`), KEY `sub` (`sub`), KEY `boss_idx` (`bossFk`), - CONSTRAINT `Clientes` FOREIGN KEY (`clientFk__`) REFERENCES `client` (`id`) ON UPDATE CASCADE, + KEY `worker_FK` (`labelerFk`), + KEY `worker_FK_2` (`educationLevelFk`), + KEY `worker_FK_1` (`originCountryFk`), + CONSTRAINT `worker_FK` FOREIGN KEY (`labelerFk`) REFERENCES `printer` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `worker_FK_1` FOREIGN KEY (`originCountryFk`) REFERENCES `country` (`id`) ON UPDATE CASCADE, + CONSTRAINT `worker_FK_2` FOREIGN KEY (`educationLevelFk`) REFERENCES `educationLevel` (`id`) ON UPDATE CASCADE, + CONSTRAINT `worker_businessFk` FOREIGN KEY (`businessFk`) REFERENCES `business` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `worker_ibfk_1` FOREIGN KEY (`id`) REFERENCES `account`.`user` (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `workerAppTester` +-- + +DROP TABLE IF EXISTS `workerAppTester`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `workerAppTester` ( + `workerFk` int(10) unsigned NOT NULL, + PRIMARY KEY (`workerFk`), + KEY `workerAppTester_FK` (`workerFk`), + CONSTRAINT `workerAppTester_FK_1` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='La tabla incluye usuarios testers que actualizarán a una versión diferente que el resto para testear los cambios nuevos en las app'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41786,7 +39439,7 @@ CREATE TABLE `workerBosses` ( KEY `fg_bossFk_worker_idx` (`bossFk`), CONSTRAINT `fg_bossFk_worker` FOREIGN KEY (`bossFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fg_workerFk_worker` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41799,11 +39452,28 @@ SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; /*!50001 CREATE TABLE `workerBusinessDated` ( `dated` tinyint NOT NULL, - `business_id` tinyint NOT NULL, + `businessFk` tinyint NOT NULL, `workerFk` tinyint NOT NULL ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; +-- +-- Table structure for table `workerBusinessType` +-- + +DROP TABLE IF EXISTS `workerBusinessType`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `workerBusinessType` ( + `id` int(11) NOT NULL, + `name` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `isFullTime` tinyint(1) NOT NULL DEFAULT 1, + `isPermanent` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Contrato fijo', + `hasHolidayEntitlement` tinyint(1) DEFAULT 1 COMMENT 'Tiene derecho a vacaciones', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Temporary table structure for view `workerCalendar` -- @@ -41831,13 +39501,13 @@ CREATE TABLE `workerClockLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `originFk` int(11) NOT NULL, `userFk` int(10) unsigned NOT NULL, - `action` set('insert','update','delete','select') COLLATE utf8_unicode_ci NOT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `description` text COLLATE utf8_unicode_ci NOT NULL, + `action` set('insert','update','delete','select') COLLATE utf8mb3_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT current_timestamp(), + `description` text COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), KEY `logWorkerClockoriginFk` (`originFk`), KEY `logWorkerClockuserFk` (`userFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41853,7 +39523,7 @@ CREATE TABLE `workerConfig__` ( PRIMARY KEY (`id`), KEY `defaultWorkerFk` (`defaultWorkerFk`), CONSTRAINT `workerConfig___ibfk_1` FOREIGN KEY (`defaultWorkerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41870,20 +39540,6 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `workerDepartmentTest` --- - -DROP TABLE IF EXISTS `workerDepartmentTest`; -/*!50001 DROP VIEW IF EXISTS `workerDepartmentTest`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `workerDepartmentTest` ( - `workerFk` tinyint NOT NULL, - `departmentFk` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `workerDisableExcluded` -- @@ -41896,7 +39552,7 @@ CREATE TABLE `workerDisableExcluded` ( `dated` date DEFAULT NULL, PRIMARY KEY (`workerFk`), CONSTRAINT `workerDisableExcludedFk1` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='No se deshabilitan hasta la fecha especificada'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='No se deshabilitan hasta la fecha especificada'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41913,7 +39569,7 @@ CREATE TABLE `workerDistributionCategory` ( PRIMARY KEY (`id`), KEY `workerDistributionCategory_workerFk_idx` (`workerFk`), CONSTRAINT `workerDistributionCategory_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41927,13 +39583,13 @@ CREATE TABLE `workerDocument` ( `id` int(11) NOT NULL AUTO_INCREMENT, `worker` int(10) unsigned DEFAULT NULL, `document` int(11) DEFAULT NULL, - `isReadableByWorker` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Indica si el empleado tiene permiso para acceder al documento', + `isReadableByWorker` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Indica si el empleado tiene permiso para acceder al documento', PRIMARY KEY (`id`), KEY `workerDocument_ibfk_1` (`worker`), KEY `workerDocument_ibfk_2` (`document`), CONSTRAINT `workerDocument_ibfk_1` FOREIGN KEY (`worker`) REFERENCES `worker` (`userFk`) ON UPDATE CASCADE, - CONSTRAINT `workerDocument_ibfk_2` FOREIGN KEY (`document`) REFERENCES `dms` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + CONSTRAINT `workerDocument_ibfk_2` FOREIGN KEY (`document`) REFERENCES `dms` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41945,10 +39601,10 @@ DROP TABLE IF EXISTS `workerEmergencyBoss`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workerEmergencyBoss` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `value` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Table to save all responsible people phones', + `name` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `value` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT 'Table to save all responsible people phones', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41965,7 +39621,7 @@ CREATE TABLE `workerHourPrice` ( `nightInc` decimal(4,2) DEFAULT NULL, `extraInc` decimal(4,2) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Recoge los acuerdos de los distintos convenios'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Recoge los acuerdos de los distintos convenios'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -41977,22 +39633,22 @@ DROP TABLE IF EXISTS `workerIrpf`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workerIrpf` ( `workerFk` int(10) unsigned NOT NULL, - `spouseNif` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `spouseNif` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `geographicMobilityDate` date DEFAULT NULL, `disabilityGradeFk` int(11) DEFAULT NULL, - `isDependend` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Acredita la necesidad de ayuda de terceras personas o movilidad reducida', - `familySituation` enum('1','2','3') COLLATE utf8_unicode_ci DEFAULT '1', + `isDependend` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Acredita la necesidad de ayuda de terceras personas o movilidad reducida', + `familySituation` enum('1','2','3') COLLATE utf8mb3_unicode_ci DEFAULT '1', `spousePension` decimal(10,2) DEFAULT NULL COMMENT 'Apartado 4 - Pensión compensatoria en favor del conyuge ', `childPension` decimal(10,2) DEFAULT NULL COMMENT 'Apartado 4 - Anualidades por alimentos en favor de los hijos', - `hasHousingPaymentBefore` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Apartado 5 - Pagos por adquisición o rehabilitación de la vivienda habitual utilizando financiación ajena, con derecho a deducción del IRPF', - `hasHousingPaymentAfter` tinyint(1) NOT NULL DEFAULT '0', - `hasExtendedWorking` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Aprtado 1 - prolongar la actividad laboral', - `updated` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `hasHousingPaymentBefore` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Apartado 5 - Pagos por adquisición o rehabilitación de la vivienda habitual utilizando financiación ajena, con derecho a deducción del IRPF', + `hasHousingPaymentAfter` tinyint(1) NOT NULL DEFAULT 0, + `hasExtendedWorking` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Aprtado 1 - prolongar la actividad laboral', + `updated` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`workerFk`), KEY `workerIrpf_disabilityGradeFk` (`disabilityGradeFk`), CONSTRAINT `workerIrpf_disabilityGradeFk` FOREIGN KEY (`disabilityGradeFk`) REFERENCES `disabilityGrade` (`id`) ON UPDATE CASCADE, CONSTRAINT `workerIrpf_wokerFk` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Modelo 145 IRPF apartado 1 - 4 y 5 '; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Modelo 145 IRPF apartado 1 - 4 y 5 '; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42006,29 +39662,29 @@ CREATE TABLE `workerJourney` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userFk` int(10) unsigned NOT NULL, `dated` date NOT NULL, - `total` decimal(5,2) NOT NULL DEFAULT '0.00', - `priceOrdinaryHour` decimal(5,2) NOT NULL DEFAULT '0.00', - `nocturn` decimal(5,2) NOT NULL DEFAULT '0.00', - `priceNocturnHour` decimal(5,2) NOT NULL DEFAULT '0.00', - `holiday` decimal(5,2) NOT NULL DEFAULT '0.00', - `priceHolidayHour` decimal(5,2) NOT NULL DEFAULT '0.00', - `lunch` decimal(5,2) NOT NULL DEFAULT '0.00', - `priceExtraHour` decimal(5,2) NOT NULL DEFAULT '0.00', - `extra` decimal(5,2) NOT NULL DEFAULT '0.00', - `contractJourney` decimal(5,2) NOT NULL DEFAULT '0.00', - `priceExtraHoliday` decimal(5,2) NOT NULL DEFAULT '0.00', + `total` decimal(5,2) NOT NULL DEFAULT 0.00, + `priceOrdinaryHour` decimal(5,2) NOT NULL DEFAULT 0.00, + `nocturn` decimal(5,2) NOT NULL DEFAULT 0.00, + `priceNocturnHour` decimal(5,2) NOT NULL DEFAULT 0.00, + `holiday` decimal(5,2) NOT NULL DEFAULT 0.00, + `priceHolidayHour` decimal(5,2) NOT NULL DEFAULT 0.00, + `lunch` decimal(5,2) NOT NULL DEFAULT 0.00, + `priceExtraHour` decimal(5,2) NOT NULL DEFAULT 0.00, + `extra` decimal(5,2) NOT NULL DEFAULT 0.00, + `contractJourney` decimal(5,2) NOT NULL DEFAULT 0.00, + `priceExtraHoliday` decimal(5,2) NOT NULL DEFAULT 0.00, `businessFk` int(11) DEFAULT NULL, - `isPaid` tinyint(1) NOT NULL DEFAULT '0', - `isUpdated` tinyint(1) NOT NULL DEFAULT '0', - `permission` decimal(5,2) NOT NULL DEFAULT '0.00', + `isPaid` tinyint(1) NOT NULL DEFAULT 0, + `isUpdated` tinyint(1) NOT NULL DEFAULT 0, + `permission` decimal(5,2) NOT NULL DEFAULT 0.00, PRIMARY KEY (`id`), UNIQUE KEY `userFk_UNIQUE` (`userFk`,`dated`), KEY `fk_workerJourney_user_idx` (`userFk`), - KEY `workerJourney_businessFk_idx` (`businessFk`), KEY `workerJourney_dated_idx` (`dated`), + KEY `workerJourney_businessFk` (`businessFk`), CONSTRAINT `fk_workerJourney_user` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE, - CONSTRAINT `workerJourney_businessFk` FOREIGN KEY (`businessFk`) REFERENCES `postgresql`.`business` (`business_id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + CONSTRAINT `workerJourney_businessFk` FOREIGN KEY (`businessFk`) REFERENCES `business` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42045,7 +39701,8 @@ SET character_set_client = utf8; `workCenterFk` tinyint NOT NULL, `started` tinyint NOT NULL, `ended` tinyint NOT NULL, - `departmentFk` tinyint NOT NULL + `departmentFk` tinyint NOT NULL, + `payedHolidays` tinyint NOT NULL ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; @@ -42060,20 +39717,20 @@ CREATE TABLE `workerLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `originFk` int(10) unsigned NOT NULL, `userFk` int(10) unsigned NOT NULL, - `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `description` text COLLATE utf8_unicode_ci NOT NULL, - `changedModel` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `oldInstance` text COLLATE utf8_unicode_ci, - `newInstance` text COLLATE utf8_unicode_ci, + `action` set('insert','update','delete') COLLATE utf8mb3_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT current_timestamp(), + `description` text COLLATE utf8mb3_unicode_ci NOT NULL, + `changedModel` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `oldInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `newInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `changedModelId` int(11) DEFAULT NULL, - `changedModelValue` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `changedModelValue` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `workerFk_idx` (`originFk`), KEY `userFk_idx` (`userFk`), CONSTRAINT `userFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `workerFk` FOREIGN KEY (`originFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42085,16 +39742,16 @@ DROP TABLE IF EXISTS `workerMana`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workerMana` ( `workerFk` int(10) unsigned NOT NULL, - `size` int(11) NOT NULL DEFAULT '300', - `amount` int(11) NOT NULL DEFAULT '0', - `pricesModifierRate` double NOT NULL DEFAULT '0', - `isPricesModifierActivated` tinyint(1) NOT NULL DEFAULT '1', - `minRate` decimal(3,2) NOT NULL DEFAULT '-0.05', - `maxRate` decimal(3,2) NOT NULL DEFAULT '0.05', + `size` int(11) NOT NULL DEFAULT 300, + `amount` int(11) NOT NULL DEFAULT 0, + `pricesModifierRate` double NOT NULL DEFAULT 0, + `isPricesModifierActivated` tinyint(1) NOT NULL DEFAULT 1, + `minRate` decimal(3,2) NOT NULL DEFAULT -0.05, + `maxRate` decimal(3,2) NOT NULL DEFAULT 0.05, PRIMARY KEY (`workerFk`), KEY `fk_mana_spellers_Trabajadores_idx` (`workerFk`), CONSTRAINT `fk_mana_spellers_Trabajadores` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42108,28 +39765,9 @@ CREATE TABLE `workerManaExcluded` ( `workerFk` int(10) unsigned NOT NULL, PRIMARY KEY (`workerFk`), CONSTRAINT `mana_spellers_excluded_fk1` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Usuarios que tienen que estar excluidos del cálculo del maná'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Usuarios que tienen que estar excluidos del cálculo del maná'; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `workerMana__` --- - -DROP TABLE IF EXISTS `workerMana__`; -/*!50001 DROP VIEW IF EXISTS `workerMana__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `workerMana__` ( - `workerFk` tinyint NOT NULL, - `size` tinyint NOT NULL, - `amount` tinyint NOT NULL, - `pricesModifierRate` tinyint NOT NULL, - `isPricesModifierActivated` tinyint NOT NULL, - `minRate` tinyint NOT NULL, - `maxRate` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Temporary table structure for view `workerMedia` -- @@ -42144,6 +39782,40 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; +-- +-- Table structure for table `workerMistake` +-- + +DROP TABLE IF EXISTS `workerMistake`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `workerMistake` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `userFk` int(10) unsigned NOT NULL, + `workerMistakeTypeFk` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `created` timestamp NOT NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`), + KEY `workerMistake_fk1_idx` (`userFk`), + KEY `workerMistake_fk2_idx` (`workerMistakeTypeFk`), + CONSTRAINT `workerMistake_fk1` FOREIGN KEY (`userFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `workerMistake_fk2` FOREIGN KEY (`workerMistakeTypeFk`) REFERENCES `workerMistakeType` (`code`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `workerMistakeType` +-- + +DROP TABLE IF EXISTS `workerMistakeType`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `workerMistakeType` ( + `code` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, + PRIMARY KEY (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Table structure for table `workerRelatives` -- @@ -42154,19 +39826,19 @@ DROP TABLE IF EXISTS `workerRelatives`; CREATE TABLE `workerRelatives` ( `id` int(11) NOT NULL AUTO_INCREMENT, `workerFk` int(10) unsigned NOT NULL, - `isDescendant` tinyint(1) DEFAULT '1' COMMENT 'Descendientes - Ascendientes', + `isDescendant` tinyint(1) DEFAULT 1 COMMENT 'Descendientes - Ascendientes', `disabilityGradeFk` int(11) DEFAULT NULL, `birthed` int(4) NOT NULL, `adoptionYear` int(4) DEFAULT NULL COMMENT 'Solo en el caso de descendientes', - `isDependend` tinyint(1) DEFAULT '0', - `isJointCustody` tinyint(1) DEFAULT '0' COMMENT 'Solo en el caso de descendientes', - `updated` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `isDependend` tinyint(1) DEFAULT 0, + `isJointCustody` tinyint(1) DEFAULT 0 COMMENT 'Solo en el caso de descendientes', + `updated` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `workerRelatives_disabilityGradeFk` (`disabilityGradeFk`), KEY `workerRelatives_workerFk` (`workerFk`), CONSTRAINT `workerRelatives_disabilityGradeFk` FOREIGN KEY (`disabilityGradeFk`) REFERENCES `disabilityGrade` (`id`) ON UPDATE CASCADE, CONSTRAINT `workerRelatives_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `workerIrpf` (`workerFk`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Modelo 145 IRPF apartado 2 y 3'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Modelo 145 IRPF apartado 2 y 3'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42179,17 +39851,17 @@ DROP TABLE IF EXISTS `workerShelving`; CREATE TABLE `workerShelving` ( `id` int(11) NOT NULL AUTO_INCREMENT, `workerFk` int(10) unsigned NOT NULL, - `shelvingFk` varchar(10) CHARACTER SET utf8 NOT NULL, + `shelvingFk` varchar(10) CHARACTER SET utf8mb3 NOT NULL, `collectionFk` int(11) DEFAULT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `workerShelving_shelving_fk` (`shelvingFk`), KEY `workerShelving_FK` (`workerFk`), KEY `workerShelving_FK_1` (`collectionFk`), CONSTRAINT `workerShelving_FK` FOREIGN KEY (`collectionFk`) REFERENCES `collection` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, - CONSTRAINT `workerShelving_shelving_fk` FOREIGN KEY (`shelvingFk`) REFERENCES `shelving` (`code`) ON UPDATE CASCADE, + CONSTRAINT `workerShelving_FK_1` FOREIGN KEY (`shelvingFk`) REFERENCES `shelving` (`code`) ON UPDATE CASCADE, CONSTRAINT `workerShelving_worker_fk` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='utilizaremos el id para establecer la prioridad de los carros a asignar'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='utilizaremos el id para establecer la prioridad de los carros a asignar'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42247,7 +39919,7 @@ CREATE TABLE `workerTeam` ( KEY `user_idx` (`workerFk`), KEY `team_idx` (`team`), CONSTRAINT `user_team` FOREIGN KEY (`workerFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42275,37 +39947,35 @@ CREATE TABLE `workerTimeControl` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userFk` int(10) unsigned NOT NULL, `timed` datetime NOT NULL, - `manual` tinyint(4) NOT NULL DEFAULT '0', + `manual` tinyint(4) NOT NULL DEFAULT 0, `order` int(11) DEFAULT NULL, `warehouseFk` smallint(6) unsigned DEFAULT NULL, - `direction` enum('in','out','middle') COLLATE utf8_unicode_ci DEFAULT 'middle', - `isSendMail` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Fichadas generadas autómaticamente con el procedimiento vn.workerTimeControl_sendMail', + `direction` enum('in','out','middle') COLLATE utf8mb3_unicode_ci DEFAULT 'middle', + `isSendMail` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'Fichadas generadas autómaticamente con el procedimiento vn.workerTimeControl_sendMail', PRIMARY KEY (`id`), UNIQUE KEY `userFk_Timed_uniq` (`userFk`,`timed`), KEY `warehouseFkfk1_idx` (`warehouseFk`), + KEY `timed_idx` (`timed`), CONSTRAINT `warehouseFk_1` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, CONSTRAINT `workerTimeControl_fk1` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Fichadas'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Fichadas'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`workerTimeControl_AI` AFTER INSERT ON `workerTimeControl` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`workerTimeControl_AI` + AFTER INSERT ON `workerTimeControl` + FOR EACH ROW BEGIN - IF NEW.timed > DATE_ADD(NOW(), INTERVAL 1 DAY) THEN - CALL mail_insert( - 'cau@verdnatura.es', - NULL, - 'Fichada fuera de rango', - CONCAT('Se ha introducido una fichada con fecha/hora ', NEW.timed, ' del usuario ', NEW.userFk) - ); - END IF; + IF NEW.timed > DATE_ADD(util.VN_NOW(), INTERVAL 1 DAY) THEN + CALL util.throw('date in the future'); + END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -42327,19 +39997,24 @@ CREATE TABLE `workerTimeControlConfig` ( `shortWeekBreak` int(11) NOT NULL, `longWeekBreak` int(11) NOT NULL, `weekScope` int(11) NOT NULL, - `mailPass` varchar(45) COLLATE utf8_bin NOT NULL, - `mailHost` varchar(45) COLLATE utf8_bin NOT NULL, - `mailSuccessFolder` varchar(45) COLLATE utf8_bin NOT NULL, - `mailErrorFolder` varchar(45) COLLATE utf8_bin NOT NULL, - `mailUser` varchar(45) COLLATE utf8_bin NOT NULL, + `mailPass` varchar(45) COLLATE utf8mb3_bin NOT NULL, + `mailHost` varchar(45) COLLATE utf8mb3_bin NOT NULL, + `mailSuccessFolder` varchar(45) COLLATE utf8mb3_bin NOT NULL, + `mailErrorFolder` varchar(45) COLLATE utf8mb3_bin NOT NULL, + `mailUser` varchar(45) COLLATE utf8mb3_bin NOT NULL, `minHoursToBreak` decimal(5,2) unsigned NOT NULL COMMENT 'Horas mínimas que se deben trabajar para añadir descanso remunerado', `breakHours` decimal(5,2) unsigned NOT NULL COMMENT 'Descanso remunerado', `hoursCompleteWeek` int(10) unsigned NOT NULL COMMENT 'Horas a realizar por semana para que se considere jornada completa', `startNightlyHours` time NOT NULL, `endNightlyHours` time NOT NULL, `maxTimePerDay` int(11) unsigned NOT NULL COMMENT 'Maximo tiempo transcurrido en segundos desde que se inicia la jornada hasta que se termina', + `breakTime` int(11) DEFAULT NULL COMMENT 'Tiempo de descanso expresado en segundos', + `timeToBreakTime` int(11) DEFAULT NULL COMMENT 'Tiempo mínimo que se debe trabajar para añadir descanso, expresado en segundos', + `dayMaxTime` int(11) DEFAULT NULL COMMENT 'Tiempo máximo desde la entrada hasta la salida, expresado en segundos', + `shortWeekDays` int(11) DEFAULT NULL COMMENT 'Días a tener en cuenta para calcular el descanso corto', + `longWeekDays` int(11) DEFAULT NULL COMMENT 'Días a tener en cuenta para calcular el descanso largo', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='All values in seconds'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='All values in seconds'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42352,11 +40027,11 @@ DROP TABLE IF EXISTS `workerTimeControlConfig_`; CREATE TABLE `workerTimeControlConfig_` ( `id` int(11) NOT NULL AUTO_INCREMENT, `warehouseFk` smallint(6) unsigned NOT NULL, - `host` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `host` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`), KEY `warehouseFk_1_idx` (`warehouseFk`), CONSTRAINT `warehouseFk_2` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42369,10 +40044,10 @@ DROP TABLE IF EXISTS `workerTimeControlLog`; CREATE TABLE `workerTimeControlLog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userFk` int(10) NOT NULL, - `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `created` datetime NOT NULL DEFAULT current_timestamp(), + `description` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Log de fichadas, se rellena cuando el fichador(tablet) no autoriza el fichaje (PROC:vn.workerTimeControl_check)'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Log de fichadas, se rellena cuando el fichador(tablet) no autoriza el fichaje (PROC:vn.workerTimeControl_check)'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42387,15 +40062,15 @@ CREATE TABLE `workerTimeControlMail` ( `workerFk` int(10) unsigned NOT NULL, `year` int(4) NOT NULL, `week` int(2) NOT NULL, - `state` enum('SENDED','CONFIRMED','REVISE') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'SENDED', - `updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Fecha/hora último cambio de estado', - `sendedCounter` int(3) NOT NULL DEFAULT '1' COMMENT 'Número de veces que se ha enviado el correo', - `emailResponse` text COLLATE utf8_unicode_ci, + `state` enum('SENDED','CONFIRMED','REVISE') COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'SENDED', + `updated` datetime NOT NULL DEFAULT current_timestamp() COMMENT 'Fecha/hora último cambio de estado', + `sendedCounter` int(3) NOT NULL DEFAULT 1 COMMENT 'Número de veces que se ha enviado el correo', + `emailResponse` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `workerFk_UNIQUE` (`workerFk`,`year`,`week`), KEY `workerFk_idx` (`workerFk`), CONSTRAINT `workerTimeControlMail_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Guarda las respuestas de mail de los correos generados automáticamente por la procedimiento workerTimeControl_sendMail'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Guarda las respuestas de mail de los correos generados automáticamente por la procedimiento workerTimeControl_sendMail'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42415,13 +40090,13 @@ CREATE TABLE `workerTimeControlParams` ( `weekMaxBreak` int(11) NOT NULL, `weekMaxScope` int(11) NOT NULL, `askInOut` int(11) NOT NULL COMMENT 'Tiempo desde la última fichada que determinará si se pregunta al usuario por la dirección de la fichada', - `mailPass` varchar(45) COLLATE utf8_bin NOT NULL, - `mailHost` varchar(45) COLLATE utf8_bin NOT NULL, - `mailSuccessFolder` varchar(45) COLLATE utf8_bin NOT NULL, - `mailErrorFolder` varchar(45) COLLATE utf8_bin NOT NULL, - `mailUser` varchar(45) COLLATE utf8_bin NOT NULL, + `mailPass` varchar(45) COLLATE utf8mb3_bin NOT NULL, + `mailHost` varchar(45) COLLATE utf8mb3_bin NOT NULL, + `mailSuccessFolder` varchar(45) COLLATE utf8mb3_bin NOT NULL, + `mailErrorFolder` varchar(45) COLLATE utf8mb3_bin NOT NULL, + `mailUser` varchar(45) COLLATE utf8mb3_bin NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='All values in seconds'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='All values in seconds'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42433,10 +40108,10 @@ DROP TABLE IF EXISTS `workerTimeControlPin`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workerTimeControlPin` ( `workerFk` int(10) unsigned NOT NULL, - `pin` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `pin` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`workerFk`), CONSTRAINT `workerFk_.1` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42451,7 +40126,7 @@ CREATE TABLE `workerTimeControlSchedule` ( `time` time DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `punique_trhf` (`time`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42474,45 +40149,6 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `workerTimeControlWorking` --- - -DROP TABLE IF EXISTS `workerTimeControlWorking`; -/*!50001 DROP VIEW IF EXISTS `workerTimeControlWorking`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `workerTimeControlWorking` ( - `userFk` tinyint NOT NULL, - `timed` tinyint NOT NULL, - `name` tinyint NOT NULL, - `surname` tinyint NOT NULL, - `phone` tinyint NOT NULL, - `workerPhone` tinyint NOT NULL, - `department` tinyint NOT NULL, - `workerCenter` tinyint NOT NULL, - `maxOrder` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - --- --- Temporary table structure for view `workerTimeControl_Journey__` --- - -DROP TABLE IF EXISTS `workerTimeControl_Journey__`; -/*!50001 DROP VIEW IF EXISTS `workerTimeControl_Journey__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `workerTimeControl_Journey__` ( - `userFk` tinyint NOT NULL, - `dated` tinyint NOT NULL, - `Journey` tinyint NOT NULL, - `dayName` tinyint NOT NULL, - `name` tinyint NOT NULL, - `firstname` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Temporary table structure for view `workerTimeJourneyNG` -- @@ -42531,21 +40167,6 @@ SET character_set_client = utf8; ) ENGINE=MyISAM */; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `workerWithoutDevice__` --- - -DROP TABLE IF EXISTS `workerWithoutDevice__`; -/*!50001 DROP VIEW IF EXISTS `workerWithoutDevice__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `workerWithoutDevice__` ( - `workerFk` tinyint NOT NULL, - `Trabajador` tinyint NOT NULL, - `Colecciones` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Temporary table structure for view `workerWithoutTractor` -- @@ -42570,21 +40191,21 @@ DROP TABLE IF EXISTS `workers20190711`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workers20190711` ( - `person_id` int(11) NOT NULL DEFAULT '0', - `business_id` int(11) NOT NULL DEFAULT '0', - `Apellidos` varchar(60) CHARACTER SET utf8 NOT NULL, - `Nombre` varchar(20) CHARACTER SET utf8 DEFAULT NULL, - `nif` varchar(15) CHARACTER SET utf8 DEFAULT NULL, + `person_id` int(11) NOT NULL DEFAULT 0, + `business_id` int(11) NOT NULL DEFAULT 0, + `Apellidos` varchar(60) CHARACTER SET utf8mb3 NOT NULL, + `Nombre` varchar(20) CHARACTER SET utf8mb3 DEFAULT NULL, + `nif` varchar(15) CHARACTER SET utf8mb3 DEFAULT NULL, `Fecha_Inicio` date DEFAULT NULL, `Fecha_Fin` date DEFAULT NULL, - `departamento` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `departamento` varchar(45) COLLATE utf8mb3_unicode_ci NOT NULL, `Jornada_Semanal` smallint(6) DEFAULT NULL, `Codigo_Contrato` int(11) DEFAULT NULL, `userFk` int(11) NOT NULL, PRIMARY KEY (`person_id`), UNIQUE KEY `userFk_UNIQUE` (`userFk`), UNIQUE KEY `nif_UNIQUE` (`nif`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42596,17 +40217,17 @@ DROP TABLE IF EXISTS `workers20190711_FichadasAbril`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workers20190711_FichadasAbril` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `person_id` int(11) NOT NULL DEFAULT '0', - `nif` varchar(15) CHARACTER SET utf8 DEFAULT NULL, - `Apellidos` varchar(60) CHARACTER SET utf8 NOT NULL, - `Nombre` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `person_id` int(11) NOT NULL DEFAULT 0, + `nif` varchar(15) CHARACTER SET utf8mb3 DEFAULT NULL, + `Apellidos` varchar(60) CHARACTER SET utf8mb3 NOT NULL, + `Nombre` varchar(20) CHARACTER SET utf8mb3 DEFAULT NULL, `Fecha` date DEFAULT NULL, `Hora` int(2) DEFAULT NULL, `Minuto` int(2) DEFAULT NULL, `sumable` double DEFAULT NULL, - `jornada` decimal(5,2) NOT NULL DEFAULT '8.00', + `jornada` decimal(5,2) NOT NULL DEFAULT 8.00, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42618,17 +40239,17 @@ DROP TABLE IF EXISTS `workers20190711_FichadasJulio11`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workers20190711_FichadasJulio11` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `person_id` int(11) NOT NULL DEFAULT '0', - `nif` varchar(15) CHARACTER SET utf8 DEFAULT NULL, - `Apellidos` varchar(60) CHARACTER SET utf8 NOT NULL, - `Nombre` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `person_id` int(11) NOT NULL DEFAULT 0, + `nif` varchar(15) CHARACTER SET utf8mb3 DEFAULT NULL, + `Apellidos` varchar(60) CHARACTER SET utf8mb3 NOT NULL, + `Nombre` varchar(20) CHARACTER SET utf8mb3 DEFAULT NULL, `Fecha` date DEFAULT NULL, `Hora` int(2) DEFAULT NULL, `Minuto` int(2) DEFAULT NULL, `sumable` double DEFAULT NULL, - `jornada` decimal(5,2) NOT NULL DEFAULT '8.00', + `jornada` decimal(5,2) NOT NULL DEFAULT 8.00, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42640,17 +40261,17 @@ DROP TABLE IF EXISTS `workers20190711_FichadasJunio`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workers20190711_FichadasJunio` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `person_id` int(11) NOT NULL DEFAULT '0', - `nif` varchar(15) CHARACTER SET utf8 DEFAULT NULL, - `Apellidos` varchar(60) CHARACTER SET utf8 NOT NULL, - `Nombre` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `person_id` int(11) NOT NULL DEFAULT 0, + `nif` varchar(15) CHARACTER SET utf8mb3 DEFAULT NULL, + `Apellidos` varchar(60) CHARACTER SET utf8mb3 NOT NULL, + `Nombre` varchar(20) CHARACTER SET utf8mb3 DEFAULT NULL, `Fecha` date DEFAULT NULL, `Hora` int(2) DEFAULT NULL, `Minuto` int(2) DEFAULT NULL, `sumable` double DEFAULT NULL, - `jornada` decimal(5,2) NOT NULL DEFAULT '8.00', + `jornada` decimal(5,2) NOT NULL DEFAULT 8.00, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42662,17 +40283,17 @@ DROP TABLE IF EXISTS `workers20190711_FichadasMayo`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workers20190711_FichadasMayo` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `person_id` int(11) NOT NULL DEFAULT '0', - `nif` varchar(15) CHARACTER SET utf8 DEFAULT NULL, - `Apellidos` varchar(60) CHARACTER SET utf8 NOT NULL, - `Nombre` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `person_id` int(11) NOT NULL DEFAULT 0, + `nif` varchar(15) CHARACTER SET utf8mb3 DEFAULT NULL, + `Apellidos` varchar(60) CHARACTER SET utf8mb3 NOT NULL, + `Nombre` varchar(20) CHARACTER SET utf8mb3 DEFAULT NULL, `Fecha` date DEFAULT NULL, `Hora` int(2) DEFAULT NULL, `Minuto` int(2) DEFAULT NULL, `sumable` double DEFAULT NULL, - `jornada` decimal(5,2) NOT NULL DEFAULT '8.00', + `jornada` decimal(5,2) NOT NULL DEFAULT 8.00, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42684,17 +40305,17 @@ DROP TABLE IF EXISTS `workers20190711_FichadasOctubre`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workers20190711_FichadasOctubre` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `person_id` int(11) NOT NULL DEFAULT '0', - `nif` varchar(15) CHARACTER SET utf8 DEFAULT NULL, - `Apellidos` varchar(60) CHARACTER SET utf8 NOT NULL, - `Nombre` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `person_id` int(11) NOT NULL DEFAULT 0, + `nif` varchar(15) CHARACTER SET utf8mb3 DEFAULT NULL, + `Apellidos` varchar(60) CHARACTER SET utf8mb3 NOT NULL, + `Nombre` varchar(20) CHARACTER SET utf8mb3 DEFAULT NULL, `Fecha` date DEFAULT NULL, `Hora` int(2) DEFAULT NULL, `Minuto` int(2) DEFAULT NULL, `sumable` double DEFAULT NULL, - `jornada` decimal(5,2) NOT NULL DEFAULT '8.00', + `jornada` decimal(5,2) NOT NULL DEFAULT 8.00, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42706,17 +40327,17 @@ DROP TABLE IF EXISTS `workers20190711_Garrote`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `workers20190711_Garrote` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `person_id` int(11) NOT NULL DEFAULT '0', - `nif` varchar(15) CHARACTER SET utf8 DEFAULT NULL, - `Apellidos` varchar(60) CHARACTER SET utf8 NOT NULL, - `Nombre` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `person_id` int(11) NOT NULL DEFAULT 0, + `nif` varchar(15) CHARACTER SET utf8mb3 DEFAULT NULL, + `Apellidos` varchar(60) CHARACTER SET utf8mb3 NOT NULL, + `Nombre` varchar(20) CHARACTER SET utf8mb3 DEFAULT NULL, `Fecha` date DEFAULT NULL, `Hora` int(2) DEFAULT NULL, `Minuto` int(2) DEFAULT NULL, `sumable` double DEFAULT NULL, - `jornada` decimal(5,2) NOT NULL DEFAULT '8.00', + `jornada` decimal(5,2) NOT NULL DEFAULT 8.00, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42734,21 +40355,22 @@ CREATE TABLE `workingHours` ( PRIMARY KEY (`id`), KEY `user_working_hour_idx` (`userId`), CONSTRAINT `user_working_hour` FOREIGN KEY (`userId`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacena horas de Entrada y de Salida del personal'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Almacena horas de Entrada y de Salida del personal'; /*!40101 SET character_set_client = @saved_cs_client */; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`workingHoursBeforeInsert` BEFORE INSERT ON `workingHours` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`workingHoursBeforeInsert` + BEFORE INSERT ON `workingHours` + FOR EACH ROW BEGIN - IF (SELECT COUNT(*) FROM workingHours WHERE userId = NEW.userId AND DATE(timeIn) = CURDATE()) > 0 THEN + IF (SELECT COUNT(*) FROM workingHours WHERE userId = NEW.userId AND DATE(timeIn) = util.VN_CURDATE()) > 0 THEN CALL util.throw ('ALREADY_LOGGED'); END IF; END */;; @@ -42757,7 +40379,6 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -- -- Table structure for table `zone` @@ -42768,24 +40389,25 @@ DROP TABLE IF EXISTS `zone`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `zone` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL, `hour` datetime NOT NULL, `warehouseFk__` smallint(6) unsigned DEFAULT NULL, `agencyModeFk` int(11) NOT NULL, - `travelingDays` int(11) NOT NULL DEFAULT '1', - `price` double NOT NULL DEFAULT '0', - `bonus` double NOT NULL DEFAULT '0', - `isVolumetric` tinyint(1) NOT NULL DEFAULT '0', - `inflation` decimal(5,2) NOT NULL DEFAULT '1.00', + `travelingDays` int(11) NOT NULL DEFAULT 1, + `price` double NOT NULL DEFAULT 0, + `bonus` double NOT NULL DEFAULT 0, + `isVolumetric` tinyint(1) NOT NULL DEFAULT 0, + `inflation` decimal(5,2) NOT NULL DEFAULT 1.00, `m3Max` decimal(10,2) unsigned DEFAULT NULL, `itemMaxSize` int(11) DEFAULT NULL COMMENT 'tamaño maximo de los articulos que esa ruta puede transportar', + `code` varchar(45) DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_zone_1_idx` (`warehouseFk__`), KEY `fk_zone_2_idx` (`agencyModeFk`), KEY `zone_name_idx` (`name`), CONSTRAINT `fk_zone_1` FOREIGN KEY (`warehouseFk__`) REFERENCES `warehouse` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, CONSTRAINT `fk_zone_2` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42804,7 +40426,7 @@ CREATE TABLE `zoneAgencyMode` ( KEY `zoneAgencyMode_FK_1` (`zoneFk`), CONSTRAINT `zoneAgencyMode_FK` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `zoneAgencyMode_FK_1` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='junta agencias con zonas para que al enrutar se puedan proponer tickets.'; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='junta agencias con zonas para que al enrutar se puedan proponer tickets.'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42819,7 +40441,7 @@ CREATE TABLE `zoneClosure` ( `dated` date NOT NULL, `hour` time NOT NULL, PRIMARY KEY (`zoneFk`,`dated`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42832,9 +40454,9 @@ DROP TABLE IF EXISTS `zoneConfig`; CREATE TABLE `zoneConfig` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `scope` int(10) unsigned NOT NULL, - `forwardDays` int(10) NOT NULL DEFAULT '7' COMMENT 'days forward to show zone_upcomingDeliveries', + `forwardDays` int(10) NOT NULL DEFAULT 7 COMMENT 'days forward to show zone_upcomingDeliveries', PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42880,7 +40502,7 @@ CREATE TABLE `zoneEvent` ( PRIMARY KEY (`id`), UNIQUE KEY `zoneFk` (`zoneFk`,`type`,`dated`), CONSTRAINT `zoneEvent_ibfk_1` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42894,30 +40516,30 @@ CREATE TABLE `zoneExclusion` ( `id` int(11) NOT NULL AUTO_INCREMENT, `zoneFk` int(11) NOT NULL, `dated` date NOT NULL, - `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `created` timestamp NOT NULL DEFAULT current_timestamp(), `userFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `zoneFk_2` (`zoneFk`,`dated`), KEY `zoneFk` (`zoneFk`), CONSTRAINT `zoneExclusion_ibfk_1` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER zoneExclusion_BI -BEFORE INSERT -ON zoneExclusion FOR EACH ROW -BEGIN - +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`zoneExclusion_BI` + BEFORE INSERT ON `zoneExclusion` + FOR EACH ROW +BEGIN + SET NEW.userFk = account.myUser_getId(); - + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -42927,19 +40549,19 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER zoneExclusion_BU -BEFORE UPDATE -ON zoneExclusion FOR EACH ROW -BEGIN - +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`zoneExclusion_BU` + BEFORE UPDATE ON `zoneExclusion` + FOR EACH ROW +BEGIN + SET NEW.userFk = account.myUser_getId(); - + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -42947,6 +40569,25 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +-- +-- Table structure for table `zoneExclusionGeo` +-- + +DROP TABLE IF EXISTS `zoneExclusionGeo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `zoneExclusionGeo` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `zoneExclusionFk` int(11) NOT NULL, + `geoFk` int(11) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `zoneExclusionGeo_UN` (`zoneExclusionFk`,`geoFk`), + KEY `zoneExclusionGeo2_FK_1` (`geoFk`), + CONSTRAINT `zoneExclusionGeo_FK` FOREIGN KEY (`geoFk`) REFERENCES `zoneGeo` (`id`) ON UPDATE CASCADE, + CONSTRAINT `zoneExclusionGeo_FK_1` FOREIGN KEY (`zoneExclusionFk`) REFERENCES `zoneExclusion` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Table structure for table `zoneFilter` -- @@ -42964,7 +40605,7 @@ CREATE TABLE `zoneFilter` ( KEY `zoneFilter_FK_1` (`itemTypeFk`), CONSTRAINT `zoneFilter_FK` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `zoneFilter_FK_1` FOREIGN KEY (`itemTypeFk`) REFERENCES `itemType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='recoge los parámetros para filtrar determinados productos según la zona'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='recoge los parámetros para filtrar determinados productos según la zona'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -42976,32 +40617,33 @@ DROP TABLE IF EXISTS `zoneGeo`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `zoneGeo` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `type` set('country','province','town','postCode','autonomy') CHARACTER SET utf8 NOT NULL, - `name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `type` set('country','province','town','postCode','autonomy') CHARACTER SET utf8mb3 NOT NULL, + `name` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `parentFk` int(10) unsigned DEFAULT NULL, - `path` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `path` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `lft` int(11) DEFAULT NULL, `rgt` int(11) DEFAULT NULL, - `depth` bigint(22) NOT NULL DEFAULT '0', + `depth` bigint(22) NOT NULL DEFAULT 0, `sons` decimal(10,0) DEFAULT NULL, PRIMARY KEY (`id`), KEY `lft_rgt_depth_idx` (`lft`,`rgt`,`depth`), KEY `name_idx` (`name`), KEY `parentFk` (`parentFk`), KEY `path` (`path`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`zoneGeo_beforeInsert` - BEFORE INSERT ON `zoneGeo` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`zoneGeo_beforeInsert` + BEFORE INSERT ON `zoneGeo` + FOR EACH ROW BEGIN CALL zoneGeo_checkName(NEW.`name`); END */;; @@ -43015,12 +40657,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`zoneGeo_beforeUpdate` - BEFORE UPDATE ON `zoneGeo` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vn`.`zoneGeo_beforeUpdate` + BEFORE UPDATE ON `zoneGeo` + FOR EACH ROW BEGIN IF !(OLD.`name` <=> NEW.`name`) THEN CALL zoneGeo_checkName(NEW.`name`); @@ -43043,7 +40686,7 @@ CREATE TABLE `zoneGeoRecalc` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `isChanged` tinyint(4) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -43061,7 +40704,7 @@ CREATE TABLE `zoneIncluded` ( KEY `geoFk_idx` (`geoFk`), CONSTRAINT `zoneFk2` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `zoneGeoFk2` FOREIGN KEY (`geoFk`) REFERENCES `zoneGeo` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -43075,20 +40718,20 @@ CREATE TABLE `zoneLog` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `originFk` int(10) NOT NULL, `userFk` int(10) unsigned DEFAULT NULL, - `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `description` text CHARACTER SET utf8, - `changedModel` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `oldInstance` text COLLATE utf8_unicode_ci, - `newInstance` text COLLATE utf8_unicode_ci, + `action` set('insert','update','delete') COLLATE utf8mb3_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT current_timestamp(), + `description` text CHARACTER SET utf8mb3 DEFAULT NULL, + `changedModel` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `oldInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `newInstance` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `changedModelId` int(11) DEFAULT NULL, - `changedModelValue` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `changedModelValue` varchar(45) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `originFk` (`originFk`), KEY `userFk` (`userFk`), CONSTRAINT `zoneLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `zone` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `zoneLog_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -43103,11 +40746,11 @@ CREATE TABLE `zonePromo__` ( `zoneFk` int(11) NOT NULL, `dated` date NOT NULL, `amount` decimal(10,2) NOT NULL, - `isDone` tinyint(4) NOT NULL DEFAULT '0', + `isDone` tinyint(4) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `zonePromo_fk1_idx` (`zoneFk`), CONSTRAINT `zonePromo_fk1` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -43126,29 +40769,9 @@ CREATE TABLE `zoneWarehouse` ( KEY `warehouseFk` (`warehouseFk`), CONSTRAINT `zoneWarehouse_fk_warehouse` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, CONSTRAINT `zoneWarehouse_ibfk_1` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `zone_ETD__` --- - -DROP TABLE IF EXISTS `zone_ETD__`; -/*!50001 DROP VIEW IF EXISTS `zone_ETD__`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE TABLE `zone_ETD__` ( - `zoneFk` tinyint NOT NULL, - `HoraTeórica` tinyint NOT NULL, - `volumenTotal` tinyint NOT NULL, - `volumenPendiente` tinyint NOT NULL, - `velocidad` tinyint NOT NULL, - `HoraPráctica` tinyint NOT NULL, - `minutesLess` tinyint NOT NULL, - `etc` tinyint NOT NULL -) ENGINE=MyISAM */; -SET character_set_client = @saved_cs_client; - -- -- Dumping events for database 'vn' -- @@ -43162,10 +40785,10 @@ DELIMITER ;; /*!50003 SET character_set_results = utf8mb4 */ ;; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `department_doCalc` ON SCHEDULE EVERY 15 SECOND STARTS '2019-11-15 00:00:00' ON COMPLETION PRESERVE ENABLE DO CALL vn.department_doCalc */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `department_doCalc` ON SCHEDULE EVERY 15 SECOND STARTS '2019-11-15 00:00:00' ON COMPLETION PRESERVE ENABLE DO CALL vn.department_doCalc */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -43178,39 +40801,39 @@ DELIMITER ;; /*!50003 SET @saved_col_connection = @@collation_connection */ ;; /*!50003 SET character_set_client = utf8mb4 */ ;; /*!50003 SET character_set_results = utf8mb4 */ ;; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ;; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `envialiaThreHoldChecker` ON SCHEDULE EVERY 1 DAY STARTS '2019-02-07 08:00:00' ON COMPLETION NOT PRESERVE ENABLE COMMENT 'comprueba el rango de numeros para las etiquetas de envialia' DO BEGIN +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `envialiaThreHoldChecker` ON SCHEDULE EVERY 1 DAY STARTS '2022-01-28 09:52:46' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE vActualNumber BIGINT; DECLARE vEndRange BIGINT; DECLARE vIsAlreadyNotified BOOLEAN; DECLARE vNotificationThrehold INT; - SELECT actualNumber, endRange, isAlreadyNotified, notificationThrehold + SELECT actualNumber, endRange, isAlreadyNotified, notificationThrehold INTO vActualNumber, vEndRange, vIsAlreadyNotified, vNotificationThrehold FROM envialiaConfig; - + IF (vActualNumber+vNotificationThrehold) >= vEndRange AND vIsAlreadyNotified = FALSE THEN - CALL mail_insert( + CALL mail_insert( 'cau@verdnatura.es', NULL, 'Hablar con envialia, acercandonos al numero final del rango permitido para las etiquetas', CONCAT('Numero actual: ', vActualNumber, ' , numero final: ',vEndRange) - ); + ); UPDATE envialiaConfig SET isAlreadyNotified = TRUE; END IF; - + IF (vActualNumber+vNotificationThrehold) < vEndRange AND vIsAlreadyNotified = TRUE THEN UPDATE envialiaConfig SET isAlreadyNotified = FALSE; END IF; - + END */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; @@ -43226,10 +40849,10 @@ DELIMITER ;; /*!50003 SET character_set_results = utf8mb4 */ ;; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `mysqlConnectionsSorter_kill` ON SCHEDULE EVERY 1 MINUTE STARTS '2021-10-28 09:56:27' ON COMPLETION NOT PRESERVE ENABLE DO CALL mysqlConnectionsSorter_kill() */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `mysqlConnectionsSorter_kill` ON SCHEDULE EVERY 1 MINUTE STARTS '2021-10-28 09:56:27' ON COMPLETION NOT PRESERVE ENABLE DO CALL mysqlConnectionsSorter_kill() */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -43242,47 +40865,52 @@ DELIMITER ;; /*!50003 SET @saved_col_connection = @@collation_connection */ ;; /*!50003 SET character_set_client = utf8mb4 */ ;; /*!50003 SET character_set_results = utf8mb4 */ ;; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ;; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `printQueue_check` ON SCHEDULE EVERY 10 MINUTE STARTS '2019-11-08 02:00:00' ON COMPLETION PRESERVE ENABLE COMMENT 'Notifica en caso de que el servidor de impresión este parado' DO BEGIN +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `printQueue_check` ON SCHEDULE EVERY 10 MINUTE STARTS '2022-01-28 09:52:46' ON COMPLETION PRESERVE ENABLE DO BEGIN DECLARE vCurrentCount INT; DECLARE vCheckSum INT; - DECLARE vIsAlreadyNotified BOOLEAN; - DECLARE vTableQueue TEXT; + DECLARE vIsAlreadyNotified BOOLEAN; + DECLARE vTableQueue TEXT; DECLARE vLineQueue TEXT; - DECLARE vDone BOOL DEFAULT FALSE; - DECLARE vCur CURSOR FOR - SELECT CONCAT(' + DECLARE vDone BOOL DEFAULT FALSE; + DECLARE vPrintQueueLimit INT; + + DECLARE vCur CURSOR FOR + SELECT CONCAT(' ', IFNULL(pq.id, ''), ' ', IFNULL(p.path, ''),' - ', IFNULL(lr.name, ''),' - ', IFNULL(e.Estado, ''),' + ', IFNULL(r.name, ''),' + ', IFNULL(pq.statusCode, ''),' ', IFNULL(w.firstname, ''), " ", IFNULL(w.lastName, ''),' ', IFNULL(pq.`error`, ''),' ') - FROM vn.printingQueue pq - LEFT JOIN vn.worker w ON w.id = pq.worker - LEFT JOIN vn.printer p ON p.id = pq.printer - LEFT JOIN vn.labelReport lr ON lr.id = pq.report - JOIN vn2008.Estados e ON e.Id_Estado = pq.state - LIMIT 30; - - DECLARE CONTINUE HANDLER FOR NOT FOUND - SET vDone = TRUE; + FROM printQueue pq + LEFT JOIN worker w ON w.id = pq.workerFk + LEFT JOIN printer p ON p.id = pq.printerFk + LEFT JOIN report r ON r.id = pq.reportFk + JOIN printQueueConfig + LIMIT vPrintQueueLimit; + + DECLARE CONTINUE HANDLER FOR NOT FOUND + SET vDone = TRUE; + + SELECT printQueueLimit INTO vPrintQueueLimit + FROM printQueueConfig; SELECT COUNT(*), IFNULL(SUM(id),0) INTO vCurrentCount, vCheckSum - FROM vn.printingQueue WHERE state = 1; - - SELECT isAlreadyNotified INTO vIsAlreadyNotified - FROM printingQueueCheck; - + FROM printQueue WHERE statusCode = 'queued'; + + SELECT isAlreadyNotified INTO vIsAlreadyNotified + FROM printingQueueCheck; + IF (SELECT lastCount FROM printingQueueCheck) = vCurrentCount AND (SELECT lastCheckSum FROM printingQueueCheck) = vCheckSum AND - vIsAlreadyNotified = FALSE AND vCurrentCount > 0 + vIsAlreadyNotified = FALSE AND vCurrentCount > 0 THEN SELECT ' @@ -43293,46 +40921,46 @@ DELIMITER ;; - ' INTO vTableQueue; - + ' INTO vTableQueue; + OPEN vCur; - + l: LOOP - + SET vDone = FALSE; - + FETCH vCur INTO vLineQueue; - - IF vDone THEN + + IF vDone THEN LEAVE l; END IF; - - SELECT CONCAT(vTableQueue, vLineQueue) INTO vTableQueue; - + + SELECT CONCAT(vTableQueue, vLineQueue) INTO vTableQueue; + END LOOP; - - CLOSE vCur; - - CALL mail_insert( - 'cau@verdnatura.es', - NULL, - 'Servidor de impresion parado', - CONCAT('Hay ', vCurrentCount, ' lineas bloqueadas', vTableQueue, '
Estado Trabajador Error
') + + CLOSE vCur; + + CALL mail_insert( + 'cau@verdnatura.es', + NULL, + 'Servidor de impresion parado', + CONCAT('Hay ', vCurrentCount, ' lineas bloqueadas', vTableQueue, '') ); - - UPDATE printingQueueCheck SET isAlreadyNotified = TRUE; + + UPDATE printingQueueCheck SET isAlreadyNotified = TRUE; END IF; - - IF (SELECT lastCount FROM printingQueueCheck) > vCurrentCount AND - vIsAlreadyNotified = TRUE + + IF (SELECT lastCount FROM printingQueueCheck) > vCurrentCount AND + vIsAlreadyNotified = TRUE THEN UPDATE printingQueueCheck SET isAlreadyNotified = FALSE; END IF; - + UPDATE printingQueueCheck SET lastCount = vCurrentCount, lastCheckSum = vCheckSum; - + END */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; @@ -43344,14 +40972,14 @@ DELIMITER ;; /*!50003 SET @saved_cs_client = @@character_set_client */ ;; /*!50003 SET @saved_cs_results = @@character_set_results */ ;; /*!50003 SET @saved_col_connection = @@collation_connection */ ;; -/*!50003 SET character_set_client = utf8 */ ;; -/*!50003 SET character_set_results = utf8 */ ;; -/*!50003 SET collation_connection = utf8_general_ci */ ;; +/*!50003 SET character_set_client = utf8mb4 */ ;; +/*!50003 SET character_set_results = utf8mb4 */ ;; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `route_doRecalc` ON SCHEDULE EVERY 10 SECOND STARTS '2021-07-08 07:32:23' ON COMPLETION PRESERVE ENABLE DO CALL route_doRecalc */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `route_doRecalc` ON SCHEDULE EVERY 10 SECOND STARTS '2021-07-08 07:32:23' ON COMPLETION PRESERVE ENABLE DO CALL route_doRecalc */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -43366,10 +40994,10 @@ DELIMITER ;; /*!50003 SET character_set_results = utf8mb4 */ ;; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `sale_checkWithoutComponents` ON SCHEDULE EVERY 10 MINUTE STARTS '2020-05-04 11:56:23' ON COMPLETION PRESERVE DISABLE DO call sale_checkNoComponents(DATE_ADD(NOW(), INTERVAL -10 MINUTE),DATE_ADD(NOW(), INTERVAL -1 MINUTE)) */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `sale_checkWithoutComponents` ON SCHEDULE EVERY 10 MINUTE STARTS '2020-05-04 11:56:23' ON COMPLETION PRESERVE DISABLE DO call sale_checkNoComponents(DATE_ADD(util.VN_NOW(), INTERVAL -10 MINUTE),DATE_ADD(util.VN_NOW(), INTERVAL -1 MINUTE)) */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -43384,10 +41012,10 @@ DELIMITER ;; /*!50003 SET character_set_results = utf8mb4 */ ;; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `ticketClosure` ON SCHEDULE EVERY 1 DAY STARTS '2017-09-18 00:30:00' ON COMPLETION NOT PRESERVE DISABLE COMMENT 'Realiza el cierre de todos los almacenes del dia actual' DO CALL ticketClosureMultiWarehouse(DATE_ADD(CURDATE(), INTERVAL -1 DAY)) */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ticketClosure` ON SCHEDULE EVERY 1 DAY STARTS '2017-09-18 00:30:00' ON COMPLETION NOT PRESERVE DISABLE COMMENT 'Realiza el cierre de todos los almacenes del dia actual' DO CALL ticketClosureMultiWarehouse(DATE_ADD(util.VN_CURDATE(), INTERVAL -1 DAY)) */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -43398,14 +41026,14 @@ DELIMITER ;; /*!50003 SET @saved_cs_client = @@character_set_client */ ;; /*!50003 SET @saved_cs_results = @@character_set_results */ ;; /*!50003 SET @saved_col_connection = @@collation_connection */ ;; -/*!50003 SET character_set_client = utf8 */ ;; -/*!50003 SET character_set_results = utf8 */ ;; -/*!50003 SET collation_connection = utf8_general_ci */ ;; +/*!50003 SET character_set_client = utf8mb4 */ ;; +/*!50003 SET character_set_results = utf8mb4 */ ;; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `ticket_doRecalc` ON SCHEDULE EVERY 10 SECOND STARTS '2021-02-26 07:32:23' ON COMPLETION PRESERVE ENABLE DO CALL ticket_doRecalc */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `ticket_doRecalc` ON SCHEDULE EVERY 10 SECOND STARTS '2022-01-28 09:29:18' ON COMPLETION PRESERVE ENABLE DO CALL ticket_doRecalc */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -43420,10 +41048,10 @@ DELIMITER ;; /*!50003 SET character_set_results = utf8mb4 */ ;; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `travel_doRecalc` ON SCHEDULE EVERY 15 SECOND STARTS '2019-05-17 10:52:29' ON COMPLETION PRESERVE ENABLE DO CALL travel_doRecalc */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `travel_doRecalc` ON SCHEDULE EVERY 15 SECOND STARTS '2019-05-17 10:52:29' ON COMPLETION PRESERVE ENABLE DO CALL travel_doRecalc */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -43438,18 +41066,18 @@ DELIMITER ;; /*!50003 SET character_set_results = utf8mb4 */ ;; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `workerTimeControl_sendMail` ON SCHEDULE EVERY 1 WEEK STARTS '2020-11-25 08:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `workerTimeControl_sendMail` ON SCHEDULE EVERY 1 WEEK STARTS '2020-11-25 08:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE vWeek,vYear INT; SELECT week,year INTO vWeek,vYear - FROM vn.time - WHERE dated IN (DATE_ADD(CURDATE(), INTERVAL -10 DAY), DATE_ADD(CURDATE(), INTERVAL -4 DAY)) + FROM vn.time + WHERE dated IN (DATE_ADD(util.VN_CURDATE(), INTERVAL -10 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL -4 DAY)) GROUP BY year,week LIMIT 1; - + CALL vn.workerTimeControl_sendMail(vWeek, vYear, NULL); END */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; @@ -43457,6 +41085,24 @@ END */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; /*!50003 SET character_set_results = @saved_cs_results */ ;; /*!50003 SET collation_connection = @saved_col_connection */ ;; +/*!50106 DROP EVENT IF EXISTS `worker_updateChangedBusiness` */;; +DELIMITER ;; +/*!50003 SET @saved_cs_client = @@character_set_client */ ;; +/*!50003 SET @saved_cs_results = @@character_set_results */ ;; +/*!50003 SET @saved_col_connection = @@collation_connection */ ;; +/*!50003 SET character_set_client = utf8mb4 */ ;; +/*!50003 SET character_set_results = utf8mb4 */ ;; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET @saved_time_zone = @@time_zone */ ;; +/*!50003 SET time_zone = 'SYSTEM' */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `worker_updateChangedBusiness` ON SCHEDULE EVERY 1 DAY STARTS '2000-01-01 00:00:05' ON COMPLETION NOT PRESERVE ENABLE DO CALL worker_updateChangedBusiness */ ;; +/*!50003 SET time_zone = @saved_time_zone */ ;; +/*!50003 SET sql_mode = @saved_sql_mode */ ;; +/*!50003 SET character_set_client = @saved_cs_client */ ;; +/*!50003 SET character_set_results = @saved_cs_results */ ;; +/*!50003 SET collation_connection = @saved_col_connection */ ;; /*!50106 DROP EVENT IF EXISTS `zoneGeo_doCalc` */;; DELIMITER ;; /*!50003 SET @saved_cs_client = @@character_set_client */ ;; @@ -43466,10 +41112,10 @@ DELIMITER ;; /*!50003 SET character_set_results = utf8mb4 */ ;; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `zoneGeo_doCalc` ON SCHEDULE EVERY 15 SECOND STARTS '2019-09-13 15:30:47' ON COMPLETION PRESERVE ENABLE DO CALL vn.zoneGeo_doCalc */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`localhost`*/ /*!50106 EVENT `zoneGeo_doCalc` ON SCHEDULE EVERY 15 SECOND STARTS '2019-09-13 15:30:47' ON COMPLETION PRESERVE ENABLE DO CALL vn.zoneGeo_doCalc */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -43485,52 +41131,35 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `addressTaxArea`(vAddresId INT, vCompanyId INT) RETURNS varchar(25) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `addressTaxArea`(vAddresId INT, vCompanyId INT) RETURNS varchar(25) CHARSET utf8mb3 DETERMINISTIC BEGIN /** - * Devuelve el area de un Consignatario, + * Devuelve el area de un Consignatario, * intracomunitario, extracomunitario, nacional o recargo de equivalencia. - * Asumimos que no tenemos ninguna empresa + * Asumimos que no tenemos ninguna empresa * * @param vAddresId Id del Consignatario * @param vCompanyId Compañia desde la que se factura * @return Código de area */ DECLARE vTaxArea VARCHAR(25); - DECLARE vClientIsUeeMember INT; - DECLARE vSupplierIsUeeMember INT; - DECLARE vSpainCountryCode INT DEFAULT 1; - DECLARE vSupplierCountry INT; - DECLARE vClientCountry INT; - DECLARE vIsEqualizated BOOLEAN; - DECLARE vIsVies BOOLEAN; - - SELECT cClient.isUeeMember, c.countryFk, a.isEqualizated, cSupplier.isUeeMember, s.countryFk, c.isVies - INTO vClientIsUeeMember, vClientCountry, vIsEqualizated, vSupplierIsUeeMember, vSupplierCountry, vIsVies - FROM address a - JOIN `client` c ON c.id = a.clientFk - JOIN country cClient ON cClient.id = c.countryFk - JOIN supplier s ON s.id = vCompanyId - JOIN country cSupplier ON cSupplier.id = s.countryFk - WHERE a.id = vAddresId; - - CASE - WHEN (NOT vClientIsUeeMember OR NOT vSupplierIsUeeMember) AND vSupplierCountry != vClientCountry THEN - SET vTaxArea = 'WORLD'; - WHEN vClientIsUeeMember AND vSupplierIsUeeMember AND vClientCountry != vSupplierCountry AND vIsVies THEN - SET vTaxArea = 'CEE'; - WHEN vIsEqualizated AND vClientCountry = vSpainCountryCode THEN - SET vTaxArea = 'EQU'; - ELSE - SET vTaxArea = 'NATIONAL'; - END CASE; + + DROP TEMPORARY TABLE IF EXISTS tmp.addressCompany; + CREATE TEMPORARY TABLE tmp.addressCompany + SELECT vAddresId addressFk, vCompanyId companyFk; + + CALL vn.addressTaxArea(); + SELECT areaFk INTO vTaxArea FROM tmp.addressTaxArea; + DROP TEMPORARY TABLE + tmp.addressCompany, + tmp.addressTaxArea; RETURN vTaxArea; END ;; @@ -43543,13 +41172,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `address_getGeo`(vSelf INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `address_getGeo`(vSelf INT) RETURNS int(11) DETERMINISTIC BEGIN /** @@ -43561,7 +41190,7 @@ BEGIN DECLARE vGeoFk INT; SELECT p.geoFk INTO vGeoFk - FROM address a + FROM address a JOIN town t ON t.provinceFk = a.provinceFk JOIN postCode p ON p.townFk = t.id AND p.`code` = a.postalCode WHERE a.id = vSelf @@ -43585,15 +41214,15 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `barcodeToItem`(vBarcode VARCHAR(22)) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `barcodeToItem`(vBarcode VARCHAR(22)) RETURNS int(11) DETERMINISTIC BEGIN - + /** * Obtiene el id del artículo * * @param vBarcode código de barras - * + * * return id del item */ @@ -43603,140 +41232,35 @@ BEGIN FROM vn.item WHERE id = vBarcode OR comment = vBarcode LIMIT 1; - - IF vItemFk THEN + + IF vItemFk THEN RETURN vItemFk; END IF; - SELECT itemFk INTO vItemFk - FROM buy + SELECT itemFk INTO vItemFk + FROM buy WHERE id = vBarcode; - - IF vItemFk THEN - RETURN vItemFk; - END IF; - - SELECT itemFk INTO vItemFk - FROM itemBarcode - WHERE code = vBarcode; - - IF vItemFk THEN + + IF vItemFk THEN RETURN vItemFk; END IF; - SELECT i.id INTO vItemFk + SELECT itemFk INTO vItemFk + FROM itemBarcode + WHERE code = vBarcode; + + IF vItemFk THEN + RETURN vItemFk; + END IF; + + SELECT i.id INTO vItemFk FROM vn.item i WHERE i.name LIKE CONCAT('%',vBarcode,'%') ORDER BY i.id ASC LIMIT 1; - + RETURN vItemFk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `bionicCalcReverse__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `bionicCalcReverse__`(vWarehouse INT, - vMargin DECIMAL(10,3), - vRetailedPrice DECIMAL(10,3), - vM3 DECIMAL(10,3), - vAddress INT, - vAgencyMode INT) RETURNS decimal(10,3) - DETERMINISTIC -BEGIN - -- OBSOLETO usar catalog_componentReverse JGF 2020-02-26 - DECLARE vGeneralInflationCoeficient INT; - DECLARE vVerdnaturaVolumeBox BIGINT; - DECLARE vClientFk INT; - DECLARE vComponentRecovery VARCHAR(50) DEFAULT 'debtCollection'; - DECLARE vComponentMana VARCHAR(50) DEFAULT 'autoMana'; - DECLARE vComponentPort VARCHAR(50) DEFAULT 'delivery'; - DECLARE vComponentMargin VARCHAR(50) DEFAULT 'margin'; - DECLARE vComponentCost VARCHAR(50) DEFAULT 'purchaseValue'; - DECLARE vComponentCostValue DECIMAL(10,2); - DECLARE vItem INT DEFAULT 98; - DECLARE vItemCarryBox INT; - - CALL util.throw('Obsoleto hablar con Informática'); - - SELECT generalInflationCoeFicient, verdnaturaVolumeBox, itemCarryBox - INTO vGeneralInflationCoeficient, vVerdnaturaVolumeBox, vItemCarryBox - FROM bionicConfig; - - SELECT clientFk INTO vClientFk FROM address WHERE id = vAddress; - - -- Creamos la tabla tmp.bionicComponent - DROP TEMPORARY TABLE IF EXISTS tmp.bionicComponent; - CREATE TEMPORARY TABLE tmp.bionicComponent( - `warehouseFk` smallint(5) unsigned NOT NULL, - `itemFk` int(11) NOT NULL, - `componentFk` int(10) unsigned NOT NULL, - `value` decimal(10,4) NOT NULL, - UNIQUE KEY `itemWarehouseComponent` (`itemFk`,`warehouseFk`,`componentFk`) USING HASH, - KEY `itemWarehouse` (`itemFk`,`warehouseFk`) USING BTREE - ) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - - -- Margin - INSERT INTO tmp.bionicComponent (warehouseFk, itemFk, componentFk, `value`) - SELECT vWarehouse, vItem, id, vMargin - FROM component - WHERE code = vComponentMargin; - - -- Recobro - INSERT INTO tmp.bionicComponent (warehouseFk, itemFk, componentFk, `value`) - SELECT vWarehouse, vItem, c.id, ROUND(LEAST(cr.recobro,0.25), 3) - FROM bi.claims_ratio cr - JOIN component c ON c.code = vComponentRecovery - WHERE cr.Id_Cliente = vClientFk AND cr.recobro > 0.009; - - -- Componente de maná automático, en función del maná acumulado por el comercial. - INSERT INTO tmp.bionicComponent (warehouseFk, itemFk, componentFk, `value`) - SELECT vWarehouse, vItem, co.id, ROUND(ms.prices_modifier_rate, 3) - FROM client c - JOIN bs.mana_spellers ms ON c.salesPersonFk = ms.Id_Trabajador - JOIN component co ON co.code = vComponentMana - WHERE ms.prices_modifier_activated AND c.id = vClientFk LIMIT 1; - - -- Reparto - INSERT INTO tmp.bionicComponent (warehouseFk, itemFk, componentFk, `value`) - SELECT vWarehouse, vItem, co.id, vGeneralInflationCoeficient - * ROUND( - vM3 - * az.price - * az.inflation - / vVerdnaturaVolumeBox, 4 - ) - FROM agencyMode ag - JOIN address a ON a.id = vAddress AND ag.id = vAgencyMode - JOIN agencyProvince ap ON ap.agencyFk = ag.agencyFk - AND ap.warehouseFk = vWarehouse AND ap.provinceFk = a.provinceFk - JOIN agencyModeZone az ON az.agencyModeFk = vAgencyMode - AND az.zone = ap.zone AND az.itemFk = 71 AND az.warehouseFk = vWarehouse - JOIN component co ON co.code = vComponentPort; - - -- Coste - SELECT vRetailedPrice - SUM(`value`) INTO vComponentCostValue - FROM tmp.bionicComponent; - - INSERT INTO tmp.bionicComponent (warehouseFk, itemFk, componentFk, `value`) - SELECT vWarehouse, vItem, id,vComponentCostValue - FROM component - WHERE code = vComponentCost; - - RETURN vComponentCostValue; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -43749,18 +41273,18 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `botanicExport_isUpdatable`(vEdiGenusFk MEDIUMINT,vEdiSpecieFk MEDIUMINT, +CREATE DEFINER=`root`@`localhost` FUNCTION `botanicExport_isUpdatable`(vEdiGenusFk MEDIUMINT,vEdiSpecieFk MEDIUMINT, vCountryFk MEDIUMINT,vRestriction MEDIUMINT) RETURNS int(11) DETERMINISTIC BEGIN DECLARE vIsUpdatable INTEGER; - SELECT COUNT(*) INTO vIsUpdatable - FROM botanicExport - WHERE ediGenusFk = vEdiGenusFk + SELECT COUNT(*) INTO vIsUpdatable + FROM botanicExport + WHERE ediGenusFk = vEdiGenusFk AND (vEdiSpecieFk = ediSpecieFk OR IFNULL(vEdiSpecieFk,ediSpecieFk) IS NULL) AND (vCountryFk = countryFk OR IFNULL(vCountryFk,countryFk) IS NULL) AND vRestriction = restriction; @@ -43777,11 +41301,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `buy_getUnitVolume`(vSelf INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `buy_getUnitVolume`(vSelf INT) RETURNS int(11) DETERMINISTIC BEGIN /** @@ -43812,11 +41336,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `buy_getVolume`(vSelf INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `buy_getVolume`(vSelf INT) RETURNS int(11) DETERMINISTIC BEGIN /** @@ -43839,61 +41363,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `buy_hasNotifyPassport__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `buy_hasNotifyPassport__`(vBuyFk INT, vItemFk INT) RETURNS tinyint(1) - READS SQL DATA -BEGIN - DECLARE vHasPassport BOOL; - DECLARE vIsAlreadySent BOOL; - DECLARE vItemCategoryFk INT; - SELECT id INTO vItemCategoryFk FROM itemCategory WHERE code = 'plant'; - - SELECT COUNT(*) INTO vHasPassport - FROM botanicExport be - JOIN itemBotanical ib - ON be.ediGenusFk = ib.genusFk - AND IFNULL(be.ediSpecieFk, ib.specieFk) = ib.specieFk - AND be.`code` = 'phytosanitaryPassport' - JOIN item i ON i.id = ib.itemFk - JOIN itemType it ON it.id = i.typeFk - WHERE ib.itemFk = vItemFk - AND it.categoryFk = vItemCategoryFk; - - IF vHasPassport THEN - SELECT COUNT(*) INTO vIsAlreadySent - FROM mail m - JOIN buy b ON b.id = vBuyFk - WHERE m.`body` LIKE CONCAT('%', b.ektFk, '%') - LIMIT 1; - END IF; - - RETURN vHasPassport AND NOT vIsAlreadySent; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `catalog_componentReverse` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `catalog_componentReverse`(vWarehouse INT, +CREATE DEFINER=`root`@`localhost` FUNCTION `catalog_componentReverse`(vWarehouse INT, vCost DECIMAL(10,3), vM3 DECIMAL(10,3), vAddressFk INT, @@ -43901,16 +41381,16 @@ CREATE DEFINER=`root`@`%` FUNCTION `catalog_componentReverse`(vWarehouse INT, DETERMINISTIC BEGIN /* Calcula los componentes para un cliente a partir de un coste y volumen - * @param vWarehouse + * @param vWarehouse * @param vCost Valor de coste del articulo * @param vM3 m3 del articulo - * @param vAddressFk + * @param vAddressFk * @param vZoneFk - * @return vRetailedPrice precio de venta sin iva + * @return vRetailedPrice precio de venta sin iva * @return tmp.catalog_component (warehouseFk, itemFk, componentFk, cost) */ - - DECLARE vBoxVolume BIGINT; + + DECLARE vBoxVolume BIGINT; DECLARE vCustomer INT; DECLARE vComponentRecovery INT DEFAULT 17; DECLARE vComponentMana INT DEFAULT 39; @@ -43919,11 +41399,11 @@ BEGIN DECLARE vComponentCost INT DEFAULT 28; DECLARE vRetailedPrice DECIMAL(10,2); DECLARE vItem INT DEFAULT 98; - + SELECT volume INTO vBoxVolume FROM vn.packaging WHERE id = '94'; - + SELECT clientFk INTO vCustomer FROM address WHERE id = vAddressFk; DROP TEMPORARY TABLE IF EXISTS tmp.catalog_component; @@ -43939,52 +41419,51 @@ BEGIN INSERT INTO tmp.catalog_component (warehouseFk, itemFk, componentFk, cost) SELECT vWarehouse, vItem, vComponentCost, vCost FROM vn.rate - WHERE dated <= CURDATE() + WHERE dated <= util.VN_CURDATE() AND warehouseFk = vWarehouse ORDER BY dated DESC - LIMIT 1; - - -- Margen - -- No se aplica margen, cau 12589 + LIMIT 1; + + -- Margen + -- No se aplica margen, cau 12589 /* INSERT INTO tmp.catalog_component (warehouseFk, itemFk, componentFk, cost) - SELECT vWarehouse, vItem, vComponentMargin, (vCost / ((100 - rate2) / 100)) - vCost + SELECT vWarehouse, vItem, vComponentMargin, (vCost / ((100 - rate2) / 100)) - vCost FROM vn.rate - WHERE dated <= CURDATE() + WHERE dated <= util.VN_CURDATE() AND warehouseFk = vWarehouse ORDER BY dated DESC - LIMIT 1; - */ - -- Recobro + LIMIT 1; + */ + -- Recobro INSERT INTO tmp.catalog_component (warehouseFk, itemFk, componentFk, cost) - SELECT vWarehouse, vItem, vComponentRecovery, ROUND(LEAST(recobro,0.25), 3) + SELECT vWarehouse, vItem, vComponentRecovery, ROUND(LEAST(recobro,0.25), 3) FROM bi.claims_ratio WHERE Id_Cliente = vCustomer AND recobro > 0.009; - + -- Componente de maná automático, en función del maná acumulado por el comercial. INSERT INTO tmp.catalog_component (warehouseFk, itemFk, componentFk, cost) - SELECT vWarehouse, vItem, vComponentMana, ROUND(prices_modifier_rate, 3) - FROM client c - JOIN bs.mana_spellers ms ON c.salesPersonFk = ms.Id_Trabajador - WHERE ms.prices_modifier_activated AND c.id = vCustomer LIMIT 1; - + SELECT vWarehouse, vItem, vComponentMana, ROUND(wm.pricesModifierRate, 3) + FROM client c + JOIN vn.workerMana wm ON c.salesPersonFk = wm.workerFk + WHERE wm.isPricesModifierActivated AND c.id = vCustomer LIMIT 1; + -- Reparto INSERT INTO tmp.catalog_component (warehouseFk, itemFk, componentFk, cost) SELECT vWarehouse, vItem, vDeliveryComponent, ROUND( - vM3 + vM3 * (z.price - z.bonus) - * z.inflation + * z.inflation / vBoxVolume, 4 ) - FROM zone z + FROM zone z WHERE z.id = vZoneFk; - + -- Precio de venta SELECT SUM(cost) INTO vRetailedPrice FROM tmp.catalog_component; - RETURN vRetailedPrice; - + RETURN vRetailedPrice; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -43997,11 +41476,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `clientGetDebt`(`vClient` INT, `vDate` DATE) RETURNS decimal(10,2) +CREATE DEFINER=`root`@`localhost` FUNCTION `clientGetDebt`(`vClient` INT, `vDate` DATE) RETURNS decimal(10,2) READS SQL DATA BEGIN /** @@ -44019,31 +41498,31 @@ BEGIN SELECT COUNT(*) INTO vHasDebt FROM `client` c WHERE c.id = vClient AND c.typeFk = 'normal'; - + IF NOT vHasDebt THEN RETURN 0; END IF; - SET vDate = IFNULL(vDate, CURDATE()); - - SET vDateIni = TIMESTAMPADD(MONTH, -2, CURDATE()); + SET vDate = IFNULL(vDate, util.VN_CURDATE()); + + SET vDateIni = TIMESTAMPADD(MONTH, -2, util.VN_CURDATE()); SET vDateEnd = TIMESTAMP(vDate, '23:59:59'); SELECT IFNULL(SUM(t.amount), 0) INTO vDebt - FROM ( + FROM ( SELECT SUM(IFNULL(totalWithVat,0)) amount FROM ticket WHERE clientFk = vClient AND refFk IS NULL AND shipped BETWEEN vDateIni AND vDateEnd - UNION ALL + UNION ALL SELECT SUM(amountPaid) amount FROM receipt WHERE clientFk = vClient AND payed > vDateEnd UNION ALL SELECT SUM(amount) - FROM clientRisk + FROM clientRisk WHERE clientFk = vClient UNION ALL SELECT CAST(-SUM(amount) / 100 AS DECIMAL(10,2)) @@ -44064,13 +41543,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `clientGetMana`(vClient INT) RETURNS decimal(10,2) +CREATE DEFINER=`root`@`localhost` FUNCTION `clientGetMana`(vClient INT) RETURNS decimal(10,2) DETERMINISTIC BEGIN /** @@ -44086,30 +41565,30 @@ BEGIN DECLARE vAutoManaComponent INT; DECLARE vManaBank INT; DECLARE vManaGreugeType INT; - + SELECT id INTO vManaGreugeType FROM greugeType WHERE code = 'mana'; SELECT id INTO vManaBank FROM bank WHERE code = 'mana'; SELECT id INTO vManaComponent FROM component WHERE code = 'mana'; SELECT id INTO vAutoManaComponent FROM component WHERE code = 'autoMana'; - + SELECT COUNT(*) INTO vHasMana FROM `client` c WHERE c.id = vClient AND c.typeFk = 'normal'; - + IF NOT vHasMana THEN RETURN 0; END IF; - + SELECT max(dated) INTO vFromDated FROM clientManaCache; SELECT sum(mana) INTO vMana - FROM + FROM ( SELECT mana FROM clientManaCache WHERE clientFk = vClient - AND dated = vFromDated + AND dated = vFromDated UNION ALL SELECT s.quantity * value FROM ticket t @@ -44117,8 +41596,8 @@ BEGIN JOIN sale s on s.ticketFk = t.id JOIN saleComponent sc on sc.saleFk = s.id WHERE sc.componentFk IN (vManaComponent, vAutoManaComponent) - AND t.shipped > vFromDated - AND t.shipped < TIMESTAMPADD(DAY,1,CURDATE()) + AND t.shipped > vFromDated + AND t.shipped < TIMESTAMPADD(DAY,1,util.VN_CURDATE()) AND a.clientFk = vClient UNION ALL SELECT - amountPaid @@ -44126,7 +41605,7 @@ BEGIN JOIN `client` c ON c.id = r.clientFk WHERE r.bankFk = vManaBank AND r.payed > vFromDated - AND r.payed <= CURDATE() + AND r.payed <= util.VN_CURDATE() AND c.id = vClient UNION ALL SELECT g.amount @@ -44134,7 +41613,7 @@ BEGIN JOIN `client` c ON c.id = g.clientFk WHERE g.greugeTypeFk = vManaGreugeType AND g.shipped > vFromDated - AND g.shipped <= CURDATE() + AND g.shipped <= util.VN_CURDATE() AND c.id = vClient ) sub; RETURN IFNULL(vMana,0); @@ -44150,11 +41629,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `clientGetSalesPerson`(vClientFk INT, vDated DATE) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `clientGetSalesPerson`(vClientFk INT, vDated DATE) RETURNS int(11) DETERMINISTIC BEGIN /** @@ -44171,42 +41650,30 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `clientTaxArea`(vClientId INT, vCompanyId INT) RETURNS varchar(25) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `clientTaxArea`(vClientId INT, vCompanyId INT) RETURNS varchar(25) CHARSET utf8mb3 + READS SQL DATA BEGIN /** - * Devuelve el area de un cliente, + * Devuelve el area de un cliente, * intracomunitario, extracomunitario o nacional. * * @param vClient Id del cliente * @param vCompanyFk Compañia desde la que se factura * @return Código de area */ - DECLARE vTaxArea VARCHAR(25); - DECLARE vCee INT; - - SELECT ct.Cee INTO vCee - FROM `client` c - JOIN country ct ON ct.id = c.countryFk - JOIN supplier s ON s.id = vCompanyId - WHERE - c.id = vClientId - AND c.isVies - AND c.countryFk != s.countryFk; - - IF vCee < 2 THEN - SET vTaxArea = 'CEE'; - ELSEIF vCee = 2 THEN - SET vTaxArea = 'WORLD'; - ELSE - SET vTaxArea = 'NATIONAL'; - END IF; - + DECLARE vTaxArea VARCHAR(25); + + SELECT addressTaxArea(defaultAddressFk, vCompanyId) + INTO vTaxArea + FROM client + WHERE id = vClientId; + RETURN vTaxArea; END ;; DELIMITER ; @@ -44220,11 +41687,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `client_getFromPhone`(vPhone VARCHAR(255)) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `client_getFromPhone`(vPhone VARCHAR(255)) RETURNS int(11) DETERMINISTIC BEGIN /** @@ -44250,11 +41717,9 @@ BEGIN WHERE phone = vPhone OR mobile = vPhone UNION - SELECT r.id_cliente - FROM vn2008.Relaciones r - JOIN vn2008.Contactos c ON r.Id_Contacto = c.Id_Contacto - WHERE c.telefono = vPhone - OR c.movil = vPhone; + SELECT clientFk + FROM vn.clientContact + WHERE phone = vPhone; SELECT t.clientFk INTO vClient FROM tClient t @@ -44277,16 +41742,16 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `client_getSalesPerson`(vClientFk INT, vDated DATE) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `client_getSalesPerson`(vClientFk INT, vDated DATE) RETURNS int(11) DETERMINISTIC BEGIN /** - * Dado un id cliente y una fecha, devuelve su comercial para ese dia, teniendo - * en cuenta la jerarquía de las tablas: 1º la de sharingclient, 2º la de + * Dado un id cliente y una fecha, devuelve su comercial para ese dia, teniendo + * en cuenta la jerarquía de las tablas: 1º la de sharingclient, 2º la de * sharingcart y tercero la de clientes. * * @param vClientFk El id del cliente @@ -44324,29 +41789,29 @@ BEGIN l: LOOP SELECT workerSubstitute INTO vWorkerSubstituteFk - FROM sharingCart - WHERE curdate() BETWEEN started AND ended + FROM sharingCart + WHERE util.VN_CURDATE() BETWEEN started AND ended AND workerFk = vSalesPersonFk ORDER BY id LIMIT 1; - + IF vWorkerSubstituteFk IS NULL THEN LEAVE l; END IF; - + SELECT COUNT(*) > 0 INTO vLoop FROM tmp.stack WHERE substitute = vWorkerSubstituteFk; IF vLoop THEN LEAVE l; END IF; - + INSERT INTO tmp.stack SET substitute = vWorkerSubstituteFk; - + SET vSalesPersonFk = vWorkerSubstituteFk; END LOOP; - + DROP TEMPORARY TABLE tmp.stack; END IF; @@ -44363,11 +41828,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `client_getSalesPersonByTicket`(vTicketFk INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `client_getSalesPersonByTicket`(vTicketFk INT) RETURNS int(11) DETERMINISTIC BEGIN /** @@ -44380,11 +41845,11 @@ BEGIN **/ DECLARE vClientFk INT; DECLARE vDated DATE; - + SELECT clientFk, shipped INTO vClientFk, vDated FROM ticket WHERE id = vTicketFk; - + RETURN client_getSalesPerson(vClientFk, vDated); END ;; DELIMITER ; @@ -44396,13 +41861,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `client_getSalesPersonCode`(vClientFk INT, vDated DATE) RETURNS varchar(3) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `client_getSalesPersonCode`(vClientFk INT, vDated DATE) RETURNS varchar(3) CHARSET utf8mb3 DETERMINISTIC BEGIN /** @@ -44415,12 +41880,12 @@ BEGIN **/ DECLARE vWorkerCode CHAR(3); DECLARE vSalesPersonFk INT; - + SET vSalesPersonFk = client_getSalesPerson(vClientFk, vDated); SELECT code INTO vWorkerCode - FROM worker + FROM worker WHERE id = vSalesPersonFk; RETURN vWorkerCode; @@ -44436,11 +41901,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `client_getSalesPersonCodeByTicket`(vTicketFk INT) RETURNS varchar(3) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `client_getSalesPersonCodeByTicket`(vTicketFk INT) RETURNS varchar(3) CHARSET utf8mb3 DETERMINISTIC BEGIN /** @@ -44453,11 +41918,11 @@ BEGIN **/ DECLARE vClientFk INT; DECLARE vDated DATE; - + SELECT clientFk, shipped INTO vClientFk, vDated FROM ticket WHERE id = vTicketFk; - + RETURN client_getSalesPersonCode(vClientFk, vDated); END ;; DELIMITER ; @@ -44471,35 +41936,64 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `collectionExpeditionLacks`(vCollectionFk INT) RETURNS varchar(100) CHARSET utf8 COLLATE utf8_unicode_ci +CREATE DEFINER=`root`@`localhost` FUNCTION `collectionExpeditionLacks`(vCollectionFk INT) RETURNS varchar(100) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci DETERMINISTIC BEGIN - - DECLARE vExpeditionLacks BOOL; +/** + * Return message with tickets and collection if there is tickets of a collection without expeditions. + * + * @param vCollectionFk The collection to check + * @return An array with collection and tickets without expeditions + */ DECLARE vAnswer VARCHAR(100) DEFAULT ''; - - SELECT (COUNT(*) > 0) INTO vExpeditionLacks - FROM vn.ticketCollection tc - LEFT JOIN vn.expedition e ON e.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND ISNULL(e.id); - - IF vExpeditionLacks THEN + IF collection_isPacked(vCollectionFk) = FALSE THEN SELECT CONCAT('Colección: ',tc.collectionFk,' Tickets: ' , GROUP_CONCAT(tc.ticketFk) ) INTO vAnswer - FROM vn.ticketCollection tc - LEFT JOIN vn.expedition e ON e.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND ISNULL(e.id); - + FROM vn.ticketCollection tc + LEFT JOIN vn.expedition e ON e.ticketFk = tc.ticketFk + WHERE tc.collectionFk = vCollectionFk + AND ISNULL(e.id); END IF; RETURN vAnswer; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `collection_isPacked` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` FUNCTION `collection_isPacked`(vSelf INT) RETURNS tinyint(1) + DETERMINISTIC +BEGIN +/** + * Check if collection is packed. + * + * @param vSelf the collection to check + * @return true if the collection is packed + */ + DECLARE vTicketsWithoutExpeditions INT; + SELECT (COUNT(*) > 0) INTO vTicketsWithoutExpeditions + FROM vn.ticketCollection tc + LEFT JOIN vn.expedition e ON e.ticketFk = tc.ticketFk + WHERE tc.collectionFk = vSelf + AND ISNULL(e.id); + + RETURN NOT vTicketsWithoutExpeditions; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -44510,17 +42004,18 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `currentRate`(vCurrencyFk INT, vDated DATE) RETURNS decimal(10,4) +CREATE DEFINER=`root`@`localhost` FUNCTION `currentRate`(vCurrencyFk INT, vDated DATE) RETURNS decimal(10,4) + READS SQL DATA BEGIN DECLARE curRate DECIMAL(10,4); - + SELECT value INTO curRate FROM referenceRate WHERE dated <= vDated @@ -44542,32 +42037,32 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `deviceProductionUser_accessGranted`(vUserFK INT(10) , android_id VARCHAR(50)) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `deviceProductionUser_accessGranted`(vUserFK INT(10) , android_id VARCHAR(50)) RETURNS tinyint(1) DETERMINISTIC BEGIN /* * Comprueba si el usuario puede entrar en la aplicacion de almacen con ese movil - * + * * */ - + /*DECLARE vIsGranted BOOLEAN; DECLARE vDeviceProductionFk INT(11) DEFAULT NULL; - SELECT dp.id INTO vDeviceProductionFk - FROM vn.deviceProduction dp + SELECT dp.id INTO vDeviceProductionFk + FROM vn.deviceProduction dp WHERE dp.android_id = android_id; IF vDeviceProductionFk THEN - - SELECT COUNT(*) INTO vIsGranted - FROM vn.deviceProductionUser dpu - WHERE dpu.userFk = vUserFK + + SELECT COUNT(*) INTO vIsGranted + FROM vn.deviceProductionUser dpu + WHERE dpu.userFk = vUserFK AND dpu.deviceProductionFk = vDeviceProductionFk; - + RETURN vIsGranted; END IF;*/ RETURN TRUE; @@ -44583,28 +42078,29 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `duaTax_getRate`(vDua INT, vTaxClass INT) RETURNS decimal(5,2) +CREATE DEFINER=`root`@`localhost` FUNCTION `duaTax_getRate`(vDua INT, vTaxClass INT) RETURNS decimal(5,2) DETERMINISTIC BEGIN DECLARE vCountryFk INTEGER; - + SELECT s.countryFk INTO vCountryFk FROM dua d JOIN supplier s ON s.id = d.companyFk WHERE d.id = vDua; - + RETURN (SELECT rate FROM (SELECT taxClassFk, rate - FROM invoiceInTaxBookingAccount - WHERE effectived <= CURDATE() + FROM invoiceInTaxBookingAccount + WHERE effectived <= util.VN_CURDATE() AND countryFk = vCountryFk AND taxClassFk = vTaxClass ORDER BY effectived DESC + LIMIT 10000000000000000000 ) ba1 GROUP BY taxClassFk); END ;; @@ -44617,78 +42113,77 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `ekt_getEntry`(vEktFk INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `ekt_getEntry`(vEktFk INT) RETURNS int(11) READS SQL DATA BEGIN +/** + * Devuelve el numero de entrada para el ekt + * + * @param vEktFk Identificador de edi.ekt + */ DECLARE vTravelFk INT; - DECLARE vEntryFk INT DEFAULT 0; - DECLARE vEntryAssignFk INT; + DECLARE vEntryFk INT DEFAULT 0; + DECLARE vEntryAssignFk INT; - SET vTravelFk = vn.ekt_getTravel(vEktFk); - - IF vTravelFk THEN - - SELECT ea.id INTO vEntryAssignFk - FROM edi.ekt e - JOIN vn.travel tr ON tr.id = vTravelFk - JOIN vn.ektEntryAssign ea ON ea.warehouseOutFk = tr.warehouseOutFk - AND ea.warehouseInFk = tr.warehouseInFk - AND ea.agencyModeFk = tr.agencyFk - AND IFNULL(ea.sub, e.sub) <=> e.sub - AND IFNULL(ea.kop, e.kop) <=> e.kop - AND IFNULL(ea.pro, e.pro) <=> e.pro - WHERE e.id = vEktFk - ORDER BY ea.sub <=> e.sub AND ea.kop <=> e.kop AND ea.pro <=> e.pro DESC, - ea.sub <=> e.sub AND ea.kop <=> e.kop AND ISNULL(ea.pro) DESC, - ea.sub <=> e.sub AND ISNULL(ea.kop) AND ea.pro <=> e.pro DESC, - ea.sub <=> e.sub AND ISNULL(ea.kop) AND ISNULL(ea.pro) DESC, - ISNULL(ea.sub) AND ea.kop <=> e.kop AND ea.pro <=> e.pro DESC, - ISNULL(ea.sub) AND ea.kop <=> e.kop AND ISNULL(ea.pro) DESC, - ISNULL(ea.sub) AND ISNULL(ea.kop) AND ea.pro <=> e.pro DESC + SELECT ea.id + INTO vEntryAssignFk + FROM edi.ekt e + JOIN vn.ektEntryAssign ea ON + IFNULL(ea.sub, e.sub) <=> e.sub AND + IFNULL(ea.kop, e.kop) <=> e.kop AND + IFNULL(ea.pro, e.pro) <=> e.pro AND + IFNULL(ea.auction, e.auction) <=> e.auction + WHERE e.id = vEktFk + ORDER BY + IF(ea.sub,1,0) * 1000 + + IF(ea.kop,1,0) * 100 + + IF(ea.pro,1,0) * 10 + + IF(ea.auction,1,0) DESC LIMIT 1; - - SELECT MAX(e.id) INTO vEntryFk - FROM vn.entry e - JOIN vn.ektEntryAssign ea ON ea.id = vEntryAssignFk - WHERE e.travelFk = vTravelFk - AND e.sub <=> ea.sub - AND e.kop <=> ea.kop - AND e.pro <=> ea.pro; - - - IF IFNULL(vEntryFk,0) = 0 THEN - - INSERT INTO vn.entry(travelFk, supplierFk, companyFk, currencyFk, kop, sub, ref, pro) - SELECT vTravelFk, ea.supplierFk, c.id, cu.id, ea.kop, ea.sub, ea.ref, ea.pro + + SET vTravelFk = vn.ekt_getTravel(vEntryAssignFk, vEktFk); + + IF vTravelFk THEN + + SELECT MAX(e.id) + INTO vEntryFk + FROM vn.entry e + JOIN vn.ektEntryAssign ea ON ea.id = vEntryAssignFk + WHERE e.travelFk = vTravelFk + AND e.sub <=> ea.sub + AND e.kop <=> ea.kop + AND e.pro <=> ea.pro + AND e.auction <=> ea.auction + AND e.companyFk <=> ea.companyFk; + + IF vEntryFk IS NULL THEN + INSERT INTO vn.entry(travelFk, supplierFk, companyFk, currencyFk, kop, sub, ref, pro, auction) + SELECT vTravelFk, ea.supplierFk, ea.companyFk, cu.id, ea.kop, ea.sub, ea.ref, ea.pro, ea.auction FROM vn.ektEntryAssign ea - JOIN vn.company c ON c.code = 'VNL' - JOIN vn.currency cu ON cu.code = 'EUR' + JOIN vn.currency cu ON cu.code = 'EUR' WHERE ea.id = vEntryAssignFk; - - SELECT MAX(id) INTO vEntryFk - FROM vn.entry - WHERE travelFk = vTravelFk; - + + SET vEntryFk = LAST_INSERT_ID(); END IF; - - UPDATE vn.ektEntryAssign - SET entryFk = vEntryFk - WHERE id = vEntryAssignFk; - + + UPDATE vn.ektEntryAssign + SET entryFk = vEntryFk + WHERE id = vEntryAssignFk; + ELSE - - SET vEntryFk = 9200; - + + SELECT ec.defaultEntry INTO vEntryFk + FROM vn.entryConfig ec; + INSERT IGNORE INTO vn.entry(id) VALUES(vEntryFk); - END IF; - + RETURN vEntryFk; END ;; DELIMITER ; @@ -44700,136 +42195,52 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `ekt_getTravel`(vEktFk INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `ekt_getTravel`(vEntryAssignFk INT, vEktFk INT) RETURNS int(11) READS SQL DATA BEGIN - +/** + * Devuelve un vn.travel.id + * + * @param vEntryAssignFk Identificador de vn.entryAssign + */ DECLARE vTravelFk INT; - DECLARE vEntryAssignFk INT; - SELECT ea.id INTO vEntryAssignFk - FROM edi.ekt e - JOIN vn.ektEntryAssign ea ON IFNULL(ea.sub, e.sub) <=> e.sub - AND IFNULL(ea.kop, e.kop) <=> e.kop - AND IFNULL(ea.pro, e.pro) <=> e.pro - WHERE e.id = vEktFk - ORDER BY ea.sub <=> e.sub AND ea.kop <=> e.kop AND ea.pro <=> e.pro DESC, - ea.sub <=> e.sub AND ea.kop <=> e.kop AND ISNULL(ea.pro) DESC, - ea.sub <=> e.sub AND ISNULL(ea.kop) AND ea.pro <=> e.pro DESC, - ea.sub <=> e.sub AND ISNULL(ea.kop) AND ISNULL(ea.pro) DESC, - ISNULL(ea.sub) AND ea.kop <=> e.kop AND ea.pro <=> e.pro DESC, - ISNULL(ea.sub) AND ea.kop <=> e.kop AND ISNULL(ea.pro) DESC, - ISNULL(ea.sub) AND ISNULL(ea.kop) AND ea.pro <=> e.pro DESC - LIMIT 1; - - SELECT MAX(tr.id) INTO vTravelFk - FROM vn.travel tr - JOIN vn.ektEntryAssign ea ON ea.id = vEntryAssignFk - JOIN edi.ekt e ON e.id = vEktFk - WHERE ea.warehouseOutFk = tr.warehouseOutFk - AND ea.warehouseInFk = tr.warehouseInFk - AND ea.agencyModeFk = tr.agencyFk - AND tr.landed = e.fec; - - /* - SELECT tr.id INTO vTravelFk - FROM vn.travel tr - JOIN edi.ekt e ON e.id = vEktFk - JOIN vn.ektEntryAssign ea ON ea.warehouseOutFk = tr.warehouseOutFk - AND ea.warehouseInFk = tr.warehouseInFk - AND ea.agencyModeFk = tr.agencyFk - AND (ea.sub = e.sub OR ea.kop = e.kop OR ea.pro = e.pro) - AND tr.landed = e.fec - ORDER BY ea.sub <=> e.sub AND ea.kop <=> e.kop AND ea.pro <=> e.pro DESC, - ea.sub <=> e.sub AND ea.kop <=> e.kop AND ISNULL(ea.pro) DESC, - ea.sub <=> e.sub AND ISNULL(ea.kop) AND ea.pro <=> e.pro DESC, - ea.sub <=> e.sub AND ISNULL(ea.kop) AND ISNULL(ea.pro) DESC, - ISNULL(ea.sub) AND ea.kop <=> e.kop AND ea.pro <=> e.pro DESC, - ISNULL(ea.sub) AND ea.kop <=> e.kop AND ISNULL(ea.pro) DESC, - ISNULL(ea.sub) AND ISNULL(ea.kop) AND ea.pro <=> e.pro DESC - LIMIT 1; - */ - - - - IF NOT vTravelFk THEN - - INSERT INTO vn.travel(landed, shipped, warehouseInFk, warehouseOutFk, agencyFk) - SELECT e.fec, e.fec, ea.warehouseInFk, ea.warehouseOutFk, ea.agencyModeFk - FROM edi.ekt e - JOIN vn.ektEntryAssign ea ON ea.kop = e.kop - WHERE e.id = vEktFk - ORDER BY ea.sub <=> e.sub AND ea.kop <=> e.kop AND ea.pro <=> e.pro DESC, - ea.sub <=> e.sub AND ea.kop <=> e.kop AND ISNULL(ea.pro) DESC, - ea.sub <=> e.sub AND ISNULL(ea.kop) AND ea.pro <=> e.pro DESC, - ea.sub <=> e.sub AND ISNULL(ea.kop) AND ISNULL(ea.pro) DESC, - ISNULL(ea.sub) AND ea.kop <=> e.kop AND ea.pro <=> e.pro DESC, - ISNULL(ea.sub) AND ea.kop <=> e.kop AND ISNULL(ea.pro) DESC, - ISNULL(ea.sub) AND ISNULL(ea.kop) AND ea.pro <=> e.pro DESC - LIMIT 1; - - SELECT MAX(id) INTO vTravelFk + IF vEntryAssignFk IS NOT NULL THEN + SELECT MAX(tr.id) INTO vTravelFk FROM vn.travel tr - JOIN edi.ekt e ON e.id = vEktFk - JOIN vn.ektEntryAssign ea ON ea.warehouseOutFk = tr.warehouseOutFk - AND ea.warehouseInFk = tr.warehouseInFk - AND ea.agencyModeFk = tr.agencyFk - AND IFNULL(ea.sub, e.sub) <=> e.sub - AND IFNULL(ea.kop, e.kop) <=> e.kop - AND IFNULL(ea.pro, e.pro) <=> e.pro - AND tr.landed = e.fec; - + JOIN vn.ektEntryAssign ea ON ea.id = vEntryAssignFk + JOIN edi.ekt e ON e.id = vEktFk + WHERE ea.warehouseOutFk = tr.warehouseOutFk + AND ea.warehouseInFk = tr.warehouseInFk + AND ea.agencyModeFk = tr.agencyModeFk + AND tr.landed = e.fec; + + IF vTravelFk IS NULL THEN + + INSERT INTO vn.travel(landed, shipped, warehouseInFk, warehouseOutFk, agencyModeFk) + SELECT e.fec, e.fec, ea.warehouseInFk, ea.warehouseOutFk, ea.agencyModeFk + FROM edi.ekt e + JOIN vn.ektEntryAssign ea ON ea.kop = e.kop + WHERE e.id = vEktFk + ORDER BY + IF(ea.sub,1,0) * 1000 + + IF(ea.kop,1,0) * 100 + + IF(ea.pro,1,0) * 10 + + IF(ea.auction,1,0) DESC + LIMIT 1; + + SET vTravelFk = LAST_INSERT_ID(); + + END IF; END IF; RETURN vTravelFk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `entry_calcCommission__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `entry_calcCommission__`( - vCurrentCommission INT, - vTravelFk INT, - vCurrencyFk INT -) RETURNS int(11) - READS SQL DATA -BEGIN - -- DEPRECATED: use entry_getComission - DECLARE vCommission INT; - - IF vCurrencyFk != 2 /* Dollar */ THEN - RETURN vCurrentCommission; - END IF; - - SELECT ROUND(-100 * (1 - (1 / r.rate))) INTO vCommission - FROM travel t - LEFT JOIN vn2008.reference_min r - ON r.moneda_id = vCurrencyFk AND r.`date` <= t.shipped - WHERE t.id = vTravelFk - ORDER BY r.`date` DESC - LIMIT 1; - - SET vCommission = IFNULL(vCommission, 0); - - RETURN vCommission; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -44840,14 +42251,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `entry_getCommission`( - vTravelFk INT, +CREATE DEFINER=`root`@`localhost` FUNCTION `entry_getCommission`(vTravelFk INT, vCurrencyFk INT, vSupplierFk INT ) RETURNS int(11) @@ -44857,36 +42267,36 @@ BEGIN DECLARE vCurrentCommission INT; DECLARE vIsCurrencyUsd INT; DECLARE vLastEntryFk INT; - + SELECT count(*) INTO vIsCurrencyUsd FROM currency c WHERE c.code = 'USD' AND id = vCurrencyFk; - + IF NOT vIsCurrencyUsd THEN - + SELECT e.id INTO vLastEntryFk FROM vn.entry e JOIN vn.travel tr ON tr.id = e.travelFk WHERE e.supplierFk = vSupplierFk ORDER BY tr.landed DESC LIMIT 1; - + IF vLastEntryFk THEN - + SELECT commission INTO vCurrentCommission FROM vn.entry WHERE id = vLastEntryFk; - + ELSE - + SELECT commission INTO vCurrentCommission FROM supplier s WHERE s.id = vSupplierFk; - + END IF; - + RETURN vCurrentCommission; - + ELSE SELECT ROUND(-100 * (1 - (1 / r.value))) INTO vCommission @@ -44895,58 +42305,11 @@ BEGIN WHERE t.id = vTravelFk ORDER BY r.`dated` DESC LIMIT 1; - + RETURN IFNULL(vCommission, 0); - - END IF; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `entry_getCommission__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `entry_getCommission__`( - vTravelFk INT, - vCurrencyFk INT, - vSupplierFk INT -) RETURNS int(11) - READS SQL DATA -BEGIN - -- bernat: working in this file - DECLARE vCommission INT; - DECLARE vCurrentCommission INT; - DECLARE vIsCurrencyUsd INT; - - SELECT count(*) INTO vIsCurrencyUsd - FROM currency c - WHERE c.code = 'USD' AND id = vCurrencyFk; - - IF NOT vIsCurrencyUsd THEN - SELECT commission INTO vCurrentCommission - FROM supplier s - WHERE s.id = vSupplierFk; - RETURN vCurrentCommission; + END IF; - SELECT ROUND(-100 * (1 - (1 / r.rate))) INTO vCommission - FROM travel t - LEFT JOIN vn2008.reference_min r ON r.moneda_id = vCurrencyFk AND r.`date` <= t.shipped - WHERE t.id = vTravelFk - ORDER BY r.`date` DESC - LIMIT 1; - - RETURN IFNULL(vCommission, 0); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -44959,12 +42322,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `entry_getCurrency`( - vCurrency INT, +CREATE DEFINER=`root`@`localhost` FUNCTION `entry_getCurrency`(vCurrency INT, vSupplierFk INT ) RETURNS int(11) READS SQL DATA @@ -44985,17 +42347,122 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `entry_getForLogiflora` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` FUNCTION `entry_getForLogiflora`(vLanded DATE, vWarehouseFk INT) RETURNS int(11) + 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 ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `entry_isInventoryOrPrevious` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` FUNCTION `entry_isInventoryOrPrevious`(vSelf INT) RETURNS int(11) + DETERMINISTIC +BEGIN + DECLARE vIsInventoryOrPrevious BOOL; + + SELECT ec.inventorySupplierFk = e.supplierFk OR t.landed < c.inventoried + INTO vIsInventoryOrPrevious + FROM entry e + JOIN travel t ON e.travelFk = t.id + JOIN entryConfig ec + JOIN config c + WHERE e.id = vSelf; + + RETURN vIsInventoryOrPrevious; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `expedition_checkRoute` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `expedition_checkRoute`(vPalletFk INT,vExpeditionFk INT) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `expedition_checkRoute`(vPalletFk INT,vExpeditionFk INT) RETURNS tinyint(1) DETERMINISTIC BEGIN /** @@ -45010,17 +42477,17 @@ BEGIN DECLARE vHasDistinctRoutes BOOL; SELECT t.routeFk INTO vRouteFk - FROM vn.expedition e + FROM vn.expedition e JOIN vn.ticket t ON e.ticketFk = t.id WHERE e.id = vExpeditionFk; - + SELECT COUNT(*) > 0 INTO vHasDistinctRoutes FROM vn.expeditionScan es JOIN vn.expedition e ON es.expeditionFk = e.id JOIN vn.ticket t ON e.ticketFk = t.id WHERE es.palletFk = vPalletFk AND t.routeFk <> vRouteFk; - + RETURN vHasDistinctRoutes; END ;; @@ -45029,128 +42496,36 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `floramondo_getEntry` */; +/*!50003 DROP FUNCTION IF EXISTS `firstDayOfWeek` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `floramondo_getEntry`(vLanded DATE, vWarehouseFk INT) RETURNS int(11) - READS SQL DATA +CREATE DEFINER=`root`@`localhost` FUNCTION `firstDayOfWeek`(vYear INT, vWeek INT) RETURNS date + DETERMINISTIC BEGIN +/** + * Returns the date of the first day of the week + * + * @param vYear The year + * @param vWeek The week number + * @return Date of the first day of the week + */ + DECLARE vDate DATE; - DECLARE vTravelFk INT; - DECLARE vEntryFk INT; - DECLARE previousEntryFk INT; + SELECT dated INTO vDate + FROM `time` + WHERE `year` = vYear + AND `week` = vWeek + ORDER BY dated + LIMIT 1; - IF (SELECT COUNT(*) - FROM vn.floramondoNotOfferDay - WHERE dated = vLanded - AND warehouseFk = vWarehouseFk) - THEN - RETURN NULL; - END IF; - - SET vTravelFk = floramondo_getTravel(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 - - DELETE FROM buy WHERE entryFk = previousEntryFk; - - DELETE FROM entry WHERE id = previousEntryFk; - - END IF; - - RETURN vEntryFk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `floramondo_getTravel` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `floramondo_getTravel`(vLanded DATE, vWarehouseFk INT) RETURNS int(11) - READS SQL DATA -BEGIN - - DECLARE vTravelFk INT; - DECLARE vWarehouseOutName VARCHAR(50) DEFAULT 'Holanda'; - -- DECLARE vWarehouseInName VARCHAR(50) DEFAULT 'VNH'; - DECLARE vAgencyModeName VARCHAR(50) DEFAULT 'LOGIFLORA'; - - 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.agencyFk - WHERE wIn.id = vWarehouseFk - AND wOut.name = vWarehouseOutName - AND am.name = vAgencyModeName - AND landed = vLanded; - - IF NOT vTravelFk THEN - - INSERT INTO vn.travel(landed, shipped, warehouseInFk, warehouseOutFk, agencyFk) - SELECT vLanded, curdate(), vWarehouseFk, wOut.id, am.id - FROM vn.warehouse wOut - JOIN vn.agencyMode am ON am.name = vAgencyModeName - WHERE wOut.name = vWarehouseOutName; - - 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 = vWarehouseOutName - AND landed = vLanded; - END IF; - - END IF; - - RETURN vTravelFk; - + RETURN vDate; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -45163,37 +42538,37 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `getAlert3State`(vTicket INT) RETURNS varchar(45) CHARSET utf8 COLLATE utf8_unicode_ci +CREATE DEFINER=`root`@`localhost` FUNCTION `getAlert3State`(vTicket INT) RETURNS varchar(45) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci READS SQL DATA BEGIN DECLARE vDeliveryType INTEGER DEFAULT 0; DECLARE isWaitingForPickUp BOOLEAN DEFAULT FALSE; DECLARE vCode VARCHAR(45); - + SELECT am.deliveryMethodFk - INTO vDeliveryType + INTO vDeliveryType FROM ticket t JOIN agencyMode am ON am.id = t.agencyModeFk WHERE t.id = vTicket; - + CASE vDeliveryType WHEN 1 THEN -- AGENCIAS SET vCode = 'DELIVERED'; - + WHEN 2 THEN -- REPARTO SET vCode = 'ON_DELIVERY'; - + ELSE -- MERCADO, OTROS SELECT MIN(t.warehouseFk <> w.id) INTO isWaitingForPickUp - FROM ticket t + FROM ticket t LEFT JOIN warehouse w ON w.pickUpagencyModeFk = t.agencyModeFk WHERE t.id = vTicket; - + IF isWaitingForPickUp THEN SET vCode = 'WAITING_FOR_PICKUP'; ELSE @@ -45211,89 +42586,40 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `getAlert3StateTest`(vTicket INT) RETURNS varchar(45) CHARSET latin1 +CREATE DEFINER=`root`@`localhost` FUNCTION `getAlert3StateTest`(vTicket INT) RETURNS varchar(45) CHARSET latin1 + READS SQL DATA BEGIN DECLARE vDeliveryType INTEGER DEFAULT 0; DECLARE isWaitingForPickUp BOOLEAN DEFAULT FALSE; DECLARE vCode VARCHAR(45); - - SELECT + + SELECT a.Vista - INTO vDeliveryType + INTO vDeliveryType FROM vn2008.Tickets t JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia WHERE Id_Ticket = vTicket; - + CASE vDeliveryType WHEN 1 THEN -- AGENCIAS SET vCode = 'DELIVERED'; - + WHEN 2 THEN -- REPARTO SET vCode = 'ON_DELIVERY'; - + ELSE -- MERCADO, OTROS SELECT t.warehouse_id <> w.warehouse_id INTO isWaitingForPickUp - FROM vn2008.Tickets t - LEFT JOIN vn2008.warehouse_pickup w + FROM vn2008.Tickets t + LEFT JOIN vn2008.warehouse_pickup w ON w.agency_id = t.Id_Agencia AND w.warehouse_id = t.warehouse_id WHERE t.Id_Ticket = vTicket; - - IF isWaitingForPickUp THEN - SET vCode = 'WAITING_FOR_PICKUP'; - ELSE - SET vCode = 'DELIVERED'; - END IF; - END CASE; - RETURN vCode; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `getAlert3State__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `getAlert3State__`(vTicket INT) RETURNS varchar(45) CHARSET utf8 COLLATE utf8_unicode_ci - READS SQL DATA -BEGIN - DECLARE vDeliveryType INTEGER DEFAULT 0; - DECLARE isWaitingForPickUp BOOLEAN DEFAULT FALSE; - DECLARE vCode VARCHAR(45); - - SELECT a.Vista - INTO vDeliveryType - FROM vn2008.Tickets t - JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia - WHERE Id_Ticket = vTicket; - - CASE vDeliveryType - WHEN 1 THEN -- AGENCIAS - SET vCode = 'DELIVERED'; - - WHEN 2 THEN -- REPARTO - SET vCode = 'ON_DELIVERY'; - - ELSE -- MERCADO, OTROS - SELECT MIN(t.warehouse_id <> w.warehouse_id) INTO isWaitingForPickUp - FROM vn2008.Tickets t - LEFT JOIN vn2008.warehouse_pickup w - ON w.agency_id = t.Id_Agencia - WHERE t.Id_Ticket = vTicket; - + IF isWaitingForPickUp THEN SET vCode = 'WAITING_FOR_PICKUP'; ELSE @@ -45311,20 +42637,21 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `getDueDate`(vDated DATE, vDayToPay INT) RETURNS date +CREATE DEFINER=`root`@`localhost` FUNCTION `getDueDate`(vDated DATE, vDayToPay INT) RETURNS date + NO SQL BEGIN DECLARE vDued DATE; - + IF vDayToPay = 0 THEN RETURN vDated; END IF; - + SET vDued = TIMESTAMPADD(DAY,vDayToPay MOD 30, LAST_DAY(TIMESTAMPADD(MONTH, vDayToPay DIV 30, vDated))); RETURN vDued; @@ -45335,17 +42662,16 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `getInventoryDate` */; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `getInventoryDate`() RETURNS date +CREATE DEFINER=`root`@`localhost` FUNCTION `getInventoryDate`() RETURNS date DETERMINISTIC BEGIN RETURN vn2008.date_inv(); @@ -45355,23 +42681,22 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP FUNCTION IF EXISTS `getNewItemId` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `getNewItemId`() RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `getNewItemId`() RETURNS int(11) + READS SQL DATA BEGIN - DECLARE newItemId INT; - - SELECT i1.id + 1 INTO newItemId + + SELECT i1.id + 1 INTO newItemId FROM item i1 LEFT JOIN item i2 ON i1.id + 1 = i2.id WHERE i2.id IS NULL @@ -45379,34 +42704,48 @@ BEGIN LIMIT 1; RETURN newItemId; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `getPlacementReserve` */; +/*!50003 DROP FUNCTION IF EXISTS `getNextDueDate` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `getPlacementReserve`(vItemFk INT, vWarehouseFk INT) RETURNS varchar(25) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `getNextDueDate`(vDated DATE, vGapDays INT, vPayDay INT) RETURNS date + NO SQL BEGIN - DECLARE vPlacementReserve VARCHAR(25); - - SELECT CONCAT(IFNULL(`code`,'--'), ' / ', IFNULL(reserve,'--')) INTO vPlacementReserve - FROM itemPlacement - WHERE itemFk = vItemFk - AND warehouseFk = vWarehouseFk; + DECLARE vReturn DATE; + DECLARE vDuaDate DATE; + DECLARE vDuaDateDay INT; -RETURN vPlacementReserve; + SELECT TIMESTAMPADD(DAY, vGapDays, vDated) INTO vDuaDate; + + IF vDuaDate = CONCAT(YEAR(vDuaDate), '-03-01') THEN + SET vDuaDate = TIMESTAMPADD (DAY , -1, vDuaDate); + ELSEIF vDuaDate = CONCAT(YEAR(vDuaDate), '-02-29') THEN + SET vDuaDate = TIMESTAMPADD (DAY , -2, vDuaDate); + END IF; + + IF MONTH(vDuaDate) = 2 AND vPayDay = 30 THEN + IF util.isLeapYear(YEAR(vDuaDate)) THEN + SET vPayDay = 29; + ELSE + SET vPayDay = 28; + END IF; + END IF; + + SELECT DAY(vDuaDate) INTO vDuaDateDay; + RETURN TIMESTAMPADD(MONTH, (vDuaDateDay > vPayDay), DATE_FORMAT(vDuaDate, CONCAT('%y/%m/', vPayDay))); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -45417,21 +42756,21 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `getShipmentHour`(vTicket INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `getShipmentHour`(vTicket INT) RETURNS int(11) READS SQL DATA BEGIN DECLARE vShipmentHour INT; - + SELECT HOUR(shipped) INTO vShipmentHour FROM ticket WHERE id = vTicket; - + IF vShipmentHour = 0 THEN DROP TEMPORARY TABLE IF EXISTS tmp.production_buffer; @@ -45446,11 +42785,11 @@ BEGIN JOIN agencyMode am on am.id = t.agencyModeFk JOIN address a on a.id = t.addressFk WHERE t.id = vTicket; - - SELECT Hora INTO vShipmentHour + + SELECT Hora INTO vShipmentHour FROM tmp.production_buffer; END IF; - + RETURN vShipmentHour; END ;; DELIMITER ; @@ -45462,24 +42801,25 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `getSpecialPrice`(vItemFk int(11),vClientFk int(11)) RETURNS decimal(10,2) +CREATE DEFINER=`root`@`localhost` FUNCTION `getSpecialPrice`(vItemFk int(11),vClientFk int(11)) RETURNS decimal(10,2) + READS SQL DATA BEGIN - DECLARE price DECIMAL(10,2); + DECLARE price DECIMAL(10,2); - SELECT rate3 INTO price + SELECT rate3 INTO price FROM vn.priceFixed - WHERE itemFk = vItemFk - AND CURDATE() BETWEEN started AND ended ORDER BY created DESC LIMIT 1; - - SELECT `value` INTO price + WHERE itemFk = vItemFk + AND util.VN_CURDATE() BETWEEN started AND ended ORDER BY created DESC LIMIT 1; + + SELECT `value` INTO price FROM vn.specialPrice - WHERE itemFk = vItemFk + WHERE itemFk = vItemFk AND clientFk = vClientFk ; RETURN price; END ;; @@ -45494,33 +42834,33 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `getTicketToPrepare`(`vWorker` INT, `vWarehouse` INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `getTicketToPrepare`(`vWorker` INT, `vWarehouse` INT) RETURNS int(11) READS SQL DATA BEGIN /** * Devuelve el ticket que debe de preparar el trabajador * - * @param vWorker Id del trabajador + * @param vWorker Id del trabajador * @param vWarehouse Id del almacén * @return Id del ticket * * #UPDATED PAK 2019/08/16 * #PENDING REVIEW **/ - - DECLARE vToday DATETIME DEFAULT CURDATE(); + + DECLARE vToday DATETIME DEFAULT util.VN_CURDATE(); DECLARE vYesterday DATETIME; DECLARE vTodayvMidniight DATETIME DEFAULT midnight(vToday); DECLARE vTicket INT DEFAULT NULL; DECLARE PREVIOUS_PREPARATION INT; DECLARE vHasBeenPreviouslyPrepared INT DEFAULT 0; - + -- Si hay algun ticket previamente seleccionado, y se ha quedado sin empezar, lo recupera en primer lugar. - /* + /* SELECT i.Id_Ticket INTO vTicket FROM vncontrol.inter i JOIN vn.state s ON s.id = i.state_id @@ -45529,15 +42869,15 @@ BEGIN FROM vn.sale s JOIN vn.saleTracking st ON st.saleFk = s.id JOIN vn.ticketStateToday tst ON tst.ticket = s.ticketFk - WHERE st.created > CURDATE() + WHERE st.created > util.VN_CURDATE() -- AND tst.`code` = 'ON_PREPARATION' ) sub ON sub.ticketFk = i.Id_Ticket - WHERE odbc_date > CURDATE() + WHERE odbc_date > util.VN_CURDATE() AND s.`code` = 'ON_PREPARATION' AND i.Id_Trabajador = vWorker AND sub.ticketFk IS NULL LIMIT 1; - + IF vTicket IS NULL THEN */ SELECT id INTO PREVIOUS_PREPARATION @@ -45545,20 +42885,20 @@ BEGIN WHERE code LIKE 'PREVIOUS_PREPARATION'; SET vYesterday = TIMESTAMPADD(DAY,-1,vToday); - + DROP TEMPORARY TABLE IF EXISTS tmp.workerComercial; CREATE TEMPORARY TABLE tmp.workerComercial ENGINE = MEMORY - SELECT workerFk as worker FROM `grant` g - JOIN grantGroup gg ON g.`groupFk` = gg.id + SELECT workerFk as worker FROM `grant` g + JOIN grantGroup gg ON g.`groupFk` = gg.id WHERE gg.description = 'Comerciales'; - - DELETE wc.* + + DELETE wc.* FROM tmp.workerComercial wc JOIN `grant` g ON g.workerFk = wc.worker - JOIN grantGroup gg ON g.`groupFk` = gg.id - WHERE gg.description = 'Gerencia'; - + JOIN grantGroup gg ON g.`groupFk` = gg.id + WHERE gg.description = 'Gerencia'; + DROP TEMPORARY TABLE IF EXISTS tmp.production_buffer; CREATE TEMPORARY TABLE tmp.production_buffer ENGINE = MEMORY @@ -45579,18 +42919,18 @@ BEGIN LEFT JOIN vn.zone z ON z.id = t.zoneFk WHERE t.shipped BETWEEN vYesterday AND vTodayvMidniight AND t.warehouseFk = vWarehouse - AND + AND ( (tls.code = 'PRINTED' AND wc.worker IS NULL) - OR + OR (tls.code ='PICKER_DESIGNED' AND tls.worker = vWorker) - OR + OR (tls.code = 'PRINTED_BACK') - OR + OR (tls.code = 'PRINTED PREVIOUS') ); - - + + SELECT ticket INTO vTicket FROM tmp.production_buffer ORDER BY (code = 'PICKER_DESIGNED') DESC, (code = 'PRINTED PREVIOUS') DESC ,Hora, Minuto, loadingOrder @@ -45601,15 +42941,15 @@ BEGIN FROM vncontrol.inter WHERE Id_Ticket = vTicket AND state_id = PREVIOUS_PREPARATION; - - IF vHasBeenPreviouslyPrepared AND ticketWarehouseGet(vTicket) = 1 THEN - + + IF vHasBeenPreviouslyPrepared AND ticketWarehouseGet(vTicket) = 1 THEN + INSERT IGNORE INTO vn.ticketDown(ticketFk) VALUES(vTicket); - + END IF; -- END IF; - + RETURN vTicket; END ;; @@ -45619,56 +42959,53 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `getTicketTrolleyLabelCount` */; -ALTER DATABASE `vn` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `getTicketTrolleyLabelCount`(vTicket INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `getTicketTrolleyLabelCount`(vTicket INT) RETURNS int(11) + READS SQL DATA BEGIN + DECLARE vLabelCount INT DEFAULT 0; -DECLARE vLabelCount INT DEFAULT 0; + SELECT labelCount INTO vLabelCount + FROM ticketTrolley + WHERE ticket = vTicket; -SELECT labelCount INTO vLabelCount -FROM ticketTrolley -WHERE ticket = vTicket; + SET vLabelCount = vLabelCount +1 ; -SET vLabelCount = vLabelCount +1 ; - -REPLACE ticketTrolley(ticket,labelCount) -SELECT vTicket, vLabelCount; - -RETURN vlabelCount; + REPLACE ticketTrolley(ticket,labelCount) + SELECT vTicket, vLabelCount; + RETURN vlabelCount; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP FUNCTION IF EXISTS `getUser` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `getUser`() RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `getUser`() RETURNS int(11) DETERMINISTIC BEGIN /** * @deprecated Use account.userGetId() */ - RETURN account.userGetId(); + RETURN account.myUser_getId(); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -45676,80 +43013,52 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `getUserId` */; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `getUserId`(userName varchar(30)) RETURNS int(11) -BEGIN - DECLARE vUser INT; - - SELECT id INTO vUser - FROM account.user - WHERE `name` = userName; - - RETURN vUser; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -/*!50003 DROP FUNCTION IF EXISTS `getWorkerCode` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `getWorkerCode`() RETURNS varchar(3) CHARSET utf8 -BEGIN -DECLARE vUserCode VARCHAR(3) CHARSET utf8 COLLATE utf8_unicode_ci; - -SELECT code INTO vUserCode -FROM worker -WHERE userFk = account.userGetId(); - -RETURN vUserCode; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `getWorker__` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `getWorker__`() RETURNS int(11) - DETERMINISTIC +CREATE DEFINER=`root`@`localhost` FUNCTION `getUserId`(userName varchar(30)) RETURNS int(11) + READS SQL DATA BEGIN -/** - * @deprecated Use myWorker_getId() - */ - DECLARE vUser INT; - - SELECT id INTO vUser - FROM worker - WHERE userFk = account.userGetId(); - - RETURN vUser; + DECLARE vUser INT; + + SELECT id INTO vUser + FROM account.user + WHERE `name` = userName; + + RETURN vUser; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `getWorkerCode` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` FUNCTION `getWorkerCode`() RETURNS varchar(3) CHARSET utf8mb3 + READS SQL DATA +BEGIN + DECLARE vUserCode VARCHAR(3) CHARSET utf8 COLLATE utf8_unicode_ci; + + SELECT code INTO vUserCode + FROM worker + WHERE userFk = account.myUser_getId(); + + RETURN vUserCode; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -45760,15 +43069,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `hasAnyNegativeBase`() RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `hasAnyNegativeBase`() RETURNS tinyint(1) DETERMINISTIC -BEGIN +BEGIN /* Calcula si existe alguna base imponible negativa * Requiere la tabla temporal vn.ticketToInvoice(id) @@ -45776,14 +43085,14 @@ BEGIN * returns BOOLEAN */ DECLARE hasAnyNegativeBase BOOLEAN; - + DROP TEMPORARY TABLE IF EXISTS tmp.ticket; CREATE TEMPORARY TABLE tmp.ticket (KEY (ticketFk)) ENGINE = MEMORY SELECT id ticketFk FROM ticketToInvoice; - + CALL ticket_getTax(NULL); SELECT COUNT(*) INTO hasAnyNegativeBase @@ -45796,59 +43105,9 @@ BEGIN DROP TEMPORARY TABLE tmp.ticketTax; DROP TEMPORARY TABLE tmp.ticket; - - RETURN hasAnyNegativeBase; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `hasAnyNegativeBase__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `hasAnyNegativeBase__`() RETURNS tinyint(1) - DETERMINISTIC -BEGIN - -/* Calcula si existe alguna base imponible negativa -* Requiere la tabla temporal vn.ticketToInvoice(id) -* -* returns BOOLEAN -*/ - - DECLARE vCountry INT; - DECLARE hasAnyNegativeBase BOOLEAN; - - SELECT s.countryFk - INTO vCountry - FROM supplier s - JOIN ticket t ON t.companyFk = s.id - JOIN vn.ticketToInvoice tl ON tl.id = t.id - LIMIT 1; - - SELECT COUNT(*) INTO hasAnyNegativeBase - FROM ( - SELECT SUM(ROUND(s.quantity * s.price * (100 - s.discount)/100,2)) taxableBase - FROM sale s - JOIN item i ON i.id = s.itemFk - JOIN itemTaxCountry itc - ON itc.itemFk = i.id AND itc.countryFk = vCountry - JOIN vn.ticketToInvoice tl ON tl.id = s.ticketFk - GROUP BY itc.taxClassFk - HAVING taxableBase < 0 - ) t1 ; RETURN hasAnyNegativeBase; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -45859,28 +43118,28 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `hasItemsInSector`(vTicketFk INT, vSectorFk INT) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `hasItemsInSector`(vTicketFk INT, vSectorFk INT) RETURNS tinyint(1) DETERMINISTIC BEGIN DECLARE vItemCount INT; - + SELECT count(*) INTO vItemCount - FROM vn.sale s + FROM vn.sale s JOIN vn.itemShelving ish ON ish.itemFk = s.itemFk JOIN vn.shelving sh ON sh.code = ish.shelvingFk JOIN vn.parking p ON p.id = sh.parkingFk WHERE s.ticketFk = vTicketFk AND p.sectorFk = vSectorFk; - + RETURN vItemCount; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -45891,38 +43150,37 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `hasSomeNegativeBase`(vTicket INT) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `hasSomeNegativeBase`(vTicket INT) RETURNS tinyint(1) + READS SQL DATA BEGIN - - DECLARE vCountry INT; + DECLARE vCountry INT; DECLARE hasSomeNegativeBase BOOLEAN; - SELECT s.countryFk - INTO vCountry - FROM supplier s - JOIN ticket t ON t.companyFk = s.id - WHERE t.id = vTicket; + SELECT s.countryFk + INTO vCountry + FROM supplier s + JOIN ticket t ON t.companyFk = s.id + WHERE t.id = vTicket; - SELECT COUNT(*) INTO hasSomeNegativeBase - FROM ( - SELECT SUM(ROUND(s.quantity * s.price * (100 - s.discount)/100,2)) taxableBase - FROM sale s - JOIN item i ON i.id = s.itemFk - JOIN itemTaxCountry itc - ON itc.itemFk = i.id AND itc.countryFk = vCountry - WHERE s.ticketFk = vTicket - GROUP BY itc.taxClassFk - HAVING taxableBase < 0 - ) t1 ; + SELECT COUNT(*) INTO hasSomeNegativeBase + FROM ( + SELECT SUM(ROUND(s.quantity * s.price * (100 - s.discount)/100,2)) taxableBase + FROM sale s + JOIN item i ON i.id = s.itemFk + JOIN itemTaxCountry itc + ON itc.itemFk = i.id AND itc.countryFk = vCountry + WHERE s.ticketFk = vTicket + GROUP BY itc.taxClassFk + HAVING taxableBase < 0 + ) t1 ; RETURN hasSomeNegativeBase; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -45933,31 +43191,31 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `invoiceOutAmount`(vInvoiceRef VARCHAR(15)) RETURNS decimal(10,2) +CREATE DEFINER=`root`@`localhost` FUNCTION `invoiceOutAmount`(vInvoiceRef VARCHAR(15)) RETURNS decimal(10,2) + READS SQL DATA BEGIN DECLARE totalAmount DECIMAL(10,2); SELECT SUM(vat) INTO totalAmount - FROM - ( - SELECT iot.vat - FROM invoiceOutTax iot - JOIN invoiceOut io ON io.id = iot.invoiceOutFk - WHERE io.ref = vInvoiceRef - UNION ALL - SELECT ioe.amount - FROM invoiceOutExpence ioe - JOIN invoiceOut io ON io.id = ioe.invoiceOutFk - WHERE io.ref = vInvoiceRef + FROM ( + SELECT iot.vat + FROM invoiceOutTax iot + JOIN invoiceOut io ON io.id = iot.invoiceOutFk + WHERE io.ref = vInvoiceRef + UNION ALL + SELECT ioe.amount + FROM invoiceOutExpence ioe + JOIN invoiceOut io ON io.id = ioe.invoiceOutFk + WHERE io.ref = vInvoiceRef ) t1; - -RETURN totalAmount; + + RETURN totalAmount; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -45970,17 +43228,17 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `invoiceOut_getPath`(vSelf INT) RETURNS varchar(255) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `invoiceOut_getPath`(vSelf INT) RETURNS varchar(255) CHARSET utf8mb3 DETERMINISTIC BEGIN DECLARE vIssued DATE; DECLARE vSerial VARCHAR(15); - SELECT issued, ref + SELECT issued, ref INTO vIssued, vSerial FROM invoiceOut WHERE id = vSelf; @@ -45997,23 +43255,63 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `invoiceOut_getWeight` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` FUNCTION `invoiceOut_getWeight`(vInvoice VARCHAR(15)) RETURNS decimal(10,2) + READS SQL DATA +BEGIN +/** + * Calcula el peso de una factura emitida + * + * @param vInvoice Id de la factura + * @return vTotalWeight peso de la factura + */ + DECLARE vTotalWeight DECIMAL(10,2); + + SELECT SUM(CAST(IFNULL(i.stems, 1) * s.quantity * + IF(ic.grams, ic.grams, i.density * ic.cm3delivery / 1000) + / 1000 AS DECIMAL(10,2))) + INTO vTotalWeight + FROM ticket t + JOIN sale s ON s.ticketFk = t.id + JOIN item i ON i.id = s.itemFk + JOIN itemCost ic ON ic.itemFk = i.id + AND ic.warehouseFk = t.warehouseFk + WHERE t.refFk = vInvoice + AND i.intrastatFk ; + + RETURN vTotalWeight; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `invoiceSerial` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `invoiceSerial`(vClientFk INT, vCompanyFk INT, vType CHAR(1)) RETURNS char(1) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `invoiceSerial`(vClientFk INT, vCompanyFk INT, vType CHAR(1)) RETURNS char(1) CHARSET utf8mb3 DETERMINISTIC BEGIN /** - * Obtiene la serie de de una factura + * Obtiene la serie de de una factura * dependiendo del area del cliente. - * + * * @param vClientFk Id del cliente * @param vCompanyFk Id de la empresa * @param vType Tipo de factura ["R", "M", "G"] @@ -46039,53 +43337,40 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `invoiceSerialArea`(vType CHAR(1), vTaxArea VARCHAR(25)) RETURNS char(1) CHARSET utf8 COLLATE utf8_unicode_ci +CREATE DEFINER=`root`@`localhost` FUNCTION `invoiceSerialArea`(vType CHAR(1), vTaxArea VARCHAR(25)) RETURNS char(1) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci DETERMINISTIC BEGIN - DECLARE vSerie CHAR(1); - + IF vType = 'R' THEN - SELECT - CASE vTaxArea - WHEN 'CEE' - THEN 'H' - WHEN 'WORLD' - THEN 'E' - WHEN 'NATIONAL' - THEN 'T' - END - INTO vSerie; - -- Factura multiple + SELECT + CASE vTaxArea + WHEN 'CEE' THEN 'H' + WHEN 'WORLD' THEN 'E' + ELSE 'T' + END INTO vSerie; + -- Factura multiple ELSEIF vType = 'M' THEN - SELECT - CASE vTaxArea - WHEN 'CEE' - THEN 'H' - WHEN 'WORLD' - THEN 'E' - WHEN 'NATIONAL' - THEN 'M' - END - INTO vSerie; + SELECT + CASE vTaxArea + WHEN 'CEE' THEN 'H' + WHEN 'WORLD' THEN 'E' + ELSE 'M' + END INTO vSerie; -- Factura global ELSEIF vType = 'G' THEN - SELECT - CASE vTaxArea - WHEN 'CEE' - THEN 'V' - WHEN 'WORLD' - THEN 'X' - WHEN 'NATIONAL' - THEN 'A' - END - INTO vSerie; + SELECT + CASE vTaxArea + WHEN 'CEE' THEN 'V' + WHEN 'WORLD' THEN 'X' + ELSE 'A' + END INTO vSerie; END IF; RETURN vSerie; END ;; @@ -46094,46 +43379,77 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `isDateRangeAccounting` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` FUNCTION `isDateRangeAccounting`(vSelf DATE) RETURNS int(11) + READS SQL DATA +BEGIN +/** + * Comprueba si la fecha pasada esta en el rango + * de fecha de contabilidad + * + * @param vSelf Fecha para comparar + * @return vReturn + * + */ + DECLARE vReturn BOOL; + + SELECT COUNT(*) INTO vReturn + FROM accountingConfig + WHERE Vself BETWEEN minDate AND maxDate; + + RETURN vReturn; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `isIntrastatEntry` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `isIntrastatEntry`(vEntryFk INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `isIntrastatEntry`(vEntryFk INT) RETURNS int(11) + READS SQL DATA BEGIN - DECLARE isIntrastatOperation BOOL DEFAULT FALSE; - DECLARE vSupplierCountry INT DEFAULT -1; - DECLARE vClientCountry INT DEFAULT -1; + DECLARE vSupplierCountry INT DEFAULT -1; + DECLARE vClientCountry INT DEFAULT -1; SELECT c.id INTO vSupplierCountry FROM vn.country c - JOIN vn.supplier s ON s.countryFk = c.id - JOIN vn.entry e ON e.supplierFk = s.id - WHERE e.id = vEntryFk + JOIN vn.supplier s ON s.countryFk = c.id + JOIN vn.entry e ON e.supplierFk = s.id + WHERE e.id = vEntryFk AND c.isUeeMember = TRUE; - + SELECT c.id INTO vClientCountry FROM vn.country c - JOIN vn.supplier s ON s.countryFk = c.id - JOIN vn.company co ON co.id = s.id - JOIN vn.entry e ON e.companyFk = co.id - WHERE e.id = vEntryFk + JOIN vn.supplier s ON s.countryFk = c.id + JOIN vn.company co ON co.id = s.id + JOIN vn.entry e ON e.companyFk = co.id + WHERE e.id = vEntryFk AND c.isUeeMember = TRUE; - - IF vSupplierCountry != vClientCountry AND vSupplierCountry * vClientCountry > 0 THEN - + + IF vSupplierCountry != vClientCountry AND vSupplierCountry * vClientCountry > 0 THEN SET isIntrastatOperation = TRUE; - END IF; RETURN isIntrastatOperation; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -46144,27 +43460,27 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `isLogifloraDay`(vShipped DATE, vWarehouse INT) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `isLogifloraDay`(vShipped DATE, vWarehouse INT) RETURNS tinyint(1) DETERMINISTIC BEGIN - + DECLARE vIsLogifloraDay BOOLEAN; SELECT COUNT(*) INTO vIsLogifloraDay FROM edi.warehouseFloramondo wf - JOIN vn.floramondoConfig fc + JOIN vn.floramondoConfig fc WHERE wf.warehouseFk = vWarehouse AND vShipped BETWEEN DATE(TIMESTAMPADD(DAY, wf.travellingDays , fc.nextLanded)) AND DATE(TIMESTAMPADD(DAY, wf.travellingDays + wf.dayRange , fc.nextLanded)); - + RETURN vIsLogifloraDay; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -46175,13 +43491,14 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `isPalletHomogeneus`(vExpedition INT) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `isPalletHomogeneus`(vExpedition INT) RETURNS tinyint(1) + READS SQL DATA BEGIN DECLARE vScanId INT; DECLARE vDistinctRoutesInThePallet INT; @@ -46189,9 +43506,9 @@ BEGIN SELECT scan_id INTO vScanId FROM vn2008.scan_line WHERE code = vExpedition - LIMIT 1; + LIMIT 1; - SELECT COUNT(*) INTO vDistinctRoutesInThePallet + SELECT COUNT(*) INTO vDistinctRoutesInThePallet FROM ( SELECT DISTINCT t.Id_Ruta FROM vn2008.scan_line sl @@ -46200,7 +43517,7 @@ BEGIN WHERE sl.scan_id = vScanId AND t.Id_Ruta ) t1; - + RETURN vDistinctRoutesInThePallet = 1; END ;; DELIMITER ; @@ -46212,32 +43529,32 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `itemPacking`(vBarcode VARCHAR(22), vWarehouseFk INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `itemPacking`(vBarcode VARCHAR(22), vWarehouseFk INT) RETURNS int(11) DETERMINISTIC BEGIN DECLARE vPacking INTEGER DEFAULT 0; DECLARE vItemFk INTEGER; - + SELECT vn.barcodeToItem(vBarcode) INTO vItemFk; - - SELECT IFNULL(packing,0) INTO vPacking - FROM vn.buy + + SELECT IFNULL(packing,0) INTO vPacking + FROM vn.buy WHERE id = CAST(vBarcode AS DECIMAL(18,0)); - - - - + + + + IF NOT vPacking THEN CALL cache.last_buy_refresh(FALSE); SELECT IFNULL(packing,1) INTO vPacking - FROM + FROM (SELECT packing , created FROM vn.itemShelving WHERE itemFk = vItemFk @@ -46250,38 +43567,11 @@ BEGIN ) packings ORDER BY created desc LIMIT 1; - + END IF; - + RETURN vPacking; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `itemPlacementGet` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `itemPlacementGet`(vItemFk INT, vWarehouseFk INT) RETURNS varchar(25) CHARSET utf8 -BEGIN - DECLARE vPlacementReserve VARCHAR(25); - - SELECT CONCAT(IFNULL(`code`,'--'), ' / ', IFNULL(reserve,'--')) INTO vPlacementReserve - FROM itemPlacement - WHERE itemFk = vItemFk - AND warehouseFk = vWarehouseFk; - -RETURN vPlacementReserve; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -46292,13 +43582,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `itemShelvingPlacementSupply_ClosestGet`(vParkingFk INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `itemShelvingPlacementSupply_ClosestGet`(vParkingFk INT) RETURNS int(11) READS SQL DATA BEGIN @@ -46306,11 +43596,11 @@ BEGIN DECLARE vColumn INT; DECLARE vClosestParkingFk INT; DECLARE vSectorFk INT; - + SELECT p.column, sectorFk INTO vColumn, vSectorFk FROM vn.parking p WHERE p.id = vParkingFk; - + SELECT itemShelvingFk INTO vClosestParkingFk FROM ( @@ -46320,12 +43610,12 @@ BEGIN JOIN vn.itemPlacementSupplyList ipsl ON ipsl.sectorFk = ispss.sectorFk AND ipsl.itemFk = ispss.itemFk WHERE p.sectorFk = vSectorFk AND ipsl.saldo > 0 - ) sub + ) sub ORDER BY distance LIMIT 1; - + RETURN vClosestParkingFk; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -46336,28 +43626,28 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `itemsInSector_get`(vTicketFk INT, vSectorFk INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `itemsInSector_get`(vTicketFk INT, vSectorFk INT) RETURNS int(11) READS SQL DATA BEGIN DECLARE vItemCount INT; - + SELECT count(*) INTO vItemCount - FROM vn.sale s + FROM vn.sale s JOIN vn.itemShelving ish ON ish.itemFk = s.itemFk JOIN vn.shelving sh ON sh.code = ish.shelvingFk JOIN vn.parking p ON p.id = sh.parkingFk WHERE s.ticketFk = vTicketFk AND p.sectorFk = vSectorFk; - + RETURN vItemCount; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -46370,11 +43660,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `itemTag_getIntValue`(vValue VARCHAR(255)) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `itemTag_getIntValue`(vValue VARCHAR(255)) RETURNS int(11) DETERMINISTIC BEGIN IF vValue NOT REGEXP '^-?[0-9]+' THEN @@ -46392,13 +43682,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `item_getFhImage`(itemFk INT) RETURNS varchar(255) CHARSET utf8 COLLATE utf8_unicode_ci +CREATE DEFINER=`root`@`localhost` FUNCTION `item_getFhImage`(itemFk INT) RETURNS varchar(255) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci DETERMINISTIC BEGIN DECLARE vImageUrl VARCHAR(255); @@ -46421,38 +43711,38 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `item_getPackage`(vItemFk INT) RETURNS varchar(50) CHARSET utf8 COLLATE utf8_unicode_ci +CREATE DEFINER=`root`@`localhost` FUNCTION `item_getPackage`(vItemFk INT) RETURNS varchar(50) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci DETERMINISTIC BEGIN - + DECLARE vDiameter INT; DECLARE vPackageFk VARCHAR(50); DECLARE vCoeficient DOUBLE DEFAULT 1.08; - + SELECT MAX(LEFT(value,3)) INTO vDiameter - FROM vn.itemTag it + FROM vn.itemTag it JOIN vn.tag t ON t.id = it.tagFk WHERE it.itemFk = vItemFk AND t.overwrite = 'diameter'; - + SELECT 8000 + FLOOR(vc.ccLength * vc.ccWidth / (vCoeficient * PI() * (vDiameter / 2) * (vDiameter / 2))) INTO vPackageFk FROM vn.volumeConfig vc; - + INSERT IGNORE INTO vn.packaging(id, width, `depth`) - SELECT vPackageFk, - FLOOR(vc.ccWidth / FLOOR(vc.ccWidth / vDiameter)), + SELECT vPackageFk, + FLOOR(vc.ccWidth / FLOOR(vc.ccWidth / vDiameter)), FLOOR(vc.ccLength / FLOOR(vc.ccLength / vDiameter)) FROM vn.volumeConfig vc; - + RETURN vPackageFk; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -46463,13 +43753,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `item_getVolume`(vSelf INT, vPackaging VARCHAR(10)) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `item_getVolume`(vSelf INT, vPackaging VARCHAR(10)) RETURNS int(11) DETERMINISTIC BEGIN /** @@ -46489,7 +43779,7 @@ BEGIN FROM packaging p JOIN item i ON i.id = vSelf WHERE p.id = vPackaging; - + RETURN vVolume; END ;; @@ -46498,35 +43788,36 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `machineWorker_Worker` */; +/*!50003 DROP FUNCTION IF EXISTS `lastDayOfWeek` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `machineWorker_Worker`(vWorkerFk VARCHAR(10)) RETURNS varchar(20) CHARSET utf8 COLLATE utf8_unicode_ci - READS SQL DATA +CREATE DEFINER=`root`@`localhost` FUNCTION `lastDayOfWeek`(vYear INT, vWeek INT) RETURNS date + DETERMINISTIC BEGIN /** - * Comprueba si existen registros en las últimas 12 horas del trabajador vWorkerFk y si tiene a nulo la hora outTimed (indica la hora que deja el vehículo) - * - * @param vWorkerFk id del trabajador - * @return Devuelve REGISTERED/UNREGISTERED en caso de que haya registros + * Returns the date of the last day of the week + * + * @param vYear The year + * @param vWeek The week number + * @return Date of the first day of the week */ - - IF (SELECT COUNT(*) - FROM machineWorker m - WHERE m.workerFk = vWorkerFk - AND m.inTimed >= TIMESTAMPADD(HOUR , -12,NOW()) AND ISNULL(m.outTimed)) - THEN - RETURN "REGISTERED"; - ELSE - RETURN "UNREGISTERED"; - END IF; + DECLARE vDate DATE; + + SELECT dated INTO vDate + FROM `time` + WHERE `year` = vYear + AND `week` = vWeek + ORDER BY dated DESC + LIMIT 1; + + RETURN vDate; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -46539,25 +43830,25 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `machine_checkPlate`(vPlate VARCHAR(10)) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `machine_checkPlate`(vPlate VARCHAR(10)) RETURNS tinyint(1) READS SQL DATA BEGIN /** * Comprueba si existe matrícula - * + * * @param vPlate matrícula del vehículo * @return Devuelve TRUE en caso de que exista - * + * */ - + IF (SELECT COUNT(*) - FROM machine m + FROM machine m WHERE m.plate = vPlate - ) THEN + ) THEN RETURN TRUE; ELSE RETURN FALSE; @@ -46572,20 +43863,21 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `messageSend`(vRecipient VARCHAR(255) CHARSET utf8, vMessage TEXT CHARSET utf8) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `messageSend`(vRecipient VARCHAR(255) CHARSET utf8, vMessage TEXT CHARSET utf8) RETURNS int(11) + READS SQL DATA BEGIN DECLARE result INT; DECLARE vSenderFk INT; - - SELECT id INTO vSenderFk - FROM account.user WHERE `name` = account.userGetName(); - + + SELECT id INTO vSenderFk + FROM account.user WHERE `name` = account.myUser_getName(); + RETURN (SELECT messageSendWithUser(vSenderFk, vRecipient, vMessage)); END ;; DELIMITER ; @@ -46597,24 +43889,24 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `messageSendWithUser`(vSenderFK INT, vRecipient VARCHAR(255) CHARSET utf8, vMessage TEXT CHARSET utf8) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `messageSendWithUser`(vSenderFK INT, vRecipient VARCHAR(255) CHARSET utf8, vMessage TEXT CHARSET utf8) RETURNS int(11) DETERMINISTIC BEGIN DECLARE vCount INT; DECLARE vUuid VARCHAR(255); - DECLARE vSendDate DATETIME DEFAULT NOW(); + DECLARE vSendDate DATETIME DEFAULT util.VN_NOW(); DECLARE vSender VARCHAR(255) CHARSET utf8; - SELECT `name` INTO vSender + SELECT `name` INTO vSender FROM account.user WHERE id = vSenderFK; - + SET vRecipient = LOWER(vRecipient); DROP TEMPORARY TABLE IF EXISTS tRecipients; @@ -46635,7 +43927,7 @@ BEGIN IF vCount = 0 THEN RETURN vCount; - END IF; + END IF; SET vUuid = UUID(); @@ -46646,7 +43938,7 @@ BEGIN message = vMessage, sendDate = vSendDate; - INSERT INTO messageInbox (uuid, sender, recipient, finalRecipient, message, sendDate) + INSERT INTO messageInbox (uuid, sender, recipient, finalRecipient, message, sendDate) SELECT vUuid, vSender, vRecipient, finalRecipient, vMessage, vSendDate FROM tRecipients; @@ -46659,53 +43951,19 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `MIDNIGHT` */; -ALTER DATABASE `vn` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `MIDNIGHT`(vDate DATE) RETURNS datetime - DETERMINISTIC -BEGIN - RETURN TIMESTAMP(vDate,'23:59:59'); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -/*!50003 DROP FUNCTION IF EXISTS `myWorker_getId__` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `myWorker_getId__`() RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `MIDNIGHT`(vDate DATE) RETURNS datetime DETERMINISTIC BEGIN -/** - * Returns the current worker id or the default worker id - * if current user cannot be retrieved. - * - * @return The worker id - */ - DECLARE vWorker INT; - - SELECT w.id INTO vWorker - FROM worker w, workerConfig__ c - WHERE w.userFk = account.userGetId(); - - RETURN vWorker; + RETURN TIMESTAMP(vDate,'23:59:59'); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -46718,11 +43976,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `nz`(vQuantity DOUBLE) RETURNS double +CREATE DEFINER=`root`@`localhost` FUNCTION `nz`(vQuantity DOUBLE) RETURNS double DETERMINISTIC BEGIN @@ -46742,19 +44000,19 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `orderTotalVolume`(vOrderId INT) RETURNS decimal(10,3) +CREATE DEFINER=`root`@`localhost` FUNCTION `orderTotalVolume`(vOrderId INT) RETURNS decimal(10,3) READS SQL DATA BEGIN -- Devuelte el volumen total de la orden sumada DECLARE vWarehouseId INTEGER; DECLARE vVolume DECIMAL(10,3); - + SELECT IFNULL(SUM(o.amount * ic.cm3delivery)/1000000,0) INTO vVolume FROM hedera.orderRow o JOIN item i ON i.id = o.itemFk @@ -46773,31 +44031,32 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `orderTotalVolumeBoxes`(vOrderId INT) RETURNS decimal(10,3) +CREATE DEFINER=`root`@`localhost` FUNCTION `orderTotalVolumeBoxes`(vOrderId INT) RETURNS decimal(10,3) + READS SQL DATA BEGIN - -/* - * Devuelve el volumen estimado del ticket sumado, en cajas +/** + * Devuelve el volumen estimado del ticket sumado, en cajas * - * idT Numero de ticket - * + * @param vOrder Id del pedido */ DECLARE vVolumeBoxM3 DOUBLE; - DECLARE vOrderTotalVolumeBoxes DECIMAL(10,1); - DECLARE vVnBoxId VARCHAR(10) DEFAULT '94'; - - SELECT volume / 1000000 INTO vVolumeBoxM3 FROM packaging WHERE id = vVnBoxId; - - SET vOrderTotalVolumeBoxes = orderTotalVolume(vOrderId) / vVolumeBoxM3; - - RETURN vOrderTotalVolumeBoxes; + DECLARE vOrderTotalVolumeBoxes DECIMAL(10,1); + DECLARE vVnBoxId VARCHAR(10) DEFAULT '94'; + SELECT volume / 1000000 + INTO vVolumeBoxM3 + FROM packaging + WHERE id = vVnBoxId; + + SET vOrderTotalVolumeBoxes = orderTotalVolume(vOrderId) / vVolumeBoxM3; + + RETURN vOrderTotalVolumeBoxes; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -46810,15 +44069,15 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `phytoPassport`(vRef VARCHAR(15)) RETURNS text CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `phytoPassport`(vRef VARCHAR(15)) RETURNS text CHARSET utf8mb3 DETERMINISTIC BEGIN DECLARE vPhyto TEXT CHARSET utf8 COLLATE utf8_unicode_ci; -SELECT +SELECT GROUP_CONCAT(i.id, ':', ppa.denomination, @@ -46863,32 +44122,32 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `routeProposal`(vTicketFk INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `routeProposal`(vTicketFk INT) RETURNS int(11) READS SQL DATA BEGIN DECLARE vRouteFk INT; DECLARE vAddressFk INT; - + DECLARE vLanded DATE; DECLARE vZoneFk INT; DECLARE vSignificativeFriendship INT DEFAULT 6; DECLARE vVolumeMax DECIMAL(5,1) DEFAULT 10; - + SELECT addressFk, zoneFk, landed INTO vAddressFk, vZoneFk, vLanded - FROM vn.ticket + FROM vn.ticket WHERE id = vTicketFk; - + -- Se inicia la selección de rutas posibles con aquellas cuyas agencias alguna vez han estado asociadas con nuestra zona DROP TEMPORARY TABLE IF EXISTS tmp.route; CREATE TEMPORARY TABLE tmp.route - SELECT r.id routeFk, + SELECT r.id routeFk, zf.friendship zoneFriendship FROM vn.route r JOIN cache.zoneAgencyFriendship zf ON zf.agencyModeFk = r.agencyModeFk @@ -46896,16 +44155,16 @@ BEGIN AND zf.zoneFk = vZoneFk AND r.created = vLanded ORDER BY friendship; - + -- Se eliminan aquellas que superan el volumen máximo DELETE r.* - FROM tmp.route r + FROM tmp.route r JOIN (SELECT routeFk, sum(volume) volume FROM vn.saleVolume WHERE landed = vLanded GROUP BY routeFk) sub ON sub.routeFk = r.routeFk WHERE sub.volume > vVolumeMax; - + -- Se ordenan las que quedan en función con la afinidad del resto de consignatarios de cada ruta SELECT routeFk INTO vRouteFk FROM @@ -46917,7 +44176,7 @@ BEGIN ORDER BY zoneFriendship DESC, friendshipSum DESC ) sub LIMIT 1; - + RETURN vRouteFk; END ;; DELIMITER ; @@ -46929,22 +44188,22 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `routeProposal_`(vTicketFk INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `routeProposal_`(vTicketFk INT) RETURNS int(11) READS SQL DATA BEGIN DECLARE vRouteFk INT; DECLARE vAddressFk INT; DECLARE vShipped DATETIME; - + SELECT addressFk, date(shipped) INTO vAddressFk, vShipped - FROM vn.ticket + FROM vn.ticket WHERE id = vTicketFk; SELECT routeFk INTO vRouteFk @@ -46958,7 +44217,7 @@ BEGIN ORDER BY friendshipSum DESC ) sub LIMIT 1; - + RETURN vRouteFk; END ;; DELIMITER ; @@ -46970,32 +44229,32 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `routeProposal_beta`(vTicketFk INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `routeProposal_beta`(vTicketFk INT) RETURNS int(11) READS SQL DATA BEGIN DECLARE vRouteFk INT; DECLARE vAddressFk INT; - + DECLARE vLanded DATE; DECLARE vZoneFk INT; DECLARE vSignificativeFriendship INT DEFAULT 6; DECLARE vVolumeMax DECIMAL(5,1) DEFAULT 10; - + SELECT addressFk, zoneFk, landed INTO vAddressFk, vZoneFk, vLanded - FROM vn.ticket + FROM vn.ticket WHERE id = vTicketFk; - + -- Se inicia la selección de rutas posibles con aquellas cuyas agencias alguna vez han estado asociadas con nuestra zona DROP TEMPORARY TABLE IF EXISTS tmp.route; CREATE TEMPORARY TABLE tmp.route - SELECT r.id routeFk, + SELECT r.id routeFk, zf.friendship zoneFriendship FROM vn.route r JOIN cache.zoneAgencyFriendship zf ON zf.agencyModeFk = r.agencyModeFk @@ -47003,16 +44262,16 @@ BEGIN AND zf.zoneFk = vZoneFk AND r.created = vLanded ORDER BY friendship; - + -- Se eliminan aquellas que superan el volumen máximo DELETE r.* - FROM tmp.route r + FROM tmp.route r JOIN (SELECT routeFk, sum(volume) volume FROM vn.saleVolume WHERE landed = vLanded GROUP BY routeFk) sub ON sub.routeFk = r.routeFk WHERE sub.volume > vVolumeMax; - + -- Se ordenan las que quedan en función con la afinidad del resto de consignatarios de cada ruta SELECT routeFk INTO vRouteFk FROM @@ -47024,7 +44283,7 @@ BEGIN ORDER BY zoneFriendship DESC, friendshipSum DESC ) sub LIMIT 1; - + RETURN vRouteFk; END ;; DELIMITER ; @@ -47038,33 +44297,33 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `specie_IsForbidden`(vItemFk INT, vAddressFk INT) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `specie_IsForbidden`(vItemFk INT, vAddressFk INT) RETURNS tinyint(1) READS SQL DATA BEGIN - + DECLARE vIsForbbiden BOOL; DECLARE vLeft INT; SELECT zg.lft INTO vLeft - FROM vn.address a - JOIN vn.zoneGeo zg ON zg.name = a.postalCode + FROM vn.address a + JOIN vn.zoneGeo zg ON zg.name = a.postalCode WHERE a.id = vAddressFk; - + SELECT sgi.isForbidden INTO vIsForbbiden - FROM vn.specieGeoInvasive sgi - JOIN vn.zoneGeo zg ON zg.id = sgi.zoneGeofk + FROM vn.specieGeoInvasive sgi + JOIN vn.zoneGeo zg ON zg.id = sgi.zoneGeofk JOIN vn.itemBotanical ib ON ib.genusFk = sgi.genusFk AND sgi.specieFk IN ('sp.',ib.specieFk) WHERE vLeft BETWEEN zg.lft AND zg.rgt AND ib.itemFk = vItemFk - ORDER BY zg.`depth` DESC + ORDER BY zg.`depth` DESC LIMIT 1; RETURN IFNULL(vIsForbbiden, FALSE); - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -47075,16 +44334,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `testCIF`(vCIF VARCHAR(9)) RETURNS varchar(10) CHARSET utf8 COLLATE utf8_unicode_ci +CREATE DEFINER=`root`@`localhost` FUNCTION `testCIF`(vCIF VARCHAR(9)) RETURNS varchar(10) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci DETERMINISTIC BEGIN - + DECLARE vLetraInicial VARCHAR(1); DECLARE vLetraFinal VARCHAR(1); DECLARE vParteNumerica VARCHAR(7); @@ -47096,60 +44355,60 @@ BEGIN SET vLetraInicial = SUBSTR(vCIF, 1, 1); SET vLetraFinal = SUBSTR(vCIF, 9, 1); SET vParteNumerica = SUBSTR(vCIF, 2, 7); - - WHILE i < 7 DO - + + WHILE i < 7 DO + SET i = i + 1; - + SET vNumero = CAST(SUBSTR(vParteNumerica, i, 1) AS DECIMAL(1,0)); - + IF i MOD 2 THEN - + SET vNumero = vNumero * 2; SET vNumero = vNumero MOD 10 + FLOOR(vNumero/10); - + END IF; - + SET vSuma = vSuma + vNumero; - + END WHILE; - + SET vSuma = vSuma MOD 10; - + IF vSuma > 0 THEN - + SET vSuma = 10 - vSuma; - + END IF; - + -- Comprobación de dígito de control IF CAST(vLetraFinal AS DECIMAL(1,0)) = vSuma THEN - + SET vResult = TRUE; - + END IF; - + IF vSuma = 0 THEN - + SET vSuma = 10; - + END IF; - + IF CHAR(64 + vSuma) = vLetraFinal THEN - + SET vResult = TRUE; - + END IF; - + -- Sólo se aceptan letras como caracter inicial IF ASCII(vLetraInicial) < 65 OR ASCII(vLetraInicial) > 87 THEN -- Ha de ser entre la A y la W - + SET vResult = FALSE; - + END IF; - + RETURN vResult; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -47160,16 +44419,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `testNIE`(vNIE VARCHAR(9)) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `testNIE`(vNIE VARCHAR(9)) RETURNS tinyint(1) DETERMINISTIC BEGIN - + DECLARE vIndice INT; DECLARE vNumero VARCHAR(7); DECLARE vOperador VARCHAR(9); @@ -47178,45 +44437,45 @@ BEGIN DECLARE vLetraFinal VARCHAR(1); DECLARE vLetrasFinalesPosibles VARCHAR(24) DEFAULT "TRWAGMYFPDXBNJZSQVHLCKE"; DECLARE vLetraInicialEsIncorrecta BOOL DEFAULT FALSE; - + SET vLetraInicial = SUBSTR(vNIE, 1, 1); SET vLetraFinal = SUBSTR(vNIE, 9, 1); SET vNumero = SUBSTR(vNIE, 2, 7); CASE vLetraInicial - + WHEN 'X' THEN - + SET vOperador = "0"; - + WHEN 'Y' THEN - + SET vOperador = "1"; - + WHEN 'Z' THEN - + SET vOperador = "2"; - + ELSE - + SET vLetraInicialEsIncorrecta = TRUE; - + END CASE; - + SET vOperador = CONCAT(vOperador, vNumero); SET vParteNumerica = CAST(vOperador AS DECIMAL(8,0)); SET vIndice = Round(vParteNumerica Mod 23, 0) + 1; IF SUBSTR(vLetrasFinalesPosibles, vIndice, 1) = vLetraFinal AND vLetraInicialEsIncorrecta = FALSE THEN - + RETURN TRUE; - + ELSE - + RETURN FALSE; - + END IF; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -47227,13 +44486,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `testNIF`(vNIF VARCHAR(9)) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `testNIF`(vNIF VARCHAR(9)) RETURNS tinyint(1) DETERMINISTIC BEGIN @@ -47241,23 +44500,62 @@ BEGIN DECLARE vParteNumerica DECIMAL(8,0); DECLARE vLetra VARCHAR(1); DECLARE vLetrasPosibles VARCHAR(24) DEFAULT "TRWAGMYFPDXBNJZSQVHLCKE"; - + SET vLetra = SUBSTRING(vNIF, 9, 1); - + SET vParteNumerica = CAST(SUBSTRING(vNIF, 1, 8) AS DECIMAL(8,0)); - + SET vIndice = Round(vParteNumerica MOD 23, 0) + 1; - + If SUBSTRING(vLetrasPosibles, vIndice, 1) = vLetra Then - + RETURN TRUE; - + ELSE - + RETURN FALSE; - + END IF; - + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `ticketCollection_getNoPacked` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` FUNCTION `ticketCollection_getNoPacked`(vCollectionFk INT) RETURNS varchar(100) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci + DETERMINISTIC +BEGIN + + /* + * return message with tickets and collection if there is tickets of a collection without expeditions + * + * @param vCollectionFk the collection to check + * @return an array with collection and tickets without expeditions + * + */ + + DECLARE vAnswer VARCHAR(100) DEFAULT ''; + + IF collection_isPacked(vCollectionFk) = FALSE THEN + SELECT CONCAT('Colección: ',tc.collectionFk,' Tickets: ' , GROUP_CONCAT(tc.ticketFk) ) INTO vAnswer + FROM vn.ticketCollection tc + LEFT JOIN vn.expedition e ON e.ticketFk = tc.ticketFk + WHERE tc.collectionFk = vCollectionFk + AND ISNULL(e.id); + END IF; + + RETURN vAnswer; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -47268,13 +44566,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `ticketGetTotal`(vTicketId INT) RETURNS decimal(10,2) +CREATE DEFINER=`root`@`localhost` FUNCTION `ticketGetTotal`(vTicketId INT) RETURNS decimal(10,2) READS SQL DATA DETERMINISTIC BEGIN @@ -47298,9 +44596,9 @@ BEGIN DROP TEMPORARY TABLE tmp.ticket, tmp.ticketTotal; - + RETURN vTotal; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -47313,14 +44611,14 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `ticketPositionInPath`(vTicketId INT) RETURNS varchar(10) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `ticketPositionInPath`(vTicketId INT) RETURNS varchar(10) CHARSET utf8mb3 DETERMINISTIC BEGIN - + DECLARE vRestTicketsMaxOrder INT; DECLARE vRestTicketsMinOrder INT; DECLARE vRestTicketsPacking INT; @@ -47332,7 +44630,7 @@ BEGIN DECLARE vExpeditionsCount INT; DECLARE vIsValenciaPath BOOLEAN DEFAULT FALSE; -SELECT `order` +SELECT `order` INTO PACKING_ORDER FROM state WHERE code = 'PACKING'; @@ -47343,7 +44641,7 @@ SELECT t.routeFk, t.warehouseFk, IFNULL(ts.productionOrder,0) LEFT JOIN ticketState ts on ts.ticket = t.id WHERE t.id = vTicketId; -SELECT (ag.`name` = 'VN_VALENCIA') +SELECT (ag.`name` = 'VN_VALENCIA') INTO vIsValenciaPath FROM vn2008.Rutas r JOIN vn2008.Agencias a on a.Id_Agencia = r.Id_Agencia @@ -47357,7 +44655,7 @@ IF vIsValenciaPath THEN -- Rutas Valencia FROM expedition e JOIN ticket t ON t.id = e.ticketFk WHERE t.routeFk = vMyPath; - + SELECT MAX(ts.productionOrder), MIN(ts.productionOrder) INTO vRestTicketsMaxOrder, vRestTicketsMinOrder FROM ticket t @@ -47366,7 +44664,7 @@ IF vIsValenciaPath THEN -- Rutas Valencia AND t.warehouseFk = vMyWarehouse AND t.id != vTicketid; - SELECT COUNT(*) + SELECT COUNT(*) INTO vRestTicketsPacking FROM ticket t LEFT JOIN ticketState ts on t.id = ts.ticket @@ -47402,28 +44700,28 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `ticketSplitCounter`(vTicketFk INT) RETURNS varchar(15) CHARSET utf8 +CREATE DEFINER=`root`@`localhost` FUNCTION `ticketSplitCounter`(vTicketFk INT) RETURNS varchar(15) CHARSET utf8mb3 READS SQL DATA BEGIN DECLARE vSplitCounter VARCHAR(15); - SELECT CONCAT(OK,'/',Total, IF(OK = Total ,' LS','')) INTO vSplitCounter + SELECT CONCAT(printedStickers,'/',Total, IF(printedStickers = Total ,' LS','')) INTO vSplitCounter FROM ( - SELECT count(l.Id_Movimiento) as OK, COUNT(*) as Total + SELECT count(l.Id_Movimiento) as printedStickers, COUNT(*) as Total FROM vn.sale s LEFT JOIN vn2008.movement_label l ON l.Id_Movimiento = s.id WHERE ticketFk = vTicketFk ) sub; - + RETURN IFNULL(vSplitCounter,'--'); - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -47434,13 +44732,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `ticketTotalVolume`(vTicketId INT) RETURNS decimal(10,3) +CREATE DEFINER=`root`@`localhost` FUNCTION `ticketTotalVolume`(vTicketId INT) RETURNS decimal(10,3) READS SQL DATA BEGIN -- Devuelte el volumen total del ticket sumado @@ -47462,31 +44760,31 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `ticketTotalVolumeBoxes`(vTicketId INT) RETURNS decimal(10,1) +CREATE DEFINER=`root`@`localhost` FUNCTION `ticketTotalVolumeBoxes`(vTicketId INT) RETURNS decimal(10,1) DETERMINISTIC BEGIN -/* +/* * Devuelve el volumen estimado del ticket sumado, en cajas * * vTicketId Numero de ticket - * + * */ DECLARE vVolumeBoxM3 DOUBLE; DECLARE vTicketTotalVolumeBoxes DECIMAL(10,1); DECLARE vVnBoxId VARCHAR(10) DEFAULT '94'; - + SELECT volume / 1000000 INTO vVolumeBoxM3 FROM packaging WHERE id = vVnBoxId; - + SET vTicketTotalVolumeBoxes = ticketTotalVolume(vTicketId) / vVolumeBoxM3; - + RETURN vTicketTotalVolumeBoxes; END ;; @@ -47499,23 +44797,22 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `ticketWarehouseGet`(vTicketFk INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `ticketWarehouseGet`(vTicketFk INT) RETURNS int(11) + READS SQL DATA BEGIN - DECLARE vWarehouseFk INT; SELECT warehouseFk INTO vWarehouseFk - FROM ticket + FROM ticket WHERE id = vTicketFk; RETURN vWarehouseFk; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -47526,27 +44823,27 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `ticket_CC_volume`(vTicketFk INT) RETURNS decimal(10,1) +CREATE DEFINER=`root`@`localhost` FUNCTION `ticket_CC_volume`(vTicketFk INT) RETURNS decimal(10,1) READS SQL DATA BEGIN - + DECLARE vCC DECIMAL(10,1); SELECT sum(sv.volume * IF(i.itemPackingTypeFk = 'H', vc.dutchCompressionRate, 1)) / (p.volume / 1000000) INTO vCC - FROM vn.saleVolume sv - JOIN vn.sale s ON s.id = sv.saleFk - JOIN vn.item i ON i.id = s.itemFk + FROM vn.saleVolume sv + JOIN vn.sale s ON s.id = sv.saleFk + JOIN vn.item i ON i.id = s.itemFk JOIN vn.packaging p ON p.id = 'CC' - JOIN vn.volumeConfig vc + JOIN vn.volumeConfig vc WHERE sv.ticketFk = vTicketFk; - + RETURN vCC; END ;; @@ -47559,71 +44856,71 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `ticket_get`(vParamFk INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `ticket_get`(vParamFk INT) RETURNS int(11) READS SQL DATA proc:BEGIN - + /* Devuelve el número de ticket o collection consultando en varias tablas posibles - * + * * @param vParamFk Número a validar * @return vValidFk Identificador validado */ - + DECLARE vValidFk INT; -- Tabla vn.saleGroup SELECT s.ticketFk INTO vValidFk FROM vn.sale s JOIN vn.saleGroupDetail sgd ON sgd.saleFk = s.id - JOIN vn.saleGroup sg ON sg.id = sgd.saleGroupFk + JOIN vn.saleGroup sg ON sg.id = sgd.saleGroupFk WHERE sg.id = vParamFk - AND sg.created > TIMESTAMPADD(WEEK,-1, CURDATE()) + AND sg.created > TIMESTAMPADD(WEEK,-1, util.VN_CURDATE()) LIMIT 1; - + IF vValidFk THEN - + RETURN vValidFk; - + LEAVE proc; - + END IF; -- Tabla vn.collection SELECT c.id INTO vValidFk - FROM vn.collection c + FROM vn.collection c WHERE c.id = vParamFk - AND c.created > TIMESTAMPADD(WEEK,-1, CURDATE()); - + AND c.created > TIMESTAMPADD(WEEK,-1, util.VN_CURDATE()); + IF vValidFk THEN - + RETURN vValidFk; - + LEAVE proc; - + END IF; -- Tabla vn.ticket SELECT t.id INTO vValidFk FROM vn.ticket t WHERE t.id = vParamFk - AND t.shipped > TIMESTAMPADD(WEEK,-1, CURDATE()); - + AND t.shipped > TIMESTAMPADD(WEEK,-1, util.VN_CURDATE()); + IF vValidFk THEN - + RETURN vValidFk; - + LEAVE proc; - + END IF; RETURN NULL; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -47636,11 +44933,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `ticket_getFreightCost`(vTicketFk INT) RETURNS decimal(10,2) +CREATE DEFINER=`root`@`localhost` FUNCTION `ticket_getFreightCost`(vTicketFk INT) RETURNS decimal(10,2) DETERMINISTIC BEGIN /** @@ -47649,8 +44946,8 @@ BEGIN * @vTicketFk Id del ticket a calcular */ DECLARE deliveryPrice DECIMAL (10,2); - - IF (SELECT isVolumetric FROM ticket t JOIN zone z ON t.zoneFk = z.id + + IF (SELECT isVolumetric FROM ticket t JOIN zone z ON t.zoneFk = z.id WHERE t.id = vTicketFk) THEN SELECT SUM(sv.freight) INTO deliveryPrice FROM vn.saleVolume sv @@ -47659,9 +44956,9 @@ BEGIN SELECT SUM((t.zonePrice - t.zoneBonus) * ebv.ratio) INTO deliveryPrice FROM vn.ticket t LEFT JOIN expedition e ON e.ticketFk = t.id - JOIN expeditionBoxVol ebv ON ebv.boxFk = e.isBox + JOIN expeditionBoxVol ebv ON ebv.boxFk = e.freightItemFk WHERE t.id = vTicketFk; - + END IF; RETURN deliveryPrice; END ;; @@ -47676,25 +44973,25 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `ticket_getWeight`(vTicketFk INT) RETURNS decimal(10,3) +CREATE DEFINER=`root`@`localhost` FUNCTION `ticket_getWeight`(vTicketFk INT) RETURNS decimal(10,3) READS SQL DATA BEGIN /** * Devuelve el peso total del ticket - * + * * @return Total peso */ - + DECLARE vWeight DECIMAL(10,3); SELECT sum(weight) INTO vWeight FROM saleVolume WHERE ticketFk = vTicketFk; - + RETURN vWeight; END ;; @@ -47709,11 +45006,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `ticket_getWithParameters`(vClientFk INT, vWarehouseFk INT, vShipped DATE, vAddressFk INT, vCompanyFk INT, vAgencyModeFk INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `ticket_getWithParameters`(vClientFk INT, vWarehouseFk INT, vShipped DATE, vAddressFk INT, vCompanyFk INT, vAgencyModeFk INT) RETURNS int(11) DETERMINISTIC BEGIN /** @@ -47725,10 +45022,10 @@ BEGIN * @param vAddressFk Consignatario * @param vCompanyFk Empresa * @param vAgencyModeFk agencia - */ - + */ + DECLARE vTicket INT; - + SELECT t.id INTO vTicket FROM vn.ticket t WHERE (t.clientFk <=> vClientFk OR vClientFk IS NULL) @@ -47738,11 +45035,11 @@ BEGIN AND (t.companyFk <=> vCompanyFk OR vCompanyFk IS NULL) AND (t.agencyModeFk <=> vAgencyModeFk OR vAgencyModeFk IS NULL) LIMIT 1; - + IF vTicket IS NULL THEN - CALL vn.ticketCreateWithUser( + CALL vn.ticket_add( vClientFk, - IFNULL(vShipped, CURDATE()), + IFNULL(vShipped, util.VN_CURDATE()), vWarehouseFk, vCompanyFk, vAddressFk, @@ -47750,10 +45047,11 @@ BEGIN NULL, vShipped, `account`.`myUser_getId`(), + TRUE, vTicket ); END IF; - + RETURN vTicket; END ;; DELIMITER ; @@ -47765,24 +45063,24 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `ticket_HasUbication`(vTicketFk INT) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `ticket_HasUbication`(vTicketFk INT) RETURNS tinyint(1) READS SQL DATA BEGIN - + DECLARE hasUbication BOOL; SELECT COUNT(*) INTO hasUbication FROM vn.ticket t JOIN vn.routesMonitor rm ON rm.routeFk = t.routeFk - WHERE rm.beachFk + WHERE rm.beachFk AND t.id = vTicketFk; - + RETURN hasUbication; END ;; @@ -47797,12 +45095,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `till_new`( - vClient INT +CREATE DEFINER=`root`@`localhost` FUNCTION `till_new`(vClient INT ,vBank INT ,vAmount DOUBLE ,vConcept VARCHAR(25) @@ -47889,15 +45186,15 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `timeWorkerControl_getDirection`(vUserFk INT, vTimed DATETIME) RETURNS varchar(6) CHARSET utf8 COLLATE utf8_unicode_ci +CREATE DEFINER=`root`@`localhost` FUNCTION `timeWorkerControl_getDirection`(vUserFk INT, vTimed DATETIME) RETURNS varchar(6) CHARSET utf8mb3 COLLATE utf8mb3_unicode_ci READS SQL DATA BEGIN /** - * Verifica la dirección de la fichada + * Verifica la dirección de la fichada * @param vUserFk Identificador del trabajador * @param vTimed Hora de la fichada * @return Retorna sentido de la fichada 'in, out, middle' @@ -47910,40 +45207,40 @@ BEGIN DECLARE vDayStayMax INT; DECLARE vTimedSeconds INT; DECLARE vLastTimeIn INT; - + SELECT UNIX_TIMESTAMP(vTimed) INTO vTimedSeconds; - + SELECT dayStayMax INTO vDayStayMax FROM vn.workerTimeControlParams; SELECT timed, direction INTO vNext,vNextDirection - FROM vn.workerTimeControl - WHERE userFk = vUserFk + FROM vn.workerTimeControl + WHERE userFk = vUserFk AND direction IN ('in','out') AND timed > vTimed ORDER BY timed ASC LIMIT 1; - + SELECT timed, direction INTO vPrevious, vPreviousDirection - FROM vn.workerTimeControl - WHERE userFk = vUserFk + FROM vn.workerTimeControl + WHERE userFk = vUserFk AND direction IN ('in','out') AND timed < vTimed ORDER BY timed DESC - LIMIT 1; - - IF (vTimedSeconds - UNIX_TIMESTAMP(vPrevious) + UNIX_TIMESTAMP(vNext) - vTimedSeconds)<= vDayStayMax AND vPreviousDirection = 'in' AND vNextDirection = 'out' THEN + LIMIT 1; + + IF (vTimedSeconds - UNIX_TIMESTAMP(vPrevious) + UNIX_TIMESTAMP(vNext) - vTimedSeconds)<= vDayStayMax AND vPreviousDirection = 'in' AND vNextDirection = 'out' THEN RETURN 'middle'; END IF; - - + + IF (vTimedSeconds> UNIX_TIMESTAMP(vPrevious)) THEN - IF vPreviousDirection = 'in' THEN + IF vPreviousDirection = 'in' THEN RETURN 'out'; ELSE SELECT UNIX_TIMESTAMP(MAX(timed)) INTO vLastTimeIn - FROM vn.workerTimeControl - WHERE userFk = vUserFk + FROM vn.workerTimeControl + WHERE userFk = vUserFk AND direction ='in' AND timed < vPrevious; IF vTimedSeconds - vLastTimeIn <= vDayStayMax THEN @@ -47963,13 +45260,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `time_getSalesYear`(vMonth INT, vYear INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `time_getSalesYear`(vMonth INT, vYear INT) RETURNS int(11) DETERMINISTIC BEGIN DECLARE vSalesYear INT; @@ -47978,6 +45275,69 @@ FROM `time` WHERE `month` = vMonth AND `year` = vYear LIMIT 1; RETURN vSalesYear; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `travel_getForLogiflora` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` FUNCTION `travel_getForLogiflora`(vLanded DATE, vWarehouseFk INT) RETURNS int(11) + 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 ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -47988,13 +45348,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `validationCode`(vString VARCHAR(255)) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `validationCode`(vString VARCHAR(255)) RETURNS int(11) DETERMINISTIC BEGIN @@ -48004,21 +45364,21 @@ BEGIN DECLARE vChar INT; SET vLength = length(vString); - + WHILE vLength > 0 DO - + SET vChar = MID(vString,vLength,1); - + SET vSeed = vSeed + ASCII(vChar); - + SET vLength = vLength - 1; - + END WHILE; SET vCode = FLOOR(SQRT(vSeed)*1000000) mod 1000; RETURN vCode; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -48029,13 +45389,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `validationCode_beta`(vString VARCHAR(255)) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `validationCode_beta`(vString VARCHAR(255)) RETURNS int(11) DETERMINISTIC BEGIN @@ -48045,21 +45405,21 @@ BEGIN DECLARE vChar INT; SET vLength = length(vString); - + WHILE vLength > 0 DO - + SET vChar = MID(vString,vLength,1); - + SET vSeed = vSeed + ASCII(vChar); - + SET vLength = vLength - 1; - + END WHILE; SET vCode = FLOOR(SQRT(vSeed)*1000000) mod 1000; RETURN vCode; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -48072,11 +45432,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `workerIsBoss`(vUserId INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `workerIsBoss`(vUserId INT) RETURNS int(11) DETERMINISTIC BEGIN /** @@ -48131,25 +45491,25 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `workerMachinery_isRegistered`(vWorkerFk VARCHAR(10)) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `workerMachinery_isRegistered`(vWorkerFk VARCHAR(10)) RETURNS tinyint(1) READS SQL DATA BEGIN /** * Comprueba si existen registros en las últimas horas (maxHours de machineWorkerConfig) del trabajador vWorkerFk y si tiene a nulo la hora outTimed (indica la hora que deja el vehículo) - * + * * @param vWorkerFk id del trabajador * @return Devuelve TRUE/FALSE en caso de que haya o no registros */ - - IF (SELECT COUNT(*) + + IF (SELECT COUNT(*) FROM machineWorker m WHERE m.workerFk = vWorkerFk - AND m.inTimed >= TIMESTAMPADD(HOUR , -(SELECT maxHours from machineWorkerConfig), NOW()) AND ISNULL(m.outTimed)) - THEN + AND m.inTimed >= TIMESTAMPADD(HOUR , -(SELECT maxHours from machineWorkerConfig), util.VN_NOW()) AND ISNULL(m.outTimed)) + THEN RETURN TRUE; ELSE RETURN FALSE; @@ -48167,11 +45527,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `workerNigthlyHours_calculate`(vTimeIn DATETIME, vTimeOut DATETIME) RETURNS decimal(5,2) +CREATE DEFINER=`root`@`localhost` FUNCTION `workerNigthlyHours_calculate`(vTimeIn DATETIME, vTimeOut DATETIME) RETURNS decimal(5,2) READS SQL DATA BEGIN /** @@ -48181,15 +45541,15 @@ BEGIN * @param vTimeOut * @return vNigthlyHours */ - DECLARE vNigthlyHours DECIMAL(5,2); + DECLARE vNigthlyHours DECIMAL(5,2); DECLARE vSecondsPerHour INT(4) DEFAULT 3600; - + SELECT GREATEST(0, TIMESTAMPDIFF(SECOND, - IF(TIME(vTimeIn) BETWEEN endNightlyHours AND startNightlyHours, - CONCAT(DATE(vTimeIn), ' ', startNightlyHours), + IF(TIME(vTimeIn) BETWEEN endNightlyHours AND startNightlyHours, + CONCAT(DATE(vTimeIn), ' ', startNightlyHours), vTimeIn), - IF(TIME(vTimeOut) BETWEEN endNightlyHours AND startNightlyHours, - CONCAT(DATE(vTimeOut), ' ', endNightlyHours), + IF(TIME(vTimeOut) BETWEEN endNightlyHours AND startNightlyHours, + CONCAT(DATE(vTimeOut), ' ', endNightlyHours), vTimeOut))) / vSecondsPerHour INTO vNigthlyHours FROM vn.workerTimeControlConfig; @@ -48204,13 +45564,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `workerTimeControl_add`( vUserFk INT, vWarehouseFk INT, vTimed DATETIME, vIsManual BOOL) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `workerTimeControl_add`(vUserFk INT, vWarehouseFk INT, vTimed DATETIME, vIsManual BOOL) RETURNS int(11) DETERMINISTIC BEGIN DECLARE vDirection VARCHAR(6); @@ -48221,47 +45581,47 @@ BEGIN SELECT dayStayMax INTO vDayStayMax FROM workerTimeControlParams; - + SELECT timeWorkerControl_getDirection(vUserFk,vTimed) INTO vDirection; IF vDirection = 'out' THEN - + SELECT MAX(timed) INTO vLastIn - FROM workerTimeControl - WHERE userFk = vUserFk + FROM workerTimeControl + WHERE userFk = vUserFk AND direction = 'in' AND timed < vTimed; - + UPDATE workerTimeControl wtc SET wtc.direction = 'middle' WHERE userFk = vUserFk AND direction = 'out' AND timed BETWEEN vLastIn AND vTimed; - + ELSE IF vDirection = 'in' THEN - - SELECT COUNT(*) INTO vHasDirectionOut + + SELECT COUNT(*) INTO vHasDirectionOut FROM workerTimeControl wtc - WHERE userFk = vUserFk + WHERE userFk = vUserFk AND direction = 'out' - AND timed BETWEEN vTimed AND TIMESTAMPADD(SECOND, 50400, vTimed); + AND timed BETWEEN vTimed AND TIMESTAMPADD(SECOND, 50400, vTimed); UPDATE workerTimeControl wtc SET wtc.direction = IF (vHasDirectionOut,'middle','out') WHERE userFk = vUserFk AND direction = 'in' - AND timed BETWEEN vTimed AND TIMESTAMPADD(SECOND, 50400, vTimed); + AND timed BETWEEN vTimed AND TIMESTAMPADD(SECOND, 50400, vTimed); END IF; END IF; - + INSERT INTO workerTimeControl(userFk, timed, warehouseFk, direction, manual) VALUES(vUserFk, vTimed, vWarehouseFk, vDirection, vIsManual); - + SET vLastInsertedId = LAST_INSERT_ID(); - + CALL workerTimeControlSOWP(vUserFk, vTimed); - + RETURN vLastInsertedId; END ;; DELIMITER ; @@ -48275,11 +45635,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `workerTimeControl_addDirection`( vUserFk INT, vWarehouseFk INT, vTimed DATETIME, vIsManual BOOL) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `workerTimeControl_addDirection`(vUserFk INT, vWarehouseFk INT, vTimed DATETIME, vIsManual BOOL) RETURNS int(11) DETERMINISTIC BEGIN DECLARE vDirection VARCHAR(6); @@ -48290,47 +45650,47 @@ BEGIN SELECT dayStayMax INTO vDayStayMax FROM workerTimeControlParams; - + SELECT timeWorkerControl_getDirection(vUserFk,vTimed) INTO vDirection; IF vDirection = 'out' THEN - + SELECT MAX(timed) INTO vLastIn - FROM workerTimeControl - WHERE userFk = vUserFk + FROM workerTimeControl + WHERE userFk = vUserFk AND direction = 'in' AND timed < vTimed; - + UPDATE workerTimeControl wtc SET wtc.direction = 'middle' WHERE userFk = vUserFk AND direction = 'out' AND timed BETWEEN vLastIn AND vTimed; - + ELSE IF vDirection = 'in' THEN - - SELECT COUNT(*) INTO vHasDirectionOut + + SELECT COUNT(*) INTO vHasDirectionOut FROM workerTimeControl wtc - WHERE userFk = vUserFk + WHERE userFk = vUserFk AND direction = 'out' - AND timed BETWEEN vTimed AND TIMESTAMPADD(SECOND, 50400, vTimed); + AND timed BETWEEN vTimed AND TIMESTAMPADD(SECOND, 50400, vTimed); UPDATE workerTimeControl wtc SET wtc.direction = IF (vHasDirectionOut,'middle','out') WHERE userFk = vUserFk AND direction = 'in' - AND timed BETWEEN vTimed AND TIMESTAMPADD(SECOND, 50400, vTimed); + AND timed BETWEEN vTimed AND TIMESTAMPADD(SECOND, 50400, vTimed); END IF; END IF; - + INSERT INTO workerTimeControl(userFk, timed, warehouseFk, direction, manual) VALUES(vUserFk, vTimed, vWarehouseFk, vDirection, vIsManual); - + SET vLastInsertedId = LAST_INSERT_ID(); - + CALL workerTimeControlSOWP(vUserFk, vTimed); - + RETURN vLastInsertedId; END ;; DELIMITER ; @@ -48342,13 +45702,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `worker_isWorking`(vWorkerFk INT) RETURNS tinyint(1) +CREATE DEFINER=`root`@`localhost` FUNCTION `worker_isWorking`(vWorkerFk INT) RETURNS tinyint(1) READS SQL DATA BEGIN /** @@ -48356,17 +45716,17 @@ BEGIN * @return Devuelve TRUE en caso de que este trabajando. Si se encuentra en un descanso devolverá FALSE */ DECLARE vLastIn DATETIME ; - + SELECT MAX(timed) INTO vLastIn - FROM vn.workerTimeControl + FROM vn.workerTimeControl WHERE userFk = vWorkerFk AND direction = 'in'; - IF (SELECT MOD(COUNT(*),2) - FROM vn.workerTimeControl - WHERE userFk = vWorkerFk AND + IF (SELECT MOD(COUNT(*),2) + FROM vn.workerTimeControl + WHERE userFk = vWorkerFk AND timed >= vLastIn - ) THEN + ) THEN RETURN TRUE; ELSE RETURN FALSE; @@ -48383,12 +45743,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `xdiario_new`( - vAsiento INT, +CREATE DEFINER=`root`@`localhost` FUNCTION `xdiario_new`(vAsiento INT, vDated DATE, vSubaccount VARCHAR(12), vAccount VARCHAR(12), @@ -48439,11 +45798,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `zoneGeo_new`(vType VARCHAR(255), vName VARCHAR(255), vParentFk INT) RETURNS int(11) +CREATE DEFINER=`root`@`localhost` FUNCTION `zoneGeo_new`(vType VARCHAR(255), vName VARCHAR(255), vParentFk INT) RETURNS int(11) NO SQL BEGIN /** @@ -48461,7 +45820,7 @@ BEGIN SET `type` = vType, `name` = vName, parentFk = vParentFk; - + SET vSelf = LAST_INSERT_ID(); UPDATE zoneGeoRecalc SET isChanged = TRUE; @@ -48477,15 +45836,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `addNoteFromDelivery`(idTicket INT,nota TEXT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `addNoteFromDelivery`(idTicket INT,nota TEXT) BEGIN - + DECLARE observationTypeFk INT DEFAULT 3; /*3 = REPARTIDOR*/ INSERT INTO ticketObservation(ticketFk,observationTypeFk,description) @@ -48503,34 +45862,34 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `addressTaxArea`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `addressTaxArea`() READS SQL DATA BEGIN /** - * Devuelve el taxArea para un conjunto de Consignatarios y empresas, + * Devuelve el taxArea para un conjunto de Consignatarios y empresas, * * @table tmp.addressCompany(addressFk, companyFk) valores a calcular * @return tmp.addressTaxArea(addressFk,companyFk) */ DECLARE vSpainCountryCode INT DEFAULT 1; - + DROP TEMPORARY TABLE IF EXISTS tmp.addressTaxArea; CREATE TEMPORARY TABLE tmp.addressTaxArea (PRIMARY KEY (addressFk, companyFk)) ENGINE = MEMORY - SELECT CASE - WHEN (NOT cClient.isUeeMember OR NOT cSupplier.isUeeMember) AND s.countryFk != c.countryFk THEN + SELECT CASE + WHEN (NOT cClient.isUeeMember OR NOT cSupplier.isUeeMember) AND s.countryFk != c.countryFk THEN 'WORLD' - WHEN cClient.isUeeMember AND cSupplier.isUeeMember AND c.countryFk != s.countryFk AND c.isVies THEN + WHEN cClient.isUeeMember AND cSupplier.isUeeMember AND c.countryFk != s.countryFk AND c.isVies THEN 'CEE' - WHEN a.isEqualizated AND c.countryFk = vSpainCountryCode THEN + WHEN a.isEqualizated AND c.countryFk = vSpainCountryCode THEN 'EQU' ELSE 'NATIONAL' @@ -48551,13 +45910,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `agencyHourGetFirstShipped`(vAgencyMode INT, vAddress INT, vWarehouse INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `agencyHourGetFirstShipped`(vAgencyMode INT, vAddress INT, vWarehouse INT) BEGIN /** * DEPRECATED usar zoneGetFirstShipped @@ -48567,27 +45926,27 @@ BEGIN * @param vAddress id de la direccion * @param vWarehouse id del warehouse * @return vShipped la primera fecha disponible y vLanded la fecha de llegada/recojida -*/ +*/ DECLARE vAgency INT; DECLARE vShipped DATE; -DECLARE vLanded DATE DEFAULT CURDATE(); +DECLARE vLanded DATE DEFAULT util.VN_CURDATE(); SELECT agencyFk INTO vAgency FROM agencyMode WHERE id= vAgencyMode; l: LOOP - + CALL agencyHourGetShipped(vLanded,vAddress,vAgency); - SELECT shipped INTO vShipped + SELECT shipped INTO vShipped FROM tmp.agencyHourGetShipped WHERE warehouseFk = vWarehouse LIMIT 1; - + IF vShipped THEN LEAVE l; END IF; - + SET vLanded = DATE_ADD(vLanded, INTERVAL +1 DAY); - + END LOOP; - + SELECT vShipped,vLanded; END ;; DELIMITER ; @@ -48599,13 +45958,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `agencyHourGetLanded`(vDated DATE, vAddress INT, vAgency INT, vWarehouse INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `agencyHourGetLanded`(vDated DATE, vAddress INT, vAgency INT, vWarehouse INT) BEGIN /** * DEPRECATED usar zoneGetLanded @@ -48637,8 +45996,8 @@ BEGIN ) t LIMIT 1 ) t - WHERE IF(vDated = CURDATE(), t.maxHour > HOUR(NOW()), TRUE) AND t.substractDay < 225; - + WHERE IF(vDated = util.VN_CURDATE(), t.maxHour > HOUR(util.VN_NOW()), TRUE) AND t.substractDay < 225; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -48649,26 +46008,26 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `agencyHourGetWarehouse`(vAddress INT, vDate DATE, vWarehouse INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `agencyHourGetWarehouse`(vAddress INT, vDate DATE, vWarehouse INT) BEGIN /** * DEPRECATED usar zoneGetWarehouse * Devuelve el listado de agencias disponibles para la fecha, * dirección y warehouuse pasadas - * + * * @param vAddress no puede ser NULL * @param vWarehouse warehouse donde comprobaremos las agencias y fecha * @param vDate Fecha de recogida * @table agencyModeWarehouseList Listado de agencias disponibles */ DECLARE vAgency INT; - DECLARE vDone BOOL DEFAULT FALSE; + DECLARE vDone BOOL DEFAULT FALSE; DECLARE vCur CURSOR FOR SELECT DISTINCT a.id FROM agency a @@ -48692,13 +46051,13 @@ BEGIN PRIMARY KEY(id) ) ENGINE = MEMORY; - + OPEN vCur; FETCH vCur INTO vAgency; WHILE NOT vDone DO - + INSERT INTO tmp.agencyModeWarehouseList SELECT am.id, am.name, am.description,am.deliveryMethodFk, TIMESTAMPADD(DAY, -ah.substractDay, vDate), w.name FROM agencyHour ah @@ -48713,8 +46072,8 @@ BEGIN AND (ah.provinceFk = a.provinceFk OR ah.provinceFk IS NULL OR vAddress IS NULL) - AND TIMESTAMPADD(DAY, -ah.substractDay, vDate) >= CURDATE() - AND IF(TIMESTAMPADD(DAY, -ah.substractDay, vDate) = CURDATE(), ah.maxHour > HOUR(NOW()), TRUE) + AND TIMESTAMPADD(DAY, -ah.substractDay, vDate) >= util.VN_CURDATE() + AND IF(TIMESTAMPADD(DAY, -ah.substractDay, vDate) = util.VN_CURDATE(), ah.maxHour > HOUR(util.VN_NOW()), TRUE) ORDER BY ( (ah.weekDay IS NOT NULL) + (ah.agencyFk IS NOT NULL) + @@ -48727,7 +46086,7 @@ BEGIN END WHILE; CLOSE vCur; - + SELECT * FROM tmp.agencyModeWarehouseList; DROP TEMPORARY TABLE tmp.agencyModeWarehouseList; END ;; @@ -48740,56 +46099,22 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `agencyHourListGetShipped`(vDate DATE, vAddress INT, vAgency INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `agencyHourListGetShipped`(vDate DATE, vAddress INT, vAgency INT) BEGIN /* * DEPRECATED usar zoneGetShipped */ CALL vn.agencyHourGetShipped(vDate, vAddress, vAgency); SELECT * FROM tmp.agencyHourGetShipped; - + DROP TEMPORARY TABLE IF EXISTS tmp.agencyHourGetShipped; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `agencyVolume__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `agencyVolume__`(vDated DATE, vAgency INT) -BEGIN - - SELECT ELT(it.temperature + 1,'Calientes','Frios','Secos') AS Temp, - CAST(ROUND(SUM(GREATEST(b.stickers ,b.quantity /b.packing ) * - vn.item_getVolume(b.itemFk ,b.packageFk)) / vc.carro / 1000000 ,1) AS DECIMAL(10,2)) AS carros , - CAST(ROUND(SUM(GREATEST(b.stickers ,b.quantity /b.packing ) * - vn.item_getVolume(b.itemFk ,b.packageFk)) / vc.espai / 1000000,1) AS DECIMAL(10,2)) AS espais - FROM vn.buy b - INNER JOIN vn.entry e ON e.id = b.entryFk - INNER JOIN vn.travel tr ON tr.id = e.travelFk - INNER JOIN vn.volumeConfig vc - INNER JOIN vn.item i ON i.id = b.itemFk - INNER JOIN vn.itemType it ON it.id = i.typeFk - WHERE tr.landed = vDated - AND tr.agencyFk IN (0, vAgency) - GROUP BY Temp; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -48800,13 +46125,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `available_calc`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `available_calc`( vDate DATE, vAddress INT, vAgencyMode INT) @@ -48827,7 +46152,7 @@ BEGIN DECLARE cWarehouses CURSOR FOR SELECT warehouseFk, shipped FROM tmp.zoneGetShipped; - + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; @@ -48836,7 +46161,7 @@ BEGIN CALL vn.zone_getShipped (vDate, vAddress, vAgencyMode, FALSE); DROP TEMPORARY TABLE IF EXISTS tmp.availableCalc; - CREATE TEMPORARY TABLE tmp.availableCalc( + CREATE TEMPORARY TABLE tmp.availableCalc( calcFk INT UNSIGNED, PRIMARY KEY (calcFk) ) @@ -48847,7 +46172,7 @@ BEGIN l: LOOP SET vDone = FALSE; FETCH cWarehouses INTO vWarehouse, vShipment; - + IF vDone THEN LEAVE l; END IF; @@ -48866,70 +46191,32 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `available_calc__` */; +/*!50003 DROP PROCEDURE IF EXISTS `bankEntity_checkBic` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `available_calc__`( - vDate DATE, - vAddress INT, - vAgencyMode INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `bankEntity_checkBic`(vBic VARCHAR(255)) BEGIN -/** - * Calculates the available for all available stores - * according to the given parameters. - * - * @param vDate The delivery date - * @param vAddress The delivery address id - * @param vAgencyMode The shipping agency - * @return tmp.availableCalc(calcFk) The available cache ids - */ - DECLARE vCalcFk INT; - DECLARE vShipment DATE; - DECLARE vWarehouse INT; - DECLARE vDone BOOL; + /** + * If the bic length is Incorrect throw exception + * + * @param vBic bic code + */ - DECLARE cWarehouses CURSOR FOR - SELECT warehouseFk, shipped FROM tmp.zoneGetShipped; - - DECLARE CONTINUE HANDLER FOR NOT FOUND - SET vDone = TRUE; + DECLARE vConfigBicLenght INT; - -- Establecemos los almacenes y las fechas que van a entrar al disponible + SELECT bicLength INTO vConfigBicLenght + FROM vn.bankEntityConfig bec; - CALL vn.zone_getShippedWarehouse(vDate, vAddress, vAgencyMode); - - DROP TEMPORARY TABLE IF EXISTS tmp.availableCalc; - CREATE TEMPORARY TABLE tmp.availableCalc( - calcFk INT UNSIGNED, - PRIMARY KEY (calcFk) - ) - ENGINE = MEMORY; - - OPEN cWarehouses; - - l: LOOP - SET vDone = FALSE; - FETCH cWarehouses INTO vWarehouse, vShipment; - - IF vDone THEN - LEAVE l; - END IF; - - CALL `cache`.available_refresh(vCalcFk, FALSE, vWarehouse, vShipment); - - INSERT IGNORE INTO tmp.availableCalc - SET calcFk = vCalcFk; - END LOOP; - - CLOSE cWarehouses; - DROP TEMPORARY TABLE tmp.zoneGetShipped; + IF LENGTH(vBic) <> vConfigBicLenght THEN + CALL util.throw(CONCAT('bic must be of length ', vConfigBicLenght )); + END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -48942,29 +46229,29 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bankPolicy_notifyExpired`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `bankPolicy_notifyExpired`() BEGIN /** * * Manda correo cuando caduca un seguro * de los leasing * -*/ +*/ INSERT INTO mail (receiver,replyTo,subject,body) SELECT 'administracion@verdnatura.es' receiver, 'noreply@verdnatura.es' replyTo, CONCAT('El seguro de la poliza ',b.id,' ',b.bank,' ha finalizado.') subject, CONCAT('El seguro de la poliza ',b.id,' ',b.bank,' ha finalizado.') body - FROM vn.bankPolicy bp - LEFT JOIN vn.supplier s + FROM vn.bankPolicy bp + LEFT JOIN vn.supplier s ON s.id = bp.supplierFk LEFT JOIN vn.bank b ON b.id = bp.bankFk - WHERE bp.insuranceExpired = CURDATE(); + WHERE bp.insuranceExpired = util.VN_CURDATE(); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -48975,16 +46262,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `buyUltimate`(vWarehouseFk SMALLINT, vDated DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `buyUltimate`(vWarehouseFk SMALLINT, vDated DATE) BEGIN /** - * Calcula las �ltimas compras realizadas hasta una fecha + * Calcula las últimas compras realizadas hasta una fecha * * @param vWarehouseFk Id del almacén * @param vDated Compras hasta fecha @@ -48995,27 +46282,26 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.buyUltimate; CREATE TEMPORARY TABLE tmp.buyUltimate (PRIMARY KEY (itemFk, warehouseFk), - INDEX(itemFk)) - ENGINE = MEMORY - SELECT item_id itemFk, buy_id buyFk, warehouse_id warehouseFk + INDEX(itemFk)) + ENGINE = MEMORY + SELECT item_id itemFk, buy_id buyFk, warehouse_id warehouseFk, landing FROM cache.last_buy - WHERE warehouse_id = vWarehouseFk OR vWarehouseFk IS NULL; + WHERE warehouse_id = vWarehouseFk OR vWarehouseFk IS NULL; - CALL buyUltimateFromInterval(vWarehouseFk, CURDATE(), vDated); + CALL buyUltimateFromInterval(vWarehouseFk, util.VN_CURDATE(), vDated); REPLACE INTO tmp.buyUltimate - SELECT itemFk, buyFk, warehouseFk + SELECT itemFk, buyFk, warehouseFk, landed landing FROM tmp.buyUltimateFromInterval - WHERE (warehouseFk = vWarehouseFk OR vWarehouseFk IS NULL) - AND landed <= vDated; - - INSERT IGNORE INTO tmp.buyUltimate - SELECT itemFk, buyFk, warehouseFk - FROM tmp.buyUltimateFromInterval - WHERE (warehouseFk = vWarehouseFk OR vWarehouseFk IS NULL) - AND landed > vDated; + WHERE (warehouseFk = vWarehouseFk OR vWarehouseFk IS NULL) + AND landed <= vDated; + + INSERT IGNORE INTO tmp.buyUltimate + SELECT itemFk, buyFk, warehouseFk, landed landing + FROM tmp.buyUltimateFromInterval + WHERE (warehouseFk = vWarehouseFk OR vWarehouseFk IS NULL) + AND landed > vDated; - DROP TEMPORARY TABLE tmp.buyUltimateFromInterval; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -49026,16 +46312,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `buyUltimateFromInterval`(vWarehouseFk SMALLINT, vStarted DATE, vEnded DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `buyUltimateFromInterval`(vWarehouseFk SMALLINT, vStarted DATE, vEnded DATE) BEGIN /** - * Calcula las últimas compras realizadas + * Calcula las últimas compras realizadas * desde un rango de fechas. * * @param vWarehouseFk Id del almacén si es NULL se actualizan todos @@ -49046,21 +46332,21 @@ BEGIN IF vEnded IS NULL THEN SET vEnded = vStarted; END IF; - + IF vEnded < vStarted THEN SET vStarted = TIMESTAMPADD(MONTH, -1, vEnded); END IF; -- Item - + DROP TEMPORARY TABLE IF EXISTS tmp.buyUltimateFromInterval; CREATE TEMPORARY TABLE tmp.buyUltimateFromInterval (PRIMARY KEY (itemFk, warehouseFk), INDEX(buyFk), INDEX(landed), INDEX(warehouseFk), INDEX(itemFk)) ENGINE = MEMORY - SELECT - b.itemFk, - t.warehouseInFk warehouseFk, - MULTIMAX(t.landed, b.id) buyFk, + SELECT + b.itemFk, + t.warehouseInFk warehouseFk, + MULTIMAX(t.landed, b.id) buyFk, MAX(t.landed) landed FROM buy b JOIN entry e ON e.id = b.entryFk @@ -49071,12 +46357,12 @@ BEGIN AND NOT b.isIgnored AND b.quantity > 0 GROUP BY itemFk, warehouseInFk; - + INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed) - SELECT - b.itemFk, - t.warehouseInFk warehouseFk, - b.id buyFk, + SELECT + b.itemFk, + t.warehouseInFk warehouseFk, + b.id buyFk, t.landed FROM buy b JOIN entry e ON e.id = b.entryFk @@ -49086,12 +46372,12 @@ BEGIN AND b.price2 > 0 AND NOT b.isIgnored GROUP BY itemFk, warehouseInFk; - + INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed) - SELECT - b.itemFk, - t.warehouseInFk warehouseFk, - b.id buyFk, + SELECT + b.itemFk, + t.warehouseInFk warehouseFk, + b.id buyFk, t.landed FROM buy b JOIN entry e ON e.id = b.entryFk @@ -49100,16 +46386,16 @@ BEGIN AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk) AND b.quantity = 0 GROUP BY itemFk, warehouseInFk; - - - + + + -- ItemOriginal - + INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed) - SELECT - b.itemFk, - t.warehouseInFk warehouseFk, - MULTIMAX(t.landed, b.id) buyFk, + SELECT + b.itemFk, + t.warehouseInFk warehouseFk, + MULTIMAX(t.landed, b.id) buyFk, MAX(t.landed) landed FROM buy b JOIN entry e ON e.id = b.entryFk @@ -49121,12 +46407,12 @@ BEGIN AND b.quantity > 0 AND itemOriginalFk GROUP BY itemOriginalFk, warehouseInFk; - + INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed) - SELECT - b.itemFk, - t.warehouseInFk warehouseFk, - b.id buyFk, + SELECT + b.itemFk, + t.warehouseInFk warehouseFk, + b.id buyFk, t.landed FROM buy b JOIN entry e ON e.id = b.entryFk @@ -49137,12 +46423,12 @@ BEGIN AND NOT b.isIgnored AND itemOriginalFk GROUP BY itemOriginalFk, warehouseInFk; - + INSERT IGNORE INTO tmp.buyUltimateFromInterval(itemFk, warehouseFk, buyFk, landed) - SELECT - b.itemFk, - t.warehouseInFk warehouseFk, - b.id buyFk, + SELECT + b.itemFk, + t.warehouseInFk warehouseFk, + b.id buyFk, t.landed FROM buy b JOIN entry e ON e.id = b.entryFk @@ -49152,7 +46438,7 @@ BEGIN AND b.quantity = 0 AND itemOriginalFk GROUP BY itemOriginalFk, warehouseInFk; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -49163,13 +46449,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `buy_afterUpsert`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_afterUpsert`(vSelf INT) BEGIN /** * Triggered actions when a buy is updated or inserted. @@ -49184,14 +46470,29 @@ BEGIN DECLARE vWarehouseOut INT; DECLARE vIsMerchandise BOOL; DECLARE vIsFeedStock BOOL; - - SELECT b.entryFk, b.itemFk, i.packingOut, ic.merchandise, vc.standardFlowerBox - INTO vEntryFk, vItemFk, vPackingOut, vIsMerchandise, vStandardFlowerBox + DECLARE vWeight DECIMAL(10,2); + DECLARE vPacking INT; + + SELECT b.entryFk, + b.itemFk, + i.packingOut, + ic.merchandise, + vc.standardFlowerBox, + b.weight, + b.packing + INTO + vEntryFk, + vItemFk, + vPackingOut, + vIsMerchandise, + vStandardFlowerBox, + vWeight, + vPacking FROM buy b LEFT JOIN item i ON i.id = b.itemFk LEFT JOIN itemType it ON it.id = i.typeFk LEFT JOIN itemCategory ic ON ic.id = it.categoryFk - LEFT JOIN packaging p ON p.id = b.packageFk AND NOT p.isBox + LEFT JOIN packaging p ON p.id = b.packageFk AND NOT p.freightItemFk JOIN volumeConfig vc ON TRUE WHERE b.id = vSelf; @@ -49209,17 +46510,16 @@ BEGIN cm3 = buy_getUnitVolume(vSelf), cm3Delivery = IFNULL((vStandardFlowerBox * 1000) / vPackingOut, buy_getUnitVolume(vSelf)); - UPDATE vn.itemCost ic - JOIN cache.last_buy lb ON lb.item_id = ic.itemFk AND lb.warehouse_id = ic.warehouseFk - JOIN vn.buy b ON b.id = lb.buy_id - SET ic.grams = b.weight * 1000 / b.packing - WHERE ic.itemFk = vItemFk AND - ic.warehouseFk = vWarehouse; - + IF vWeight AND vPacking THEN + UPDATE itemCost SET + grams = vWeight * 1000 / vPacking + WHERE itemFk = vItemFk + AND warehouseFk = vWarehouse; + END IF; END IF; SELECT isFeedStock INTO vIsFeedStock - FROM warehouse WHERE id = vWarehouseOut AND id <> 13; + FROM warehouse WHERE id = vWarehouseOut; IF vIsFeedStock THEN INSERT IGNORE INTO producer(`name`) @@ -49230,7 +46530,7 @@ BEGIN WHERE b.id = vSelf; END IF; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -49243,11 +46543,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `buy_checkGrouping`(vGrouping INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_checkGrouping`(vGrouping INT) BEGIN /** * Checks the buy grouping, throws an error if it's invalid. @@ -49264,17 +46564,147 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_getSplit` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_getSplit`(vSelf INT, vDated DATE) +BEGIN +/** + * Devuelve las ventas de una compra + * + * @param vSelf Identificador de vn.buy + */ + DECLARE vItemFk INT; + DECLARE vPacking INT; + DECLARE vRemaining INT; + DECLARE vLabels INT; + DECLARE vSaleFk INT; + DECLARE vAmount INT; + DECLARE vDone BOOL DEFAULT FALSE; + + DECLARE cur CURSOR FOR + SELECT s.id, s.quantity - IFNULL(l.stem, 0) + FROM vn.sale s + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.warehouse w ON w.id = t.warehouseFk + LEFT JOIN vn.saleLabel l ON l.saleFk = s.id + WHERE s.itemFk = vItemFk + AND t.shipped >= vDated + AND w.isLogiflora + AND IFNULL(l.stem, 0) < s.quantity + LOCK IN SHARE MODE; + + DECLARE CONTINUE HANDLER FOR NOT FOUND + SET vDone = TRUE; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + START TRANSACTION; + + -- Obtiene los datos de la compra + + SELECT itemFk, packing, quantity + INTO vItemFk, vPacking, vRemaining + FROM vn.buy WHERE id = vSelf; + + -- Crea splits de los tickets + + DROP TEMPORARY TABLE IF EXISTS tmp.split; + CREATE TEMPORARY TABLE tmp.split + ( + id INT, + labels INT + ) + ENGINE = MEMORY; + + OPEN cur; + + l: LOOP + SET vDone = FALSE; + + FETCH cur INTO vSaleFk, vAmount; + + IF vDone OR vRemaining = 0 THEN + LEAVE l; + END IF; + + SET vAmount = LEAST(vAmount, vRemaining); + + SET vRemaining = vRemaining - vAmount; + + SET vLabels = vAmount DIV vPacking; + + INSERT INTO tmp.split + VALUES (vSaleFk, vLabels); + + INSERT INTO vn.saleLabel + SET + saleFk = vSaleFk, + stem = vAmount, + label = vLabels + ON DUPLICATE KEY UPDATE + stem = stem + VALUES(stem), + label = label + VALUES(label); + + END LOOP; + + CLOSE cur; + + -- Devuelve los splits creados + SELECT + sp.labels, + COALESCE(sfc.nickname, sfa.nickname, a.nickname) destination, + s.itemFk, + i.longName, + i.`size`, + vn.ticketSplitCounter(t.id) counter, + IF(sfa.id OR sfc.id, + a.nickname, + CONCAT(a.id, ' ', p.`name`,' (', c.`code`,')')) destination2 + FROM tmp.split sp + JOIN vn.sale s ON sp.id = s.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.address a ON a.id = t.addressFk + JOIN vn.province p ON p.id = a.provinceFk + JOIN vn.country c ON c.id = p.countryFk + LEFT JOIN vn.splitFilter sfa ON sfa.autonomyFk = p.autonomyFk + LEFT JOIN vn.splitFilter sfc ON sfc.clientFk = t.clientFk; + + -- Limpia y confirma cambios + + DROP TEMPORARY TABLE + tmp.split; + + COMMIT; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `buy_getVolume` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `buy_getVolume`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_getVolume`() BEGIN /** * Cálculo de volumen en líneas de compra @@ -49285,12 +46715,12 @@ BEGIN item_getVolume(b.itemFk, b.packageFk)) / vc.trolleyM3 / 1000000 ,1) AS DECIMAL(10,2)) carros , CAST(ROUND(SUM(GREATEST(b.stickers ,b.quantity /b.packing ) * item_getVolume(b.itemFk, b.packageFk)) / vc.palletM3 / 1000000,1) AS DECIMAL(10,2)) espais - FROM buy b + FROM buy b JOIN tmp.buy tb ON tb.buyFk = b.id JOIN volumeConfig vc JOIN item i ON i.id = b.itemFk JOIN itemType it ON it.id = i.typeFk - LEFT JOIN temperature t ON t.code = it.temperatureFk + LEFT JOIN temperature t ON t.code = it.temperatureFk GROUP BY Temp; END ;; DELIMITER ; @@ -49304,27 +46734,27 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `buy_getVolumeByAgency`(vDated DATE, vAgencyFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_getVolumeByAgency`(vDated DATE, vAgencyFk INT) BEGIN - + DROP TEMPORARY TABLE IF EXISTS tmp.buy; CREATE TEMPORARY TABLE tmp.buy (buyFk INT NOT NULL, PRIMARY KEY (buyFk)) ENGINE = MEMORY; - INSERT INTO tmp.buy + INSERT INTO tmp.buy SELECT b.id - FROM buy b - JOIN entry e ON e.id = b.entryFk - JOIN travel t ON t.id = e.travelFk + FROM buy b + JOIN entry e ON e.id = b.entryFk + JOIN travel t ON t.id = e.travelFk WHERE t.landed = vDated - AND t.agencyFk IN (0, vAgencyFk); + AND t.agencyModeFk IN (0, vAgencyFk); CALL buy_getVolume(); DROP TEMPORARY TABLE tmp.buy; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -49337,68 +46767,25 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `buy_getVolumeByEntry`(vEntryFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_getVolumeByEntry`(vEntryFk INT) BEGIN - + DROP TEMPORARY TABLE IF EXISTS tmp.buy; CREATE TEMPORARY TABLE tmp.buy (buyFk INT NOT NULL, PRIMARY KEY (buyFk)) ENGINE = MEMORY; - - INSERT INTO tmp.buy + + INSERT INTO tmp.buy SELECT b.id - FROM buy b - JOIN entry e ON e.id = b.entryFk + FROM buy b + JOIN entry e ON e.id = b.entryFk WHERE e.id = vEntryFk; CALL buy_getVolume(); DROP TEMPORARY TABLE tmp.buy; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `buy_notifyPassport__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `buy_notifyPassport__`( - IN vBuyFk INT, - IN vItemFk INT, - IN vStickers SMALLINT, - IN vPacking SMALLINT -) -BEGIN - /*INSERT INTO vn.mail(`subject`,`body`,`sender`) - SELECT 'Solicitar pasaporte', - CONCAT( - 'Etiquetas: ', IFNULL(vStickers, 0), - ', Packing: ', IFNULL(vPacking, 0), - ', Nombre: ', IFNULL(i.`name`, 0), - ', buy_edi: ', IFNULL(e.id, 0), - ', Nombre botánico: ', IFNULL(g.latin_genus_name, ''), ' ', IFNULL(s.latin_species_name, ''), - ', Productor: ',IFNULL(es.company_name, IFNULL(p.`name`, '')) - ) - ,'ekt@verdnatura.es' - FROM item i - LEFT JOIN itemBotanical ib ON ib.itemFk = i.id - LEFT JOIN edi.genus g ON g.genus_id = ib.genusFk - LEFT JOIN edi.specie s ON IFNULL(s.specie_id, ib.specieFk) = ib.specieFk - LEFT JOIN producer p ON p.id = i.producerFk - LEFT JOIN buy b ON b.id = vBuyFk - LEFT JOIN edi.ekt e ON b.ektFk = e.id - LEFT JOIN edi.supplier es ON es.supplier_id = e.pro - WHERE i.id = vItemFk; */ + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -49411,34 +46798,35 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `buy_recalcPrices`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_recalcPrices`() BEGIN --- Preparar para que proveedores como el 4 no puedan ser recalculadas sus entradas /** * Recalcula los precios para las compras insertadas en tmp.buyRecalc * * @param tmp.buyRecalc (id) - */ + */ DECLARE vLanded DATE; - DECLARE vWarehouseFk INT; - DECLARE vFallo BOOL; - DECLARE vBuyingValue DECIMAL(10,3); - DECLARE vPackageFk VARCHAR(10); - - SELECT t.landed, t.warehouseInFk INTO vLanded, vWarehouseFk + DECLARE vWarehouseFk INT; + DECLARE vHasNotPrice BOOL; + DECLARE vBuyingValue DECIMAL(10,3); + DECLARE vPackageFk VARCHAR(10); + DECLARE vIsWarehouseFloramondo BOOL; + + SELECT t.landed, t.warehouseInFk, (w.`name` = 'Floramondo') + INTO vLanded, vWarehouseFk, vIsWarehouseFloramondo FROM tmp.buyRecalc br JOIN buy b ON b.id = br.id - JOIN entry e ON e.id = b.entryFk - JOIN travel t ON t.id = e.travelFk + JOIN entry e ON e.id = b.entryFk + JOIN travel t ON t.id = e.travelFk + JOIN warehouse w ON w.id = t.warehouseInFk LIMIT 1; - CALL vn.rate_getPrices(vLanded, vWarehouseFk); - - -- quitado los cubos a floramondo revisar en buy_tarifas_entry + CALL rate_getPrices(vLanded, vWarehouseFk); + UPDATE buy b JOIN tmp.buyRecalc br ON br.id = b.id AND (@buyId := b.id) LEFT JOIN packaging p ON p.id = b.packageFk @@ -49446,38 +46834,22 @@ BEGIN JOIN entry e ON e.id = b.entryFk JOIN itemType it ON it.id = i.typeFk JOIN travel tr ON tr.id = e.travelFk - JOIN agencyMode am ON am.id = tr.agencyFk + JOIN agencyMode am ON am.id = tr.agencyModeFk JOIN tmp.rate r - SET b.freightValue = @PF:= - ROUND(IFNULL(((am.m3 * @cm3:= item_getVolume(b.itemFk, b.packageFk)) / 1000000) / b.packing,0),3), + JOIN volumeConfig vc + SET b.freightValue = @PF:= IFNULL(((am.m3 * @m3:= item_getVolume(b.itemFk, b.packageFk) / 1000000) + / b.packing) * IF(am.hasWeightVolumetric, GREATEST(b.weight / @m3 / vc.aerealVolumetricDensity, 1), 1), 0), b.comissionValue = @CF:= ROUND(IFNULL(e.commission * b.buyingValue / 100, 0), 3), - b.packageValue = @EF:= IF(p.isPackageReturnable != 0, 0, ROUND(IFNULL(p.`value` / b.packing ,0),3)), + b.packageValue = @EF:= IF(vIsWarehouseFloramondo, 0, IFNULL(ROUND(IF(p.isPackageReturnable, p.returnCost / b.packing , p.`value` / b.packing), 3),0)), b.price3 = @t3:= IF(r.rate3 = 0, b.buyingValue,ROUND((b.buyingValue + @CF + @EF + @PF) / ((100 - r.rate3 - it.promo ) /100) ,2)), -- He añadido que el coste sea igual a tarifa3 si t3 = 0 b.price2 = @t2:= round(@t3 * (1 + ((r.rate2 - r.rate3)/100)),2), b.price2 = @t2:= IF(@t2 <= @t3,@t3 , @t2); - - SELECT (b.buyingValue = b.price2), b.buyingValue, b.packageFk - INTO vFallo, vBuyingValue, vPackageFk + + SELECT (b.buyingValue = b.price2), b.buyingValue, b.packageFk + INTO vHasNotPrice, vBuyingValue, vPackageFk FROM vn.buy b WHERE b.id = @buyId AND b.buyingValue <> 0.01; - - IF vFallo THEN - - CALL `vn`.`mail_insert`('cau@verdnatura.es', - NULL, - CONCAT('Fallo en buy_recalcPrices buy.id = ', @buyId), - CONCAT( ' @t3 = ', @t3, - ' @t2 = ', @t2, - ' @PF = ', @PF, - ' @EF = ', @EF, - ' @CF = ', @CF, - ' buyingValue = ', vBuyingValue, - ' packageFk = ', vPackageFk - ) - ); - - END IF; - + DROP TEMPORARY TABLE tmp.rate; END ;; DELIMITER ; @@ -49485,17 +46857,170 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_recalcPricesByAwb` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_recalcPricesByAwb`(IN awbFk varchar(18)) +BEGIN +/** + * inserta en tmp.buyRecalc las compras de un awb + * + * @param awbFk + */ + DROP TEMPORARY TABLE IF EXISTS tmp.buyRecalc; + + CREATE TEMPORARY TABLE tmp.buyRecalc + SELECT b.id + FROM buy b + JOIN entry e ON e.id = b.entryFk + JOIN duaEntry de ON de.entryFk = e.id + JOIN dua d ON d.id = de.duaFk + JOIN awb a ON a.id = d.awbFk + WHERE a.code = awbFk; + + CALL buy_recalcPrices(); + + DROP TEMPORARY TABLE tmp.buyRecalc; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_recalcPricesByBuy` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_recalcPricesByBuy`(IN vBuyFk INT(11)) +BEGIN +/** + * Recalcula los precios de una compra + * + * @param vBuyFk + */ + DROP TEMPORARY TABLE IF EXISTS tmp.buyRecalc; + + CREATE TEMPORARY TABLE tmp.buyRecalc + SELECT vBuyFk id; + + CALL buy_recalcPrices(); + + DROP TEMPORARY TABLE tmp.buyRecalc; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_recalcPricesByEntry` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_recalcPricesByEntry`(IN vEntryFk INT(11)) +BEGIN +/** + * Recalcula los precios de una entrada + * + * @param vEntryFk + */ + DROP TEMPORARY TABLE IF EXISTS tmp.buyRecalc; + + CREATE TEMPORARY TABLE tmp.buyRecalc + SELECT b.id + FROM buy b + WHERE b.entryFk = vEntryFk; + + CALL buy_recalcPrices(); + + DROP TEMPORARY TABLE tmp.buyRecalc; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_scan` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_scan`(vBarcode VARCHAR(512)) +BEGIN +/** + * Busca compras a partir de un código de barras de subasta, las marca como + * escaneadas y como etiquetas impresas y las devuelve. + * + * @param vBarcode Código de compra de una etiqueta de subasta + * @select (buy, do_photo) Identificadores de compra escaneados + */ + CALL edi.ekt_scan(vBarcode); + + DROP TEMPORARY TABLE IF EXISTS tBuy; + CREATE TEMPORARY TABLE tBuy + SELECT id buyFk + FROM vn.buy b + LIMIT 0; + + INSERT INTO tBuy(buyFk) + SELECT b.id + FROM buy b + JOIN tmp.ekt t ON t.ektFk = b.ektFk + JOIN vn.entry en ON en.id = b.entryFk + JOIN vn.travel tr ON tr.id = en.travelFk + JOIN vn.warehouse w ON w.id = tr.warehouseInFk + JOIN vn.country c ON c.id = w.countryFk AND c.code = 'NL'; + + SELECT b.id buy, i.doPhoto do_photo, b.stickers - b.printedStickers stickersToPrint + FROM tBuy tb + JOIN vn.buy b ON tb.buyFk = b.id + JOIN vn.item i ON i.id = b.itemFk; + + UPDATE vn.buy b + JOIN tBuy tb ON tb.buyFk = b.id + SET b.printedStickers = b.stickers; + + DROP TEMPORARY TABLE tmp.ekt, tBuy; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `buy_updateGrouping` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `buy_updateGrouping`(vWarehouseFk INT, vItemFk INT, vGrouping INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_updateGrouping`(vWarehouseFk INT, vItemFk INT, vGrouping INT) BEGIN /** * Actualiza el grouping de las últimas compras de un artículo @@ -49503,14 +47028,14 @@ BEGIN * @param vWarehouseFk Id del almacén * @param vItemFk Id del Artículo * @param vGrouping Cantidad de grouping - */ - - CALL vn.buyUltimate(vWarehouseFk, CURDATE()); + */ + + CALL vn.buyUltimate(vWarehouseFk, util.VN_CURDATE()); UPDATE vn.buy b JOIN tmp.buyUltimate bu ON b.id = bu.buyFk - SET b.`grouping` = vGrouping - WHERE bu.warehouseFk = vWarehouseFk + SET b.`grouping` = vGrouping + WHERE bu.warehouseFk = vWarehouseFk AND bu.itemFk = vItemFk; DROP TEMPORARY TABLE tmp.buyUltimate; @@ -49526,304 +47051,29 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `buy_updatePacking`(vWarehouseFk INT, vItemFk INT, vPacking INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_updatePacking`(vWarehouseFk INT, vItemFk INT, vPacking INT) BEGIN /** - * Actualiza packing + * Actualiza packing * * @param vWarehouseFk warehouse del item * @param vItemFk id del item * @param vPacking packing a actualizar */ - CALL buyUltimate(vWarehouseFk, CURDATE()); + CALL buyUltimate(vWarehouseFk, util.VN_CURDATE()); UPDATE buy b JOIN tmp.buyUltimate bu ON b.id = bu.buyFk - SET b.packing = vPacking - WHERE bu.warehouseFk = vWarehouseFk + SET b.packing = vPacking + WHERE bu.warehouseFk = vWarehouseFk AND bu.itemFk = vItemFk; DROP TEMPORARY TABLE tmp.buyUltimate; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `camaraFutureVolume__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `camaraFutureVolume__`(vWarehouseFk INT, vDateStart DATE, vDateEnd DATE) -BEGIN - - DECLARE vDated DATE; - DECLARE vSectorVolume INT; - DECLARE vLastDayVolume INT; - DECLARE vMinCamara INT; - - SET vDated = vDateStart; - - DROP TEMPORARY TABLE IF EXISTS tmp.camara; - - IF vDateStart = CURDATE() THEN - - CREATE TEMPORARY TABLE tmp.camara - SELECT vDated as dated, - CONCAT('sector ', sectorFk) as place, - FLOOR(SUM(ish.visible * r.cm3)/1000000) as m3 - FROM vn.itemShelving ish - JOIN bi.rotacion r ON r.Id_Article = ish.itemFk AND r.warehouse_id = vWarehouseFk - JOIN vn.shelving sh ON sh.code = ish.shelvingFk - JOIN vn.parking p ON p.id = sh.parkingFk - JOIN vn.sector s ON s.id = p.sectorFk - WHERE s.warehouseFk = vWarehouseFk - GROUP BY p.sectorFk; - - SELECT m3 - INTO vSectorVolume - FROM tmp.camara - WHERE place LIKE 'sector%'; - - CALL cache.visible_refresh(@calc_id, FALSE, 1); - - INSERT INTO tmp.camara(dated, place, m3) - SELECT vDated, 'nicho', - FLOOR((SUM(v.visible * r.cm3) / 1000000) - vSectorVolume ) as m3 - FROM cache.visible v - JOIN bi.rotacion r ON r.Id_Article = v.item_id AND r.warehouse_id = vWarehouseFk - JOIN vn.item i ON i.id = v.item_id - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - WHERE calc_id = @calc_id - AND ic.display; - - INSERT INTO tmp.camara(dated, place, m3) - SELECT vDated, 'entradas', FLOOR(SUM(iei.amount * r.cm3) / 1000000) as m3 - FROM vn2008.item_entry_in iei - JOIN bi.rotacion r ON r.Id_Article = iei.item_id AND r.warehouse_id = vWarehouseFk - JOIN vn.item i ON i.id = iei.item_id - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - WHERE ic.display - AND dat = vDated - AND NOT received - AND NOT isVirtualStock - AND iei.warehouse_id = vWarehouseFk; - - INSERT INTO tmp.camara(dated, place, m3) - SELECT vDated, 'salidas', FLOOR(SUM(ieo.amount * r.cm3) / 1000000) as m3 - FROM vn2008.item_entry_out ieo - JOIN bi.rotacion r ON r.Id_Article = ieo.item_id AND r.warehouse_id = vWarehouseFk - JOIN vn.item i ON i.id = ieo.item_id - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - WHERE ic.display - AND dat = vDated - AND NOT delivered - AND NOT isVirtualStock - AND ieo.warehouse_id = vWarehouseFk; - - INSERT INTO tmp.camara(dated, place, m3) - SELECT vDated, 'ventas', FLOOR(SUM(io.amount * r.cm3) / 1000000) as m3 - FROM vn2008.item_out io - JOIN bi.rotacion r ON r.Id_Article = io.item_id AND r.warehouse_id = vWarehouseFk - JOIN vn.item i ON i.id = io.item_id - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - JOIN vn.ticketStateToday tst ON tst.ticket = io.ticketFk - JOIN vn.ticket t ON t.id = io.ticketFk - WHERE ic.display - AND ic.id != 7 - AND t.clientFk NOT IN (200,400,50,450) - AND dat BETWEEN vDated AND util.dayend(vDated) - AND NOT tst.isPicked - AND io.warehouse_id = vWarehouseFk; - - ELSE - - CREATE TEMPORARY TABLE tmp.camara - SELECT vDated as dated, - 'entradas' as place, - FLOOR(SUM(iei.amount * r.cm3) / 1000000) as m3 - FROM vn2008.item_entry_in iei - JOIN bi.rotacion r ON r.Id_Article = iei.item_id AND r.warehouse_id = vWarehouseFk - JOIN vn.item i ON i.id = iei.item_id - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - WHERE ic.display - AND dat = vDated - AND NOT isVirtualStock - AND iei.warehouse_id = vWarehouseFk; - - INSERT INTO tmp.camara(dated, place, m3) - SELECT vDated, 'salidas', FLOOR(SUM(ieo.amount * r.cm3) / 1000000) as m3 - FROM vn2008.item_entry_out ieo - JOIN bi.rotacion r ON r.Id_Article = ieo.item_id AND r.warehouse_id = vWarehouseFk - JOIN vn.item i ON i.id = ieo.item_id - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - WHERE ic.display - AND dat = vDated - AND ieo.warehouse_id = vWarehouseFk; - - INSERT INTO tmp.camara(dated, place, m3) - SELECT vDated, 'ventas', FLOOR(SUM(io.amount * r.cm3) / 1000000) as m3 - FROM vn2008.item_out io - JOIN bi.rotacion r ON r.Id_Article = io.item_id AND r.warehouse_id = vWarehouseFk - JOIN vn.item i ON i.id = io.item_id - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - JOIN vn.ticket t ON t.id = io.ticketFk - WHERE ic.display - AND dat BETWEEN vDated AND util.dayend(vDated) - AND ic.id != 7 - AND t.clientFk NOT IN (200,400,50,450) - AND io.warehouse_id = vWarehouseFk; - - END IF; - - -- Resto de dias - WHILE vDated < vDateEnd DO - - SELECT SUM(IFNULL(m3,0)) INTO vLastDayVolume - FROM tmp.camara - WHERE dated = vDated; - - SET vDated = TIMESTAMPADD(DAY, 1, vDated); - - INSERT INTO tmp.camara(dated, place, m3) - VALUES( vDated, 'camara', vLastDayVolume); - - INSERT INTO tmp.camara(dated, place, m3) - SELECT vDated, 'entradas', FLOOR(SUM(iei.amount * r.cm3) / 1000000) as m3 - FROM vn2008.item_entry_in iei - JOIN bi.rotacion r ON r.Id_Article = iei.item_id AND r.warehouse_id = vWarehouseFk - JOIN vn.item i ON i.id = iei.item_id - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - WHERE ic.display - AND dat = vDated - AND NOT isVirtualStock - AND iei.warehouse_id = vWarehouseFk; - - INSERT INTO tmp.camara(dated, place, m3) - SELECT vDated, 'salidas', FLOOR(SUM(ieo.amount * r.cm3) / 1000000) as m3 - FROM vn2008.item_entry_out ieo - JOIN bi.rotacion r ON r.Id_Article = ieo.item_id AND r.warehouse_id = vWarehouseFk - JOIN vn.item i ON i.id = ieo.item_id - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - WHERE ic.display - AND dat = vDated - AND ieo.warehouse_id = vWarehouseFk; - - INSERT INTO tmp.camara(dated, place, m3) - SELECT vDated, 'ventas', FLOOR(SUM(io.amount * r.cm3) / 1000000) as m3 - FROM vn2008.item_out io - JOIN bi.rotacion r ON r.Id_Article = io.item_id AND r.warehouse_id = vWarehouseFk - JOIN vn.item i ON i.id = io.item_id - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - JOIN vn.ticket t ON t.id = io.ticketFk - WHERE ic.display - AND dat BETWEEN vDated AND util.dayend(vDated) - AND ic.id != 7 - AND t.clientFk NOT IN (200,400,50,450) - AND io.warehouse_id = vWarehouseFk; - - END WHILE; - - SELECT min(m3) INTO vMinCamara - FROM - (SELECT dated, sum(m3) m3 - FROM tmp.camara - GROUP BY dated) sub; - - UPDATE tmp.camara - SET m3 = m3 - vMinCamara - WHERE place = 'camara'; - - SELECT camara.* FROM tmp.camara; - - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `carrosOficialesANoOficiales` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `carrosOficialesANoOficiales`() -BEGIN - -DECLARE done BOOL DEFAULT FALSE; -DECLARE vClientFk INT; -DECLARE vQuantity INT; -DECLARE vTicketFk INT; -DECLARE vAgencyTypeFk INT DEFAULT 628; - - -DECLARE rs CURSOR FOR - SELECT clientFk, sum(quantity) as carros - FROM `ticketPackaging` tp - JOIN ticket t ON t.id = tp.ticketFk - WHERE packagingFk = 'cc' - and t.shipped between '2017-10-30' AND '2019-01-06 23:59:59' - group by clientFk - having carros != 0; - -DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - -OPEN rs; - -FETCH rs INTO vClientFk, vQuantity; - --- WHILE NOT done DO - - CALL vn.ticketCreate(vClientFk, '2019-01-06', 13, 442, NULL, vAgencyTypeFk, NULL, '2019-01-01', vTicketFk); - - INSERT INTO vn.ticketPackaging(ticketFk, packagingFk, quantity) - VALUES (vTicketFk, 'cc', - VQuantity); - - INSERT INTO vn.ticketPackaging(ticketFk, packagingFk, quantity) - VALUES (vTicketFk, 'dc', VQuantity); - - INSERT INTO vn.sale(ticketFk, itemFk, concept) - VALUES (vTicketFk, 90, 'Regularización CCs 2019'); - - CALL vn.`ticketStateUpdate`(vTicketFk, 'DELIVERED'); -- entregado - --- FETCH rs INTO vClientFk, vQuantity; - --- END WHILE; - - -CLOSE rs; - -SELECT vTicketFk; - - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -49834,13 +47084,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `catalog_calcFromItem`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `catalog_calcFromItem`( vLanded DATE, vAddressFk INT, vAgencyModeFk INT, @@ -49858,7 +47108,7 @@ BEGIN */ DROP TEMPORARY TABLE IF EXISTS tmp.item; CREATE TEMPORARY TABLE tmp.item - ENGINE = MEMORY + ENGINE = MEMORY SELECT vItemFk itemFk; CALL catalog_calculate(vLanded, vAddressFk, vAgencyModeFk); @@ -49873,321 +47123,193 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `catalog_calculate`( - vLanded DATE, - vAddressFk INT, - vAgencyModeFk INT) -proc: BEGIN +CREATE DEFINER=`root`@`localhost` PROCEDURE `catalog_calculate`(vLanded DATE, vAddressFk INT, vAgencyModeFk INT) +BEGIN /** * Calcula los articulos disponibles y sus precios - * - * @table tmp.item(itemFk) Listado de artículos a calcular + * + * @table tmp.item(itemFk) Listado de artículos a calcular * @param vLanded Fecha de recepcion de mercancia * @param vAddressFk Id del consignatario * @param vAgencyModeFk Id de la agencia - * @return tmp.ticketCalculateItem(itemFk, available, producer, + * @return tmp.ticketCalculateItem(itemFk, available, producer, * item, size, stems, category, inkFk, image, origin, price) * @return tmp.ticketLot(warehouseFk, itemFk, available, buyFk) * @return tmp.ticketComponent * @return tmp.ticketComponentPrice - * @return tmp.zoneGetShipped */ - - DECLARE vAvailableCalc INT; - DECLARE vShipped DATE; - DECLARE vWarehouseFk SMALLINT; - DECLARE vZoneFk INT; - DECLARE vDone BOOL; - DECLARE cTravelTree CURSOR FOR - SELECT zoneFk, warehouseFk, shipped FROM tmp.zoneGetShipped; - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - -- Establece los almacenes y las fechas que van a entrar al disponible - + DECLARE vAvailableCalc INT; + DECLARE vAvailableNoRaidsCalc INT; + DECLARE vShipped DATE; + DECLARE vWarehouseFk SMALLINT; + DECLARE vZoneFk INT; + DECLARE vDone BOOL; + DECLARE cTravelTree CURSOR FOR + SELECT zoneFk, warehouseFk, shipped FROM tmp.zoneGetShipped; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + CALL vn.zone_getShipped (vLanded, vAddressFk, vAgencyModeFk, FALSE); DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot( - `warehouseFk` smallint(5) unsigned NOT NULL, - `itemFk` int(11) NOT NULL, - `available` double DEFAULT NULL, - `buyFk` int(11) DEFAULT NULL, - `fix` tinyint(3) unsigned DEFAULT '0', - `zoneFk` int(11) NOT NULL, - KEY `itemFk` (`itemFk`), - KEY `item_warehouse` (`itemFk`,`warehouseFk`) USING HASH - ) ENGINE=MEMORY DEFAULT CHARSET=utf8; - + CREATE TEMPORARY TABLE tmp.ticketLot( + `warehouseFk` smallint(5) unsigned NOT NULL, + `itemFk` int(11) NOT NULL, + `available` double DEFAULT NULL, + `buyFk` int(11) DEFAULT NULL, + `fix` tinyint(3) unsigned DEFAULT '0', -- este campo parece obsoleto + `zoneFk` int(11) NOT NULL, + KEY `itemFk` (`itemFk`), + KEY `item_warehouse` (`itemFk`,`warehouseFk`) USING HASH + ) ENGINE=MEMORY DEFAULT CHARSET=utf8; + CALL catalog_componentPrepare(); DROP TEMPORARY TABLE IF EXISTS tmp.ticketCalculateItem; CREATE TEMPORARY TABLE tmp.ticketCalculateItem( - itemFk INT(11) NOT NULL, + itemFk INT(11) NOT NULL, available INT(11), - producer VARCHAR(50), - item VARCHAR(50), - size INT(10) UNSIGNED, - stems INT(11), - category VARCHAR(3), - inkFk VARCHAR(3), + producer VARCHAR(50), + item VARCHAR(50), + size INT(10) UNSIGNED, + stems INT(11), + category VARCHAR(3), + inkFk VARCHAR(3), image VARCHAR(50), - origin VARCHAR(3), + origin VARCHAR(3), price DECIMAL(10,2), priceKg DECIMAL(10,2), - PRIMARY KEY `itemFk` (`itemFk`) - ) ENGINE = MEMORY DEFAULT CHARSET=utf8; - - OPEN cTravelTree; + `grouping` INT(10) UNSIGNED, + PRIMARY KEY `itemFk` (`itemFk`) + ) ENGINE = MEMORY DEFAULT CHARSET=utf8; - l: LOOP - SET vDone = FALSE; - FETCH cTravelTree INTO vZoneFk, vWarehouseFk, vShipped; + OPEN cTravelTree; - IF vDone THEN - LEAVE l; - END IF; + l: LOOP + SET vDone = FALSE; + FETCH cTravelTree INTO vZoneFk, vWarehouseFk, vShipped; - CALL `cache`.available_refresh (vAvailableCalc, FALSE, vWarehouseFk, vShipped); - CALL buyUltimate (vWarehouseFk, vShipped); - - INSERT INTO tmp.ticketLot (warehouseFk, itemFk, available, buyFk, zoneFk) - SELECT vWarehouseFk, - i.item_id, - IFNULL(i.available, 0), - bu.buyFk, - vZoneFk - FROM `cache`.available i - JOIN tmp.item br ON br.itemFk = i.item_id - LEFT JOIN item it ON it.id = i.item_id - LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = i.item_id - WHERE i.calc_id = vAvailableCalc - AND i.available > 0; - - DROP TEMPORARY TABLE tmp.buyUltimate; - - CALL vn.catalog_componentCalculate(vZoneFk, vAddressFk, vShipped, vWarehouseFk); + IF vDone THEN + LEAVE l; + END IF; - INSERT INTO tmp.ticketCalculateItem ( - itemFk, - available, - producer, - item, - size, - stems, - category, - inkFk, - image, - origin, - price, - priceKg) - SELECT - tl.itemFk, - SUM(tl.available) available, - p.name producer, - i.name item, - i.size size, - i.stems, - i.category, - i.inkFk, - i.image, - o.code origin, - bl.price, - bl.priceKg - FROM tmp.ticketLot tl - JOIN item i ON tl.itemFk = i.id - LEFT JOIN producer p ON p.id = i.producerFk AND p.isVisible - JOIN origin o ON o.id = i.originFk - JOIN ( - SELECT * - FROM (SELECT price, itemFk, priceKg - FROM tmp.ticketComponentPrice - WHERE warehouseFk = vWarehouseFk - ORDER BY (rate = 2) DESC) sub - GROUP BY itemFk - ) bl ON bl.itemFk = tl.itemFk - WHERE tl.zoneFk = vZoneFk AND tl.warehouseFk = vWarehouseFk - GROUP BY tl.itemFk - ON DUPLICATE KEY UPDATE available = available + VALUES(available); + CALL `cache`.available_refresh (vAvailableCalc, FALSE, vWarehouseFk, vShipped); + CALL `cache`.availableNoRaids_refresh (vAvailableNoRaidsCalc, FALSE, vWarehouseFk, vShipped); + CALL vn.buyUltimate(vWarehouseFk, vShipped); - END LOOP; - - CLOSE cTravelTree; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `catalog_calculate_beta` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `catalog_calculate_beta`( - vLanded DATE, - vAddressFk INT, - vAgencyModeFk INT) -proc: BEGIN -/** - * Calcula los articulos disponibles y sus precios - * - * @table tmp.item(itemFk) Listado de artículos a calcular - * @param vLanded Fecha de recepcion de mercancia - * @param vAddressFk Id del consignatario - * @param vAgencyModeFk Id de la agencia - * @return tmp.ticketCalculateItem(itemFk, available, producer, - * item, size, stems, category, inkFk, image, origin, price) - * @return tmp.ticketLot(warehouseFk, itemFk, available, buyFk) - * @return tmp.ticketComponent - * @return tmp.ticketComponentPrice - * @return tmp.zoneGetShipped - */ - - DECLARE vAvailableCalc INT; - DECLARE vShipped DATE; - DECLARE vWarehouseFk SMALLINT; - DECLARE vZoneFk INT; - DECLARE vDone BOOL; - DECLARE cTravelTree CURSOR FOR - SELECT zoneFk, warehouseFk, shipped FROM tmp.zoneGetShipped; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - -- Establece los almacenes y las fechas que van a entrar al disponible - CALL vn.zone_getShipped (vLanded, vAddressFk, vAgencyModeFk, FALSE); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot( - `warehouseFk` smallint(5) unsigned NOT NULL, - `itemFk` int(11) NOT NULL, - `available` double DEFAULT NULL, - `buyFk` int(11) DEFAULT NULL, - `fix` tinyint(3) unsigned DEFAULT '0', -- este campo parece obsoleto - `zoneFk` int(11) NOT NULL, - KEY `itemFk` (`itemFk`), - KEY `item_warehouse` (`itemFk`,`warehouseFk`) USING HASH - ) ENGINE=MEMORY DEFAULT CHARSET=utf8; - - CALL catalog_componentPrepare(); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketCalculateItem; - CREATE TEMPORARY TABLE tmp.ticketCalculateItem( - itemFk INT(11) NOT NULL, - available INT(11), - producer VARCHAR(50), - item VARCHAR(50), - size INT(10) UNSIGNED, - stems INT(11), - category VARCHAR(3), - inkFk VARCHAR(3), - image VARCHAR(50), - origin VARCHAR(3), - price DECIMAL(10,2), - priceKg DECIMAL(10,2), - PRIMARY KEY `itemFk` (`itemFk`) - ) ENGINE = MEMORY DEFAULT CHARSET=utf8; - - OPEN cTravelTree; - - l: LOOP - SET vDone = FALSE; - FETCH cTravelTree INTO vZoneFk, vWarehouseFk, vShipped; - - IF vDone THEN - LEAVE l; - END IF; - - CALL `cache`.available_refresh (vAvailableCalc, FALSE, vWarehouseFk, vShipped); - CALL vn.buyUltimate (vWarehouseFk, vShipped); - - INSERT INTO tmp.ticketLot (warehouseFk, itemFk, available, buyFk, zoneFk) + INSERT INTO tmp.ticketLot (warehouseFk, itemFk, available, buyFk, zoneFk) SELECT vWarehouseFk, a.item_id, IFNULL(a.available, 0), bu.buyFk, - vZoneFk + vZoneFk FROM `cache`.available a - JOIN vn.address a ON a.id = @addressFk - JOIN vn.province p ON p.id = a.provinceFk - JOIN vn.item i ON i.id = a.item_id - JOIN vn.addressFilter af - LEFT JOIN edi.supplyOffer so ON so.srId = i.supplyResponseFk - LEFT JOIN edi.VMPSettings v ON v.VMPID = so.vmpID - LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = a.item_id + LEFT JOIN cache.availableNoRaids anr ON anr.item_id = a.item_id + AND anr.calc_id = vAvailableNoRaidsCalc + JOIN tmp.item i ON i.itemFk = a.item_id + JOIN vn.item it ON it.id = i.itemFk + JOIN vn.`zone` z ON z.id = vZoneFk + LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = a.item_id + LEFT JOIN edi.supplyResponse sr ON sr.ID = it.supplyResponseFk + LEFT JOIN edi.VMPSettings v ON v.VMPID = sr.vmpID + LEFT JOIN edi.marketPlace mp ON mp.id = sr.MarketPlaceID + LEFT JOIN (SELECT isVNHSupplier, isEarlyBird, TRUE AS itemAllowed + FROM vn.addressFilter af + JOIN (SELECT ad.provinceFk, p.countryFk, ad.isLogifloraAllowed + FROM vn.address ad + JOIN vn.province p ON p.id = ad.provinceFk + WHERE ad.id = vAddressFk + ) sub2 ON sub2.provinceFk <=> IFNULL(af.provinceFk, sub2.provinceFk) + AND sub2.countryFk <=> IFNULL(af.countryFk, sub2.countryFk) + AND sub2.isLogifloraAllowed <=> IFNULL(af.isLogifloraAllowed, sub2.isLogifloraAllowed) + WHERE vWarehouseFk = af.warehouseFk + AND (vShipped < af.beforeDated + OR ISNULL(af.beforeDated) + OR vShipped > af.afterDated + OR ISNULL(af.afterDated)) + ) sub ON sub.isVNHSupplier = v.isVNHSupplier + AND (sub.isEarlyBird = mp.isEarlyBird OR ISNULL(sub.isEarlyBird)) + JOIN vn.agencyMode am ON am.id = vAgencyModeFk + JOIN vn.agency ag ON ag.id = am.agencyFk + JOIN vn.itemType itt ON itt.id = it.typeFk + JOIN vn.itemCategory itc on itc.id = itt.categoryFk + JOIN vn.address ad ON ad.id = vAddressFk + LEFT JOIN vn.clientItemType cit + ON cit.clientFk = ad.clientFk + AND cit.itemTypeFk = itt.id + LEFT JOIN vn.clientItemCategory cic + ON cic.clientFk = ad.clientFk + AND cic.itemCategoryFk = itc.id WHERE a.calc_id = vAvailableCalc AND a.available > 0 - AND i.supplyResponseFk - AND (IFNULL(af.isEarlyBird,so.isEarlyBird) = so.isEarlyBird OR ISNULL(so.isEarlyBird)) - AND (IFNULL(af.isVNHSupplier,so.isVNHSupplier ) = so.isVNHSupplier OR ISNULL(so.isVNHSupplier)) - AND af.warehouseFk = vWarehouseFk - AND (ISNULL(af.provinceFk) OR af.provinceFk = a.provinceFk) - AND (ISNULL(af.countryFk) OR af.countryFk = p.countryFk) - AND (ISNULL(af.isLogifloraAllowed) OR af.isLogifloraAllowed = a.isLogifloraAllowed) - ; - - DROP TEMPORARY TABLE tmp.buyUltimate; - - CALL vn.catalog_componentCalculate_beta(vZoneFk, vAddressFk, vShipped, vWarehouseFk); + AND (sub.itemAllowed OR NOT it.isFloramondo OR anr.available > 0) + AND (ag.isAnyVolumeAllowed OR NOT itt.isUnconventionalSize) + AND (itc.isReclining OR ISNULL(it.`size`) OR it.`size` < z.itemMaxSize OR ISNULL(z.itemMaxSize)) + AND NOT (cit.isAllowed <=> FALSE) + AND (ISNULL(cic.itemCategoryFk) OR cit.isAllowed); - INSERT INTO tmp.ticketCalculateItem ( - itemFk, - available, - producer, - item, - size, - stems, - category, - inkFk, - image, - origin, - price, - priceKg) - SELECT - tl.itemFk, + DROP TEMPORARY TABLE tmp.buyUltimate; + + CALL vn.catalog_componentCalculate(vZoneFk, vAddressFk, vShipped, vWarehouseFk); + + INSERT INTO tmp.ticketCalculateItem ( + itemFk, + available, + producer, + item, + size, + stems, + category, + inkFk, + image, + origin, + price, + priceKg, + `grouping`) + SELECT + tl.itemFk, SUM(tl.available) available, - p.name producer, - i.name item, - i.size size, - i.stems, - i.category, - i.inkFk, + p.name producer, + i.name item, + i.size size, + i.stems, + i.category, + i.inkFk, i.image, - o.code origin, - bl.price, - bl.priceKg + o.code origin, + bl.price, + bl.priceKg, + bl.`grouping` FROM tmp.ticketLot tl JOIN item i ON tl.itemFk = i.id LEFT JOIN producer p ON p.id = i.producerFk AND p.isVisible JOIN origin o ON o.id = i.originFk JOIN ( - SELECT * - FROM (SELECT price, itemFk, priceKg + SELECT price, itemFk, priceKg, MIN(`grouping`) `grouping` + FROM ( + SELECT price, itemFk, priceKg, `grouping` FROM tmp.ticketComponentPrice - WHERE warehouseFk = vWarehouseFk - ORDER BY (rate = 2) DESC) sub - GROUP BY itemFk + WHERE warehouseFk = vWarehouseFk + ORDER BY (rate = 2) DESC, price + LIMIT 10000000000000000000 + ) sub + GROUP BY itemFk ) bl ON bl.itemFk = tl.itemFk WHERE tl.zoneFk = vZoneFk AND tl.warehouseFk = vWarehouseFk GROUP BY tl.itemFk ON DUPLICATE KEY UPDATE available = available + VALUES(available); - END LOOP; + END LOOP; + + CLOSE cTravelTree; - CLOSE cTravelTree; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -50198,680 +47320,129 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `catalog_componentCalculate`( - vZoneFk INT, - vAddressFk INT, - vShipped DATE, - vWarehouseFk INT) -proc: BEGIN -/** - * Calcula los componentes de los articulos de tmp.ticketLot - * - * @param vZoneFk para calcular el transporte - * @param vAddressFk Consignatario - * @param vShipped dia de salida del pedido - * @param vWarehouseFk warehouse de salida del pedido - * @param tmp.ticketLot (warehouseFk, available, itemFk, buyFk, zoneFk) - * @table tmp.ticketComponent(warehouseFk, itemFk, componentFk, cost) - * - * @return tmp.ticketComponentPrice (warehouseFk, itemFk, rate, `grouping`, price, priceKg) - */ +CREATE DEFINER=`root`@`localhost` PROCEDURE `catalog_componentCalculate`( vZoneFk INT, + vAddressFk INT, + vShipped DATE, + vWarehouseFk INT) +BEGIN + /** + * Calcula los componentes de los articulos de tmp.ticketLot + * + * @param vZoneFk para calcular el transporte + * @param vAddressFk Consignatario + * @param vShipped dia de salida del pedido + * @param vWarehouseFk warehouse de salida del pedido + * @table tmp.ticketLot (warehouseFk, available, itemFk, buyFk, zoneFk) + * @table tmp.ticketComponent(warehouseFk, itemFk, componentFk, cost) + * + * @return tmp.ticketComponentPrice (warehouseFk, itemFk, rate, `grouping`, price, priceKg) + */ + DECLARE vClientFk INT; - DECLARE vMinimumDensityWeight INT DEFAULT 167; - DECLARE vBoxVolume BIGINT; - DECLARE vSpecialPriceComponent INT DEFAULT 10; - DECLARE vDeliveryComponent INT DEFAULT 15; - DECLARE vRecoveryComponent INT DEFAULT 17; - DECLARE vSellByPacketComponent INT DEFAULT 22; - DECLARE vBuyValueComponent INT DEFAULT 28; - DECLARE vMarginComponent INT DEFAULT 29; - DECLARE vDiscountLastItemComponent INT DEFAULT 32; - DECLARE vExtraBaggedComponent INT DEFAULT 38; - DECLARE vManaAutoComponent INT DEFAULT 39; - DECLARE vFrenchOffer INT DEFAULT 42; - DECLARE vIsFrenchVNHBuyer BOOLEAN DEFAULT FALSE; - DECLARE vVNHWarehouseFk INT DEFAULT 7; - DECLARE vFloramondoWarehouseFk INT DEFAULT 40; - DECLARE vIsLogifloraAllowed BOOLEAN DEFAULT 0; - DECLARE vMaxLogifloraDays INT; - DECLARE vRangeLogifloraDays INT DEFAULT 3; - DECLARE vVisibleCache INT; - DECLARE vRappelComponent INT DEFAULT 44; - DECLARE vIsZonePremium BOOL; - DECLARE vFrenchDiscount DECIMAL(3,2) DEFAULT 0.12; - DECLARE vIsCatalonianBuyer BOOL; - DECLARE visAnyVolumeAllowed BOOL; + DECLARE vIsFrenchVNHBuyer BOOLEAN DEFAULT FALSE; + DECLARE vVNHWarehouseFk INT DEFAULT 7; + DECLARE vFrenchDiscount DECIMAL(3,2) DEFAULT 0.12; - SELECT (COUNT(*) > 0) INTO vIsZonePremium - FROM vn.zoneFilter zf - WHERE zf.zoneFk = vZoneFk; + SELECT clientFk INTO vClientFK + FROM address + WHERE id = vAddressFk; - SELECT vc.standardFlowerBox * 1000 INTO vBoxVolume - FROM vn.volumeConfig vc; - - SELECT clientFk, isLogifloraAllowed INTO vClientFK, vIsLogifloraAllowed - FROM address - WHERE id = vAddressFk; - - SELECT (c.country IN ('Francia','Suiza') AND vWarehouseFk IN (vVNHWarehouseFk, vFloramondoWarehouseFk)) - INTO vIsFrenchVNHBuyer - FROM vn.country c - JOIN vn.province p ON p.countryFk = c.id - JOIN vn.address a ON a.provinceFk = p.id - WHERE a.id = vAddressFk; - - SELECT (p.name = 'Barcelona' AND vWarehouseFk = vVNHWarehouseFk) - INTO vIsCatalonianBuyer - FROM vn.province p - JOIN vn.address a ON a.provinceFk = p.id - WHERE a.id = vAddressFk; -- PAK 18/10/21 - - SELECT travellingDays INTO vMaxLogifloraDays - FROM edi.warehouseFloramondo - WHERE warehouseFk = vWarehouseFk; - - -- Se eliminan los productos de tamaños no convencionales, salvo agencias que lo permitan - SELECT a.isAnyVolumeAllowed INTO visAnyVolumeAllowed - FROM vn.agency a - JOIN vn.agencyMode am ON am.agencyFk = a.id - JOIN vn.`zone`z ON z.agencyModeFk = am.id - WHERE z.id = vZoneFk; - - IF NOT vIsAnyVolumeAllowed THEN - - DELETE tl.* - FROM tmp.ticketLot tl - JOIN vn.item i ON i.id = tl.itemFk - JOIN vn.itemType it ON it.id = i.typeFk - WHERE it.isUnconventionalSize; - - END IF; - - -- Esto sirve para que los franceses compren sólo por las cuentas de VNH - DELETE tl.* - FROM tmp.ticketLot tl - JOIN vn.item i ON i.id = tl.itemFk - JOIN edi.supplyResponse sr ON sr.ID = i.supplyResponseFk - JOIN edi.VMPSettings v ON v.VMPID = sr.vmpID - WHERE v.isVNHSupplier != vIsFrenchVNHBuyer; - - IF (NOT vIsLogifloraAllowed AND vVNHWarehouseFk != vWarehouseFk) - OR NOT vn.isLogifloraDay(vShipped, vWarehouseFk) - -- OR NOT(vIsCatalonianBuyer OR vIsFrenchVNHBuyer) - THEN - - CALL cache.visible_refresh(vVisibleCache, FALSE, vWarehouseFk); - - DELETE tl FROM tmp.ticketLot tl - JOIN item i ON i.id = tl.itemFk - LEFT JOIN cache.last_buy lb ON lb.item_id = i.id AND lb.warehouse_id = vWarehouseFk - LEFT JOIN vn.buy b ON b.id = lb.buy_id - LEFT JOIN vn.entry e ON e.id = b.entryFk - LEFT JOIN vn.supplier s ON s.id = e.supplierFk -- PAK 13/10/21 - LEFT JOIN cache.visible v ON v.calc_id = vVisibleCache AND v.item_id = i.id - LEFT JOIN (SELECT DISTINCT s.itemFk - FROM vn.sale s - JOIN vn.ticket t ON t.id = s.ticketFk - WHERE t.warehouseFk = vWarehouseFk - AND t.addressFk = vAddressFk - AND t.shipped = vShipped - AND t.zoneFk = vZoneFk) sub ON sub.itemFk = i.id - WHERE (i.supplyResponseFk - AND (IFNULL(e.isRaid,TRUE) - OR s.nickname = 'INVENTARIO') -- PAK 13/10/21 - AND ISNULL(sub.itemFk) - AND IFNULL(v.visible,0) = 0 - AND vWarehouseFk = tl.warehouseFk); - - END IF; - - -- Eliminem productes de la oferta que no deuen vore els francesos - IF vIsFrenchVNHBuyer THEN - - CALL cache.visible_refresh(vVisibleCache, FALSE, vWarehouseFk); - - DELETE tl FROM tmp.ticketLot tl - JOIN item i ON i.id = tl.itemFk - JOIN edi.supplyResponse sr ON sr.ID = i.supplyResponseFk - JOIN edi.marketPlace mp ON mp.id = sr.MarketPlaceID - LEFT JOIN cache.visible v ON v.calc_id = vVisibleCache AND v.item_id = i.id - LEFT JOIN (SELECT DISTINCT s.itemFk - FROM vn.sale s - JOIN vn.ticket t ON t.id = s.ticketFk - WHERE t.warehouseFk = vWarehouseFk - AND t.addressFk = vAddressFk - AND t.shipped = vShipped - AND t.zoneFk = vZoneFk) sub ON sub.itemFk = i.id - WHERE (mp.isEarlyBird = FALSE - AND IFNULL(sub.itemFk,0) = 0 - AND IFNULL(v.visible ,0) = 0); - - END IF; - - -- Eliminem productes de la oferta que no deuen vore les zones PREMIUM - IF vIsZonePremium THEN - - DELETE tl.* - FROM tmp.ticketLot tl - JOIN item i ON i.id = tl.itemFk - LEFT JOIN vn.zoneFilter zf ON zf.itemTypeFk = i.typeFk - AND zf.zoneFk = vZoneFk - AND i.`size` <= zf.sizeMax - WHERE zf.id IS NULL ; - - END IF; - - -- Eliminem productes de la oferta que la zona no pot transportar - DELETE tl.* - FROM tmp.ticketLot tl - JOIN item i ON i.id = tl.itemFk - JOIN vn.zone z ON z.id = vZoneFk - WHERE i.size > z.itemMaxSize; - - SET @rate2 := 0; - SET @rate3 := 0; - SET @minPrice := 0; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentCalculate; - CREATE TEMPORARY TABLE tmp.ticketComponentCalculate - (PRIMARY KEY (itemFk, warehouseFk)) - ENGINE = MEMORY - SELECT - tl.itemFk, - tl.warehouseFk, - tl.available, - IF((@rate2 := IFNULL(pf.rate2, b.price2)) < i.minPrice AND i.hasMinPrice, i.minPrice, @rate2) * 1.0 rate2, - @minPrice := IF((@rate3 := IFNULL(pf.rate3, b.price3)) < i.minPrice AND i.hasMinPrice, i.minPrice, @rate3) * 1.0 rate3, - IFNULL(@minPrice, 0) AS minPrice, - IFNULL(pf.packing, GREATEST(b.grouping, b.packing)) packing, - IFNULL(pf.`grouping`, b.`grouping`) `grouping`, - ABS(IFNULL(pf.box, b.groupingMode)) groupingMode, - tl.buyFk, - i.typeFk, - IF(i.hasKgPrice, b.weight / b.packing, NULL) weightGrouping - FROM tmp.ticketLot tl - JOIN buy b ON b.id = tl.buyFk - JOIN item i ON i.id = tl.itemFk - JOIN itemType it ON it.id = i.typeFk - LEFT JOIN itemCategory ic ON ic.id = it.categoryFk - LEFT JOIN specialPrice sp ON sp.itemFk = i.id AND sp.clientFk = vClientFk - LEFT JOIN ( - SELECT * FROM ( - SELECT pf.itemFk, pf.`grouping`, pf.packing, pf.box, pf.rate2, pf.rate3, zw.warehouseFk - FROM priceFixed pf - JOIN zoneWarehouse zw ON zw.zoneFk = vZoneFk AND (zw.warehouseFk = pf.warehouseFk OR pf.warehouseFk = 0) - WHERE vShipped BETWEEN pf.started AND pf.ended ORDER BY pf.itemFk, pf.warehouseFk DESC - ) tpf - GROUP BY tpf.itemFk, tpf.warehouseFk - ) pf ON pf.itemFk = tl.itemFk AND pf.warehouseFk = tl.warehouseFk - WHERE b.buyingValue + b.freightValue + b.packageValue + b.comissionValue > 0.01 AND ic.merchandise <> 0 - AND tl.zoneFk = vZoneFk AND tl.warehouseFk = vWarehouseFk; - - -- Coste - INSERT INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) - SELECT - tcc.warehouseFk, - tcc.itemFk, - vBuyValueComponent, - b.buyingValue + b.freightValue + b.packageValue + b.comissionValue - FROM tmp.ticketComponentCalculate tcc - JOIN buy b ON b.id = tcc.buyFk; - - -- Margen - INSERT INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) - SELECT - tcc.warehouseFk, - tcc.itemFk, - vMarginComponent, - tcc.rate3 - b.buyingValue - b.freightValue - b.packageValue - b.comissionValue - FROM tmp.ticketComponentCalculate tcc - JOIN buy b ON b.id = tcc.buyFk; - - -- Promo Francia - IF vIsFrenchVNHBuyer THEN - - INSERT INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) - SELECT - tcc.warehouseFk, - tcc.itemFk, - vFrenchOffer, - - vFrenchDiscount * (b.buyingValue + b.freightValue + b.packageValue + b.comissionValue) / ( 1 - vFrenchDiscount) - FROM tmp.ticketComponentCalculate tcc - JOIN buy b ON b.id = tcc.buyFk; - - END IF; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentBase; - CREATE TEMPORARY TABLE tmp.ticketComponentBase ENGINE = MEMORY - SELECT tc.itemFk, ROUND(SUM(tc.cost), 4) AS base, tc.warehouseFk - FROM tmp.ticketComponent tc - JOIN tmp.ticketComponentCalculate tcc ON tcc.itemFk = tc.itemFk AND tcc.warehouseFk = tc.warehouseFk - GROUP BY tc.itemFk, warehouseFk; - - -- RECOBRO - INSERT INTO tmp.ticketComponent(warehouseFk, itemFk, componentFk, cost) - SELECT tcb.warehouseFk, tcb.itemFk, vRecoveryComponent, - ROUND(tcb.base * LEAST(MAX(GREATEST(IFNULL(cr.priceIncreasing,0), IFNULL(cr1.priceIncreasing,0), IFNULL(cr2.priceIncreasing,0))), 0.25), 3) - FROM tmp.ticketComponentBase tcb - JOIN claimRatio cr ON cr.clientFk = vClientFk - LEFT JOIN clientYoke cy1 ON cy1.leftOx = cr.clientFk - LEFT JOIN claimRatio cr1 ON cr1.clientFk = cy1.rightOx - LEFT JOIN clientYoke cy2 ON cy2.rightOx = cr.clientFk - LEFT JOIN claimRatio cr2 ON cr2.clientFk = cy2.leftOx - WHERE GREATEST(IFNULL(cr.priceIncreasing,0), IFNULL(cr1.priceIncreasing,0), IFNULL(cr2.priceIncreasing,0)) > 0.009 - GROUP BY tcb.itemFk; - - -- Mana auto - INSERT INTO tmp.ticketComponent(warehouseFk, itemFk, componentFk, cost) - SELECT tcb.warehouseFk, tcb.itemFk, vManaAutoComponent, ROUND(base * (0.01 + wm.pricesModifierRate), 3) as manaAuto - FROM tmp.ticketComponentBase tcb - JOIN `client` c on c.id = vClientFk - JOIN workerMana wm ON c.salesPersonFk = wm.workerFk - WHERE wm.isPricesModifierActivated - HAVING manaAuto <> 0; - - -- Precios especiales - INSERT INTO tmp.ticketComponent - SELECT tcb.warehouseFk, - tcb.itemFk, - c.id, - GREATEST(IFNULL(ROUND(tcb.base * c.tax, 4), 0), tcc.minPrice - tcc.rate3) - FROM tmp.ticketComponentBase tcb - JOIN component c - JOIN tmp.ticketComponentCalculate tcc ON tcc.itemFk = tcb.itemFk AND tcc.warehouseFk = tcb.warehouseFk - LEFT JOIN specialPrice sp ON sp.clientFk = vClientFk AND sp.itemFk = tcc.itemFk - JOIN vn.item i ON i.id = tcb.itemFk - WHERE c.id = vDiscountLastItemComponent - AND c.tax <> 0 - AND tcc.minPrice < tcc.rate3 - AND sp.value IS NULL - AND i.supplyResponseFk IS NULL; -- FLORAMONDO - - -- Venta por paquetes - INSERT INTO tmp.ticketComponent - SELECT tcc.warehouseFk, tcc.itemFk, vSellByPacketComponent, tcc.rate2 - tcc.rate3 - FROM tmp.ticketComponentCalculate tcc - JOIN buy b ON b.id = tcc.buyFk - LEFT JOIN specialPrice sp ON sp.clientFk = vClientFk AND sp.itemFk = tcc.itemFk - WHERE sp.value IS NULL; - - DROP TEMPORARY TABLE IF EXISTS tmp.zone; - CREATE TEMPORARY TABLE IF NOT EXISTS tmp.zone (INDEX (id)) - ENGINE = MEMORY - SELECT vZoneFk id; - - CALL zone_getOptionsForShipment(vShipped, TRUE); - - -- Reparto - INSERT INTO tmp.ticketComponent - SELECT tcc.warehouseFK, - tcc.itemFk, - vDeliveryComponent, - z.inflation * ROUND(ic.cm3delivery * (IFNULL(zo.price,5000) - IFNULL(zo.bonus,0)) / vBoxVolume, 4) cost - FROM tmp.ticketComponentCalculate tcc - JOIN item i ON i.id = tcc.itemFk - JOIN tmp.zoneOption zo ON zo.zoneFk = vZoneFk - JOIN zone z ON z.id = vZoneFk - JOIN agencyMode am ON am.id = z.agencyModeFk - LEFT JOIN itemCost ic ON ic.warehouseFk = tcc.warehouseFk - AND ic.itemFk = tcc.itemFk - HAVING cost <> 0; - - DROP TEMPORARY TABLE tmp.zoneOption; - - -- Extra reparto - IF (SELECT COUNT(*) FROM vn.addressForPackaging WHERE addressFk = vAddressFk) THEN - INSERT INTO tmp.ticketComponent - SELECT tcc.warehouseFk, b.itemFk, vExtraBaggedComponent, ap.packagingValue cost - FROM tmp.ticketComponentCalculate tcc - JOIN vn.addressForPackaging ap - WHERE ap.addressFk = vAddressFk; - END IF; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentCopy; - CREATE TEMPORARY TABLE tmp.ticketComponentCopy ENGINE = MEMORY - SELECT * FROM tmp.ticketComponent; - - -- Precio especial - INSERT INTO tmp.ticketComponent - SELECT tcc.warehouseFk, - tcc.itemFk, - vSpecialPriceComponent, - sp.value - SUM(tcc.cost) sumCost - FROM tmp.ticketComponentCopy tcc - JOIN component c ON c.id = tcc.componentFk - JOIN specialPrice sp ON sp.clientFk = vClientFK AND sp.itemFk = tcc.itemFk - WHERE c.classRate IS NULL - AND tcc.warehouseFk = vWarehouseFk - GROUP BY tcc.itemFk, tcc.warehouseFk - HAVING ABS(sumCost) > 0.001; - - -- Rappel - INSERT INTO tmp.ticketComponent - SELECT tcc.warehouseFk, - tcc.itemFk, - IFNULL(c.componentFk ,vRappelComponent), - SUM(tcc.cost) * ((1/(1-c.rappel/100)) -1) sumCost - FROM tmp.ticketComponentCopy tcc - JOIN vn.clientChain cc ON cc.clientFk = vClientFk - JOIN vn.`chain` c ON c.id = cc.chainFk - WHERE tcc.warehouseFk = vWarehouseFk - GROUP BY tcc.itemFk, tcc.warehouseFk; - - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentSum; - CREATE TEMPORARY TABLE tmp.ticketComponentSum - (INDEX (itemFk, warehouseFk)) - ENGINE = MEMORY - SELECT SUM(cost) sumCost, tc.itemFk, tc.warehouseFk, c.classRate - FROM tmp.ticketComponent tc - JOIN component c ON c.id = tc.componentFk - GROUP BY tc.itemFk, tc.warehouseFk, c.classRate; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentRate; - CREATE TEMPORARY TABLE tmp.ticketComponentRate ENGINE = MEMORY - SELECT tcc.warehouseFk, - tcc.itemFk, - 1 rate, - IF(tcc.groupingMode = 1, tcc.`grouping`, 1) `grouping`, - CAST(SUM(tcs.sumCost) AS DECIMAL(10,2)) price, - CAST(SUM(tcs.sumCost) AS DECIMAL(10,2)) / weightGrouping priceKg - FROM tmp.ticketComponentCalculate tcc - JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk - AND tcs.warehouseFk = tcc.warehouseFk - WHERE IFNULL(tcs.classRate, 1) = 1 - AND tcc.groupingMode < 2 AND (tcc.packing > tcc.`grouping` or tcc.groupingMode = 0) - GROUP BY tcs.warehouseFk, tcs.itemFk; - - INSERT INTO tmp.ticketComponentRate (warehouseFk, itemFk, rate, `grouping`, price, priceKg) - SELECT - tcc.warehouseFk, - tcc.itemFk, - 2 rate, - tcc.packing `grouping`, - SUM(tcs.sumCost) price, - SUM(tcs.sumCost) / weightGrouping priceKg - FROM tmp.ticketComponentCalculate tcc - JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk - AND tcs.warehouseFk = tcc.warehouseFk - WHERE tcc.available IS NULL OR (IFNULL(tcs.classRate, 2) = 2 - AND tcc.packing > 0 AND tcc.available >= tcc.packing) - GROUP BY tcs.warehouseFk, tcs.itemFk; - - IF vIsZonePremium THEN - - DELETE - FROM tmp.ticketComponentRate - WHERE rate = 1; - - END IF; - - INSERT INTO tmp.ticketComponentRate (warehouseFk, itemFk, rate, `grouping`, price, priceKg) - SELECT - tcc.warehouseFk, - tcc.itemFk, - 3 rate, - tcc.available `grouping`, - SUM(tcs.sumCost) price, - SUM(tcs.sumCost) / weightGrouping priceKg - FROM tmp.ticketComponentCalculate tcc - JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk - AND tcs.warehouseFk = tcc.warehouseFk - WHERE IFNULL(tcs.classRate, 3) = 3 - GROUP BY tcs.warehouseFk, tcs.itemFk; - - INSERT INTO tmp.ticketComponentPrice (warehouseFk, itemFk, rate, `grouping`, price, priceKg) - SELECT * FROM ( - SELECT * FROM tmp.ticketComponentRate ORDER BY price - ) t - GROUP BY itemFk, warehouseFk, `grouping`; - - DROP TEMPORARY TABLE - tmp.ticketComponentCalculate, - tmp.ticketComponentSum, - tmp.ticketComponentBase, - tmp.ticketComponentRate, - tmp.ticketComponentCopy; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `catalog_componentCalculate_beta` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `catalog_componentCalculate_beta`( - vZoneFk INT, - vAddressFk INT, - vShipped DATE, - vWarehouseFk INT) -proc: BEGIN -/** - * Calcula los componentes de los articulos de tmp.ticketLot - * - * @param vZoneFk para calcular el transporte - * @param vAddressFk Consignatario - * @param vShipped dia de salida del pedido - * @param vWarehouseFk warehouse de salida del pedido - * @table tmp.ticketLot (warehouseFk, available, itemFk, buyFk, zoneFk) - * @table tmp.ticketComponent(warehouseFk, itemFk, componentFk, cost) - * - * @return tmp.ticketComponentPrice (warehouseFk, itemFk, rate, `grouping`, price, priceKg) - */ - DECLARE vClientFk INT; - DECLARE vIsFrenchVNHBuyer BOOLEAN DEFAULT FALSE; - DECLARE vVNHWarehouseFk INT DEFAULT 7; - DECLARE vIsLogifloraAllowed BOOLEAN DEFAULT 0; - DECLARE vVisibleCache INT; - DECLARE vIsZonePremium BOOL; - DECLARE vFrenchDiscount DECIMAL(3,2) DEFAULT 0.12; - DECLARE visAnyVolumeAllowed BOOL; - - SELECT * FROM tmp.ticketLot; - - SELECT (COUNT(*) > 0) INTO vIsZonePremium - FROM vn.zoneFilter zf - WHERE zf.zoneFk = vZoneFk; -/* - SELECT vc.standardFlowerBox * 1000 INTO vBoxVolume - FROM vn.volumeConfig vc; - */ - SELECT clientFk, isLogifloraAllowed INTO vClientFK, vIsLogifloraAllowed - FROM address - WHERE id = vAddressFk; - SELECT (c.country = 'FRANCIA' AND vWarehouseFk = vVNHWarehouseFk) INTO vIsFrenchVNHBuyer FROM vn.country c - JOIN vn.province p ON p.countryFk = c.id - JOIN vn.address a ON a.provinceFk = p.id - WHERE a.id = vAddressFk; - - /* - -- Se eliminan los productos de tamaños no convencionales, salvo agencias que lo permitan - SELECT a.isAnyVolumeAllowed INTO visAnyVolumeAllowed - FROM vn.agency a - JOIN vn.agencyMode am ON am.agencyFk = a.id - JOIN vn.`zone`z ON z.agencyModeFk = am.id - WHERE z.id = vZoneFk; - - IF NOT vIsAnyVolumeAllowed THEN - - DELETE tl.* - FROM tmp.ticketLot tl - JOIN vn.item i ON i.id = tl.itemFk - JOIN vn.itemType it ON it.id = i.typeFk - WHERE it.isUnconventionalSize; - - END IF; - - -- Esto sirve para que los franceses compren sólo por las cuentas de VNH - DELETE tl.* - FROM tmp.ticketLot tl - JOIN vn.item i ON i.id = tl.itemFk - JOIN edi.supplyResponse sr ON sr.ID = i.supplyResponseFk - JOIN edi.VMPSettings v ON v.VMPID = sr.vmpID - WHERE v.isVNHSupplier != vIsFrenchVNHBuyer; - - IF (NOT vIsLogifloraAllowed AND vVNHWarehouseFk != vWarehouseFk) - OR NOT vn.isLogifloraDay(vShipped, vWarehouseFk) - - THEN - - CALL cache.visible_refresh(vVisibleCache, FALSE, vWarehouseFk); - - DELETE tl FROM tmp.ticketLot tl - JOIN item i ON i.id = tl.itemFk - LEFT JOIN vn.buy b ON b.id = tl.buyFk - LEFT JOIN vn.entry e ON e.id = b.entryFk - LEFT JOIN vn.supplier s ON s.id = e.supplierFk - LEFT JOIN cache.visible v ON v.calc_id = vVisibleCache AND v.item_id = i.id - LEFT JOIN (SELECT DISTINCT s.itemFk - FROM vn.sale s - JOIN vn.ticket t ON t.id = s.ticketFk - WHERE t.warehouseFk = vWarehouseFk - AND t.addressFk = vAddressFk - AND t.shipped = vShipped - AND t.zoneFk = vZoneFk) sub ON sub.itemFk = i.id - WHERE (i.supplyResponseFk - AND (IFNULL(e.isRaid,TRUE) OR s.nickname = 'INVENTARIO') - AND ISNULL(sub.itemFk) - AND IFNULL(v.visible,0) = 0 - AND vWarehouseFk = tl.warehouseFk); - - END IF; - - -- Eliminem productes de la oferta que no deuen vore els francesos - IF vIsFrenchVNHBuyer THEN - - CALL cache.visible_refresh(vVisibleCache, FALSE, vWarehouseFk); - - DELETE tl FROM tmp.ticketLot tl - JOIN item i ON i.id = tl.itemFk - JOIN edi.supplyResponse sr ON sr.ID = i.supplyResponseFk - JOIN edi.marketPlace mp ON mp.id = sr.MarketPlaceID - LEFT JOIN cache.visible v ON v.calc_id = vVisibleCache AND v.item_id = i.id - LEFT JOIN (SELECT DISTINCT s.itemFk - FROM vn.sale s - JOIN vn.ticket t ON t.id = s.ticketFk - WHERE t.warehouseFk = vWarehouseFk - AND t.addressFk = vAddressFk - AND t.shipped = vShipped - AND t.zoneFk = vZoneFk) sub ON sub.itemFk = i.id - WHERE (mp.isEarlyBird = FALSE - AND IFNULL(sub.itemFk,0) = 0 - AND IFNULL(v.visible ,0) = 0); - - END IF; - - -- Eliminem productes de la oferta que no deuen vore les zones PREMIUM - IF vIsZonePremium THEN - - DELETE tl.* - FROM tmp.ticketLot tl - JOIN item i ON i.id = tl.itemFk - LEFT JOIN vn.zoneFilter zf ON zf.itemTypeFk = i.typeFk - AND zf.zoneFk = vZoneFk - AND i.`size` <= zf.sizeMax - WHERE zf.id IS NULL ; - - END IF; - - -- Eliminem productes de la oferta que la zona no pot transportar - DELETE tl.* - FROM tmp.ticketLot tl - JOIN item i ON i.id = tl.itemFk - JOIN vn.zone z ON z.id = vZoneFk - WHERE i.size > z.itemMaxSize; - */ - SET @rate2 := 0; - SET @rate3 := 0; - SET @minPrice := 0; + JOIN vn.province p ON p.countryFk = c.id + JOIN vn.address a ON a.provinceFk = p.id + WHERE a.id = vAddressFk; DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentCalculate; + CREATE TEMPORARY TABLE tmp.ticketComponentCalculate (PRIMARY KEY (itemFk, warehouseFk)) ENGINE = MEMORY - SELECT - tl.itemFk, - tl.warehouseFk, + SELECT + tl.itemFk, + tl.warehouseFk, tl.available, - IF((@rate2 := IFNULL(pf.rate2, b.price2)) < i.minPrice AND i.hasMinPrice, i.minPrice, @rate2) * 1.0 rate2, - @minPrice := IF((@rate3 := IFNULL(pf.rate3, b.price3)) < i.minPrice AND i.hasMinPrice, i.minPrice, @rate3) * 1.0 rate3, - IFNULL(@minPrice, 0) AS minPrice, + IF(i.hasMinPrice, GREATEST(i.minPrice,IFNULL(pf.rate2, b.price2)),IFNULL(pf.rate2, b.price2)) rate2, + IF(i.hasMinPrice, GREATEST(i.minPrice,IFNULL(pf.rate3, b.price3)),IFNULL(pf.rate3, b.price3)) rate3, IFNULL(pf.packing, GREATEST(b.grouping, b.packing)) packing, IFNULL(pf.`grouping`, b.`grouping`) `grouping`, ABS(IFNULL(pf.box, b.groupingMode)) groupingMode, - tl.buyFk, - i.typeFk, - IF(i.hasKgPrice, b.weight / b.packing, NULL) weightGrouping - FROM tmp.ticketLot tl - JOIN buy b ON b.id = tl.buyFk - JOIN item i ON i.id = tl.itemFk - JOIN itemType it ON it.id = i.typeFk - LEFT JOIN itemCategory ic ON ic.id = it.categoryFk - LEFT JOIN specialPrice sp ON sp.itemFk = i.id AND sp.clientFk = vClientFk - LEFT JOIN ( - SELECT * FROM ( - SELECT pf.itemFk, pf.`grouping`, pf.packing, pf.box, pf.rate2, pf.rate3, zw.warehouseFk - FROM priceFixed pf - JOIN zoneWarehouse zw ON zw.zoneFk = vZoneFk AND (zw.warehouseFk = pf.warehouseFk OR pf.warehouseFk = 0) - WHERE vShipped BETWEEN pf.started AND pf.ended ORDER BY pf.itemFk, pf.warehouseFk DESC - ) tpf - GROUP BY tpf.itemFk, tpf.warehouseFk - ) pf ON pf.itemFk = tl.itemFk AND pf.warehouseFk = tl.warehouseFk - WHERE b.buyingValue + b.freightValue + b.packageValue + b.comissionValue > 0.01 AND ic.merchandise <> 0 - AND tl.zoneFk = vZoneFk AND tl.warehouseFk = vWarehouseFk; + tl.buyFk, + i.typeFk, + IF(i.hasKgPrice, b.weight / b.packing, NULL) weightGrouping + FROM tmp.ticketLot tl + JOIN buy b ON b.id = tl.buyFk + JOIN item i ON i.id = tl.itemFk + JOIN itemType it ON it.id = i.typeFk + JOIN itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN specialPrice sp ON sp.itemFk = i.id + AND sp.clientFk = vClientFk + LEFT JOIN ( + SELECT * FROM ( + SELECT pf.itemFk, + pf.`grouping`, + pf.packing, + pf.box, + pf.rate2, + pf.rate3, + zw.warehouseFk + FROM priceFixed pf + JOIN zoneWarehouse zw ON zw.zoneFk = vZoneFk + AND zw.warehouseFk IN (pf.warehouseFk,0) + WHERE vShipped BETWEEN pf.started AND pf.ended + ORDER BY pf.itemFk, pf.warehouseFk DESC + LIMIT 10000000000000000000 + ) tpf + GROUP BY tpf.itemFk, tpf.warehouseFk + ) pf ON pf.itemFk = tl.itemFk + AND pf.warehouseFk = tl.warehouseFk + WHERE b.buyingValue + b.freightValue + b.packageValue + b.comissionValue > 0.01 + AND ic.merchandise + AND tl.zoneFk = vZoneFk + AND tl.warehouseFk = vWarehouseFk; -- Coste INSERT INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) - SELECT - tcc.warehouseFk, - tcc.itemFk, - c2.id, + SELECT + tcc.warehouseFk, + tcc.itemFk, + c2.id, b.buyingValue + b.freightValue + b.packageValue + b.comissionValue - FROM tmp.ticketComponentCalculate tcc + FROM tmp.ticketComponentCalculate tcc JOIN vn.component c2 ON c2.code = 'purchaseValue' JOIN buy b ON b.id = tcc.buyFk; - + -- Margen INSERT INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) - SELECT - tcc.warehouseFk, - tcc.itemFk, - c2.id, + SELECT + tcc.warehouseFk, + tcc.itemFk, + c2.id, tcc.rate3 - b.buyingValue - b.freightValue - b.packageValue - b.comissionValue - FROM tmp.ticketComponentCalculate tcc + FROM tmp.ticketComponentCalculate tcc JOIN vn.component c2 ON c2.code = 'margin' JOIN buy b ON b.id = tcc.buyFk; - + -- Promo Francia IF vIsFrenchVNHBuyer THEN - + INSERT INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) - SELECT - tcc.warehouseFk, - tcc.itemFk, - c2.id, + SELECT + tcc.warehouseFk, + tcc.itemFk, + c2.id, - vFrenchDiscount * (b.buyingValue + b.freightValue + b.packageValue + b.comissionValue) / ( 1 - vFrenchDiscount) - FROM tmp.ticketComponentCalculate tcc + FROM tmp.ticketComponentCalculate tcc JOIN vn.component c2 ON c2.code = 'frenchOffer' JOIN buy b ON b.id = tcc.buyFk; - + END IF; DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentBase; @@ -50880,49 +47451,71 @@ proc: BEGIN FROM tmp.ticketComponent tc JOIN tmp.ticketComponentCalculate tcc ON tcc.itemFk = tc.itemFk AND tcc.warehouseFk = tc.warehouseFk GROUP BY tc.itemFk, warehouseFk; - + -- RECOBRO INSERT INTO tmp.ticketComponent(warehouseFk, itemFk, componentFk, cost) - SELECT tcb.warehouseFk, tcb.itemFk, c2.id, - ROUND(tcb.base * LEAST(MAX(GREATEST(IFNULL(cr.priceIncreasing,0), IFNULL(cr1.priceIncreasing,0), IFNULL(cr2.priceIncreasing,0))), 0.25), 3) + SELECT tcb.warehouseFk, tcb.itemFk, c2.id, + ROUND(tcb.base * + LEAST( + MAX(GREATEST(IFNULL(cr.priceIncreasing,0), + IFNULL(cr1.priceIncreasing,0), + IFNULL(cr2.priceIncreasing,0)) + ), + cc.maxPriceIncreasingRatio), + 3) FROM tmp.ticketComponentBase tcb JOIN vn.component c2 ON c2.code = 'debtCollection' + JOIN vn.clientConfig cc JOIN claimRatio cr ON cr.clientFk = vClientFk - LEFT JOIN clientYoke cy1 ON cy1.leftOx = cr.clientFk - LEFT JOIN claimRatio cr1 ON cr1.clientFk = cy1.rightOx - LEFT JOIN clientYoke cy2 ON cy2.rightOx = cr.clientFk - LEFT JOIN claimRatio cr2 ON cr2.clientFk = cy2.leftOx + LEFT JOIN clientYoke cy1 ON cy1.leftOx = cr.clientFk + LEFT JOIN claimRatio cr1 ON cr1.clientFk = cy1.rightOx + LEFT JOIN clientYoke cy2 ON cy2.rightOx = cr.clientFk + LEFT JOIN claimRatio cr2 ON cr2.clientFk = cy2.leftOx WHERE GREATEST(IFNULL(cr.priceIncreasing,0), IFNULL(cr1.priceIncreasing,0), IFNULL(cr2.priceIncreasing,0)) > 0.009 - GROUP BY tcb.itemFk; - + GROUP BY tcb.itemFk; + -- Mana auto - INSERT INTO tmp.ticketComponent(warehouseFk, itemFk, componentFk, cost) + INSERT INTO tmp.ticketComponent(warehouseFk, itemFk, componentFk, cost) SELECT tcb.warehouseFk, tcb.itemFk, c2.id, ROUND(base * (0.01 + wm.pricesModifierRate), 3) as manaAuto FROM tmp.ticketComponentBase tcb JOIN `client` c on c.id = vClientFk - JOIN workerMana wm ON c.salesPersonFk = wm.workerFk + JOIN workerMana wm ON c.salesPersonFk = wm.workerFk JOIN vn.component c2 ON c2.code = 'autoMana' WHERE wm.isPricesModifierActivated HAVING manaAuto <> 0; - - -- Precios especiales + + -- Precios especiales INSERT INTO tmp.ticketComponent(warehouseFk, itemFk, componentFk, cost) - SELECT tcb.warehouseFk, - tcb.itemFk, - c2.id, - GREATEST(IFNULL(ROUND(tcb.base * c2.tax, 4), 0), tcc.minPrice - tcc.rate3) + SELECT tcb.warehouseFk, + tcb.itemFk, + c2.id, + GREATEST( + IFNULL(ROUND(tcb.base * c2.tax, 4), 0), + IF(i.hasMinPrice, i.minPrice,0) - tcc.rate3 + ) cost FROM tmp.ticketComponentBase tcb JOIN vn.component c2 ON c2.code = 'lastUnitsDiscount' - JOIN tmp.ticketComponentCalculate tcc ON tcc.itemFk = tcb.itemFk AND tcc.warehouseFk = tcb.warehouseFk + JOIN tmp.ticketComponentCalculate tcc ON tcc.itemFk = tcb.itemFk AND tcc.warehouseFk = tcb.warehouseFk LEFT JOIN specialPrice sp ON sp.clientFk = vClientFk AND sp.itemFk = tcc.itemFk - JOIN vn.item i ON i.id = tcb.itemFk - WHERE tcc.minPrice < tcc.rate3 - AND sp.value IS NULL - AND i.supplyResponseFk IS NULL; - - -- Venta por paquetes + JOIN vn.item i ON i.id = tcb.itemFk + WHERE sp.value IS NULL + AND i.supplyResponseFk IS NULL; + + -- Individual INSERT INTO tmp.ticketComponent(warehouseFk, itemFk, componentFk, cost) - SELECT tcc.warehouseFk, tcc.itemFk, c2.id, tcc.rate2 - tcc.rate3 + SELECT tcb.warehouseFk, + tcb.itemFk, + c2.id, + IFNULL(ROUND(tcb.base * c2.tax, 4), 0) cost + FROM tmp.ticketComponentBase tcb + JOIN vn.component c2 ON c2.code = 'individual' + JOIN vn.client c ON c.id = vClientFk + JOIN vn.businessType bt ON bt.code = c.businessTypeFk + WHERE bt.code = 'individual'; + + -- Venta por paquetes + INSERT INTO tmp.ticketComponent(warehouseFk, itemFk, componentFk, cost) + SELECT tcc.warehouseFk, tcc.itemFk, c2.id, tcc.rate2 - tcc.rate3 FROM tmp.ticketComponentCalculate tcc JOIN vn.component c2 ON c2.code = 'salePerPackage' JOIN buy b ON b.id = tcc.buyFk @@ -50932,47 +47525,38 @@ proc: BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.zone; CREATE TEMPORARY TABLE IF NOT EXISTS tmp.zone (INDEX (id)) ENGINE = MEMORY - SELECT vZoneFk id; - + SELECT vZoneFk id; + CALL zone_getOptionsForShipment(vShipped, TRUE); - - -- Reparto + + -- Reparto INSERT INTO tmp.ticketComponent - SELECT tcc.warehouseFK, + SELECT tcc.warehouseFK, tcc.itemFk, - c2.id, + c2.id, z.inflation * ROUND(ic.cm3delivery * (IFNULL(zo.price,5000) - IFNULL(zo.bonus,0)) / (1000 * vc.standardFlowerBox) , 4) cost FROM tmp.ticketComponentCalculate tcc JOIN item i ON i.id = tcc.itemFk - JOIN tmp.zoneOption zo ON zo.zoneFk = vZoneFk - JOIN zone z ON z.id = vZoneFk + JOIN tmp.zoneOption zo ON zo.zoneFk = vZoneFk + JOIN zone z ON z.id = vZoneFk JOIN agencyMode am ON am.id = z.agencyModeFk JOIN vn.volumeConfig vc JOIN vn.component c2 ON c2.code = 'delivery' - LEFT JOIN itemCost ic ON ic.warehouseFk = tcc.warehouseFk + LEFT JOIN itemCost ic ON ic.warehouseFk = tcc.warehouseFk AND ic.itemFk = tcc.itemFk - HAVING cost <> 0; - - DROP TEMPORARY TABLE tmp.zoneOption; - /* - -- Extra reparto - INSERT INTO tmp.ticketComponent(warehouseFk, itemFk, componentFk, cost) - SELECT tcc.warehouseFk, tcc.itemFk, c2.id, ap.packagingValue cost - FROM tmp.ticketComponentCalculate tcc - JOIN vn.addressForPackaging ap - JOIN vn.component c2 ON c2.code = 'bagged' - WHERE ap.addressFk = vAddressFk; - */ - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentCopy; - CREATE TEMPORARY TABLE tmp.ticketComponentCopy ENGINE = MEMORY + HAVING cost <> 0; + + DROP TEMPORARY TABLE tmp.zoneOption; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentCopy; + CREATE TEMPORARY TABLE tmp.ticketComponentCopy ENGINE = MEMORY SELECT * FROM tmp.ticketComponent; - - -- Precio especial + + -- Precio especial INSERT INTO tmp.ticketComponent - SELECT tcc.warehouseFk, - tcc.itemFk, - c2.id, + SELECT tcc.warehouseFk, + tcc.itemFk, + c2.id, sp.value - SUM(tcc.cost) sumCost FROM tmp.ticketComponentCopy tcc JOIN component c ON c.id = tcc.componentFk @@ -50982,12 +47566,12 @@ proc: BEGIN AND tcc.warehouseFk = vWarehouseFk GROUP BY tcc.itemFk, tcc.warehouseFk HAVING ABS(sumCost) > 0.001; - - -- Rappel + + -- Rappel INSERT INTO tmp.ticketComponent - SELECT tcc.warehouseFk, - tcc.itemFk, - IFNULL(c.componentFk ,c2.id), + SELECT tcc.warehouseFk, + tcc.itemFk, + IFNULL(c.componentFk ,c2.id), SUM(tcc.cost) * ((1/(1-c.rappel/100)) -1) sumCost FROM tmp.ticketComponentCopy tcc JOIN vn.clientChain cc ON cc.clientFk = vClientFk @@ -51008,70 +47592,61 @@ proc: BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentRate; CREATE TEMPORARY TABLE tmp.ticketComponentRate ENGINE = MEMORY - SELECT tcc.warehouseFk, - tcc.itemFk, + SELECT tcc.warehouseFk, + tcc.itemFk, 1 rate, - IF(tcc.groupingMode = 1, tcc.`grouping`, 1) `grouping`, + IF(tcc.groupingMode = 1, tcc.`grouping`, 1) `grouping`, CAST(SUM(tcs.sumCost) AS DECIMAL(10,2)) price, - CAST(SUM(tcs.sumCost) AS DECIMAL(10,2)) / weightGrouping priceKg + CAST(SUM(tcs.sumCost) AS DECIMAL(10,2)) / weightGrouping priceKg FROM tmp.ticketComponentCalculate tcc - JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk + JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk AND tcs.warehouseFk = tcc.warehouseFk - WHERE IFNULL(tcs.classRate, 1) = 1 + WHERE IFNULL(tcs.classRate, 1) = 1 AND tcc.groupingMode < 2 AND (tcc.packing > tcc.`grouping` or tcc.groupingMode = 0) GROUP BY tcs.warehouseFk, tcs.itemFk; INSERT INTO tmp.ticketComponentRate (warehouseFk, itemFk, rate, `grouping`, price, priceKg) - SELECT - tcc.warehouseFk, - tcc.itemFk, - 2 rate, - tcc.packing `grouping`, + SELECT + tcc.warehouseFk, + tcc.itemFk, + 2 rate, + tcc.packing `grouping`, SUM(tcs.sumCost) price, - SUM(tcs.sumCost) / weightGrouping priceKg + SUM(tcs.sumCost) / weightGrouping priceKg FROM tmp.ticketComponentCalculate tcc - JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk + JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk AND tcs.warehouseFk = tcc.warehouseFk - WHERE tcc.available IS NULL OR (IFNULL(tcs.classRate, 2) = 2 + WHERE tcc.available IS NULL OR (IFNULL(tcs.classRate, 2) = 2 AND tcc.packing > 0 AND tcc.available >= tcc.packing) GROUP BY tcs.warehouseFk, tcs.itemFk; - IF vIsZonePremium THEN - - DELETE - FROM tmp.ticketComponentRate - WHERE rate = 1; - - END IF; - INSERT INTO tmp.ticketComponentRate (warehouseFk, itemFk, rate, `grouping`, price, priceKg) - SELECT - tcc.warehouseFk, - tcc.itemFk, - 3 rate, - tcc.available `grouping`, + SELECT + tcc.warehouseFk, + tcc.itemFk, + 3 rate, + tcc.available `grouping`, SUM(tcs.sumCost) price, - SUM(tcs.sumCost) / weightGrouping priceKg + SUM(tcs.sumCost) / weightGrouping priceKg FROM tmp.ticketComponentCalculate tcc - JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk + JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk AND tcs.warehouseFk = tcc.warehouseFk - WHERE IFNULL(tcs.classRate, 3) = 3 + WHERE IFNULL(tcs.classRate, 3) = 3 GROUP BY tcs.warehouseFk, tcs.itemFk; - + INSERT INTO tmp.ticketComponentPrice (warehouseFk, itemFk, rate, `grouping`, price, priceKg) SELECT * FROM ( - SELECT * FROM tmp.ticketComponentRate ORDER BY price + SELECT * FROM tmp.ticketComponentRate ORDER BY price LIMIT 10000000000000000000 ) t GROUP BY itemFk, warehouseFk, `grouping`; - - SELECT * FROM tmp.ticketComponentPrice; - DROP TEMPORARY TABLE + DROP TEMPORARY TABLE tmp.ticketComponentCalculate, tmp.ticketComponentSum, tmp.ticketComponentBase, tmp.ticketComponentRate, - tmp.ticketComponentCopy; + tmp.ticketComponentCopy; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -51082,15 +47657,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `catalog_componentPrepare`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `catalog_componentPrepare`() BEGIN - + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponent; CREATE TEMPORARY TABLE tmp.ticketComponent ( `warehouseFk` INT UNSIGNED NOT NULL, @@ -51100,9 +47675,9 @@ BEGIN INDEX `itemWarehouse` USING BTREE (`itemFk` ASC, `warehouseFk` ASC), UNIQUE `fkItemWarehouseComponent` (`itemFk` ASC, `warehouseFk` ASC, `componentFk` ASC) )ENGINE=MEMORY DEFAULT CHARSET=utf8; - + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentPrice; - CREATE TEMPORARY TABLE tmp.ticketComponentPrice ( + CREATE TEMPORARY TABLE tmp.ticketComponentPrice ( `warehouseFk` INT UNSIGNED NOT NULL, `itemFk` INT NOT NULL, `rate` INT NOT NULL, @@ -51111,7 +47686,7 @@ BEGIN `priceKg` DECIMAL(10,4), INDEX `itemWarehouse` USING BTREE (`itemFk` ASC, `warehouseFk` ASC), UNIQUE `fkItemWarehouseRate` (`itemFk` ASC, `warehouseFk` ASC, `rate` ASC) - )ENGINE=MEMORY DEFAULT CHARSET=utf8; + )ENGINE=MEMORY DEFAULT CHARSET=utf8; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -51122,15 +47697,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `catalog_componentPurge`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `catalog_componentPurge`() BEGIN - DROP TEMPORARY TABLE + DROP TEMPORARY TABLE tmp.ticketComponentPrice, tmp.ticketComponent, tmp.ticketLot; @@ -51146,27 +47721,27 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `catalog_test`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `catalog_test`() proc: BEGIN /** * Calcula los articulos disponibles y sus precios - * + * * @table tmp.item(itemFk) Listado de artículos a calcular * @param vLanded Fecha de recepcion de mercancia * @param vAddressFk Id del consignatario * @param vAgencyModeFk Id de la agencia - * @return tmp.ticketCalculateItem(itemFk, available, producer, + * @return tmp.ticketCalculateItem(itemFk, available, producer, * item, size, stems, category, inkFk, image, origin, price) * @return tmp.ticketLot(warehouseFk, itemFk, available, buyFk) * @return tmp.ticketComponent * @return tmp.ticketComponentPrice * @return tmp.zoneGetShipped */ - DECLARE vLanded DATE DEFAULT DATE_ADD(CURDATE(),INTERVAL 2 DAY); + DECLARE vLanded DATE DEFAULT DATE_ADD(util.VN_CURDATE(),INTERVAL 2 DAY); DECLARE vAddressFk INT DEFAULT 24526; DECLARE vAgencyModeFk INT DEFAULT 639; DECLARE vAvailableCalc INT; @@ -51181,10 +47756,10 @@ proc: BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.item; CREATE TEMPORARY TABLE tmp.item - ENGINE = MEMORY + ENGINE = MEMORY SELECT 10 itemFk; -- Establece los almacenes y las fechas que van a entrar al disponible -SELECT 1; +SELECT 1; CALL vn.zone_getShipped (vLanded, vAddressFk, vAgencyModeFk, FALSE); SELECT 2; DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; @@ -51199,25 +47774,25 @@ SELECT 2; KEY `item_warehouse` (`itemFk`,`warehouseFk`) USING HASH ) ENGINE=MEMORY DEFAULT CHARSET=utf8; CALL catalog_componentPrepare(); - + SELECT 3; DROP TEMPORARY TABLE IF EXISTS tmp.ticketCalculateItem; CREATE TEMPORARY TABLE tmp.ticketCalculateItem( - itemFk INT(11) NOT NULL, + itemFk INT(11) NOT NULL, available INT(11), - producer VARCHAR(50), - item VARCHAR(50), - size INT(10) UNSIGNED, - stems INT(11), - category VARCHAR(3), - inkFk VARCHAR(3), + producer VARCHAR(50), + item VARCHAR(50), + size INT(10) UNSIGNED, + stems INT(11), + category VARCHAR(3), + inkFk VARCHAR(3), image VARCHAR(50), - origin VARCHAR(3), + origin VARCHAR(3), price DECIMAL(10,2), priceKg DECIMAL(10,2), PRIMARY KEY `itemFk` (`itemFk`) ) ENGINE = MEMORY DEFAULT CHARSET=utf8; - + OPEN cTravelTree; l: LOOP @@ -51244,35 +47819,35 @@ SELECT 5; LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = i.item_id WHERE i.calc_id = vAvailableCalc AND i.available > 0; - + DROP TEMPORARY TABLE tmp.buyUltimate; - + CALL vn.catalog_componentCalculate(vZoneFk, vAddressFk, vShipped, vWarehouseFk); SELECT 6; INSERT INTO tmp.ticketCalculateItem ( - itemFk, - available, - producer, - item, - size, - stems, - category, + itemFk, + available, + producer, + item, + size, + stems, + category, inkFk, image, origin, price, priceKg) - SELECT - tl.itemFk, + SELECT + tl.itemFk, SUM(tl.available) available, - p.name producer, - i.name item, - i.size size, - i.stems, - i.category, - i.inkFk, + p.name producer, + i.name item, + i.size size, + i.stems, + i.category, + i.inkFk, i.image, - o.code origin, + o.code origin, bl.price, bl.priceKg FROM tmp.ticketLot tl @@ -51280,11 +47855,12 @@ SELECT 6; LEFT JOIN producer p ON p.id = i.producerFk AND p.isVisible JOIN origin o ON o.id = i.originFk JOIN ( - SELECT * + SELECT * FROM (SELECT price, itemFk, priceKg FROM tmp.ticketComponentPrice WHERE warehouseFk = vWarehouseFk - ORDER BY (rate = 2) DESC) sub + ORDER BY (rate = 2) DESC + LIMIT 10000000000000000000) sub GROUP BY itemFk ) bl ON bl.itemFk = tl.itemFk WHERE tl.zoneFk = vZoneFk AND tl.warehouseFk = vWarehouseFk @@ -51295,8 +47871,8 @@ SELECT 6; CLOSE cTravelTree; DROP TEMPORARY TABLE tmp.item; -SELECT 7; - +SELECT 7; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -51307,153 +47883,157 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clean`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `clean`() BEGIN DECLARE vDateShort DATETIME; DECLARE vOneYearAgo DATE; DECLARE vFourYearsAgo DATE; DECLARE v18Month DATE; - DECLARE v26Month DATE; - DECLARE v3Month DATE; - DECLARE vTrashId varchar(15); - - SET vDateShort = TIMESTAMPADD(MONTH, -2, CURDATE()); - SET vOneYearAgo = TIMESTAMPADD(YEAR,-1,CURDATE()); - SET vFourYearsAgo = TIMESTAMPADD(YEAR,-4,CURDATE()); - SET v18Month = TIMESTAMPADD(MONTH, -18,CURDATE()); - SET v26Month = TIMESTAMPADD(MONTH, -26,CURDATE()); - SET v3Month = TIMESTAMPADD(MONTH, -3, CURDATE()); - - DELETE FROM ticketParking WHERE created < vDateShort; - DELETE FROM routesMonitor WHERE dated < vDateShort; - DELETE FROM workerTimeControlLog WHERE created < vDateShort; + DECLARE v26Month DATE; + DECLARE v3Month DATE; + DECLARE vTrashId varchar(15); + + SET vDateShort = TIMESTAMPADD(MONTH, -2, util.VN_CURDATE()); + SET vOneYearAgo = TIMESTAMPADD(YEAR,-1,util.VN_CURDATE()); + SET vFourYearsAgo = TIMESTAMPADD(YEAR,-4,util.VN_CURDATE()); + SET v18Month = TIMESTAMPADD(MONTH, -18,util.VN_CURDATE()); + SET v26Month = TIMESTAMPADD(MONTH, -26,util.VN_CURDATE()); + SET v3Month = TIMESTAMPADD(MONTH, -3, util.VN_CURDATE()); + + DELETE FROM ticketParking WHERE created < vDateShort; + DELETE FROM routesMonitor WHERE dated < vDateShort; + DELETE FROM workerTimeControlLog WHERE created < vDateShort; DELETE FROM `message` WHERE sendDate < vDateShort; DELETE FROM messageInbox WHERE sendDate < vDateShort; DELETE FROM messageInbox WHERE sendDate < vDateShort; DELETE FROM workerTimeControl WHERE timed < vFourYearsAgo; - DELETE FROM itemShelving WHERE created < CURDATE() AND visible = 0; - DELETE FROM ticketDown WHERE created < TIMESTAMPADD(DAY,-1,CURDATE()); - DELETE FROM entryLog WHERE creationDate < vDateShort; - DELETE g FROM glsExpedition g - JOIN expedition e ON e.id = g.expeditionFk - WHERE e.created < v26Month; - DELETE IGNORE FROM expedition WHERE created < v26Month; - DELETE FROM sms WHERE created < v18Month; - DELETE FROM saleTracking WHERE created < vDateShort; - DELETE tobs FROM ticketObservation tobs - JOIN ticket t ON tobs.ticketFk = t.id WHERE t.shipped < TIMESTAMPADD(YEAR,-2,CURDATE()); + DELETE FROM itemShelving WHERE created < util.VN_CURDATE() AND visible = 0; + DELETE FROM ticketDown WHERE created < TIMESTAMPADD(DAY,-1,util.VN_CURDATE()); + DELETE FROM entryLog WHERE creationDate < vDateShort; + DELETE IGNORE FROM expedition WHERE created < v26Month; + DELETE FROM sms WHERE created < v18Month; + DELETE FROM saleTracking WHERE created < vOneYearAgo; + DELETE tobs FROM ticketObservation tobs + JOIN ticket t ON tobs.ticketFk = t.id WHERE t.shipped < TIMESTAMPADD(YEAR,-2,util.VN_CURDATE()); DELETE sc.* FROM saleCloned sc JOIN sale s ON s.id = sc.saleClonedFk JOIN ticket t ON t.id = s.ticketFk WHERE t.shipped < vOneYearAgo; DELETE FROM sharingCart where ended < vDateShort; - DELETE FROM sharingClient where ended < vDateShort; - DELETE tw.* FROM ticketWeekly tw + DELETE FROM sharingClient where ended < vDateShort; + DELETE tw.* FROM ticketWeekly tw LEFT JOIN sale s ON s.ticketFk = tw.ticketFk WHERE s.itemFk IS NULL; - DELETE FROM claim WHERE ticketCreated < v18Month; + DELETE FROM claim WHERE ticketCreated < vFourYearsAgo; DELETE FROM message WHERE sendDate < vDateShort; - -- Robert ubicacion anterior de trevelLog comentario para debug - DELETE sc FROM saleChecked sc + -- Robert ubicacion anterior de trevelLog comentario para debug + DELETE sc FROM saleChecked sc JOIN sale s ON sc.saleFk = s.id WHERE s.created < vDateShort; DELETE FROM zoneEvent WHERE `type` = 'day' AND dated < v3Month; DELETE bm - FROM buyMark bm - JOIN buy b ON b.id = bm.id + FROM buyMark bm + JOIN buy b ON b.id = bm.id JOIN entry e ON e.id = b.entryFk JOIN travel t ON t.id = e.travelFk WHERE t.landed <= vDateShort; DELETE FROM stowaway WHERE created < v3Month; - DELETE FROM vn.buy WHERE created < vDateShort AND entryFk = 9200; - DELETE FROM vn.itemShelvingLog WHERE created < vDateShort; - DELETE FROM vn.stockBuyed WHERE creationDate < vDateShort; - + DELETE FROM vn.buy WHERE created < vDateShort AND entryFk = 9200; + DELETE FROM vn.itemShelvingLog WHERE created < vDateShort; + DELETE FROM vn.stockBuyed WHERE creationDate < vDateShort; + DELETE FROM vn.itemCleanLog WHERE created < util.VN_NOW() - INTERVAL 1 YEAR; + + -- Equipos duplicados - DELETE w.* + DELETE w.* FROM workerTeam w JOIN (SELECT id, team, workerFk, COUNT(*) - 1 as duplicated FROM workerTeam GROUP BY team,workerFk HAVING duplicated ) d ON d.team = w.team AND d.workerFk = w.workerFk AND d.id != w.id; - - DELETE sc + + DELETE sc FROM saleComponent sc JOIN sale s ON s.id= sc.saleFk JOIN ticket t ON t.id= s.ticketFk WHERE t.shipped < v18Month; - - DELETE c + + DELETE c FROM vn.claim c JOIN vn.claimState cs ON cs.id = c.claimStateFk WHERE cs.description = "Anulado" AND - c.created < vDateShort; + c.created < vDateShort; DELETE FROM vn.expeditionTruck - WHERE ETD < v3Month; - - -- borrar travels sin entradas + WHERE ETD < v3Month; + + -- borrar travels sin entradas DROP TEMPORARY TABLE IF EXISTS tmp.thermographToDelete; CREATE TEMPORARY TABLE tmp.thermographToDelete SELECT th.id,th.dmsFk FROM vn.travel t LEFT JOIN vn.entry e ON e.travelFk = t.id JOIN vn.travelThermograph th ON th.travelFk = t.id - WHERE t.shipped < TIMESTAMPADD(MONTH, -3, CURDATE()) AND e.travelFk IS NULL; - - SELECT dt.id into vTrashId - FROM vn.dmsType dt - WHERE dt.code = 'trash'; + WHERE t.shipped < TIMESTAMPADD(MONTH, -3, util.VN_CURDATE()) AND e.travelFk IS NULL; - UPDATE tmp.thermographToDelete th + SELECT dt.id into vTrashId + FROM vn.dmsType dt + WHERE dt.code = 'trash'; + + UPDATE tmp.thermographToDelete th JOIN vn.dms d ON d.id = th.dmsFk SET d.dmsTypeFk = vTrashId; - DELETE th + DELETE th FROM tmp.thermographToDelete tmp JOIN vn.travelThermograph th ON th.id = tmp.id; DELETE t FROM vn.travel t LEFT JOIN vn.entry e ON e.travelFk = t.id - WHERE t.shipped < TIMESTAMPADD(MONTH, -3, CURDATE()) AND e.travelFk IS NULL; - - -- borrar entradas sin compras - DROP TEMPORARY TABLE IF EXISTS tmp.entryToDelete; + WHERE t.shipped < TIMESTAMPADD(MONTH, -3, util.VN_CURDATE()) AND e.travelFk IS NULL; + + UPDATE dms d + JOIN dmsType dt ON dt.id = d.dmsTypeFk + SET d.dmsTypeFk = vTrashId + WHERE created < TIMESTAMPADD(MONTH, -dt.monthToDelete, util.VN_CURDATE()); + + -- borrar entradas sin compras + DROP TEMPORARY TABLE IF EXISTS tmp.entryToDelete; CREATE TEMPORARY TABLE tmp.entryToDelete SELECT e.* FROM vn.entry e LEFT JOIN vn.buy b ON b.entryFk = e.id JOIN vn.entryConfig ec ON e.id != ec.defaultEntry - WHERE e.dated < TIMESTAMPADD(MONTH, -3, CURDATE()) AND b.entryFK IS NULL; + WHERE e.dated < TIMESTAMPADD(MONTH, -3, util.VN_CURDATE()) AND b.entryFK IS NULL; DELETE e FROM vn.entry e - JOIN tmp.entryToDelete tmp ON tmp.id = e.id; - - -- borrar de route registros menores a 4 años - DROP TEMPORARY TABLE IF EXISTS tmp.routeToDelete; + JOIN tmp.entryToDelete tmp ON tmp.id = e.id; + + -- borrar de route registros menores a 4 años + DROP TEMPORARY TABLE IF EXISTS tmp.routeToDelete; CREATE TEMPORARY TABLE tmp.routeToDelete SELECT * FROM vn.route r - WHERE created < TIMESTAMPADD(YEAR,-4,CURDATE()); + WHERE created < TIMESTAMPADD(YEAR,-4,util.VN_CURDATE()); UPDATE tmp.routeToDelete tmp JOIN vn.dms d ON d.id = tmp.gestdocFk SET d.dmsTypeFk = vTrashId; - DELETE r + DELETE r FROM tmp.routeToDelete tmp JOIN vn.route r ON r.id = tmp.id; - - -- borrar registros de dua y awb menores a 2 años - DROP TEMPORARY TABLE IF EXISTS tmp.duaToDelete; + + -- borrar registros de dua y awb menores a 2 años + DROP TEMPORARY TABLE IF EXISTS tmp.duaToDelete; CREATE TEMPORARY TABLE tmp.duaToDelete - SELECT * - FROM vn.dua - WHERE operated < TIMESTAMPADD(YEAR,-2,CURDATE()); + SELECT * + FROM vn.dua + WHERE operated < TIMESTAMPADD(YEAR,-2,util.VN_CURDATE()); UPDATE tmp.duaToDelete tm JOIN vn.dms d ON d.id = tm.gestdocFk @@ -51462,25 +48042,20 @@ BEGIN DELETE d FROM tmp.duaToDelete tmp JOIN vn.dua d ON d.id = tmp.id; - - DELETE FROM vn.awb WHERE created < TIMESTAMPADD(YEAR,-2,CURDATE()); - - -- Borra los ficheros gestDoc - INSERT INTO vn.printServerQueue(priorityFk, labelReportFk)VALUES(1,11); - - -- Borra los registros de collection y ticketcollection - DELETE FROM vn.collection WHERE created < vDateShort; - - DROP TEMPORARY TABLE IF EXISTS tmp.thermographToDelete; - DROP TEMPORARY TABLE IF EXISTS tmp.entryToDelete; - DROP TEMPORARY TABLE IF EXISTS tmp.duaToDelete; - - DELETE FROM travelLog WHERE creationDate < v3Month; - - CALL shelving_clean; - CALL ticketPackagingRecovery; - + DELETE FROM vn.awb WHERE created < TIMESTAMPADD(YEAR,-2,util.VN_CURDATE()); + + -- Borra los registros de collection y ticketcollection + DELETE FROM vn.collection WHERE created < vDateShort; + + DROP TEMPORARY TABLE IF EXISTS tmp.thermographToDelete; + DROP TEMPORARY TABLE IF EXISTS tmp.entryToDelete; + DROP TEMPORARY TABLE IF EXISTS tmp.duaToDelete; + + DELETE FROM travelLog WHERE creationDate < v3Month; + + CALL shelving_clean; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -51491,24 +48066,25 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clean_logiflora`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `clean_logiflora`() BEGIN - /* partir en 2 procedimientos, uno que borre compras y otro articulos - * item_clean, buy_clean - * */ - - DECLARE vMaxDated DATE DEFAULT TIMESTAMPADD(DAY, - 7, CURDATE()); +/** + * Partir en 2 procedimientos, uno que borre compras y otro articulos + * item_clean, buy_clean. + */ + + DECLARE vMaxDated DATE DEFAULT TIMESTAMPADD(DAY, - 7, util.VN_CURDATE()); DECLARE vDone INT DEFAULT FALSE; DECLARE vBuyFk INT; DECLARE cur1 CURSOR FOR SELECT id FROM tmp.buy; DECLARE cur2 CURSOR FOR SELECT id FROM tmp.item; - + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; DROP TEMPORARY TABLE IF EXISTS tmp.buy; @@ -51518,33 +48094,33 @@ BEGIN SELECT b.id FROM 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.agencyFk + JOIN vn.travel tr ON tr.id = e.travelFk + JOIN vn.agencyMode am ON am.id = tr.agencyModeFk WHERE b.quantity = 0 AND am.name = 'LOGIFLORA' AND e.isRaid; OPEN cur1; - read_loop: LOOP - - SET vDone = FALSE; - - FETCH cur1 INTO vBuyFk; - - IF vDone THEN - LEAVE read_loop; - END IF; - - DELETE FROM vn.buy WHERE id = vBuyFk; - - END LOOP; + read_loop: LOOP - CLOSE cur1; - - DROP TEMPORARY TABLE tmp.buy; - - DROP TEMPORARY TABLE IF EXISTS tmp.item; + SET vDone = FALSE; + + FETCH cur1 INTO vBuyFk; + + IF vDone THEN + LEAVE read_loop; + END IF; + + DELETE FROM vn.buy WHERE id = vBuyFk; + + END LOOP; + + CLOSE cur1; + + DROP TEMPORARY TABLE tmp.buy; + + DROP TEMPORARY TABLE IF EXISTS tmp.item; CREATE TEMPORARY TABLE tmp.item ENGINE = MEMORY @@ -51552,33 +48128,34 @@ BEGIN FROM vn.item i LEFT JOIN hedera.orderRow o ON o.itemFk = i.id LEFT JOIN vn.sale s ON s.itemFk = i.id - LEFT JOIN vn.buy b ON b.itemFk = i.id - WHERE i.supplyResponseFk + LEFT JOIN vn.buy b ON b.itemFk = i.id + LEFT JOIN bs.waste w ON w.itemFk = i.id + WHERE i.supplyResponseFk AND o.id IS NULL - AND b.id IS NULL + AND b.id IS NULL AND s.id IS NULL + AND w.rate IS NULL AND i.created < vMaxDated; - + OPEN cur2; - read_loop: LOOP - - SET vDone = FALSE; - - FETCH cur2 INTO vBuyFk; - - IF vDone THEN - LEAVE read_loop; - END IF; - - DELETE FROM vn.item WHERE id = vBuyFk; - - END LOOP; + read_loop: LOOP - CLOSE cur2; - - DROP TEMPORARY TABLE tmp.item; - + SET vDone = FALSE; + + FETCH cur2 INTO vBuyFk; + + IF vDone THEN + LEAVE read_loop; + END IF; + + DELETE FROM vn.item WHERE id = vBuyFk; + + END LOOP; + + CLOSE cur2; + + DROP TEMPORARY TABLE tmp.item; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -51589,19 +48166,17 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clearShelvingList`(vShelvingFk VARCHAR(8)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `clearShelvingList`(vShelvingFk VARCHAR(8)) BEGIN - - UPDATE vn.itemShelving - SET visible = 0, available = 0 - WHERE shelvingFk COLLATE utf8_unicode_ci =vShelvingFk COLLATE utf8_unicode_ci; - + UPDATE vn.itemShelving + SET visible = 0 + WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk COLLATE utf8_unicode_ci; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -51614,15 +48189,15 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clientCreate`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `clientCreate`( vFirstname VARCHAR(50), - vSurnames VARCHAR(50), - vFi VARCHAR(9), - vAddress TEXT, + vSurnames VARCHAR(50), + vFi VARCHAR(9), + vAddress TEXT, vPostcode CHAR(5), vCity VARCHAR(25), vProvinceFk SMALLINT(5), @@ -51641,7 +48216,7 @@ BEGIN DECLARE vIsTaxDataChecked TINYINT(1) DEFAULT 1; DECLARE vHasCoreVnl BOOLEAN DEFAULT TRUE; DECLARE vMandateTypeFk INT DEFAULT 2; - + INSERT INTO `client` ( id, name, @@ -51669,21 +48244,21 @@ BEGIN vProvinceFk, vCity, vPostcode, - CONCAT(vSurnames, ' ', vFirstname), + CONCAT(vSurnames, ' ', vFirstname), vPayMethodFk, vDueDay, vDefaultCredit, vIsTaxDataChecked, vHasCoreVnl, FALSE - ) ON duplicate key update + ) ON duplicate key update payMethodFk = vPayMethodFk, dueDay = vDueDay, credit = vDefaultCredit, isTaxDataChecked = vIsTaxDataChecked, hasCoreVnl = vHasCoreVnl, isActive = TRUE; - + IF (SELECT COUNT(*) FROM mandate WHERE clientFk = vUserFk AND companyFk = vCompanyFk AND mandateTypeFk = vMandateTypeFk) = 0 THEN INSERT INTO mandate (clientFk, companyFk, mandateTypeFk) VALUES (vUserFk, vCompanyFk, vMandateTypeFk); @@ -51698,13 +48273,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clientDebtSpray`(vClientFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `clientDebtSpray`(vClientFk INT) BEGIN /* Reparte el saldo de un cliente en greuge en la cartera que corresponde, y desasigna el comercial @@ -51713,21 +48288,21 @@ BEGIN */ DECLARE vClientDebt DOUBLE; - - SELECT vn.clientGetDebt(vClientFk, CURDATE()) INTO vClientDebt; - + + SELECT vn.clientGetDebt(vClientFk, util.VN_CURDATE()) INTO vClientDebt; + INSERT INTO vn.greuge(clientFk, description, amount, shipped, greugeTypeFk) - VALUES (vClientFk, 'Saldo pendiente', vClientDebt, CURDATE(), 5); - + VALUES (vClientFk, 'Saldo pendiente', vClientDebt, util.VN_CURDATE(), 5); + CALL vn.clientGreugeSpray(vClientFk, TRUE, '', TRUE); - + INSERT INTO vn.greuge(clientFk, description, amount, shipped, greugeTypeFk) - SELECT vClientFk, 'Liquidación cliente', sum(amount), CURDATE(), 5 + SELECT vClientFk, 'Liquidación cliente', sum(amount), util.VN_CURDATE(), 5 FROM vn.greuge WHERE clientFk = vClientFk; - - UPDATE vn.client - SET salesPersonFk = NULL + + UPDATE vn.client + SET salesPersonFk = NULL WHERE id = vClientFk; END ;; @@ -51740,56 +48315,52 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `clientFreeze`() BEGIN /** - * Congela diariamente aquellos clientes que son morosos sin recobro, - * pero que no sean trabajadores, - * y que el riesgo no sea menor que cero - * hasta que no se gire la remesa no se congelan a los clientes de giro - */ +* Congela diariamente aquellos clientes que son morosos sin recobro, +* pero que no sean trabajadores, +* y que el riesgo no sea menor que cero +* hasta que no se gire la remesa no se congelan a los clientes de giro +*/ DECLARE vIsRemittanced BOOLEAN; - SELECT id into vIsRemittanced - FROM receipt - WHERE invoiceFk LIKE 'REMESA%' - AND payed > util.firstDayOfMonth(CURDATE()) - limit 1; - + SELECT id into vIsRemittanced + FROM receipt + WHERE invoiceFk LIKE 'REMESA%' + AND payed > util.firstDayOfMonth(util.VN_CURDATE()) + LIMIT 1; + DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt; CREATE TEMPORARY TABLE tmp.clientGetDebt SELECT clientFk - FROM bs.defaulter - WHERE created = CURDATE() + FROM bs.defaulter + WHERE created = util.VN_CURDATE() AND amount; - - CALL clientGetDebt(CURDATE()); + + CALL clientGetDebt(util.VN_CURDATE()); UPDATE client c - JOIN bi.defaulters d ON d.client = c.id AND d.date = CURDATE() - JOIN config ON TRUE - LEFT JOIN account.`user` u ON u.id = c.id AND u.active - LEFT JOIN worker w ON w.id = u.id - LEFT JOIN recovery r ON r.clientFk = c.id AND r.finished IS NULL - LEFT JOIN payMethod pm ON pm.id = c.payMethodFk - LEFT JOIN tmp.risk rk ON rk.clientFk = c.id - SET c.isFreezed = TRUE, - d.frozened = CURDATE(), - u.active = FALSE - WHERE (d.amount > config.defaultersMaxAmount - AND rk.risk > 0) + JOIN bi.defaulters d ON d.client = c.id AND d.date = util.VN_CURDATE() + JOIN config ON TRUE + LEFT JOIN recovery r ON r.clientFk = c.id AND r.finished IS NULL + LEFT JOIN payMethod pm ON pm.id = c.payMethodFk + LEFT JOIN tmp.risk rk ON rk.clientFk = c.id + SET c.isFreezed = TRUE, + d.frozened = util.VN_CURDATE() + WHERE (d.amount > config.defaultersMaxAmount + AND rk.risk > 0) AND c.typeFk = 'normal' - AND r.id IS NULL - AND w.id IS NULL + AND r.id IS NULL AND (vIsRemittanced OR pm.code <> 'bankDraft'); - + DROP TEMPORARY TABLE tmp.clientGetDebt; END ;; DELIMITER ; @@ -51801,9 +48372,9 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; @@ -51816,19 +48387,19 @@ BEGIN * @param vDate Fecha maxima de los registros * @return tmp.risk */ - DECLARE vStarted DATETIME DEFAULT TIMESTAMPADD(DAY, -35, CURDATE()); + DECLARE vStarted DATETIME DEFAULT TIMESTAMPADD(DAY, -35, util.VN_CURDATE()); DECLARE vEnded DATETIME; - SET vEnded = TIMESTAMP(IFNULL(vDate, CURDATE()), '23:59:59'); + SET vEnded = TIMESTAMP(IFNULL(vDate, util.VN_CURDATE()), '23:59:59'); DROP TEMPORARY TABLE IF EXISTS tClientRisk; - CREATE TEMPORARY TABLE tClientRisk + CREATE TEMPORARY TABLE tClientRisk ENGINE = MEMORY SELECT cr.clientFk, SUM(cr.amount) amount FROM clientRisk cr JOIN tmp.clientGetDebt c ON c.clientFk = cr.clientFk GROUP BY cr.clientFk; - + INSERT INTO tClientRisk SELECT c.clientFk, SUM(r.amountPaid) FROM receipt r @@ -51843,7 +48414,7 @@ BEGIN WHERE t.receiptFk IS NULL AND t.status = 'ok' GROUP BY t.clientFk; - + INSERT INTO tClientRisk SELECT t.clientFk, totalWithVat FROM ticket t @@ -51859,7 +48430,7 @@ BEGIN FROM client c JOIN tClientRisk cr ON cr.clientFk = c.id GROUP BY c.id; - + DROP TEMPORARY TABLE tClientRisk; END ;; DELIMITER ; @@ -51871,13 +48442,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clientGetDebtDiary`(vClientFK INT, vCompanyFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `clientGetDebtDiary`(vClientFK INT, vCompanyFk INT) BEGIN /** * Devuelve el registro de deuda @@ -51892,33 +48463,33 @@ BEGIN DECLARE vIssued DATETIME; DECLARE vBalance DOUBLE DEFAULT 0.00; DECLARE cur CURSOR FOR - SELECT - created, - issued, + SELECT + created, + issued, ROUND(amount, 2) AS balance FROM invoiceOut - WHERE clientFk = vClientFk AND companyFk = vCompanyFk - UNION ALL - SELECT - created, - payed, + WHERE clientFk = vClientFk AND companyFk = vCompanyFk + UNION ALL + SELECT + created, + payed, ROUND(-1 * amountPaid, 2) AS balance - FROM receipt + FROM receipt WHERE clientFk = vClientFk AND companyFk = vCompanyFk ORDER BY issued, created; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + OPEN cur; - + proc: LOOP SET vDone = FALSE; - + FETCH cur INTO vCreated, vIssued, vBalance; IF vDate IS NULL THEN SET vDate=vIssued; END IF; - + IF vDone THEN LEAVE proc; END IF; @@ -51930,66 +48501,66 @@ BEGIN SET vDone = TRUE; END IF; END LOOP; - + CLOSE cur; - - SELECT - issued, - CAST(debtOut AS DECIMAL(10,2)) debtOut, + + SELECT + issued, + CAST(debtOut AS DECIMAL(10,2)) debtOut, CAST(debtIn AS DECIMAL(10,2)) debtIn, - ref, - companyFk, + ref, + companyFk, priority FROM - (SELECT - NULL AS issued, - SUM(amountUnpaid) AS debtOut, - NULL AS debtIn, - 'Saldo Anterior' AS ref, + (SELECT + NULL AS issued, + SUM(amountUnpaid) AS debtOut, + NULL AS debtIn, + 'Saldo Anterior' AS ref, companyFk, - 0 as priority - FROM - (SELECT SUM(amount) AS amountUnpaid, companyFk, 0 + 0 as priority + FROM + (SELECT SUM(amount) AS amountUnpaid, companyFk, 0 FROM invoiceOut - WHERE clientFk = vClientFK - AND issued < vDate - GROUP BY companyFk - - UNION ALL - - SELECT SUM(-1 * amountPaid), companyFk, 0 - FROM receipt - WHERE clientFk = vClientFK - AND payed < vDate - GROUP BY companyFk) AS transactions - GROUP BY companyFk - - UNION ALL - - SELECT - issued, - amount as debtOut, - NULL AS debtIn, + WHERE clientFk = vClientFK + AND issued < vDate + GROUP BY companyFk + + UNION ALL + + SELECT SUM(-1 * amountPaid), companyFk, 0 + FROM receipt + WHERE clientFk = vClientFK + AND payed < vDate + GROUP BY companyFk) AS transactions + GROUP BY companyFk + + UNION ALL + + SELECT + issued, + amount as debtOut, + NULL AS debtIn, ref, companyFk, - 1 - FROM invoiceOut - WHERE clientFk = vClientFK + 1 + FROM invoiceOut + WHERE clientFk = vClientFK AND issued >= vDate - UNION ALL - - SELECT - r.payed, - NULL as debtOut, - r.amountPaid, - r.invoiceFk, + UNION ALL + + SELECT + r.payed, + NULL as debtOut, + r.amountPaid, + r.invoiceFk, r.companyFk, - 0 + 0 FROM receipt r - WHERE r.clientFk = vClientFK - AND r.payed >= vDate) t - INNER JOIN `client` c ON c.id = vClientFK - HAVING debtOut <> 0 OR debtIn <> 0 + WHERE r.clientFk = vClientFK + AND r.payed >= vDate) t + INNER JOIN `client` c ON c.id = vClientFK + HAVING debtOut <> 0 OR debtIn <> 0 ORDER BY issued, priority DESC, debtIn; END ;; DELIMITER ; @@ -52001,38 +48572,38 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clientGreugeSpray`(IN vClientFk INT, IN onlyForHisOwner BOOL, IN vWorkerCode VARCHAR(3), IN vWithMana BOOLEAN) +CREATE DEFINER=`root`@`localhost` PROCEDURE `clientGreugeSpray`(IN vClientFk INT, IN onlyForHisOwner BOOL, IN vWorkerCode VARCHAR(3), IN vWithMana BOOLEAN) BEGIN DECLARE vGreuge DECIMAL(10,2); DECLARE vOwner INT; DECLARE vTotalSale INT; DECLARE vGreugeTypeFk INT DEFAULT 5; -- HERENCIA - DECLARE vGreugeTypeMana INT DEFAULT 3;-- Maná - DECLARE vMana DECIMAL(10,2); - - SELECT vn.clientGetMana(vClientFk) INTO vMana; - - IF vWithMana AND vMana THEN - + DECLARE vGreugeTypeMana INT DEFAULT 3;-- Maná + DECLARE vMana DECIMAL(10,2); + + SELECT vn.clientGetMana(vClientFk) INTO vMana; + + IF vWithMana AND vMana THEN + INSERT INTO vn.greuge( clientFk, description, - amount, - shipped, - greugeTypeFk) - VALUES( vClientFk, + amount, + shipped, + greugeTypeFk) + VALUES( vClientFk, 'Desasignación', - -1 * vMana, - CURDATE(), - vGreugeTypeMana); - - END IF; + -1 * vMana, + util.VN_CURDATE(), + vGreugeTypeMana); + + END IF; SELECT sum(amount) INTO vGreuge FROM vn.greuge @@ -52047,151 +48618,62 @@ BEGIN WHERE id = vClientFk; ELSE - + SELECT id INTO vOwner FROM vn.worker WHERE code = vWorkerCode COLLATE utf8_general_ci; END IF; - + DROP TEMPORARY TABLE IF EXISTS tmp.clientList; CREATE TEMPORARY TABLE tmp.clientList - SELECT DISTINCT t.clientFk, floor(cr.yearSale / 12) AS monthSale + SELECT DISTINCT t.clientFk, floor(cr.yearSale / 12) monthSale FROM vn.ticket t JOIN vn.client c ON c.id = t.clientFk - JOIN vn.manaSpellers ms ON ms.worker = c.salesPersonFk + JOIN vn.workerMana wm ON wm.workerFk = c.salesPersonFk JOIN vn.claimRatio cr ON cr.clientFk = c.id - WHERE ms.worker = IF(onlyForHisOwner, vOwner, ms.worker) - AND t.shipped >= TIMESTAMPADD(MONTH,-1,CURDATE()) + WHERE wm.workerFk = IF(onlyForHisOwner, vOwner, wm.workerFk) + AND t.shipped >= TIMESTAMPADD(MONTH,-1,util.VN_CURDATE()) AND c.id != vClientFk HAVING monthSale > 100; - + SELECT SUM(monthSale) INTO vTotalSale FROM tmp.clientList; INSERT INTO vn.greuge(clientFk, description, amount, shipped, greugeTypeFk) - SELECT clientFk, CONCAT('Cliente: ',vClientFk), vGreuge * monthSale / vTotalSale, CURDATE(), vGreugeTypeFk + SELECT clientFk, CONCAT('Cliente: ',vClientFk), vGreuge * monthSale / vTotalSale, util.VN_CURDATE(), vGreugeTypeFk FROM tmp.clientList UNION ALL - SELECT vClientFk, 'Reparto greuge', -vGreuge, CURDATE(), vGreugeTypeFk; - + SELECT vClientFk, 'Reparto greuge', -vGreuge, util.VN_CURDATE(), vGreugeTypeFk; + END IF; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `clientNewBorn_recalc__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clientNewBorn_recalc__`() -BLOCK1: BEGIN - - DECLARE vClientFk INT; - DECLARE vShipped DATE; - DECLARE vPreviousShipped DATE; - DECLARE vDone boolean; - DECLARE cur cursor for - SELECT clientFk, firstShipped - FROM bs.clientNewBorn; - DECLARE continue HANDLER FOR NOT FOUND SET vDone = TRUE; - SET vDone := FALSE; - TRUNCATE bs.clientNewBorn; - INSERT INTO bs.clientNewBorn - SELECT c.id, MAX(t.shipped), MAX(t.shipped) - FROM vn.client c - JOIN vn.ticket t on t.clientFk = c.id - WHERE t.shipped BETWEEN TIMESTAMPADD(YEAR, -1, CURDATE()) AND CURDATE() - GROUP BY c.id; - OPEN cur; - - LOOP1: LOOP - SET vDone := FALSE; - FETCH cur INTO vClientFk, vShipped; - - IF vDone THEN - CLOSE cur; - LEAVE LOOP1; - END IF; - - BLOCK2: BEGIN - DECLARE vCurrentShipped DATE; - DECLARE vDone2 boolean; - DECLARE cur2 CURSOR FOR - SELECT shipped - FROM vn.ticket - WHERE clientFk = vClientFk AND shipped <= CURDATE() - ORDER BY shipped DESC; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone2 = TRUE; - SET vDone2 := FALSE; - OPEN cur2; - - SET vPreviousShipped := vShipped; - LOOP2: LOOP - SET vDone2 := FALSE; - FETCH cur2 INTO vCurrentShipped; - - - IF DATEDIFF(vPreviousShipped,vCurrentShipped) > 365 THEN - - UPDATE bs.clientNewBorn - SET firstShipped = vPreviousShipped - WHERE clientFk= vClientFk; - - CLOSE cur2; - LEAVE LOOP2; - END IF; - SET vPreviousShipped := vCurrentShipped; - - IF vDone2 THEN - - UPDATE bs.clientNewBorn - SET firstShipped = vCurrentShipped - WHERE clientFk= vClientFk; - CLOSE cur2; - LEAVE LOOP2; - END IF; - - END LOOP LOOP2; - - END BLOCK2; - END LOOP LOOP1; -END BLOCK1 ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `clientPackagingOverstock` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clientPackagingOverstock`(vClientFk INT, vGraceDays INT ) +CREATE DEFINER=`root`@`localhost` PROCEDURE `clientPackagingOverstock`(vClientFk INT, vGraceDays INT ) BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.clientPackagingOverstock; CREATE TEMPORARY TABLE tmp.clientPackagingOverstock - ENGINE = MEMORY - SELECT itemFk, - sum(GotfromClient) - sum(SenttoClient) as devueltos, + ENGINE = MEMORY + SELECT itemFk, + sum(GotfromClient) - sum(SenttoClient) as devueltos, sum(InvoicedtoClient) - sum(InvoicedfromClient) as facturados, - LEAST( - sum(GotfromClient) - sum(SenttoClient), + LEAST( + sum(GotfromClient) - sum(SenttoClient), sum(InvoicedtoClient) - sum(InvoicedfromClient) ) as abonables FROM @@ -52199,14 +48681,14 @@ BEGIN SELECT t.*, IF(@month = month, 0, 1) monthEnd, @month := month - FROM + FROM ( - SELECT x.id as ticketFk, - date(x.shipped) as shipped, - x.itemFk, - IFNULL(cast(sum(x.InvoicedtoClient) as DECIMAL(10,0)),0) InvoicedtoClient, - IFNULL(cast(sum(x.InvoicedfromClient) as DECIMAL(10,0)),0) InvoicedfromClient, - IFNULL(cast(sum(x.SenttoClient) as DECIMAL(10,0)),0) SenttoClient, + SELECT x.id as ticketFk, + date(x.shipped) as shipped, + x.itemFk, + IFNULL(cast(sum(x.InvoicedtoClient) as DECIMAL(10,0)),0) InvoicedtoClient, + IFNULL(cast(sum(x.InvoicedfromClient) as DECIMAL(10,0)),0) InvoicedfromClient, + IFNULL(cast(sum(x.SenttoClient) as DECIMAL(10,0)),0) SenttoClient, IFNULL(cast(sum(x.GotfromClient) as DECIMAL(10,0)),0) GotfromClient, i.name as concept, x.refFk as invoice, @@ -52225,11 +48707,11 @@ BEGIN @month := 0 month, t.companyFk FROM sale s - JOIN ticket t on t.id = s.ticketFk - JOIN packaging p ON p.itemFk = s.itemFk + JOIN ticket t on t.id = s.ticketFk + JOIN packaging p ON p.itemFk = s.itemFk LEFT JOIN packageEquivalentItem pe ON pe.itemFk = s.itemFk WHERE t.clientFk = vClientFk - AND t.shipped > '2017-11-30' + AND t.shipped > '2017-11-30' AND p.isPackageReturnable UNION ALL SELECT NULL, @@ -52242,7 +48724,7 @@ BEGIN 'Histórico', NULL, NULL - + FROM ticketPackagingStartingStock tps LEFT JOIN packageEquivalentItem pe ON pe.itemFk = tps.itemFk WHERE tps.clientFk = vClientFk @@ -52253,13 +48735,13 @@ BEGIN IFNULL(pe.equivalentFk, p.itemFk) itemFk, NULL, NULL, - IF(tp.quantity > 0 AND t.shipped <= TIMESTAMPADD(DAY, - vGraceDays, CURDATE()), tp.quantity, NULL) SenttoClient, + IF(tp.quantity > 0 AND t.shipped <= TIMESTAMPADD(DAY, - vGraceDays, util.VN_CURDATE()), tp.quantity, NULL) SenttoClient, IF(tp.quantity < 0, -tp.quantity, NULL) GotfromClient, NULL AS refFk, NULL, t.companyFk - FROM ticketPackaging tp - JOIN ticket t on t.id = tp.ticketFk + FROM ticketPackaging tp + JOIN ticket t on t.id = tp.ticketFk JOIN packaging p ON p.id = tp.packagingFk LEFT JOIN packageEquivalentItem pe ON pe.itemFk = p.itemFk WHERE t.clientFk = vClientFk @@ -52269,6 +48751,7 @@ BEGIN GROUP BY x.id, x.itemFk ) t ORDER BY itemFk, shipped DESC + LIMIT 10000000000000000000 ) t2 GROUP BY itemFk; END ;; @@ -52283,11 +48766,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clientPackagingOverstockReturn`(vClientFk INT, vGraceDays INT ) +CREATE DEFINER=`root`@`localhost` PROCEDURE `clientPackagingOverstockReturn`(vClientFk INT, vGraceDays INT ) BEGIN DECLARE vNewTicket INT DEFAULT 0; @@ -52295,94 +48778,39 @@ BEGIN -- SET vGraceDays = GREATEST(vGraceDays, 90); CALL vn.clientPackagingOverstock(vClientFk,vGraceDays); - + SELECT id INTO vWarehouseFk FROM vn.warehouse WHERE hasConfectionTeam; - - CALL vn.ticketCreateWithUser( + + CALL vn.ticket_add( vClientFk - ,CURDATE() + ,util.VN_CURDATE() ,vWarehouseFk -- Algemesi ,442 -- Verdnatura ,NULL -- address ,NULL -- agencia ,NULL -- route - ,CURDATE() + ,util.VN_CURDATE() ,account.myUser_getId() + ,TRUE ,vNewTicket); - + INSERT INTO vn.sale(ticketFk, itemFk, quantity, concept, price) SELECT vNewTicket, cpo.itemFk, - cpo.abonables, i.longName, p.price FROM tmp.clientPackagingOverstock cpo JOIN vn.item i ON i.id = cpo.itemFk JOIN vn.packaging p ON p.itemFk = cpo.itemFk WHERE cpo.abonables > 0; - + INSERT INTO vn.ticketPackaging(ticketFk, packagingFk, quantity) SELECT vNewTicket, p.id, cpo.abonables FROM tmp.clientPackagingOverstock cpo JOIN vn.packaging p ON p.itemFk = cpo.itemFk WHERE cpo.abonables > 0; - + SELECT vNewTicket; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `clientRandomSelection` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clientRandomSelection`(vNumero INT) -BEGIN - DECLARE vClient INT; - - SET @vIndex := 0; - - DROP TEMPORARY TABLE IF EXISTS tmp.client; - - CREATE TEMPORARY TABLE tmp.client - SELECT io.clientFk, - FALSE as isSelected, - @vIndex := @vIndex + 1 id - FROM vn.client c - JOIN vn.invoiceOut io ON io.clientFk = c.id - JOIN vn.address a ON a.clientFk = c.id - JOIN vn.province p ON p.id = a.provinceFk - WHERE p.name = 'MADRID' - AND io.issued = '2019-01-31' - AND a.isDefaultAddress - AND c.name NOT LIKE 'TR %'; - - WHILE vNumero DO - - SET vClient = FLOOR(RAND() * @vIndex + 1); - - IF (SELECT isSelected FROM tmp.client WHERE id = vClient) = FALSE THEN - - UPDATE tmp.client - SET isSelected = TRUE - WHERE id = vClient; - - SET vNumero = vNumero - 1; - - END IF; - - END WHILE; - - SELECT * FROM tmp.client JOIN vn.client c ON c.id = clientFk; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -52395,11 +48823,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clientRemoveWorker`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `clientRemoveWorker`() BEGIN DECLARE vDone BOOL DEFAULT FALSE; DECLARE vClientFk INT; @@ -52420,9 +48848,9 @@ BEGIN JOIN vn.client c ON c.id = cd.id JOIN vn.province p ON p.id = c.provinceFk JOIN vn.country co ON co.id = p.countryFk - WHERE cd.Aviso = 'TERCER AVISO' AND - cp.clientFk IS NULL AND - co.country NOT IN ('Portugal','Francia','España exento') AND + WHERE cd.Aviso = 'TERCER AVISO' AND + cp.clientFk IS NULL AND + co.country NOT IN ('Portugal','Francia','España exento') AND c.salesPersonFk IS NOT NULL; OPEN rs; @@ -52431,7 +48859,7 @@ BEGIN CALL vn.clientGreugeSpray(vClientFk, TRUE, '',TRUE); UPDATE vn.client SET salesPersonFk = NULL WHERE id = vClientFk; INSERT INTO vn.clientLog (originFk, userFk, `action`, description) - VALUES (vClientFk, account.userGetId(), 'update', CONCAT('Se ha desasignado el cliente por que no ha comprado en 3 meses')); + VALUES (vClientFk, account.myUser_getId(), 'update', CONCAT('Se ha desasignado el cliente por que no ha comprado en 3 meses')); FETCH rs INTO vClientFk; END WHILE; CLOSE rs; @@ -52442,81 +48870,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `clientRemoveWorker__` */; +/*!50003 DROP PROCEDURE IF EXISTS `clientRisk_update` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clientRemoveWorker__`() -BEGIN - DECLARE done BOOL DEFAULT FALSE; - DECLARE vClientFk INT; - - DECLARE rs CURSOR FOR - SELECT c.clientFk - FROM tmp.clientGetDebt c - LEFT JOIN clientRisk r ON r.clientFk = c.clientFk - GROUP BY r.clientFk - HAVING SUM(IFNULL(r.amount,0)) = 0; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - - DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt; - CREATE TEMPORARY TABLE tmp.clientGetDebt - SELECT cd.id as clientFk - FROM bs.clientDied cd - LEFT JOIN vn.clientProtected cp ON cp.clientFk = cd.id - JOIN vn.client c ON c.id = cd.id - JOIN vn.province p ON p.id = c.provinceFk - JOIN vn.country co ON co.id = p.countryFk - WHERE cd.Aviso = 'TERCER AVISO' - AND cp.clientFk IS NULL - AND co.country NOT IN ('Portugal','Francia','España exento') - AND c.salesPersonFk IS NOT NULL; - - OPEN rs; - - FETCH rs INTO vClientFk; - - WHILE NOT done DO - - CALL vn.clientGreugeSpray(vClientFk, TRUE, '',TRUE); - UPDATE vn.client SET salesPersonFk = NULL WHERE id = vClientFk; - - INSERT INTO vn.clientLog (originFk, userFk, `action`, description) - VALUES (vClientFk, account.userGetId(), 'update', CONCAT('Se ha desasignado el cliente por que no ha comprado en 3 meses')); - - REPLACE bs.clientNewBorn(clientFk, shipped) - VALUES(vClientFk, CURDATE()); - - FETCH rs INTO vClientFk; - - END WHILE; - - CLOSE rs; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `clientRisk_update` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clientRisk_update`(vClientId INT, vCompanyId INT, vAmount DECIMAL(10,2)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `clientRisk_update`(vClientId INT, vCompanyId INT, vAmount DECIMAL(10,2)) BEGIN IF vAmount IS NOT NULL THEN @@ -52540,25 +48904,25 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `client_checkBalance`(IN vDateTo DATETIME, IN vIsConciliated BOOL) +CREATE DEFINER=`root`@`localhost` PROCEDURE `client_checkBalance`(IN vDateTo DATETIME, IN vIsConciliated BOOL) BEGIN DECLARE vDateFrom DATE; SET vDateTo = TIMESTAMP(vDateTo,'23:59:59'); SELECT util.firstDayOfYear(vDateTo) INTO vDateFrom; - SELECT s.nickname, c.id , c.accountingAccount , sub1.mysql , sub1.sage, sub1.mysql - sub1.sage diference, sub1.companyFk , c.name + SELECT s.nickname, c.id , c.accountingAccount , sub1.mysql , sub1.sage, sub1.mysql - sub1.sage diference, sub1.companyFk , c.name FROM client c JOIN payMethod pm ON pm.id = c.payMethodFk - JOIN( SELECT sub.companyFk, sub.clientFk, ROUND(SUM(sub.mysql),2) mysql, ROUND(SUM(sub.sage),2) sage + JOIN( SELECT sub.companyFk, sub.clientFk, ROUND(SUM(sub.mysql),2) mysql, ROUND(SUM(sub.sage),2) sage FROM( SELECT io.companyFk, io.clientFk, -io.amount mysql, 0 sage FROM invoiceOut io WHERE issued BETWEEN vDateFrom AND vDateTo - UNION ALL + UNION ALL SELECT r.companyFk, r.clientFk, r.amountPaid, 0 sage FROM receipt r WHERE payed BETWEEN vDateFrom AND vDateTo @@ -52569,15 +48933,15 @@ BEGIN JOIN client c ON c.accountingAccount = xd.SUBCTA WHERE xd.Fecha BETWEEN vDateFrom AND vDateTo )sub - GROUP BY companyFk, clientFk + GROUP BY companyFk, clientFk ) sub1 ON sub1.clientFk = c.id JOIN supplier s ON s.id = sub1.companyFk - JOIN company co ON co.id = sub1.companyFk - WHERE pm.outstandingDebt - AND co.code <> 'BLK' + JOIN company co ON co.id = sub1.companyFk + WHERE pm.outstandingDebt + AND co.code <> 'BLK' HAVING ABS(diference) > 0.05 ORDER BY c.name; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -52588,21 +48952,21 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `client_RandomList`(vNumber INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `client_RandomList`(vNumber INT) BEGIN DECLARE i INT DEFAULT 0; DECLARE c INT DEFAULT 0; DECLARE maxClientFk INT; - + DROP TEMPORARY TABLE IF EXISTS tmp.client; - + CREATE TEMPORARY TABLE tmp.`client` (id INT AUTO_INCREMENT, clientFk INT, @@ -52610,192 +48974,46 @@ BEGIN PRIMARY KEY(id), UNIQUE KEY clientFk (clientFk)) ENGINE = MEMORY; - + INSERT INTO tmp.client(clientFk) SELECT DISTINCT clientFk FROM vn.invoiceOut - WHERE issued > TIMESTAMPADD(MONTH, -2, CURDATE()); - + WHERE issued > TIMESTAMPADD(MONTH, -2, util.VN_CURDATE()); + SELECT max(id) INTO maxClientFk FROM tmp.client; - - + + WHILE i < vNumber DO - + SET i = i + 1; - + WHILE c = 0 DO - + SELECT id INTO c FROM tmp.client WHERE id = floor(RAND() * maxClientFk) + 1 AND isSelected = FALSE LIMIT 1; - + END WHILE; - + -- SELECT i, maxClientFk, c; - - UPDATE tmp.client - SET isSelected = TRUE + + UPDATE tmp.client + SET isSelected = TRUE WHERE id = c; - + SET c = 0; - + END WHILE; - + SELECT c.id, c.name FROM tmp.client tc JOIN vn.client c ON c.id = tc.clientFk WHERE isSelected ORDER BY clientFk; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `clonTravelComplete__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clonTravelComplete__`(IN `vTravelFk` INT, IN `vDateStart` DATE, IN `vDateEnd` DATE, IN `vRef` VARCHAR(255)) -BEGIN --- DEPRECATED usar travel_cloneWithEntries. jgallego -/* - * Clona un travel, junto con sus entradas y compras - * @param vTravelFk travel a clonar - * @param vDateStart fecha de salida del nuevo travel - * @param vDateEnd fecha de llegada del nuevo travel - * @param vRef referencia del nuevo travel -*/ - DECLARE vTravelNew INT; - DECLARE vEntryNew INT; - DECLARE vDone BOOLEAN DEFAULT FALSE; - DECLARE vAuxEntryFk INT; - DECLARE vRsEntry CURSOR FOR - SELECT e.id - FROM entry e - JOIN travel t ON t.id = e.travelFk - WHERE e.travelFk = vTravelFk; - - DECLARE vRsBuy CURSOR FOR - SELECT b.* - FROM buy b - JOIN entry e ON b.entryFk = e.id - WHERE e.travelFk = vTravelNew and b.entryFk = entryNew - ORDER BY e.id; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - DECLARE EXIT HANDLER FOR SQLEXCEPTION - BEGIN - ROLLBACK; - RESIGNAL; - END; - - START TRANSACTION; - - INSERT INTO travel (shipped,landed, warehouseInFk, warehouseOutFk, agencyFk, ref, isDelivered, isReceived, m3, kg) - SELECT vDateStart, vDateEnd,warehouseInFk, warehouseOutFk, agencyFk, vRef, isDelivered, isReceived, m3, kg - FROM travel - WHERE id = vTravelFk; - - SET vTravelNew = LAST_INSERT_ID(); - SET vDone = FALSE; - OPEN vRsEntry; - FETCH vRsEntry INTO vAuxEntryFk; - - WHILE NOT vDone DO - INSERT INTO entry (supplierFk, - ref, - isInventory, - isConfirmed, - isOrdered, - isRaid, - commission, - created, - evaNotes, - travelFk, - currencyFk, - companyFk, - gestDocFk, - invoiceInFk) - SELECT supplierFk, - ref, - isInventory, - isConfirmed, - isOrdered, - isRaid, - commission, - created, - evaNotes, - vTravelNew, - currencyFk, - companyFk, - gestDocFk, - invoiceInFk - FROM entry - WHERE id = vAuxEntryFk; - - SET vEntryNew = LAST_INSERT_ID(); - - INSERT INTO buy (entryFk, - itemFk, - quantity, - buyingValue, - packageFk, - stickers, - freightValue, - packageValue, - comissionValue, - packing, - `grouping`, - groupingMode, - location, - price1, - price2, - price3, - minPrice, - producer, - printedStickers, - isChecked, - weight) - SELECT vEntryNew, - itemFk, - quantity, - buyingValue, - packageFk, - stickers, - freightValue, - packageValue, - comissionValue, - packing, - `grouping`, - groupingMode, - location, - price1, - price2, - price3, - minPrice, - producer, - printedStickers, - isChecked, - weight - FROM buy - WHERE entryFk = vAuxEntryFk; - - FETCH vRsEntry INTO vAuxEntryFk; - END WHILE; - CLOSE vRsEntry; - COMMIT; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -52806,92 +49024,46 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `cmr_getByTicket`(vTicketFk INT) -BEGIN - - IF vTicketFk THEN - - IF (SELECT count(ticketFk) FROM vn.cmr WHERE ticketFk = vTicketFk) THEN - - SELECT id FROM vn.cmr WHERE ticketFk = vTicketFk; - - ELSE - - INSERT INTO vn.cmr(ticketFk, companyFk, addressFromFk, addressToFk, supplierFk) - SELECT vTicketFk, t.companyFk, a.id, t.addressFk, ag.supplierFk - FROM vn.ticket t - JOIN vn.agencyMode am ON am.id = t.agencyModeFk - JOIN vn.agency ag ON ag.id = am.agencyFk - JOIN vn.warehouse w ON w.id = t.warehouseFk - JOIN vn.address a ON a.id = w.addressFk - WHERE t.id = vTicketFk; - - SELECT LAST_INSERT_ID(); - - END IF; - - ELSE - - INSERT INTO vn.cmr(created) VALUES(NOW()); - - SELECT LAST_INSERT_ID(); - - END IF; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `cmr_new__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `cmr_new__`(vTicketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `cmr_getByTicket`(vTicketFk INT) BEGIN - IF vTicketFk THEN - - IF (SELECT count(ticketFk) FROM vn.cmr WHERE ticketFk = vTicketFk) THEN - - SELECT id FROM vn.cmr WHERE ticketFk = vTicketFk; - - ELSE + DECLARE vLanded DATE; - INSERT INTO vn.cmr(ticketFk, companyFk, addressFromFk, addressToFk, supplierFk) - SELECT vTicketFk, t.companyFk, a.id, t.addressFk, ag.supplierFk + SELECT DATE_ADD(util.VN_CURDATE(), INTERVAL landingDays DAY) INTO vLanded + FROM vn.cmrConfig; + + IF vTicketFk THEN + + IF (SELECT count(ticketFk) FROM vn.cmr WHERE ticketFk = vTicketFk) THEN + + SELECT id FROM vn.cmr WHERE ticketFk = vTicketFk; + + ELSE + + INSERT INTO vn.cmr(ticketFk, companyFk, addressFromFk, addressToFk, ead) + SELECT vTicketFk, t.companyFk, a.id, t.addressFk, vLanded FROM vn.ticket t - JOIN vn.agencyMode am ON am.id = t.agencyModeFk - JOIN vn.agency ag ON ag.id = am.agencyFk - JOIN vn.company cm ON cm.id = t.companyFk - JOIN vn.client c ON c.id = cm.clientFk - JOIN vn.address a ON a.clientFk = c.id AND a.isDefaultAddress - WHERE t.id = vTicketFk; - - SELECT LAST_INSERT_ID(); - - END IF; - + JOIN vn.warehouse w ON w.id = t.warehouseFk + JOIN vn.address a ON a.id = w.addressFk + WHERE t.id = vTicketFk; + + SELECT LAST_INSERT_ID(); + + END IF; + ELSE - - INSERT INTO vn.cmr(created) VALUES(NOW()); - - SELECT LAST_INSERT_ID(); - - END IF; - + + INSERT INTO vn.cmr(ead) VALUES(vLanded); + + SELECT LAST_INSERT_ID(); + + END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -52904,18 +49076,18 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `cmr_sendOverview`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `cmr_sendOverview`() BEGIN /** * Insert the monthly CMR summary in vn.mail on the 5th of each month. */ - + SET SESSION group_concat_max_len = 1000000; --- IF (DAY(CURDATE()) = 5) THEN +-- IF (DAY(util.VN_CURDATE()) = 5) THEN INSERT INTO vn.mail (receiver, replyTo, @@ -52932,7 +49104,7 @@ BEGIN Estimado cliente,
- A continuación le enviamos el resumen menual de CMR ',UPPER(MONTHNAME(CURDATE() - INTERVAL 1 MONTH)),' ', YEAR(CURDATE() - INTERVAL 1 MONTH), '.

+ A continuación le enviamos el resumen menual de CMR ',UPPER(MONTHNAME(util.VN_CURDATE() - INTERVAL 1 MONTH)),' ', YEAR(util.VN_CURDATE() - INTERVAL 1 MONTH), '.

Le rogamos que nos devuelva el resumen firmado a cmr@verdnatura.es


@@ -52941,7 +49113,7 @@ BEGIN CMR Ticket ' - , GROUP_CONCAT(' ', c.id, ' ', c.ticketFk, ' ' ORDER BY c.id SEPARATOR '' ), + , GROUP_CONCAT(' ', c.id, ' ', c.ticketFk, ' ' ORDER BY c.id SEPARATOR '' ), '

@@ -52951,62 +49123,18 @@ BEGIN JOIN vn.address a ON c.addressToFk = a.id JOIN vn.client c2 ON a.clientFk = c2.id WHERE c.state = 'Pending' - AND MONTH(c.created) = MONTH(CURDATE() - INTERVAL 1 MONTH) - AND YEAR(c.created) = YEAR(CURDATE() - INTERVAL 1 MONTH) + AND MONTH(c.created) = MONTH(util.VN_CURDATE() - INTERVAL 1 MONTH) + AND YEAR(c.created) = YEAR(util.VN_CURDATE() - INTERVAL 1 MONTH) AND c2.email IS NOT NULL -- No cogemos los CMRs dirigidos a 'Verdnatura' GROUP BY c2.id; -- Actualizamos el estado a 'Enviado' UPDATE vn.cmr c SET c.state = 'Sent' - WHERE c.state = 'Pending' - AND MONTH(c.created) = MONTH(CURDATE() - INTERVAL 1 MONTH) - AND YEAR(c.created) = YEAR(CURDATE() - INTERVAL 1 MONTH); + WHERE c.state = 'Pending' + AND MONTH(c.created) = MONTH(util.VN_CURDATE() - INTERVAL 1 MONTH) + AND YEAR(c.created) = YEAR(util.VN_CURDATE() - INTERVAL 1 MONTH); -- END IF; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `collectionOrTicket_printSticker` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collectionOrTicket_printSticker`(vParam INT, vSectorFk INT) -BEGIN - - /*Imprime una etiqueta amarilla a partir de una colección o ticket - * - * @param vParam colección o ticket a imprimir - * @param vSectorFk id del sector - */ - - DECLARE vLabelReport INT; - - SELECT labelReportFk INTO vLabelReport - FROM sector - WHERE id = vSectorFk; - - IF vLabelReport THEN - - INSERT INTO ticketTrolley(ticket, labelCount) - SELECT ticketFk, 1 - FROM ticketCollection - WHERE collectionFk = vParam OR ticketFK = vParam - ON DUPLICATE KEY UPDATE labelCount = labelCount + 1; - - INSERT INTO printServerQueue(labelReportFk, param1, workerFk) - SELECT vLabelReport, vParam, getUser(); - - END IF; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -53017,85 +49145,67 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collectionPlacement_get`(vParamFk INT(11), vIsPicker bool) +CREATE DEFINER=`root`@`localhost` PROCEDURE `collectionPlacement_get`(vParamFk INT(11), vIsPicker bool) BEGIN - - /* Devuelve el listado de ubicaciones a las que hay que ir para preparar una colección o ticket - * - * @param vParamFk Identificador de vn.collection o Identificador de vn.ticket - * @param vIsPicker Booleano para distinguer el sacador del revisador - */ +/** Devuelve el listado de ubicaciones a las que hay que ir para preparar una colección o ticket + * + * @param vParamFk Identificador de vn.collection o Identificador de vn.ticket + * @param vIsPicker Booleano para distinguer el sacador del revisador + */ DECLARE vCalcFk INT; - DECLARE vWarehouseFk INT; - DECLARE vWarehouseAliasFk INT; - DECLARE vCurrentYear INT DEFAULT YEAR(NOW()); - - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - ENGINE = MEMORY - SELECT 00000000 as ticketFk, - 00000000 as saleFk, - 00000000 as itemFk, - FALSE as isStowaway, - 0 as quantity; - - INSERT INTO tmp.sale(ticketFk, saleFk, itemFk, isStowaway) - SELECT s.ticketFk, s.id, s.itemFk, FALSE - FROM vn.ticketCollection tc - -- JOIN vn.collection c ON c.id = tc.collectionFk - JOIN vn.sale s ON s.ticketFk = tc.ticketFk - -- JOIN vn.item i ON i.id = s.itemFk - WHERE tc.collectionFk = vParamFk - -- AND (IFNULL(i.itemPackingTypeFk,c.itemPackingTypeFk) = c.itemPackingTypeFk OR ISNULL(c.itemPackingTypeFk)) - UNION ALL - SELECT s.ticketFk, s.id, s.itemFk, FALSE - FROM vn.sale s - WHERE s.ticketFk = vParamFk; - - SELECT t.warehouseFk, w.aliasFk - INTO vWarehouseFk, vWarehouseAliasFk - FROM vn.ticket t + DECLARE vWarehouseFk INT; + DECLARE vCurrentYear INT DEFAULT YEAR(util.VN_NOW()); + + DROP TEMPORARY TABLE IF EXISTS tmp.sale; + + CREATE TEMPORARY TABLE tmp.sale + ENGINE = MEMORY + SELECT s.ticketFk, s.id saleFk, s.itemFk, s.quantity + FROM vn.ticketCollection tc + JOIN vn.sale s ON s.ticketFk = tc.ticketFk + WHERE tc.collectionFk = vParamFk + UNION ALL + SELECT s.ticketFk, s.id, s.itemFk, s.quantity + FROM vn.sale s + WHERE s.ticketFk = vParamFk; + + + SELECT t.warehouseFk + INTO vWarehouseFk + FROM vn.ticket t JOIN tmp.sale ts ON ts.ticketFk = t.id - JOIN vn.warehouse w ON w.id = t.warehouseFk - LIMIT 1; - + JOIN vn.warehouse w ON w.id = t.warehouseFk + LIMIT 1; + CALL cache.visible_refresh(vCalcFk,FALSE,vWarehouseFk); - - UPDATE tmp.sale ts - JOIN ( SELECT itemFk, sum(visible) as visible - FROM vn.itemShelvingStock iss - JOIN vn.warehouse w ON w.id = iss.warehouseFk - WHERE w.aliasFk = vWarehouseAliasFk - GROUP BY iss.itemFk ) iss ON iss.itemFk = ts.itemFk - SET ts.quantity = iss.visible; - - DROP TEMPORARY TABLE IF EXISTS tmp.sale2; - CREATE TEMPORARY TABLE tmp.sale2 - ENGINE = MEMORY + + DROP TEMPORARY TABLE IF EXISTS tmp.sale2; + CREATE TEMPORARY TABLE tmp.sale2 + ENGINE = MEMORY SELECT * FROM tmp.sale; - + DROP TEMPORARY TABLE IF EXISTS tmp.`grouping`; - CREATE TEMPORARY TABLE tmp.`grouping` + CREATE TEMPORARY TABLE tmp.`grouping` (INDEX(itemFk)) - ENGINE = MEMORY + ENGINE = MEMORY SELECT b.itemFk, - CASE b.groupingMode - WHEN 0 THEN 1 + CASE b.groupingMode + WHEN 0 THEN 1 WHEN 2 THEN b.packing ELSE b.`grouping` - END AS `grouping` + END AS `grouping` FROM buy b JOIN cache.last_buy lb ON lb.buy_id = b.id WHERE lb.warehouse_id = vWarehouseFk GROUP BY b.itemFk; - + DROP TEMPORARY TABLE IF EXISTS tmp.grouping2; CREATE TEMPORARY TABLE tmp.grouping2 ENGINE MEMORY @@ -53105,473 +49215,96 @@ BEGIN CREATE TEMPORARY TABLE tmp.salePlacementList ENGINE MEMORY - SELECT ts.saleFk, + SELECT ts.saleFk, ts.itemFk, CAST(0 AS DECIMAL(10,0)) as saleOrder, - IF(ts.isStowaway, - 100000, IF(ish.visible > 0 OR iss.id, 1, 100000)) * p.pickingOrder as `order`, - IF(iss.id, TO_SECONDS(TIMESTAMPADD(YEAR,-vCurrentYear,iss.created)), TO_SECONDS(TIMESTAMPADD(YEAR,- year(ish.created),ish.created)) /* + TO_SECONDS(TIMESTAMPADD(YEAR,-vCurrentYear,NOW())) */) as priority, - CONCAT( - IF( iss.id, - CONCAT('< ', IFNULL(wk.`code`, '---'),' > '), - ''), - p.`code`) COLLATE utf8_general_ci as placement , - sh.priority shelvingPriority, + IF(ish.visible > 0 OR iss.id, 1, 100000) * p.pickingOrder as `order`, + IF(iss.id, TO_SECONDS(TIMESTAMPADD(YEAR,-vCurrentYear,iss.created)), TO_SECONDS(TIMESTAMPADD(YEAR,- year(ish.created),ish.created)) /* + TO_SECONDS(TIMESTAMPADD(YEAR,-vCurrentYear,util.VN_NOW())) */ ) as priority, + CONCAT( + IF( iss.id, + CONCAT('< ', IFNULL(wk.`code`, '---'),' > '), + ''), + p.`code`) COLLATE utf8_general_ci as placement, + sh.priority shelvingPriority, sh.code COLLATE utf8_general_ci as shelving, ish.created, ish.visible, IFNULL(IF(sc.isPreviousPreparedByPacking, ish.packing, g.`grouping`),1) as `grouping`, - sc.isPreviousPrepared, - iss.id as itemShelvingSaleFk, - ts.ticketFk - ,iss.id - , st.saleFk as salePreviousPrepared - , iss.userFk - FROM tmp.sale ts - LEFT JOIN (SELECT DISTINCT saleFk + sc.isPreviousPrepared, + iss.id as itemShelvingSaleFk, + ts.ticketFk + ,iss.id + , st.saleFk as salePreviousPrepared + , iss.userFk + , ts.quantity + FROM tmp.sale ts + LEFT JOIN (SELECT DISTINCT saleFk FROM vn.saleTracking st - JOIN vn.state s ON s.id = st.stateFk + JOIN vn.state s ON s.id = st.stateFk WHERE st.isChecked AND s.semaphore = 1) st ON st.saleFk = ts.saleFk - JOIN vn.itemShelving ish ON ish.itemFk = ts.itemFk - JOIN vn.shelving sh ON sh.code = ish.shelvingFk - JOIN vn.parking p ON p.id = sh.parkingFk - JOIN vn.sector sc ON sc.id = p.sectorFk - JOIN vn.warehouse w ON w.id = sc.warehouseFk - LEFT JOIN tmp.`grouping` g ON g.itemFk = ts.itemFk - LEFT JOIN vn.itemShelvingSale iss ON iss.saleFk = ts.saleFk AND iss.itemShelvingFk = ish.id - LEFT JOIN vn.worker wk ON wk.id = iss.userFk - WHERE w.aliasFk = vWarehouseAliasFk - AND NOT sc.isHideForPickers - HAVING (iss.id AND st.saleFk) OR salePreviousPrepared IS NULL - ; - - + JOIN vn.itemShelving ish ON ish.itemFk = ts.itemFk + JOIN vn.shelving sh ON sh.code = ish.shelvingFk + JOIN vn.parking p ON p.id = sh.parkingFk + JOIN vn.sector sc ON sc.id = p.sectorFk + JOIN vn.warehouse w ON w.id = sc.warehouseFk + LEFT JOIN tmp.`grouping` g ON g.itemFk = ts.itemFk + LEFT JOIN vn.itemShelvingSale iss ON iss.saleFk = ts.saleFk AND iss.itemShelvingFk = ish.id + LEFT JOIN vn.worker wk ON wk.id = iss.userFk + WHERE w.id = vWarehouseFk + AND NOT sc.isHideForPickers + HAVING (iss.id AND st.saleFk) OR salePreviousPrepared IS NULL; + DROP TEMPORARY TABLE IF EXISTS tmp.salePlacementList_2; CREATE TEMPORARY TABLE tmp.salePlacementList_2 ENGINE MEMORY - SELECT saleFk, priority as olderPriority + SELECT saleFk, priority as olderPriority FROM (SELECT saleFk, priority FROM tmp.salePlacementList - ORDER BY IF(isPreviousPrepared,2,1), - IF(visible > 0 OR itemShelvingSaleFk,1,2), - IFNULL(shelvingPriority,0) DESC, + ORDER BY isPreviousPrepared DESC, + itemShelvingSaleFk IS NULL DESC, + visible >= quantity DESC, + visible > 0 DESC, + IFNULL(shelvingPriority,0) DESC, priority + LIMIT 10000000000000000000 ) sub - GROUP BY saleFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.salePlacementList_3; + GROUP BY saleFk; + + DROP TEMPORARY TABLE IF EXISTS tmp.salePlacementList_3; CREATE TEMPORARY TABLE tmp.salePlacementList_3 ENGINE MEMORY - SELECT s1.saleFk, `order`as saleOrder + SELECT s1.saleFk, `order`as saleOrder FROM tmp.salePlacementList s1 - JOIN tmp.salePlacementList_2 s2 ON s2.saleFk = s1.saleFk AND s2.olderPriority = s1.priority; - - UPDATE tmp.salePlacementList s1 + JOIN tmp.salePlacementList_2 s2 ON s2.saleFk = s1.saleFk AND s2.olderPriority = s1.priority; + + UPDATE tmp.salePlacementList s1 JOIN tmp.salePlacementList_3 s3 ON s3.saleFk = s1.saleFk - SET s1.saleOrder = s3.saleOrder; - /* - -- Anula el orden de antigüedad y ordena por ubicación - UPDATE tmp.salePlacementList - SET saleOrder = `order`;*/ - - SELECT * - FROM tmp.salePlacementList - ORDER BY saleOrder, - IF(isPreviousPrepared,2,1), - IF(itemShelvingSaleFk,1,2), - shelvingPriority DESC, -- PAK 05/11/2021 - IF(vIsPicker, visible = 0, TRUE), - priority; - + SET s1.saleOrder = s3.saleOrder; + /* + -- Anula el orden de antigüedad y ordena por ubicación + UPDATE tmp.salePlacementList + SET saleOrder = `order`;*/ + + SELECT spl.* + FROM tmp.salePlacementList spl + JOIN vn.sale s ON s.id = spl.saleFk + ORDER BY saleOrder, + isPreviousPrepared DESC, + itemShelvingSaleFk DESC, + IF(vIsPicker, visible = 0, TRUE), + s.quantity <= spl.visible DESC, + shelvingPriority DESC, -- PAK 05/11/2021 + priority; + DROP TEMPORARY TABLE tmp.sale, - tmp.sale2, - tmp.`grouping`, - tmp.grouping2, - tmp.salePlacementList_2, - tmp.salePlacementList_3; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `collectionSale_get__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collectionSale_get__`(vParam INT) -BEGIN - - - /*@deprecated: utilizar sale_getFromTicketOrCollection*/ - - DECLARE vItemPackingTypeFk VARCHAR(1); - DECLARE vCollectionFk INT; - DECLARE vTicketFk INT; - - IF (SELECT COUNT(*) FROM vn.ticket WHERE id = vParam AND id > 2000000) THEN - - SET vTicketFk = vParam; - - SELECT itemPackingTypeFk INTO vItemPackingTypeFk - FROM tmp.workerPackingType wpt - WHERE wpt.workerFk = account.myUser_getId(); - - SELECT c.id INTO vCollectionFk - FROM vn.collection c - JOIN vn.ticketCollection tc ON tc.collectionFk = c.id - WHERE tc.ticketFk = vTicketFk - ORDER BY c.itemPackingTypeFk = vItemPackingTypeFk DESC - LIMIT 1; - - IF IFNULL(vCollectionFk,0) = 0 THEN -CALL util.debugAdd("vCollectionFk",vn.getUser()); - INSERT INTO vn.collection(workerFk, itemPackingTypeFk) - VALUES(vn.getUser(), vItemPackingTypeFk); - - SET vCollectionFk = LAST_INSERT_ID(); - - INSERT INTO vn.ticketCollection (collectionFk, ticketFk) - VALUES (vCollectionFk, vParam); - - END IF; - - ELSE - - SET vCollectionFk = vParam; - - END IF; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticket; - CREATE TEMPORARY TABLE tmp.ticket - SELECT tc.ticketFk id, clientFk, tc.ticketFk as showTicketFk - FROM vn.ticketCollection tc - JOIN vn.ticket t ON t.id = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND IFNULL(vTicketFk, t.id) = t.id; - - - DROP TEMPORARY TABLE IF EXISTS tmp.ticket3; - CREATE TEMPORARY TABLE tmp.ticket3 - SELECT * FROM tmp.ticket; - - SELECT showTicketFk ticketFk, - s.id as saleFk, - s.itemFk, - s.quantity, - i.longName, - i.size, - s.reserved, - MAX(IF(st.semaphore <=> 1, TRUE, FALSE)) as isPreviousPrepared, - MAX(IF(st.semaphore <=> 2, TRUE, FALSE)) as isPrepared, - MAX(IF(st.semaphore <=> 3, TRUE, FALSE)) as isControlled, - ic.color, - ip.productor, - s.discount, - s.price, - i.stems, - i.category, - o.code AS origin, - t.clientFk, - s.originalQuantity, - TRIM(CONCAT( - LPAD(s.concept,30,' '), ' ', - RPAD(IFNULL(i.size,''),5,' ') - ) - ) as line1, - '' cel1, - TRIM(CONCAT(LPAD(IFNULL(ip.productor,''),30,' '), ' ',LPAD(IFNULL(o.code,''),4,' '))) as line2, - IF(s.quantity MOD b.packing, - CONCAT(CAST(s.quantity/b.`grouping` AS decimal(10,0)),' x ',b.`grouping`), - CONCAT(CAST(s.quantity / b.packing AS DECIMAL(10,0)),' pack de ',b.packing)) cel2, - TRIM(CONCAT(ic.color, IF(MAX(IF(st.semaphore <=> 1, TRUE, FALSE)) AND t.id != t.showTicketFk, CONCAT(' [ TICKET ',t.id,' ] '),''), IFNULL(LPAD(st.parkingCode,40,' '),''))) as line3, - '' cel3, - s.isAdded, - str.originalQuantity as startQuantity, -- eliminar cuando tengamos la nueva apk - c.workerFk, - IFNULL(SUM(iss.quantity),0) as pickedQuantity - FROM vn.sale s - JOIN tmp.ticket t ON t.id = s.ticketFk - JOIN vn.ticket tt ON tt.id = t.id - JOIN cache.last_buy lb ON lb.item_id = s.itemFk AND lb.warehouse_id = tt.warehouseFk - JOIN vn.buy b ON b.id = lb.buy_id - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.ticketCollection tc ON tc.ticketFk = t.id - JOIN vn.collection c ON c.id = tc.collectionFk - LEFT JOIN vn.saleTracking str ON str.saleFk = s.id AND str.isChecked = 1 - LEFT JOIN vn.itemShelvingSale iss ON iss.saleFk = s.id - LEFT JOIN vn.state st ON st.id = str.stateFk - LEFT JOIN vn.itemColor ic ON ic.itemFk = s.itemFk - LEFT JOIN vn.itemProductor ip ON ip.itemFk = s.itemFk - LEFT JOIN vn.origin o ON o.id = i.originFk - LEFT JOIN (SELECT st.saleFk, p.`code` as parkingCode - FROM vn.saleTracking st - JOIN vn.state s ON s.id = st.stateFk - JOIN vn.sale sa ON sa.id = st.saleFk - JOIN tmp.ticket3 t ON t.id = sa.ticketFk - JOIN vn.ticketParking tp ON tp.ticketFk = sa.ticketFk - JOIN vn.parking p ON p.id = tp.parkingFk - WHERE st.isChecked - AND s.semaphore = 1 - GROUP BY st.saleFk) st ON st.saleFk = s.id - WHERE (i.itemPackingTypeFk = c.itemPackingTypeFk OR ISNULL(c.itemPackingTypeFk)) - AND tc.collectionFk = vCollectionFk - GROUP BY s.id - - ; - - DROP TEMPORARY TABLE tmp.ticket; - DROP TEMPORARY TABLE tmp.ticket3; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `collectionSticker_print` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collectionSticker_print`(vCollectionFk INT, vSectorFk INT) -BEGIN - - /*@deprecated :utilizar collectionOrTicket_printSticker*/ - - DECLARE vLabelReport INT; - - SELECT labelReportFk INTO vLabelReport - FROM vn.sector - WHERE id = vSectorFk; - - IF vLabelReport THEN - - INSERT INTO vn.ticketTrolley(ticket, labelCount) - SELECT ticketFk, 1 - FROM vn.ticketCollection - WHERE collectionFk = vCollectionFk - ON DUPLICATE KEY UPDATE labelCount = labelCount + 1; - - INSERT INTO vn.printServerQueue(labelReportFk, param1, workerFk) - SELECT vLabelReport, vCollectionFk, getUser(); - - END IF; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `collectionSticker_print__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collectionSticker_print__`(vCollectionFk INT, vSectorFk INT) -BEGIN - - DECLARE vLabelReport INT; - - UPDATE vn.ticket t - JOIN vn.ticketCollection tc ON tc.ticketFk = t.id - SET t.notes = CONCAT('COL ',vCollectionFk,'-',tc.`level`) - WHERE tc.collectionFk = vCollectionFk; - - SELECT labelReport INTO vLabelReport - FROM vn.sector - WHERE id = vSectorFk; - - IF vLabelReport THEN - - INSERT INTO vn.ticketTrolley(ticket, labelCount) - SELECT ticketFk, 1 - FROM vn.ticketCollection - WHERE collectionFk = vCollectionFk - ON DUPLICATE KEY UPDATE labelCount = labelCount + 1; - /* - INSERT INTO vn.printServerQueue(reportFk, param1, workerFk,param2) - SELECT vLabelReport, tc.ticketFk, getUser(), tt.labelCount - FROM vn.ticketCollection tc - LEFT JOIN vn.ticketTrolley tt ON tt.ticket = tc.ticketFk - WHERE collectionFk = vCollectionFk; - */ - INSERT INTO vn.printServerQueue(reportFk, param1, workerFk) - SELECT vLabelReport, vCollectionFk, getUser(); - - END IF; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `collectionTicket_get` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collectionTicket_get`(vParamFk INT) -BEGIN - - DECLARE vCollectionFk INT; - DECLARE vTicketFk INT; - DECLARE vAlertLevel INT; - DECLARE vItemPackingTypeFk VARCHAR(1); - - -- Si los sacadores son los de pruebas, pinta los colores - SELECT id, itemPackingTypeFk - INTO vCollectionFk, vItemPackingTypeFk - FROM vn.collection - WHERE id = vParamFk; - - -- Sergio debug insertado el 13-10-2021 - CALL util.debugAdd("collectionTicket_get",vn.getUser()); - - IF !(vItemPackingTypeFk <=> 'V') THEN - - IF vCollectionFk THEN - - SELECT t.id ticketFk, - cc.code `level`, - am.name as agencyName, - t.warehouseFk , - w.id as salesPersonFk, - IFNULL(tob.description,'')as observaciones - FROM vn.ticket t - JOIN vn.ticketCollection tc ON t.id = tc.ticketFk - LEFT JOIN vn.collection c2 ON c2.id = tc.collectionFk -- PAK 23/12/21 - LEFT JOIN vn.collectionColors cc - ON cc.wagon = tc.wagon - AND cc.shelve = tc.`level` - AND cc.trainFk = c2.trainFk -- PAK 23/12/21 - LEFT JOIN vn.zone z ON z.id = t.zoneFk - LEFT JOIN vn.agencyMode am ON am.id = z.agencyModeFk - LEFT JOIN vn.client c ON c.id = t.clientFk - LEFT JOIN vn.worker w ON w.id = c.salesPersonFk - LEFT JOIN vn.ticketObservation tob ON tob.ticketFk = t.id AND tob.observationTypeFk = 1 - WHERE tc.collectionFk = vCollectionFk; - - ELSE - - SET vTicketFk = vParamFk; - - SELECT t.id ticketFk, - cc.code `level`, - am.name as agencyName, - t.warehouseFk , - w.id as salesPersonFk, - IFNULL(tob.description,'')as observaciones - FROM vn.ticket t - JOIN vn.ticketCollection tc ON t.id = tc.ticketFk - JOIN vn.collection c2 ON c2.id = tc.collectionFk -- PAK 23/12/21 - LEFT JOIN vn.collectionColors cc - ON cc.wagon = tc.wagon - AND cc.shelve = tc.`level` - AND cc.trainFk = c2.trainFk -- PAK 23/12/21 - LEFT JOIN vn.zone z ON z.id = t.zoneFk - LEFT JOIN vn.agencyMode am ON am.id = z.agencyModeFk - LEFT JOIN vn.client c ON c.id = t.clientFk - LEFT JOIN vn.worker w ON w.id = c.salesPersonFk - LEFT JOIN vn.ticketObservation tob ON tob.ticketFk = t.id AND tob.observationTypeFk = 1 - WHERE t.id = vTicketFk - LIMIT 1; - - SELECT s.alertLevel INTO vAlertLevel - FROM vn.state s - JOIN vn.ticketStateToday tst ON tst.state = s.id - WHERE tst.ticket = vTicketFk - LIMIT 1; - - IF vAlertLevel < 2 THEN - - CALL vn.ticketStateUpdate(vTicketFk, 'ON_CHECKING'); - - END IF; - - END IF; - - ELSE - - IF vCollectionFk THEN - - SELECT t.id ticketFk, - CONCAT(SUBSTRING('ABCDEFGH',tc.wagon, 1),'-',tc.`level` ) `level`, - am.name as agencyName, - t.warehouseFk , - w.id as salesPersonFk, - IFNULL(tob.description,'')as observaciones - FROM vn.ticket t - JOIN vn.ticketCollection tc ON t.id = tc.ticketFk - LEFT JOIN vn.zone z ON z.id = t.zoneFk - LEFT JOIN vn.agencyMode am ON am.id = z.agencyModeFk - LEFT JOIN vn.client c ON c.id = t.clientFk - LEFT JOIN vn.worker w ON w.id = c.salesPersonFk - LEFT JOIN vn.ticketObservation tob ON tob.ticketFk = t.id AND tob.observationTypeFk = 1 - WHERE tc.collectionFk = vCollectionFk; - - ELSE - - SET vTicketFk = vParamFk; - - SELECT t.id ticketFk, - CONCAT(SUBSTRING('ABCDEFGH',tc.wagon, 1),'-',tc.`level` ) `level`, - am.name as agencyName, - t.warehouseFk , - w.id as salesPersonFk, - IFNULL(tob.description,'')as observaciones - FROM vn.ticket t - JOIN vn.ticketCollection tc ON t.id = tc.ticketFk - LEFT JOIN vn.zone z ON z.id = t.zoneFk - LEFT JOIN vn.agencyMode am ON am.id = z.agencyModeFk - LEFT JOIN vn.client c ON c.id = t.clientFk - LEFT JOIN vn.worker w ON w.id = c.salesPersonFk - LEFT JOIN vn.ticketObservation tob ON tob.ticketFk = t.id AND tob.observationTypeFk = 1 - WHERE t.id = vTicketFk - LIMIT 1; - - SELECT s.alertLevel INTO vAlertLevel - FROM vn.state s - JOIN vn.ticketStateToday tst ON tst.state = s.id - WHERE tst.ticket = vTicketFk - LIMIT 1; - - IF vAlertLevel < 2 THEN - - CALL vn.ticketStateUpdate(vTicketFk, 'ON_CHECKING'); - - END IF; - - END IF; - - END IF; - + tmp.sale2, + tmp.`grouping`, + tmp.salePlacementList, + tmp.grouping2, + tmp.salePlacementList_2, + tmp.salePlacementList_3; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -53582,129 +49315,37 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_addItem`(vItemFk INT, vQuantity INT, vTicketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `collection_addItem`(vItemFk INT, vQuantity INT, vTicketFk INT) BEGIN DECLARE vConcept VARCHAR(50); DECLARE itemFk INT; DECLARE vSaleFk INT default 0; - + DECLARE vDescription VARCHAR(50); DECLARE vItemName VARCHAR(50); - + SELECT barcodeToItem(vItemFk) INTO itemFk; - - SELECT CONCAT(vn.getUser()," ",DATE_FORMAT(NOW( ), "%H:%i" )," ",i.name) INTO vConcept FROM vn.item i WHERE i.id = itemFk; - + + SELECT CONCAT(vn.getUser()," ",DATE_FORMAT(util.VN_NOW( ), "%H:%i" )," ",i.name) INTO vConcept FROM vn.item i WHERE i.id = itemFk; + SELECT name INTO vItemName FROM vn.item WHERE id = vItemFk; SELECT CONCAT("Añadido articulo ", vItemName, " cantidad:", vQuantity) INTO vDescription; - - INSERT INTO vn.ticketLog (originFk, userFk, action , description) + + INSERT INTO vn.ticketLog (originFk, userFk, action , description) VALUES(vTicketFk, vn.getUser(), 'update', vDescription); - + INSERT INTO vn.sale (itemFk,ticketFk,concept,quantity,isAdded) VALUES (itemFk,vTicketFk,vConcept,vQuantity,1); SELECT last_insert_id() INTO vSaleFk; - + CALL vn.sale_calculateComponent(vSaleFk, null); - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `collection_checkFullyControlled` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_checkFullyControlled`(vWorkerFk INT, vCollectionFk INT ) -BEGIN -/** - * Comprueba que no hay ningún ticket pendiente de revisar de alguna colección del trabajador haya revisado ya - * @param vWorkerFk id del user - * @param vCollectionFk número de colección escaneada - * - */ - - SELECT tc.collectionFk - FROM ticket t - JOIN sale s ON s.ticketFk = t.id - JOIN ticketCollection tc ON tc.ticketFk = t.id - JOIN (SELECT tc.collectionFk - FROM ticketState ts - JOIN ticketCollection tc ON tc.ticketFk = ts.ticketFk - WHERE ts.workerFk = vWorkerFk - AND tc.collectionFk <> vCollectionFk - AND tc.created >= CURDATE() - GROUP BY tc.collectionFk - )sub ON sub.collectionFk = tc.collectionFk - JOIN ticketState ts ON ts.ticketFk = t.id - WHERE t.shipped >= CURDATE() - AND ts.code IN ('ON_PREPARATION', 'PREPARED', 'PREVIOUS_PREPARATION', 'OK PREVIOUS') - AND s.quantity <>0 - - LIMIT 1; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `collection_faults` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_faults`( - vShelvingFk VARCHAR(10), - vQuantity INT, - vItemFk INT) -BEGIN - DECLARE vQuantityTotal INT DEFAULT 0; - DECLARE vshelve VARCHAR(2); - DECLARE vdeep INT(11); - DECLARE vpriority INT(11); - DECLARE vgrouping SMALLINT(5); - DECLARE vpacking INT(11); - DECLARE vpackagingFk VARCHAR(10); - DECLARE vlevel VARCHAR(45); - DECLARE vuserFk INT(10); - - - SELECT SUM(quantity),shelve,deep,priority,`grouping`,packing,packagingFk,`level`,userFk - INTO vQuantityTotal,vshelve,vdeep,vpriority,vgrouping,vpacking,vpackagingFk,vlevel,vuserFk - FROM vn.itemShelving - WHERE shelvingFk = vShelvingFk COLLATE utf8_unicode_ci AND itemFk = vItemFk - GROUP BY itemFk; - - SELECT vQuantityTotal - vQuantity INTO vQuantityTotal; - - DELETE FROM vn.itemShelving WHERE shelvingFk = vShelvingFk COLLATE utf8_unicode_ci AND itemFk = vItemFk; - - INSERT INTO vn.itemShelving (itemFk, shelvingFk,shelve,deep,quantity,visible,available,priority,`grouping`,packing,packagingFk,`level`,userFk ) - VALUES (vItemFk,vShelvingFk,vshelve,vdeep,vQuantityTotal,vQuantityTotal,vQuantityTotal,vpriority,vgrouping,vpacking,vpackagingFk,vlevel,vuserFk ); - - SELECT * FROM vn.itemShelving - WHERE shelvingFk = vShelvingFk COLLATE utf8_unicode_ci AND itemFk = vItemFk; END ;; DELIMITER ; @@ -53718,19 +49359,40 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_get`(vWorkerFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `collection_get`(vWorkerFk INT) BEGIN - SELECT c.id AS collectionFk, date(c.created) AS created - FROM vn.collection c - LEFT JOIN vn.state s ON c.stateFk = s.id - WHERE c.workerFk = vWorkerFk AND s.code = 'ON_PREPARATION' - AND created >= TIMESTAMPADD(HOUR , -6,NOW()); - + /* Obtiene colección del sacador si tiene líneas pendientes + * + * @param vWorkerFk id del worker + * + * @table Devuelve tabla temporal con las colecciones pendientes. + */ + DROP TEMPORARY TABLE IF EXISTS tCollection; + + CREATE TEMPORARY TABLE tCollection + SELECT c.id collectionFk, + date(c.created) created + FROM collection c + JOIN ticketCollection tc ON tc.collectionFk = c.id + JOIN sale s ON s.ticketFk = tc.ticketFk + JOIN ticketState ts ON ts.ticketFk = tc.ticketFk + JOIN state s2 ON s2.id = ts.stateFk + JOIN productionConfig pc + JOIN vn.state ss on ss.code = 'PREPARED' + LEFT JOIN vn.saleTracking st on st.saleFk = s.id AND st.stateFk = ss.id + WHERE c.workerFk = vWorkerFk + AND TIMESTAMPDIFF(HOUR, c.created , util.VN_NOW()) < pc.pendingCollectionsAge + AND s.quantity != 0 + AND s2.order < pc.pendingCollectionsOrder + GROUP BY c.id + HAVING COUNT(*) > COUNT(DISTINCT st.id); + + SELECT * FROM tCollection; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -53741,27 +49403,27 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_getTickets`(vParamFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `collection_getTickets`(vParamFk INT) BEGIN /** * Selecciona los tickets de una colección/ticket * @param vParamFk ticketFk/collectionFk * @return Retorna ticketFk, level, agencyName, warehouseFk, salesPersonFk, observaciones - */ + */ DECLARE vItemPackingTypeFk VARCHAR(1); -- Si los sacadores son los de pruebas, pinta los colores SELECT itemPackingTypeFk INTO vItemPackingTypeFk - FROM vn.collection + FROM vn.collection WHERE id = vParamFk; - SELECT t.id ticketFk, + SELECT t.id ticketFk, IF (!(vItemPackingTypeFk <=> 'V'), cc.code,CONCAT(SUBSTRING('ABCDEFGH',tc.wagon, 1),'-',tc.`level` )) `level`, am.name agencyName, t.warehouseFk, @@ -53770,20 +49432,20 @@ BEGIN FROM vn.ticket t LEFT JOIN vn.ticketCollection tc ON t.id = tc.ticketFk LEFT JOIN vn.collection c2 ON c2.id = tc.collectionFk -- PAK 23/12/21 - LEFT JOIN vn.collectionColors cc - ON cc.wagon = tc.wagon - AND cc.shelve = tc.`level` + LEFT JOIN vn.collectionColors cc + ON cc.wagon = tc.wagon + AND cc.shelve = tc.`level` AND cc.trainFk = c2.trainFk -- PAK 23/12/21 - LEFT JOIN vn.zone z ON z.id = t.zoneFk + LEFT JOIN vn.zone z ON z.id = t.zoneFk LEFT JOIN vn.agencyMode am ON am.id = z.agencyModeFk LEFT JOIN vn.client c ON c.id = t.clientFk LEFT JOIN vn.worker w ON w.id = c.salesPersonFk - LEFT JOIN vn.ticketObservation tob ON tob.ticketFk = t.id + LEFT JOIN vn.ticketObservation tob ON tob.ticketFk = t.id AND tob.observationTypeFk = 1 - WHERE t.id = vParamFk + WHERE t.id = vParamFk AND t.shipped >= util.yesterday() UNION ALL - SELECT t.id ticketFk, + SELECT t.id ticketFk, IF(!(vItemPackingTypeFk <=> 'V'), cc.code, CONCAT(SUBSTRING('ABCDEFGH', tc.wagon, 1), '-', tc.`level`)) `level`, am.name agencyName, t.warehouseFk, @@ -53792,97 +49454,18 @@ BEGIN FROM vn.ticket t JOIN vn.ticketCollection tc ON t.id = tc.ticketFk LEFT JOIN vn.collection c2 ON c2.id = tc.collectionFk -- PAK 23/12/21 - LEFT JOIN vn.collectionColors cc - ON cc.wagon = tc.wagon - AND cc.shelve = tc.`level` + LEFT JOIN vn.collectionColors cc + ON cc.wagon = tc.wagon + AND cc.shelve = tc.`level` AND cc.trainFk = c2.trainFk -- PAK 23/12/21 - LEFT JOIN vn.zone z ON z.id = t.zoneFk + LEFT JOIN vn.zone z ON z.id = t.zoneFk LEFT JOIN vn.agencyMode am ON am.id = z.agencyModeFk LEFT JOIN vn.client c ON c.id = t.clientFk LEFT JOIN vn.worker w ON w.id = c.salesPersonFk - LEFT JOIN vn.ticketObservation tob ON tob.ticketFk = t.id + LEFT JOIN vn.ticketObservation tob ON tob.ticketFk = t.id AND tob.observationTypeFk = 1 WHERE tc.collectionFk = vParamFk; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `collection_getTickets__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_getTickets__`(vParamFk INT) -BEGIN - - DECLARE vAlertLevel INT; - DECLARE vItemPackingTypeFk VARCHAR(1); - - -- Si los sacadores son los de pruebas, pinta los colores - SELECT itemPackingTypeFk INTO vItemPackingTypeFk - FROM vn.collection - WHERE id = vParamFk; - - SELECT t.id ticketFk, - IF (!(vItemPackingTypeFk <=> 'V'), cc.code,CONCAT(SUBSTRING('ABCDEFGH',tc.wagon, 1),'-',tc.`level` )) `level`, - am.name as agencyName, - t.warehouseFk , - w.id as salesPersonFk, - IFNULL(tob.description,'')as observaciones - FROM vn.ticket t - LEFT JOIN vn.ticketCollection tc ON t.id = tc.ticketFk - LEFT JOIN vn.collectionColors cc ON cc.wagon = tc.wagon AND cc.shelve = tc.`level` - LEFT JOIN vn.zone z ON z.id = t.zoneFk - LEFT JOIN vn.agencyMode am ON am.id = z.agencyModeFk - LEFT JOIN vn.client c ON c.id = t.clientFk - LEFT JOIN vn.worker w ON w.id = c.salesPersonFk - LEFT JOIN vn.ticketObservation tob ON tob.ticketFk = t.id AND tob.observationTypeFk = 1 - WHERE tc.collectionFk = vParamFk OR (t.id = vParamFk AND t.id>2000000); - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `collection_increaseQuantity` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_increaseQuantity`( - vSaleFk INT, - vQuantity INT) -BEGIN - - DECLARE vDescription VARCHAR(100); - DECLARE vOriginalQuantity INT; - DECLARE vConcept VARCHAR(100); - DECLARE vOrigin INT; - - SELECT concept INTO vConcept FROM sale WHERE id = vSaleFk; - SELECT ticketFk INTO vOrigin FROM sale WHERE id = vSaleFk; - SELECT quantity INTO vOriginalQuantity FROM sale WHERE id = vSaleFk; - SELECT CONCAT("Cambio cantidad ",vConcept," de ", vOriginalQuantity," a ", vQuantity) INTO vDescription; - - INSERT INTO ticketLog (originFk, userFk, action , description) - VALUES(vOrigin, getUser(), 'update', vDescription); - - UPDATE `vn`.`sale` SET `quantity` = vQuantity,`originalQuantity` = vOriginalQuantity WHERE (`id` = vSaleFk); - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -53893,28 +49476,28 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_kill`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `collection_kill`(vSelf INT) BEGIN - + /* Elimina una coleccion y coloca sus tickets en OK - * + * */ - + INSERT INTO vncontrol.inter(state_id, Id_Ticket) SELECT s.id, ticketFk FROM vn.ticketCollection tc JOIN vn.state s ON s.code = 'OK' WHERE tc.collectionFk = vSelf; - - DELETE FROM vn.collection + + DELETE FROM vn.collection WHERE id = vSelf; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -53927,54 +49510,464 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_missingTrash`(vSaleFk BIGINT, vQuantity INT, vIsTrash BOOLEAN, vWarehouseFk INT, vNewQuantity INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `collection_missingTrash`( + vSaleFk BIGINT, + vQuantity INT, + vIsTrash BOOLEAN, + vWarehouseFk INT, + vNewQuantity INT) BEGIN +/** +* Modifica la cantidad de una sale tirándola a faltas o basura +* +* @param vSaleFk el id de la sale +* @param vQuantity cantidad que se va a tirar a faltas o basura +* @param vWarehouseFk id warehouse +* @param vNewQuantity cantidad que se queda en el ticket original +*/ DECLARE vTicketFk INT; DECLARE vClientFk INT DEFAULT 400; - DECLARE vClientName VARCHAR(50); - DECLARE vConsignatario INT; - DECLARE vOriginalQuantity INT; - DECLARE vDescription VARCHAR(100); - DECLARE vConcept VARCHAR(100); - DECLARE vOrigin INT; + DECLARE vClientName VARCHAR(50); + DECLARE vConsignatario INT; + DECLARE vOriginalQuantity INT; + DECLARE vDescription VARCHAR(100); + DECLARE vCompanyVnlFk INT; + DECLARE vOrigin INT; IF vIsTrash THEN - SELECT 200 INTO vClientFk; + SELECT id INTO vClientFk + FROM client c + WHERE c.name='BASURA'; END IF; - - SELECT concept INTO vConcept FROM vn.sale WHERE id = vSaleFk; - SELECT ticketFk INTO vOrigin FROM vn.sale WHERE id = vSaleFk; - SELECT CONCAT("Cambio cantidad ",vConcept," de ", vQuantity ," a ", vNewQuantity) INTO vDescription; - - INSERT INTO vn.ticketLog (originFk, userFk, action , description) - VALUES(vOrigin, vn.getUser(), 'update', vDescription); - SELECT t.id INTO vTicketFk FROM vn.ticket t WHERE t.created > DATE_SUB(NOW(), INTERVAL 1 DAY) AND t.clientFk = vClientFk AND t.warehouseFk = vWarehouseFk LIMIT 1; - - IF vTicketFk IS NULL THEN - SELECT c.name , co.id INTO vClientName,vConsignatario - FROM vn.client c - INNER JOIN vn.address co ON c.id = co.clientFk - WHERE c.id = vClientFk - LIMIT 1; - - CALL ticketCreateWithUser(vClientFk, NOW(), vWarehouseFk, 442, vConsignatario, NULL, NULL, NULL, account.userGetId(), vTicketFk); - - SELECT t.id INTO vTicketFk FROM vn.ticket t WHERE t.created > DATE_SUB(NOW(), INTERVAL 1 DAY) AND t.clientFk = vClientFk AND t.warehouseFk = vWarehouseFk LIMIT 1; - - END IF; - - INSERT INTO vn.sale (itemFk, ticketFk, concept, quantity, originalQuantity, price, discount, priceFixed, reserved, isPicked, isPriceFixed, created, isAdded) - SELECT itemFk, vTicketFk, CONCAT(concept," ",vn.getWorkerCode(), " ",LEFT(CAST(NOW() AS TIME),5)), vQuantity, originalQuantity, price, discount, priceFixed, reserved, isPicked, isPriceFixed, created, isAdded - FROM vn.sale s WHERE s.id = vSaleFk; - - SELECT quantity INTO vOriginalQuantity FROM vn.sale WHERE id = vSaleFk; - UPDATE vn.sale SET originalQuantity = vOriginalQuantity ,quantity = vNewQuantity WHERE id = vSaleFk; - + SELECT CONCAT("Cambio cantidad del artículo ",itemFk, ", ",concept,", de ", quantity," a ", vNewQuantity), ticketFk + INTO vDescription,vOrigin + FROM sale + WHERE id = vSaleFk; + + CALL logAdd(vOrigin, 'update', 'ticket', vDescription); + + SELECT t.id INTO vTicketFk + FROM ticket t + WHERE t.created > DATE_SUB(util.VN_NOW(), INTERVAL 1 DAY) + AND t.clientFk = vClientFk + AND t.warehouseFk = vWarehouseFk + LIMIT 1; + + IF vTicketFk IS NULL THEN + SELECT c.name , co.id INTO vClientName,vConsignatario + FROM client c + JOIN address co ON c.id = co.clientFk + WHERE c.id = vClientFk + LIMIT 1; + + SELECT id INTO vCompanyVnlFk + FROM company + WHERE code = 'VNL'; + + CALL ticket_add(vClientFk, + util.VN_NOW(), vWarehouseFk, + vCompanyVnlFk, + vConsignatario, + NULL, + NULL, + NULL, + account.myUser_getId(), + TRUE, + vTicketFk); + + SELECT t.id INTO vTicketFk + FROM ticket t + WHERE t.created > DATE_SUB(util.VN_NOW(), INTERVAL 1 DAY) + AND t.clientFk = vClientFk + AND t.warehouseFk = vWarehouseFk + LIMIT 1; + END IF; + + INSERT INTO sale (itemFk, + ticketFk, + concept, + quantity, + originalQuantity, + price, + discount, + priceFixed, + reserved, + isPicked, + isPriceFixed, + created, + isAdded) + SELECT itemFk, + vTicketFk, + CONCAT(concept," ",getWorkerCode(), " ", LEFT(CAST(util.VN_NOW() AS TIME),5)), + vQuantity, + originalQuantity, + price, + discount, + priceFixed, + reserved, + isPicked, + isPriceFixed, + created, + isAdded + FROM sale s + WHERE s.id = vSaleFk; + + SELECT quantity INTO vOriginalQuantity + FROM sale + WHERE id = vSaleFk; + + UPDATE sale + SET originalQuantity = vOriginalQuantity, + quantity = vNewQuantity + WHERE id = vSaleFk; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `collection_new` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `collection_new`(vSectorFk INT, vWagons INT, vTrainFk INT, vUserFk INT, OUT vCollectionFk INT) +proc:BEGIN +/* Genera colecciones de tickets y devuelve el primer vn.collection.id + * + * @param vSectorFk Identificador de vn.sector + * @param vWagons Número de carros que lleva + * @param vTrainFk Identificador de vn.train + * @param vUserFk Identificador de account.user + * + * @return vCollectionFk Número de colección + */ + + DECLARE vWarehouseFk INT; + DECLARE vMaxTickets INT; + DECLARE vStateFk INT; + DECLARE vFirstTicketFk INT; + DECLARE vHour INT; + DECLARE vMinute INT; + DECLARE vWorkerCode VARCHAR(3); + DECLARE vWagonCounter INT DEFAULT 0; + DECLARE vTicketFk INT; + DECLARE vItemPackingTypeFk VARCHAR(1); + DECLARE vHasAssignedTickets BOOLEAN; + DECLARE vMaxNotReadyCollections INT; + DECLARE vNotReadyCollections INT; + DECLARE vHasUniqueCollectionTime BOOL; + DECLARE vDone INT DEFAULT FALSE; + DECLARE vLockName VARCHAR(215); + DECLARE vLockTime INT DEFAULT 15; + DECLARE vFreeWagonFk INT; + DECLARE cur1 CURSOR FOR + SELECT ticketFk + FROM tmp.productionBuffer + WHERE ticketFk <> vFirstTicketFk + ORDER BY + HH, + mm, + productionOrder DESC, + m3 DESC, + agency, + zona, + routeFk, + ticketFk + LIMIT vMaxTickets; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + SELECT + pc.ticketTrolleyMax * vWagons, + pc.maxNotReadyCollections, + pc.hasUniqueCollectionTime, + w.code, + s.warehouseFk, + s.itemPackingTypeFk, + st.id, + CONCAT('collection_new',vSectorFk) + INTO + vMaxTickets, + vMaxNotReadyCollections, + vHasUniqueCollectionTime, + vWorkerCode, + vWarehouseFk, + vItemPackingTypeFk, + vStateFk, + vLockName + FROM vn.productionConfig pc + JOIN vn.worker w ON w.id = vUserFk + JOIN vn.sector s ON s.id = vSectorFk + JOIN vn.state st ON st.`code` = 'ON_PREPARATION'; + + -- Si hay colecciones sin terminar, sale del proceso + CALL vn.collection_get(vUserFk); + + SELECT COUNT(*) + INTO vNotReadyCollections + FROM tCollection; + + DROP TEMPORARY TABLE tCollection; + + IF vMaxNotReadyCollections < vNotReadyCollections THEN + CALL util.throw('Hay colecciones pendientes'); + LEAVE proc; + END IF; + + IF NOT GET_LOCK(vLockName,vLockTime) THEN + LEAVE proc; + END IF; + + -- Se prepara el tren, con tantos vagones como sea necesario. + CREATE OR REPLACE TEMPORARY TABLE tTrain + (wagon INT, + shelve INT, + liters INT, + `lines`INT, + height INT, + ticketFk INT, + PRIMARY KEY(wagon, shelve)) + ENGINE = MEMORY; + + WHILE vWagons > vWagonCounter DO + SET vWagonCounter = vWagonCounter + 1; + + INSERT INTO tTrain(wagon, shelve, liters, `lines`, height) + SELECT vWagonCounter, cv.`level` , cv.liters , cv.`lines` , cv.height + FROM vn.collectionVolumetry cv + WHERE cv.trainFk = vTrainFk + AND cv.itemPackingTypeFk = vItemPackingTypeFk; + END WHILE; + + -- Esto desaparecerá cuando tengamos la table cache.ticket + CALL vn.productionControl(vWarehouseFk, 0); + + ALTER TABLE tmp.productionBuffer + ADD COLUMN liters INT, + ADD COLUMN height INT; + + -- Se obtiene nº de colección. + INSERT INTO vn.collection + SET workerFk = vUserFk, + itemPackingTypeFk = vItemPackingTypeFk, + trainFk = vTrainFk; + + SELECT LAST_INSERT_ID() INTO vCollectionFk; + + -- Los tickets de recogida en Algemesí sólo se sacan si están asignados. + -- Los pedidos con riesgo no se sacan aunque se asignen. + DELETE pb.* + FROM tmp.productionBuffer pb + JOIN vn.state s ON s.id = pb.state + WHERE (pb.agency = 'REC_ALGEMESI' + AND s.code <> 'PICKER_DESIGNED') + OR pb.problem LIKE '%RIESGO%'; + + -- Comprobamos si hay tickets asignados. En ese caso, nos centramos + -- exclusivamente en esos tickets y los sacamos independientemente + -- de problemas o tamaños + SELECT COUNT(*) INTO vHasAssignedTickets + FROM tmp.productionBuffer pb + JOIN vn.state s ON s.id = pb.state + WHERE s.code = 'PICKER_DESIGNED' + AND pb.workerCode = vWorkerCode; + + -- Se dejan en la tabla tmp.productionBuffer sólo aquellos tickets adecuados + IF vHasAssignedTickets THEN + DELETE pb.* + FROM tmp.productionBuffer pb + JOIN vn.state s ON s.id = pb.state + WHERE s.code <> 'PICKER_DESIGNED' + OR pb.workerCode <> vWorkerCode; + ELSE + DELETE pb.* + FROM tmp.productionBuffer pb + JOIN vn.state s ON s.id = pb.state + JOIN vn.agencyMode am ON am.id = pb.agencyModeFk + JOIN vn.agency a ON a.id = am.agencyFk + JOIN vn.productionConfig pc + WHERE pb.shipped <> util.VN_CURDATE() + OR (pb.ubicacion IS NULL AND a.isOwn = TRUE) + OR (s.isPreparable = FALSE AND s.isPrintable = FALSE) + OR pb.collectionH IS NOT NULL + OR pb.collectionV IS NOT NULL + OR pb.collectionN IS NOT NULL + OR (pb.H = 0 AND pb.V > 0 AND vItemPackingTypeFk = 'H') + OR (pb.V = 0 AND vItemPackingTypeFk = 'V') + OR (pc.isPreviousPreparationRequired AND pb.previousWithoutParking) + OR LENGTH(pb.problem) > 0; + END IF; + + -- Es importante que el primer ticket se coja en todos los casos + SELECT ticketFk, HH, mm + INTO vFirstTicketFk, vHour, vMinute + FROM tmp.productionBuffer + ORDER BY + HH, + mm, + productionOrder DESC, + m3 DESC, + agency, + zona, + routeFk, + ticketFk + LIMIT 1; + + -- Hay que excluir aquellos que no tengan la misma hora de preparación, si procede + IF vHasUniqueCollectionTime THEN + DELETE + FROM tmp.productionBuffer + WHERE HH <> vHour + OR mm <> vMinute; + END IF; + + SET vTicketFk = vFirstTicketFk; + + OPEN cur1; + + read_loop: LOOP + SET vDone = FALSE; + + CALL vn.ticket_splitItemPackingType(vTicketFk, vItemPackingTypeFk); + + DROP TEMPORARY TABLE tmp.ticketIPT; + + UPDATE tmp.productionBuffer pb + JOIN (SELECT @litros:= SUM(litros) liters, COUNT(*) `lines`, MAX(i.`size`) height + FROM vn.saleVolume sv + JOIN vn.sale s ON s.id = sv.saleFk + JOIN vn.item i ON i.id = s.itemFk + WHERE sv.ticketFk = vTicketFk ) sub + SET pb.liters = sub.liters, pb.`lines` = sub.`lines`, pb.height = sub.height + WHERE pb.ticketFk = vTicketFk; + + UPDATE tTrain tt + JOIN tmp.productionBuffer pb ON pb.ticketFk = vTicketFk + SET tt.ticketFk = pb.ticketFk + WHERE tt.liters >= pb.liters + AND tt.`lines` >= pb.`lines` + AND (tt.height >= pb.height OR vItemPackingTypeFk <> 'V') + AND tt.ticketFk IS NULL + ORDER BY + wagon, + shelve, + tt.liters, + tt.`lines`, + tt.height + LIMIT 1; + + -- Si no le encuentra una balda adecuada, intentamos darle un carro entero + -- si queda alguno libre + + IF NOT (SELECT COUNT(*) FROM tTrain WHERE ticketFk) THEN + SELECT tt.wagon + INTO vFreeWagonFk + FROM tTrain tt + LEFT JOIN (SELECT DISTINCT wagon + FROM tTrain + WHERE ticketFk IS NOT NULL + ) nn ON nn.wagon = tt.wagon + WHERE nn.wagon IS NULL + ORDER BY wagon + LIMIT 1; + + IF vFreeWagonFk THEN + UPDATE tTrain + SET ticketFk = vFirstTicketFk + WHERE wagon = vFreeWagonFk; + END IF; + END IF; + + FETCH cur1 INTO vTicketFk; + + IF vDone OR NOT (SELECT COUNT(*) FROM tTrain WHERE ticketFk IS NULL) THEN + LEAVE read_loop; + END IF; + END LOOP; + + CLOSE cur1; + + IF (SELECT COUNT(*) FROM tTrain WHERE ticketFk) THEN + UPDATE vn.collection c + JOIN vn.state st ON st.code = 'ON_PREPARATION' + SET c.stateFk = st.id + WHERE c.id = vCollectionFk; + + -- Asigna las bandejas + INSERT IGNORE INTO vn.ticketCollection(ticketFk, collectionFk, `level`, wagon, liters) + SELECT tt.ticketFk, vCollectionFk, tt.shelve, tt.wagon, tt.liters + FROM tTrain tt + WHERE tt.ticketFk IS NOT NULL + ORDER BY tt.wagon, tt.shelve; + + -- Actualiza el estado de los tickets + INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) + SELECT vStateFk, ticketFk, vUserFk + FROM vn.ticketCollection tc + WHERE tc.collectionFk = vCollectionFk; + + -- Aviso para la preparacion previa + INSERT INTO vn.ticketDown(ticketFk, collectionFk) + SELECT tc.ticketFk, tc.collectionFk + FROM vn.ticketCollection tc + WHERE tc.collectionFk = vCollectionFk; + + CALL vn.salesMerge_byCollection(vCollectionFk); + + UPDATE vn.collection c + JOIN (SELECT count(*) saleTotalCount , + sum(s.isPicked != 0) salePickedCount + FROM vn.ticketCollection tc + JOIN vn.sale s ON s.ticketFk = tc.ticketFk + WHERE tc.collectionFk = vCollectionFk + AND s.quantity > 0 + ) sub + SET c.saleTotalCount = sub.saleTotalCount, + c.salePickedCount = sub.salePickedCount + WHERE c.id = vCollectionFk; + + ELSE + + -- CALL util.throw('No ha sido posible obtener colección'); + DELETE FROM vn.collection WHERE id = vCollectionFk; + SET vCollectionFk = NULL; + + END IF; + + DO RELEASE_LOCK(vLockName); +/* + SELECT + pb.HH, + pb.mm, + pb.agency, + tc.collectionFk, + tc.ticketFk, + tc.wagon, + tc.`level`, + tc.liters, + tc.itemCount, + pb.liters, + pb.`lines` + FROM vn.collection c + JOIN vn.ticketCollection tc ON tc.collectionFk = c.id + JOIN tmp.productionBuffer pb ON pb.ticketFk = tc.ticketFk + WHERE c.created >= util.VN_CURDATE() + ORDER BY tc.collectionFk DESC, tc.wagon, tc.`level`; + */ + DROP TEMPORARY TABLE + tTrain, + tmp.productionBuffer; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -53987,518 +49980,56 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_newSmartTag`(vSectorFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `collection_newSmartTag`(vSectorFk INT) proc:BEGIN - - DECLARE vIsPreviousPrepared BOOLEAN; - DECLARE vCollectionFk INT; - DECLARE vWarehouseFk INT; - DECLARE vMaxTickets INT; - DECLARE vStateFk INT; - DECLARE vFirstTicketFk INT; - DECLARE vHour INT; - DECLARE vMinute INT; - DECLARE vWorker INT; - DECLARE vWorkerCode VARCHAR(3); - DECLARE vWagon INT; - DECLARE vWagonCounter INT; - DECLARE vShelve INT; - DECLARE vTicket INT; - DECLARE vTicketToSplit INT; - DECLARE myUserIsSalesPersonRole BOOLEAN; - DECLARE vPrintedTickets INT; - DECLARE vMaxTicketPrinted INT; - DECLARE vItemPackingTypeFk VARCHAR(1); - DECLARE hasAssignedTickets BOOLEAN; - DECLARE vMaxNotReadyCollections INT DEFAULT 0; - DECLARE vNotReadyCollections INT; - DECLARE vSectorCode VARCHAR(20); + DECLARE vWorkerFk INT; DECLARE vWagons INT; - - SELECT w.code, w.id INTO vWorkerCode, vWorker + DECLARE vCollectionFk INT; + + SELECT w.id INTO vWorkerFk FROM vn.worker w WHERE w.id = vn.getUser(); - --- Si hay colecciones sin terminar, sale del proceso - SELECT count(*) INTO vNotReadyCollections - FROM vn.collection c - WHERE c.workerFk = vn.getUser() - AND c.saleTotalCount > c.salePickedCount + 1 - AND c.created > TIMESTAMPADD(HOUR , -5,NOW()); - IF vMaxNotReadyCollections < vNotReadyCollections THEN - - LEAVE proc; - - END IF; - - -- Establecemos el almacén y si es un sector de preparación previa, así como el estado para los tickets que se vayan preparando - SELECT isPreviousPrepared, warehouseFk, itemPackingTypeFk, code - INTO vIsPreviousPrepared, vWarehouseFk, vItemPackingTypeFk, vSectorCode - FROM vn.sector - WHERE id = vSectorFk; + SELECT COUNT(ws.id) INTO vWagons + FROM workerShelving ws + WHERE ws.workerFk = vWorkerFk + AND ws.collectionFk IS NULL; - -- Cogemos el numero de wagons del trabajador - SELECT COUNT(ws.id) - FROM workerShelving ws - WHERE ws.workerFk = vWorker - AND ws.collectionFk IS NULL - INTO vWagons; - - SET vMaxTicketPrinted = 8 * vWagons; - SET vMaxTickets = 3 * vWagons; - - - IF vIsPreviousPrepared THEN - - LEAVE proc; -- Hasta que tengamos el altillo, vamos a cancelar esta opcion - - SELECT id INTO vStateFk - FROM vn.state - WHERE `code` = 'PREVIOUS_PREPARATION'; - ELSE - - SELECT id INTO vStateFk - FROM vn.state - WHERE `code` = 'ON_PREPARATION'; - - END IF; - - -- Averiguamos si es comercial el usuario - SELECT FALSE -- (r.name = 'salesPerson') - INTO myUserIsSalesPersonRole - FROM account.user u - JOIN account.role r ON r.id = u.role - WHERE u.id = vn.getUser(); - - -- Se obtiene nº de colección y el buffer con los pedidos preparables - INSERT INTO vn.collection - SET workerFk = account.myUser_getId(), - itemPackingTypeFk = vItemPackingTypeFk; - - SELECT LAST_INSERT_ID() INTO vCollectionFk; + CALL collection_newWithWagon(vSectorFk, vWagons); - UPDATE workerShelving - SET collectionFk = vCollectionFk - WHERE workerFk = vWorker - AND collectionFk IS NULL; - - CALL vn.productionControl(vWarehouseFk, 0); - - -- Comprobamos si hay tickets asignados. En ese caso, nos centramos exclusivamente en esos tickets - -- y los sacamos independientemente de problemas o tamaños - SELECT COUNT(*) INTO hasAssignedTickets - FROM tmp.productionBuffer pb - JOIN vn.state s ON s.id = pb.state - WHERE s.code = 'PICKER_DESIGNED' - AND pb.workerCode = vWorkerCode - AND LENGTH(pb.problem) = 0; - - IF hasAssignedTickets THEN - - UPDATE vn.collection - SET itemPackingTypeFk = NULL - WHERE id = vCollectionFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketToSplit; - CREATE TEMPORARY TABLE tmp.ticketToSplit - SELECT pb.ticketFk - FROM tmp.productionBuffer pb - JOIN vn.state s ON s.id = pb.state - WHERE s.code = 'PICKER_DESIGNED' - AND pb.workerCode = vWorkerCode - AND LENGTH(pb.problem) = 0 - ORDER BY HH, - mm, - s.`order` DESC, - pb.m3 DESC; - - WHILE (SELECT COUNT(*) FROM tmp.ticketToSplit) DO - - SELECT MIN(ticketFk) INTO vTicketToSplit - FROM tmp.ticketToSplit; - - CALL vn.ticket_splitItemPackingType(vTicketToSplit); - - INSERT INTO vn.ticketCollection(ticketFk, collectionFk) - SELECT ticketFk, vCollectionFk - FROM tmp.ticketIPT; - - DELETE FROM tmp.ticketToSplit - WHERE ticketFk = vTicketToSplit; - - DROP TEMPORARY TABLE tmp.ticketIPT; - - END WHILE; - - CALL vn.productionControl(vWarehouseFk, 0); - - ELSE - - SELECT COUNT(*) INTO vPrintedTickets - FROM tmp.productionBuffer pb - JOIN vn.state s ON s.id = pb.state - JOIN vn.agencyMode am ON am.id = pb.agencyModeFk - JOIN vn.agency a ON a.id = am.agencyFk - WHERE pb.shipped = CURDATE() - AND (pb.ubicacion IS NOT NULL OR a.isOwn = FALSE ) - AND s.isPreparable - AND (pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH) - OR pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV) - OR pb.F > 0 AND vItemPackingTypeFk = 'F' AND ISNULL(pb.collectionF) - OR pb.P > 0 AND vItemPackingTypeFk = 'P' AND ISNULL(pb.collectionP)); - - SET vMaxTicketPrinted = vMaxTicketPrinted - vPrintedTickets; - -- AutoPRINT - - IF vMaxTicketPrinted > 0 THEN - - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT s2.id, pb.ticketFk, vn.getUser() - FROM tmp.productionBuffer pb - JOIN vn.agencyMode am ON am.id = pb.agencyModeFk - JOIN vn.agency a ON a.id = am.agencyFk - JOIN vn.state s ON s.id = pb.state - JOIN vn.state s2 ON s2.code = 'PRINTED_AUTO' - JOIN vn.ticket t ON t.id = pb.ticketFk - WHERE pb.shipped = CURDATE() - AND LENGTH(pb.problem) = 0 - AND (pb.ubicacion IS NOT NULL OR a.isOwn = FALSE ) - AND s.isPrintable - AND (pb.m3 > 0.05 OR s.isOK) - AND (pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH) - OR pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV) - OR pb.F > 0 AND vItemPackingTypeFk = 'F' AND ISNULL(pb.collectionF) - OR pb.P > 0 AND vItemPackingTypeFk = 'P' AND ISNULL(pb.collectionP)) - AND t.created < TIMESTAMPADD(MINUTE, -10, NOW()) - ORDER BY HH, - mm, - s.`order` DESC, - pb.m3 DESC - LIMIT vMaxTicketPrinted; - - END IF; - - -- Se seleccionan los primeros tickets, asignando colección para dejarlos bloqueados a otros sacadores. - -- Se splitan los tickets preparables, para que solo tengan un tipo de empaquetado - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketToSplit; - CREATE TEMPORARY TABLE tmp.ticketToSplit - SELECT pb.ticketFk - FROM tmp.productionBuffer pb - JOIN vn.agencyMode am ON am.id = pb.agencyModeFk - JOIN vn.agency a ON a.id = am.agencyFk - JOIN vn.ticketStateToday tst ON tst.ticket = pb.ticketFk - JOIN vn.state s ON s.id = tst.state - WHERE ( pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH) - OR pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV) - OR pb.F > 0 AND vItemPackingTypeFk = 'F' AND ISNULL(pb.collectionF) - OR pb.P > 0 AND vItemPackingTypeFk = 'P' AND ISNULL(pb.collectionP)) - AND (pb.ubicacion IS NOT NULL OR a.isOwn = FALSE ) - AND LENGTH(pb.problem) = 0 - AND s.isPreparable - AND NOT myUserIsSalesPersonRole - ORDER BY pb.HH, pb.mm, s.`order` DESC - LIMIT vMaxTickets; - - WHILE (SELECT COUNT(*) FROM tmp.ticketToSplit) DO - - SELECT MIN(ticketFk) INTO vTicketToSplit - FROM tmp.ticketToSplit; - - CALL vn.ticket_splitItemPackingType(vTicketToSplit); - - INSERT INTO vn.ticketCollection(ticketFk, collectionFk) - SELECT ticketFk, vCollectionFk - FROM tmp.ticketIPT - WHERE itemPackingTypeFk = vItemPackingTypeFk; - - DELETE FROM tmp.ticketToSplit - WHERE ticketFk = vTicketToSplit; - - DROP TEMPORARY TABLE tmp.ticketIPT; - - END WHILE; - - END IF; + SELECT id INTO vCollectionFk + FROM collection + WHERE workerFk = vWorkerFk + ORDER BY created DESC + LIMIT 1; - -- Creamos una tabla temporal con los datos que necesitamos para depurar la colección - DROP TEMPORARY TABLE IF EXISTS tmp.ticket; - CREATE TEMPORARY TABLE tmp.ticket - SELECT pb.ticketFk, - pb.`lines`, - pb.m3 * 1000 liters, - 0 as height, - 0 as shelve, - 0 as wagon, - pb.productionOrder, - pb.HH, - pb.mm - FROM tmp.productionBuffer pb - JOIN vn.ticketCollection tc ON tc.ticketFk = pb.ticketFk - WHERE tc.collectionFk = vCollectionFk - LIMIT vMaxTickets; - - -- Es importante que el primer ticket se coja en todos los casos - SET vFirstTicketFk = 0; - - SELECT ticketFk, HH, mm - INTO vFirstTicketFk, vHour, vMinute - FROM tmp.ticket - ORDER BY productionOrder DESC, HH, mm - LIMIT 1; - - -- Hay que excluir aquellos que no tengan la misma hora de preparación - DELETE - FROM tmp.ticket - WHERE HH != vHour - OR mm != vMinute; - - -- En el caso de pedidos de más volumen de un carro, la colección será monoticket. Pero si el primer pedido - -- no es monoticket, excluimos a los de más de un carro - IF (SELECT (t.liters > vc.trolleyM3 * 1000) - FROM tmp.ticket t - JOIN vn.volumeConfig vc - WHERE t.ticketFk = vFirstTicketFk) THEN - - DELETE - FROM tmp.ticket - WHERE ticketFk != vFirstTicketFk; - - ELSE - - DELETE t.* - FROM tmp.ticket t - JOIN vn.volumeConfig vc - WHERE t.liters > vc.trolleyM3 * 1000; - - END IF; - - -- Elimina los tickets bloqueados que no se van a preparar - DELETE tc.* - FROM vn.ticketCollection tc - LEFT JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND t.ticketFk IS NULL; - - /* - * - * Construccion del tren - * - */ - - -- Establece altura máxima por pedido, porque las plantas no se pueden recostar. - UPDATE tmp.ticket t - JOIN - ( SELECT MAX(i.size) maxHeigth, - tc.ticketFk - FROM vn.ticketCollection tc - JOIN vn.sale s ON s.ticketFk = tc.ticketFk - JOIN vn.item i ON i.id = s.itemFk - WHERE i.itemPackingTypeFk = 'V' - AND tc.collectionFk = vCollectionFk - GROUP BY tc.ticketFk) sub ON sub.ticketFk = t.ticketFk - SET t.height = IFNULL(sub.maxHeigth,0); - - -- Vamos a generar una tabla con todas las posibilidades de asignacion de pedido - DROP TEMPORARY TABLE IF EXISTS tmp.wagonsVolumetry; - CREATE TEMPORARY TABLE tmp.wagonsVolumetry - SELECT cv.`level` as shelve, - 1 as wagon, - cv.`lines`, - cv.liters, - cv.height - FROM vn.collectionVolumetry cv; - - SET vWagonCounter = 1; - - WHILE vWagonCounter < vWagons DO - - SET vWagonCounter = vWagonCounter + 1; - - INSERT INTO tmp.wagonsVolumetry(shelve, wagon, `lines`, liters, height) - SELECT cv.`level` as shelve, - vWagonCounter as wagon, - cv.`lines`, - cv.liters, - cv.height - FROM vn.collectionVolumetry cv - WHERE cv.itemPackingTypeFk = IFNULL(vItemPackingTypeFk, 'H'); - - END WHILE; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketShelve; - CREATE TEMPORARY TABLE tmp.ticketShelve - SELECT ticketFk, shelve, wagon, linesDif, LitersDif, heightDif + UPDATE workerShelving ws + SET ws.collectionFk = vCollectionFk + WHERE ws.workerFk = vWorkerFk + AND ws.collectionFk IS NULL; + + SET @wagon := 0; + + DROP TEMPORARY TABLE IF EXISTS tmp.smartTags; + CREATE TEMPORARY TABLE tmp.smartTags + SELECT s.code, sub.wagon, s.level FROM ( - SELECT t.ticketFk, - wv.shelve, - wv.wagon, - t.productionOrder, - CAST(wv.`lines` AS SIGNED) - t.`lines` as linesDif, - CAST(wv.liters AS SIGNED) - t.liters as litersDif, - CAST(wv.height AS SIGNED) - t.height as heightDif - FROM tmp.wagonsVolumetry wv - JOIN tmp.ticket t - ) sub - WHERE linesDif >= 0 - AND litersDif >= 0 - AND heightDif >= 0 - ORDER BY productionOrder DESC, linesDif, LitersDif, heightDif ; - - -- Insertamos una opcion virtual para carro completo. Todo ticket tiene que poder entrar en un carro completo.... - INSERT INTO tmp.ticketShelve(ticketFk, shelve, wagon, linesDif, LitersDif, heightDif) - SELECT t.ticketFk, 0, wv.wagon, 999, 999,999 - FROM tmp.ticket t - JOIN tmp.wagonsVolumetry wv - GROUP BY t.ticketFk, wv.wagon; - - SET vWagonCounter = 0; - - WHILE vWagonCounter < vWagons DO - - SET vWagonCounter = vWagonCounter + 1; - - -- Asignamos la primera balda util al primer pedido - IF vWagonCounter = 1 THEN - - SELECT shelve INTO vShelve - FROM tmp.ticketShelve - WHERE ticketFk = vFirstTicketFk - AND wagon = vWagonCounter - ORDER BY heightDif, litersDif, linesDif - LIMIT 1; - - ELSE - - SELECT shelve, ticketFk INTO vShelve, vFirstTicketFk - FROM tmp.ticketShelve - WHERE wagon = vWagonCounter - ORDER BY heightDif, litersDif, linesDif - LIMIT 1; - - END IF; - - IF vShelve > 0 THEN - - UPDATE tmp.ticket - SET shelve = vShelve, - wagon = vWagonCounter - WHERE ticketFk = vFirstTicketFk; - - DELETE FROM tmp.ticketShelve - WHERE ticketFk = vFirstTicketFk - OR (shelve = vShelve AND wagon = vWagonCounter); - - WHILE (SELECT COUNT(*) FROM tmp.ticketShelve WHERE wagon = vWagonCounter) DO - - SELECT ticketFk, shelve - INTO vTicket, vShelve - FROM tmp.ticketShelve - WHERE wagon = vWagonCounter - LIMIT 1; - - UPDATE tmp.ticket - SET shelve = vShelve, - wagon = vWagonCounter - WHERE ticketFk = vTicket; - - DELETE FROM tmp.ticketShelve - WHERE ticketFk = vTicket - OR (shelve = vShelve AND wagon = vWagonCounter); - - END WHILE; - - ELSE - - UPDATE tmp.ticket - SET shelve = 1, wagon = vWagonCounter - WHERE ticketFk = vFirstTicketFk; - - DELETE FROM tmp.ticketShelve - WHERE ticketFk = vFirstTicketFk - AND wagon != vWagonCounter; - - END IF; - - END WHILE; - - -- Eliminamos los que se han quedado sin balda - DELETE FROM tmp.ticket WHERE shelve = 0; - - -- Elimina los tickets bloqueados que no se van a preparar - DELETE tc.* - FROM vn.ticketCollection tc - LEFT JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND t.ticketFk IS NULL; - - -- Elimina los tickets que ya estan en otra coleccion - DELETE tc.* - FROM vn.ticketCollection tc - JOIN vn.ticketCollection tc2 ON tc2.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND tc2.collectionFk != vCollectionFk; - - -- Actualiza el estado de la colección - UPDATE vn.collection c - JOIN vn.state st ON st.code = 'ON_PREPARATION' - SET c.stateFk = st.id - WHERE c.id = vCollectionFk; - - -- Asigna las bandejas y las smartTags - SET @wagon := 0; - UPDATE vn.ticketCollection tc - JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk - JOIN (SELECT @wagon:=@wagon+1 as wagon, ws.shelvingFk + SELECT @wagon:=@wagon+1 as wagon, ws.shelvingFk FROM workerShelving ws - WHERE ws.collectionFk = vCollectionFk) sub ON sub.wagon = t.wagon - JOIN smartTag s ON s.shelvingFk = sub.shelvingFk AND s.`level` = t.shelve - SET tc.`level` = t.shelve, tc.wagon = t.wagon, tc.smartTagFk = s.code; + WHERE ws.collectionFk = vCollectionFk) sub + JOIN smartTag s ON s.shelvingFk = sub.shelvingFk + ORDER BY wagon ASC, level ASC; - -- Actualiza el estado de los tickets - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT vStateFk, ticketFk, account.myUser_getId() - FROM vn.ticketCollection tc - WHERE tc.collectionFk = vCollectionFk; - - -- Aviso para la preparacion previa - INSERT INTO vn.ticketDown(ticketFk, collectionFk) - SELECT tc.ticketFk, tc.collectionFk - FROM vn.ticketCollection tc - WHERE tc.collectionFk = vCollectionFk; - - IF (SELECT count(*) FROM vn.ticketCollection WHERE collectionFk = vCollectionFk) THEN - - CALL vn.salesMerge_byCollection(vCollectionFk); - - UPDATE vn.collection c - JOIN (SELECT count(*) saleTotalCount , - sum(s.isPicked != 0) salePickedCount - FROM vn.ticketCollection tc - JOIN vn.sale s ON s.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND s.quantity > 0 - ) sub - SET c.saleTotalCount = sub.saleTotalCount, - c.salePickedCount = sub.salePickedCount - WHERE c.id = vCollectionFk; - - SELECT vCollectionFk; - - ELSE - - DELETE FROM vn.collection WHERE id = vCollectionFk; - -- SELECT NULL; - - END IF; - - DROP TEMPORARY TABLE tmp.ticketToSplit; - + UPDATE vn.ticketCollection tc + JOIN tmp.smartTags ts ON tc.wagon = ts.wagon AND tc.level = ts.level + SET tc.smartTagFk = ts.code + WHERE tc.collectionFk = vCollectionFk; + + DROP TEMPORARY TABLE tmp.smartTags; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -54509,13 +50040,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_newWithWagon`(vSectorFk INT, vWagons INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `collection_newWithWagon`(vSectorFk INT, vWagons INT) proc:BEGIN DECLARE vIsPreviousPrepared BOOLEAN; @@ -54536,319 +50067,362 @@ proc:BEGIN DECLARE vMaxTicketPrinted INT; DECLARE vItemPackingTypeFk VARCHAR(1); DECLARE hasAssignedTickets BOOLEAN; - DECLARE vMaxNotReadyCollections INT DEFAULT 0; + DECLARE vMaxNotReadyCollections INT; DECLARE vNotReadyCollections INT; DECLARE vTrainFk INT DEFAULT 1; + DECLARE vUserFk INT; + DECLARE vHourMatters BOOL DEFAULT TRUE; + + SELECT pc.ticketPrintedMax * vWagons, pc.ticketTrolleyMax * vWagons, pc.maxNotReadyCollections + INTO vMaxTicketPrinted, vMaxTickets, vMaxNotReadyCollections + FROM vn.productionConfig pc; + /*IF NOT vn.deviceProductionUser_Exists(vUserFk) THEN - /*IF NOT vn.deviceProductionUser_Exists(vn.getUser()) THEN - LEAVE proc; - + END IF;*/ - CALL util.debugAdd('vn.collection_newWithWagon',CONCAT('sector: ',vSectorFk,' wagons:',vWagons)); - - - SELECT w.code INTO vWorkerCode + SELECT w.code, w.id INTO vWorkerCode, vUserFk FROM vn.worker w - WHERE w.id = vn.getUser(); + WHERE w.id =account.myUser_getId(); - -- Establecemos el almacén y si es un sector de preparación previa, así como el estado para los tickets que se vayan preparando - SELECT isPreviousPrepared, warehouseFk, itemPackingTypeFk + -- Establecemos el almacén y si es un sector de preparación previa, así como el estado para los tickets que se vayan preparando + SELECT isPreviousPrepared, warehouseFk, itemPackingTypeFk INTO vIsPreviousPrepared, vWarehouseFk, vItemPackingTypeFk FROM vn.sector - WHERE id = vSectorFk; - --- Si está habilitado el modo cazador para las motos, y el usuario no está registrado, se sale. - - IF (SELECT isTractorHuntingMode FROM vn.deviceProductionConfig dpc) AND vItemPackingTypeFk = 'H' THEN - IF (SELECT COUNT(*) FROM vn.workerWithoutTractor wwt WHERE wwt.workerFk = account.userGetId()) THEN - INSERT INTO tmp.kk(userFk) VALUES(vn.getUser()); + WHERE id = vSectorFk; -- Hola + +-- Si está habilitado el modo cazador para las motos, y el usuario no esta registrado, se sale. + + IF (SELECT isTractorHuntingMode FROM vn.deviceProductionConfig dpc) AND vItemPackingTypeFk = 'H' THEN + IF (SELECT COUNT(*) FROM vn.workerWithoutTractor wwt WHERE wwt.workerFk = vUserFk) THEN + CALL util.throw('Usuario no registrado con moto'); LEAVE proc; END IF; END IF; - - + + -- Si hay colecciones sin terminar, sale del proceso SELECT count(*) INTO vNotReadyCollections - FROM vn.collection c - WHERE c.workerFk = vn.getUser() - AND c.saleTotalCount > c.salePickedCount + 1 - AND c.created > TIMESTAMPADD(HOUR , -5,NOW()); + FROM ( + SELECT count(DISTINCT s.id) totalRow, count(DISTINCT st.id) pickedRow + FROM vn.collection c + JOIN vn.ticketCollection tc ON tc.collectionFk = c.id + JOIN vn.sale s ON s.ticketFk = tc.ticketFk + JOIN vn.state ss ON ss.code = 'PREPARED' + LEFT JOIN vn.saleTracking st ON st.saleFk = s.id AND st.stateFk = ss.id + WHERE c.workerFk = vUserFk + AND c.created >= TIMESTAMPADD(HOUR , -6,util.VN_NOW()) + AND s.quantity != 0 + GROUP BY c.id + HAVING totalRow > pickedRow) sub; IF vMaxNotReadyCollections < vNotReadyCollections THEN - + + CALL util.throw('Hay colecciones pendientes'); LEAVE proc; - + END IF; - - SET vMaxTicketPrinted = 8 * vWagons; - SET vMaxTickets = 4 * vWagons; - + IF vIsPreviousPrepared THEN - + + CALL util.throw('Es de preparación previa'); LEAVE proc; -- Hasta que tengamos el altillo, vamos a cancelar esta opcion - + SELECT id INTO vStateFk FROM vn.state - WHERE `code` = 'PREVIOUS_PREPARATION'; - ELSE - + WHERE `code` = 'PREVIOUS_PREPARATION'; + ELSE + SELECT id INTO vStateFk FROM vn.state - WHERE `code` = 'ON_PREPARATION'; - - END IF; - - CALL vn.productionControl(vWarehouseFk, 0); - - -- Esto hay que corregirlo añadiendo un nuevo parámetro al proc. PAK 23/12/21 - IF vSectorFk = 65 THEN - - SET vTrainFk = 2; - - DELETE pb.* - FROM tmp.productionBuffer pb - JOIN vn.volumeConfig vc - WHERE pb.m3 * 1000 > vc.minTicketVolume; - + WHERE `code` = 'ON_PREPARATION'; + END IF; - - -- Se obtiene nº de colección y el buffer con los pedidos preparables + + CALL vn.productionControl(vWarehouseFk, 0); + + -- Esto hay que corregirlo añadiendo un nuevo parámetro al proc. PAK 23/12/21 + IF vSectorFk = 65 THEN -- Pedidos pequeños + + SET vTrainFk = 2; + + SET vHourMatters = FALSE; + + DELETE pb.* + FROM tmp.productionBuffer pb + JOIN vn.volumeConfig vc + WHERE pb.m3 * 1000 > vc.minTicketVolume; + + END IF; + + -- Se obtiene nº de colección y el buffer con los pedidos preparables INSERT INTO vn.collection - SET workerFk = account.myUser_getId(), + SET workerFk = vUserFk, itemPackingTypeFk = vItemPackingTypeFk, trainFk = vTrainFk; - + SELECT LAST_INSERT_ID() INTO vCollectionFk; - - - -- 05/08/2021 PAK Jose Frau pide que los tickets de recogida en Algemesí sólo se saquen si están asignados. - DELETE pb.* - FROM tmp.productionBuffer pb - JOIN vn.state s ON s.id = pb.state - WHERE pb.agency = 'REC_ALGEMESI' - AND s.code != 'PICKER_DESIGNED'; - - -- Comprobamos si hay tickets asignados. En ese caso, nos centramos exclusivamente en esos tickets - -- y los sacamos independientemente de problemas o tamaños - SELECT COUNT(*) INTO hasAssignedTickets - FROM tmp.productionBuffer pb - JOIN vn.state s ON s.id = pb.state - WHERE s.code = 'PICKER_DESIGNED' - AND pb.workerCode = vWorkerCode - -- AND LENGTH(pb.problem) = 0 - ; - + + -- 05/08/2021 PAK Jose Frau pide que los tickets de recogida en Algemesí sólo se saquen si están asignados. + DELETE pb.* + FROM tmp.productionBuffer pb + JOIN vn.state s ON s.id = pb.state + WHERE pb.agency = 'REC_ALGEMESI' + AND s.code != 'PICKER_DESIGNED'; + + -- 2/3/2022 PAK Se acuerda con Pepe que los pedidos con riesgo no se sacan aunque se asignen. + DELETE pb.* + FROM tmp.productionBuffer pb + WHERE pb.problem LIKE '%RIESGO%'; + + -- Comprobamos si hay tickets asignados. En ese caso, nos centramos exclusivamente en esos tickets + -- y los sacamos independientemente de problemas o tamaños + SELECT COUNT(*) INTO hasAssignedTickets + FROM tmp.productionBuffer pb + JOIN vn.state s ON s.id = pb.state + WHERE s.code = 'PICKER_DESIGNED' + AND pb.workerCode = vWorkerCode; + IF hasAssignedTickets THEN - - UPDATE vn.collection - SET itemPackingTypeFk = NULL + + UPDATE vn.collection + SET itemPackingTypeFk = NULL WHERE id = vCollectionFk; - + DROP TEMPORARY TABLE IF EXISTS tmp.ticketToSplit; CREATE TEMPORARY TABLE tmp.ticketToSplit SELECT pb.ticketFk FROM tmp.productionBuffer pb JOIN vn.state s ON s.id = pb.state - WHERE s.code = 'PICKER_DESIGNED' + WHERE s.code = 'PICKER_DESIGNED' AND pb.workerCode = vWorkerCode - ORDER BY HH, - mm, - s.`order` DESC, + ORDER BY HH, + mm, + s.`order` DESC, pb.m3 DESC; - - WHILE (SELECT COUNT(*) FROM tmp.ticketToSplit) DO - + + WHILE (SELECT COUNT(*) FROM tmp.ticketToSplit) DO + SELECT MIN(ticketFk) INTO vTicketToSplit FROM tmp.ticketToSplit; - - CALL vn.ticket_splitItemPackingType(vTicketToSplit); - + + CALL vn.ticket_splitItemPackingType(vTicketToSplit,IFNULL(vItemPackingTypeFk, 'H')); + INSERT INTO vn.ticketCollection(ticketFk, collectionFk) SELECT ticketFk, vCollectionFk FROM tmp.ticketIPT - WHERE (itemPackingTypeFk = vItemPackingTypeFk) ; - + WHERE (itemPackingTypeFk = vItemPackingTypeFk) ; + DELETE FROM tmp.ticketToSplit WHERE ticketFk = vTicketToSplit; - + DROP TEMPORARY TABLE tmp.ticketIPT; - + END WHILE; - + CALL vn.productionControl(vWarehouseFk, 0); - + ELSE - - SELECT COUNT(*) INTO vPrintedTickets + + SELECT COUNT(*) INTO vPrintedTickets FROM tmp.productionBuffer pb JOIN vn.state s ON s.id = pb.state JOIN vn.agencyMode am ON am.id = pb.agencyModeFk - JOIN vn.agency a ON a.id = am.agencyFk - WHERE pb.shipped = CURDATE() - AND (pb.ubicacion IS NOT NULL OR a.isOwn = FALSE ) + JOIN vn.agency a ON a.id = am.agencyFk + JOIN vn.productionConfig pc + WHERE pb.shipped = util.VN_CURDATE() + AND (pb.ubicacion IS NOT NULL + OR a.isOwn = FALSE ) AND s.isPreparable - AND (pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH) - OR pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV) - OR pb.N > 0 AND ISNULL(pb.collectionH)); - + AND ( + (pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH)) + OR (pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV)) + OR (pb.H = 0 AND pb.V = 0 AND pb.N > 0 AND ISNULL(pb.collectionH) AND ISNULL(pb.collectionV)) + ) + AND (pc.isPreviousPreparationRequired = FALSE + OR pb.previousWithoutParking = FALSE); + SET vMaxTicketPrinted = vMaxTicketPrinted - vPrintedTickets; - -- AutoPRINT - - IF vMaxTicketPrinted > 0 THEN - - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT s2.id, pb.ticketFk, vn.getUser() - FROM tmp.productionBuffer pb - JOIN vn.agencyMode am ON am.id = pb.agencyModeFk - JOIN vn.agency a ON a.id = am.agencyFk - JOIN vn.state s ON s.id = pb.state - JOIN vn.state s2 ON s2.code = 'PRINTED_AUTO' - JOIN vn.ticket t ON t.id = pb.ticketFk - JOIN vn.ticketConfig tc - WHERE pb.shipped = CURDATE() - AND (LENGTH(pb.problem) = 0 OR (pb.problem = 'PEQUEÑO' AND vTrainFk = 2)) - AND (pb.ubicacion IS NOT NULL OR a.isOwn = FALSE ) - AND s.isPrintable - AND s.isOK - AND (pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH) - OR pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV) - OR pb.N > 0 AND ISNULL(pb.collectionH)) - AND t.created < TIMESTAMPADD(MINUTE, - tc.pickingDelay , NOW()) - ORDER BY HH, - mm, - s.`order` DESC, - pb.m3 DESC - LIMIT vMaxTicketPrinted; - - END IF; - + + -- AutoPRINT + + INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) + SELECT s2.id, pb.ticketFk, vUserFk + FROM tmp.productionBuffer pb + JOIN vn.agencyMode am ON am.id = pb.agencyModeFk + JOIN vn.agency a ON a.id = am.agencyFk + JOIN vn.state s ON s.id = pb.state + JOIN vn.state s2 ON s2.code = 'PRINTED_AUTO' + JOIN vn.ticket t ON t.id = pb.ticketFk + JOIN vn.ticketConfig tc + JOIN vn.productionConfig pc + WHERE pb.shipped = util.VN_CURDATE() + AND (LENGTH(pb.problem) = 0 + OR (pb.problem = 'PEQUEÑO' AND vTrainFk = 2)) + AND (pb.ubicacion IS NOT NULL + OR a.isOwn = FALSE ) + AND s.isPrintable + AND s.isOK + AND ( + (pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH)) + OR (pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV)) + OR (pb.H = 0 AND pb.V = 0 AND pb.N > 0 AND ISNULL(pb.collectionH) AND ISNULL(pb.collectionV)) + ) + AND t.created < TIMESTAMPADD(MINUTE, - tc.pickingDelay , util.VN_NOW()) + AND (pc.isPreviousPreparationRequired = FALSE + OR pb.previousWithoutParking = FALSE) + ORDER BY HH, + mm, + s.`order` DESC, + pb.m3 DESC + LIMIT vMaxTicketPrinted; + -- Se seleccionan los primeros tickets, asignando colección para dejarlos bloqueados a otros sacadores. - -- Se splitan los tickets preparables, para que solo tengan un tipo de empaquetado - + -- Se splitan los tickets preparables, para que solo tengan un tipo de empaquetado + DROP TEMPORARY TABLE IF EXISTS tmp.ticketToSplit; CREATE TEMPORARY TABLE tmp.ticketToSplit - SELECT pb.ticketFk + SELECT pb.ticketFk, (pb.H + pb.V = 0) isNeutral FROM tmp.productionBuffer pb JOIN vn.agencyMode am ON am.id = pb.agencyModeFk - JOIN vn.agency a ON a.id = am.agencyFk + JOIN vn.agency a ON a.id = am.agencyFk JOIN vn.ticketStateToday tst ON tst.ticket = pb.ticketFk JOIN vn.state s ON s.id = tst.state - WHERE ( pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH) - OR pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV)) - AND (pb.ubicacion IS NOT NULL OR a.isOwn = FALSE ) + JOIN vn.productionConfig pc + WHERE ( + (pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH)) + OR (pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV)) + OR (pb.H = 0 AND pb.V = 0 AND pb.N > 0 AND ISNULL(pb.collectionH) AND ISNULL(pb.collectionV)) + ) + AND (pb.ubicacion IS NOT NULL + OR a.isOwn = FALSE ) AND LENGTH(pb.problem) = 0 AND s.isPreparable + AND (pc.isPreviousPreparationRequired = FALSE + OR pb.previousWithoutParking = FALSE) ORDER BY pb.HH, pb.mm, s.`order` DESC LIMIT vMaxTickets; - - WHILE (SELECT COUNT(*) FROM tmp.ticketToSplit) DO - + + WHILE (SELECT COUNT(*) FROM tmp.ticketToSplit) DO + SELECT MIN(ticketFk) INTO vTicketToSplit FROM tmp.ticketToSplit; - - CALL vn.ticket_splitItemPackingType(vTicketToSplit); - - INSERT INTO vn.ticketCollection(ticketFk, collectionFk) - SELECT ticketFk, vCollectionFk - FROM tmp.ticketIPT - WHERE itemPackingTypeFk = vItemPackingTypeFk; - + + + IF (SELECT isNeutral + FROM tmp.ticketToSplit + WHERE ticketFk = vTicketToSplit) THEN + + INSERT INTO vn.ticketCollection(ticketFk, collectionFk) + VALUES(vTicketToSplit, vCollectionFk); + + ELSE + + CALL vn.ticket_splitItemPackingType(vTicketToSplit, vItemPackingTypeFk); + + INSERT INTO vn.ticketCollection(ticketFk, collectionFk) + SELECT ticketFk, vCollectionFk + FROM tmp.ticketIPT + WHERE itemPackingTypeFk = vItemPackingTypeFk; + + DROP TEMPORARY TABLE tmp.ticketIPT; + + END IF; + DELETE FROM tmp.ticketToSplit WHERE ticketFk = vTicketToSplit; - - DROP TEMPORARY TABLE tmp.ticketIPT; - + END WHILE; - + END IF; - -- Creamos una tabla temporal con los datos que necesitamos para depurar la colección - DROP TEMPORARY TABLE IF EXISTS tmp.ticket; - CREATE TEMPORARY TABLE tmp.ticket - SELECT pb.ticketFk, - pb.`lines`, - pb.m3 * 1000 liters, - 0 as height, - 0 as shelve, - 0 as wagon, - 0 AS shelveLiters, - pb.productionOrder, - pb.HH, - pb.mm + -- Creamos una tabla temporal con los datos que necesitamos para depurar la colección + DROP TEMPORARY TABLE IF EXISTS tmp.ticket; + CREATE TEMPORARY TABLE tmp.ticket + SELECT pb.ticketFk, + pb.`lines`, + pb.m3 * 1000 liters, + 0 as height, + 0 as shelve, + 0 as wagon, + 0 AS shelveLiters, + pb.productionOrder, + pb.HH, + pb.mm FROM tmp.productionBuffer pb JOIN vn.ticketCollection tc ON tc.ticketFk = pb.ticketFk - WHERE tc.collectionFk = vCollectionFk - LIMIT vMaxTickets; - + WHERE tc.collectionFk = vCollectionFk + LIMIT vMaxTickets; + -- Voumen de las lineas de los pedidos, de acuerdo con el packingShelve establecido por los controladores - DROP TEMPORARY TABLE IF EXISTS tmp.ticketShelveLiters; - CREATE TEMPORARY TABLE tmp.ticketShelveLiters - SELECT t.ticketFk, SUM(s.quantity * vc.shelveVolume / i.packingShelve) shelveLiters - FROM tmp.ticket t - JOIN vn.sale s ON s.ticketFk = t.ticketFk - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.volumeConfig vc - WHERE i.packingShelve - GROUP BY t.ticketFk; - - UPDATE tmp.ticket t - JOIN tmp.ticketShelveLiters tsl ON tsl.ticketFk = t.ticketFk - SET t.shelveLiters = tsl.shelveLiters; - - -- Es importante que el primer ticket se coja en todos los casos - SET vFirstTicketFk = 0; - - SELECT ticketFk, HH, mm + DROP TEMPORARY TABLE IF EXISTS tmp.ticketShelveLiters; + CREATE TEMPORARY TABLE tmp.ticketShelveLiters + SELECT t.ticketFk, SUM(s.quantity * vc.shelveVolume / i.packingShelve) shelveLiters + FROM tmp.ticket t + JOIN vn.sale s ON s.ticketFk = t.ticketFk + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.volumeConfig vc + WHERE i.packingShelve + GROUP BY t.ticketFk; + + UPDATE tmp.ticket t + JOIN tmp.ticketShelveLiters tsl ON tsl.ticketFk = t.ticketFk + SET t.shelveLiters = tsl.shelveLiters; + + -- Es importante que el primer ticket se coja en todos los casos + + SET vFirstTicketFk = 0; + + SELECT ticketFk, HH, mm INTO vFirstTicketFk, vHour, vMinute FROM tmp.ticket ORDER BY productionOrder DESC, HH, mm - LIMIT 1; - + LIMIT 1; + -- Hay que excluir aquellos que no tengan la misma hora de preparación - DELETE - FROM tmp.ticket - WHERE HH != vHour - OR mm != vMinute; - - -- En el caso de pedidos de más volumen de un carro, la colección será monoticket. Pero si el primer pedido - -- no es monoticket, excluimos a los de más de un carro - IF (SELECT (t.shelveLiters > vc.trolleyM3 * 1000) - FROM tmp.ticket t - JOIN vn.volumeConfig vc + IF vHourMatters THEN + + DELETE + FROM tmp.ticket + WHERE HH != vHour + OR mm != vMinute; + + END IF; + + -- En el caso de pedidos de más volumen de un carro, la colección será monoticket. Pero si el primer pedido + -- no es monoticket, excluimos a los de más de un carro + IF (SELECT (t.shelveLiters > vc.trolleyM3 * 1000) + FROM tmp.ticket t + JOIN vn.volumeConfig vc WHERE t.ticketFk = vFirstTicketFk) THEN - - DELETE - FROM tmp.ticket - WHERE ticketFk != vFirstTicketFk; - + + DELETE + FROM tmp.ticket + WHERE ticketFk != vFirstTicketFk; + ELSE - + DELETE t.* - FROM tmp.ticket t - JOIN vn.volumeConfig vc - WHERE t.shelveLiters > vc.trolleyM3 * 1000; - - END IF; - - -- Elimina los tickets bloqueados que no se van a preparar - DELETE tc.* + FROM tmp.ticket t + JOIN vn.volumeConfig vc + WHERE t.shelveLiters > vc.trolleyM3 * 1000; + + END IF; + + -- Elimina los tickets bloqueados que no se van a preparar + DELETE tc.* FROM vn.ticketCollection tc - LEFT JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk + LEFT JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk + WHERE tc.collectionFk = vCollectionFk AND t.ticketFk IS NULL; - - /* - * - * Construccion del tren - * - */ - - -- Establece altura máxima por pedido, porque las plantas no se pueden recostar. + + -- Construccion del tren + + -- Establece altura máxima por pedido, porque las plantas no se pueden recostar. UPDATE tmp.ticket t JOIN - ( SELECT MAX(i.size) maxHeigth, + ( SELECT MAX(i.size) maxHeigth, tc.ticketFk FROM vn.ticketCollection tc JOIN vn.sale s ON s.ticketFk = tc.ticketFk @@ -54857,27 +50431,27 @@ proc:BEGIN AND tc.collectionFk = vCollectionFk GROUP BY tc.ticketFk) sub ON sub.ticketFk = t.ticketFk SET t.height = IFNULL(sub.maxHeigth,0); - + -- Vamos a generar una tabla con todas las posibilidades de asignacion de pedido - DROP TEMPORARY TABLE IF EXISTS tmp.wagonsVolumetry; - CREATE TEMPORARY TABLE tmp.wagonsVolumetry - SELECT cv.`level` as shelve, + DROP TEMPORARY TABLE IF EXISTS tmp.wagonsVolumetry; + CREATE TEMPORARY TABLE tmp.wagonsVolumetry + SELECT cv.`level` as shelve, 1 as wagon, - cv.`lines`, - cv.liters, - cv.height + cv.`lines`, + cv.liters, + cv.height FROM vn.collectionVolumetry cv WHERE cv.itemPackingTypeFk = IFNULL(vItemPackingTypeFk, 'H') AND cv.trainFk = vTrainFk; - + SET vWagonCounter = 1; - - WHILE vWagonCounter < vWagons DO - + + WHILE vWagonCounter < vWagons DO + SET vWagonCounter = vWagonCounter + 1; - + INSERT INTO tmp.wagonsVolumetry(shelve, wagon, `lines`, liters, height) - SELECT cv.`level` as shelve, + SELECT cv.`level` as shelve, vWagonCounter as wagon, cv.`lines`, cv.liters, @@ -54885,19 +50459,19 @@ proc:BEGIN FROM vn.collectionVolumetry cv WHERE cv.itemPackingTypeFk = IFNULL(vItemPackingTypeFk, 'H') AND cv.trainFk = vTrainFk; - + END WHILE; - + DROP TEMPORARY TABLE IF EXISTS tmp.ticketShelve; CREATE TEMPORARY TABLE tmp.ticketShelve SELECT ticketFk, shelve, wagon, linesDif, LitersDif, heightDif FROM ( SELECT t.ticketFk, - wv.shelve, - wv.wagon, - t.productionOrder, - CAST(wv.`lines` AS SIGNED) - t.`lines` as linesDif, - CAST(wv.liters AS SIGNED) - t.shelveLiters as litersDif, + wv.shelve, + wv.wagon, + t.productionOrder, + CAST(wv.`lines` AS SIGNED) - t.`lines` as linesDif, + CAST(wv.liters AS SIGNED) - t.shelveLiters as litersDif, CAST(wv.height AS SIGNED) - t.height as heightDif FROM tmp.wagonsVolumetry wv JOIN tmp.ticket t @@ -54906,1814 +50480,236 @@ proc:BEGIN AND litersDif >= 0 AND heightDif >= 0 ORDER BY productionOrder DESC, linesDif, LitersDif, heightDif ; - - -- Insertamos una opcion virtual para carro completo. Todo ticket tiene que poder entrar en un carro completo.... - INSERT INTO tmp.ticketShelve(ticketFk, shelve, wagon, linesDif, LitersDif, heightDif) + + -- Insertamos una opcion virtual para carro completo. Todo ticket tiene que poder entrar en un carro completo.... + INSERT INTO tmp.ticketShelve(ticketFk, shelve, wagon, linesDif, LitersDif, heightDif) SELECT t.ticketFk, 0, wv.wagon, 999, 999,999 FROM tmp.ticket t - JOIN tmp.wagonsVolumetry wv - GROUP BY t.ticketFk, wv.wagon; - - SET vWagonCounter = 0; - - WHILE vWagonCounter < vWagons DO - + JOIN tmp.wagonsVolumetry wv + GROUP BY t.ticketFk, wv.wagon; + + SET vWagonCounter = 0; + + WHILE vWagonCounter < vWagons DO + SET vWagonCounter = vWagonCounter + 1; - + -- Asignamos la primera balda util al primer pedido - IF vWagonCounter = 1 THEN - + IF vWagonCounter = 1 THEN + SELECT shelve INTO vShelve FROM tmp.ticketShelve WHERE ticketFk = vFirstTicketFk AND wagon = vWagonCounter ORDER BY heightDif, litersDif, linesDif LIMIT 1; - + ELSE - - SELECT shelve, ticketFk INTO vShelve, vFirstTicketFk + + SELECT shelve, ticketFk INTO vShelve, vFirstTicketFk FROM tmp.ticketShelve WHERE wagon = vWagonCounter - ORDER BY heightDif, litersDif, linesDif + ORDER BY heightDif, litersDif, linesDif LIMIT 1; - + END IF; - + IF vShelve > 0 THEN - - UPDATE tmp.ticket + + UPDATE tmp.ticket SET shelve = vShelve, wagon = vWagonCounter WHERE ticketFk = vFirstTicketFk; - + DELETE FROM tmp.ticketShelve WHERE ticketFk = vFirstTicketFk OR (shelve = vShelve AND wagon = vWagonCounter); - + WHILE (SELECT COUNT(*) FROM tmp.ticketShelve WHERE wagon = vWagonCounter) DO - + SELECT ticketFk, shelve INTO vTicket, vShelve FROM tmp.ticketShelve WHERE wagon = vWagonCounter LIMIT 1; - - UPDATE tmp.ticket + + UPDATE tmp.ticket SET shelve = vShelve, wagon = vWagonCounter WHERE ticketFk = vTicket; - + DELETE FROM tmp.ticketShelve WHERE ticketFk = vTicket OR (shelve = vShelve AND wagon = vWagonCounter); - + END WHILE; - - ELSE - - UPDATE tmp.ticket + + ELSE + + UPDATE tmp.ticket SET shelve = 1, wagon = vWagonCounter WHERE ticketFk = vFirstTicketFk; - + DELETE FROM tmp.ticketShelve WHERE ticketFk = vFirstTicketFk AND wagon != vWagonCounter; - + END IF; - + END WHILE; -- Eliminamos los que se han quedado sin balda DELETE FROM tmp.ticket WHERE shelve = 0; - -- Elimina los tickets bloqueados que no se van a preparar - DELETE tc.* + -- Elimina los tickets bloqueados que no se van a preparar + DELETE tc.* FROM vn.ticketCollection tc - LEFT JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk + LEFT JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk + WHERE tc.collectionFk = vCollectionFk AND t.ticketFk IS NULL; - + -- Elimina los tickets que ya estan en otra coleccion - DELETE tc.* + DELETE tc.* FROM vn.ticketCollection tc - JOIN vn.ticketCollection tc2 ON tc2.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND tc2.collectionFk != vCollectionFk; - - -- Actualiza el estado de la colección - UPDATE vn.collection c + JOIN vn.ticketCollection tc2 ON tc2.ticketFk = tc.ticketFk + WHERE tc.collectionFk = vCollectionFk + AND tc2.collectionFk != vCollectionFk; + + -- Actualiza el estado de la colección + UPDATE vn.collection c JOIN vn.state st ON st.code = 'ON_PREPARATION' - SET c.stateFk = st.id - WHERE c.id = vCollectionFk; - + SET c.stateFk = st.id + WHERE c.id = vCollectionFk; + -- Asigna las bandejas - UPDATE vn.ticketCollection tc + UPDATE vn.ticketCollection tc JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk - SET tc.level = t.shelve, - tc.wagon = t.wagon, - tc.itemCount = t.`lines`, - tc.liters = t.shelveLiters; + SET tc.level = t.shelve, + tc.wagon = t.wagon, + tc.itemCount = t.`lines`, + tc.liters = t.shelveLiters; -- Actualiza el estado de los tickets INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT vStateFk, ticketFk, account.myUser_getId() - FROM vn.ticketCollection tc - WHERE tc.collectionFk = vCollectionFk; - - -- Aviso para la preparacion previa + SELECT vStateFk, ticketFk, vUserFk + FROM vn.ticketCollection tc + WHERE tc.collectionFk = vCollectionFk; + + -- Aviso para la preparacion previa INSERT INTO vn.ticketDown(ticketFk, collectionFk) SELECT tc.ticketFk, tc.collectionFk - FROM vn.ticketCollection tc - WHERE tc.collectionFk = vCollectionFk; - - IF (SELECT count(*) FROM vn.ticketCollection WHERE collectionFk = vCollectionFk) THEN - - CALL vn.salesMerge_byCollection(vCollectionFk); - - UPDATE vn.collection c - JOIN (SELECT count(*) saleTotalCount , - sum(s.isPicked != 0) salePickedCount - FROM vn.ticketCollection tc - JOIN vn.sale s ON s.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND s.quantity > 0 - ) sub - SET c.saleTotalCount = sub.saleTotalCount, - c.salePickedCount = sub.salePickedCount - WHERE c.id = vCollectionFk; - - SELECT vCollectionFk; - - ELSE - - DELETE FROM vn.collection WHERE id = vCollectionFk; - -- SELECT NULL; - - END IF; - - DROP TEMPORARY TABLE tmp.ticketToSplit; - DROP TEMPORARY TABLE tmp.ticketShelveLiters; - DROP TEMPORARY TABLE tmp.ticket; - DROP TEMPORARY TABLE tmp.wagonsVolumetry; - DROP TEMPORARY TABLE tmp.ticketShelve; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `collection_newWithWagon_beta` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_newWithWagon_beta`(vSectorFk INT, vWagons INT) -proc:BEGIN + FROM vn.ticketCollection tc + WHERE tc.collectionFk = vCollectionFk; - DECLARE vIsPreviousPrepared BOOLEAN; - DECLARE vCollectionFk INT; - DECLARE vWarehouseFk INT; - DECLARE vMaxTickets INT; - DECLARE vStateFk INT; - DECLARE vFirstTicketFk INT; - DECLARE vHour INT; - DECLARE vMinute INT; - DECLARE vWorkerCode VARCHAR(3); - DECLARE vWagon INT; - DECLARE vWagonCounter INT; - DECLARE vShelve INT; - DECLARE vTicket INT; - DECLARE vTicketToSplit INT; - DECLARE vPrintedTickets INT; - DECLARE vMaxTicketPrinted INT; - DECLARE vItemPackingTypeFk VARCHAR(1); - DECLARE hasAssignedTickets BOOLEAN; - DECLARE vMaxNotReadyCollections INT DEFAULT 0; - DECLARE vNotReadyCollections INT; - DECLARE vTrainFk INT DEFAULT 1; + IF (SELECT count(*) FROM vn.ticketCollection WHERE collectionFk = vCollectionFk) THEN - /*IF NOT vn.deviceProductionUser_Exists(vn.getUser()) THEN - - LEAVE proc; - - END IF;*/ + CALL vn.salesMerge_byCollection(vCollectionFk); - CALL util.debugAdd('vn.collection_newWithWagon',CONCAT('sector: ',vSectorFk,' wagons:',vWagons)); - - - SELECT w.code INTO vWorkerCode - FROM vn.worker w - WHERE w.id = vn.getUser(); - - -- Establecemos el almacén y si es un sector de preparación previa, así como el estado para los tickets que se vayan preparando - SELECT isPreviousPrepared, warehouseFk, itemPackingTypeFk - INTO vIsPreviousPrepared, vWarehouseFk, vItemPackingTypeFk - FROM vn.sector - WHERE id = vSectorFk; - --- Si está habilitado el modo cazador para las motos, y el usuario no está registrado, se sale. - - IF (SELECT isTractorHuntingMode FROM vn.deviceProductionConfig dpc) AND vItemPackingTypeFk = 'H' THEN - IF (SELECT COUNT(*) FROM vn.workerWithoutTractor wwt WHERE wwt.workerFk = account.userGetId()) THEN - INSERT INTO tmp.kk(userFk) VALUES(vn.getUser()); - LEAVE proc; - END IF; - END IF; - - --- Si hay colecciones sin terminar, sale del proceso - SELECT count(*) INTO vNotReadyCollections - FROM vn.collection c - WHERE c.workerFk = vn.getUser() - AND c.saleTotalCount > c.salePickedCount + 1 - AND c.created > TIMESTAMPADD(HOUR , -5,NOW()); - - IF vMaxNotReadyCollections < vNotReadyCollections THEN - - LEAVE proc; - - END IF; - - SET vMaxTicketPrinted = 8 * vWagons; - SET vMaxTickets = 4 * vWagons; - - IF vIsPreviousPrepared THEN - - LEAVE proc; -- Hasta que tengamos el altillo, vamos a cancelar esta opcion - - SELECT id INTO vStateFk - FROM vn.state - WHERE `code` = 'PREVIOUS_PREPARATION'; - ELSE - - SELECT id INTO vStateFk - FROM vn.state - WHERE `code` = 'ON_PREPARATION'; - - END IF; - - CALL vn.productionControl(vWarehouseFk, 0); - - -- Esto hay que corregirlo añadiendo un nuevo parámetro al proc. PAK 23/12/21 - IF vSectorFk = 65 THEN - - SET vTrainFk = 2; - - DELETE pb.* - FROM tmp.productionBuffer pb - JOIN vn.volumeConfig vc - WHERE pb.m3 * 1000 > vc.minTicketVolume; - - END IF; - - -- Se obtiene nº de colección y el buffer con los pedidos preparables - INSERT INTO vn.collection - SET workerFk = account.myUser_getId(), - itemPackingTypeFk = vItemPackingTypeFk, - trainFk = vTrainFk; - - SELECT LAST_INSERT_ID() INTO vCollectionFk; - - - -- 05/08/2021 PAK Jose Frau pide que los tickets de recogida en Algemesí sólo se saquen si están asignados. - DELETE pb.* - FROM tmp.productionBuffer pb - JOIN vn.state s ON s.id = pb.state - WHERE pb.agency = 'REC_ALGEMESI' - AND s.code != 'PICKER_DESIGNED'; - - -- Comprobamos si hay tickets asignados. En ese caso, nos centramos exclusivamente en esos tickets - -- y los sacamos independientemente de problemas o tamaños - SELECT COUNT(*) INTO hasAssignedTickets - FROM tmp.productionBuffer pb - JOIN vn.state s ON s.id = pb.state - WHERE s.code = 'PICKER_DESIGNED' - AND pb.workerCode = vWorkerCode - -- AND LENGTH(pb.problem) = 0 - ; - - IF hasAssignedTickets THEN - - UPDATE vn.collection - SET itemPackingTypeFk = NULL - WHERE id = vCollectionFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketToSplit; - CREATE TEMPORARY TABLE tmp.ticketToSplit - SELECT pb.ticketFk - FROM tmp.productionBuffer pb - JOIN vn.state s ON s.id = pb.state - WHERE s.code = 'PICKER_DESIGNED' - AND pb.workerCode = vWorkerCode - ORDER BY HH, - mm, - s.`order` DESC, - pb.m3 DESC; - - WHILE (SELECT COUNT(*) FROM tmp.ticketToSplit) DO - - SELECT MIN(ticketFk) INTO vTicketToSplit - FROM tmp.ticketToSplit; - - CALL vn.ticket_splitItemPackingType(vTicketToSplit); - - INSERT INTO vn.ticketCollection(ticketFk, collectionFk) - SELECT ticketFk, vCollectionFk - FROM tmp.ticketIPT - WHERE (itemPackingTypeFk = vItemPackingTypeFk) ; - - DELETE FROM tmp.ticketToSplit - WHERE ticketFk = vTicketToSplit; - - DROP TEMPORARY TABLE tmp.ticketIPT; - - END WHILE; - - CALL vn.productionControl(vWarehouseFk, 0); - - ELSE - - SELECT COUNT(*) INTO vPrintedTickets - FROM tmp.productionBuffer pb - JOIN vn.state s ON s.id = pb.state - JOIN vn.agencyMode am ON am.id = pb.agencyModeFk - JOIN vn.agency a ON a.id = am.agencyFk - WHERE pb.shipped = CURDATE() - AND (pb.ubicacion IS NOT NULL OR a.isOwn = FALSE ) - AND s.isPreparable - AND (pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH) - OR pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV) - OR pb.F > 0 AND vItemPackingTypeFk = 'F' AND ISNULL(pb.collectionF) - OR pb.P > 0 AND vItemPackingTypeFk = 'P' AND ISNULL(pb.collectionP)); - - SET vMaxTicketPrinted = vMaxTicketPrinted - vPrintedTickets; - -- AutoPRINT - - IF vMaxTicketPrinted > 0 THEN - - CALL util.debugAdd('PAK vMaxTicketPrinted',vMaxTicketPrinted); - - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT s2.id, pb.ticketFk, vn.getUser() - FROM tmp.productionBuffer pb - JOIN vn.agencyMode am ON am.id = pb.agencyModeFk - JOIN vn.agency a ON a.id = am.agencyFk - JOIN vn.state s ON s.id = pb.state - JOIN vn.state s2 ON s2.code = 'PRINTED_AUTO' - JOIN vn.ticket t ON t.id = pb.ticketFk - JOIN vn.ticketConfig tc - WHERE pb.shipped = CURDATE() - AND (LENGTH(pb.problem) = 0 OR (pb.problem = 'PEQUEÑO' AND vTrainFk = 2)) - AND (pb.ubicacion IS NOT NULL OR a.isOwn = FALSE ) - AND s.isPrintable - AND s.isOK - AND (pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH) - OR pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV) - OR pb.F > 0 AND vItemPackingTypeFk = 'F' AND ISNULL(pb.collectionF) - OR pb.P > 0 AND vItemPackingTypeFk = 'P' AND ISNULL(pb.collectionP)) - AND t.created < TIMESTAMPADD(MINUTE, - tc.pickingDelay , NOW()) - ORDER BY HH, - mm, - s.`order` DESC, - pb.m3 DESC - LIMIT vMaxTicketPrinted; - - END IF; - - -- Se seleccionan los primeros tickets, asignando colección para dejarlos bloqueados a otros sacadores. - -- Se splitan los tickets preparables, para que solo tengan un tipo de empaquetado - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketToSplit; - CREATE TEMPORARY TABLE tmp.ticketToSplit - SELECT pb.ticketFk - FROM tmp.productionBuffer pb - JOIN vn.agencyMode am ON am.id = pb.agencyModeFk - JOIN vn.agency a ON a.id = am.agencyFk - JOIN vn.ticketStateToday tst ON tst.ticket = pb.ticketFk - JOIN vn.state s ON s.id = tst.state - WHERE ( pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH) - OR pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV) - OR pb.P > 0 AND vItemPackingTypeFk = 'P' AND ISNULL(pb.collectionP)) - AND (pb.ubicacion IS NOT NULL OR a.isOwn = FALSE ) - AND (LENGTH(pb.problem) = 0 OR (pb.problem = 'PEQUEÑO' AND vTrainFk = 2)) - AND s.isPreparable - ORDER BY pb.HH, pb.mm, s.`order` DESC - LIMIT vMaxTickets; - - WHILE (SELECT COUNT(*) FROM tmp.ticketToSplit) DO - - SELECT MIN(ticketFk) INTO vTicketToSplit - FROM tmp.ticketToSplit; - - CALL vn.ticket_splitItemPackingType(vTicketToSplit); - - INSERT INTO vn.ticketCollection(ticketFk, collectionFk) - SELECT ticketFk, vCollectionFk - FROM tmp.ticketIPT - WHERE itemPackingTypeFk = vItemPackingTypeFk; - - DELETE FROM tmp.ticketToSplit - WHERE ticketFk = vTicketToSplit; - - DROP TEMPORARY TABLE tmp.ticketIPT; - - END WHILE; - - END IF; - - -- Creamos una tabla temporal con los datos que necesitamos para depurar la colección - DROP TEMPORARY TABLE IF EXISTS tmp.ticket; - CREATE TEMPORARY TABLE tmp.ticket - SELECT pb.ticketFk, - pb.`lines`, - pb.m3 * 1000 liters, - 0 as height, - 0 as shelve, - 0 as wagon, - 0 AS shelveLiters, - pb.productionOrder, - pb.HH, - pb.mm - FROM tmp.productionBuffer pb - JOIN vn.ticketCollection tc ON tc.ticketFk = pb.ticketFk - WHERE tc.collectionFk = vCollectionFk - LIMIT vMaxTickets; - - - -- Voumen de las lineas de los pedidos, de acuerdo con el packingShelve establecido por los controladores - DROP TEMPORARY TABLE IF EXISTS tmp.ticketShelveLiters; - CREATE TEMPORARY TABLE tmp.ticketShelveLiters - SELECT t.ticketFk, SUM(s.quantity * vc.shelveVolume / i.packingShelve) shelveLiters - FROM tmp.ticket t - JOIN vn.sale s ON s.ticketFk = t.ticketFk - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.volumeConfig vc - WHERE i.packingShelve - GROUP BY t.ticketFk; - - UPDATE tmp.ticket t - JOIN tmp.ticketShelveLiters tsl ON tsl.ticketFk = t.ticketFk - SET t.shelveLiters = tsl.shelveLiters; - - -- Es importante que el primer ticket se coja en todos los casos - SET vFirstTicketFk = 0; - - SELECT ticketFk, HH, mm - INTO vFirstTicketFk, vHour, vMinute - FROM tmp.ticket - ORDER BY productionOrder DESC, HH, mm - LIMIT 1; - - -- Hay que excluir aquellos que no tengan la misma hora de preparación - DELETE - FROM tmp.ticket - WHERE HH != vHour - OR mm != vMinute; - - -- En el caso de pedidos de más volumen de un carro, la colección será monoticket. Pero si el primer pedido - -- no es monoticket, excluimos a los de más de un carro - IF (SELECT (t.shelveLiters > vc.trolleyM3 * 1000) - FROM tmp.ticket t - JOIN vn.volumeConfig vc - WHERE t.ticketFk = vFirstTicketFk) THEN - - DELETE - FROM tmp.ticket - WHERE ticketFk != vFirstTicketFk; - - ELSE - - DELETE t.* - FROM tmp.ticket t - JOIN vn.volumeConfig vc - WHERE t.shelveLiters > vc.trolleyM3 * 1000; - - END IF; - - -- Elimina los tickets bloqueados que no se van a preparar - DELETE tc.* - FROM vn.ticketCollection tc - LEFT JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND t.ticketFk IS NULL; - - - /* - * - * Construccion del tren - * - */ - - -- Establece altura máxima por pedido, porque las plantas no se pueden recostar. - UPDATE tmp.ticket t - JOIN - ( SELECT MAX(i.size) maxHeigth, - tc.ticketFk - FROM vn.ticketCollection tc - JOIN vn.collection c ON c.id = tc.collectionFk - JOIN vn.sale s ON s.ticketFk = tc.ticketFk - JOIN vn.item i ON i.id = s.itemFk - WHERE i.itemPackingTypeFk = 'V' - AND tc.collectionFk = vCollectionFk - AND c.trainFk = vTrainFk - GROUP BY tc.ticketFk) sub ON sub.ticketFk = t.ticketFk - SET t.height = IFNULL(sub.maxHeigth,0); - - -- Vamos a generar una tabla con todas las posibilidades de asignacion de pedido - DROP TEMPORARY TABLE IF EXISTS tmp.wagonsVolumetry; - CREATE TEMPORARY TABLE tmp.wagonsVolumetry - SELECT cv.`level` as shelve, - 1 as wagon, - cv.`lines`, - cv.liters, - cv.height - FROM vn.collectionVolumetry cv - WHERE cv.itemPackingTypeFk = IFNULL(vItemPackingTypeFk, 'H') - AND cv.trainFk = vTrainFk; - - SET vWagonCounter = 1; - - WHILE vWagonCounter < vWagons DO - - SET vWagonCounter = vWagonCounter + 1; - - INSERT INTO tmp.wagonsVolumetry(shelve, wagon, `lines`, liters, height) - SELECT cv.`level` as shelve, - vWagonCounter as wagon, - cv.`lines`, - cv.liters, - cv.height - FROM vn.collectionVolumetry cv - WHERE cv.itemPackingTypeFk = IFNULL(vItemPackingTypeFk, 'H') - AND cv.trainFk = vTrainFk; - - END WHILE; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketShelve; - CREATE TEMPORARY TABLE tmp.ticketShelve - SELECT ticketFk, shelve, wagon, linesDif, LitersDif, heightDif - FROM ( - SELECT t.ticketFk, - wv.shelve, - wv.wagon, - t.productionOrder, - CAST(wv.`lines` AS SIGNED) - t.`lines` as linesDif, - CAST(wv.liters AS SIGNED) - t.shelveLiters as litersDif, - CAST(wv.height AS SIGNED) - t.height as heightDif - FROM tmp.wagonsVolumetry wv - JOIN tmp.ticket t + UPDATE vn.collection c + JOIN (SELECT count(*) saleTotalCount , + sum(s.isPicked != 0) salePickedCount + FROM vn.ticketCollection tc + JOIN vn.sale s ON s.ticketFk = tc.ticketFk + WHERE tc.collectionFk = vCollectionFk + AND s.quantity > 0 ) sub - WHERE linesDif >= 0 - AND litersDif >= 0 - AND heightDif >= 0 - ORDER BY productionOrder DESC, linesDif, LitersDif, heightDif ; - - -- Insertamos una opcion virtual para carro completo. Todo ticket tiene que poder entrar en un carro completo.... - INSERT INTO tmp.ticketShelve(ticketFk, shelve, wagon, linesDif, LitersDif, heightDif) - SELECT t.ticketFk, 0, wv.wagon, 999, 999,999 - FROM tmp.ticket t - JOIN tmp.wagonsVolumetry wv - GROUP BY t.ticketFk, wv.wagon; - - SET vWagonCounter = 0; - - WHILE vWagonCounter < vWagons DO - - SET vWagonCounter = vWagonCounter + 1; - - -- Asignamos la primera balda util al primer pedido - IF vWagonCounter = 1 THEN - - SELECT shelve INTO vShelve - FROM tmp.ticketShelve - WHERE ticketFk = vFirstTicketFk - AND wagon = vWagonCounter - ORDER BY heightDif, litersDif, linesDif - LIMIT 1; - - ELSE - - SELECT shelve, ticketFk INTO vShelve, vFirstTicketFk - FROM tmp.ticketShelve - WHERE wagon = vWagonCounter - ORDER BY heightDif, litersDif, linesDif - LIMIT 1; - - END IF; - - IF vShelve > 0 THEN - - UPDATE tmp.ticket - SET shelve = vShelve, - wagon = vWagonCounter - WHERE ticketFk = vFirstTicketFk; - - DELETE FROM tmp.ticketShelve - WHERE ticketFk = vFirstTicketFk - OR (shelve = vShelve AND wagon = vWagonCounter); - - WHILE (SELECT COUNT(*) FROM tmp.ticketShelve WHERE wagon = vWagonCounter) DO - - SELECT ticketFk, shelve - INTO vTicket, vShelve - FROM tmp.ticketShelve - WHERE wagon = vWagonCounter - LIMIT 1; - - UPDATE tmp.ticket - SET shelve = vShelve, - wagon = vWagonCounter - WHERE ticketFk = vTicket; - - DELETE FROM tmp.ticketShelve - WHERE ticketFk = vTicket - OR (shelve = vShelve AND wagon = vWagonCounter); - - END WHILE; - - ELSE - - UPDATE tmp.ticket - SET shelve = 1, wagon = vWagonCounter - WHERE ticketFk = vFirstTicketFk; - - DELETE FROM tmp.ticketShelve - WHERE ticketFk = vFirstTicketFk - AND wagon != vWagonCounter; - - END IF; - - END WHILE; + SET c.saleTotalCount = sub.saleTotalCount, + c.salePickedCount = sub.salePickedCount + WHERE c.id = vCollectionFk; - -- Eliminamos los que se han quedado sin balda - DELETE FROM tmp.ticket WHERE shelve = 0; + SELECT vCollectionFk; + + ELSE + + CALL util.throw('No ha sido posible obtener colección'); + DELETE FROM vn.collection WHERE id = vCollectionFk; + + END IF; + + DROP TEMPORARY TABLE + tmp.ticketToSplit, + tmp.ticketShelveLiters, + tmp.ticket, + tmp.wagonsVolumetry, + tmp.ticketShelve, + tmp.productionBuffer; - -- Elimina los tickets bloqueados que no se van a preparar - DELETE tc.* - FROM vn.ticketCollection tc - LEFT JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND t.ticketFk IS NULL; - - -- Elimina los tickets que ya estan en otra coleccion - DELETE tc.* - FROM vn.ticketCollection tc - JOIN vn.ticketCollection tc2 ON tc2.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND tc2.collectionFk != vCollectionFk; - - -- Actualiza el estado de la colección - UPDATE vn.collection c - JOIN vn.state st ON st.code = 'ON_PREPARATION' - SET c.stateFk = st.id - WHERE c.id = vCollectionFk; - - -- Asigna las bandejas - UPDATE vn.ticketCollection tc - JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk - SET tc.level = t.shelve, - tc.wagon = t.wagon, - tc.itemCount = t.`lines`, - tc.liters = t.shelveLiters; - -- Actualiza el estado de los tickets - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT vStateFk, ticketFk, account.myUser_getId() - FROM vn.ticketCollection tc - WHERE tc.collectionFk = vCollectionFk; - - -- Aviso para la preparacion previa - INSERT INTO vn.ticketDown(ticketFk, collectionFk) - SELECT tc.ticketFk, tc.collectionFk - FROM vn.ticketCollection tc - WHERE tc.collectionFk = vCollectionFk; - - IF (SELECT count(*) FROM vn.ticketCollection WHERE collectionFk = vCollectionFk) THEN - - CALL vn.salesMerge_byCollection(vCollectionFk); - - UPDATE vn.collection c - JOIN (SELECT count(*) saleTotalCount , - sum(s.isPicked != 0) salePickedCount - FROM vn.ticketCollection tc - JOIN vn.sale s ON s.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND s.quantity > 0 - ) sub - SET c.saleTotalCount = sub.saleTotalCount, - c.salePickedCount = sub.salePickedCount - WHERE c.id = vCollectionFk; - - SELECT vCollectionFk; - - ELSE - - DELETE FROM vn.collection WHERE id = vCollectionFk; - -- SELECT NULL; - - END IF; - - DROP TEMPORARY TABLE tmp.ticketToSplit; - DROP TEMPORARY TABLE tmp.ticketShelveLiters; - DROP TEMPORARY TABLE tmp.ticket; - DROP TEMPORARY TABLE tmp.wagonsVolumetry; - DROP TEMPORARY TABLE tmp.ticketShelve; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `collection_newWithWagon__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_newWithWagon__`(vSectorFk INT, vWagons INT) -proc:BEGIN - - DECLARE vIsPreviousPrepared BOOLEAN; - DECLARE vCollectionFk INT; - DECLARE vWarehouseFk INT; - DECLARE vMaxTickets INT; - DECLARE vStateFk INT; - DECLARE vFirstTicketFk INT; - DECLARE vHour INT; - DECLARE vMinute INT; - DECLARE vWorkerCode VARCHAR(3); - DECLARE vWagon INT; - DECLARE vWagonCounter INT; - DECLARE vShelve INT; - DECLARE vTicket INT; - DECLARE vTicketToSplit INT; - DECLARE vPrintedTickets INT; - DECLARE vMaxTicketPrinted INT; - DECLARE vItemPackingTypeFk VARCHAR(1); - DECLARE hasAssignedTickets BOOLEAN; - DECLARE vMaxNotReadyCollections INT DEFAULT 0; - DECLARE vNotReadyCollections INT; - - /*IF NOT vn.deviceProductionUser_Exists(vn.getUser()) THEN - - LEAVE proc; - - END IF;*/ - - CALL util.debugAdd('vn.collection_newWithWagon',CONCAT('sector: ',vSectorFk,' wagons:',vWagons)); - - - SELECT w.code INTO vWorkerCode - FROM vn.worker w - WHERE w.id = vn.getUser(); - - -- Establecemos el almacén y si es un sector de preparación previa, así como el estado para los tickets que se vayan preparando - SELECT isPreviousPrepared, warehouseFk, itemPackingTypeFk - INTO vIsPreviousPrepared, vWarehouseFk, vItemPackingTypeFk - FROM vn.sector - WHERE id = vSectorFk; - --- Si está habilitado el modo cazador para las motos, y el usuario no está registrado, se sale. - - IF (SELECT isTractorHuntingMode FROM vn.deviceProductionConfig dpc) AND vItemPackingTypeFk = 'H' THEN - IF (SELECT COUNT(*) FROM vn.workerWithoutTractor wwt WHERE wwt.workerFk = account.userGetId()) THEN - INSERT INTO tmp.kk(userFk) VALUES(vn.getUser()); - LEAVE proc; - END IF; - END IF; - --- Si hay colecciones sin terminar, sale del proceso - SELECT count(*) INTO vNotReadyCollections - FROM vn.collection c - WHERE c.workerFk = vn.getUser() - AND c.saleTotalCount > c.salePickedCount + 1 - AND c.created > TIMESTAMPADD(HOUR , -5,NOW()); - - IF vMaxNotReadyCollections < vNotReadyCollections THEN - - LEAVE proc; - - END IF; - - SET vMaxTicketPrinted = 8 * vWagons; - SET vMaxTickets = 4 * vWagons; - - IF vIsPreviousPrepared THEN - - LEAVE proc; -- Hasta que tengamos el altillo, vamos a cancelar esta opcion - - SELECT id INTO vStateFk - FROM vn.state - WHERE `code` = 'PREVIOUS_PREPARATION'; - ELSE - - SELECT id INTO vStateFk - FROM vn.state - WHERE `code` = 'ON_PREPARATION'; - - END IF; - - -- Se obtiene nº de colección y el buffer con los pedidos preparables - INSERT INTO vn.collection - SET workerFk = account.myUser_getId(), - itemPackingTypeFk = vItemPackingTypeFk; - - SELECT LAST_INSERT_ID() INTO vCollectionFk; - - CALL vn.productionControl(vWarehouseFk, 0); - - -- 05/08/2021 PAK Jose Frau pide que los tickets de recogida en Algemesí sólo se saquen si están asignados. - DELETE pb.* - FROM tmp.productionBuffer pb - JOIN vn.state s ON s.id = pb.state - WHERE pb.agency = 'REC_ALGEMESI' - AND s.code != 'PICKER_DESIGNED'; - - -- Comprobamos si hay tickets asignados. En ese caso, nos centramos exclusivamente en esos tickets - -- y los sacamos independientemente de problemas o tamaños - SELECT COUNT(*) INTO hasAssignedTickets - FROM tmp.productionBuffer pb - JOIN vn.state s ON s.id = pb.state - WHERE s.code = 'PICKER_DESIGNED' - AND pb.workerCode = vWorkerCode - -- AND LENGTH(pb.problem) = 0 - ; - - IF hasAssignedTickets THEN - - UPDATE vn.collection - SET itemPackingTypeFk = NULL - WHERE id = vCollectionFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketToSplit; - CREATE TEMPORARY TABLE tmp.ticketToSplit - SELECT pb.ticketFk - FROM tmp.productionBuffer pb - JOIN vn.state s ON s.id = pb.state - WHERE s.code = 'PICKER_DESIGNED' - AND pb.workerCode = vWorkerCode - ORDER BY HH, - mm, - s.`order` DESC, - pb.m3 DESC; - - WHILE (SELECT COUNT(*) FROM tmp.ticketToSplit) DO - - SELECT MIN(ticketFk) INTO vTicketToSplit - FROM tmp.ticketToSplit; - - CALL vn.ticket_splitItemPackingType(vTicketToSplit); - - INSERT INTO vn.ticketCollection(ticketFk, collectionFk) - SELECT ticketFk, vCollectionFk - FROM tmp.ticketIPT - WHERE (itemPackingTypeFk = vItemPackingTypeFk) ; - - DELETE FROM tmp.ticketToSplit - WHERE ticketFk = vTicketToSplit; - - DROP TEMPORARY TABLE tmp.ticketIPT; - - END WHILE; - - CALL vn.productionControl(vWarehouseFk, 0); - - ELSE - - SELECT COUNT(*) INTO vPrintedTickets - FROM tmp.productionBuffer pb - JOIN vn.state s ON s.id = pb.state - JOIN vn.agencyMode am ON am.id = pb.agencyModeFk - JOIN vn.agency a ON a.id = am.agencyFk - WHERE pb.shipped = CURDATE() - AND (pb.ubicacion IS NOT NULL OR a.isOwn = FALSE ) - AND s.isPreparable - AND (pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH) - OR pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV) - OR pb.F > 0 AND vItemPackingTypeFk = 'F' AND ISNULL(pb.collectionF) - OR pb.P > 0 AND vItemPackingTypeFk = 'P' AND ISNULL(pb.collectionP)); - - SET vMaxTicketPrinted = vMaxTicketPrinted - vPrintedTickets; - -- AutoPRINT - - IF vMaxTicketPrinted > 0 THEN - - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT s2.id, pb.ticketFk, vn.getUser() - FROM tmp.productionBuffer pb - JOIN vn.agencyMode am ON am.id = pb.agencyModeFk - JOIN vn.agency a ON a.id = am.agencyFk - JOIN vn.state s ON s.id = pb.state - JOIN vn.state s2 ON s2.code = 'PRINTED_AUTO' - JOIN vn.ticket t ON t.id = pb.ticketFk - JOIN vn.ticketConfig tc - WHERE pb.shipped = CURDATE() - AND LENGTH(pb.problem) = 0 - AND (pb.ubicacion IS NOT NULL OR a.isOwn = FALSE ) - AND s.isPrintable - AND s.isOK - AND (pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH) - OR pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV) - OR pb.F > 0 AND vItemPackingTypeFk = 'F' AND ISNULL(pb.collectionF) - OR pb.P > 0 AND vItemPackingTypeFk = 'P' AND ISNULL(pb.collectionP)) - AND t.created < TIMESTAMPADD(MINUTE, - tc.pickingDelay , NOW()) - ORDER BY HH, - mm, - s.`order` DESC, - pb.m3 DESC - LIMIT vMaxTicketPrinted; - - END IF; - - -- Se seleccionan los primeros tickets, asignando colección para dejarlos bloqueados a otros sacadores. - -- Se splitan los tickets preparables, para que solo tengan un tipo de empaquetado - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketToSplit; - CREATE TEMPORARY TABLE tmp.ticketToSplit - SELECT pb.ticketFk - FROM tmp.productionBuffer pb - JOIN vn.agencyMode am ON am.id = pb.agencyModeFk - JOIN vn.agency a ON a.id = am.agencyFk - JOIN vn.ticketStateToday tst ON tst.ticket = pb.ticketFk - JOIN vn.state s ON s.id = tst.state - WHERE ( pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH) - OR pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV) - OR pb.P > 0 AND vItemPackingTypeFk = 'P' AND ISNULL(pb.collectionP)) - AND (pb.ubicacion IS NOT NULL OR a.isOwn = FALSE ) - AND LENGTH(pb.problem) = 0 - AND s.isPreparable - ORDER BY pb.HH, pb.mm, s.`order` DESC - LIMIT vMaxTickets; - - WHILE (SELECT COUNT(*) FROM tmp.ticketToSplit) DO - - SELECT MIN(ticketFk) INTO vTicketToSplit - FROM tmp.ticketToSplit; - - CALL vn.ticket_splitItemPackingType(vTicketToSplit); - - INSERT INTO vn.ticketCollection(ticketFk, collectionFk) - SELECT ticketFk, vCollectionFk - FROM tmp.ticketIPT - WHERE itemPackingTypeFk = vItemPackingTypeFk; - - DELETE FROM tmp.ticketToSplit - WHERE ticketFk = vTicketToSplit; - - DROP TEMPORARY TABLE tmp.ticketIPT; - - END WHILE; - - END IF; - - -- Creamos una tabla temporal con los datos que necesitamos para depurar la colección - DROP TEMPORARY TABLE IF EXISTS tmp.ticket; - CREATE TEMPORARY TABLE tmp.ticket - SELECT pb.ticketFk, - pb.`lines`, - pb.m3 * 1000 liters, - 0 as height, - 0 as shelve, - 0 as wagon, - 0 AS shelveLiters, - pb.productionOrder, - pb.HH, - pb.mm - FROM tmp.productionBuffer pb - JOIN vn.ticketCollection tc ON tc.ticketFk = pb.ticketFk - WHERE tc.collectionFk = vCollectionFk - LIMIT vMaxTickets; - - -- Voumen de las lineas de los pedidos, de acuerdo con el packingShelve establecido por los controladores - DROP TEMPORARY TABLE IF EXISTS tmp.ticketShelveLiters; - CREATE TEMPORARY TABLE tmp.ticketShelveLiters - SELECT t.ticketFk, SUM(s.quantity * vc.shelveVolume / i.packingShelve) shelveLiters - FROM tmp.ticket t - JOIN vn.sale s ON s.ticketFk = t.ticketFk - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.volumeConfig vc - WHERE i.packingShelve - GROUP BY t.ticketFk; - - UPDATE tmp.ticket t - JOIN tmp.ticketShelveLiters tsl ON tsl.ticketFk = t.ticketFk - SET t.shelveLiters = tsl.shelveLiters; - - -- Es importante que el primer ticket se coja en todos los casos - SET vFirstTicketFk = 0; - - SELECT ticketFk, HH, mm - INTO vFirstTicketFk, vHour, vMinute - FROM tmp.ticket - ORDER BY productionOrder DESC, HH, mm - LIMIT 1; - - -- Hay que excluir aquellos que no tengan la misma hora de preparación - DELETE - FROM tmp.ticket - WHERE HH != vHour - OR mm != vMinute; - - -- En el caso de pedidos de más volumen de un carro, la colección será monoticket. Pero si el primer pedido - -- no es monoticket, excluimos a los de más de un carro - IF (SELECT (t.shelveLiters > vc.trolleyM3 * 1000) - FROM tmp.ticket t - JOIN vn.volumeConfig vc - WHERE t.ticketFk = vFirstTicketFk) THEN - - DELETE - FROM tmp.ticket - WHERE ticketFk != vFirstTicketFk; - - ELSE - - DELETE t.* - FROM tmp.ticket t - JOIN vn.volumeConfig vc - WHERE t.shelveLiters > vc.trolleyM3 * 1000; - - END IF; - - -- Elimina los tickets bloqueados que no se van a preparar - DELETE tc.* - FROM vn.ticketCollection tc - LEFT JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND t.ticketFk IS NULL; - - /* - * - * Construccion del tren - * - */ - - -- Establece altura máxima por pedido, porque las plantas no se pueden recostar. - UPDATE tmp.ticket t - JOIN - ( SELECT MAX(i.size) maxHeigth, - tc.ticketFk - FROM vn.ticketCollection tc - JOIN vn.sale s ON s.ticketFk = tc.ticketFk - JOIN vn.item i ON i.id = s.itemFk - WHERE i.itemPackingTypeFk = 'V' - AND tc.collectionFk = vCollectionFk - GROUP BY tc.ticketFk) sub ON sub.ticketFk = t.ticketFk - SET t.height = IFNULL(sub.maxHeigth,0); - - -- Vamos a generar una tabla con todas las posibilidades de asignacion de pedido - DROP TEMPORARY TABLE IF EXISTS tmp.wagonsVolumetry; - CREATE TEMPORARY TABLE tmp.wagonsVolumetry - SELECT cv.`level` as shelve, - 1 as wagon, - cv.`lines`, - cv.liters, - cv.height - FROM vn.collectionVolumetry cv - WHERE cv.itemPackingTypeFk = IFNULL(vItemPackingTypeFk, 'H'); - - SET vWagonCounter = 1; - - WHILE vWagonCounter < vWagons DO - - SET vWagonCounter = vWagonCounter + 1; - - INSERT INTO tmp.wagonsVolumetry(shelve, wagon, `lines`, liters, height) - SELECT cv.`level` as shelve, - vWagonCounter as wagon, - cv.`lines`, - cv.liters, - cv.height - FROM vn.collectionVolumetry cv - WHERE cv.itemPackingTypeFk = IFNULL(vItemPackingTypeFk, 'H'); - - END WHILE; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketShelve; - CREATE TEMPORARY TABLE tmp.ticketShelve - SELECT ticketFk, shelve, wagon, linesDif, LitersDif, heightDif - FROM ( - SELECT t.ticketFk, - wv.shelve, - wv.wagon, - t.productionOrder, - CAST(wv.`lines` AS SIGNED) - t.`lines` as linesDif, - CAST(wv.liters AS SIGNED) - t.shelveLiters as litersDif, - CAST(wv.height AS SIGNED) - t.height as heightDif - FROM tmp.wagonsVolumetry wv - JOIN tmp.ticket t - ) sub - WHERE linesDif >= 0 - AND litersDif >= 0 - AND heightDif >= 0 - ORDER BY productionOrder DESC, linesDif, LitersDif, heightDif ; - - -- Insertamos una opcion virtual para carro completo. Todo ticket tiene que poder entrar en un carro completo.... - INSERT INTO tmp.ticketShelve(ticketFk, shelve, wagon, linesDif, LitersDif, heightDif) - SELECT t.ticketFk, 0, wv.wagon, 999, 999,999 - FROM tmp.ticket t - JOIN tmp.wagonsVolumetry wv - GROUP BY t.ticketFk, wv.wagon; - - SET vWagonCounter = 0; - - WHILE vWagonCounter < vWagons DO - - SET vWagonCounter = vWagonCounter + 1; - - -- Asignamos la primera balda util al primer pedido - IF vWagonCounter = 1 THEN - - SELECT shelve INTO vShelve - FROM tmp.ticketShelve - WHERE ticketFk = vFirstTicketFk - AND wagon = vWagonCounter - ORDER BY heightDif, litersDif, linesDif - LIMIT 1; - - ELSE - - SELECT shelve, ticketFk INTO vShelve, vFirstTicketFk - FROM tmp.ticketShelve - WHERE wagon = vWagonCounter - ORDER BY heightDif, litersDif, linesDif - LIMIT 1; - - END IF; - - IF vShelve > 0 THEN - - UPDATE tmp.ticket - SET shelve = vShelve, - wagon = vWagonCounter - WHERE ticketFk = vFirstTicketFk; - - DELETE FROM tmp.ticketShelve - WHERE ticketFk = vFirstTicketFk - OR (shelve = vShelve AND wagon = vWagonCounter); - - WHILE (SELECT COUNT(*) FROM tmp.ticketShelve WHERE wagon = vWagonCounter) DO - - SELECT ticketFk, shelve - INTO vTicket, vShelve - FROM tmp.ticketShelve - WHERE wagon = vWagonCounter - LIMIT 1; - - UPDATE tmp.ticket - SET shelve = vShelve, - wagon = vWagonCounter - WHERE ticketFk = vTicket; - - DELETE FROM tmp.ticketShelve - WHERE ticketFk = vTicket - OR (shelve = vShelve AND wagon = vWagonCounter); - - END WHILE; - - ELSE - - UPDATE tmp.ticket - SET shelve = 1, wagon = vWagonCounter - WHERE ticketFk = vFirstTicketFk; - - DELETE FROM tmp.ticketShelve - WHERE ticketFk = vFirstTicketFk - AND wagon != vWagonCounter; - - END IF; - - END WHILE; - - -- Eliminamos los que se han quedado sin balda - DELETE FROM tmp.ticket WHERE shelve = 0; - - -- Elimina los tickets bloqueados que no se van a preparar - DELETE tc.* - FROM vn.ticketCollection tc - LEFT JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND t.ticketFk IS NULL; - - -- Elimina los tickets que ya estan en otra coleccion - DELETE tc.* - FROM vn.ticketCollection tc - JOIN vn.ticketCollection tc2 ON tc2.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND tc2.collectionFk != vCollectionFk; - - -- Actualiza el estado de la colección - UPDATE vn.collection c - JOIN vn.state st ON st.code = 'ON_PREPARATION' - SET c.stateFk = st.id - WHERE c.id = vCollectionFk; - - -- Asigna las bandejas - UPDATE vn.ticketCollection tc - JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk - SET tc.level = t.shelve, - tc.wagon = t.wagon, - tc.itemCount = t.`lines`, - tc.liters = t.shelveLiters; - - -- Actualiza el estado de los tickets - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT vStateFk, ticketFk, account.myUser_getId() - FROM vn.ticketCollection tc - WHERE tc.collectionFk = vCollectionFk; - - -- Aviso para la preparacion previa - INSERT INTO vn.ticketDown(ticketFk, collectionFk) - SELECT tc.ticketFk, tc.collectionFk - FROM vn.ticketCollection tc - WHERE tc.collectionFk = vCollectionFk; - - IF (SELECT count(*) FROM vn.ticketCollection WHERE collectionFk = vCollectionFk) THEN - - CALL vn.salesMerge_byCollection(vCollectionFk); - - UPDATE vn.collection c - JOIN (SELECT count(*) saleTotalCount , - sum(s.isPicked != 0) salePickedCount - FROM vn.ticketCollection tc - JOIN vn.sale s ON s.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND s.quantity > 0 - ) sub - SET c.saleTotalCount = sub.saleTotalCount, - c.salePickedCount = sub.salePickedCount - WHERE c.id = vCollectionFk; - - SELECT vCollectionFk; - - ELSE - - DELETE FROM vn.collection WHERE id = vCollectionFk; - -- SELECT NULL; - - END IF; - - DROP TEMPORARY TABLE tmp.ticketToSplit; - DROP TEMPORARY TABLE tmp.ticketShelveLiters; - DROP TEMPORARY TABLE tmp.ticket; - DROP TEMPORARY TABLE tmp.wagonsVolumetry; - DROP TEMPORARY TABLE tmp.ticketShelve; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `collection_new__` */; +/*!50003 DROP PROCEDURE IF EXISTS `collection_printSticker` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_new__`(vSectorFk INT) -proc:BEGIN - - DECLARE vIsPreviousPrepared BOOLEAN; - DECLARE vCollectionFk INT; - DECLARE vWarehouseFk INT; - DECLARE vMaxTickets INT; - DECLARE vStateFk INT; - DECLARE vFirstTicketFk INT; - DECLARE vHour INT; - DECLARE vMinute INT; - DECLARE vWorkerCode VARCHAR(3); - DECLARE vWagon INT; - DECLARE vWagonCounter INT; - DECLARE vShelve INT; - DECLARE vTicket INT; - DECLARE vTicketToSplit INT; - DECLARE myUserIsSalesPersonRole BOOLEAN; - DECLARE vPrintedTickets INT; - DECLARE vMaxTicketPrinted INT; - DECLARE vItemPackingTypeFk VARCHAR(1); - DECLARE vWagons INT DEFAULT 2; - DECLARE hasAssignedTickets BOOLEAN; - DECLARE vMaxNotReadyCollections INT DEFAULT 0; - DECLARE vNotReadyCollections INT; - DECLARE vSectorCode VARCHAR(20); - - SELECT w.code INTO vWorkerCode - FROM vn.worker w - WHERE w.id = vn.getUser(); - --- Si hay colecciones sin terminar, sale del proceso - SELECT count(*) INTO vNotReadyCollections - FROM vn.collection c - WHERE c.workerFk = vn.getUser() - AND c.saleTotalCount > c.salePickedCount + 1 - AND c.created > TIMESTAMPADD(HOUR , -5,NOW()); - - IF vMaxNotReadyCollections < vNotReadyCollections THEN - - LEAVE proc; - - END IF; - - -- Establecemos el almacén y si es un sector de preparación previa, así como el estado para los tickets que se vayan preparando - SELECT isPreviousPrepared, warehouseFk, itemPackingTypeFk, code - INTO vIsPreviousPrepared, vWarehouseFk, vItemPackingTypeFk, vSectorCode - FROM vn.sector - WHERE id = vSectorFk; - - IF LENGTH(vSectorCode) = 2 THEN - - SELECT CAST(SUBSTRING(vSectorCode,2,1) AS UNSIGNED) INTO vWagons; - - END IF; - - SET vMaxTicketPrinted = 8 * vWagons; - SET vMaxTickets = 4 * vWagons; - - - IF vIsPreviousPrepared THEN - - LEAVE proc; -- Hasta que tengamos el altillo, vamos a cancelar esta opcion - - SELECT id INTO vStateFk - FROM vn.state - WHERE `code` = 'PREVIOUS_PREPARATION'; - ELSE - - SELECT id INTO vStateFk - FROM vn.state - WHERE `code` = 'ON_PREPARATION'; - - END IF; - - -- Averiguamos si es comercial el usuario - SELECT FALSE -- (r.name = 'salesPerson') - INTO myUserIsSalesPersonRole - FROM account.user u - JOIN account.role r ON r.id = u.role - WHERE u.id = vn.getUser(); - - -- Se obtiene nº de colección y el buffer con los pedidos preparables - INSERT INTO vn.collection - SET workerFk = account.myUser_getId(), - itemPackingTypeFk = vItemPackingTypeFk; - - SELECT LAST_INSERT_ID() INTO vCollectionFk; - - CALL vn.productionControl(vWarehouseFk, 0); - - -- Comprobamos si hay tickets asignados. En ese caso, nos centramos exclusivamente en esos tickets - -- y los sacamos independientemente de problemas o tamaños - SELECT COUNT(*) INTO hasAssignedTickets - FROM tmp.productionBuffer pb - JOIN vn.state s ON s.id = pb.state - WHERE s.code = 'PICKER_DESIGNED' - AND pb.workerCode = vWorkerCode - AND LENGTH(pb.problem) = 0; - - IF hasAssignedTickets THEN - - UPDATE vn.collection - SET itemPackingTypeFk = NULL - WHERE id = vCollectionFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketToSplit; - CREATE TEMPORARY TABLE tmp.ticketToSplit - SELECT pb.ticketFk - FROM tmp.productionBuffer pb - JOIN vn.state s ON s.id = pb.state - WHERE s.code = 'PICKER_DESIGNED' - AND pb.workerCode = vWorkerCode - AND LENGTH(pb.problem) = 0 - ORDER BY HH, - mm, - s.`order` DESC, - pb.m3 DESC; - - WHILE (SELECT COUNT(*) FROM tmp.ticketToSplit) DO - - SELECT MIN(ticketFk) INTO vTicketToSplit - FROM tmp.ticketToSplit; - - CALL vn.ticket_splitItemPackingType(vTicketToSplit); - - INSERT INTO vn.ticketCollection(ticketFk, collectionFk) - SELECT ticketFk, vCollectionFk - FROM tmp.ticketIPT; - - DELETE FROM tmp.ticketToSplit - WHERE ticketFk = vTicketToSplit; - - END WHILE; - - CALL vn.productionControl(vWarehouseFk, 0); - - ELSE - - SELECT COUNT(*) INTO vPrintedTickets - FROM tmp.productionBuffer pb - JOIN vn.state s ON s.id = pb.state - JOIN vn.agencyMode am ON am.id = pb.agencyModeFk - JOIN vn.agency a ON a.id = am.agencyFk - WHERE pb.shipped = CURDATE() - AND (pb.ubicacion IS NOT NULL OR a.isOwn = FALSE ) - AND s.isPreparable - AND (pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH) - OR pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV) - OR pb.F > 0 AND vItemPackingTypeFk = 'F' AND ISNULL(pb.collectionF) - OR pb.P > 0 AND vItemPackingTypeFk = 'P' AND ISNULL(pb.collectionP)); - - SET vMaxTicketPrinted = vMaxTicketPrinted - vPrintedTickets; - -- AutoPRINT - - IF vMaxTicketPrinted > 0 THEN - - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT s2.id, pb.ticketFk, vn.getUser() - FROM tmp.productionBuffer pb - JOIN vn.agencyMode am ON am.id = pb.agencyModeFk - JOIN vn.agency a ON a.id = am.agencyFk - JOIN vn.state s ON s.id = pb.state - JOIN vn.state s2 ON s2.code = 'PRINTED_AUTO' - JOIN vn.ticket t ON t.id = pb.ticketFk - WHERE pb.shipped = CURDATE() - AND LENGTH(pb.problem) = 0 - AND (pb.ubicacion IS NOT NULL OR a.isOwn = FALSE ) - AND s.isPrintable - AND (pb.m3 > 0.05 OR s.isOK) - AND (pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH) - OR pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV) - OR pb.F > 0 AND vItemPackingTypeFk = 'F' AND ISNULL(pb.collectionF) - OR pb.P > 0 AND vItemPackingTypeFk = 'P' AND ISNULL(pb.collectionP)) - AND t.created < TIMESTAMPADD(MINUTE, -10, NOW()) - ORDER BY HH, - mm, - s.`order` DESC, - pb.m3 DESC - LIMIT vMaxTicketPrinted; - - END IF; - - -- Se seleccionan los primeros tickets, asignando colección para dejarlos bloqueados a otros sacadores. - -- Se splitan los tickets preparables, para que solo tengan un tipo de empaquetado - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketToSplit; - CREATE TEMPORARY TABLE tmp.ticketToSplit - SELECT pb.ticketFk - FROM tmp.productionBuffer pb - JOIN vn.agencyMode am ON am.id = pb.agencyModeFk - JOIN vn.agency a ON a.id = am.agencyFk - JOIN vn.ticketStateToday tst ON tst.ticket = pb.ticketFk - JOIN vn.state s ON s.id = tst.state - WHERE ( pb.H > 0 AND vItemPackingTypeFk = 'H' AND ISNULL(pb.collectionH) - OR pb.V > 0 AND vItemPackingTypeFk = 'V' AND ISNULL(pb.collectionV) - OR pb.F > 0 AND vItemPackingTypeFk = 'F' AND ISNULL(pb.collectionF) - OR pb.P > 0 AND vItemPackingTypeFk = 'P' AND ISNULL(pb.collectionP)) - AND (pb.ubicacion IS NOT NULL OR a.isOwn = FALSE ) - AND LENGTH(pb.problem) = 0 - AND s.isPreparable - AND NOT myUserIsSalesPersonRole - ORDER BY pb.HH, pb.mm, s.`order` DESC - LIMIT vMaxTickets; - - WHILE (SELECT COUNT(*) FROM tmp.ticketToSplit) DO - - SELECT MIN(ticketFk) INTO vTicketToSplit - FROM tmp.ticketToSplit; - - CALL vn.ticket_splitItemPackingType(vTicketToSplit); - - INSERT INTO vn.ticketCollection(ticketFk, collectionFk) - SELECT ticketFk, vCollectionFk - FROM tmp.ticketIPT - WHERE itemPackingTypeFk = vItemPackingTypeFk; - - DELETE FROM tmp.ticketToSplit - WHERE ticketFk = vTicketToSplit; - - END WHILE; - - END IF; - - -- Creamos una tabla temporal con los datos que necesitamos para depurar la colección - DROP TEMPORARY TABLE IF EXISTS tmp.ticket; - CREATE TEMPORARY TABLE tmp.ticket - SELECT pb.ticketFk, - pb.`lines`, - pb.m3 * 1000 liters, - 0 as height, - 0 as shelve, - 0 as wagon, - pb.productionOrder, - pb.HH, - pb.mm - FROM tmp.productionBuffer pb - JOIN vn.ticketCollection tc ON tc.ticketFk = pb.ticketFk - WHERE tc.collectionFk = vCollectionFk - LIMIT vMaxTickets; - - -- Es importante que el primer ticket se coja en todos los casos - SET vFirstTicketFk = 0; - - SELECT ticketFk, HH, mm - INTO vFirstTicketFk, vHour, vMinute - FROM tmp.ticket - ORDER BY productionOrder DESC, HH, mm - LIMIT 1; - - -- Hay que excluir aquellos que no tengan la misma hora de preparación - DELETE - FROM tmp.ticket - WHERE HH != vHour - OR mm != vMinute; - - -- En el caso de pedidos de más volumen de un carro, la colección será monoticket. Pero si el primer pedido - -- no es monoticket, excluimos a los de más de un carro - IF (SELECT (t.liters > vc.carro * 1000) - FROM tmp.ticket t - JOIN vn.volumeConfig vc - WHERE t.ticketFk = vFirstTicketFk) THEN - - DELETE - FROM tmp.ticket - WHERE ticketFk != vFirstTicketFk; - - ELSE - - DELETE t.* - FROM tmp.ticket t - JOIN vn.volumeConfig vc - WHERE t.liters > vc.carro * 1000; - - END IF; - - -- Elimina los tickets bloqueados que no se van a preparar - DELETE tc.* - FROM vn.ticketCollection tc - LEFT JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND t.ticketFk IS NULL; - - /* - * - * Construccion del tren - * - */ - - -- Establece altura máxima por pedido, porque las plantas no se pueden recostar. - UPDATE tmp.ticket t - JOIN - ( SELECT MAX(i.size) maxHeigth, - tc.ticketFk - FROM vn.ticketCollection tc - JOIN vn.sale s ON s.ticketFk = tc.ticketFk - JOIN vn.item i ON i.id = s.itemFk - WHERE i.itemPackingTypeFk = 'V' - AND tc.collectionFk = vCollectionFk - GROUP BY tc.ticketFk) sub ON sub.ticketFk = t.ticketFk - SET t.height = IFNULL(sub.maxHeigth,0); - - -- Vamos a generar una tabla con todas las posibilidades de asignacion de pedido - DROP TEMPORARY TABLE IF EXISTS tmp.wagonsVolumetry; - CREATE TEMPORARY TABLE tmp.wagonsVolumetry - SELECT cv.`level` as shelve, - 1 as wagon, - cv.`lines`, - cv.liters, - cv.height - FROM vn.collectionVolumetry cv; - - SET vWagonCounter = 1; - - WHILE vWagonCounter < vWagons DO - - SET vWagonCounter = vWagonCounter + 1; - - INSERT INTO tmp.wagonsVolumetry(shelve, wagon, `lines`, liters, height) - SELECT cv.`level` as shelve, - vWagonCounter as wagon, - cv.`lines`, - cv.liters, - cv.height - FROM vn.collectionVolumetry cv - WHERE cv.itemPackingTypeFk = IFNULL(vItemPackingTypeFk, 'H'); - - END WHILE; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketShelve; - CREATE TEMPORARY TABLE tmp.ticketShelve - SELECT ticketFk, shelve, wagon, linesDif, LitersDif, heightDif - FROM ( - SELECT t.ticketFk, - wv.shelve, - wv.wagon, - t.productionOrder, - CAST(wv.`lines` AS SIGNED) - t.`lines` as linesDif, - CAST(wv.liters AS SIGNED) - t.liters as litersDif, - CAST(wv.height AS SIGNED) - t.height as heightDif - FROM tmp.wagonsVolumetry wv - JOIN tmp.ticket t - ) sub - WHERE linesDif >= 0 - AND litersDif >= 0 - AND heightDif >= 0 - ORDER BY productionOrder DESC, linesDif, LitersDif, heightDif ; - - -- Insertamos una opcion virtual para carro completo. Todo ticket tiene que poder entrar en un carro completo.... - INSERT INTO tmp.ticketShelve(ticketFk, shelve, wagon, linesDif, LitersDif, heightDif) - SELECT t.ticketFk, 0, wv.wagon, 999, 999,999 - FROM tmp.ticket t - JOIN tmp.wagonsVolumetry wv - GROUP BY t.ticketFk, wv.wagon; - - SET vWagonCounter = 0; - - WHILE vWagonCounter < vWagons DO - - SET vWagonCounter = vWagonCounter + 1; - - -- Asignamos la primera balda util al primer pedido - IF vWagonCounter = 1 THEN - - SELECT shelve INTO vShelve - FROM tmp.ticketShelve - WHERE ticketFk = vFirstTicketFk - AND wagon = vWagonCounter - ORDER BY heightDif, litersDif, linesDif - LIMIT 1; - - ELSE - - SELECT shelve, ticketFk INTO vShelve, vFirstTicketFk - FROM tmp.ticketShelve - WHERE wagon = vWagonCounter - ORDER BY heightDif, litersDif, linesDif - LIMIT 1; - - END IF; - - IF vShelve > 0 THEN - - UPDATE tmp.ticket - SET shelve = vShelve, - wagon = vWagonCounter - WHERE ticketFk = vFirstTicketFk; - - DELETE FROM tmp.ticketShelve - WHERE ticketFk = vFirstTicketFk - OR (shelve = vShelve AND wagon = vWagonCounter); - - WHILE (SELECT COUNT(*) FROM tmp.ticketShelve WHERE wagon = vWagonCounter) DO - - SELECT ticketFk, shelve - INTO vTicket, vShelve - FROM tmp.ticketShelve - WHERE wagon = vWagonCounter - LIMIT 1; - - UPDATE tmp.ticket - SET shelve = vShelve, - wagon = vWagonCounter - WHERE ticketFk = vTicket; - - DELETE FROM tmp.ticketShelve - WHERE ticketFk = vTicket - OR (shelve = vShelve AND wagon = vWagonCounter); - - END WHILE; - - ELSE - - UPDATE tmp.ticket - SET shelve = 1, wagon = vWagonCounter - WHERE ticketFk = vFirstTicketFk; - - DELETE FROM tmp.ticketShelve - WHERE ticketFk = vFirstTicketFk - AND wagon != vWagonCounter; - - END IF; - - END WHILE; - - -- Eliminamos los que se han quedado sin balda - DELETE FROM tmp.ticket WHERE shelve = 0; - - -- Elimina los tickets bloqueados que no se van a preparar - DELETE tc.* - FROM vn.ticketCollection tc - LEFT JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND t.ticketFk IS NULL; - - -- Elimina los tickets que ya estan en otra coleccion - DELETE tc.* - FROM vn.ticketCollection tc - JOIN vn.ticketCollection tc2 ON tc2.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND tc2.collectionFk != vCollectionFk; - - -- Actualiza el estado de la colección - UPDATE vn.collection c - JOIN vn.state st ON st.code = 'ON_PREPARATION' - SET c.stateFk = st.id - WHERE c.id = vCollectionFk; - - -- Asigna las bandejas - UPDATE vn.ticketCollection tc - JOIN tmp.ticket t ON t.ticketFk = tc.ticketFk - SET tc.level = t.shelve, tc.wagon = t.wagon; - - -- Actualiza el estado de los tickets - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT vStateFk, ticketFk, account.myUser_getId() - FROM vn.ticketCollection tc - WHERE tc.collectionFk = vCollectionFk; - - -- Aviso para la preparacion previa - INSERT INTO vn.ticketDown(ticketFk, collectionFk) - SELECT tc.ticketFk, tc.collectionFk - FROM vn.ticketCollection tc - WHERE tc.collectionFk = vCollectionFk; - - IF (SELECT count(*) FROM vn.ticketCollection WHERE collectionFk = vCollectionFk) THEN - - CALL vn.salesMerge_byCollection(vCollectionFk); - - UPDATE vn.collection c - JOIN (SELECT count(*) saleTotalCount , - sum(s.isPicked != 0) salePickedCount - FROM vn.ticketCollection tc - JOIN vn.sale s ON s.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND s.quantity > 0 - ) sub - SET c.saleTotalCount = sub.saleTotalCount, - c.salePickedCount = sub.salePickedCount - WHERE c.id = vCollectionFk; - - SELECT vCollectionFk; - - ELSE - - DELETE FROM vn.collection WHERE id = vCollectionFk; - -- SELECT NULL; - - END IF; - - DROP TEMPORARY TABLE tmp.ticketIPT; - DROP TEMPORARY TABLE IF EXISTS tmp.ticketToSplit; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `collection_reject` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_reject`(vSale INT, vQuantity INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `collection_printSticker`(vSelf INT) BEGIN +/** + * Imprime una etiqueta amarilla a partir de una colección + * + * @param vSelf colección + * @param vPrinterFk id de la impresora + */ + DECLARE vReportFk INT; + DECLARE vPrinterFk INT; - DECLARE vDescription VARCHAR(100); - DECLARE vOriginalQuantity INT; - DECLARE vConcept VARCHAR(100); - DECLARE vOrigin INT; - - SELECT concept INTO vConcept FROM sale WHERE id = vSale; - SELECT ticketFk INTO vOrigin FROM sale WHERE id = vSale; - SELECT quantity INTO vOriginalQuantity FROM sale WHERE id = vSale; - SELECT CONCAT("Cambio cantidad ",vConcept," de ", vOriginalQuantity," a ", vQuantity) INTO vDescription; - - INSERT INTO ticketLog (originFk, userFk, action , description) - VALUES(vOrigin, getUser(), 'update', vDescription); - - UPDATE sale SET originalQuantity = vOriginalQuantity, quantity = vQuantity WHERE id = vSale; + SELECT s.reportFk, w.labelerFk INTO vReportFk, vPrinterFk + FROM worker w + LEFT JOIN sector s ON s.id= w.sectorFk + WHERE w.id = account.myUser_getId() ; + IF vReportFk AND vPrinterFk THEN + INSERT INTO ticketTrolley(ticket, labelCount) + SELECT ticketFk, 1 + FROM ticketCollection + WHERE collectionFk = vSelf + ON DUPLICATE KEY UPDATE labelCount = labelCount + 1; + INSERT INTO printQueue(priorityFk, reportFk, workerFk,printerFk) + SELECT qp.id, vReportFk, account.myUser_getId(), vPrinterFk + FROM queuePriority qp + WHERE qp.`code`= 'high'; + + INSERT INTO printQueueArgs (printQueueFk, `name`, `value` ) + SELECT LAST_INSERT_ID(), 'param', vSelf; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `collection_setParking` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `collection_setParking`(IN `vCollectionFk` VARCHAR(8), IN `vParkingFk` INT) +proc: BEGIN +/** + * Aparca una colección en un parking. + * + * @param vCollectionFk Id de la colección + * @param vParkingFk Id del parking + */ + REPLACE vn.ticketParking(ticketFk, parkingFk) + SELECT tc.ticketFk, vParkingFk + FROM vn.ticketCollection tc + WHERE tc.collectionFk = vCollectionFk; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -56724,134 +50720,47 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_updateSale`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `collection_updateSale`( vSaleFk INT, vOriginalQuantity INT, vWorkerFk INT, vStateFk INT, vTicketFk INT) BEGIN - + DECLARE vNumPrepared INT; DECLARE vNumTotal INT; - REPLACE INTO vn.saleTracking(saleFk,isChecked, originalQuantity, workerFk, actionFk,stateFk) + REPLACE INTO vn.saleTracking(saleFk,isChecked, originalQuantity, workerFk, actionFk,stateFk) VALUES(vSaleFk,1,vOriginalQuantity,vWorkerFk,vStateFk,vStateFk); - - UPDATE vn.sale SET isPicked = 1 + + UPDATE vn.sale SET isPicked = 1 WHERE id = vSaleFk; - + SELECT COUNT(s.id) INTO vNumPrepared FROM vn.sale s WHERE s.ticketFk = vTicketFk AND s.isPicked = 1; - + SELECT COUNT(s.id) INTO vNumTotal FROM vn.sale s WHERE s.ticketFk = vTicketFk; - + IF vNumPrepared = vNumTotal THEN - + INSERT INTO vncontrol.inter SET state_id = vStateFk, Id_Ticket = vTicketFk, Id_Trabajador = vWorkerFk; - + CALL vn.collection_update(vTicketFk); - + END IF; - - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `collection_updateState__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_updateState__`(vTicketFk INT, vState VARCHAR(50)) -BEGIN -DECLARE vCollectionFk INT; -DECLARE vStateFk INT; -DECLARE vLastState VARCHAR(50); -SELECT name INTO vLastState FROM vn.ticketLastState WHERE ticketFk = vTicketFk; - -IF vLastState <> 'Encajado' THEN - - SELECT collectionFk INTO vCollectionFk FROM vn.ticketCollection WHERE ticketFk = vTicketFk; - - SELECT id INTO vStateFk - FROM vn.state - WHERE `code` = vState COLLATE utf8_unicode_ci; - - -- Actualiza el estado del ticket - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT vStateFk, ticketFk, account.myUser_getId() - FROM vn.ticketCollection tc - WHERE tc.ticketFk = vTicketFk - UNION ALL - SELECT vStateFk, sw.id, account.myUser_getId() - FROM vn.stowaway sw - JOIN vn.ticketCollection tc ON tc.ticketFk = sw.shipFk - WHERE tc.ticketFk = vTicketFk; - - -- Actualiza la colección - CALL vn.collection_update__(vTicketFk); - -END IF; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `collection_update__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `collection_update__`(vTicketFk INT) -BEGIN - - DECLARE vNumChecked INT; - DECLARE vCollectionFk INT; - - /*SI TODAS LOS TICKETS DE UNA COLECCIÓN ESTAN REVISADOS CAMBIADOS ESTADO COLECCIÓN*/ - SELECT collectionFk - INTO vCollectionFk - FROM vn.ticketCollection - WHERE ticketFk = vTicketFk; - - IF (SELECT COUNT(*) - FROM vn.ticketCollection tc - JOIN vn.ticketLastState tls ON tls.ticketFk = tc.ticketFk - WHERE tc.collectionFk = vCollectionFk - AND (name = 'Preparación' OR name = 'En Revisión' OR name = 'Impreso' OR name = 'Preparado') ) = 0 THEN - - UPDATE vn.collection - SET stateFk = (SELECT id FROM vn.state WHERE code = 'PREPARED') - WHERE id = vCollectionFk; - END IF; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -56864,31 +50773,31 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `company_getFiscaldata`(workerFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `company_getFiscaldata`(workerFk INT) BEGIN - + DECLARE vCompanyFk INT; - - SELECT IFNULL(uc.companyFk, rc.defaultCompanyFk) + + SELECT IFNULL(uc.companyFk, rc.defaultCompanyFk) INTO vCompanyFk FROM vn.routeConfig rc LEFT JOIN userConfig uc ON uc.userFk = workerFk; - - + + SELECT s.name AS name , s.NIF AS nif , s.street AS street , s.city AS city , - s.postCode AS postCode - - FROM vn.company c + s.postCode AS postCode + + FROM vn.company c JOIN vn.worker w ON w.id = c.workerManagerFk - JOIN vn.supplier s ON s.id = c.id + JOIN vn.supplier s ON s.id = c.id WHERE c.id = vCompanyFk; END ;; DELIMITER ; @@ -56900,16 +50809,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `conveyorExpedition_Add`(vStarted DATETIME, vEnded DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `conveyorExpedition_Add`(vStarted DATETIME, vEnded DATETIME) BEGIN - + DECLARE startingMinute INT; TRUNCATE vn.conveyorExpedition; @@ -56926,23 +50835,23 @@ BEGIN conveyorBuildingClassFk) SELECT e.id, e.created, - 10 * p.depth as depth, + 10 * p.depth as depth, 10 * p.width as width, 10 * p.height as height, IFNULL(t.routeFk,am.agencyFk) routeFk, hour(e.created) * 60 + minute(e.created), IFNULL(et.description , a.name), IFNULL(t.routeFk,am.agencyFk) criterion, - IFNULL(p.conveyorBuildingClassFk , pc.defaultConveyorBuildingClass) + IFNULL(p.conveyorBuildingClassFk , pc.defaultConveyorBuildingClass) FROM vn.expedition e JOIN vn.ticket t ON t.id = e.ticketFk JOIN vn.packaging p ON p.id = e.packagingFk LEFT JOIN vn.zone z ON z.id = t.zoneFk LEFT JOIN vn.agencyMode am ON am.id = z.agencyModeFk - LEFT JOIN vn.agency a ON a.id = am.agencyFk - LEFT JOIN vn.routesMonitor rm ON rm.routeFk = t.routeFk - LEFT JOIN vn.expeditionTruck et ON et.id = rm.expeditionTruckFk - JOIN vn.packagingConfig pc + LEFT JOIN vn.agency a ON a.id = am.agencyFk + LEFT JOIN vn.routesMonitor rm ON rm.routeFk = t.routeFk + LEFT JOIN vn.expeditionTruck et ON et.id = rm.expeditionTruckFk + JOIN vn.packagingConfig pc WHERE t.warehouseFk IN (60,1,44) AND e.created BETWEEN vStarted AND vEnded AND p.height < 140 @@ -56951,8 +50860,8 @@ BEGIN SELECT MIN(productionMinute) INTO startingMinute FROM vn.conveyorExpedition ce ; - - UPDATE vn.conveyorExpedition + + UPDATE vn.conveyorExpedition SET productionMinute = productionMinute - startingMinute; END ;; @@ -56965,13 +50874,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `copyComponentsFromSaleList`(vTargetTicketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `copyComponentsFromSaleList`(vTargetTicketFk INT) BEGIN /* Copy sales and components to the target ticket @@ -57012,16 +50921,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `createPedidoInterno`(vItemFk INT,vQuantity INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `createPedidoInterno`(vItemFk INT,vQuantity INT) BEGIN - + UPDATE vn.item SET upToDown = vQuantity WHERE id = vItemFk; END ;; @@ -57030,175 +50939,66 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `cristalBall__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `cristalBall__`() -BEGIN -/* -*se utiliza en campaña -* sirve para tener un control del stock en Silla y fuentes -* -*/ - -DECLARE vLastDate DATETIME DEFAULT '2019-10-30 23:59'; -DECLARE vWarehouse INT DEFAULT 1; -DECLARE vPalletVolume INT DEFAULT 2200000; - -SELECT date(sub2.dat) dat, - sub2.longName, - sub2.size, - sub2.subName, - cast(sub2.entra as decimal(10,1)) as entra, - cast(sub2.sale as decimal(10,1)) as sale, - sub2.itemFk, - @saldo := entra + sale + ifnull(fue.pal,0) + IF(sub2.itemFk = @item, @saldo, 0) as saldo, - @item := sub2.itemFk as kk, - cast(fue.pal as decimal(10,1)) as pal -FROM -( - SELECT * FROM - ( - SELECT e.dat, - e.item_id as itemFk, - i.longName, - i.size, - i.subName, - sum(e.amount * r.cm3) / vPalletVolume as entra, - 0 as sale - FROM vn2008.item_entry_in e - JOIN vn.item i ON i.id = e.item_id - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - JOIN bi.rotacion r ON r.Id_Article = e.item_id AND r.warehouse_id = e.warehouse_id - WHERE e.dat BETWEEN CURDATE() AND vLastDate - AND e.warehouse_id = vWarehouse - AND ic.display - AND e.isVirtualStock is FALSE - GROUP BY e.dat, e.item_id - - UNION ALL - - SELECT s.dat, - s.item_id as itemFk, - i.longName, - i.size, - i.subName, - 0 as entra, - sum(s.amount * r.cm3) / vPalletVolume as sale - FROM vn2008.item_out s - JOIN vn.item i ON i.id = s.item_id - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - JOIN bi.rotacion r ON r.Id_Article = s.item_id AND r.warehouse_id = s.warehouse_id - WHERE s.dat BETWEEN CURDATE() AND vLastDate - AND s.warehouse_id = vWarehouse - AND ic.display - GROUP BY date(s.dat), s.item_id - - UNION ALL - - SELECT util.yesterday(), - @item := st.item_id as itemFk, - i.longName, - i.size, - i.subName, - st.amount * r.cm3 / vPalletVolume , - @saldo := 0 - FROM cache.stock st - JOIN vn.item i ON i.id = st.item_id - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - JOIN bi.rotacion r ON r.Id_Article = st.item_id AND r.warehouse_id = st.warehouse_id - WHERE st.warehouse_id = vWarehouse - AND ic.display - - ) sub - ORDER BY itemFk, dat, entra DESC) sub2 - LEFT JOIN - ( - SELECT itemFk, - - sum(ish.visible ) * r.cm3 / vPalletVolume as pal - FROM vn.itemShelving ish - JOIN bi.rotacion r ON r.Id_Article = ish.itemFk AND r.warehouse_id = 1 - LEFT JOIN vn.shelving sh ON sh.code = ish.shelvingFk - LEFT JOIN vn.parking p ON p.id = sh.parkingFk - WHERE (sh.code = 'FUE' OR p.code = 'FUE-PI') - GROUP BY itemFk) fue ON fue.itemFk = sub2.itemFk AND sub2.dat = util.yesterday() - ; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `crypt` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `crypt`(vText VARCHAR(255), vKey VARCHAR(255), OUT vResult VARCHAR(255) ) +CREATE DEFINER=`root`@`localhost` PROCEDURE `crypt`(vText VARCHAR(255), vKey VARCHAR(255), OUT vResult VARCHAR(255) ) BEGIN DECLARE vEncryptedText VARCHAR(255) DEFAULT ''; - + DECLARE vKeyLength INT; DECLARE vKeyPosition INT DEFAULT 1; DECLARE vKeyChar VARCHAR(1); - + DECLARE vTextLength INT; DECLARE vTextPosition INT DEFAULT 1; DECLARE vTextChar VARCHAR(1); - + DECLARE vEncryptedChar VARCHAR(1); DECLARE vEncryptedCharPosition INT; - + DECLARE vChain VARCHAR(255) DEFAULT '#$.-_0123456789abcdefghijklmnopqrstuvwxyz'; DECLARE vChainTextPosition INT; DECLARE vChainKeyPosition INT; DECLARE vChainLength INT; - + DECLARE vInvalidadChars VARCHAR(255) DEFAULT ''; - - SET vTextLength = LENGTH(vText); + + SET vTextLength = LENGTH(vText); SET vKeyLength = LENGTH(vKey); SET vChainLength = LENGTH(vChain); - + WHILE vTextPosition <= vTextLength DO - + SET vTextChar = MID(vText,vTextPosition,1); SET vKeyChar = MID(vKey,vKeyPosition,1); - + SET vChainTextPosition = LOCATE(vTextChar, vChain); SET vInvalidadChars = IF(vChainTextPosition, vInvalidadChars, CONCAT(vInvalidadChars,vTextChar)); SET vChainKeyPosition = LOCATE(vKeyChar, vChain); SET vEncryptedCharPosition = vChainTextPosition + vChainKeyPosition; - + IF vEncryptedCharPosition > vChainLength THEN - + SET vEncryptedCharPosition = vEncryptedCharPosition - vChainLength; - + END IF; - + SET vEncryptedChar = MID(vChain, vEncryptedCharPosition,1); - + SET vEncryptedText = CONCAT(vEncryptedText, vEncryptedChar); - + SET vKeyPosition = IF(vKeyPosition = vKeyLength, 1,vKeyPosition + 1); SET vTextPosition = vTextPosition + 1; - + END WHILE; SET vResult = IF(LENGTH(vInvalidadChars), CONCAT('Caracteres no válidos: ',vInvalidadChars),vEncryptedText); @@ -57213,59 +51013,59 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `cryptOff`(vText VARCHAR(255), vKey VARCHAR(255), OUT vResult VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `cryptOff`(vText VARCHAR(255), vKey VARCHAR(255), OUT vResult VARCHAR(255)) BEGIN DECLARE vUncryptedText VARCHAR(255) DEFAULT ''; - + DECLARE vKeyLength INT; DECLARE vKeyPosition INT DEFAULT 1; DECLARE vKeyChar VARCHAR(1); - + DECLARE vTextLength INT; DECLARE vTextPosition INT DEFAULT 1; DECLARE vTextChar VARCHAR(1); - + DECLARE vUncryptedChar VARCHAR(1); DECLARE vUncryptedCharPosition INT; - + DECLARE vChain VARCHAR(255) DEFAULT '#$.-_0123456789abcdefghijklmnopqrstuvwxyz'; DECLARE vChainTextPosition INT; DECLARE vChainKeyPosition INT; DECLARE vChainLength INT; - - SET vTextLength = LENGTH(vText); + + SET vTextLength = LENGTH(vText); SET vKeyLength = LENGTH(vKey); SET vChainLength = LENGTH(vChain); - + WHILE vTextPosition <= vTextLength DO - + SET vTextChar = MID(vText,vTextPosition,1); SET vKeyChar = MID(vKey,vKeyPosition,1); - + SET vChainTextPosition = LOCATE(vTextChar, vChain); SET vChainKeyPosition = LOCATE(vKeyChar, vChain); SET vUncryptedCharPosition = vChainTextPosition - vChainKeyPosition; - + IF vUncryptedCharPosition < 1 THEN - + SET vUncryptedCharPosition = vUncryptedCharPosition + vChainLength; - + END IF; - + SET vUncryptedChar = MID(vChain, vUncryptedCharPosition,1); - + SET vUncryptedText = CONCAT(vUncryptedText, vUncryptedChar); - + SET vKeyPosition = IF(vKeyPosition = vKeyLength, 1,vKeyPosition + 1); SET vTextPosition = vTextPosition + 1; - + END WHILE; SET vResult = vUncryptedText; @@ -57276,104 +51076,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `dayMinuteWorker` */; +/*!50003 DROP PROCEDURE IF EXISTS `department_calcTree` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `dayMinuteWorker`(vDateFrom DATETIME, vDateTo DATETIME) -BEGIN - - DECLARE vDateStart DATE DEFAULT vDateFrom; - DECLARE vDateEnd DATETIME DEFAULT util.dayEnd(vDateTo); - - SET @ordr := 0; - SET @user := 0; - - DROP TEMPORARY TABLE IF EXISTS tmp.dayMinuteWorker; - CREATE TEMPORARY TABLE tmp.dayMinuteWorker - SELECT sub3.id, - sub3.hh AS `Hour`, - sub3.mm AS Minut, - sub3.userFk, - sub3.code AS workerCode, - sub3.firstname AS name, - sub3.lastName AS surnames, - sub3.workcenterFk AS center, - w.name AS centerName, - w2.name AS warehouseName, - w2.hasProduction AS production - FROM postgresql.workcenter w - JOIN(SELECT id, - hh, - mm, - userFk, - code, - firstname, - lastName, - @ordr := IF(@user != userFk,0,@ordr), - IF(@ordr MOD 2, 'presente','--') AS state, - @ordr := IFNULL(sub2.`order`,@ordr), - @user := IFNULL(sub2.`userFk`,@user), - workcenterFk - FROM(SELECT dm.id, - dm.hh, - dm.mm, - users.userFk, - sub.`order`, - users.code, - firstName, - lastName, - users.workcenterFk - FROM dayMinute dm - JOIN(SELECT DISTINCT wtc.userFk , - code , - firstName, - lastName, - wl.workCenterFk - FROM vn.workerTimeControl wtc - JOIN vn.worker w ON w.userFk = wtc.userFk - JOIN vn.workerLabour wl ON wl.workerFK = w.id - AND wtc.timed BETWEEN wl.started AND IFNULL(wl.ended, CURDATE()) - WHERE wtc.timed BETWEEN vDateStart AND vDateEnd - ) users - LEFT JOIN(SELECT `order`, - wtc.userFk, - hour(wtc.timed) * 100 + minute(wtc.timed) as dayMinuteFk - FROM vn.workerTimeControl wtc - WHERE wtc.timed BETWEEN vDateStart AND vDateEnd - ORDER BY wtc.userFk, `order` - ) sub ON sub.dayMinuteFk = dm.id AND sub.userFk = users.userFk - ORDER BY userFk,dm.id - ) sub2 - ) sub3 ON sub3.workcenterFk = w.workcenter_id - JOIN vn.warehouse w2 ON w2.id = w.warehouseFk - WHERE state = 'presente' - AND sub3.id BETWEEN HOUR(vDateFrom) *100 + MINUTE(vDateFrom) - AND HOUR(vDateTo) *100 + MINUTE(vDateTo); - - END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `department_calcTree` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `department_calcTree`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `department_calcTree`() BEGIN /** * Calculates the #path, #lft, #rgt, #sons and #depth columns of @@ -57411,13 +51124,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `department_calcTreeRec`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `department_calcTreeRec`( vSelf INT, vPath VARCHAR(255), vDepth INT, @@ -57448,7 +51161,7 @@ BEGIN OR (vSelf IS NOT NULL AND parentFk = vSelf); DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + SET vSons = 0; OPEN vChildren; @@ -57459,11 +51172,11 @@ BEGIN IF vDone THEN LEAVE myLoop; END IF; - + SET vIndex = vIndex + 1; SET vLft = vIndex; SET vSons = vSons + 1; - + CALL department_calcTreeRec( vChildFk, CONCAT(vPath, vChildFk, '/'), @@ -57493,13 +51206,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `department_doCalc`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `department_doCalc`() proc: BEGIN /** * Recalculates the department tree. @@ -57518,13 +51231,42 @@ proc: BEGIN SELECT isChanged INTO vIsChanged FROM department_recalc; - + IF vIsChanged THEN UPDATE department_recalc SET isChanged = FALSE; CALL vn.department_calcTree; END IF; DO RELEASE_LOCK('vn.department_doCalc'); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `department_getHasMistake` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `department_getHasMistake`() +BEGIN + +/** + * Obtiene los sectores a los cuales les ponemos errores + * + */ + + SELECT id, name + FROM department + WHERE hasToMistake <> FALSE; + + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -57535,13 +51277,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `department_getLeaves`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `department_getLeaves`( vParentFk INT, vSearch VARCHAR(255) ) @@ -57583,19 +51325,19 @@ BEGIN FROM department g JOIN tChilds c ON c.id = g.id WHERE g.parentFk IS NOT NULL; - + INSERT IGNORE INTO tNodes SELECT id FROM tParents; - + IF ROW_COUNT() = 0 THEN LEAVE myLoop; END IF; - + DELETE FROM tChilds; INSERT INTO tChilds SELECT id FROM tParents; END LOOP; - + DROP TEMPORARY TABLE tChilds, tParents; @@ -57628,19 +51370,19 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `deviceLog_add`(vWorkerFk INT, vAppName VARCHAR(45), vAppVersion VARCHAR(45), vAndroid_id VARCHAR(100)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `deviceLog_add`(vWorkerFk INT, vAppName VARCHAR(45), vAppVersion VARCHAR(45), vAndroid_id VARCHAR(100)) BEGIN /* * Inserta registro en tabla devicelog el log del usuario conectado * @param vAppName es el nombre de la app - * @param vAppVersion es la versión de la app - * @param vAndroid_id es el android_id del dispositivo que se ha logueado + * @param vAppVersion es la versión de la app + * @param vAndroid_id es el android_id del dispositivo que se ha logueado */ - + INSERT INTO deviceLog (userFK, nameApp, versionApp, android_id) VALUES(vWorkerFk, vAppName, vAppVersion, vAndroid_id); @@ -57657,18 +51399,18 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `deviceProductionUser_exists`(vUserFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `deviceProductionUser_exists`(vUserFk INT) BEGIN - + /* SELECT COUNT(*) AS UserExists - FROM vn.deviceProductionUser dpu + FROM vn.deviceProductionUser dpu WHERE dpu.userFk = vUserFk;*/ SELECT TRUE; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -57681,22 +51423,22 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `deviceProductionUser_getWorker`(vAndroid_id VARCHAR(50)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `deviceProductionUser_getWorker`(vAndroid_id VARCHAR(50)) BEGIN /** - * Selecciona si hay registrado un device con un android_id - * - * @param vAndroid_id el número android_id del dispositivo - * + * Selecciona si hay registrado un device con un android_id + * + * @param vAndroid_id el número android_id del dispositivo + * */ SELECT 103; /* SELECT account.user_getNameFromId(dpu.userFk) - FROM deviceProductionUser dpu - JOIN deviceProduction dp ON dpu.deviceProductionFk = dp.id + FROM deviceProductionUser dpu + JOIN deviceProduction dp ON dpu.deviceProductionFk = dp.id WHERE dp.android_id = vAndroid_id;*/ END ;; @@ -57711,22 +51453,22 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `deviceProduction_getnameDevice`(vAndroid_id VARCHAR(50)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `deviceProduction_getnameDevice`(vAndroid_id VARCHAR(50)) BEGIN /** * Selecciona el id del dispositivo que corresponde al vAndroid_id - * - * @param vAndroid_id el número android_id del dispositivo - * + * + * @param vAndroid_id el número android_id del dispositivo + * */ - SELECT dp.id + SELECT dp.id FROM deviceProduction dp - WHERE dp.android_id = vAndroid_id; + WHERE dp.android_id = vAndroid_id; END ;; DELIMITER ; @@ -57740,16 +51482,16 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `device_checkLogin`(vUserFk INT, vAndroidID VARCHAR(50)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `device_checkLogin`(vUserFk INT, vAndroidID VARCHAR(50)) BEGIN - + /* * Comprueba si está registrado el dispositivo mediante su androidId - * + * * @param vUSerFk el id del user * @param vAndroidID es el identificador android_id del dispositivo */ @@ -57761,20 +51503,20 @@ BEGIN SELECT dpc.isAllUsersallowed INTO vIsAllUsersAllowed FROM vn.deviceProductionConfig dpc; - IF NOT vIsAllUsersAllowed THEN - + IF NOT vIsAllUsersAllowed THEN + SELECT COUNT(*) INTO vIsDepartment - FROM vn.workerDepartment dp + FROM vn.workerDepartment dp JOIN department d ON d.id = dp.departmentFk WHERE dp.workerFk = vUserFk AND d.hasToCheckLogin; - + IF vIsDepartment THEN SELECT COUNT(*) INTO vIsAuthorized - FROM vn.deviceProductionUser dpu + FROM vn.deviceProductionUser dpu JOIN vn.deviceProduction dp ON dp.id = dpu.deviceProductionFk WHERE dpu.userFk = vUserFk AND dp.android_id = vAndroidID; - + IF NOT vIsAuthorized THEN SET vMessage = 'Usuario no autorizado'; END IF; @@ -57784,61 +51526,6 @@ BEGIN SELECT vIsAuthorized,vMessage; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `device_checkLogin__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `device_checkLogin__`(vUserFk INT, vAndroidID VARCHAR(50)) -BEGIN - -/* - * Comprueba si está registrado el dispositivo mediante su androidId - * - * @param vUSerFk el id del user - * @param vAndroidID es el identificador android_id del dispositivo - */ - DECLARE vIsAuthorized BOOL DEFAULT TRUE; - DECLARE vIsDepartment BOOL; - DECLARE vMessage VARCHAR(200); - - SELECT COUNT(*) INTO vIsDepartment - FROM vn.workerDepartment dp - JOIN department d ON d.id = dp.departmentFk - WHERE dp.workerFk = vUserFk AND d.name = "PRODUCCION"; - - IF vIsDepartment THEN - - SELECT COUNT(*) INTO vIsAuthorized - FROM vn.deviceProductionUser dpu - JOIN vn.deviceProduction dp ON dp.id = dpu.deviceProductionFk - WHERE dpu.userFk = vUserFk - AND dp.android_id = vAndroidID; - - - IF NOT vIsAuthorized THEN - - SET vMessage = 'Usuario no autorizado'; - - END IF; - - END IF; - - - #vIsAuthorized = TRUE; #Descomentar esta linea si se quiere quitar la comprobación de autorizacion - SELECT vIsAuthorized,vMessage; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -57849,25 +51536,25 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `duaEntryValueUpdate`(vDuaFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `duaEntryValueUpdate`(vDuaFk INT) BEGIN UPDATE duaEntry de - JOIN + JOIN ( SELECT b.entryFk, sum(b.quantity * b.buyingValue) as total FROM buy b JOIN duaEntry de ON de.entryFk = b.entryFk WHERE duaFk = vDuaFk GROUP BY b.entryFk ) sub ON sub.entryFk = de.entryFk - - LEFT JOIN + + LEFT JOIN (SELECT e.id, sum(iit.taxableBase) as euros FROM entry e JOIN invoiceInTax iit ON iit.invoiceInFk = e.invoiceInFk @@ -57875,11 +51562,11 @@ BEGIN WHERE de.duaFk = vDuaFk GROUP BY e.id ) sub2 ON sub2.id = de.entryFk - + SET de.value = sub.total, de.euroValue = sub2.euros WHERE duaFk = vDuaFk; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -57890,20 +51577,20 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `duaInvoiceInBooking`(vDuaFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `duaInvoiceInBooking`(vDuaFk INT) BEGIN DECLARE done BOOL DEFAULT FALSE; DECLARE vInvoiceFk INT; DECLARE vASIEN BIGINT DEFAULT 0; DECLARE vCounter INT DEFAULT 0; - + DECLARE rs CURSOR FOR SELECT e.invoiceInFk FROM entry e @@ -57916,7 +51603,7 @@ BEGIN DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN rs; - + UPDATE invoiceIn ii JOIN entry e ON e.invoiceInFk = ii.id JOIN duaEntry de ON de.entryFk = e.id @@ -57928,123 +51615,41 @@ BEGIN ii.bookEntried = IFNULL(ii.bookEntried,d.bookEntried), e.isConfirmed = TRUE WHERE d.id = vDuaFk; - + SELECT IFNULL(ASIEN,0) INTO vASIEN FROM dua WHERE id = vDuaFk; - + FETCH rs INTO vInvoiceFk; - + WHILE NOT done DO CALL invoiceInBookingMain(vInvoiceFk); - + IF vCounter > 0 OR vASIEN > 0 THEN - + UPDATE vn2008.XDiario x JOIN vn.ledgerConfig lc ON lc.lastBookEntry = x.ASIEN SET x.ASIEN = vASIEN; - + ELSE - + SELECT lastBookEntry INTO vASIEN FROM vn.ledgerConfig; - + END IF; - + SET vCounter = vCounter + 1; - + FETCH rs INTO vInvoiceFk; END WHILE; - + CLOSE rs; - - UPDATE dua + + UPDATE dua SET ASIEN = vASIEN WHERE id = vDuaFk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `duaInvoiceInBooking__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `duaInvoiceInBooking__`(vDuaFk INT) -BEGIN - DECLARE done BOOL DEFAULT FALSE; - DECLARE vInvoiceFk INT; - DECLARE vASIEN BIGINT DEFAULT 0; - DECLARE vCounter INT DEFAULT 0; - - DECLARE rs CURSOR FOR - SELECT e.invoiceInFk - FROM entry e - JOIN duaEntry de ON de.entryFk = e.id - JOIN invoiceIn ii ON ii.id = e.invoiceInFk - WHERE de.duaFk = vDuaFk - AND de.customsValue - AND ii.isBooked = FALSE; - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - - OPEN rs; - - UPDATE invoiceIn ii - JOIN entry e ON e.invoiceInFk = ii.id - JOIN duaEntry de ON de.entryFk = e.id - JOIN dua d ON d.id = de.duaFk - SET ii.isBooked = TRUE, - ii.booked = IFNULL(ii.booked,d.booked), - ii.operated = IFNULL(ii.operated,d.operated), - ii.issued = IFNULL(ii.issued,d.issued), - ii.bookEntried = IFNULL(ii.bookEntried,d.bookEntried), - e.isConfirmed = TRUE - WHERE d.id = vDuaFk; - - SELECT IFNULL(ASIEN,0) INTO vASIEN - FROM dua - WHERE id = vDuaFk; - - FETCH rs INTO vInvoiceFk; - - WHILE NOT done DO - - CALL invoiceInBookingMain(vInvoiceFk); - - IF vCounter > 0 OR vASIEN > 0 THEN - - UPDATE XDiario x - JOIN config c ON c.ASIEN = x.ASIEN - SET x.ASIEN = vASIEN; - - ELSE - - SELECT ASIEN INTO vASIEN FROM config; - - END IF; - - SET vCounter = vCounter + 1; - - FETCH rs INTO vInvoiceFk; - - END WHILE; - - CLOSE rs; - - UPDATE dua - SET ASIEN = vASIEN - WHERE id = vDuaFk; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -58055,13 +51660,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `duaParcialMake`(vDuaFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `duaParcialMake`(vDuaFk INT) BEGIN DECLARE vNewDuaFk INT; @@ -58070,9 +51675,9 @@ BEGIN SELECT awbFk,companyFk FROM dua WHERE id = vDuaFk; - + SELECT LAST_INSERT_ID() INTO vNewDuaFk; - + INSERT INTO duaEntry(duaFk, entryFk, value, customsValue) SELECT vNewDuaFk, entryFk, value, value - customsValue FROM duaEntry @@ -58091,39 +51696,39 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `duaTaxBooking`(vDuaFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `duaTaxBooking`(vDuaFk INT) BEGIN DECLARE vBookNumber INT; DECLARE vBookDated DATE; DECLARE vDiff DECIMAL(10,2); DECLARE vApunte BIGINT; - - SELECT ASIEN, IFNULL(bookEntried, CURDATE()) INTO vBookNumber, vBookDated - FROM dua + + SELECT ASIEN, IFNULL(bookEntried, util.VN_CURDATE()) INTO vBookNumber, vBookDated + FROM dua WHERE id = vDuaFk; - + IF vBookNumber IS NULL OR NOT vBookNumber THEN CALL ledger_next(vBookNumber); END IF; - + -- Apunte de la aduana INSERT INTO XDiario( ASIEN, FECHA, SUBCTA, - CONCEPTO, + CONCEPTO, EUROHABER, SERIE, empresa_id, CLAVE, FACTURA) - SELECT + SELECT vBookNumber, d.bookEntried, '4700000999', @@ -58136,20 +51741,20 @@ BEGIN FROM duaTax dt JOIN dua d ON d.id = dt.duaFk WHERE dt.duaFk = vDuaFk; - + -- Apuntes por tipo de IVA y proveedor - + INSERT INTO XDiario( ASIEN, FECHA, SUBCTA, - CONTRA, + CONTRA, EURODEBE, BASEEURO, - CONCEPTO, - FACTURA, + CONCEPTO, + FACTURA, IVA, - AUXILIAR, + AUXILIAR, SERIE, FECHA_EX, FECHA_OP, @@ -58169,17 +51774,17 @@ BEGIN FECREGCON ) - SELECT + SELECT vBookNumber ASIEN, vBookDated FECHA, tr.account SUBCTA, '4330002067' CONTRA, sum(dt.tax) EURODEBE, - sum(dt.base) BASEEURO, + sum(dt.base) BASEEURO, CONCAT('DUA nº',d.code) CONCEPTO, d.id FACTURA, dt.rate IVA, - '*' AUXILIAR, + '*' AUXILIAR, 'D' SERIE, d.issued FECHA_EX, d.operated FECHA_OP, @@ -58206,9 +51811,10 @@ BEGIN WHERE ta.effectived <= vBookDated AND taxAreaFk = 'WORLD' ORDER BY ta.effectived DESC + LIMIT 10000000000000000000 ) tba GROUP BY rate - ) tr ON tr.rate = dt.rate + ) tr ON tr.rate = dt.rate JOIN supplier s ON s.id = d.companyFk WHERE d.id = vDuaFk GROUP BY dt.rate; @@ -58216,260 +51822,16 @@ BEGIN SELECT SUM(EURODEBE) -SUM(EUROHABER), MAX(id) INTO vDiff, vApunte FROM XDiario WHERE ASIEN = vBookNumber; - + UPDATE XDiario SET BASEEURO = 100 * (EURODEBE - vDiff) / IVA, - EURODEBE = EURODEBE - vDiff + EURODEBE = EURODEBE - vDiff WHERE id = vApunte; - + UPDATE dua SET ASIEN = vBookNumber WHERE id = vDuaFk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `duaTaxBooking__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `duaTaxBooking__`(vDuaFk INT) -BEGIN - DECLARE vBookNumber INT; - DECLARE vBookDated DATE; - DECLARE vDiff DECIMAL(10,2); - DECLARE vApunte BIGINT; - - SELECT ASIEN, IFNULL(bookEntried, CURDATE()) INTO vBookNumber, vBookDated - FROM dua - WHERE id = vDuaFk; - - IF vBookNumber IS NULL OR NOT vBookNumber THEN - CALL ledger_next(vBookNumber); - END IF; - - -- Apunte de la aduana - INSERT INTO XDiario( - ASIEN, - FECHA, - SUBCTA, - CONCEPTO, - EUROHABER, - SERIE, - empresa_id, - CLAVE, - FACTURA) - - SELECT - vBookNumber, - d.bookEntried, - '4700000999', - CONCAT('DUA ',d.code), - sum(di.amount * tr.rate / 100) EUROHABER, - 'R', - d.companyFk, - vDuaFk, - vDuaFk - FROM duaIntrastat di - JOIN intrastat ist ON ist.id = di.intrastatFk - JOIN (SELECT rate, taxClassFk - FROM - (SELECT rate, taxClassFk - FROM invoiceInTaxBookingAccount ta - WHERE ta.effectived <= vBookDated - ORDER BY ta.effectived DESC - ) tba - GROUP BY taxClassFk - ) tr ON tr.taxClassFk = ist.taxClassFk - JOIN dua d ON d.id = di.duaFk - WHERE di.duaFk = vDuaFk; - - -- Apuntes por tipo de IVA y proveedor - - INSERT INTO XDiario( - ASIEN, - FECHA, - SUBCTA, - CONTRA, - EURODEBE, - BASEEURO, - CONCEPTO, - FACTURA, - IVA, - AUXILIAR, - SERIE, - FECHA_EX, - FECHA_OP, - FACTURAEX, - NFACTICK, - L340, - LDIFADUAN, - TIPOCLAVE, - TIPOEXENCI, - TIPONOSUJE, - TIPOFACT, - TIPORECTIF, - TERIDNIF, - TERNIF, - TERNOM, - empresa_id, - FECREGCON - ) - - SELECT - vBookNumber ASIEN, - vBookDated FECHA, - tr.account SUBCTA, - '4330002067' CONTRA, - sum(dt.tax) EURODEBE, - sum(dt.base) BASEEURO, - CONCAT('DUA nº',d.code) CONCEPTO, - d.id FACTURA, - dt.rate IVA, - '*' AUXILIAR, - 'D' SERIE, - d.issued FECHA_EX, - d.operated FECHA_OP, - d.code FACTURAEX, - 1 NFACTICK, - 1 L340, - TRUE LDIFADUAN, - 1 TIPOCLAVE, - 1 TIPOEXENCI, - 1 TIPONOSUJE, - 5 TIPOFACT, - 1 TIPORECTIF, - IF(s.countryFk IN (30, 1), 1, 4) TERIDNIF, - s.nif TERNIF, - s.name TERNOM, - d.companyFk, - d.booked FECREGCON - FROM duaTax dt - JOIN dua d ON dt.duaFk = d.id - JOIN (SELECT account, rate - FROM - (SELECT rate, account - FROM invoiceInTaxBookingAccount ta - WHERE ta.effectived <= vBookDated - AND taxAreaFk = 'WORLD' - ORDER BY ta.effectived DESC - ) tba - GROUP BY rate - ) tr ON tr.rate = dt.rate - JOIN supplier s ON s.id = d.companyFk - WHERE d.id = vDuaFk - GROUP BY dt.rate; - - SELECT SUM(EURODEBE) -SUM(EUROHABER), MAX(id) INTO vDiff, vApunte - FROM XDiario - WHERE ASIEN = vBookNumber; - - UPDATE XDiario - SET BASEEURO = 100 * (EURODEBE - vDiff) / IVA, - EURODEBE = EURODEBE - vDiff - WHERE id = vApunte; - - UPDATE dua - SET ASIEN = vBookNumber - WHERE id = vDuaFk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `duaTaxUpdate__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `duaTaxUpdate__`(vDuaFk INT) -BEGIN - - DECLARE vSPAIN INT DEFAULT 1; - DECLARE vDated DATE; - DECLARE vTotalDUABase DECIMAL(10,2); - - SELECT IFNULL(operated, CURDATE()) INTO vDated - FROM dua - WHERE id = vDuaFk; - - SELECT sum(amount) INTO vTotalDUABase - FROM duaIntrastat - WHERE duaFk = vDuaFk; - - DELETE FROM duaTax - WHERE duaFk = vDuaFk; - - INSERT INTO duaTax(duaFk, supplierFk, taxClassFk, base) - SELECT vDuaFk, supplierFk, taxClassFk, sum(sub.Base) as Base - FROM intrastat ist - JOIN - (SELECT - e.supplierFk, - i.intrastatFk, - CAST(sum(b.quantity * b.buyingValue * de.customsValue / de.value) * di.amount/ tei.Base AS DECIMAL(10,2)) as Base - FROM buy b - JOIN item i ON i.id = b.itemFk - JOIN entry e ON e.id = b.entryFk - JOIN duaEntry de ON de.entryFk = e.id - JOIN - ( - SELECT i.intrastatFk, - CAST(sum(b.quantity * b.buyingValue * de.customsValue / de.value) AS DECIMAL(10,2)) as Base - FROM buy b - JOIN item i ON i.id = b.itemFk - JOIN entry e ON e.id = b.entryFk - JOIN duaEntry de ON de.entryFk = e.id - WHERE de.duaFk = vDuaFk - GROUP BY i.intrastatFk - - ) tei ON tei.intrastatFk = i.intrastatFk - JOIN - ( - SELECT intrastatFk, sum(amount) as amount - FROM duaIntrastat - WHERE duaFk = vDuaFk - GROUP BY intrastatFK - ) di ON di.intrastatFk = i.intrastatFk - WHERE de.duaFk = vDuaFk - GROUP BY e.supplierFk, i.intrastatFk - HAVING Base - ) sub ON ist.id = sub.intrastatFk - GROUP BY ist.taxClassFk, sub.supplierFk; - - UPDATE duaTax dt - JOIN - (SELECT taxClassFk, rate - FROM - (SELECT taxClassFk, rate - FROM invoiceInTaxBookingAccount - WHERE effectived <= vDated - AND countryFk = vSPAIN - ORDER BY effectived DESC - ) ba1 - GROUP BY taxClassFk - ) ba2 ON dt.taxClassFk = ba2.taxClassFk - SET dt.rate = ba2.rate, - dt.tax = dt.base * ba2.rate / 100; - - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -58482,29 +51844,29 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `duaTax_doRecalc`(vDuaFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `duaTax_doRecalc`(vDuaFk INT) BEGIN /** * Borra los valores de duaTax y los vuelve a crear en base a la tabla duaEntry - * + * * @param vDuaFk Id del dua a recalcular **/ DELETE FROM duaTax WHERE duaFk = vDuaFk; - - INSERT INTO duaTax(duaFk, supplierFk, taxClassFk, base) + + INSERT INTO duaTax(duaFk, supplierFk, taxClassFk, base) SELECT vDuaFk, supplierFk, taxClassFk, sum(sub.Base) as Base FROM intrastat ist JOIN (SELECT - e.supplierFk, + e.supplierFk, i.intrastatFk, CAST(sum(b.quantity * b.buyingValue * de.customsValue / de.value) * di.amount/ tei.Base AS DECIMAL(10,2)) as Base - FROM buy b + FROM buy b JOIN item i ON i.id = b.itemFk JOIN entry e ON e.id = b.entryFk JOIN duaEntry de ON de.entryFk = e.id @@ -58512,15 +51874,15 @@ BEGIN ( SELECT i.intrastatFk, CAST(sum(b.quantity * b.buyingValue * de.customsValue / de.value) AS DECIMAL(10,2)) as Base - FROM buy b + FROM buy b JOIN item i ON i.id = b.itemFk JOIN entry e ON e.id = b.entryFk JOIN duaEntry de ON de.entryFk = e.id WHERE de.duaFk = vDuaFk GROUP BY i.intrastatFk - + ) tei ON tei.intrastatFk = i.intrastatFk - JOIN + JOIN ( SELECT intrastatFk, sum(amount) as amount FROM duaIntrastat @@ -58529,7 +51891,7 @@ BEGIN ) di ON di.intrastatFk = i.intrastatFk WHERE de.duaFk = vDuaFk GROUP BY e.supplierFk, i.intrastatFk - HAVING Base + HAVING Base ) sub ON ist.id = sub.intrastatFk GROUP BY ist.taxClassFk, sub.supplierFk; END ;; @@ -58542,21 +51904,21 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ediTables_Update`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `ediTables_Update`() BEGIN - - INSERT IGNORE INTO vn.genus(name) + + INSERT IGNORE INTO vn.genus(name) SELECT latin_genus_name FROM edi.genus ; - INSERT IGNORE INTO vn.specie(name) - SELECT LCASE(latin_species_name) + INSERT IGNORE INTO vn.specie(name) + SELECT LCASE(latin_species_name) FROM edi.specie ; END ;; DELIMITER ; @@ -58568,26 +51930,26 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ektEntryAssign_setEntry`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `ektEntryAssign_setEntry`() BEGIN DECLARE done INT DEFAULT FALSE; DECLARE vEntryFk INT; DECLARE vTravelFk INT; DECLARE vId INT; -DECLARE vLanded DATE DEFAULT CURDATE(); +DECLARE vLanded DATE DEFAULT util.VN_CURDATE(); DECLARE cur1 CURSOR FOR SELECT id FROM vn.ektEntryAssign; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - IF HOUR(NOW()) > 12 THEN + IF HOUR(util.VN_NOW()) > 12 THEN SET vLanded = TIMESTAMPADD(DAY,1,vLanded); @@ -58596,71 +51958,71 @@ DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur1; read_loop: LOOP - + SET done = FALSE; SET vEntryFk = 0; - + FETCH cur1 INTO vId; - + IF done THEN LEAVE read_loop; END IF; - + SELECT IFNULL(e.id,0) INTO vEntryFk FROM vn.entry e JOIN vn.travel tr ON tr.id = e.travelFk - JOIN vn.ektEntryAssign ea ON ea.warehouseOutFk = tr.warehouseOutFk + JOIN vn.ektEntryAssign ea ON ea.warehouseOutFk = tr.warehouseOutFk AND ea.warehouseInFk = tr.warehouseInFk - AND ea.agencyModeFk = tr.agencyFk + AND ea.agencyModeFk = tr.agencyModeFk AND ea.supplierFk = e.supplierFk WHERE ea.id = vId AND tr.landed = vLanded LIMIT 1; - + IF NOT vEntryFk THEN - + SELECT IFNULL(e.id,0) INTO vEntryFk FROM vn.entry e JOIN vn.travel tr ON tr.id = e.travelFk - JOIN vn.ektEntryAssign ea ON ea.warehouseOutFk = tr.warehouseOutFk + JOIN vn.ektEntryAssign ea ON ea.warehouseOutFk = tr.warehouseOutFk AND ea.warehouseInFk = tr.warehouseInFk - AND ea.agencyModeFk = tr.agencyFk + AND ea.agencyModeFk = tr.agencyModeFk WHERE ea.id = vId AND tr.landed = vLanded AND ea.supplierFk IS NULL LIMIT 1; - + END IF; - + IF NOT vEntryFk THEN - + SET vTravelFk = 0; - - SELECT IFNULL(MAX(tr.id),0) INTO vTravelFk + + SELECT IFNULL(MAX(tr.id),0) INTO vTravelFk FROM vn.travel tr - JOIN vn.ektEntryAssign ea ON ea.warehouseOutFk = tr.warehouseOutFk + JOIN vn.ektEntryAssign ea ON ea.warehouseOutFk = tr.warehouseOutFk AND ea.warehouseInFk = tr.warehouseInFk - AND ea.agencyModeFk = tr.agencyFk + AND ea.agencyModeFk = tr.agencyModeFk WHERE ea.id = vId AND tr.landed = vLanded; - + IF NOT vTravelFk THEN - - INSERT INTO vn.travel(landed, shipped, warehouseInFk, warehouseOutFk, agencyFk) + + INSERT INTO vn.travel(landed, shipped, warehouseInFk, warehouseOutFk, agencyModeFk) SELECT vLanded, vLanded, warehouseInFk, warehouseOutFk, agencyModeFk - FROM vn.ektEntryAssign + FROM vn.ektEntryAssign WHERE id = vId; - - SELECT MAX(tr.id) INTO vTravelFk + + SELECT MAX(tr.id) INTO vTravelFk FROM vn.travel tr - JOIN vn.ektEntryAssign ea ON ea.warehouseOutFk = tr.warehouseOutFk + JOIN vn.ektEntryAssign ea ON ea.warehouseOutFk = tr.warehouseOutFk AND ea.warehouseInFk = tr.warehouseInFk AND ea.agencyModeFk = tr.agencyFk WHERE ea.id = vId AND tr.landed = vLanded; - + END IF; - + INSERT INTO vn.entry(travelFk, supplierFk, companyFk, currencyFk) SELECT vTravelFk, IFNULL(ea.supplierFk,s.id), c.id, cu.id FROM vn.supplier s @@ -58668,13 +52030,13 @@ OPEN cur1; JOIN vn.currency cu ON cu.code = 'EUR' JOIN vn.ektEntryAssign ea ON ea.id = vId WHERE s.name = 'KONINKLIJE COOPERATIEVE BLOEMENVEILING FLORAHOLLAN'; - - SELECT MAX(id) INTO vEntryFk + + SELECT MAX(id) INTO vEntryFk FROM vn.entry WHERE travelFk = vTravelFk; - + END IF; - + UPDATE vn.ektEntryAssign SET entryFk = vEntryFk WHERE id = vId; @@ -58682,83 +52044,7 @@ OPEN cur1; END LOOP; CLOSE cur1; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ekt_add` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ekt_add`(vPutOrderFk INT) -BEGIN - -/** - * Añade ekt para las ordenes de compra de proveedores que no envian el ekt por email - * - * @param vPutOrderFk PutOrderId de donde coger los datos - **/ - - INSERT INTO edi.ekt(entryYear, - deliveryNumber, - fec, - hor, - item, - pac, - qty, - ori, - cat, - pro, - pri, - package, - s1, - s2, - s3, - s4, - s5, - s6, - putOrderFk, - `ref`, - kop) - SELECT year(curdate()) entryYear, - p.id deliveryNumber , - CURDATE() fec, - CURTIME() hor, - i.longName item, - sr.NumberOfItemsPerCask pac, - p.quantity qty, - o.code ori, - i.category cat, - mp.supplierFk pro, - sr.Price pri, - sr.EmbalageCode package, - i.value5 s1, - i.value6 s2, - i.value7 s3, - i.value8 s4, - i.value9 s5, - i.value10 s6, - p.id putOrderFk, - sr.Item_ArticleCode, - sr.vmpID - FROM edi.putOrder p - JOIN edi.supplyResponse sr ON sr.ID = p.supplyResponseID - JOIN edi.marketPlace mp ON mp.id = sr.MarketPlaceID - JOIN vn.item i ON i.supplyResponseFk = sr.ID - JOIN vn.origin o ON o.id = i.originFk - WHERE p.id = vPutOrderFk; - - CALL edi.ekt_load(LAST_INSERT_ID()); - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -58771,254 +52057,27 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `energyMeter_record`(vInput INT, vActiveTime INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `energyMeter_record`(vInput INT, vActiveTime INT) BEGIN DECLARE vConsumption INT; - + SELECT consumption INTO vConsumption FROM energyInput WHERE input = vInput; - INSERT INTO vn.energyMeter - SET - `input` = vInput, - `period` = DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00'), + INSERT INTO vn.energyMeter + SET + `input` = vInput, + `period` = DATE_FORMAT(util.VN_NOW(), '%Y-%m-%d %H:00:00'), `activeTime` = vActiveTime, `consumption` = CAST(IFNULL((vConsumption / 3600) * vActiveTime, 0) AS DECIMAL(10,2)) - ON DUPLICATE KEY UPDATE + ON DUPLICATE KEY UPDATE `activeTime` = `activeTime` + vActiveTime, `consumption` = `consumption` + CAST(VALUES(`consumption`) AS DECIMAL(10,2)); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `entryConverter` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `entryConverter`(IN `vEntry` INT) -BEGIN - - DECLARE vWarehouseIn INT; - DECLARE vWarehouseOut INT; - DECLARE vTravel INT; - - DECLARE done BOOL DEFAULT FALSE; - - DECLARE vId_Entrada INT; - DECLARE vId_Article INT; - DECLARE vEtiquetas INT; - DECLARE vId_Cubo VARCHAR(10); - DECLARE vPacking INT; - DECLARE vGrouping INT; - DECLARE vCantidad INT; - DECLARE vCostefijo DECIMAL(10,3); - DECLARE vPortefijo DECIMAL(10,3); - DECLARE vEmbalajefijo DECIMAL(10); - DECLARE vComisionfija DECIMAL(10,3); - DECLARE vCaja INT; - DECLARE vNicho VARCHAR(5); - DECLARE vTarifa1 DECIMAL(10,2); - DECLARE vTarifa2 DECIMAL(10,2); - DECLARE vTarifa3 DECIMAL(10,2); - DECLARE vPVP DECIMAL(10,2); - DECLARE vCompra INT; - - DECLARE rs CURSOR FOR - SELECT - b.Id_Entrada, - b.Id_Article, - b.Etiquetas, - b.Id_Cubo, - b.Packing, - b.`grouping`, - b.Cantidad, - b.Costefijo, - b.Portefijo, - b.Embalajefijo, - b.Comisionfija, - b.caja, - b.Nicho, - b.Tarifa1, - b.Tarifa2, - b.Tarifa3, - b.PVP - FROM vn2008.Compres b - JOIN vn.itemConversor ic ON ic.espItemFk = b.Id_Article - WHERE Id_Entrada = vEntry; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - - SELECT warehouseInFk, warehouseOutFk, tr.id - INTO vWarehouseIn, vWarehouseOut, vTravel - FROM travel tr - JOIN entry e ON e.travelFk = tr.id - WHERE e.id = vEntry; - - UPDATE travel - SET warehouseInFk = vWarehouseOut, - warehouseOutFk = vWarehouseIn - WHERE id = vTravel; - - UPDATE vn2008.Compres c - LEFT JOIN vn.itemConversor ic ON ic.espItemFk = c.Id_Article - SET Etiquetas = 0, Cantidad = 0 - WHERE c.Id_Entrada = vEntry - AND ic.espItemFk IS NULL; - - OPEN rs; - - DELETE FROM vn2008.Compres WHERE Id_Entrada = vEntry; - - FETCH rs INTO - vId_Entrada, - vId_Article, - vEtiquetas, - vId_Cubo, - vPacking, - vGrouping, - vCantidad, - vCostefijo, - vPortefijo, - vEmbalajefijo, - vComisionfija, - vCaja, - vNicho, - vTarifa1, - vTarifa2, - vTarifa3, - vPVP; - - WHILE NOT done DO - - -- Primero la linea original con las cantidades invertidas - INSERT INTO vn2008.Compres - ( - Id_Entrada, - Id_Article, - Etiquetas, - Id_Cubo, - Packing, - `grouping`, - Cantidad, - Costefijo, - Portefijo, - Embalajefijo, - Comisionfija, - caja, - Nicho, - Tarifa1, - Tarifa2, - Tarifa3, - PVP - ) - VALUES - ( - vId_Entrada, - vId_Article, - - vEtiquetas, - vId_Cubo, - vPacking, - vGrouping, - - vCantidad, - vCostefijo, - vPortefijo, - vEmbalajefijo, - vComisionfija, - vCaja, - vNicho, - vTarifa1, - vTarifa2, - vTarifa3, - vPVP); - - -- Ahora la linea nueva, con el item genérico - INSERT INTO vn2008.Compres - ( - Id_Entrada, - Id_Article, - Etiquetas, - Id_Cubo, - Packing, - `grouping`, - Cantidad, - Costefijo, - Portefijo, - Embalajefijo, - Comisionfija, - caja, - Nicho, - Tarifa1, - Tarifa2, - Tarifa3, - PVP - ) - SELECT - vId_Entrada, - genItemFk as Id_Article, - vEtiquetas, - vId_Cubo, - vPacking, - vGrouping, - vCantidad, - vCostefijo, - vPortefijo, - vEmbalajefijo, - vComisionfija, - vCaja, - vNicho, - vTarifa1, - vTarifa2, - vTarifa3, - vPVP - FROM itemConversor - WHERE espItemFk = vId_Article; - - SELECT LAST_INSERT_ID() - INTO vCompra; - - REPLACE vn2008.Compres_mark(Id_Compra,`comment`) - SELECT vCompra, vId_Article; - - - FETCH rs INTO - vId_Entrada, - vId_Article, - vEtiquetas, - vId_Cubo, - vPacking, - vGrouping, - vCantidad, - vCostefijo, - vPortefijo, - vEmbalajefijo, - vComisionfija, - vCaja, - vNicho, - vTarifa1, - vTarifa2, - vTarifa3, - vPVP; - - END WHILE; - - - CLOSE rs; - - - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -59029,159 +52088,40 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `entryDelivered`(vDated DATE, vEntryFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `entryDelivered`(vDated DATE, vEntryFk INT) BEGIN DECLARE vTravelFk INT; - + SELECT travelFk INTO vTravelFk - FROM vn.entry + FROM vn.entry WHERE id = vEntryFk; - + IF (SELECT COUNT(*) FROM vn.entry WHERE travelFk = vTravelFk) = 1 THEN - + UPDATE vn.travel SET shipped = LEAST(shipped, vDated), landed = vDated WHERE id = vTravelFk; - + ELSE - - INSERT INTO vn.travel(shipped, landed, warehouseInFk, warehouseOutFk, agencyFk, ref, isDelivered, isReceived) - SELECT LEAST(shipped, vDated), vDated, warehouseInFk, warehouseOutFk, agencyFk, CONCAT(account.userGetName(),' ', vEntryFk), TRUE, TRUE + + INSERT INTO vn.travel(shipped, landed, warehouseInFk, warehouseOutFk, agencyModeFk, ref, isDelivered, isReceived) + SELECT LEAST(shipped, vDated), vDated, warehouseInFk, warehouseOutFk, agencyModeFk, CONCAT(account.myUser_getName(),' ', vEntryFk), TRUE, TRUE FROM vn.travel WHERE id = vTravelFk; - + SELECT LAST_INSERT_ID() INTO vTravelFk; - - UPDATE vn.entry - SET travelFk = vTravelFk + + UPDATE vn.entry + SET travelFk = vTravelFk WHERE id = vEntryFk; - + END IF; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `entryPrepare__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `entryPrepare__`(IN `idE` BIGINT) -BEGIN - SELECT - b.quantity / b.packing AS Paquetes, - b.packing AS `Grouping`, - barcode, - 'ASEGURADO' AS asegurado, - ic.name, - ic.order, - s.name AS Consignatario, - e.supplierFk AS Id_Cliente, - e.isOrdered, - e.isConfirmed, - 10 AS Calidad, - LPAD(IFNULL(cpd.id, ip.code), - 5, - '0') AS path, - b.entryFk AS Id_Ticket, - t.landed AS Fecha, - b.itemFk, - b.quantity, - i.name AS Concepte, - i.size, - i.inkFk, - i.category, - o.code AS Origen, - 0 AS Bultos, - wIn.`name` AS Tipo, - 0 AS OK, - 0 AS Reservado, - i.stems, - b.id AS Id_Movimiento, - ip.code, - 'PEDIDO ASEGURADO' AS MSG, - 0 AS Seguro, - i.image, - pr.name AS producer - FROM vn.buy b - JOIN vn.entry e ON b.entryFk = e.id - JOIN vn.travel t ON t.id = e.travelFk - JOIN vn.warehouse wIn ON wIn.id = t.warehouseInFk - JOIN vn.warehouse wOut ON wOut.id = t.warehouseOutFk - JOIN vn.item i ON i.id = b.itemFk - JOIN vn.itemType it ON it.id =i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - JOIN vn.packaging pkg ON pkg.id = b.packageFk - LEFT JOIN vn.itemPlacement ip ON i.id = ip.itemFk AND ip.warehouseFk = wIn.id AND ip.warehouseFk = t.warehouseOutFk - LEFT JOIN (SELECT itemFk, code AS barcode FROM vn.itemBarcode GROUP BY itemFk) ib ON ib.itemFk = b.itemFk - LEFT JOIN vn.origin o ON o.id = i.originFk - LEFT JOIN vn.supplier s ON s.id = e.supplierFk - LEFT JOIN vn.producer pr on pr.id = i.producerFk - LEFT JOIN vn.coolerPathDetail cpd ON LEFT(ip.code, 3) = cpd.hallway - WHERE - NOT wIn.isFeedStock AND NOT e.isInventory AND NOT e.isRaid - AND e.id = 158772 - AND i.typeFk IS NOT NULL - AND ic.display IS NOT FALSE; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `entrySplit_move__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `entrySplit_move__`() -BEGIN - - /* CREATED PAK 08/09/2019 - * PENDING REVIEW - * - * - */ - - DROP TEMPORARY TABLE IF EXISTS itemList; - - CREATE TEMPORARY TABLE itemList - SELECT DISTINCT b.itemFk, es.delayedFk, es.receivedFk - FROM vn.buy b - JOIN vn.entrySplit es ON es.delayedFk = b.entryFk - JOIN vn.itemPlacement ip ON ip.itemFk = b.itemFk - WHERE ip.modificationDate > CURDATE(); - - INSERT INTO itemList - SELECT DISTINCT ish.itemFk, es.delayedFk, es.receivedFk - FROM vn.buy b - JOIN vn.entrySplit es ON es.delayedFk = b.entryFk - JOIN vn.itemShelving ish ON ish.itemFk = b.itemFk - WHERE ish.created > CURDATE(); - - - UPDATE vn.buy b - JOIN vn.itemList il ON il.delayedFk = b.entryFk AND b.itemFk = il.itemFk - SET b.entryFk = il.receivedFk; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -59192,13 +52132,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `entryToTicket`(vEntryFk INT, vTicketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `entryToTicket`(vEntryFk INT, vTicketFk INT) BEGIN INSERT INTO vn.sale(ticketFk, itemFk, concept, quantity) @@ -59208,40 +52148,7 @@ BEGIN WHERE b.entryFk = vEntryFk; CALL vn.ticket_recalcComponents(vTicketFk); - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `entryVolume__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `entryVolume__`(vEntryFk INT) -BEGIN - - SELECT ELT(it.temperature + 1,'Calientes','Frios','Secos') AS Temp, - CAST(ROUND(SUM(GREATEST(b.stickers ,b.quantity /b.packing ) * - vn.item_getVolume(b.itemFk ,b.packageFk)) / vc.carro / 1000000 ,1) AS DECIMAL(10,2)) AS carros , - CAST(ROUND(SUM(GREATEST(b.stickers ,b.quantity /b.packing ) * - vn.item_getVolume(b.itemFk ,b.packageFk)) / vc.espai / 1000000,1) AS DECIMAL(10,2)) AS espais - FROM vn.buy b - INNER JOIN vn.entry e ON e.id = b.entryFk - INNER JOIN vn.travel tr ON tr.id = e.travelFk - INNER JOIN vn.volumeConfig vc - INNER JOIN vn.item i ON i.id = b.itemFk - INNER JOIN vn.itemType it ON it.id = i.typeFk - WHERE e.id = vEntryFk - GROUP BY Temp; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -59252,42 +52159,42 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `entryWithItem`(vShipmentWarehouse INT, vLandingWarehouse INT,vSale INT, vVolume INT, netCost DECIMAL(10,2), vInOutDate DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `entryWithItem`(vShipmentWarehouse INT, vLandingWarehouse INT,vSale INT, vVolume INT, netCost DECIMAL(10,2), vInOutDate DATE) BEGIN DECLARE vTravel INT; DECLARE vEntry INT; DECLARE vBucket VARCHAR(10); DECLARE vSupplierFk INT; - + SET vSupplierFk = IF (vLandingWarehouse = 1, 850, 963); -- seleccionamos travel SELECT t.id, e.id INTO vTravel, vEntry FROM travel t LEFT JOIN entry e ON t.id = e.travelFk - WHERE t.landed = vInOutDate AND t.shipped = vInOutDate AND t.warehouseOutFk = vShipmentWarehouse - AND t.warehouseInFk = vLandingWarehouse AND t.agencyFk IS NULL AND e.supplierFk = vSupplierFk - LIMIT 1; - + WHERE t.landed = vInOutDate AND t.shipped = vInOutDate AND t.warehouseOutFk = vShipmentWarehouse + AND t.warehouseInFk = vLandingWarehouse AND t.agencyModeFk IS NULL AND e.supplierFk = vSupplierFk + LIMIT 1; + -- creamos el travel si es necesario IF IFNULL(vTravel, FALSE) = FALSE THEN INSERT INTO travel (shipped, landed, warehouseInFk, warehouseOutFk) VALUES (vInOutDate, vInOutDate, vLandingWarehouse, vShipmentWarehouse); SELECT LAST_INSERT_ID() INTO vTravel; END IF; - + -- creamos la Entrada si es necesario IF IFNULL(vEntry, FALSE) = FALSE THEN INSERT INTO entry (supplierFk, travelFk) VALUES (vSupplierFk, vTravel); -- proveedor 'CONFECCION ARTIFICIAL' SELECT LAST_INSERT_ID() INTO vEntry; END IF; - + -- creamos el cubo si es necesario SELECT id INTO vBucket FROM packaging WHERE volume = vVolume LIMIT 1; IF vBucket IS NULL THEN @@ -59297,7 +52204,7 @@ BEGIN SELECT id INTO vBucket FROM packaging WHERE volume = vVolume LIMIT 1; END IF; - INSERT INTO buy(itemFk,quantity, entryFk, packageFk, packing, stickers, buyingValue, price2, price3) + INSERT INTO buy(itemFk,quantity, entryFk, packageFk, packing, stickers, buyingValue, price2, price3) SELECT itemFk, quantity, vEntry, @@ -59315,111 +52222,134 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `entryWithItem__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `entryWithItem__`(IN `vShipmentWarehouse` INT, IN `vLandingWarehouse` INT, IN `vSale` INT, IN `vVolume` INT, IN netCost DECIMAL(10,2), IN `vInOutDate` DATE) -BEGIN - - DECLARE vTravel INT; - DECLARE vEntry INT; - DECLARE vBucket VARCHAR(10); - DECLARE vAgencyDirectFromProvider INT DEFAULT 15; - DECLARE vSupplierFk INT DEFAULT 963; - - - -- seleccionamos travel - SELECT t.id, e.id INTO vTravel, vEntry - FROM travel t LEFT JOIN entry e ON t.id = e.travelFk - WHERE t.landed = vInOutDate AND t.shipped = vInOutDate AND t.warehouseOutFk = vShipmentWarehouse - AND t.warehouseInFk = vLandingWarehouse AND t.agencyFk = vAgencyDirectFromProvider AND e.supplierFk = vSupplierFk - LIMIT 1; - - -- creamos el travel si es necesario - IF IFNULL(vTravel, FALSE) = FALSE THEN - INSERT INTO travel (shipped, landed, warehouseInFk, warehouseOutFk, agencyFk) - VALUES (vInOutDate, vInOutDate, vLandingWarehouse, vShipmentWarehouse, vAgencyDirectFromProvider); - SELECT LAST_INSERT_ID() INTO vTravel; - END IF; - - -- creamos la Entrada si es necesario - IF IFNULL(vEntry, FALSE) = FALSE THEN - INSERT INTO entry (supplierFk, travelFk) - VALUES (vSupplierFk, vTravel); -- proveedor 'CONFECCION ARTIFICIAL' - SELECT LAST_INSERT_ID() INTO vEntry; - END IF; - - -- creamos el cubo si es necesario - SELECT id INTO vBucket FROM packaging WHERE volume = vVolume LIMIT 1; - IF vBucket IS NULL THEN - INSERT INTO packaging (id, volume) - VALUES (CONCAT('dm',vVolume/1000), vVolume); - -- SELECT LAST_INSERT_ID() INTO vBucket; - SELECT id INTO vBucket FROM packaging WHERE volume = vVolume LIMIT 1; - END IF; - - INSERT INTO buy(itemFk,quantity, entryFk, packageFk, packing, `grouping`, stickers, buyingValue, price2, price3) - SELECT itemFk, - quantity, - vEntry, - vBucket, - 1 packing, - 1 `grouping`, - quantity, - netCost, - s.price, - s.price - FROM sale s - WHERE s.id = vSale; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `entry_clone` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `entry_clone`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `entry_clone`(vSelf INT) BEGIN - - /* Clona una entrada - * - * @param vSelf Identificador de vn.entry - */ - - DECLARE vEntryFk INT; - - INSERT INTO vn.entry(supplierFk, dated, isInventory, notes, isRaid, commission, travelFk, currencyFk, - companyFk, loadPriority ) - SELECT supplierFk, dated, isInventory, notes, isRaid, commission, travelFk, currencyFk, - companyFk, loadPriority - FROM vn.entry e - WHERE e.id = vSelf; - - SET vEntryFk = LAST_INSERT_ID(); - INSERT INTO vn.buy(entryFk, itemFk, quantity, buyingValue, freightValue, isIgnored, stickers, packing, `grouping`, groupingMode, containerFk, comissionValue, packageValue, packageFk, price1, price2, price3, minPrice, producer, workerFk, weight, itemOriginalFk ) - SELECT vEntryFk, itemFk, quantity, buyingValue, freightValue, isIgnored, stickers, packing, `grouping`, groupingMode, containerFk, comissionValue, packageValue, packageFk, price1, price2, price3, minPrice, producer, workerFk, weight, itemOriginalFk +/* + * Clona una entrada + * + * @param vSelf Identificador de vn.entry + */ + + DECLARE vNewEntryFk INT; + + CALL vn.entry_cloneWithoutBuy(vSelf, vNewEntryFk); + + INSERT INTO vn.buy( entryFk, + itemFk, + quantity, + buyingValue, + freightValue, + isIgnored, + stickers, + packing, + `grouping`, + groupingMode, + containerFk, + comissionValue, + packageValue, + packageFk, + price1, + price2, + price3, + minPrice, + producer, + workerFk, + weight, + itemOriginalFk) + SELECT vNewEntryFk, + itemFk, + quantity, + buyingValue, + freightValue, + isIgnored, + stickers, + packing, + `grouping`, + groupingMode, + containerFk, + comissionValue, + packageValue, + packageFk, + price1, + price2, + price3, + minPrice, + producer, + workerFk, + weight, + itemOriginalFk FROM vn.buy b WHERE b.entryFk = vSelf; - - SELECT vEntryFk; - + + SELECT vNewEntryFk; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `entry_cloneWithoutBuy` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `entry_cloneWithoutBuy`(vSelf INT, OUT vNewEntryFk INT) +BEGIN +/** + * Clona una entrada sin compras + * + * @param vSelf Identificador de vn.entry + * @param vNewEntryFk Identificador de la nueva entrada + */ + START TRANSACTION; + + INSERT INTO vn.entry( + supplierFk, + dated, + isExcludedFromAvailable, + notes, + isRaid, + commission, + travelFk, + currencyFk, + companyFk, + loadPriority, + `ref` + ) + SELECT supplierFk, + dated, + isExcludedFromAvailable, + notes, + isRaid, + commission, + travelFk, + currencyFk, + companyFk, + loadPriority, + `ref` + FROM vn.entry e + WHERE e.id = vSelf; + + SET vNewEntryFk = LAST_INSERT_ID(); + + COMMIT; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -59430,71 +52360,69 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `entry_fixMisfit`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `entry_fixMisfit`(vSelf INT) BEGIN - - /* Arregla el descuadre de una entrada, agregando registros en vn.buy para compensar la diferencia - * entre las etiquetas impresas y las etiquetas esperadas - * - */ - +/** + * Arregla el descuadre de una entrada, agregando registros en vn.buy + * para compensar la diferencia * entre las etiquetas impresas y las esperadas + * + * @param vSelf Identificador de la entrada + */ INSERT INTO vn.buy(entryFk, itemFk) - SELECT vSelf, i.id - FROM vn.item i + SELECT vSelf, i.id + FROM vn.item i WHERE i.description = 'MISFIT' LIMIT 1; - - INSERT INTO vn.buy(entryFk, - itemFk, - quantity, - buyingValue, - freightValue, - isIgnored, - stickers, - packing, - `grouping`, - groupingMode, - containerFk, - comissionValue, - packageValue, - location, - packageFk, - price1, - price2, - price3, - minPrice, + + INSERT INTO vn.buy(entryFk, + itemFk, + quantity, + buyingValue, + freightValue, + isIgnored, + stickers, + packing, + `grouping`, + groupingMode, + containerFk, + comissionValue, + packageValue, + location, + packageFk, + price1, + price2, + price3, + minPrice, producer) SELECT vSelf, - itemFk, - (printedStickers - stickers) * packing AS quantity, - buyingValue, - freightValue, - TRUE isIgnored, - printedStickers - stickers, - packing, - `grouping`, - groupingMode, - containerFk, - comissionValue, - packageValue, - location, - packageFk, - price1, - price2, - price3, - minPrice, + itemFk, + (printedStickers - stickers) * packing quantity, + buyingValue, + freightValue, + TRUE isIgnored, + printedStickers - stickers, + packing, + `grouping`, + groupingMode, + containerFk, + comissionValue, + packageValue, + location, + packageFk, + price1, + price2, + price3, + minPrice, producer FROM vn.buy b WHERE b.entryFk = vSelf AND b.printedStickers != b.stickers; - - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -59505,20 +52433,20 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `entry_getRate`(vEntry INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `entry_getRate`(vEntry INT) BEGIN DECLARE vLanded DATE; DECLARE vWarehouseFk INT; -- Obtiene fecha de llegada y almacén entrante - SELECT landed, warehouseInFk INTO vLanded, vWarehouseFk + SELECT landed, warehouseInFk INTO vLanded, vWarehouseFk FROM vn.travel t JOIN vn.entry e ON t.id = e.travelFk WHERE e.id = vEntry; @@ -59531,13 +52459,13 @@ BEGIN SELECT * FROM ( SELECT * FROM - ( + ( SELECT rate0, rate1, rate2, rate3 FROM vn.rate WHERE dated <= vLanded AND warehouseFk = vWarehouseFk ORDER BY dated DESC - + ) sub UNION ALL SELECT rate0, rate1, rate2, rate3 @@ -59551,17 +52479,251 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `entry_moveNotPrinted` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `entry_moveNotPrinted`(vSelf INT, vDays INT, vChangeEntry BOOL, OUT vNewEntryFk INT) +BEGIN +/** + * Crea una entrada a futuro y divide las lineas de vn.buy de la entrada original en función + * de las etiquetas impresas + * + * @param vSelf Identificador de vn.entry + * @param vDays Número de dias a futuro que se quiere la nueva entrada + * + * @return vNewEntryFk Identificador de la nueva entrada + */ + DECLARE vNewTravelFk INT; + DECLARE vTravelFk INT; + DECLARE vInvoiceAmountOldEntryFk DECIMAL(10,2); + DECLARE vInvoiceAmountNewEntry DECIMAL(10,2); + + SELECT travelFk INTO vTravelFk + FROM vn.entry + WHERE id = vSelf; + + CALL vn.travel_clone(vTravelFk, vDays, vNewTravelFk); + CALL vn.entry_cloneWithoutBuy(vSelf, vNewEntryFk); + + UPDATE vn.entry e + SET e.travelFk = vNewTravelFk, + e.evaNotes = CONCAT('No impresas de: ', vSelf, ' ', IFNULL(e.evaNotes,'')) + WHERE e.id = vNewEntryFk; + + IF vChangeEntry THEN + UPDATE vn.buy b + SET b.entryFk = vNewEntryFk + WHERE b.printedStickers = 0 + AND b.entryFk = vSelf; + END IF; + + INSERT INTO vn.buy( + entryFk, + itemFk, + quantity, + buyingValue, + freightValue, + isIgnored, + stickers, + packing, + `grouping`, + groupingMode, + containerFk, + comissionValue, + packageValue, + packageFk, + price1, + price2, + price3, + minPrice, + producer, + workerFk, + weight, + itemOriginalFk + ) + SELECT vNewEntryFk, + itemFk, + ((stickers - printedStickers) * packing) quantity, + buyingValue, + freightValue, + isIgnored, + (stickers - printedStickers) stickers, + packing, + `grouping`, + groupingMode, + containerFk, + comissionValue, + packageValue, + packageFk, + price1, + price2, + price3, + minPrice, + producer, + workerFk, + weight, + itemOriginalFk + FROM vn.buy b + WHERE b.entryFk = vSelf + AND b.printedStickers != b.stickers; + + IF vChangeEntry THEN + UPDATE vn.buy + SET stickers = printedStickers, + quantity = printedStickers * packing + WHERE entryFk = vSelf; + ELSE + INSERT INTO vn.buy(entryFk, itemFk) + SELECT vSelf, i.id + FROM vn.item i + WHERE i.description = 'MISFIT' + LIMIT 1; + + INSERT INTO vn.buy(entryFk, + itemFk, + quantity, + buyingValue, + freightValue, + isIgnored, + stickers, + packing, + `grouping`, + groupingMode, + containerFk, + comissionValue, + packageValue, + location, + packageFk, + price1, + price2, + price3, + minPrice, + producer) + SELECT vSelf, + itemFk, + (printedStickers - stickers) * packing quantity, + buyingValue, + freightValue, + TRUE isIgnored, + printedStickers - stickers, + packing, + `grouping`, + groupingMode, + containerFk, + comissionValue, + packageValue, + location, + packageFk, + price1, + price2, + price3, + minPrice, + producer + FROM vn.buy + WHERE entryFk = vSelf + AND printedStickers != stickers; + END IF; + + SELECT SUM(IFNULL(b.buyingValue * b.quantity, 0)) INTO vInvoiceAmountOldEntryFk + FROM vn.buy b + WHERE b.entryFk = vSelf; + + UPDATE vn.entry e + JOIN vn.buy b ON b.entryFk = e.id + SET e.ref = CONCAT(e.ref,'(1)'), + e.invoiceAmount = vInvoiceAmountOldEntryFk + WHERE e.id = vSelf; + + SELECT SUM(IFNULL(b.buyingValue * b.quantity, 0)) INTO vInvoiceAmountNewEntry + FROM vn.buy b + WHERE b.entryFk = vNewEntryFk; + + UPDATE vn.entry e + JOIN vn.buy b ON b.entryFk = e.id + SET e.ref = CONCAT(e.ref,'(2)'), + e.invoiceAmount = vInvoiceAmountNewEntry + WHERE e.id = vNewEntryFk; + + INSERT INTO entryLog + SET action = 'update', + description = CONCAT('Se ha creado la entrada ', vNewEntryFk,' transferida desde la ', vSelf), + userFk = account.myUser_getId(), + originFk = vSelf; + + INSERT INTO entryLog + SET action = 'update', + description = CONCAT('Se ha creado la entrada ', vNewEntryFk,' transferida desde la ', vSelf), + userFk = account.myUser_getId(), + originFk = vNewEntryFk; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `entry_notifyChanged` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `entry_notifyChanged`(vSelf INT, vBuyFk INT, vOldValues VARCHAR(512), vNewValues VARCHAR(512)) +BEGIN + DECLARE vEmail VARCHAR(255); + DECLARE vFields VARCHAR(100); + DECLARE vMessage TEXT; + + SELECT e.mailToNotify INTO vEmail + FROM entryConfig e + LIMIT 1; + + SET vFields = CONCAT_WS(',', + 'entryFk', + 'itemFk', + 'quantity', + 'price1', + 'price2', + 'price3' + ); + SET vMessage = util.formatTable(vFields, vOldValues, vNewValues); + + CALL mail_insert( + vEmail, + NULL, + CONCAT( + 'Se ha modificado una línea de la entrada ', vSelf + ,' siendo inventario o anterior al mismo' + ), + vMessage + ); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `entry_recalc` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `entry_recalc`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `entry_recalc`() BEGIN /** * Comprueba que las ventas creadas entre un rango de fechas tienen componentes @@ -59571,12 +52733,12 @@ BEGIN */ DECLARE v_done BOOL DEFAULT FALSE; DECLARE vEntryFk INTEGER; - + DECLARE vCur CURSOR FOR SELECT id FROM tmp.recalcEntryCommision; DECLARE CONTINUE HANDLER FOR NOT FOUND - SET v_done = TRUE; + SET v_done = TRUE; OPEN vCur; @@ -59587,7 +52749,7 @@ BEGIN IF v_done THEN LEAVE l; END IF; - + CALL vn2008.buy_tarifas_entry(vEntryFk); END LOOP; @@ -59598,28 +52760,175 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `entry_splitByShelving` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `entry_splitByShelving`(vShelvingFk VARCHAR(3), vFromEntryFk INT, vToEntryFk INT) +BEGIN +/** + * Divide las compras entre dos entradas de acuerdo con lo ubicado en una matr�cula + * + * @param vShelvingFk Identificador de vn.shelving + * @param vFromEntryFk Entrada origen + * @param vToEntryFk Entrada destino + */ + DECLARE vBuyFk INT; + DECLARE ishStickers INT; + DECLARE buyStickers INT; + DECLARE vDone BOOLEAN DEFAULT FALSE; + + DECLARE cur CURSOR FOR + SELECT bb.id buyFk, + FLOOR(ish.visible / ish.packing) AS ishStickers, + bb.stickers buyStickers + FROM vn.itemShelving ish + JOIN (SELECT b.id, b.itemFk, b.stickers + FROM vn.buy b + WHERE b.entryFk = vFromEntryFk + ORDER BY b.stickers DESC + LIMIT 10000000000000000000) bb ON bb.itemFk = ish.itemFk + AND bb.stickers >= FLOOR(ish.visible / ish.packing) + WHERE shelvingFk = vShelvingFk COLLATE utf8_general_ci + GROUP BY ish.id; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + -- Cantidades de la matrícula que exceden la de las entradas + SELECT ish.itemFk, + i.longName, + FLOOR(ish.visible / ish.packing) AS etiEnMatricula, + bb.stickers etiEnEntrada + FROM vn.itemShelving ish + JOIN vn.item i ON i.id = ish.itemFk + LEFT JOIN (SELECT b.id, b.itemFk, b.stickers + FROM vn.buy b + WHERE b.entryFk = vFromEntryFk + ORDER BY b.stickers DESC + LIMIT 10000000000000000000) bb ON bb.itemFk = ish.itemFk + WHERE shelvingFk = vShelvingFk COLLATE utf8_general_ci + AND IFNULL(bb.stickers,0) < FLOOR(ish.visible / ish.packing) + GROUP BY ish.id; + + OPEN cur; + + read_loop: LOOP + SET vDone = FALSE; + + FETCH cur INTO vBuyFk, ishStickers, buyStickers; + + IF vDone THEN + LEAVE read_loop; + END IF; + + IF ishStickers = buyStickers THEN + UPDATE vn.buy + SET entryFk = vToEntryFk + WHERE id = vBuyFk; + ELSE + UPDATE vn.buy + SET stickers = stickers - ishStickers, + quantity = stickers * packing + WHERE id = vBuyFk; + + INSERT INTO vn.buy(entryFk, + itemFk, + quantity, + buyingValue, + freightValue, + isIgnored, + stickers, + packing, + `grouping`, + groupingMode, + containerFk, + comissionValue, + packageValue, + location, + packageFk, + price1, + price2, + price3, + minPrice, + producer, + printedStickers, + workerFk, + isChecked, + isPickedOff, + ektFk, + weight, + deliveryFk, + itemOriginalFk) + SELECT + vToEntryFk, + itemFk, + ishStickers * packing, + buyingValue, + freightValue, + isIgnored, + ishStickers, + packing, + `grouping`, + groupingMode, + containerFk, + comissionValue, + packageValue, + location, + packageFk, + price1, + price2, + price3, + minPrice, + producer, + ishStickers, + workerFk, + isChecked, + isPickedOff, + ektFk, + weight, + deliveryFk, + itemOriginalFk + FROM vn.buy + WHERE id = vBuyFk; + + END IF; + END LOOP; + + CLOSE cur; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `entry_splitMisfit` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `entry_splitMisfit`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `entry_splitMisfit`(vSelf INT) BEGIN - + /* Divide una entrada, pasando los registros que ha insertado vn.entry_fixMisfit de la entrada original * a la nueva */ - + DECLARE vNewEntryFk INT; DECLARE vBuyFk INT; SELECT MAX(b.id) INTO vBuyFk - FROM vn.buy b + FROM vn.buy b JOIN vn.item i ON i.id = b.itemFk WHERE b.entryFk = vSelf AND i.description = 'MISFIT'; @@ -59628,17 +52937,17 @@ BEGIN SELECT supplierFk, dated, CONCAT('E:',vSelf), travelFk, currencyFk, companyFk FROM vn.entry e WHERE e.id = vSelf; - - SET vNewEntryFk = LAST_INSERT_ID(); - UPDATE vn.buy b + SET vNewEntryFk = LAST_INSERT_ID(); + + UPDATE vn.buy b SET b.entryFk = vNewEntryFk WHERE b.entryFk = vSelf AND b.id > vBuyFk; - + SELECT vNewEntryFk; - - + + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -59651,93 +52960,205 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `errorProduction_add`(vAction VARCHAR(25), vDepartment VARCHAR(25), vStateCode VARCHAR(25) CHARSET utf8, vDatedFrom DATETIME, vDatedTo DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `errorProduction_add`( + vAction VARCHAR(25), + vDatedFrom DATETIME, + vDatedTo DATETIME) BEGIN - /** - * Fill in the errorProduction table. - */ - DROP TEMPORARY TABLE IF EXISTS tmp.total; - - IF (vDepartment = 'Encajadores') - THEN - CREATE TEMPORARY TABLE tmp.total - ENGINE = MEMORY - SELECT e.workerFk, Count(DISTINCT t.id) AS ticketCount - FROM expedition e - JOIN ticket t ON e.ticketFk = t.id - WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo - GROUP BY e.workerFk; - ELSE - CREATE TEMPORARY TABLE tmp.total - ENGINE = MEMORY - SELECT st.workerFk, Count(DISTINCT t.id) AS ticketCount - FROM state ss - JOIN vn.saleTracking st ON st.stateFk = ss.id - JOIN vn.sale s ON s.id = st.saleFk - JOIN ticket t ON s.ticketFk = t.id - WHERE (t.shipped BETWEEN vDatedFrom AND vDatedTo) AND ss.code = vStateCode - GROUP BY st.workerFk; - END IF; - - CALL timeControl_calculateAll(vDatedFrom, vDatedTo); - - INSERT INTO errorProduction(userFk, firstname, lastname, rol, ticketNumber, error, ratio, volume, hourStart, hourEnd, hourWorked, dated) - SELECT sub1.id, sub1.firstName, sub1.lastName, - CASE - WHEN vDepartment = 'Encajadores' THEN 'Encajador' - WHEN vDepartment = 'Sacadores' THEN 'Sacador' - ELSE 'Revisador' - END AS rol, - CAST(sub1.totalTickets AS DECIMAL(10,0)) AS totalTickets, - CAST(IFNULL(sub1.errors,0) + IFNULL(sub2.errors,0) AS DECIMAL(10,0)) AS errors, - ((IFNULL(sub1.errors,0) + IFNULL(sub2.errors,0))/sub1.totalTickets)*100 AS ratio, - IF(vDepartment = 'Revisadores', NULL, volume) AS volume, - sub1.hourStart AS hourStart, - sub1.hourEnd AS hourEnd, - sub1.hourWorked AS hourWorked, - vDatedFrom AS date - FROM( - SELECT w.id, w.code, w.firstName, w.lastName, t.ticketCount AS totalTickets, sub.errors, sub2.volume, SUBSTRING(tc.timed, 1, 5) AS hourStart, SUBSTRING(tc.timed, LENGTH(tc.timed)-4, 5) AS hourEnd, IFNULL(CAST(tc.timeWorkDecimal AS DECIMAL (10,2)) , 0) AS hourWorked - FROM tmp.total AS t - JOIN worker w ON w.id = t.workerFk - JOIN tmp.timeControlCalculate tc ON tc.userFk = t.workerFk - LEFT JOIN ( - SELECT COUNT(c.ticketFk) AS errors, cd.workerFk - FROM claimDevelopment cd - JOIN claim c ON cd.claimFk = c.id - JOIN ticket t ON c.ticketFk = t.id - JOIN claimResponsible cr ON cd.claimResponsibleFk = cr.id - WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo AND cr.description = vDepartment - GROUP BY cd.workerFk - )sub ON t.workerFk = sub.workerFk - LEFT JOIN ( -- Añadir volume - SELECT SUM(w.volume) AS volume, w.workerFk - FROM bs.workerProductivity w - INNER JOIN vn.`role` r ON r.id=w.roleFk - WHERE IF(vDepartment = 'Encajadores', r.name='packager', r.name='itemPicker') AND w.dated BETWEEN vDatedFrom AND vDatedTo - GROUP BY w.workerFk) sub2 ON w.id = sub2.workerFk - GROUP BY w.code) sub1 - LEFT JOIN( - SELECT sub1.workerFk, COUNT(id) AS errors - FROM ( - SELECT st.workerFk, t.id - FROM vn.saleMistake sm - JOIN vn.saleTracking st ON sm.saleFk = st.saleFk - JOIN state ss ON ss.id = st.stateFk - JOIN vncontrol.accion a ON a.accion_id = st.actionFk - JOIN vn.sale s ON s.id = sm.saleFk - JOIN vn.ticket t on t.id = s.ticketFk - WHERE (t.shipped BETWEEN vDatedFrom AND vDatedTo) AND a.accion = vAction AND ss.code = vStateCode - GROUP BY s.ticketFk - ) sub1 - GROUP BY sub1.workerFk) sub2 ON sub2.workerFk = sub1.id; - - DROP TEMPORARY TABLE tmp.timeControlCalculate; - DROP TEMPORARY TABLE tmp.total; +/** + * Rellena la tabla vn.errorProduction + * + * @param vAction Accion que se quiere añadir + * @param vDatedFrom Fecha desde + * @param vDatedTo Fecha hasta + */ + DECLARE vDepartment VARCHAR(255); + + DROP TEMPORARY TABLE IF EXISTS tmp.timeControlCalculate; + DROP TEMPORARY TABLE IF EXISTS tmp.total; + DROP TEMPORARY TABLE IF EXISTS tmp.itemPickerErrors; + DROP TEMPORARY TABLE IF EXISTS tmp.errorsByClaim; + DROP TEMPORARY TABLE IF EXISTS tmp.volume; + DROP TEMPORARY TABLE IF EXISTS tmp.errorsByChecker; + + CASE + WHEN vAction = 'SACAR' THEN + SET vDepartment = 'Sacadores'; + WHEN vAction = 'ENCAJAR' THEN + SET vDepartment = 'Encajadores'; + WHEN vAction = 'CONTROLAR' THEN + SET vDepartment = 'Revisadores'; + END CASE; + + IF (vDepartment = 'Encajadores') THEN + CREATE TEMPORARY TABLE tmp.total + ENGINE = MEMORY + SELECT e.workerFk, + COUNT(DISTINCT t.id) ticketCount, + COUNT(s.id) lineCount + FROM expedition e + JOIN ticket t ON e.ticketFk = t.id + JOIN sale s ON s.ticketFk = t.id + WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo + GROUP BY e.workerFk; + ELSE + CREATE TEMPORARY TABLE tmp.total + ENGINE = MEMORY + SELECT st.workerFk, + COUNT(DISTINCT t.id) ticketCount, + COUNT(s.id) lineCount + FROM saleTracking st + JOIN vncontrol.accion a ON a.accion_id = st.actionFk + JOIN sale s ON s.id = st.saleFk + JOIN ticket t ON s.ticketFk = t.id + WHERE (t.shipped BETWEEN vDatedFrom AND vDatedTo) + AND a.accion = vAction + GROUP BY st.workerFk; + END IF; + + CALL timeControl_calculateAll(vDatedFrom, vDatedTo); + + + CREATE TEMPORARY TABLE tmp.errorsByClaim + ENGINE = MEMORY + SELECT COUNT(c.ticketFk) errors, + cd.workerFk + FROM claimDevelopment cd + JOIN claim c ON cd.claimFk = c.id + JOIN ticket t ON c.ticketFk = t.id + JOIN claimResponsible cr ON cd.claimResponsibleFk = cr.id + WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo + AND cr.description = vDepartment + GROUP BY cd.workerFk; + + CREATE TEMPORARY TABLE tmp.volume + ENGINE = MEMORY + SELECT SUM(w.volume) volume, + w.workerFk + FROM bs.workerProductivity w + WHERE w.dated BETWEEN vDatedFrom AND vDatedTo + GROUP BY w.workerFk; + + CREATE TEMPORARY TABLE tmp.errorsByChecker + ENGINE = MEMORY + SELECT sub1.workerFk, COUNT(id) errors + FROM ( + SELECT st.workerFk, + t.id + FROM saleMistake sm + JOIN saleTracking st ON sm.saleFk = st.saleFk + JOIN vncontrol.accion a ON a.accion_id = st.actionFk + JOIN sale s ON s.id = sm.saleFk + JOIN ticket t on t.id = s.ticketFk + WHERE (t.shipped BETWEEN vDatedFrom AND vDatedTo) + AND a.accion = vAction + GROUP BY s.ticketFk + ) sub1 + GROUP BY sub1.workerFk; + + IF (vDepartment = 'Sacadores') THEN + + INSERT INTO errorProduction(userFk, + firstname, + lastname, + rol, + ticketNumber, + lineNumber, + error, + volume, + hourStart, + hourEnd, + hourWorked, + dated) + SELECT w.id, + w.firstName, + w.lastName, + vDepartment, + t.ticketCount totalTickets, + t.lineCount, + IFNULL(ec.errors,0) + IFNULL(ec2.errors,0) errors, + IF(vDepartment = 'Revisadores', NULL, v.volume) volume, + SUBSTRING(tc.timed, 1, 5) hourStart, + SUBSTRING(tc.timed, LENGTH(tc.timed)-4, 5) hourEnd, + IFNULL(CAST(tc.timeWorkDecimal AS DECIMAL (10,2)) , 0) hourWorked, + vDatedFrom dated + FROM tmp.total t + LEFT JOIN worker w ON w.id = t.workerFk + LEFT JOIN tmp.timeControlCalculate tc ON tc.userFk = t.workerFk + LEFT JOIN tmp.errorsByClaim ec ON ec.workerFk = t.workerFk + LEFT JOIN tmp.volume v ON v.workerFk = t.workerFk + LEFT JOIN tmp.errorsByChecker ec2 ON ec2.workerFk = t.workerFk + JOIN (SELECT DISTINCT w.id -- Verificamos que son sacadores + FROM vn.collection c + JOIN vn.state s ON s.id = c.stateFk + JOIN vn.train tn ON tn.id = c.trainFk + JOIN vn.worker w ON w.id = c.workerFk + WHERE c.created BETWEEN vDatedFrom AND vDatedTo) sub ON sub.id = w.id + GROUP BY w.id; + + CREATE TEMPORARY TABLE tmp.itemPickerErrors -- Errores de los sacadores, derivadores de los revisadores + ENGINE = MEMORY + SELECT COUNT(c.ticketFk) errors, + tt.workerFk + FROM claimDevelopment cd + JOIN claim c ON cd.claimFk = c.id + JOIN ticket t ON c.ticketFk = t.id + JOIN claimResponsible cr ON cd.claimResponsibleFk = cr.id + JOIN ticketTracking tt ON tt.ticketFk = t.id + JOIN state s ON s.id = tt.stateFk + WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo + AND cr.description = 'Revisadores' + AND s.code = 'ON_PREPARATION' + GROUP BY workerFk; + + UPDATE errorProduction ep + JOIN tmp.itemPickerErrors ipe ON ipe.workerFk = ep.userFk + SET ep.error = ep.error + ipe.errors + WHERE vDatedFrom = ep.dated AND ep.rol = 'Sacadores'; + ELSE + INSERT INTO errorProduction(userFk, + firstname, + lastname, + rol, + ticketNumber, + lineNumber, + error, + volume, + hourStart, + hourEnd, + hourWorked, + dated) + SELECT w.id, + w.firstName, + w.lastName, + vDepartment, + t.ticketCount totalTickets, + t.lineCount, + IFNULL(ec.errors,0) + IFNULL(ec2.errors,0) errors, + IF(vDepartment = 'Revisadores', NULL, v.volume) volume, + SUBSTRING(tc.timed, 1, 5) hourStart, + SUBSTRING(tc.timed, LENGTH(tc.timed)-4, 5) hourEnd, + IFNULL(CAST(tc.timeWorkDecimal AS DECIMAL (10,2)) , 0) hourWorked, + vDatedFrom dated + FROM tmp.total t + LEFT JOIN worker w ON w.id = t.workerFk + LEFT JOIN tmp.timeControlCalculate tc ON tc.userFk = t.workerFk + LEFT JOIN tmp.errorsByClaim ec ON ec.workerFk = t.workerFk + LEFT JOIN tmp.volume v ON v.workerFk = t.workerFk + LEFT JOIN tmp.errorsByChecker ec2 ON ec2.workerFk = t.workerFk + GROUP BY w.id; + END IF; + + DROP TEMPORARY TABLE tmp.timeControlCalculate; + DROP TEMPORARY TABLE tmp.total; + DROP TEMPORARY TABLE IF EXISTS tmp.itemPickerErrors; + DROP TEMPORARY TABLE tmp.errorsByClaim; + DROP TEMPORARY TABLE tmp.volume; + DROP TEMPORARY TABLE tmp.errorsByChecker; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -59750,142 +53171,20 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `errorProduction_addLauncher`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `errorProduction_addLauncher`() BEGIN DECLARE vDatedFrom DATETIME; DECLARE vDatedTo DATETIME; - - SELECT DATE_SUB(CURDATE(),INTERVAL 1 DAY), CONCAT(DATE_SUB(CURDATE(),INTERVAL 1 DAY),' 23:59:59') INTO vDatedFrom, vDatedTo; - CALL vn.errorProduction_add('SACAR' ,'Sacadores','PREPARED', vDatedFrom, vDatedTo); - CALL vn.errorProduction_add('ENCAJAR' ,'Encajadores','PACKED', vDatedFrom, vDatedTo); - CALL vn.errorProduction_add('CONTROLAR' ,'Revisadores','CHECKED', vDatedFrom, vDatedTo); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `errorProduction_addLauncher__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `errorProduction_addLauncher__`() -BEGIN - DECLARE vDatedFrom DATETIME; - DECLARE vDatedTo DATETIME; - - IF (DAY(CURDATE()) = 5) THEN - SELECT util.firstDayOfMonth(DATE_SUB(CURDATE(),INTERVAL 1 MONTH)), CONCAT(LAST_DAY(DATE_SUB(CURDATE(),INTERVAL 1 MONTH)),' 23:59:59') INTO vDatedFrom, vDatedTo; - - CALL vn.errorProduction_add('SACAR' ,'Sacadores','PREPARED', vDatedFrom, vDatedTo); - CALL vn.errorProduction_add('ENCAJAR' ,'Encajadores','PACKED', vDatedFrom, vDatedTo); - CALL vn.errorProduction_add('CONTROLAR' ,'Revisadores','CHECKED', vDatedFrom, vDatedTo); - END IF; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `errorProduction_add__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `errorProduction_add__`(vAction VARCHAR(25), vDepartment VARCHAR(25), vStateCode VARCHAR(25) CHARSET utf8, vDatedFrom DATETIME, vDatedTo DATETIME) -BEGIN - /** - * Fill in the errorProduction table. - */ - DROP TEMPORARY TABLE IF EXISTS tmp.total; - - IF (vDepartment = 'Encajadores') - THEN - CREATE TEMPORARY TABLE tmp.total - ENGINE = MEMORY - SELECT e.workerFk, Count(DISTINCT t.id) AS ticketCount - FROM expedition e - JOIN ticket t ON e.ticketFk = t.id - WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo - GROUP BY e.workerFk; - ELSE - CREATE TEMPORARY TABLE tmp.total - ENGINE = MEMORY - SELECT st.workerFk, Count(DISTINCT t.id) AS ticketCount - FROM state ss - JOIN vn.saleTracking st ON st.stateFk = ss.id - JOIN vn.sale s ON s.id = st.saleFk - JOIN ticket t ON s.ticketFk = t.id - WHERE (t.shipped BETWEEN vDatedFrom AND vDatedTo) AND ss.code = vStateCode - GROUP BY st.workerFk; - END IF; - - - INSERT INTO errorProduction(userFk, firstname, lastname, rol, ticketNumber, error, ratio, volume, month, year) - SELECT sub1.id, sub1.firstName, sub1.lastName, - CASE - WHEN vDepartment = 'Encajadores' THEN 'Encajador' - WHEN vDepartment = 'Sacadores' THEN 'Sacador' - ELSE 'Revisador' - END AS rol, - CAST(sub1.totalTickets AS DECIMAL(10,0)) AS totalTickets, - CAST(IFNULL(sub1.errors,0) + IFNULL(sub2.errors,0) AS DECIMAL(10,0)) AS errors, - ((IFNULL(sub1.errors,0) + IFNULL(sub2.errors,0))/sub1.totalTickets)*100 AS ratio, - IF(vDepartment = 'Revisadores', NULL, volume) AS volume, - MONTH(vDatedFrom) AS month, - YEAR(vDatedFrom) AS year - FROM( - SELECT w.id, w.code, w.firstName, w.lastName, t.ticketCount AS totalTickets, sub.errors, sub2.volume - FROM tmp.total AS t - JOIN worker w ON w.id = t.workerFk - LEFT JOIN ( - SELECT COUNT(c.ticketFk) AS errors, cd.workerFk - FROM claimDevelopment cd - JOIN claim c ON cd.claimFk = c.id - JOIN ticket t ON c.ticketFk = t.id - JOIN claimResponsible cr ON cd.claimResponsibleFk = cr.id - WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo AND cr.description = vDepartment - GROUP BY cd.workerFk - )sub ON t.workerFk = sub.workerFk - LEFT JOIN ( -- Añadir volume - SELECT SUM(w.volume) AS volume, w.workerFk - FROM bs.workerProductivity w - INNER JOIN vn.`role` r ON r.id=w.roleFk - WHERE IF(vDepartment = 'Encajadores', r.name='packager', r.name='itemPicker') AND w.dated BETWEEN vDatedFrom AND vDatedTo - GROUP BY w.workerFk) sub2 ON w.id = sub2.workerFk - GROUP BY w.code) sub1 - LEFT JOIN( - SELECT sub1.workerFk, COUNT(id) AS errors - FROM ( - SELECT st.workerFk, t.id - FROM vn.saleMistake sm - JOIN vn.saleTracking st ON sm.saleFk = st.saleFk - JOIN state ss ON ss.id = st.stateFk - JOIN vncontrol.accion a ON a.accion_id = st.actionFk - JOIN vn.sale s ON s.id = sm.saleFk - JOIN vn.ticket t on t.id = s.ticketFk - WHERE (t.shipped BETWEEN vDatedFrom AND vDatedTo) AND a.accion = vAction AND ss.code = vStateCode - GROUP BY s.ticketFk - ) sub1 - GROUP BY sub1.workerFk) sub2 ON sub2.workerFk = sub1.id; - - DROP TEMPORARY TABLE tmp.total; + SELECT DATE_SUB(util.VN_CURDATE(),INTERVAL 1 DAY), CONCAT(DATE_SUB(util.VN_CURDATE(),INTERVAL 1 DAY),' 23:59:59') INTO vDatedFrom, vDatedTo; + + CALL vn.errorProduction_add('SACAR', vDatedFrom, vDatedTo); + CALL vn.errorProduction_add('ENCAJAR', vDatedFrom, vDatedTo); + CALL vn.errorProduction_add('CONTROLAR', vDatedFrom, vDatedTo); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -59896,33 +53195,41 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `expeditionGetFromRoute`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionGetFromRoute`( vExpeditionFk INT) BEGIN /** * Get all expeditions from route */ - DECLARE vRouteFk INT DEFAULT 0; - - SELECT t.routeFk INTO vRouteFk - FROM vn.expedition exp - INNER JOIN ticket t on t.id = exp.ticketFk - WHERE exp.id = vExpeditionFk; - -SELECT exp.id, exp.ticketFk, exp.checked, t.routeFk,t.packages AS bultos , ts.alertLevel, a.street, a.city,a.postalCode,a.id AS addressFk,w.name AS warehouse - FROM vn.expedition exp - INNER JOIN ticket t ON t.id = exp.ticketFk - INNER JOIN vn.ticketState ts ON ts.ticketFk = exp.ticketFk - LEFT JOIN vn.address a ON t.addressFk = a.id - LEFT JOIN vn.warehouse w ON t.warehouseFk = w.id - WHERE t.routeFk = vRouteFk AND exp.isBox > 0; - + DECLARE vRouteFk INT DEFAULT 0; + + SELECT t.routeFk INTO vRouteFk + FROM vn.expedition exp + INNER JOIN ticket t on t.id = exp.ticketFk + WHERE exp.id = vExpeditionFk; + + SELECT exp.id, + exp.ticketFk, + t.routeFk, + t.packages bultos, + ts.alertLevel, + a.street, + a.city, + a.postalCode, + a.id addressFk, + w.name warehouse + FROM vn.expedition exp + INNER JOIN ticket t ON t.id = exp.ticketFk + INNER JOIN vn.ticketState ts ON ts.ticketFk = exp.ticketFk + LEFT JOIN vn.address a ON t.addressFk = a.id + LEFT JOIN vn.warehouse w ON t.warehouseFk = w.id + WHERE t.routeFk = vRouteFk AND exp.freightItemFk > 0; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -59933,13 +53240,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `expeditionPallet_Del`(vPalletFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionPallet_Del`(vPalletFk INT) BEGIN DELETE FROM vn.expeditionPallet @@ -59955,13 +53262,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `expeditionPallet_List`(vTruckFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionPallet_List`(vTruckFk INT) BEGIN SELECT ep.id Pallet, @@ -59980,42 +53287,51 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `expeditionPallet_PrintSet` */; +/*!50003 DROP PROCEDURE IF EXISTS `expeditionPallet_printLabel` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `expeditionPallet_PrintSet`(vPalletFk INT,vSectorFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionPallet_printLabel`(vSelf INT) BEGIN +/** + * Inserta en la cola de impresión teniendo en cuenta el sector de trabajador + * la expedición que se pasa como variable al procedimiento vSelf. + * + * @param vSelf identificador de expedition pallet + */ + DECLARE vReport INT; + DECLARE vPrinterFk INT; + + SET vReport = NULL; + + SELECT s.reportFk, w.labelerFk INTO vReport, vPrinterFk + FROM worker w + JOIN sector s ON s.id = w.sectorFk + JOIN report r ON r.id = s.reportFk + WHERE w.id = account.myUser_getId() + AND r.name = 'LabelPalletExpedition'; + + IF vReport IS NULL THEN + CALL util.throw('Sector incorrecto'); + END IF; - DECLARE vLabel INT; - DECLARE vPrinterFk INT; - UPDATE vn.expeditionPallet - SET isPrint = FALSE - WHERE id = vPalletFk; - - SELECT labelReportFk - INTO vLabel - FROM sector - WHERE id=vSectorFk; - - SELECT printerFk - INTO vPrinterFk - FROM sector - WHERE id=vSectorFk; - - - INSERT INTO vn2008.Colas -(Id_Cola, Id_Impresora, Id_Prioridad, Id_Informe, Id_Estado, Hora_Inicio, Hora_Fin, Cola, Id_Trabajador, Cola2, Cola3, error) -VALUES(NULL, vPrinterFK, NULL, vLabel, 1, NULL, NULL, vPalletFk, NULL, vSectorFk, NULL, NULL); - + SET isPrint = FALSE + WHERE id = vSelf; + INSERT INTO printQueue (printerFk, priorityFk, reportFk, workerFk) + SELECT vPrinterFk, qp.id, vReport, account.myUser_getId() + FROM queuePriority qp + WHERE qp.`code`= 'high'; + + INSERT INTO printQueueArgs (printQueueFk, `name`, `value` ) + SELECT LAST_INSERT_ID(), 'palletFk', vSelf; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -60026,29 +53342,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `expeditionPallet_View`(vPalletFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionPallet_View`(vPalletFk INT) BEGIN - /* - DECLARE vIsPrint TINYINT; - SELECT isPrint INTO vIsPrint - FROM vn.expeditionPallet - WHERE id = vPalletFk; - - -- IF vIsPrint = 2 THEN -- Valor por defecto cuando se crea un pallet. Tras imprimir, pasa a estado 1 - - UPDATE vn.expeditionPallet - SET isPrint = FALSE - WHERE id = vPalletFk; - - -- END IF; - */ SELECT ep.id Pallet, t.routeFk Rutas, count(*) Cajas @@ -60071,32 +53373,32 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `expeditionScan_Add`(vPalletFk INT, vTruckFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionScan_Add`(vPalletFk INT, vTruckFk INT) BEGIN DECLARE vTotal INT DEFAULT 0; IF vPalletFk = 0 THEN -- Nuevo pallet - - INSERT INTO vn.expeditionPallet(truckFk) + + INSERT INTO vn.expeditionPallet(truckFk) VALUES(vTruckFk); - + SELECT LAST_INSERT_ID() INTO vPalletFk; - + END IF; - + SELECT COUNT(expeditionFk) INTO vTotal FROM vn.expeditionScan WHERE palletFk = vPalletFk; - + IF vTotal <> 0 THEN - SELECT expeditionFk, + SELECT expeditionFk, palletFk - FROM vn.expeditionScan + FROM vn.expeditionScan WHERE palletFk = vPalletFk; - ELSE + ELSE SELECT 0 expeditionFk,vPalletFk palletFk; END IF; END ;; @@ -60109,13 +53411,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `expeditionScan_Del`(vScanFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionScan_Del`(vScanFk INT) BEGIN DELETE FROM vn.expeditionScan @@ -60133,11 +53435,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `expeditionScan_List`(vPalletFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionScan_List`(vPalletFk INT) BEGIN SELECT es.id, @@ -60161,20 +53463,206 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionScan_Put`(vPalletFk INT, vExpeditionFk INT) +BEGIN + + REPLACE vn.expeditionScan(expeditionFk, palletFk) + VALUES(vExpeditionFk, vPalletFk); + + SELECT LAST_INSERT_ID() INTO vPalletFk; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `expeditionState_add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `expeditionScan_Put`(vPalletFk INT, vExpeditionFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionState_add`(vParam INT, vStateCode VARCHAR(100)) BEGIN - - REPLACE vn.expeditionScan(expeditionFk, palletFk) - VALUES(vExpeditionFk, vPalletFk); - - SELECT LAST_INSERT_ID() INTO vPalletFk; - + + /** + * Inserta nuevos registros en la tabla vn.expeditionState, segun el parámetro + * + * @param vParam Identificador de vn.expedition o de vn.route + * @param vStateCode Corresponde a vn.expeditionStateType.code + */ + + IF (SELECT COUNT(*) FROM vn.route r WHERE r.id = vParam) THEN + + INSERT INTO vn.expeditionState(expeditionFk, typeFk) + SELECT e.id, est.id + FROM vn.expedition e + JOIN vn.ticket t ON t.id = e.ticketFk + JOIN vn.expeditionStateType est ON est.code = vStateCode + WHERE t.routeFk = vParam; + + ELSE + + INSERT INTO vn.expeditionState(expeditionFk, typeFk) + SELECT vParam, est.id + FROM vn.expeditionStateType est + WHERE est.code = vStateCode; + + END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `expeditionState_addByAdress` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionState_addByAdress`(vAdressFk INT, vRouteFk INT, vStateCode VARCHAR(100)) +BEGIN + + /** + * Inserta nuevos registros en la tabla vn.expeditionState + * + * @param vAdressFk Identificador de vn.ticket + * @param vRouteFk Identificador de vn.route + * @param vStateCode Corresponde a vn.expeditionStateType.code + */ + + INSERT INTO vn.expeditionState(expeditionFk, typeFk) + SELECT e.id, est.id + FROM vn.expedition e + JOIN vn.expeditionStateType est ON est.code = vStateCode + JOIN vn.ticket t ON t.id = e.ticketFk + WHERE t.addressFk = vAdressFk AND t.routeFk = vRouteFk; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `expeditionState_addByExpedition` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionState_addByExpedition`(vExpeditionFk INT, vStateCode VARCHAR(100)) +BEGIN + + /** + * Inserta nuevos registros en la tabla vn.expeditionState + * + * @param vExpeditionFk Identificador de vn.expedition + * @param vStateCode Corresponde a vn.expeditionStateType.code + */ + + INSERT INTO vn.expeditionState(expeditionFk, typeFk) + SELECT vExpeditionFk, est.id + FROM vn.expeditionStateType est + WHERE est.code = vStateCode; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `expeditionState_addByPallet` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionState_addByPallet`(vPalletFk INT, vStateCode VARCHAR(100)) +BEGIN +/** + * Inserta nuevos registros en la tabla vn.expeditionState + * + * @param vPalletFk Identificador de vn.expedition + * @param vStateCode Corresponde a vn.expeditionStateType.code + */ + DECLARE hasExpeditions BOOL; + + DROP TEMPORARY TABLE IF EXISTS tExpeditionScan; + CREATE TEMPORARY TABLE tExpeditionScan + SELECT expeditionFk, est.id typeFk + FROM vn.expeditionScan e + JOIN vn.expeditionStateType est ON est.code = vStateCode + WHERE e.palletFk = vPalletFk; + + SELECT COUNT(*) INTO hasExpeditions FROM tExpeditionScan; + + IF NOT hasExpeditions THEN + DROP TEMPORARY TABLE tExpeditionScan; + CALL util.throw('palletDoesNotExist'); + END IF; + + INSERT INTO vn.expeditionState(expeditionFk, typeFk) + SELECT expeditionFk, typeFk + FROM tExpeditionScan; + DROP TEMPORARY TABLE tExpeditionScan; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `expeditionState_addByRoute` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionState_addByRoute`(vRouteFk INT, vStateCode VARCHAR(100)) +BEGIN + + /** + * Inserta nuevos registros en la tabla vn.expeditionState, por rutas + * + * @param vRouteFk Identificador de vn.route + * @param vStateCode Corresponde a vn.expeditionStateType.code + */ + + INSERT INTO vn.expeditionState(expeditionFk, typeFk) + SELECT e.id, est.id + FROM vn.expedition e + JOIN vn.ticket t ON t.id = e.ticketFk + JOIN vn.expeditionStateType est ON est.code = vStateCode + WHERE t.routeFk = vRouteFk; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -60187,15 +53675,15 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `expeditionTruck_Add`(vHour VARCHAR(5), vDescription VARCHAR(45)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionTruck_Add`(vHour VARCHAR(5), vDescription VARCHAR(45)) BEGIN INSERT INTO vn.expeditionTruck(ETD,description) - VALUES(CONCAT(CURDATE(), ' ', vHour), vDescription); + VALUES(CONCAT(util.VN_CURDATE(), ' ', vHour), vDescription); END ;; DELIMITER ; @@ -60207,20 +53695,20 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `expeditionTruck_List`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionTruck_List`() BEGIN - SELECT id truckFk, - ETD, + SELECT id truckFk, + ETD, description Destino FROM vn.expeditionTruck - WHERE ETD BETWEEN CURDATE() AND util.dayend(CURDATE()) + WHERE ETD BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE()) ORDER BY ETD; END ;; DELIMITER ; @@ -60228,27 +53716,52 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `expeditionUpdateChecked` */; +/*!50003 DROP PROCEDURE IF EXISTS `expedition_getFromRoute` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `expeditionUpdateChecked`( - vExpeditionFk INT, vChecked INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `expedition_getFromRoute`(vRouteFk INT) BEGIN /** - * Get all expeditions from route + * Obtiene las expediciones a partir de una ruta + * @param vRouteFk Id de la ruta */ - - UPDATE vn.expedition exp - SET exp.checked = vChecked - WHERE exp.id = vExpeditionFk; - + SELECT e.id, + e.ticketFk, + t.routeFk, + ts.alertLevel, + a.street, + a.city, + a.postalCode, + t.addressFk, + a.nickname, + sub2.itemPackingTypeConcat, + est.code + FROM expedition e + JOIN ticket t ON t.id = e.ticketFk + JOIN ticketState ts ON ts.ticketFk = e.ticketFk + JOIN address a ON t.addressFk = a.id + JOIN route r ON r.id = t.routeFk + LEFT JOIN warehouse w ON t.warehouseFk = w.id + LEFT JOIN (SELECT sub.ticketFk, + CONCAT('(', GROUP_CONCAT(DISTINCT sub.itemPackingTypeFk ORDER BY sub.items DESC SEPARATOR ','), ') ') itemPackingTypeConcat + FROM (SELECT s.ticketFk , i.itemPackingTypeFk, COUNT(*) items + FROM ticket t + JOIN sale s ON s.ticketFk = t.id + JOIN item i ON i.id = s.itemFk + WHERE t.routeFk = vRouteFk + GROUP BY t.id,i.itemPackingTypeFk)sub + GROUP BY sub.ticketFk + ) sub2 ON sub2.ticketFk = t.id + LEFT JOIN expeditionStateType est ON est.id = e.stateTypeFk + WHERE t.routeFk = vRouteFk AND e.freightItemFk <> FALSE + ORDER BY r.created, t.priority DESC; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -60261,13 +53774,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `expedition_getState`(vExpeditionFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `expedition_getState`(vExpeditionFk INT) BEGIN - + DECLARE vTicketsPendientes INT; DECLARE vEtiquetasTotales INT; DECLARE vEtiquetasEscaneadas INT; @@ -60277,24 +53790,24 @@ BEGIN FROM vn.ticket t JOIN vn.expedition e ON e.ticketFk = t.id WHERE e.id = vExpeditionFk; - + SELECT COUNT(*) INTO vTicketsPendientes FROM vn.ticket t LEFT JOIN vn.expedition e ON e.ticketFk = t.id WHERE t.routeFk = vRouteFk AND ISNULL(e.id); - + SELECT COUNT(*) INTO vEtiquetasTotales - FROM vn.expedition e + FROM vn.expedition e JOIN vn.ticket t ON t.id = e.ticketFk WHERE t.routeFk = vRouteFk; - + SELECT COUNT(*) INTO vEtiquetasEscaneadas - FROM vn.expeditionScan es + FROM vn.expeditionScan es JOIN vn.expedition e ON e.id = es.expeditionFk - JOIN vn.ticket t ON t.id = e.ticketFk + JOIN vn.ticket t ON t.id = e.ticketFk WHERE t.routeFk = vRouteFk; - + SELECT e.ticketFk ticket, t.nickname cliente, a.city ciudad, @@ -60308,17 +53821,17 @@ BEGIN vTicketsPendientes AS ticketsPendientes, vEtiquetasTotales AS etiquetasTotales, vEtiquetasEscaneadas AS etiquetasEscaneadas - FROM vn.expedition e - JOIN vn.ticket t ON t.id = e.ticketFk - JOIN vn.address a ON a.id = t.addressFk - JOIN vn.province p ON p.id = a.provinceFk - JOIN vn.`zone`z ON z.id = t.zoneFk - LEFT JOIN vn.route r ON r.id = t.routeFk - LEFT JOIN vn.agencyMode am ON am.id = r.agencyModeFk - LEFT JOIN vn.routesMonitor rm ON rm.routeFk = r.id - LEFT JOIN vn.expeditionTruck et ON et.id = rm.expeditionTruckFk + FROM vn.expedition e + JOIN vn.ticket t ON t.id = e.ticketFk + JOIN vn.address a ON a.id = t.addressFk + JOIN vn.province p ON p.id = a.provinceFk + JOIN vn.`zone`z ON z.id = t.zoneFk + LEFT JOIN vn.route r ON r.id = t.routeFk + LEFT JOIN vn.agencyMode am ON am.id = r.agencyModeFk + LEFT JOIN vn.routesMonitor rm ON rm.routeFk = r.id + LEFT JOIN vn.expeditionTruck et ON et.id = rm.expeditionTruckFk WHERE e.id = vExpeditionFk; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -60329,20 +53842,20 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `expedition_StateGet`(vExpeditionFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `expedition_StateGet`(vExpeditionFk INT) BEGIN - + /* Devuelve una "ficha" con todos los datos relativos a la expedición - * - * param vExpeditionFk + * + * param vExpeditionFk */ - + DECLARE vTicketsPendientes INT; DECLARE vEtiquetasTotales INT; DECLARE vEtiquetasEscaneadas INT; @@ -60353,34 +53866,34 @@ BEGIN FROM vn.ticket t JOIN vn.expedition e ON e.ticketFk = t.id WHERE e.id = vExpeditionFk; - + SELECT COUNT(*) INTO vTicketsPendientes FROM vn.ticket t LEFT JOIN vn.expedition e ON e.ticketFk = t.id WHERE t.routeFk = vRouteFk AND ISNULL(e.id); - + SELECT COUNT(*) INTO vEtiquetasTotales - FROM vn.expedition e + FROM vn.expedition e JOIN vn.ticket t ON t.id = e.ticketFk WHERE t.routeFk = vRouteFk; - + SELECT COUNT(*) INTO vEtiquetasEscaneadas - FROM vn.expeditionScan es + FROM vn.expeditionScan es JOIN vn.expedition e ON e.id = es.expeditionFk - JOIN vn.ticket t ON t.id = e.ticketFk + JOIN vn.ticket t ON t.id = e.ticketFk WHERE t.routeFk = vRouteFk; - + SELECT COUNT(*) INTO vEtiquetasLeidasSorter - FROM srt.expedition e + FROM srt.expedition e JOIN vn.expedition ve ON ve.id = e.id LEFT JOIN vn.expeditionScan es ON es.expeditionFk = e.id - JOIN vn.ticket t ON t.id = ve.ticketFk + JOIN vn.ticket t ON t.id = ve.ticketFk WHERE t.routeFk = vRouteFk AND e.created != e.updated - AND ISNULL(es.expeditionFk); - - + AND ISNULL(es.expeditionFk); + + SELECT e.ticketFk ticket, t.nickname cliente, a.city ciudad, @@ -60395,17 +53908,17 @@ BEGIN vEtiquetasTotales AS etiquetasTotales, vEtiquetasEscaneadas AS etiquetasEscaneadas, vEtiquetasLeidasSorter AS etiquetasSorter - FROM vn.expedition e - JOIN vn.ticket t ON t.id = e.ticketFk - JOIN vn.address a ON a.id = t.addressFk - JOIN vn.province p ON p.id = a.provinceFk - JOIN vn.`zone`z ON z.id = t.zoneFk - LEFT JOIN vn.route r ON r.id = t.routeFk - LEFT JOIN vn.agencyMode am ON am.id = r.agencyModeFk - LEFT JOIN vn.routesMonitor rm ON rm.routeFk = r.id - LEFT JOIN vn.expeditionTruck et ON et.id = rm.expeditionTruckFk + FROM vn.expedition e + JOIN vn.ticket t ON t.id = e.ticketFk + JOIN vn.address a ON a.id = t.addressFk + JOIN vn.province p ON p.id = a.provinceFk + JOIN vn.`zone`z ON z.id = t.zoneFk + LEFT JOIN vn.route r ON r.id = t.routeFk + LEFT JOIN vn.agencyMode am ON am.id = r.agencyModeFk + LEFT JOIN vn.routesMonitor rm ON rm.routeFk = r.id + LEFT JOIN vn.expeditionTruck et ON et.id = rm.expeditionTruckFk WHERE e.id = vExpeditionFk; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -60416,24 +53929,24 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `faultsReview`(vWarehouseFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `faultsReview`(vWarehouseFk INT) BEGIN DECLARE vCalcVisibleFk INT; - + CALL cache.visible_refresh(vCalcVisibleFk, TRUE, vWarehouseFk); - + DROP TEMPORARY TABLE IF EXISTS tmp.itemShelvingRadar; - + CREATE TEMPORARY TABLE tmp.itemShelvingRadar (PRIMARY KEY (itemFk)) - ENGINE = MEMORY + ENGINE = MEMORY SELECT iss.itemFk, i.size, i.subName producer, @@ -60446,7 +53959,7 @@ BEGIN LEFT JOIN cache.visible v ON v.item_id = iss.itemFk AND v.calc_id = vCalcVisibleFk WHERE iss.warehouseFk = vWarehouseFk GROUP BY iss.itemFk; - + SELECT ishr.*, sub.longName, CAST(visible - upstairs - downstairs AS DECIMAL(10,0)) AS nicho, CAST(sub.fault AS DECIMAL(10,0)) as faltas @@ -60457,11 +53970,11 @@ BEGIN JOIN vn.client c ON c.id = t.clientFk WHERE c.typeFk = 'loses' COLLATE utf8_unicode_ci AND s.isPicked = FALSE - AND date(t.shipped) = CURDATE() + AND date(t.shipped) = util.VN_CURDATE() AND t.warehouseFk = vWarehouseFk ) sub ON sub.itemFk = ishr.itemFk ; - + END ;; DELIMITER ; @@ -60473,13 +53986,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `faultsReview_isChecked`(vItemFk INT, vWarehouseFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `faultsReview_isChecked`(vItemFk INT, vWarehouseFk INT) BEGIN UPDATE vn.sale s @@ -60487,7 +54000,7 @@ BEGIN JOIN vn.client c ON c.id = t.clientFk SET s.isPicked = TRUE WHERE c.typeFk = 'loses' COLLATE utf8_unicode_ci - AND date(t.shipped) = CURDATE() + AND date(t.shipped) = util.VN_CURDATE() AND t.warehouseFk = vWarehouseFk AND s.itemFk = vItemFk; @@ -60503,20 +54016,21 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `freelance_getInfo`(workerFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `freelance_getInfo`(workerFk INT) BEGIN - SELECT s.name, s.street, s.city, s.nif, s.postCode + SELECT s.name, s.street, s.city, s.nif, s.postCode FROM route r - JOIN agencyMode am ON r.agencyModeFk = am.id - JOIN agency a ON am.agencyFk = a.id - JOIN supplier s ON a.supplierFk = s.id - WHERE r.workerFk = workerFk - ORDER BY r.id DESC - LIMIT 1; + JOIN agencyMode am ON r.agencyModeFk = am.id + JOIN agency a ON am.agencyFk = a.id + JOIN supplierAgencyTerm sat ON a.id = sat.agencyFk + JOIN supplier s ON sat.supplierFk = s.id + WHERE r.workerFk = workerFk + ORDER BY r.id DESC + LIMIT 1; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -60529,13 +54043,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `fustControl`(vFromDated DATE, vToDated DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `fustControl`(vFromDated DATE, vToDated DATE) BEGIN - + DECLARE vSijsnerClientFk INT DEFAULT 19752; DECLARE vDateStart DATETIME; @@ -60544,68 +54058,68 @@ BEGIN SET vDateStart = vFromDated; SET vDateEnd = util.Dayend(vToDated); - SELECT p.id FustCode, - CAST(sent.stucks AS DECIMAL(10,0)) FH, - CAST(tp.stucks AS DECIMAL(10,0)) Tickets, - CAST(-sj.stucks AS DECIMAL(10,0)) Sijsner, + SELECT p.id FustCode, + CAST(sent.stucks AS DECIMAL(10,0)) FH, + CAST(tp.stucks AS DECIMAL(10,0)) Tickets, + CAST(-sj.stucks AS DECIMAL(10,0)) Sijsner, CAST(IFNULL(sent.stucks,0) - IFNULL(tp.stucks,0) + IFNULL(sj.stucks,0) AS DECIMAL(10,0)) saldo FROM vn.packaging p LEFT JOIN ( SELECT FustCode, sum(fustQuantity) stucks FROM ( SELECT IFNULL(pe.equivalentFk ,b.packageFk) FustCode, s.quantity / b.packing AS fustQuantity - FROM vn.sale s - JOIN vn.ticket t ON t.id = s.ticketFk - JOIN vn.warehouse w ON w.id = t.warehouseFk - JOIN vn.warehouseAlias wa ON wa.id = w.aliasFk - JOIN cache.last_buy lb ON lb.item_id = s.itemFk AND lb.warehouse_id = t.warehouseFk - JOIN vn.buy b ON b.id = lb.buy_id - JOIN vn.packaging p ON p.id = b.packageFk + FROM vn.sale s + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.warehouse w ON w.id = t.warehouseFk + JOIN vn.warehouseAlias wa ON wa.id = w.aliasFk + JOIN cache.last_buy lb ON lb.item_id = s.itemFk AND lb.warehouse_id = t.warehouseFk + JOIN vn.buy b ON b.id = lb.buy_id + JOIN vn.packaging p ON p.id = b.packageFk LEFT JOIN vn.packageEquivalent pe ON pe.packagingFk = p.id - JOIN vn.address a ON a.id = t.addressFk - JOIN vn.province p2 ON p2.id = a.provinceFk - JOIN vn.country c ON c.id = p2.countryFk + JOIN vn.address a ON a.id = t.addressFk + JOIN vn.province p2 ON p2.id = a.provinceFk + JOIN vn.country c ON c.id = p2.countryFk WHERE t.shipped BETWEEN vDateStart AND vDateEnd AND wa.name = 'VNH' - AND p.isPackageReturnable - AND c.country = 'FRANCIA') sub + AND p.isPackageReturnable + AND c.country = 'FRANCIA') sub GROUP BY FustCode) sent ON sent.FustCode = p.id LEFT JOIN ( SELECT FustCode, sum(quantity) stucks FROM ( SELECT IFNULL(pe.equivalentFk ,tp.packagingFk) FustCode, tp.quantity - FROM vn.ticketPackaging tp - JOIN vn.ticket t ON t.id = tp.ticketFk - JOIN vn.warehouse w ON w.id = t.warehouseFk - JOIN vn.warehouseAlias wa ON wa.id = w.aliasFk - JOIN vn.packaging p ON p.id = tp.packagingFk + FROM vn.ticketPackaging tp + JOIN vn.ticket t ON t.id = tp.ticketFk + JOIN vn.warehouse w ON w.id = t.warehouseFk + JOIN vn.warehouseAlias wa ON wa.id = w.aliasFk + JOIN vn.packaging p ON p.id = tp.packagingFk LEFT JOIN vn.packageEquivalent pe ON pe.packagingFk = p.id - JOIN vn.address a ON a.id = t.addressFk - JOIN vn.province p2 ON p2.id = a.provinceFk - JOIN vn.country c ON c.id = p2.countryFk + JOIN vn.address a ON a.id = t.addressFk + JOIN vn.province p2 ON p2.id = a.provinceFk + JOIN vn.country c ON c.id = p2.countryFk WHERE t.shipped BETWEEN vDateStart AND vDateEnd AND wa.name = 'VNH' - AND p.isPackageReturnable + AND p.isPackageReturnable AND c.country = 'FRANCIA' AND t.clientFk != vSijsnerClientFk - AND tp.quantity > 0) sub + AND tp.quantity > 0) sub GROUP BY FustCode) tp ON tp.FustCode = p.id LEFT JOIN ( SELECT FustCode, sum(quantity) stucks FROM ( SELECT IFNULL(pe.equivalentFk ,tp.packagingFk) FustCode, tp.quantity - FROM vn.ticketPackaging tp - JOIN vn.ticket t ON t.id = tp.ticketFk - JOIN vn.warehouse w ON w.id = t.warehouseFk - JOIN vn.warehouseAlias wa ON wa.id = w.aliasFk - JOIN vn.packaging p ON p.id = tp.packagingFk + FROM vn.ticketPackaging tp + JOIN vn.ticket t ON t.id = tp.ticketFk + JOIN vn.warehouse w ON w.id = t.warehouseFk + JOIN vn.warehouseAlias wa ON wa.id = w.aliasFk + JOIN vn.packaging p ON p.id = tp.packagingFk LEFT JOIN vn.packageEquivalent pe ON pe.packagingFk = p.id WHERE t.shipped BETWEEN TIMESTAMPADD(DAY, 1, vDateStart ) AND TIMESTAMPADD(DAY, 1, vDateEnd ) AND wa.name = 'VNH' - AND p.isPackageReturnable - AND t.clientFk = vSijsnerClientFk) sub + AND p.isPackageReturnable + AND t.clientFk = vSijsnerClientFk) sub GROUP BY FustCode) sj ON sj.FustCode = p.id - WHERE sent.stucks + WHERE sent.stucks OR tp.stucks OR sj.stucks; @@ -60621,13 +54135,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `fustControlDetail`(vFromDated DATE, vToDated DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `fustControlDetail`(vFromDated DATE, vToDated DATE) BEGIN - + DECLARE vSijsnerClientFk INT DEFAULT 19752; DECLARE vDateStart DATETIME; @@ -60635,29 +54149,29 @@ BEGIN SET vDateStart = vFromDated; SET vDateEnd = util.Dayend(vToDated); - + SELECT a.nickname shopName, - a.city , - IFNULL(pe.equivalentFk ,tp.packagingFk) FustCode, + a.city , + IFNULL(pe.equivalentFk ,tp.packagingFk) FustCode, tp.quantity, tp.ticketFk, CONCAT('From ', vFromDated,' to ', vToDated) AS dateRange - FROM vn.ticketPackaging tp - JOIN vn.ticket t ON t.id = tp.ticketFk - JOIN vn.warehouse w ON w.id = t.warehouseFk - JOIN vn.warehouseAlias wa ON wa.id = w.aliasFk - JOIN vn.packaging p ON p.id = tp.packagingFk + FROM vn.ticketPackaging tp + JOIN vn.ticket t ON t.id = tp.ticketFk + JOIN vn.warehouse w ON w.id = t.warehouseFk + JOIN vn.warehouseAlias wa ON wa.id = w.aliasFk + JOIN vn.packaging p ON p.id = tp.packagingFk LEFT JOIN vn.packageEquivalent pe ON pe.packagingFk = p.id - JOIN vn.address a ON a.id = t.addressFk - JOIN vn.province p2 ON p2.id = a.provinceFk - JOIN vn.country c ON c.id = p2.countryFk + JOIN vn.address a ON a.id = t.addressFk + JOIN vn.province p2 ON p2.id = a.provinceFk + JOIN vn.country c ON c.id = p2.countryFk WHERE t.shipped BETWEEN vFromDated AND util.dayend(vToDated) AND wa.name = 'VNH' - AND p.isPackageReturnable + AND p.isPackageReturnable AND c.country = 'FRANCIA' AND t.clientFk != vSijsnerClientFk AND tp.quantity > 0; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -60670,11 +54184,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `fv_pca`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `fv_pca`() BEGIN DECLARE done INT DEFAULT FALSE; @@ -60683,8 +54197,8 @@ DECLARE vTicketFk INT; DECLARE vSaleFk INT; DECLARE vClonTicket INT DEFAULT 0; -DECLARE cur1 CURSOR FOR -SELECT s.ticketFk, s.id +DECLARE cur1 CURSOR FOR +SELECT s.ticketFk, s.id FROM vn.sale s JOIN vn.ticket t ON t.id = s.ticketFk JOIN vn.item i ON i.id = s.itemFk @@ -60700,17 +54214,17 @@ OPEN cur1; FETCH cur1 INTO vTicketFk, vSaleFk; WHILE done = 0 DO - + SELECT t.id INTO vClonTicket FROM vn.ticket t JOIN (SELECT addressFk, shipped FROM vn.ticket WHERE id = vTicketFk) sub USING(addressFk, shipped) WHERE t.warehouseFk = 44 LIMIT 1; - + SELECT vTicketFk, vClonTicket; - + IF vClonTicket = 0 THEN - + INSERT INTO ticket ( clientFk, shipped, @@ -60738,12 +54252,12 @@ FETCH cur1 INTO vTicketFk, vSaleFk; zonePrice, zoneBonus, routeFk - + FROM ticket WHERE id = vTicketFk; SET vClonTicket = LAST_INSERT_ID(); - + SELECT 'lstID', vClonTicket; /* INSERT INTO ticketObservation(ticketFk, observationTypeFk, description) @@ -60753,20 +54267,20 @@ FETCH cur1 INTO vTicketFk, vSaleFk; WHERE t.id = vClonTicket; */ INSERT INTO ticketLog - SET originFk = vTicketFk, userFk = account.myUser_getId(), `action` = 'insert', + SET originFk = vTicketFk, userFk = account.myUser_getId(), `action` = 'insert', description = CONCAT('Ha creado el ticket:', ' ', vClonTicket, ' clonando el ', vTicketFk); - + END IF; - + UPDATE vn.sale SET ticketFk = vClonTicket WHERE id = vSaleFk; SET vClonTicket = 0; - + SET done = 0; FETCH cur1 INTO vTicketFk, vSaleFk; - + END WHILE; CLOSE cur1; @@ -60782,23 +54296,23 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `getDayExpeditions`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `getDayExpeditions`() BEGIN - SELECT - e.expeditions_id as expeditionFk, + SELECT + e.expeditions_id as expeditionFk, date_format(e.odbc_date,'%Y-%m-%d') as expeditionDate, e.ticket_id as ticketFk, t.routeFk as routeFk FROM vn2008.expeditions e INNER JOIN vn.ticket t ON t.id = e.ticket_id - WHERE DATE(odbc_date) = CURDATE(); + WHERE DATE(odbc_date) = util.VN_CURDATE(); END ;; DELIMITER ; @@ -60806,54 +54320,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `getDeliveryWorkers` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `getDeliveryWorkers`() -BEGIN -SELECT w.id, - concat(p.firstname," ",p.name) AS fullName, - w.code AS workerCode, - pwc.name, - rl.routeFk as routeLoader - FROM postgresql.person AS p - LEFT JOIN vn.worker AS w ON p.id_trabajador=w.id - LEFT JOIN (SELECT MIN(profile_id) AS pid, person_id FROM postgresql.profile GROUP BY person_id) AS pp ON p.person_id=pp.person_id - LEFT JOIN vn2008.profile_labour_payroll AS plp ON pp.pid=plp.profile_id - LEFT JOIN (SELECT MAX(business_id) AS bimax, client_id FROM postgresql.business GROUP BY client_id) AS pbv ON pbv.client_id = plp.profile_id - LEFT JOIN postgresql.business_labour AS pbl ON pbl.business_id = pbv.bimax - LEFT JOIN vn.department AS pd ON pd.id = pbl.department_id - LEFT JOIN postgresql.workcenter AS pwc ON pwc.workcenter_id=pbl.workcenter_id - LEFT JOIN vn.user u ON u.id=w.userFK - LEFT JOIN vn.routeLoadWorker rl ON rl.workerFk = w.id - WHERE p.id_trabajador Is Not Null - AND pd.name='REPARTO' - AND u.active<>0 - ORDER BY pwc.name ASC,p.firstname ASC; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `getInfoDelivery` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `getInfoDelivery`(vRouteFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `getInfoDelivery`(vRouteFk INT) BEGIN SELECT s.name, s.street, s.city, s.nif, s.postCode FROM vn.route r JOIN vn.agencyMode am ON r.agencyModeFk = am.id @@ -60872,50 +54349,20 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `getItemUbication`(vItemFk VARCHAR(22)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `getItemUbication`(vItemFk VARCHAR(22)) BEGIN - SELECT vn.barcodeToItem(vItemFk) INTO vItemFk; - SELECT pk.code as Parking, - sh.code as Matricula, - ish.visible as visible, - ish.available as Disponible, - ish.level as level, - ish.created as created, - ish.itemFk as itemFk - FROM vn.itemShelving ish - JOIN vn.shelving sh ON sh.`code` = ish.shelvingFk - JOIN vn.parking pk ON pk.id = sh.parkingFk - WHERE ish.itemFk = vItemFk ORDER BY created ASC; + /* + * @deprecated Utilizar itemShelving_getInfo + * + */ + + CALL itemshelving_getInfo(vItemFk); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `getItemVisibleAvailable__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `getItemVisibleAvailable__`( - vItem INT, - vDate DATE, - vWarehouse TINYINT, - vRefresh BOOL) -BEGIN - -- DEPRECADO - UTILIZAR vn.item_getVisibleAvailable() - JSB - 2019-11-20 - CALL item_getVisibleAvailable(vItem, vDate, vWarehouse, vRefresh); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -60926,13 +54373,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `getPedidosInternos`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `getPedidosInternos`() BEGIN SELECT id,name as description,upToDown as quantity FROM vn.item WHERE upToDown; @@ -60943,36 +54390,35 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `intrastat_data_neto_Update` */; +/*!50003 DROP PROCEDURE IF EXISTS `greuge_add` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `intrastat_data_neto_Update`(IN vInvoiceInFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `greuge_add`() BEGIN +/** + * Group inserts into vn.greuge and then deletes the records just inserted + */ + DECLARE vDated DATE; - UPDATE vn2008.intrastat_data id - JOIN ( - SELECT i.intrastatFk, - LEAST(SUM(b.quantity) * IFNULL(it.gramsMax,100000) / 1000, - SUM(ic.cm3 * b.quantity) * IF(i.density, i.density, it.density) / 1000000) as neto - FROM entry e - JOIN travel tr ON tr.id = e.travelFk - JOIN buy b ON b.entryFk = e.id - JOIN item i ON i.id = b.itemFk - join itemType it ON it.id = i.typeFk - JOIN itemCost ic ON ic.itemFk = i.id AND tr.warehouseInFk = ic.warehouseFk - WHERE e.invoiceInFk = vinvoiceInFk - GROUP BY i.intrastatFk) sub ON sub.intrastatFk = id.intrastat_id - SET id.neto = ROUND(sub.neto, 1) - WHERE id.recibida_id = vInvoiceInFk; - + SELECT DATE_SUB(util.VN_CURDATE(), INTERVAL yearsToDelete YEAR) INTO vDated + FROM vn.greugeConfig; + INSERT INTO vn.greuge(clientFk, description, amount, shipped, created, greugeTypeFk) + SELECT clientFk, 'Suma agrupada', SUM(amount), MAX(shipped), MAX(created), greugeTypeFk + FROM vn.greuge + WHERE shipped <= vDated AND description <> 'Suma agrupada' + GROUP BY clientFk, greugeTypeFk; + + DELETE + FROM vn.greuge + WHERE shipped <= vDated AND description <> 'Suma agrupada'; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -60983,21 +54429,21 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `inventoryFailureAdd`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `inventoryFailureAdd`() BEGIN DECLARE done BOOL DEFAULT FALSE; DECLARE vTicketFk INT; DECLARE rs CURSOR FOR - SELECT id FROM vn.ticket - WHERE shipped = util.yesterday() + SELECT id FROM vn.ticket + WHERE shipped = util.yesterday() AND clientFk = 400 AND warehouseFk IN (1,44); @@ -61008,13 +54454,13 @@ OPEN rs; FETCH rs INTO vTicketFk; WHILE NOT done DO - + INSERT INTO vn.inventoryFailure(dated, itemFk, quantity, value, warehouseFk, throwerFk) - SELECT t.shipped, - s.itemFk, - s.quantity, + SELECT t.shipped, + s.itemFk, + s.quantity, b.buyingValue + b.freightValue + b.packageValue + b.comissionValue, - t.warehouseFk, + t.warehouseFk, w.id FROM vn.ticket t JOIN vn.sale s ON s.ticketFk = t.id @@ -61025,7 +54471,7 @@ WHILE NOT done DO AND s.quantity > 0; FETCH rs INTO vTicketFk; - + END WHILE; @@ -61046,29 +54492,30 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `inventoryMake`(vDate DATE, vWh INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `inventoryMake`(vDate DATE, vWh INT) proc: BEGIN /** - * Recalcula los inventarios de todos los almacenes, si vWh = 0 - * - * @param vDate Fecha de los nuevos inventarios - * @param vWh almacen al cual hacer el inventario - */ - +* Recalcula los inventarios de todos los almacenes, si vWh = 0 +* +* @param vDate Fecha de los nuevos inventarios +* @param vWh almacen al cual hacer el inventario +*/ + DECLARE vDone BOOL; DECLARE vEntryFk INT; DECLARE vTravelFk INT; - DECLARE vDateLastInventory DATE; - DECLARE vDateYesterday DATETIME DEFAULT TIMESTAMPADD(SECOND,-1,vDate); + DECLARE vDateLastInventory DATE; + DECLARE vDateYesterday DATETIME DEFAULT TIMESTAMPADD(SECOND,-1,vDate); DECLARE cWarehouses CURSOR FOR - SELECT id - FROM warehouse - WHERE isInventory AND vWh IN (0,id); + SELECT id + FROM warehouse + WHERE isInventory + AND vWh IN (0,id); DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; @@ -61088,53 +54535,53 @@ proc: BEGIN SELECT MAX(landed) INTO vDateLastInventory FROM travel tr - JOIN entry e ON e.travelFk = tr.id - JOIN buy b ON b.entryFk = e.id + JOIN entry e ON e.travelFk = tr.id + JOIN buy b ON b.entryFk = e.id WHERE warehouseOutFk = 13 AND landed < vDate - AND e.supplierFk = 4 + AND e.supplierFk = 4 AND warehouseInFk = vWh - AND NOT isRaid; - + AND NOT isRaid; + IF vDateLastInventory IS NULL THEN SELECT inventoried INTO vDateLastInventory FROM config; - END IF; - - -- Generamos travel, si no existe. - SET vTravelFK = 0; - - SELECT id INTO vTravelFk + END IF; + + -- Generamos travel, si no existe. + SET vTravelFK = 0; + + SELECT id INTO vTravelFk FROM travel - WHERE warehouseOutFk = 13 + WHERE warehouseOutFk = 13 AND warehouseInFk = vWh - AND landed = vDate - AND agencyFk = 53 - AND ref = 'inventario' + AND landed = vDate + AND agencyModeFk = 53 + AND ref = 'inventario' LIMIT 1; - - IF NOT vTravelFK THEN - + + IF NOT vTravelFK THEN + INSERT INTO travel SET warehouseOutFk = 13, warehouseInFk = vWh, shipped = vDate, landed = vDate, - agencyFk = 53, + agencyModeFk = 53, ref = 'inventario', isDelivered = TRUE, isReceived = TRUE; - SELECT LAST_INSERT_ID() INTO vTravelFk; - + SELECT LAST_INSERT_ID() INTO vTravelFk; + END IF; - - -- Generamos entrada si no existe, o la vaciamos. - SET vEntryFk = 0; - - SELECT id INTO vEntryFk + + -- Generamos entrada si no existe, o la vaciamos. + SET vEntryFk = 0; + + SELECT id INTO vEntryFk FROM entry - WHERE supplierFk = 4 - AND travelFk = vTravelFk; + WHERE supplierFk = 4 + AND travelFk = vTravelFk; IF NOT vEntryFk THEN @@ -61145,82 +54592,82 @@ proc: BEGIN travelFk = vTravelFk; SELECT LAST_INSERT_ID() INTO vEntryFk; - + ELSE - + DELETE FROM buy WHERE entryFk = vEntryFk; - + END IF; -- Preparamos tabla auxilar DROP TEMPORARY TABLE IF EXISTS tmp.inventory; - - CREATE TEMPORARY TABLE tmp.inventory + + CREATE TEMPORARY TABLE tmp.inventory ( - itemFk INT(11) NOT NULL PRIMARY KEY, - quantity int(11) DEFAULT '0', - buyingValue decimal(10,3) DEFAULT '0.000', - freightValue decimal(10,3) DEFAULT '0.000', - packing int(11) DEFAULT '0', - `grouping` smallint(5) unsigned NOT NULL DEFAULT '1', - groupingMode tinyint(4) NOT NULL DEFAULT 0 , - comissionValue decimal(10,3) DEFAULT '0.000', - packageValue decimal(10,3) DEFAULT '0.000', - packageFk varchar(10) COLLATE utf8_unicode_ci DEFAULT '--', - price1 decimal(10,2) DEFAULT '0.00', - price2 decimal(10,2) DEFAULT '0.00', - price3 decimal(10,2) DEFAULT '0.00', - minPrice decimal(10,2) DEFAULT '0.00', - producer varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + itemFk INT(11) NOT NULL PRIMARY KEY, + quantity int(11) DEFAULT '0', + buyingValue decimal(10,3) DEFAULT '0.000', + freightValue decimal(10,3) DEFAULT '0.000', + packing int(11) DEFAULT '0', + `grouping` smallint(5) unsigned NOT NULL DEFAULT '1', + groupingMode tinyint(4) NOT NULL DEFAULT 0 , + comissionValue decimal(10,3) DEFAULT '0.000', + packageValue decimal(10,3) DEFAULT '0.000', + packageFk varchar(10) COLLATE utf8_unicode_ci DEFAULT '--', + price1 decimal(10,2) DEFAULT '0.00', + price2 decimal(10,2) DEFAULT '0.00', + price3 decimal(10,2) DEFAULT '0.00', + minPrice decimal(10,2) DEFAULT '0.00', + producer varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, INDEX (itemFK)) ENGINE = MEMORY ; -- Compras - INSERT INTO tmp.inventory(itemFk,quantity) + INSERT INTO tmp.inventory(itemFk,quantity) SELECT b.itemFk, sum(b.quantity) FROM buy b - JOIN entry e ON e.id = b.entryFk - JOIN travel tr ON tr.id = e.travelFk - WHERE tr.warehouseInFk = vWh - AND tr.landed BETWEEN vDateLastInventory - AND vDateYesterday - AND NOT isRaid + JOIN entry e ON e.id = b.entryFk + JOIN travel tr ON tr.id = e.travelFk + WHERE tr.warehouseInFk = vWh + AND tr.landed BETWEEN vDateLastInventory + AND vDateYesterday + AND NOT isRaid GROUP BY b.itemFk; - SELECT vDateLastInventory , vDateYesterday; + SELECT vDateLastInventory , vDateYesterday; + -- Traslados - INSERT INTO tmp.inventory(itemFk,quantity) + INSERT INTO tmp.inventory(itemFk,quantity) SELECT itemFk, quantityOut - FROM ( + FROM ( SELECT b.itemFk, -sum(b.quantity) quantityOut FROM buy b JOIN entry e ON e.id = b.entryFk JOIN travel tr ON tr.id = e.travelFk WHERE tr.warehouseOutFk = vWh - AND tr.shipped BETWEEN vDateLastInventory - AND vDateYesterday + AND tr.shipped BETWEEN vDateLastInventory + AND vDateYesterday AND NOT isRaid GROUP BY b.itemFk - ) sub + ) sub ON DUPLICATE KEY UPDATE quantity = IFNULL(quantity,0) + sub.quantityOut; - + -- Ventas - INSERT INTO tmp.inventory(itemFk,quantity) + INSERT INTO tmp.inventory(itemFk,quantity) SELECT itemFk, saleOut - FROM ( + FROM ( SELECT s.itemFk, -sum(s.quantity) saleOut FROM sale s JOIN ticket t ON t.id = s.ticketFk WHERE t.warehouseFk = vWh AND t.shipped BETWEEN vDateLastInventory AND vDateYesterday GROUP BY s.itemFk - ) sub + ) sub ON DUPLICATE KEY UPDATE quantity = IFNULL(quantity,0) + sub.saleOut; -- Actualiza valores de la ultima compra - UPDATE tmp.inventory inv JOIN cache.last_buy lb ON lb.item_id = inv.itemFk AND lb.warehouse_id = vWh - JOIN buy b ON b.id = lb.buy_id + JOIN buy b ON b.id = lb.buy_id SET inv.buyingValue = b.buyingValue, inv.freightValue = b.freightValue, @@ -61236,7 +54683,7 @@ proc: BEGIN inv.minPrice = b.minPrice, inv.producer = b.producer; - + INSERT INTO buy( itemFk, quantity, buyingValue, @@ -61252,7 +54699,7 @@ proc: BEGIN price3, minPrice, producer, - entryFk) + entryFk) SELECT itemFk, GREATEST(quantity,0), buyingValue, @@ -61268,19 +54715,25 @@ proc: BEGIN price3, minPrice, producer, - vEntryFk + vEntryFk FROM tmp.inventory; - SELECT vWh, count(*), NOW() FROM tmp.inventory; - + SELECT vWh, count(*), util.VN_NOW() FROM tmp.inventory; + + -- Actualizamos el campo lastUsed de vn.item + UPDATE vn.item i + JOIN tmp.inventory i2 ON i2.itemFk = i.id + SET i.lastUsed = util.VN_NOW() + WHERE i2.quantity; + -- DROP TEMPORARY TABLE tmp.inventory; - + END LOOP; CLOSE cWarehouses; UPDATE config SET inventoried = vDate; - SET @isModeInventory := FALSE; + SET @isModeInventory := FALSE; DROP TEMPORARY TABLE IF EXISTS tmp.entryToDelete; CREATE TEMPORARY TABLE tmp.entryToDelete @@ -61288,11 +54741,11 @@ proc: BEGIN SELECT e.id as entryId, t.id as travelId FROM vn.travel t - JOIN vn.entry e ON e.travelFk = t.id + JOIN vn.entry e ON e.travelFk = t.id WHERE e.supplierFk = 4 - AND t.shipped <= TIMESTAMPADD(DAY, -2, TIMESTAMPADD(DAY, -10, CURDATE())) - AND (DAY(t.shipped) <> 1 OR shipped < TIMESTAMPADD(MONTH, -12, CURDATE())); - + AND t.shipped <= TIMESTAMPADD(DAY, -2, TIMESTAMPADD(DAY, -10, util.VN_CURDATE())) + AND (DAY(t.shipped) <> 1 OR shipped < TIMESTAMPADD(MONTH, -12, util.VN_CURDATE())); + DELETE e FROM vn.entry e JOIN tmp.entryToDelete tmp ON tmp.entryId = e.id; @@ -61310,271 +54763,20 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `inventoryMakeLauncher`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `inventoryMakeLauncher`() BEGIN /** * Recalcula los inventarios de todos los almacenes. */ - call vn.inventoryMake(TIMESTAMPADD(DAY, -10, CURDATE()), 0); + call vn.inventoryMake(TIMESTAMPADD(DAY, -10, util.VN_CURDATE()), 0); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `inventoryMake__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `inventoryMake__`(vDate DATE, vWh INT) -proc: BEGIN -/** - * bernat WORKING IN THIS FILE - * Recalcula los inventarios de todos los almacenes, si vWh = 0 - * - * @param vDate Fecha de los nuevos inventarios - */ - - DECLARE vDone BOOL; - DECLARE vEntryFk INT; - DECLARE vTravelFk INT; - DECLARE vDateTime DATETIME DEFAULT TIMESTAMP(vDate, '00:00:00'); - DECLARE vDeleteDate DATE DEFAULT TIMESTAMPADD(DAY, -2, vDate); - DECLARE vDateLastInventory DATE; - DECLARE vDateYesterday DATETIME DEFAULT TIMESTAMPADD(SECOND,-1,vDate); - - DECLARE cWarehouses CURSOR FOR - SELECT id FROM vn.warehouse WHERE isInventory AND vWh IN (0,id); - - DECLARE CONTINUE HANDLER FOR NOT FOUND - SET vDone = TRUE; - - SELECT vDateYesterday; - - OPEN cWarehouses; - SET @isModeInventory := TRUE; - l: LOOP - - SET vDone = FALSE; - FETCH cWarehouses INTO vWh; - - IF vDone THEN - LEAVE l; - END IF; - - SELECT MAX(landed) INTO vDateLastInventory - FROM vn.travel tr - JOIN vn.entry e ON e.travelFk = tr.id - JOIN vn.buy b ON b.entryFk = e.id - WHERE warehouseOutFk = 13 - AND landed < vDate - AND e.supplierFk = 4 - AND warehouseInFk = vWh - AND NOT isRaid; - - -- Generamos travel, si no existe. - SET vTravelFK = 0; - - SELECT id INTO vTravelFk - FROM vn.travel - WHERE warehouseOutFk = 13 - AND warehouseInFk = vWh - AND landed = vDate - AND agencyFk = 53 - AND ref = 'inventario' - LIMIT 1; - - IF NOT vTravelFK THEN - - INSERT INTO vn.travel SET - warehouseOutFk = 13, - warehouseInFk = vWh, - shipped = vDateTime, - landed = vDate, - agencyFk = 53, - ref = 'inventario', - isDelivered = TRUE, - isReceived = TRUE; - - SELECT LAST_INSERT_ID() INTO vTravelFk; - - END IF; - - -- Generamos entrada si no existe, o la vaciamos. - SET vEntryFk = 0; - - SELECT id INTO vEntryFk - FROM vn.entry - WHERE supplierFk = 4 - AND travelFk = vTravelFk; - - IF NOT vEntryFk THEN - - INSERT INTO entry SET - supplierFk = 4, - isConfirmed = TRUE, - isOrdered = TRUE, - travelFk = vTravelFk; - - SELECT LAST_INSERT_ID() INTO vEntryFk; - - ELSE - - DELETE FROM vn.buy WHERE entryFk = vEntryFk; - - END IF; - - -- Preparamos tabla auxilar - DROP TEMPORARY TABLE IF EXISTS tmp.inventory; - - CREATE TEMPORARY TABLE tmp.inventory - ( - itemFk INT(11) NOT NULL PRIMARY KEY, - quantity int(11) DEFAULT '0', - buyingValue decimal(10,3) DEFAULT '0.000', - freightValue decimal(10,3) DEFAULT '0.000', - packing int(11) DEFAULT '0', - `grouping` smallint(5) unsigned NOT NULL DEFAULT '1', - groupingMode tinyint(4) NOT NULL DEFAULT 0 , - comissionValue decimal(10,3) DEFAULT '0.000', - packageValue decimal(10,3) DEFAULT '0.000', - packageFk varchar(10) COLLATE utf8_unicode_ci DEFAULT '--', - price1 decimal(10,2) DEFAULT '0.00', - price2 decimal(10,2) DEFAULT '0.00', - price3 decimal(10,2) DEFAULT '0.00', - minPrice decimal(10,2) DEFAULT '0.00', - producer varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - INDEX (itemFK)) - ENGINE = MEMORY ; - - -- Compras - INSERT INTO tmp.inventory(itemFk,quantity) - SELECT b.itemFk, sum(b.quantity) - FROM vn.buy b - JOIN vn.entry e ON e.id = b.entryFk - JOIN vn.travel tr ON tr.id = e.travelFk - WHERE tr.warehouseInFk = vWh - AND tr.landed BETWEEN vDateLastInventory - AND vDateYesterday - AND NOT isRaid - GROUP BY b.itemFk; - SELECT vDateLastInventory , vDateYesterday; - -- Traslados - INSERT INTO tmp.inventory(itemFk,quantity) - SELECT itemFk, quantityOut - FROM ( - SELECT b.itemFk, -sum(b.quantity) quantityOut - FROM vn.buy b - JOIN vn.entry e ON e.id = b.entryFk - JOIN vn.travel tr ON tr.id = e.travelFk - WHERE tr.warehouseOutFk = vWh - AND tr.shipped BETWEEN vDateLastInventory - AND vDateYesterday - AND NOT isRaid - GROUP BY b.itemFk - ) sub - ON DUPLICATE KEY UPDATE quantity = IFNULL(quantity,0) + sub.quantityOut; - - -- Ventas - INSERT INTO tmp.inventory(itemFk,quantity) - SELECT itemFk, saleOut - FROM ( - SELECT s.itemFk, -sum(s.quantity) saleOut - FROM vn.sale s - JOIN vn.ticket t ON t.id = s.ticketFk - WHERE t.warehouseFk = vWh - AND t.shipped BETWEEN vDateLastInventory AND vDateYesterday - GROUP BY s.itemFk - ) sub - ON DUPLICATE KEY UPDATE quantity = IFNULL(quantity,0) + sub.saleOut; - - -- Actualiza valores de la ultima compra - - UPDATE tmp.inventory inv - JOIN cache.last_buy lb ON lb.item_id = inv.itemFk AND lb.warehouse_id = vWh - JOIN vn.buy b ON b.id = lb.buy_id - SET - inv.buyingValue = b.buyingValue, - inv.freightValue = b.freightValue, - inv.packing = b.packing, - inv.`grouping` = b.`grouping`, - inv.groupingMode = b.groupingMode, - inv.comissionValue = b.comissionValue, - inv.packageValue = b.packageValue, - inv.packageFk = b.packageFk, - inv.price1 = b.price1, - inv.price2 = b.price2, - inv.price3 = b.price3, - inv.minPrice = b.minPrice, - inv.producer = b.producer; - - - INSERT INTO vn.buy( itemFk, - quantity, - buyingValue, - freightValue, - packing, - `grouping`, - groupingMode, - comissionValue, - packageValue, - packageFk, - price1, - price2, - price3, - minPrice, - producer, - entryFk) - SELECT itemFk, - quantity, - buyingValue, - freightValue, - packing, - `grouping`, - groupingMode, - comissionValue, - packageValue, - packageFk, - price1, - price2, - price3, - minPrice, - producer, - vEntryFk - FROM tmp.inventory; - - SELECT vWh, count(*), NOW() FROM tmp.inventory; - - -- DROP TEMPORARY TABLE tmp.inventory; - - END LOOP; - - CLOSE cWarehouses; - - UPDATE vn2008.tblContadores SET FechaInventario = vDate; - SET @isModeInventory := FALSE; - - DELETE e, t - FROM vn.travel t - JOIN vn.entry e ON e.travelFk = t.id - WHERE e.supplierFk = 4 - AND t.shipped <= vDeleteDate - AND (DAY(t.shipped) <> 1 OR shipped < TIMESTAMPADD(MONTH, -12, CURDATE())); - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -61587,11 +54789,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `inventory_repair`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `inventory_repair`() BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.lastEntry; @@ -61605,7 +54807,7 @@ BEGIN b.id AS buyFk, b.entryFk, b.isIgnored, - b.price2, + b.price2, b.price3, b.stickers, b.packing, @@ -61619,20 +54821,20 @@ BEGIN s.id AS supplierFk, s.name AS supplier FROM itemType it - RIGHT JOIN (entry e + RIGHT JOIN (entry e LEFT JOIN supplier s ON s.id = e.supplierFk RIGHT JOIN buy b ON b.entryFk = e.id LEFT JOIN item i ON i.id = b.itemFk - LEFT JOIN ink ON ink.id = i.inkFk + LEFT JOIN ink ON ink.id = i.inkFk LEFT JOIN travel tr ON tr.id = e.travelFk LEFT JOIN warehouse w ON w.id = tr.warehouseInFk LEFT JOIN origin o ON o.id = i.originFk ) ON it.id = i.typeFk LEFT JOIN edi.ekt ek ON b.ektFk = ek.id - WHERE (b.packageFk = "--" OR b.price2 = 0 OR b.packing = 0 OR b.buyingValue = 0) AND tr.landed > util.firstDayOfMonth(TIMESTAMPADD(MONTH,-1,CURDATE())) AND s.name = 'INVENTARIO'; - + WHERE (b.packageFk = "--" OR b.price2 = 0 OR b.packing = 0 OR b.buyingValue = 0) AND tr.landed > util.firstDayOfMonth(TIMESTAMPADD(MONTH,-1,util.VN_CURDATE())) AND s.name = 'INVENTARIO'; + DROP TEMPORARY TABLE IF EXISTS tmp.lastEntryOk; - CREATE TEMPORARY TABLE tmp.lastEntryOk + CREATE TEMPORARY TABLE tmp.lastEntryOk (PRIMARY KEY (buyFk)) SELECT i.id AS itemFk, @@ -61642,7 +54844,7 @@ BEGIN b.id AS buyFk, b.entryFk, b.isIgnored, - b.price2, + b.price2, b.price3, b.stickers, b.packing, @@ -61656,46 +54858,46 @@ BEGIN s.id AS supplierFk, s.name AS supplier FROM itemType it - RIGHT JOIN (entry e + RIGHT JOIN (entry e LEFT JOIN supplier s ON s.id = e.supplierFk RIGHT JOIN buy b ON b.entryFk = e.id LEFT JOIN item i ON i.id = b.itemFk - LEFT JOIN ink ON ink.id = i.inkFk + LEFT JOIN ink ON ink.id = i.inkFk LEFT JOIN travel tr ON tr.id = e.travelFk LEFT JOIN warehouse w ON w.id = tr.warehouseInFk LEFT JOIN origin o ON o.id = i.originFk ) ON it.id = i.typeFk LEFT JOIN edi.ekt ek ON b.ektFk = ek.id - WHERE b.packageFk != "--" AND b.price2 != 0 AND b.packing != 0 AND b.buyingValue > 0 AND tr.landed > util.firstDayOfMonth(TIMESTAMPADD(MONTH,-2,CURDATE())) + WHERE b.packageFk != "--" AND b.price2 != 0 AND b.packing != 0 AND b.buyingValue > 0 AND tr.landed > util.firstDayOfMonth(TIMESTAMPADD(MONTH,-2,util.VN_CURDATE())) ORDER BY tr.landed DESC; - + DROP TEMPORARY TABLE IF EXISTS tmp.lastEntryOkGroup; - CREATE TEMPORARY TABLE tmp.lastEntryOkGroup + CREATE TEMPORARY TABLE tmp.lastEntryOkGroup (INDEX (warehouseFk,itemFk)) SELECT * FROM tmp.lastEntryOk tmp GROUP BY tmp.itemFk,tmp.warehouseFk; - + UPDATE buy b JOIN tmp.lastEntry lt ON lt.buyFk = b.id JOIN tmp.lastEntryOkGroup eo ON eo.itemFk = lt.itemFk AND eo.warehouseFk = lt.warehouseFk SET b.packageFk = eo.packageFk WHERE b.packageFk = "--"; - + UPDATE buy b JOIN tmp.lastEntry lt ON lt.buyFk = b.id JOIN tmp.lastEntryOkGroup eo ON eo.itemFk = lt.itemFk AND eo.warehouseFk = lt.warehouseFk SET b.price2 = eo.price2 WHERE b.price2 = 0 ; - + UPDATE buy b JOIN tmp.lastEntry lt ON lt.buyFk = b.id JOIN tmp.lastEntryOkGroup eo ON eo.itemFk = lt.itemFk AND eo.warehouseFk = lt.warehouseFk SET b.packing = eo.packing WHERE b.packing = 0; - + UPDATE buy b JOIN tmp.lastEntry lt ON lt.buyFk = b.id JOIN tmp.lastEntryOkGroup eo ON eo.itemFk = lt.itemFk AND eo.warehouseFk = lt.warehouseFk SET b.buyingValue = eo.buyingValue WHERE b.buyingValue = 0; - + DROP TEMPORARY TABLE tmp.lastEntry; DROP TEMPORARY TABLE tmp.lastEntryOk; DROP TEMPORARY TABLE tmp.lastEntryOkGroup; @@ -61711,11 +54913,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceExpenceMake`(IN vInvoice INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceExpenceMake`(IN vInvoice INT) BEGIN /* Inserta las partidas de gasto correspondientes a la factura * REQUIERE tabla ticketToInvoice @@ -61733,7 +54935,7 @@ BEGIN JOIN item i ON i.id = s.itemFk GROUP BY i.expenceFk HAVING amount != 0; - + INSERT INTO invoiceOutExpence(invoiceOutFk, expenceFk, amount) SELECT vInvoice, tst.expenceFk, @@ -61741,48 +54943,7 @@ BEGIN FROM ticketToInvoice t JOIN ticketService ts ON ts.ticketFk = t.id JOIN ticketServiceType tst ON tst.id = ts.ticketServiceTypeFk - HAVING amount != 0; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `invoiceExpenceMake__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceExpenceMake__`(IN vInvoice INT) -BEGIN -/* Inserta las partidas de gasto correspondientes a la factura - * REQUIERE tabla ticketToInvoice - * - * @param vInvoice Numero de factura - * - */ - DELETE FROM invoiceOutExpence - WHERE invoiceOutFk = vInvoice; - - INSERT INTO invoiceOutExpence( - invoiceOutFk, - expenceFk, - amount - ) - SELECT - vInvoice, - expenceFk, - SUM(ROUND(quantity * price * (100 - discount)/100,2)) amount - FROM ticketToInvoice t - JOIN sale s ON s.ticketFk = t.id - JOIN item i ON i.id = s.itemFk - GROUP BY i.expenceFk - HAVING amount != 0; + HAVING amount != 0; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -61790,30 +54951,29 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceFromAddress` */; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceFromAddress`(vMaxTicketDate DATETIME,vAddress INT,vCompany INT) -BEGIN +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceFromAddress`(vMaxTicketDate DATETIME,vAddress INT,vCompany INT) +BEGIN + + DECLARE vMinDateTicket DATE DEFAULT TIMESTAMPADD(MONTH, -3, util.VN_CURDATE()); - DECLARE vMinDateTicket DATE DEFAULT TIMESTAMPADD(MONTH, -3, CURDATE()); - SET vMaxTicketDate = vn2008.DAYEND(vMaxTicketDate); - + DROP TEMPORARY TABLE IF EXISTS `ticketToInvoice`; - + CREATE TEMPORARY TABLE `ticketToInvoice` (PRIMARY KEY (`id`)) ENGINE = MEMORY SELECT Id_Ticket id FROM vn2008.Tickets WHERE (Fecha BETWEEN vMinDateTicket - AND vMaxTicketDate) AND Id_Consigna = vAddress + AND vMaxTicketDate) AND Id_Consigna = vAddress AND Factura IS NULL AND empresa_id = vCompany; END ;; @@ -61822,22 +54982,21 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceFromClient` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceFromClient`(IN vMaxTicketDate datetime, IN vClientFk INT, IN vCompanyFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceFromClient`(IN vMaxTicketDate datetime, IN vClientFk INT, IN vCompanyFk INT) BEGIN - DECLARE vMinTicketDate DATE DEFAULT TIMESTAMPADD(YEAR, -3, CURDATE()); + DECLARE vMinTicketDate DATE DEFAULT TIMESTAMPADD(YEAR, -3, util.VN_CURDATE()); SET vMaxTicketDate = util.dayend(vMaxTicketDate); - + DROP TEMPORARY TABLE IF EXISTS `ticketToInvoice`; CREATE TEMPORARY TABLE `ticketToInvoice` (PRIMARY KEY (`id`)) @@ -61857,17 +55016,17 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceFromTicket`(IN vTicket INT) -BEGIN +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceFromTicket`(IN vTicket INT) +BEGIN DROP TEMPORARY TABLE IF EXISTS `ticketToInvoice`; - + CREATE TEMPORARY TABLE `ticketToInvoice` (PRIMARY KEY (`id`)) ENGINE = MEMORY @@ -61884,22 +55043,22 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInBookingCommon`(vInvoiceInId INT, OUT vSerialNumber INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceInBookingCommon`(vInvoiceInId INT, OUT vSerialNumber INT) BEGIN DROP TEMPORARY TABLE IF EXISTS newInvoiceIn; CREATE TEMPORARY TABLE newInvoiceIn - SELECT + SELECT i.*, YEAR(i.booked) datedYear, - CONCAT('s/fra',RIGHT(i.supplierRef,8),':',LEFT(s.name, 10)) conceptWithSupplier, + CONCAT('s/fra',RIGHT(i.supplierRef,8),':',LEFT(s.name, 10)) conceptWithSupplier, (cc.id = c.id) isSameCountry, cit.id invoicesCount FROM invoiceIn i @@ -61912,7 +55071,7 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS newSupplier; CREATE TEMPORARY TABLE newSupplier - SELECT + SELECT s.*, REPLACE(s.account,' ','') supplierAccount, IF(c.CEE < 2, TRUE, FALSE) isUeeMember @@ -61925,11 +55084,11 @@ BEGIN CALL util.throw('INACTIVE_PROVIDER'); END IF; - SELECT IFNULL(MAX(i.serialNumber) + 1,1) + SELECT IFNULL(MAX(i.serialNumber) + 1,1) INTO vSerialNumber FROM invoiceIn i JOIN newInvoiceIn n - WHERE i.serial LIKE n.serial + WHERE i.serial LIKE n.serial AND YEAR(i.booked) = n.datedYear AND i.companyFk = n.companyFk GROUP BY i.companyFk; @@ -61950,7 +55109,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInBookingMain`(vInvoiceInId INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceInBookingMain`(vInvoiceInId INT) BEGIN DECLARE vTotalAmount,vTotalAmountDivisa DECIMAL(10,2); DECLARE vBookNumber,vSerialNumber INT; @@ -61958,7 +55117,7 @@ BEGIN CALL invoiceInBookingCommon(vInvoiceInId,vSerialNumber); - SELECT SUM(iit.taxableBase * IF( i.serial= 'R' AND ti.Iva <> 'HP DEVENGADO 21 ISP', 1 +(ti.PorcentajeIva/100),1)), + SELECT SUM(iit.taxableBase * IF( i.serial= 'R' AND ti.Iva <> 'HP DEVENGADO 21 ISP', 1 +(ti.PorcentajeIva/100),1)), SUM(iit.foreignValue * IF( i.serial= 'R', 1 + (ti.PorcentajeIva/100),1)), iit.taxableBase/iit.foreignValue INTO vTotalAmount, vTotalAmountDivisa, vRate @@ -61970,18 +55129,18 @@ BEGIN -- Apunte del proveedor - INSERT INTO vn2008.XDiario(ASIEN, - FECHA, - SUBCTA, - EUROHABER, - CONCEPTO, - CAMBIO, - HABERME, - NFACTICK, - CLAVE, - empresa_id - ) - SELECT + INSERT INTO XDiario(ASIEN, + FECHA, + SUBCTA, + EUROHABER, + CONCEPTO, + CAMBIO, + HABERME, + NFACTICK, + CLAVE, + empresa_id + ) + SELECT vBookNumber, n.bookEntried, s.supplierAccount, @@ -61992,23 +55151,23 @@ BEGIN n.invoicesCount, vInvoiceInId, n.companyFk - FROM newInvoiceIn n + FROM newInvoiceIn n JOIN newSupplier s; -- Línea de Gastos - INSERT INTO vn2008.XDiario ( ASIEN, - FECHA, - SUBCTA, - CONTRA, - EURODEBE, - EUROHABER, - CONCEPTO, - CAMBIO, - DEBEME, - HABERME, - NFACTICK, - empresa_id - ) + INSERT INTO XDiario ( ASIEN, + FECHA, + SUBCTA, + CONTRA, + EURODEBE, + EUROHABER, + CONCEPTO, + CAMBIO, + DEBEME, + HABERME, + NFACTICK, + empresa_id + ) SELECT vBookNumber ASIEN, n.bookEntried FECHA, IF(e.isWithheld , LPAD(RIGHT(s.supplierAccount,5),10,iit.expenceFk),iit.expenceFk) SUBCTA, @@ -62022,7 +55181,7 @@ BEGIN n.invoicesCount NFACTICK, n.companyFk empresa_id FROM newInvoiceIn n - JOIN newSupplier s + JOIN newSupplier s JOIN invoiceInTax iit ON iit.invoiceInFk = n.id JOIN (SELECT * FROM expence e GROUP BY e.id)e ON e.id = iit.expenceFk WHERE e.name != 'Suplidos Transitarios nacionales' @@ -62030,40 +55189,40 @@ BEGIN -- Líneas de IVA - INSERT INTO vn2008.XDiario( ASIEN, - FECHA, - SUBCTA, - CONTRA, - EURODEBE, - BASEEURO, - CONCEPTO, - FACTURA, - IVA, - AUXILIAR, - SERIE, - TIPOOPE, - FECHA_EX, - FECHA_OP, - NFACTICK, - FACTURAEX, - L340, - LRECT349, - TIPOCLAVE, - TIPOEXENCI, - TIPONOSUJE, - TIPOFACT, - TIPORECTIF, - TERIDNIF, - TERNIF, - TERNOM, - FECREGCON, - empresa_id - ) + INSERT INTO XDiario( ASIEN, + FECHA, + SUBCTA, + CONTRA, + EURODEBE, + BASEEURO, + CONCEPTO, + FACTURA, + IVA, + AUXILIAR, + SERIE, + TIPOOPE, + FECHA_EX, + FECHA_OP, + NFACTICK, + FACTURAEX, + L340, + LRECT349, + TIPOCLAVE, + TIPOEXENCI, + TIPONOSUJE, + TIPOFACT, + TIPORECTIF, + TERIDNIF, + TERNIF, + TERNOM, + FECREGCON, + empresa_id + ) SELECT vBookNumber ASIEN, n.bookEntried FECHA, IF(n.expenceFkDeductible>0, n.expenceFkDeductible, ti.CuentaIvaSoportado) SUBCTA, s.supplierAccount CONTRA, - SUM(ROUND(ti.PorcentajeIva * it.taxableBase / 100 /* + 0.0001*/, 2)) EURODEBE, + SUM(ROUND(ti.PorcentajeIva * it.taxableBase / 100 /* + 0.0001*/ , 2)) EURODEBE, SUM(it.taxableBase) BASEEURO, GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, vSerialNumber FACTURA, @@ -62088,51 +55247,52 @@ BEGIN n.booked FECREGCON, n.companyFk FROM newInvoiceIn n - JOIN newSupplier s + JOIN newSupplier s JOIN invoiceInTax it ON n.id = it.invoiceInFk JOIN sage.TiposIva ti ON ti.CodigoIva = it.taxTypeSageFk JOIN sage.TiposTransacciones ttr ON ttr.CodigoTransaccion = it.transactionTypeSageFk JOIN invoiceInSerial iis ON iis.code = n.serial JOIN (SELECT * FROM expence e GROUP BY e.id)e ON e.id = it.expenceFk - LEFT JOIN (SELECT eWithheld.id - FROM invoiceInTax hold - JOIN expence eWithheld ON eWithheld.id = hold.expenceFk AND eWithheld.isWithheld - WHERE hold.invoiceInFk = vInvoiceInId LIMIT 1 - ) eWithheld ON TRUE - WHERE it.taxTypeSageFk IS NOT NULL + LEFT JOIN ( + SELECT eWithheld.id + FROM invoiceInTax hold + JOIN expence eWithheld ON eWithheld.id = hold.expenceFk AND eWithheld.isWithheld + WHERE hold.invoiceInFk = vInvoiceInId LIMIT 1 + ) eWithheld ON TRUE + WHERE it.taxTypeSageFk IS NOT NULL AND it.taxTypeSageFk NOT IN (22, 90) GROUP BY ti.PorcentajeIva, e.id; -- Línea iva inversor sujeto pasivo - - INSERT INTO vn2008.XDiario( ASIEN, - FECHA, - SUBCTA, - CONTRA, - EUROHABER, - BASEEURO, - CONCEPTO, - FACTURA, - IVA, - AUXILIAR, - SERIE, - TIPOOPE, - FECHA_EX, - FECHA_OP, - NFACTICK, - FACTURAEX, - L340, - LRECT349, - TIPOCLAVE, - TIPOEXENCI, - TIPONOSUJE, - TIPOFACT, - TIPORECTIF, - TERIDNIF, - TERNIF, - TERNOM, - empresa_id - ) + + INSERT INTO XDiario( ASIEN, + FECHA, + SUBCTA, + CONTRA, + EUROHABER, + BASEEURO, + CONCEPTO, + FACTURA, + IVA, + AUXILIAR, + SERIE, + TIPOOPE, + FECHA_EX, + FECHA_OP, + NFACTICK, + FACTURAEX, + L340, + LRECT349, + TIPOCLAVE, + TIPOEXENCI, + TIPONOSUJE, + TIPOFACT, + TIPORECTIF, + TERIDNIF, + TERNIF, + TERNOM, + empresa_id + ) SELECT vBookNumber ASIEN, n.bookEntried FECHA, ti.CuentaIvaRepercutido SUBCTA, @@ -62160,573 +55320,36 @@ BEGIN s.nif AS TERNIF, s.name AS TERNOM, n.companyFk - FROM newInvoiceIn n - JOIN newSupplier s + FROM newInvoiceIn n + JOIN newSupplier s JOIN invoiceInTax it ON n.id = it.invoiceInFk JOIN sage.TiposIva ti ON ti.CodigoIva = it.taxTypeSageFk JOIN sage.TiposTransacciones ttr ON ttr.CodigoTransaccion = it.transactionTypeSageFk - JOIN invoiceInSerial iis ON iis.code = n.serial + JOIN invoiceInSerial iis ON iis.code = n.serial JOIN (SELECT * FROM expence e GROUP BY e.id)e ON e.id = it.expenceFk WHERE ti.Iva = 'HP DEVENGADO 21 ISP' OR MID(s.account, 4, 1) = '1' GROUP BY ti.PorcentajeIva, e.id; - - -- Actualización del registro original + + -- Actualización del registro original UPDATE invoiceIn ii - JOIN newInvoiceIn ni ON ii.id = ni.id + JOIN newInvoiceIn ni ON ii.id = ni.id SET ii.serialNumber = vSerialNumber, ii.isBooked = TRUE; - + -- Problemas derivados de la precisión en los decimales al calcular los impuestos - UPDATE XDiario - SET EURODEBE = EURODEBE - + UPDATE XDiario + SET EURODEBE = EURODEBE - (SELECT IF(ABS(sub.difference) = 0.01, sub.difference, 0) - FROM(SELECT SUM(IFNULL(ROUND(EURODEBE, 2),0)) - SUM(IFNULL(ROUND(EUROHABER, 2), 0)) difference + FROM( + SELECT SUM(IFNULL(ROUND(EURODEBE, 2),0)) - SUM(IFNULL(ROUND(EUROHABER, 2), 0)) difference FROM XDiario WHERE ASIEN = vBookNumber )sub ) - WHERE ASIEN = vBookNumber + WHERE ASIEN = vBookNumber AND EURODEBE <> 0 ORDER BY id DESC LIMIT 1; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `invoiceInBookingMain__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInBookingMain__`(vInvoiceInId INT) -BEGIN - DECLARE vTotalAmount,vTotalAmountDivisa DECIMAL(10,2); - DECLARE vBookNumber,vSerialNumber INT; - DECLARE vRate DECIMAL(10,4); - DECLARE vSerial VARCHAR(2); - - CALL invoiceInBookingCommon(vInvoiceInId,vSerialNumber); - - SELECT serial - INTO vSerial - FROM newInvoiceIn; - - SELECT SUM(iit.taxableBase * IF(vSerial = 'R' AND tc.`type` <> 'I', 1 +(tc.rate/100),1)), - SUM(iit.foreignValue * IF(vSerial = 'R', 1 +(tc.rate/100),1)), - iit.taxableBase/iit.foreignValue - INTO vTotalAmount, vTotalAmountDivisa, vRate - FROM newInvoiceIn i - JOIN invoiceInTax iit ON iit.invoiceInFk = i.id - JOIN taxCode tc ON iit.taxCodeFk = tc.id; - - CALL vn.ledger_next(vBookNumber); - - -- Apunte del proveedor - - INSERT INTO vn2008.XDiario( - ASIEN, - FECHA, - SUBCTA, - EUROHABER, - CONCEPTO, - CAMBIO, - HABERME, - NFACTICK, - CLAVE, - empresa_id) - SELECT - vBookNumber, - n.bookEntried, - s.supplierAccount, - vTotalAmount EUROHABER, - n.conceptWithSupplier, - vRate, - vTotalAmountDivisa, - n.invoicesCount, - vInvoiceInId, - n.companyFk - FROM newInvoiceIn n - JOIN newSupplier s; - - -- ----------------------------------------------------------- Linea de Gastos - INSERT INTO vn2008.XDiario (ASIEN, - FECHA, - SUBCTA, - CONTRA, - EURODEBE, - EUROHABER, - CONCEPTO, - CAMBIO, - DEBEME, - HABERME, - NFACTICK, - empresa_id - ) - SELECT vBookNumber ASIEN, - n.bookEntried FECHA, - IF(e.isWithheld , LPAD(RIGHT(s.supplierAccount,5),10,iit.expenceFk),iit.expenceFk) SUBCTA, - s.supplierAccount CONTRA, - IF(e.isWithheld AND iit.taxableBase < 0, NULL, ROUND(SUM(iit.taxableBase),2)) EURODEBE, - IF(e.isWithheld AND iit.taxableBase < 0,ROUND(SUM(-iit.taxableBase),2),NULL) EUROHABER, - n.conceptWithSupplier CONCEPTO, - vRate, - IF(e.isWithheld,NULL,ABS(ROUND(SUM(iit.foreignValue),2))) DEBEME, - IF(e.isWithheld,ABS(ROUND(SUM(iit.foreignValue),2)),NULL) HABERME, - n.invoicesCount NFACTICK, - n.companyFk empresa_id - FROM newInvoiceIn n - JOIN newSupplier s - JOIN invoiceInTax iit ON iit.invoiceInFk = n.id - JOIN taxCode tc ON tc.id = iit.taxCodeFk - JOIN expence e ON e.id = iit.expenceFk AND e.taxTypeFk = tc.taxTypeFk - WHERE iit.expenceFk != 5660000002 - GROUP BY iit.expenceFk; - - -- -------------------------------------------------------------------- - -- ------- Lineas de IVA --------------- - -- -------------------------------------------------------------------- - - INSERT INTO vn2008.XDiario( ASIEN, - FECHA, - SUBCTA, - CONTRA, - EURODEBE, - BASEEURO, - CONCEPTO, - FACTURA, - IVA, - AUXILIAR, - SERIE, - TIPOOPE, - FECHA_EX, - FECHA_OP, - NFACTICK, - FACTURAEX, - L340, - LRECT349, - TIPOCLAVE, - TIPOEXENCI, - TIPONOSUJE, - TIPOFACT, - TIPORECTIF, - TERIDNIF, - TERNIF, - TERNOM, - FECREGCON, - empresa_id - ) - SELECT vBookNumber ASIEN, - n.bookEntried FECHA, - tc.code SUBCTA, - s.supplierAccount CONTRA, - SUM(ROUND(tc.rate * it.taxableBase / 100 /* + 0.0001*/, 2)) EURODEBE, - SUM(it.taxableBase) BASEEURO, - GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, - vSerialNumber FACTURA, - tc.rate IVA, - IF(isUeeMember AND eWithheld.id IS NULL,'','*') AUXILIAR, - n.serial SERIE, - tt.TIPOOPE, - n.issued FECHA_EX, - n.operated FECHA_OP, - n.invoicesCount NFACTICK, - n.supplierRef FACTURAEX, - TRUE L340, - (isSameCountry OR NOT isUeeMember) LRECT349, - n.cplusTrascendency472Fk TIPOCLAVE, - n.cplusTaxBreakFk TIPOEXENCI, - n.cplusSubjectOpFk TIPONOSUJE, - n.cplusInvoiceType472Fk TIPOFACT, - n.cplusRectificationTypeFk TIPORECTIF, - iis.cplusTerIdNifFk TERIDNIF, - s.nif AS TERNIF, - s.name AS TERNOM, - n.booked FECREGCON, - n.companyFk - FROM newInvoiceIn n - JOIN newSupplier s - JOIN invoiceInTax it ON n.id = it.invoiceInFk - JOIN taxCode tc ON tc.id = it.taxCodeFk - JOIN taxType tt ON tt.id = tc.taxTypeFk - JOIN invoiceInSerial iis ON iis.code = tt.serial - JOIN expence e ON e.id = it.expenceFk - AND e.taxTypeFk = tc.taxTypeFk - LEFT JOIN (SELECT eWithheld.id - FROM invoiceInTax hold - JOIN expence eWithheld ON eWithheld.id = hold.expenceFk AND eWithheld.isWithheld - WHERE hold.invoiceInFk = vInvoiceInId LIMIT 1 - ) eWithheld ON TRUE - WHERE tc.type != '-' - AND tc.isActive - GROUP BY tc.rate, e.id; - - -- Linea iva inversor sujeto pasivo - - INSERT INTO vn2008.XDiario( ASIEN, - FECHA, - SUBCTA, - CONTRA, - EUROHABER, - BASEEURO, - CONCEPTO, - FACTURA, - IVA, - AUXILIAR, - SERIE, - TIPOOPE, - FECHA_EX, - FECHA_OP, - NFACTICK, - FACTURAEX, - L340, - LRECT349, - TIPOCLAVE, - TIPOEXENCI, - TIPONOSUJE, - TIPOFACT, - TIPORECTIF, - TERIDNIF, - TERNIF, - TERNOM, - empresa_id - ) - - SELECT vBookNumber ASIEN, - n.bookEntried FECHA, - tcLink.code SUBCTA, - s.supplierAccount CONTRA, - SUM(ROUND(tcLink.rate * it.taxableBase / 100,2)) EUROHABER, - ROUND(SUM(it.taxableBase),2) BASEEURO, - GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, - vSerialNumber FACTURA, - tcLink.rate IVA, - '*' AUXILIAR, - n.serial SERIE, - tt.TIPOOPE, - n.issued FECHA_EX, - n.operated FECHA_OP, - n.invoicesCount NFACTICK, - n.supplierRef FACTURAEX, - FALSE L340, - (isSameCountry OR NOT isUeeMember) LRECT349, - 1 TIPOCLAVE, - n.cplusTaxBreakFk TIPOEXENCI, - n.cplusSubjectOpFk TIPONOSUJE, - n.cplusInvoiceType472Fk TIPOFACT, - n.cplusRectificationTypeFk TIPORECTIF, - iis.cplusTerIdNifFk TERIDNIF, - s.nif AS TERNIF, - s.name AS TERNOM, - n.companyFk - FROM newInvoiceIn n - JOIN newSupplier s - JOIN invoiceInTax it ON n.id = it.invoiceInFk - JOIN taxCode tc ON tc.id = it.taxCodeFk - JOIN taxType tt ON tt.id = tc.taxTypeFk - JOIN invoiceInSerial iis ON iis.code = tt.serial - JOIN taxCode tcLink ON tcLink.link = tc.link - AND tc.id != tcLink.id - AND tc.link - JOIN expence e ON e.id = it.expenceFk - AND e.taxTypeFk = tc.taxTypeFk - WHERE tc.isActive - AND (tc.type in('S','I') OR MID(s.supplierAccount,4,1) = '1') - GROUP BY tcLink.rate, e.id; - - -- Actualización del registro original - UPDATE invoiceIn ii - JOIN newInvoiceIn ni ON ii.id = ni.id - SET ii.serialNumber = vSerialNumber, - ii.isBooked = TRUE; - - -- Problemas derivados de la precisión en los decimales al calcular los impuestos - UPDATE XDiario - SET EURODEBE = EURODEBE - - (SELECT IF(ABS(sub.difference) = 0.01, sub.difference, 0) - FROM(SELECT SUM(IFNULL(ROUND(EURODEBE, 2),0)) - SUM(IFNULL(ROUND(EUROHABER, 2), 0)) difference - FROM XDiario - WHERE ASIEN = vBookNumber - )sub - ) - WHERE ASIEN = vBookNumber - AND EURODEBE <> 0 - ORDER BY id DESC - LIMIT 1; - - /*UPDATE XDiario - SET EURODEBE = EURODEBE - - (SELECT SUM(IFNULL(ROUND(EURODEBE,2),0))- SUM(IFNULL(ROUND(EUROHABER,2),0)) difference - FROM XDiario - WHERE ASIEN = vBookNumber - HAVING ABS(difference) = 0.01) - WHERE ASIEN = vBookNumber - AND EURODEBE <> 0 - ORDER BY id DESC - LIMIT 1;*/ - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `invoiceInBookingMain___` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInBookingMain___`(vInvoiceInId INT) -BEGIN - DECLARE vTotalAmount,vTotalAmountDivisa DECIMAL(10,2); - DECLARE vBookNumber,vSerialNumber INT; - DECLARE vRate DECIMAL(10,4); - DECLARE vSerial VARCHAR(2); - - CALL invoiceInBookingCommon(vInvoiceInId,vSerialNumber); - - SELECT serial - INTO vSerial - FROM newInvoiceIn; - - SELECT SUM(iit.taxableBase * IF(vSerial = 'R' AND tc.`type` <> 'I', 1 +(tc.rate/100),1)), - SUM(iit.foreignValue * IF(vSerial = 'R', 1 +(tc.rate/100),1)), - iit.taxableBase/iit.foreignValue - INTO vTotalAmount, vTotalAmountDivisa, vRate - FROM newInvoiceIn i - JOIN invoiceInTax iit ON iit.invoiceInFk = i.id - JOIN taxCode tc ON iit.taxCodeFk = tc.id; - - CALL vn.ledger_next(vBookNumber); - - -- Apunte del proveedor - - INSERT INTO vn2008.XDiario( - ASIEN, - FECHA, - SUBCTA, - EUROHABER, - CONCEPTO, - CAMBIO, - HABERME, - NFACTICK, - CLAVE, - empresa_id) - SELECT - vBookNumber, - n.bookEntried, - s.supplierAccount, - vTotalAmount EUROHABER, - n.conceptWithSupplier, - vRate, - vTotalAmountDivisa, - n.invoicesCount, - vInvoiceInId, - n.companyFk - FROM newInvoiceIn n - JOIN newSupplier s; - - -- ----------------------------------------------------------- Linea de Gastos - INSERT INTO vn2008.XDiario (ASIEN, - FECHA, - SUBCTA, - CONTRA, - EURODEBE, - EUROHABER, - CONCEPTO, - CAMBIO, - DEBEME, - HABERME, - NFACTICK, - empresa_id - ) - SELECT vBookNumber ASIEN, - n.bookEntried FECHA, - IF(e.isWithheld , LPAD(RIGHT(s.supplierAccount,5),10,iit.expenceFk),iit.expenceFk) SUBCTA, - s.supplierAccount CONTRA, - IF(e.isWithheld AND iit.taxableBase < 0, NULL, ROUND(SUM(iit.taxableBase),2)) EURODEBE, - IF(e.isWithheld AND iit.taxableBase < 0,ROUND(SUM(-iit.taxableBase),2),NULL) EUROHABER, - n.conceptWithSupplier CONCEPTO, - vRate, - IF(e.isWithheld,NULL,ABS(ROUND(SUM(iit.foreignValue),2))) DEBEME, - IF(e.isWithheld,ABS(ROUND(SUM(iit.foreignValue),2)),NULL) HABERME, - n.invoicesCount NFACTICK, - n.companyFk empresa_id - FROM newInvoiceIn n - JOIN newSupplier s - JOIN invoiceInTax iit ON iit.invoiceInFk = n.id - JOIN taxCode tc ON tc.id = iit.taxCodeFk - JOIN expence e ON e.id = iit.expenceFk AND e.taxTypeFk = tc.taxTypeFk - WHERE iit.expenceFk != 5660000002 - GROUP BY iit.expenceFk; - - -- -------------------------------------------------------------------- - -- ------- Lineas de IVA --------------- - -- -------------------------------------------------------------------- - - INSERT INTO vn2008.XDiario( ASIEN, - FECHA, - SUBCTA, - CONTRA, - EURODEBE, - BASEEURO, - CONCEPTO, - FACTURA, - IVA, - AUXILIAR, - SERIE, - TIPOOPE, - FECHA_EX, - FECHA_OP, - NFACTICK, - FACTURAEX, - L340, - LRECT349, - TIPOCLAVE, - TIPOEXENCI, - TIPONOSUJE, - TIPOFACT, - TIPORECTIF, - TERIDNIF, - TERNIF, - TERNOM, - FECREGCON, - empresa_id - ) - SELECT vBookNumber ASIEN, - n.bookEntried FECHA, - tc.code SUBCTA, - s.supplierAccount CONTRA, - SUM(ROUND(tc.rate * it.taxableBase / 100 /* + 0.0001*/, 2)) EURODEBE, - SUM(it.taxableBase) BASEEURO, - GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, - vSerialNumber FACTURA, - tc.rate IVA, - IF(isUeeMember AND eWithheld.id IS NULL,'','*') AUXILIAR, - n.serial SERIE, - tt.TIPOOPE, - n.issued FECHA_EX, - n.operated FECHA_OP, - n.invoicesCount NFACTICK, - n.supplierRef FACTURAEX, - TRUE L340, - (isSameCountry OR NOT isUeeMember) LRECT349, - n.cplusTrascendency472Fk TIPOCLAVE, - n.cplusTaxBreakFk TIPOEXENCI, - n.cplusSubjectOpFk TIPONOSUJE, - n.cplusInvoiceType472Fk TIPOFACT, - n.cplusRectificationTypeFk TIPORECTIF, - iis.cplusTerIdNifFk TERIDNIF, - s.nif AS TERNIF, - s.name AS TERNOM, - n.booked FECREGCON, - n.companyFk - FROM newInvoiceIn n - JOIN newSupplier s - JOIN invoiceInTax it ON n.id = it.invoiceInFk - JOIN taxCode tc ON tc.id = it.taxCodeFk - JOIN taxType tt ON tt.id = tc.taxTypeFk - JOIN invoiceInSerial iis ON iis.code = tt.serial - JOIN expence e ON e.id = it.expenceFk - AND e.taxTypeFk = tc.taxTypeFk - LEFT JOIN (SELECT eWithheld.id - FROM invoiceInTax hold - JOIN expence eWithheld ON eWithheld.id = hold.expenceFk AND eWithheld.isWithheld - WHERE hold.invoiceInFk = vInvoiceInId LIMIT 1 - ) eWithheld ON TRUE - WHERE tc.type != '-' - AND tc.isActive - GROUP BY tc.rate, e.id; - - -- Linea iva inversor sujeto pasivo - - INSERT INTO vn2008.XDiario( ASIEN, - FECHA, - SUBCTA, - CONTRA, - EUROHABER, - BASEEURO, - CONCEPTO, - FACTURA, - IVA, - AUXILIAR, - SERIE, - TIPOOPE, - FECHA_EX, - FECHA_OP, - NFACTICK, - FACTURAEX, - L340, - LRECT349, - TIPOCLAVE, - TIPOEXENCI, - TIPONOSUJE, - TIPOFACT, - TIPORECTIF, - TERIDNIF, - TERNIF, - TERNOM, - empresa_id - ) - - SELECT vBookNumber ASIEN, - n.bookEntried FECHA, - tcLink.code SUBCTA, - s.supplierAccount CONTRA, - SUM(ROUND(tcLink.rate * it.taxableBase / 100,2)) EUROHABER, - ROUND(SUM(it.taxableBase),2) BASEEURO, - GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, - vSerialNumber FACTURA, - tcLink.rate IVA, - '*' AUXILIAR, - n.serial SERIE, - tt.TIPOOPE, - n.issued FECHA_EX, - n.operated FECHA_OP, - n.invoicesCount NFACTICK, - n.supplierRef FACTURAEX, - FALSE L340, - (isSameCountry OR NOT isUeeMember) LRECT349, - 1 TIPOCLAVE, - n.cplusTaxBreakFk TIPOEXENCI, - n.cplusSubjectOpFk TIPONOSUJE, - n.cplusInvoiceType472Fk TIPOFACT, - n.cplusRectificationTypeFk TIPORECTIF, - iis.cplusTerIdNifFk TERIDNIF, - s.nif AS TERNIF, - s.name AS TERNOM, - n.companyFk - FROM newInvoiceIn n - JOIN newSupplier s - JOIN invoiceInTax it ON n.id = it.invoiceInFk - JOIN taxCode tc ON tc.id = it.taxCodeFk - JOIN taxType tt ON tt.id = tc.taxTypeFk - JOIN invoiceInSerial iis ON iis.code = tt.serial - JOIN taxCode tcLink ON tcLink.link = tc.link - AND tc.id != tcLink.id - AND tc.link - JOIN expence e ON e.id = it.expenceFk - AND e.taxTypeFk = tc.taxTypeFk - WHERE tc.isActive - AND (tc.type in('S','I') OR MID(s.supplierAccount,4,1) = '1') - GROUP BY tcLink.rate, e.id; - - -- Actualización del registro original - UPDATE invoiceIn ii - JOIN newInvoiceIn ni ON ii.id = ni.id - SET ii.serialNumber = vSerialNumber, - ii.isBooked = TRUE; END ;; DELIMITER ; @@ -62744,98 +55367,46 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInDueDay_calculate`(vInvoiceInFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceInDueDay_calculate`(vInvoiceInFk INT) BEGIN - IF !(SELECT COUNT(*) - FROM invoiceInDueDay iid - WHERE iid.invoiceInFk = vInvoiceInFk) THEN + IF !(SELECT COUNT(*) + FROM invoiceInDueDay iid + WHERE iid.invoiceInFk = vInvoiceInFk) THEN - INSERT INTO invoiceInDueDay (invoiceInFk, - dueDated, - amount, - foreignValue) - SELECT vInvoiceInFk, - IF(payDay, - IF(vn2008.next_venc(issued, detalle, payDay) < DATE_ADD(created, INTERVAL 2 DAY), - DATE_ADD(created, INTERVAL 2 DAY), - vn2008.next_venc(issued, detalle, payDay)), - GREATEST(TIMESTAMPADD(DAY, 2, created), TIMESTAMPADD(DAY, detalle, issued))), - IF((@cont:=@cont + 1) < cont, TRUNCATE(venc / cont, 2),venc-(TRUNCATE(venc / cont, 2) * (cont - 1))), - IF(@cont < cont, TRUNCATE(foreignValue / cont, 2), foreignValue - (TRUNCATE(foreignValue / cont, 2) * (cont - 1))) - FROM ( SELECT SUM((1 + (IFNULL(ti.PorcentajeIva, 0) / 100)*(s.countryFk = s2.countryFk)) * iit.taxableBase)/COUNT(DISTINCT(pdd.detalle)) venc, - SUM(iit.foreignValue)/COUNT(DISTINCT(pdd.detalle)) foreignValue, - s.payDemFk, - ii.companyFk, - COUNT(DISTINCT(pdd.detalle)) cont, - s.payDay, - ii.issued, - DATE(ii.created) created - FROM invoiceIn ii - JOIN invoiceInTax iit ON iit.invoiceInFk = ii.id - LEFT JOIN sage.TiposIva AS ti ON ti.CodigoIva= iit.taxTypeSageFk - JOIN supplier s ON s.id = ii.supplierFk - JOIN supplier s2 ON s2.id = ii.companyFk - JOIN vn2008.pay_dem_det pdd ON pdd.id = s.payDemFk - WHERE ii.id = vInvoiceInFk - GROUP BY ii.id - ) sub - JOIN (SELECT @cont:=0) sub2 - JOIN vn2008.pay_dem_det pdd ON pdd.id = sub.payDemFk - GROUP BY detalle; - END IF; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `invoiceInDueDay_calculate__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInDueDay_calculate__`(vInvoiceInFk INT) -BEGIN - - IF !(SELECT COUNT(*) - FROM invoiceInDueDay iid - WHERE iid.invoiceInFk = vInvoiceInFk) THEN - - INSERT INTO invoiceInDueDay (invoiceInFk, - dueDated, - amount, - foreignValue) - SELECT vInvoiceInFk, - IF(payDay, vn2008.next_venc(issued, detalle, payDay),TIMESTAMPADD(DAY, GREATEST(detalle, 2), issued)), - IF((@cont:=@cont + 1) < cont, TRUNCATE(venc / cont, 2),venc-(TRUNCATE(venc / cont, 2) * (cont - 1))), - IF(@cont < cont, TRUNCATE(foreignValue / cont, 2), foreignValue - (TRUNCATE(foreignValue / cont, 2) * (cont - 1))) - FROM ( SELECT SUM((1 + (IFNULL(ti.PorcentajeIva, 0) / 100)*(s.countryFk = s2.countryFk)) * iit.taxableBase)/COUNT(DISTINCT(pdd.detalle)) venc, - SUM(iit.foreignValue)/COUNT(DISTINCT(pdd.detalle)) foreignValue, - s.payDemFk, - ii.companyFk, - COUNT(DISTINCT(pdd.detalle)) cont, - s.payDay, - ii.issued - FROM invoiceIn ii - JOIN invoiceInTax iit ON iit.invoiceInFk = ii.id - LEFT JOIN sage.TiposIva AS ti ON ti.CodigoIva= iit.taxTypeSageFk - JOIN supplier s ON s.id = ii.supplierFk - JOIN supplier s2 ON s2.id = ii.companyFk - JOIN vn2008.pay_dem_det pdd ON pdd.id = s.payDemFk - WHERE ii.id = vInvoiceInFk - GROUP BY ii.id - ) sub - JOIN (SELECT @cont:=0) sub2 - JOIN vn2008.pay_dem_det pdd ON pdd.id = sub.payDemFk - GROUP BY detalle; - END IF; + INSERT INTO invoiceInDueDay (invoiceInFk, + dueDated, + amount, + foreignValue) + SELECT vInvoiceInFk, + IF(payDay, + IF(vn.getNextDueDate(issued, detail, payDay) < DATE_ADD(created, INTERVAL 2 DAY), + DATE_ADD(created, INTERVAL 2 DAY), + vn.getNextDueDate(issued, detail, payDay)), + GREATEST(TIMESTAMPADD(DAY, 2, created), TIMESTAMPADD(DAY, detail, issued))), + IF((@cont:=@cont + 1) < cont, TRUNCATE(venc / cont, 2),venc-(TRUNCATE(venc / cont, 2) * (cont - 1))), + IF(@cont < cont, TRUNCATE(foreignValue / cont, 2), foreignValue - (TRUNCATE(foreignValue / cont, 2) * (cont - 1))) + FROM ( SELECT SUM((1 + (IFNULL(ti.PorcentajeIva, 0) / 100)*(s.countryFk = s2.countryFk)) * iit.taxableBase)/COUNT(DISTINCT(pdd.detail)) venc, + SUM(iit.foreignValue)/COUNT(DISTINCT(pdd.detail)) foreignValue, + s.payDemFk, + ii.companyFk, + COUNT(DISTINCT(pdd.detail)) cont, + s.payDay, + ii.issued, + DATE(ii.created) created + FROM invoiceIn ii + JOIN invoiceInTax iit ON iit.invoiceInFk = ii.id + LEFT JOIN sage.TiposIva AS ti ON ti.CodigoIva= iit.taxTypeSageFk + JOIN supplier s ON s.id = ii.supplierFk + JOIN supplier s2 ON s2.id = ii.companyFk + JOIN vn.payDemDetail pdd ON pdd.id = s.payDemFk + WHERE ii.id = vInvoiceInFk + GROUP BY ii.id + ) sub + JOIN (SELECT @cont:=0) sub2 + JOIN vn.payDemDetail pdd ON pdd.id = sub.payDemFk + GROUP BY detail; + END IF; END ;; DELIMITER ; @@ -62849,18 +55420,18 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInDueDay_recalc`(vInvoiceInFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceInDueDay_recalc`(vInvoiceInFk INT) BEGIN DELETE FROM invoiceInDueDay WHERE invoiceInFk = vInvoiceInFk; - + CALL invoiceInDueDay_calculate(vInvoiceInFk); - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -62871,13 +55442,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInTaxMakeByDua`(vDuaFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceInTaxMakeByDua`(vDuaFk INT) BEGIN DECLARE done BOOL DEFAULT FALSE; @@ -62899,7 +55470,7 @@ BEGIN CALL vn2008.recibidaIvaInsert(vInvoiceInFk); CALL vn2008.recibidaVencimientoReplace(vInvoiceInFk); - + FETCH rs INTO vInvoiceInFk; END WHILE; @@ -62918,11 +55489,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInTax_getFromDua`(vDuaFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceInTax_getFromDua`(vDuaFk INT) BEGIN DECLARE done BOOL DEFAULT FALSE; @@ -62944,7 +55515,7 @@ BEGIN CALL invoiceInTax_getFromEntries(vInvoiceInFk); CALL invoiceInDueDay_calculate(vInvoiceInFk); - + FETCH rs INTO vInvoiceInFk; END WHILE; @@ -62963,11 +55534,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInTax_getFromEntries`(IN vId INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceInTax_getFromEntries`(IN vId INT) BEGIN DECLARE vRate DOUBLE DEFAULT 1; DECLARE vDated DATE; @@ -62976,7 +55547,7 @@ BEGIN SELECT MAX(rr.dated) INTO vDated FROM referenceRate rr JOIN invoiceIn ii ON ii.id = vId - WHERE rr.dated <= ii.issued + WHERE rr.dated <= ii.issued AND rr.currencyFk = ii.currencyFk ; IF vDated THEN @@ -62985,13 +55556,13 @@ BEGIN WHERE dated = vDated; END IF; - SELECT id INTO vExpenceFk - FROM vn.expence - WHERE `name` = 'Adquisición mercancia Extracomunitaria' - GROUP BY id + SELECT id INTO vExpenceFk + FROM vn.expence + WHERE `name` = 'Adquisición mercancia Extracomunitaria' + GROUP BY id LIMIT 1; - - DELETE FROM invoiceInTax + + DELETE FROM invoiceInTax WHERE invoiceInFk = vId; INSERT INTO invoiceInTax(invoiceInFk, taxableBase, expenceFk, foreignValue, taxTypeSageFk, transactionTypeSageFk) @@ -63005,9 +55576,9 @@ BEGIN JOIN entry e ON e.invoiceInFk = ii.id JOIN supplier s ON s.id = e.supplierFk JOIN buy b ON b.entryFk = e.id - LEFT JOIN referenceRate rr ON rr.currencyFk = ii.currencyFk + LEFT JOIN referenceRate rr ON rr.currencyFk = ii.currencyFk AND rr.dated = ii.issued - WHERE ii.id = vId + WHERE ii.id = vId HAVING taxableBase IS NOT NULL; END ;; DELIMITER ; @@ -63019,13 +55590,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutAgain`(IN vInvoiceRef VARCHAR(15), vTaxArea VARCHAR(25)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceOutAgain`(IN vInvoiceRef VARCHAR(15), vTaxArea VARCHAR(25)) BEGIN /* Para tickets ya facturados, vuelve a repetir el proceso de facturación. @@ -63038,15 +55609,15 @@ BEGIN DECLARE vCountry INT; DECLARE vTaxArea VARCHAR(15); DECLARE vSpainCountryCode INT DEFAULT 1; - + SELECT id INTO vInvoiceFk - FROM invoiceOut + FROM invoiceOut WHERE ref = vInvoiceRef; - - UPDATE invoiceOut + + UPDATE invoiceOut SET hasPdf = 0 WHERE id = vInvoiceFk; - + SELECT s.countryFk INTO vCountry FROM supplier s JOIN invoiceOut io ON io.companyFk = s.id @@ -63055,30 +55626,30 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS ticketToInvoice; CREATE TEMPORARY TABLE ticketToInvoice - SELECT id - FROM ticket + SELECT id + FROM ticket WHERE refFk = vInvoiceRef; CALL invoiceExpenceMake(vInvoiceFk); - + CALL invoiceTaxMake(vInvoiceFk,vTaxArea); - + UPDATE invoiceOut io JOIN ( SELECT SUM(amount) AS total - FROM invoiceOutExpence + FROM invoiceOutExpence WHERE invoiceOutFk = vInvoiceFk ) base JOIN ( SELECT SUM(vat) AS total - FROM invoiceOutTax + FROM invoiceOutTax WHERE invoiceOutFk = vInvoiceFk ) vat SET io.amount = base.total + vat.total WHERE io.id = vInvoiceFk; - + CALL vn.invoiceOutBooking(vInvoiceFk); - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -63091,11 +55662,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutBooking`(IN vInvoice INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceOutBooking`(IN vInvoice INT) BEGIN /* Asienta la factura emitida * @@ -63123,7 +55694,7 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS rs; CREATE TEMPORARY TABLE rs - SELECT + SELECT c.accountingAccount AS clientBookingAccount, io.amount as totalAmount, CONCAT('n/fra ', io.ref) as simpleConcept, @@ -63157,19 +55728,19 @@ BEGIN WHERE io.id = vInvoice; CALL vn.ledger_next(vBookNumber); - + -- Linea del cliente INSERT INTO XDiario( ASIEN, FECHA, - SUBCTA, + SUBCTA, EURODEBE, - CONCEPTO, + CONCEPTO, FECHA_EX, FECHA_OP, empresa_id ) - SELECT + SELECT vBookNumber AS ASIEN, rs.FECHA, rs.clientBookingAccount AS SUBCTA, @@ -63185,14 +55756,14 @@ BEGIN ASIEN, FECHA, SUBCTA, - CONTRA, + CONTRA, EUROHABER, - CONCEPTO, + CONCEPTO, FECHA_EX, FECHA_OP, empresa_id ) - SELECT + SELECT vBookNumber AS ASIEN, rs.FECHA, ioe.expenceFk AS SUBCTA, @@ -63206,8 +55777,8 @@ BEGIN JOIN invoiceOutExpence ioe WHERE ioe.invoiceOutFk = vInvoice; - SELECT GROUP_CONCAT(`name` SEPARATOR ',') - INTO vExpenceConcept + SELECT GROUP_CONCAT(`name` SEPARATOR ',') + INTO vExpenceConcept FROM expence e JOIN invoiceOutExpence ioe ON ioe.expenceFk = e.id WHERE ioe.invoiceOutFk = vInvoice; @@ -63217,7 +55788,7 @@ BEGIN ASIEN, FECHA, SUBCTA, - CONTRA, + CONTRA, EUROHABER, BASEEURO, CONCEPTO, @@ -63245,7 +55816,7 @@ BEGIN TIPORECTIF, empresa_id ) - SELECT + SELECT vBookNumber AS ASIEN, rs.FECHA, iot.pgcFk AS SUBCTA, @@ -63265,11 +55836,11 @@ BEGIN rs.FECHA_OP, rs.FECHA_EX, rs.TIPOOPE, - rs.NFACTICK, + rs.NFACTICK, rs.TERIDNIF, rs.TERNIF, rs.TERNOM, - pgc.mod340 AS L340, + pgc.mod340 AS L340, pgc.cplusTrascendency477Fk AS TIPOCLAVE, pgc.cplusTaxBreakFk as TIPOEXENCI, rs.TIPONOSUJE, @@ -63277,15 +55848,15 @@ BEGIN rs.TIPORECTIF, rs.companyFk AS empresa_id FROM rs - JOIN invoiceOutTax iot + JOIN invoiceOutTax iot JOIN pgc ON pgc.code = iot.pgcFk LEFT JOIN pgcEqu pe ON pe.vatFk = iot.pgcFk -- --------------- Comprueba si la linea es de iva con rec.equiv. asociado - LEFT JOIN pgc pgce ON pgce.code = pe.equFk + LEFT JOIN pgc pgce ON pgce.code = pe.equFk LEFT JOIN pgcEqu pe2 ON pe2.equFk = iot.pgcFk -- --------------- Comprueba si la linea es de rec.equiv. WHERE iot.invoiceOutFk = vInvoice; - + UPDATE invoiceOut - SET booked = CURDATE() + SET booked = util.VN_CURDATE() WHERE id = vInvoice; END ;; DELIMITER ; @@ -63297,13 +55868,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutBookingRange`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceOutBookingRange`() BEGIN /* Reasentar facturas @@ -63315,7 +55886,7 @@ BEGIN DECLARE done BOOL DEFAULT FALSE; - DECLARE rs CURSOR FOR + DECLARE rs CURSOR FOR SELECT io.id FROM invoiceOut io WHERE RIGHT(ref,7) BETWEEN 1724215 AND 1724224 @@ -63330,15 +55901,15 @@ BEGIN WHILE NOT done DO CALL invoiceOutBooking(vInvoice); - + FETCH rs INTO vInvoice ; - + SET vContador = vContador + 1; - + IF vContador MOD 50 = 0 THEN - + SELECT CONCAT(vContador, ' de momento') AS FACTURAS_ASENTADAS; - + END IF; END WHILE; @@ -63359,23 +55930,23 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutDelete`(vRef VARCHAR(15)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceOutDelete`(vRef VARCHAR(15)) BEGIN DECLARE vAsien INTEGER; DECLARE vSendMail BOOL; DECLARE vBody TEXT; - + SELECT ASIEN INTO vAsien - FROM XDiario + FROM XDiario WHERE SERIE = SUBSTRING(vRef, 1, 1) AND FACTURA = SUBSTRING(vRef, 2, LENGTH(vRef)-1) LIMIT 1; - SELECT IF(enlazado OR enlazadoSage, TRUE, FALSE), + SELECT IF(enlazado OR enlazadoSage, TRUE, FALSE), CONCAT( ' @@ -63384,7 +55955,7 @@ BEGIN - ', + ', GROUP_CONCAT( CONCAT(' @@ -63397,14 +55968,14 @@ BEGIN ) SEPARATOR ' ' ), '
FECHACONCEPTO EURODEBE EUROHABER
', IFNULL(FECHA,''), '
' - ) + ) INTO vSendMail, vBody - FROM XDiario + FROM XDiario WHERE ASIEN = vAsien; - DELETE FROM XDiario + DELETE FROM XDiario WHERE ASIEN = vAsien; - + IF vSendMail THEN CALL mail_insert( 'administracion@verdnatura.es', @@ -63422,130 +55993,10 @@ BEGIN SET refFk = NULL WHERE refFk = vRef; - DELETE + DELETE FROM invoiceOut WHERE ref = vRef; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `invoiceOutDelete__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutDelete__`(vRef VARCHAR(15)) -BEGIN - - UPDATE ticket - SET refFk = NULL - WHERE refFk = vRef; - - DELETE - FROM invoiceOut - WHERE ref = vRef; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `invoiceOutFix_BI_RE_IVA__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutFix_BI_RE_IVA__`() -BEGIN - -DECLARE done BOOL DEFAULT FALSE; -DECLARE vInvoice INT; - -DECLARE rs CURSOR FOR - SELECT factura_id - FROM vn2008.Facturas - WHERE Importe != BI7 + BI16 + RE4 + RE1 + IVA7 + IVA16 - AND Fecha >= '2017-07-01'; - -DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - -OPEN rs; - -FETCH rs INTO vInvoice; - -SELECT vInvoice, done; - -WHILE NOT done DO - - UPDATE invoiceOut io - JOIN ( - SELECT SUM(amount) AS total - FROM invoiceOutExpence - WHERE invoiceOutFk = vInvoice - ) base - JOIN ( - SELECT SUM(vat) AS total - FROM invoiceOutTax - WHERE invoiceOutFk = vInvoice - ) vat - SET io.amount = base.total + vat.total - WHERE io.id = vInvoice; - - UPDATE vn2008.Facturas - SET BI16 = 0, - BI7 = 0, - RE1 = 0, - RE4 = 0, - IVA7 = 0, - IVA16 = 0 - WHERE factura_id = vInvoice; - - UPDATE vn2008.Facturas f - JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id - SET f.BI16 = iot.taxableBase, f.IVA16 = iot.vat - WHERE f.factura_id = vInvoice - AND iot.pgcFk IN ('4770000021' ,'4770000215', '4770000002','4771000000','4770000000','4770000020'); - - UPDATE vn2008.Facturas f - JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id - SET f.RE4 = iot.vat - WHERE f.factura_id = vInvoice - AND iot.pgcFk = '4770000521'; - - UPDATE vn2008.Facturas f - JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id - SET f.BI7 = iot.taxableBase, f.IVA7 = iot.vat - WHERE f.factura_id = vInvoice - AND iot.pgcFk IN ('4770000010' ,'4770000101'); - - UPDATE vn2008.Facturas f - JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id - SET f.RE1 = iot.vat - WHERE f.factura_id = vInvoice - AND iot.pgcFk = '4770000110'; - -FETCH rs INTO vInvoice; - -END WHILE; - - -CLOSE rs; - - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -63556,16 +56007,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutListByCompany`(vCompany INT, vStarted DATE, vEnded DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceOutListByCompany`(vCompany INT, vStarted DATE, vEnded DATE) BEGIN -SELECT +SELECT c.socialName as RazonSocial, c.fi as NIF, io.ref as Factura, @@ -63577,7 +56028,7 @@ SELECT pgc.rate as Tipo, iot.vat as Cuota, pgc.name as Concepto - + FROM vn.invoiceOut io JOIN vn.invoiceOutTax iot ON iot.invoiceOutFk = io.id JOIN vn.client c ON c.id = io.clientFk @@ -63596,13 +56047,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutTaxAndExpence`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceOutTaxAndExpence`() BEGIN /* Para tickets ya facturados, vuelve a repetir el proceso de facturación. @@ -63618,10 +56069,10 @@ BEGIN DECLARE done BOOL DEFAULT FALSE; - DECLARE rs CURSOR FOR + DECLARE rs CURSOR FOR SELECT id,ref FROM invoiceOut io - + WHERE issued >= '2017-07-01' AND companyFk = 1381 AND io.amount IS NULL @@ -63636,37 +56087,37 @@ BEGIN WHILE NOT done DO - SELECT s.countryFk + SELECT s.countryFk INTO vCountry FROM supplier s JOIN invoiceOut io ON io.companyFk = s.id WHERE io.id = vInvoice; - + SELECT IF(c.isEqualizated AND i.taxAreaFk = 'NATIONAL','EQU',i.taxAreaFk) INTO vTaxArea FROM invoiceOutSerial i - JOIN invoiceOut io ON io.serial = i.code + JOIN invoiceOut io ON io.serial = i.code JOIN client c ON c.id = io.clientFk WHERE io.id = vInvoice; - + DROP TEMPORARY TABLE IF EXISTS ticketToInvoice; CREATE TEMPORARY TABLE ticketToInvoice - SELECT id - FROM ticket + SELECT id + FROM ticket WHERE refFk = vInvoiceRef; CALL invoiceExpenceMake(vInvoice); CALL invoiceTaxMake(vInvoice,vCountry,vTaxArea); - + FETCH rs INTO vInvoice ,vInvoiceRef; - + SET vContador = vContador + 1; - + IF vContador MOD 50 = 0 THEN - + SELECT CONCAT(vContador, ' de momento') AS FACTURAS_ASENTADAS; - + END IF; END WHILE; @@ -63685,69 +56136,70 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOut_new`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceOut_new`( vSerial VARCHAR(255), vInvoiceDate DATETIME, - vTaxArea VARCHAR(25), + vTaxArea VARCHAR(25), OUT vNewInvoiceId INT) BEGIN - -/* Creación de facturas emitidas. -* requiere previamente tabla ticketToInvoice(id). -* -* @param vSerial serie a la cual se hace la factura -* @param vInvoiceDate fecha de la factura -* @param vTaxArea tipo de iva en relacion a la empresa y al cliente -* @param vNewInvoiceId id de la factura que se acaba de generar -* -* @return vNewInvoiceId -*/ - - DECLARE vSpainCountryCode INT DEFAULT 1; +/** + * Creación de facturas emitidas. + * requiere previamente tabla ticketToInvoice(id). + * + * @param vSerial serie a la cual se hace la factura + * @param vInvoiceDate fecha de la factura + * @param vTaxArea tipo de iva en relacion a la empresa y al cliente + * @param vNewInvoiceId id de la factura que se acaba de generar + * @return vNewInvoiceId + */ + DECLARE vSpainCountryCode INT DEFAULT 1; DECLARE vIsAnySaleToInvoice BOOL; DECLARE vIsAnyServiceToInvoice BOOL; DECLARE vNewRef VARCHAR(255); DECLARE vWorker INT DEFAULT account.myUser_getId(); - DECLARE vCompany INT; + DECLARE vCompany INT; + DECLARE vSupplier INT; DECLARE vClient INT; DECLARE vCplusStandardInvoiceTypeFk INT DEFAULT 1; - DECLARE vCplusCorrectingInvoiceTypeFk INT DEFAULT 6; + DECLARE vCplusCorrectingInvoiceTypeFk INT DEFAULT 6; DECLARE vCplusSimplifiedInvoiceTypeFk INT DEFAULT 2; - DECLARE vCorrectingSerial VARCHAR(1) DEFAULT 'R'; + DECLARE vCorrectingSerial VARCHAR(1) DEFAULT 'R'; DECLARE vSimplifiedSerial VARCHAR(1) DEFAULT 'S'; - - SET vInvoiceDate = IFNULL(vInvoiceDate,CURDATE()); + DECLARE vNewInvoiceInId INT; + DECLARE vIsInterCompany BOOL; + + SET vInvoiceDate = IFNULL(vInvoiceDate,util.VN_CURDATE()); SELECT t.clientFk, t.companyFk INTO vClient, vCompany FROM ticketToInvoice tt JOIN ticket t ON t.id = tt.id - LIMIT 1; + LIMIT 1; - -- Eliminem de ticketToInvoice els tickets que no han de ser facturats - DELETE ti.* - FROM ticketToInvoice ti - JOIN ticket t ON t.id = ti.id - JOIN client c ON c.id = t.clientFk - WHERE YEAR(t.shipped) < 2001 + -- Eliminem de ticketToInvoice els tickets que no han de ser facturats + DELETE ti.* + FROM ticketToInvoice ti + JOIN ticket t ON t.id = ti.id + JOIN client c ON c.id = t.clientFk + WHERE YEAR(t.shipped) < 2001 OR c.isTaxDataChecked = FALSE - OR t.isDeleted - OR c.hasToInvoice = FALSE; + OR t.isDeleted + OR c.hasToInvoice = FALSE; - SELECT SUM(s.quantity * s.price * (100 - s.discount)/100), ts.id - INTO vIsAnySaleToInvoice, vIsAnyServiceToInvoice - FROM ticketToInvoice t - LEFT JOIN sale s ON s.ticketFk = t.id - LEFT JOIN ticketService ts ON ts.ticketFk = t.id; + SELECT SUM(s.quantity * s.price * (100 - s.discount)/100), ts.id + INTO vIsAnySaleToInvoice, vIsAnyServiceToInvoice + FROM ticketToInvoice t + LEFT JOIN sale s ON s.ticketFk = t.id + LEFT JOIN ticketService ts ON ts.ticketFk = t.id; - IF (vIsAnySaleToInvoice OR vIsAnyServiceToInvoice) - AND (vCorrectingSerial = vSerial OR NOT hasAnyNegativeBase()) + IF (vIsAnySaleToInvoice OR vIsAnyServiceToInvoice) + AND (vCorrectingSerial = vSerial OR NOT hasAnyNegativeBase()) THEN -- el trigger añade el siguiente Id_Factura correspondiente a la vSerial @@ -63759,71 +56211,151 @@ BEGIN clientFk, dued, companyFk, - cplusInvoiceType477Fk + cplusInvoiceType477Fk ) - SELECT + SELECT 1, vSerial, vInvoiceDate, vClient, getDueDate(vInvoiceDate, dueDay), vCompany, - IF(vSerial = vCorrectingSerial, - vCplusCorrectingInvoiceTypeFk, + IF(vSerial = vCorrectingSerial, + vCplusCorrectingInvoiceTypeFk, IF(vSerial = vSimplifiedSerial, vCplusSimplifiedInvoiceTypeFk, vCplusStandardInvoiceTypeFk)) - FROM client - WHERE id = vClient; + FROM client + WHERE id = vClient; SET vNewInvoiceId = LAST_INSERT_ID(); - + SELECT `ref` - INTO vNewRef + INTO vNewRef FROM invoiceOut WHERE id = vNewInvoiceId; UPDATE ticket t - JOIN ticketToInvoice ti ON ti.id = t.id - SET t.refFk = vNewRef; + JOIN ticketToInvoice ti ON ti.id = t.id + SET t.refFk = vNewRef; DROP TEMPORARY TABLE IF EXISTS tmp.updateInter; - CREATE TEMPORARY TABLE tmp.updateInter ENGINE = MEMORY - SELECT s.id,ti.id ticket_id,vWorker Id_Trabajador + CREATE TEMPORARY TABLE tmp.updateInter ENGINE = MEMORY + SELECT s.id,ti.id ticket_id,vWorker Id_Trabajador FROM ticketToInvoice ti - LEFT JOIN vn.ticketState ts ON ti.id = ts.ticket - JOIN state s - WHERE IFNULL(ts.alertLevel,0) < 3 and s.`code` = vn.getAlert3State(ti.id); - + LEFT JOIN ticketState ts ON ti.id = ts.ticket + JOIN state s + WHERE IFNULL(ts.alertLevel,0) < 3 and s.`code` = getAlert3State(ti.id); + INSERT INTO vncontrol.inter(state_id,Id_Ticket,Id_Trabajador) SELECT * FROM tmp.updateInter; - - INSERT INTO ticketLog (action, userFk,originFk, description) - SELECT 'UPDATE',account.userGetId(),ti.id, CONCAT('Crea factura ',vNewRef) + INSERT INTO ticketLog (action, userFk, originFk, description) + SELECT 'UPDATE', account.myUser_getId(), ti.id, CONCAT('Crea factura ', vNewRef) FROM ticketToInvoice ti; CALL invoiceExpenceMake(vNewInvoiceId); CALL invoiceTaxMake(vNewInvoiceId,vTaxArea); - + UPDATE invoiceOut io JOIN ( SELECT SUM(amount) AS total - FROM invoiceOutExpence + FROM invoiceOutExpence WHERE invoiceOutFk = vNewInvoiceId ) base JOIN ( SELECT SUM(vat) AS total - FROM invoiceOutTax + FROM invoiceOutTax WHERE invoiceOutFk = vNewInvoiceId ) vat SET io.amount = base.total + vat.total WHERE io.id = vNewInvoiceId; - + DROP TEMPORARY TABLE tmp.updateInter; + + SELECT ios.isCEE INTO vIsInterCompany + FROM vn.ticket t + JOIN vn.company c ON c.clientFk = t.clientFk + JOIN vn.invoiceOut io ON io.`ref` = t.refFk + JOIN vn.invoiceOutSerial ios ON ios.code = io.serial + WHERE t.refFk = vNewRef; + + IF (vIsInterCompany) THEN + + SELECT vCompany INTO vSupplier; + SELECT id INTO vCompany FROM company WHERE clientFk = vClient; + + INSERT INTO invoiceIn(supplierFk, supplierRef, issued, companyFk) + SELECT vSupplier, vNewRef, vInvoiceDate, vCompany; + + SET vNewInvoiceInId = LAST_INSERT_ID(); + + DROP TEMPORARY TABLE IF EXISTS tmp.ticket; + CREATE TEMPORARY TABLE tmp.ticket + (KEY (ticketFk)) + ENGINE = MEMORY + SELECT id ticketFk + FROM ticketToInvoice; + + CALL `ticket_getTax`('NATIONAL'); + + SET @vTaxableBaseServices := 0.00; + SET @vTaxCodeGeneral := NULL; + + INSERT INTO vn.invoiceInTax(invoiceInFk, taxableBase, expenceFk, taxTypeSageFk, transactionTypeSageFk) + SELECT vNewInvoiceInId, @vTaxableBaseServices, sub.expenceFk, sub.taxTypeSageFk , sub.transactionTypeSageFk + FROM ( + SELECT @vTaxableBaseServices := SUM(tst.taxableBase) taxableBase, i.expenceFk, i.taxTypeSageFk , i.transactionTypeSageFk, @vTaxCodeGeneral := i.taxClassCodeFk + FROM tmp.ticketServiceTax tst + JOIN vn.invoiceOutTaxConfig i ON i.taxClassCodeFk = tst.code + WHERE i.isService + HAVING taxableBase + ) sub; + + INSERT INTO vn.invoiceInTax(invoiceInFk, taxableBase, expenceFk, taxTypeSageFk, transactionTypeSageFk) + SELECT vNewInvoiceInId, SUM(tt.taxableBase) - IF(tt.code = @vTaxCodeGeneral, @vTaxableBaseServices, 0) taxableBase, i.expenceFk, i.taxTypeSageFk , i.transactionTypeSageFk + FROM tmp.ticketTax tt + JOIN vn.invoiceOutTaxConfig i ON i.taxClassCodeFk = tt.code + WHERE !i.isService + GROUP BY tt.pgcFk + HAVING taxableBase + ORDER BY tt.priority; + + CALL invoiceInDueDay_calculate(vNewInvoiceInId); + + INSERT INTO invoiceInIntrastat ( + invoiceInFk, + intrastatFk, + amount, + stems, + countryFk, + net) + SELECT + vNewInvoiceInId, + i.intrastatFk, + CAST(sv.eurosValue AS DECIMAL (10, 2)), + CAST(SUM(IFNULL(i.stems, 1) * s.quantity) AS DECIMAL (10, 2)), + su.countryFk, + CAST(SUM(IFNULL(sv.physicalWeight, sv.weight)) AS DECIMAL(10, 2)) + FROM sale s + LEFT JOIN vn.saleVolume sv ON sv.saleFk = s.id + LEFT JOIN ticket t ON s.ticketFk = t.id + LEFT JOIN supplier su ON su.id = t.companyFk + LEFT JOIN item i ON i.id = s.itemFk + JOIN invoiceOut iOut ON iOut.ref = t.refFk + WHERE iOut.`ref` = vNewRef + GROUP BY i.intrastatFk; + + DROP TEMPORARY TABLE tmp.ticket; + DROP TEMPORARY TABLE tmp.ticketAmount; + DROP TEMPORARY TABLE tmp.ticketTax; + DROP TEMPORARY TABLE tmp.ticketServiceTax; + + END IF; + END IF; - + DROP TEMPORARY TABLE `ticketToInvoice`; END ;; DELIMITER ; @@ -63835,19 +56367,19 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOut_newFromClient`(IN vClientFk int, IN vSerial char(2), IN vMaxShipped date, +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceOut_newFromClient`(IN vClientFk int, IN vSerial char(2), IN vMaxShipped date, IN vCompanyFk int, IN vTaxArea varchar(25), IN vRef varchar(25), OUT vInvoiceId int) BEGIN /** * Factura los tickets de un cliente hasta una fecha dada - * @param vClientFk Id del cliente a facturar + * @param vClientFk Id del cliente a facturar * @param vSerial Serie de factura * @param vMaxShipped Fecha hasta la cual cogera tickets para facturar * @param vCompanyFk Id de la empresa desde la que se factura @@ -63855,7 +56387,7 @@ BEGIN * @param vRef Referencia de la factura en caso que se quiera forzar, NULL por defecto * @return vInvoiceId factura */ - + DECLARE vIsRefEditable BOOLEAN; IF vRef IS NOT NULL THEN @@ -63866,14 +56398,14 @@ BEGIN IF NOT vIsRefEditable THEN CALL util.throw('serial non editable'); END IF; - END IF; - + END IF; + CALL invoiceFromClient(vMaxShipped, vClientFk, vCompanyFk); - CALL invoiceOut_new(vSerial, CURDATE(), vTaxArea, vInvoiceId); + CALL invoiceOut_new(vSerial, util.VN_CURDATE(), vTaxArea, vInvoiceId); UPDATE invoiceOut SET `ref` = vRef - WHERE id = vInvoiceId + WHERE id = vInvoiceId AND vRef IS NOT NULL; IF vSerial <> 'R' AND NOT ISNULL(vInvoiceId) AND vInvoiceId <> 0 THEN @@ -63885,61 +56417,30 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `invoiceOut_newFromClient__` */; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceOut_newFromTicket` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOut_newFromClient__`(vClientFk INT, vSerial CHAR(1), vShipped DATE, vCompanyFk INT, vTaxArea VARCHAR(25), OUT vInvoiceId INT) -BEGIN -/** - * Factura los tickets de un cliente - * @param vTicketFk Id del ticket - * @param vSerial Serie de factura - * @return Id factura - */ - CALL invoiceFromClient(vShipped, vClientFk, vCompanyFk); - CALL invoiceOut_new(vSerial, CURDATE(), vTaxArea, vInvoiceId); - - IF vSerial <> 'R' AND NOT ISNULL(vInvoiceId) AND vInvoiceId <> 0 THEN - CALL invoiceOutBooking(vInvoiceId); - INSERT INTO printServerQueue(priorityFk, reportFk, param1) VALUES(1, 3, vInvoiceId); - END IF; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `invoiceOut_newFromTicket` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOut_newFromTicket`(IN vTicketFk int, IN vSerial char(2), IN vTaxArea varchar(25), +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceOut_newFromTicket`(IN vTicketFk int, IN vSerial char(2), IN vTaxArea varchar(25), IN vRef varchar(25), OUT vInvoiceId int) BEGIN /** * Factura un ticket * @param vTicketFk Id del ticket * @param vSerial Serie de factura - * @param vTaxArea Area de la factura en caso de querer forzarlo, + * @param vTaxArea Area de la factura en caso de querer forzarlo, * en la mayoria de los casos poner NULL * @return vInvoiceId */ DECLARE vIsRefEditable BOOLEAN; CALL invoiceFromTicket(vTicketFk); - CALL invoiceOut_new(vSerial, CURDATE(), vTaxArea, vInvoiceId); + CALL invoiceOut_new(vSerial, util.VN_CURDATE(), vTaxArea, vInvoiceId); IF vRef IS NOT NULL THEN SELECT isRefEditable INTO vIsRefEditable @@ -63948,11 +56449,11 @@ BEGIN IF NOT vIsRefEditable THEN CALL util.throw('serial non editable'); END IF; - - UPDATE invoiceOut + + UPDATE invoiceOut SET `ref` = vRef WHERE id = vInvoiceId; - END IF; + END IF; IF vSerial <> 'R' AND NOT ISNULL(vInvoiceId) AND vInvoiceId <> 0 THEN CALL invoiceOutBooking(vInvoiceId); @@ -63963,169 +56464,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `invoiceOut_new__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOut_new__`( - vSerial VARCHAR(255), - vInvoiceDate DATETIME, - vTaxArea VARCHAR(25), - OUT vNewInvoiceId INT) -BEGIN - -/* Creación de facturas emitidas. -* REQUIERE previamente tabla ticketToInvoice. -* -* @param vSerial, vInvoiceDate,vTaxArea -* -* @return vNewInvoiceId -*/ - - DECLARE vSpainCountryCode INT DEFAULT 1; - DECLARE vIsAnySaleToInvoice BOOL; - DECLARE vNewRef VARCHAR(255); - DECLARE vWorker INT DEFAULT account.myUser_getId(); - DECLARE vCompany INT; - DECLARE vClient INT; - DECLARE vCplusStandardInvoiceTypeFk INT DEFAULT 1; - DECLARE vCplusCorrectingInvoiceTypeFk INT DEFAULT 6; - DECLARE vCplusSimplifiedInvoiceTypeFk INT DEFAULT 2; - DECLARE vCorrectingSerial VARCHAR(1) DEFAULT 'R'; - DECLARE vSimplifiedSerial VARCHAR(1) DEFAULT 'S'; - - SET vInvoiceDate = IFNULL(vInvoiceDate,CURDATE()); - - SELECT t.clientFk, t.companyFk - INTO vClient, vCompany - FROM ticketToInvoice tt - JOIN ticket t ON t.id = tt.id - LIMIT 1; - - -- Elimina tickets sense moviments -/* UPDATE ticket t - JOIN ticketToInvoice ti ON ti.id = t.id - LEFT JOIN sale s ON s.ticketFk = ti.id - LEFT JOIN expedition e ON e.ticketFk = t.id - LEFT JOIN ticketPackaging tp ON tp.ticketFk = t.id - SET t.shipped = '2000-02-01 00:00:00' - WHERE s.ticketFk IS NULL AND e.ticketFk IS NULL AND e.ticketFk IS NULL; -*/ - -- Eliminem de ticketToInvoice els tickets que no han de ser facturats - DELETE ti.* - FROM ticketToInvoice ti - JOIN ticket t ON t.id = ti.id - JOIN client c ON c.id = t.clientFk - WHERE YEAR(t.shipped) < 2001 - OR c.isTaxDataChecked = FALSE - OR t.isDeleted - OR c.hasToInvoice = FALSE; - - SELECT SUM(quantity * price * (100 - discount)/100) - INTO vIsAnySaleToInvoice - FROM sale s - JOIN ticketToInvoice t on t.id = s.ticketFk; - - IF vIsAnySaleToInvoice THEN - - -- el trigger añade el siguiente Id_Factura correspondiente a la vSerial - -- el trigger añade el siguiente Id_Factura correspondiente a la vSerial - INSERT INTO invoiceOut - ( - ref, - serial, - issued, - clientFk, - dued, - companyFk, - cplusInvoiceType477Fk - ) - SELECT - 1, - vSerial, - vInvoiceDate, - vClient, - getDueDate(vInvoiceDate, dueDay), - vCompany, - IF(vSerial = vCorrectingSerial, - vCplusCorrectingInvoiceTypeFk, - IF(vSerial = vSimplifiedSerial, - vCplusSimplifiedInvoiceTypeFk, - vCplusStandardInvoiceTypeFk)) - FROM client - WHERE id = vClient; - - - SET vNewInvoiceId = LAST_INSERT_ID(); - - SELECT ref - INTO vNewRef - FROM invoiceOut - WHERE id = vNewInvoiceId; - - UPDATE ticket t - JOIN ticketToInvoice ti ON ti.id = t.id - SET t.refFk = vNewRef; - - DROP TEMPORARY TABLE IF EXISTS tmp.updateInter; - CREATE TEMPORARY TABLE tmp.updateInter ENGINE = MEMORY - SELECT s.id,ti.id ticket_id,vWorker Id_Trabajador - FROM ticketToInvoice ti - LEFT JOIN vn.ticketState ts ON ti.id = ts.ticket - JOIN state s - WHERE IFNULL(ts.alertLevel,0) < 3 and s.`code` = vn.getAlert3State(ti.id); - - INSERT INTO vncontrol.inter(state_id,Id_Ticket,Id_Trabajador) - SELECT * FROM tmp.updateInter; - - - INSERT INTO ticketLog (action, userFk,originFk, description) - SELECT 'UPDATE',account.userGetId(),ti.id, CONCAT('Crea factura ',vNewRef) - FROM ticketToInvoice ti; - - CALL invoiceExpenceMake(vNewInvoiceId); - CALL invoiceTaxMake(vNewInvoiceId,vTaxArea); - - UPDATE invoiceOut io - JOIN ( - SELECT SUM(amount) AS total - FROM invoiceOutExpence - WHERE invoiceOutFk = vNewInvoiceId - ) base - JOIN ( - SELECT SUM(vat) AS total - FROM invoiceOutTax - WHERE invoiceOutFk = vNewInvoiceId - ) vat - SET io.amount = base.total + vat.total - WHERE io.id = vNewInvoiceId; - - END IF; - - DROP TEMPORARY TABLE `ticketToInvoice`; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceTaxMake` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceTaxMake`(vInvoice INT, vTaxArea VARCHAR(25)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceTaxMake`(vInvoice INT, vTaxArea VARCHAR(25)) BEGIN /** * Factura un conjunto de tickets. @@ -64137,14 +56486,14 @@ BEGIN */ DELETE FROM invoiceOutTax WHERE invoiceOutFk = vInvoice; - + DROP TEMPORARY TABLE IF EXISTS tmp.ticket; CREATE TEMPORARY TABLE tmp.ticket (KEY (ticketFk)) ENGINE = MEMORY SELECT id ticketFk FROM ticketToInvoice; - + CALL ticket_getTax(vTaxArea); INSERT INTO invoiceOutTax( @@ -64161,63 +56510,7 @@ BEGIN GROUP BY pgcFk HAVING BASE ORDER BY priority; - - DROP TEMPORARY TABLE tmp.ticket; - DROP TEMPORARY TABLE tmp.ticketTax; - DROP TEMPORARY TABLE tmp.ticketAmount; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `invoiceTaxMake__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceTaxMake__`(vInvoice INT, vTaxArea VARCHAR(25)) -BEGIN -/** - * Factura un conjunto de tickets. - * - * @param vInvoice, vTaxAreaFk - * @table tmp.ticket(ticketFk) Identificadores de los tickets a calcular - * @return tmp.ticketAmount - * @return tmp.ticketTax Impuesto desglosado para cada ticket. - */ - DELETE FROM invoiceOutTax - WHERE invoiceOutFk = vInvoice; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticket; - CREATE TEMPORARY TABLE tmp.ticket - (KEY (ticketFk)) - ENGINE = MEMORY - SELECT id ticketFk - FROM ticketToInvoice; - - CALL ticket_getTax(vTaxArea); - - INSERT INTO invoiceOutTax( - invoiceOutFk, - pgcFk, - taxableBase, - vat - ) - SELECT vInvoice, - pgcFk, - SUM(taxableBase) as BASE, - CAST(SUM(taxableBase) * rate / 100 AS DECIMAL (10,2)) - FROM tmp.ticketTax - GROUP BY pgcFk - HAVING BASE; - DROP TEMPORARY TABLE tmp.ticket; DROP TEMPORARY TABLE tmp.ticketTax; DROP TEMPORARY TABLE tmp.ticketAmount; @@ -64234,333 +56527,18 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemBarcode_update`(vItemFk INT,vCode VARCHAR(22), vDelete BOOL) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemBarcode_update`(vItemFk INT,vCode VARCHAR(22), vDelete BOOL) BEGIN IF vDelete THEN DELETE FROM vn.itemBarcode WHERE itemFk = vItemFk AND code = vCode; -ELSE +ELSE INSERT INTO vn.itemBarcode(itemFk,code) VALUES (vItemFk,vCode); END IF; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemCard` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemCard`(IN `vBarcode` VARCHAR(22), IN `vWarehouseFk` INT, IN isBarcode BOOL) -BEGIN - - /* - * @deprecated: Utilizar item_getInfo - */ - - DECLARE vCacheVisibleFk INT; - DECLARE vCacheAvailableFk INT; - DECLARE vVisibleAltillo INT; - DECLARE vItemFk INT; - - IF isBarcode THEN - SELECT vn.barcodeToItem(vBarcode) INTO vItemFk; - ELSE - SELECT i.id INTO vItemFk - FROM vn.item i - WHERE i.name LIKE CONCAT('%',vBarcode,'%') - ORDER BY i.id ASC - LIMIT 1; - END IF; - - IF vItemFk IS NULL THEN - SELECT vn.barcodeToItem(vBarcode) INTO vItemFk; - END IF; - - CALL cache.visible_refresh(vCacheVisibleFk, FALSE,vWarehouseFk); - CALL cache.available_refresh(vCacheAvailableFk, FALSE,vWarehouseFk, CURDATE()); - - SELECT SUM(visible) INTO vVisibleAltillo - FROM vn.itemShelvingStock - WHERE itemFk = vItemFk AND warehouseFk = vWarehouseFk; - - CALL vn.buyUltimate(vWarehouseFk, CURDATE()); - - SELECT i.id, - i.longName, - i.tag5, - i.value5, - i.tag6, - i.value6, - i.tag7, - i.value7, - i.image, - i.size, - i.stems, - i.category, - i.minimum as min, - i.upToDown as repo, - p.name as producer, - o.code as origin, - ip.code as nicho, - ip.reserve as reserva, - v.visible - IFNULL(vVisibleAltillo,0) as enNicho, - a.available, - vVisibleAltillo as enAltillo, - v.visible as total, - c.`grouping` as `grouping`, - c.Packing as packing, - CONCAT('https://verdnatura.es/vn-image-data/catalog/200x200/', i.image) as urlImage200, - CONCAT('https://verdnatura.es/vn-image-data/catalog/1600x900/', i.image) as urlImage, - i.itemPackingTypeFk, - i.comment as referencia - FROM vn.item i - LEFT JOIN vn.producer p ON p.id = i.producerFk - LEFT JOIN vn.origin o ON o.id = i.originFk - LEFT JOIN vn.itemPlacement ip ON ip.itemFk = i.id - LEFT JOIN cache.visible v ON v.calc_id = vCacheVisibleFk AND v.item_id = i.id - LEFT JOIN cache.available a ON a.calc_id = vCacheAvailableFk AND a.item_id = i.id - LEFT JOIN ( - SELECT b.itemFk, b2.`grouping`, b2.packing - FROM tmp.buyUltimate b - JOIN vn.buy b2 ON b2.id = b.buyFk - WHERE b.warehouseFk = vWarehouseFk - ) c ON i.id = c.itemFk - WHERE i.id = vItemFk; - - DROP TEMPORARY TABLE tmp.buyUltimate; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemCard__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemCard__`(IN `vBarcode` VARCHAR(22), IN `vWarehouseFk` INT, isBarcode BOOL) -BEGIN - - DECLARE vCacheVisibleFk INT; - DECLARE vCacheAvailableFk INT; - DECLARE vVisibleAltillo INT; - DECLARE vItemFk INT; - - IF isBarcode THEN - SELECT vn.barcodeToItem(vBarcode) INTO vItemFk; - ELSE - SELECT i.id INTO vItemFk - FROM vn.item i - WHERE i.name LIKE CONCAT('%',vBarcode,'%') - ORDER BY i.id ASC - LIMIT 1; - END IF; - - IF vItemFk IS NULL THEN - SELECT vn.barcodeToItem(vBarcode) INTO vItemFk; - END IF; - - CALL cache.visible_refresh(vCacheVisibleFk, TRUE,vWarehouseFk); - CALL cache.available_refresh(vCacheAvailableFk, TRUE,vWarehouseFk, CURDATE()); - - SELECT SUM(visible) INTO vVisibleAltillo - FROM vn.itemShelvingStock - WHERE itemFk = vItemFk AND warehouseFk = vWarehouseFk; - - CALL vn2008.item_last_buy_(vWarehouseFk,vItemFk); - - SELECT i.id, - i.longName, - i.tag5, - i.value5, - i.tag6, - i.value6, - i.tag7, - i.value7, - i.image, - i.size, - i.stems, - i.category, - i.minimum as min, - i.upToDown as repo, - p.name as producer, - o.code as origin, - ip.code as nicho, - ip.reserve as reserva, - v.visible - IFNULL(vVisibleAltillo,0) as enNicho, - a.available, - vVisibleAltillo as enAltillo, - v.visible as total, - c.`grouping` as `grouping`, - c.Packing as packing, - CONCAT('https://verdnatura.es/vn-image-data/catalog/200x200/', i.image) as urlImage200, - CONCAT('https://verdnatura.es/vn-image-data/catalog/1600x900/', i.image) as urlImage, - i.itemPackingTypeFk - FROM vn.item i - LEFT JOIN vn.producer p ON p.id = i.producerFk - LEFT JOIN vn.origin o ON o.id = i.originFk - LEFT JOIN vn.itemPlacement ip ON ip.itemFk = i.id - LEFT JOIN cache.visible v ON v.calc_id = vCacheVisibleFk AND v.item_id = i.id - LEFT JOIN cache.available a ON a.calc_id = vCacheAvailableFk AND a.item_id = i.id - LEFT JOIN - (SELECT b.item_id,c.`grouping`,c.Packing - FROM vn2008.t_item_last_buy b - INNER JOIN vn2008.Compres c ON c.Id_Compra = b.buy_id - where b.warehouse_id = vWarehouseFk) c - ON i.id= c.item_id - WHERE i.id = vItemFk; - - DROP TEMPORARY TABLE vn2008.t_item_last_buy; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemDiary__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemDiary__`(IN vItemId INT, IN vWarehouse INT) -BEGIN - DECLARE vDateInventory DATETIME; - DECLARE vCurdate DATE DEFAULT CURDATE(); - DECLARE vDayEnd DATETIME DEFAULT util.dayEnd(vCurdate); - - SELECT vn.barcodeToItem(vItemId) INTO vItemId; - - -- traduccion: date, alertLevel, origin, reference, name, In, Out, Balance - SELECT inventoried INTO vDateInventory FROM config; - SET @a = 0; - SELECT DATE(date) AS date, - alertLevel, - stateName, - origin, - reference, - clientFk, - name, - `in`, - `out`, - @a := @a + IFNULL(`in`,0) - IFNULL(`out`,0) as balance, - isPicked, - isTicket, - `in` as invalue - FROM - ( SELECT tr.landed as date, - b.quantity as `in`, - NULL as `out`, - IF(tr.isReceived != FALSE,3, IF(tr.isDelivered,1,0)) as alertLevel, - st.name AS stateName, - s.name as name, - e.ref as reference, - e.id as origin, - s.id as clientFk, - TRUE isPicked, - FALSE AS isTicket - FROM buy b - JOIN entry e ON e.id = b.entryFk - JOIN travel tr ON tr.id = e.travelFk - JOIN supplier s ON s.id = e.supplierFk - JOIN alertLevel al ON al.id = - CASE - WHEN tr.isReceived != FALSE THEN 3 - WHEN tr.isDelivered THEN 1 - ELSE 0 - END - JOIN state st ON st.code = al.code - WHERE tr.landed >= vDateInventory - AND vWarehouse = tr.warehouseInFk - AND b.itemFk = vItemId - AND e.isInventory = 0 - AND e.isRaid = 0 - UNION ALL - - SELECT tr.shipped as date, - NULL as `in`, - b.quantity as `out`, - IF(tr.isReceived != FALSE,3, IF(tr.isDelivered,1,0)) as alertLevel, - st.name AS stateName, - s.name as name, - e.ref as reference, - e.id as origin, - s.id as clientFk, - TRUE isPicked, - FALSE AS isTicket - FROM buy b - JOIN entry e ON e.id = b.entryFk - JOIN travel tr ON tr.id = e.travelFk - JOIN warehouse w ON w.id = tr.warehouseOutFk - JOIN supplier s ON s.id = e.supplierFk - JOIN alertLevel al ON al.id = - CASE - WHEN tr.isReceived != FALSE THEN 3 - WHEN tr.isDelivered THEN 1 - ELSE 0 - END - JOIN state st ON st.code = al.code - WHERE tr.shipped >= vDateInventory - AND vWarehouse =tr.warehouseOutFk - AND s.id <> 4 - AND b.itemFk = vItemId - AND e.isInventory = 0 - AND w.isFeedStock = 0 - AND e.isRaid = 0 - UNION ALL - - SELECT t.shipped as date, - NULL as `in`, - s.quantity as `out`, - al.id as alertLevel, - st.name AS stateName, - t.nickname as name, - t.refFk as reference, - t.id as origin, - t.clientFk, - stk.id as isPicked, -- TRUE as isPicked - TRUE as isTicket - FROM sale s - JOIN ticket t ON t.id = s.ticketFk - LEFT JOIN ticketState ts ON ts.ticket = t.id - LEFT JOIN state st ON st.code = ts.code - JOIN client c ON c.id = t.clientFk - JOIN alertLevel al ON al.id = - CASE - WHEN t.shipped < vCurdate THEN 3 - WHEN t.shipped > vDayEnd THEN 0 - ELSE IFNULL(ts.alertLevel, 0) - END - LEFT JOIN saleTracking stk ON stk.saleFk = s.id AND stk.stateFk = 14 -- comentar - WHERE t.shipped >= vDateInventory - AND s.itemFk = vItemId - AND vWarehouse =t.warehouseFk - ) AS itemDiary - ORDER BY date, isTicket, alertLevel DESC, isPicked DESC, `in` DESC, `out` DESC; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -64571,16 +56549,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemFreight_Show`(vItemFk INT, vWarehouseFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemFreight_Show`(vItemFk INT, vWarehouseFk INT) BEGIN - - SELECT cm3 Volumen_Entrada, + + SELECT cm3 Volumen_Entrada, cm3delivery Volumen_Salida, p.volume Volumen_del_embalaje, p.width Ancho_del_embalaje, @@ -64593,11 +56571,11 @@ BEGIN b.id buyFk, b.entryFk, w.name warehouseFk - FROM vn.itemCost ic - JOIN vn.item i ON i.id = ic.itemFk - LEFT JOIN cache.last_buy lb ON lb.item_id = ic.itemFk AND lb.warehouse_id = ic.warehouseFk - LEFT JOIN vn.buy b ON b.id = lb.buy_id - LEFT JOIN vn.packaging p ON p.id = b.packageFk + FROM vn.itemCost ic + JOIN vn.item i ON i.id = ic.itemFk + LEFT JOIN cache.last_buy lb ON lb.item_id = ic.itemFk AND lb.warehouse_id = ic.warehouseFk + LEFT JOIN vn.buy b ON b.id = lb.buy_id + LEFT JOIN vn.packaging p ON p.id = b.packageFk LEFT JOIN vn.warehouse w ON w.id = ic.warehouseFk WHERE ic.itemFk = vItemFk AND ic.warehouseFk = vWarehouseFk; @@ -64611,43 +56589,43 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemFuentesBalance`(vDaysInFuture INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemFuentesBalance`(vDaysInFuture INT) BEGIN /* Se utiliza para calcular la necesidad de mover mercancia entre el almacén de fuentes y el nuestro - * + * * @param vDaysInFuture Rango de dias para calcular entradas y salidas - * + * */ - + DECLARE vWarehouseFk INT; SELECT s.warehouseFk INTO vWarehouseFk - FROM vn.sector s + FROM vn.sector s WHERE s.code = 'FUENTES_PICASSE'; - + CALL cache.stock_refresh(FALSE); - SELECT i.id itemFk, + SELECT i.id itemFk, i.longName, i.size, i.subName, - v.amount - IFNULL(fue.Fuentes,0) - IFNULL(alb.albenfruit,0) as visible, - fue.Fuentes, + v.amount - IFNULL(fue.Fuentes,0) - IFNULL(alb.albenfruit,0) as visible, + fue.Fuentes, alb.Albenfruit, - sale.venta, - IFNULL(buy.compra,0) + IFNULL(mov.traslado,0) as compra, - IFNULL(v.amount,0) + IFNULL(sale.venta,0) + IFNULL(buy.compra,0) + IFNULL(mov.traslado,0) + sale.venta, + IFNULL(buy.compra,0) + IFNULL(mov.traslado,0) as compra, + IFNULL(v.amount,0) + IFNULL(sale.venta,0) + IFNULL(buy.compra,0) + IFNULL(mov.traslado,0) - IFNULL(fue.Fuentes,0) - IFNULL(alb.albenfruit,0) as saldo - FROM vn.item i - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk + FROM vn.item i + JOIN vn.itemType it ON it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk LEFT JOIN ( SELECT ish.itemFk, CAST(SUM(ish.visible) AS DECIMAL(10,0)) AS Fuentes FROM vn.itemShelving ish @@ -64655,7 +56633,7 @@ BEGIN JOIN vn.parking p ON p.id = sh.parkingFk JOIN vn.sector s ON s.id = p.sectorFk WHERE s.code = 'FUENTES_PICASSE' - GROUP BY ish.itemFk + GROUP BY ish.itemFk ) fue ON fue.itemFk = i.id LEFT JOIN ( SELECT ish.itemFk, CAST(SUM(ish.visible) AS DECIMAL(10,0)) AS Albenfruit @@ -64664,20 +56642,20 @@ BEGIN JOIN vn.parking p ON p.id = sh.parkingFk JOIN vn.sector s ON s.id = p.sectorFk WHERE s.code = 'ALBENFRUIT' - GROUP BY ish.itemFk + GROUP BY ish.itemFk ) alb ON alb.itemFk = i.id LEFT JOIN cache.stock v ON i.id = v.item_id AND v.warehouse_id = vWarehouseFk LEFT JOIN ( SELECT item_id, CAST(sum(amount)AS DECIMAL(10,0)) as venta FROM vn2008.item_out - WHERE dat BETWEEN CURDATE() AND TIMESTAMPADD(DAY,vDaysInFuture , util.dayend(curdate())) + WHERE dat BETWEEN util.VN_CURDATE() AND TIMESTAMPADD(DAY,vDaysInFuture , util.dayend(util.VN_CURDATE())) AND warehouse_id = vWarehouseFk GROUP BY item_id ) sale ON sale.item_id = i.id LEFT JOIN ( SELECT item_id, CAST(sum(amount)AS DECIMAL(10,0)) as compra FROM vn2008.item_entry_in - WHERE dat BETWEEN CURDATE() AND TIMESTAMPADD(DAY,vDaysInFuture , util.dayend(curdate())) + WHERE dat BETWEEN util.VN_CURDATE() AND TIMESTAMPADD(DAY,vDaysInFuture , util.dayend(util.VN_CURDATE())) AND warehouse_id = vWarehouseFk AND isVirtualStock = FALSE GROUP BY item_id @@ -64685,13 +56663,13 @@ BEGIN LEFT JOIN ( SELECT item_id, CAST(sum(amount)AS DECIMAL(10,0)) as traslado FROM vn2008.item_entry_out - WHERE dat BETWEEN CURDATE() AND TIMESTAMPADD(DAY,vDaysInFuture , util.dayend(curdate())) + WHERE dat BETWEEN util.VN_CURDATE() AND TIMESTAMPADD(DAY,vDaysInFuture , util.dayend(util.VN_CURDATE())) AND warehouse_id = vWarehouseFk GROUP BY item_id ) mov ON mov.item_id = i.id - WHERE (v.amount OR fue.Fuentes OR alb.Albenfruit) + WHERE (v.amount OR fue.Fuentes OR alb.Albenfruit) AND i.itemPackingTypeFk = 'H' - AND ic.shortLife + AND ic.shortLife ; END ;; @@ -64700,94 +56678,20 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemGetVisibleAvailable__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemGetVisibleAvailable__`( - vItem INT, - vDate DATE, - vWarehouse TINYINT, - vRefresh BOOL) -BEGIN - -- DEPRECADO - UTILIZAR vn.item_getVisibleAvailable() - JSB - 2019-11-20 - CALL item_getVisibleAvailable(vItem, vDate, vWarehouse, vRefresh); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemLastEntries__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemLastEntries__`(IN `vItem` INT, IN `vDays` DATE) -BEGIN - SELECT - w.id AS warehouseFk, - w.name AS warehouse, - tr.landed, - b.entryFk, - b.isIgnored, - b.price2, - b.price3, - b.stickers, - b.packing, - b.`grouping`, - b.groupingMode, - b.weight, - i.stems, - b.quantity, - b.buyingValue, - b.packageFk , - s.id AS supplierFk, - s.name AS supplier - FROM itemType it - RIGHT JOIN (entry e - LEFT JOIN supplier s ON s.id = e.supplierFk - RIGHT JOIN buy b ON b.entryFk = e.id - LEFT JOIN item i ON i.id = b.itemFk - LEFT JOIN ink ON ink.id = i.inkFk - LEFT JOIN travel tr ON tr.id = e.travelFk - LEFT JOIN warehouse w ON w.id = tr.warehouseInFk - LEFT JOIN origin o ON o.id = i.originFk - ) ON it.id = i.typeFk - LEFT JOIN edi.ekt ek ON b.ektFk = ek.id - WHERE b.itemFk = vItem And tr.shipped BETWEEN vDays AND DATE_ADD(CURDATE(), INTERVAl + 10 DAY) - ORDER BY tr.landed DESC , b.id DESC; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `itemPlacementFromTicket` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemPlacementFromTicket`(vTicket INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemPlacementFromTicket`(vTicket INT) BEGIN /** - * Llama a itemPlacementUpdateVisible + * Llama a itemPlacementUpdateVisible * de los articulos de la tabla temporal tmp.itemPlacement(itemFk) * @treturn tmp.itemPlacement * @param vTicket Id del Ticket @@ -64801,76 +56705,9 @@ BEGIN FROM ticket t JOIN sale s ON s.ticketFk = t.id WHERE t.id = vTicket; - + CALL itemPlacementUpdateVisible(); - - DROP TEMPORARY TABLE tmp.itemPlacement; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemPlacementReloadVisible` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemPlacementReloadVisible`() -BEGIN -/** - * Reemplaza únicamente el campo itemPlacement.pickable - * restando al cache.visible los valores de las tablas - * itemShelving y los tickets con estado impreso - * que aun no han sido preparados. - */ - - DECLARE vCalc INT; - DECLARE vTodayIni DATE DEFAULT CURDATE(); - DECLARE vTodayEnd DATETIME DEFAULT util.dayend(vTodayIni); - DECLARE vproductionOrderPrinted INT DEFAULT 4; - DECLARE vWarehouseSillaFv INT DEFAULT 1; - - UPDATE itemPlacement SET pickable = 0; - - CALL cache.visible_refresh(vCalc, FALSE, vWarehouseSillaFv); --- SELECT * FROM cache.visible v; - DROP TEMPORARY TABLE IF EXISTS tmp.itemShelving; - CREATE TEMPORARY TABLE tmp.itemShelving - SELECT itemFk, IFNULL(SUM(visible),0) visible - FROM itemShelving its - GROUP BY its.itemFk; --- SELECT * FROM tmp.itemShelving; - DROP TEMPORARY TABLE IF EXISTS tmp.itemPlacement; - CREATE TEMPORARY TABLE tmp.itemPlacement - SELECT s.itemFk, cast(SUM(s.quantity) AS UNSIGNED) visible - FROM ticket t - JOIN ticketState ts ON ts.ticketFk = t.id AND productionOrder = vproductionOrderPrinted - JOIN sale s ON s.ticketFk = t.id - WHERE t.shipped BETWEEN vTodayIni AND vTodayEnd - GROUP BY s.itemFk; --- SELECT * FROM tmp.itemPlacement; -/*SELECT v.item_id, vWarehouseSillaFv, v.visible - IFNULL(tis.visible,0) - IFNULL(tip.visible,0) - FROM cache.visible v - LEFT JOIN tmp.itemShelving tis ON tis.itemFk = v.item_id - LEFT JOIN tmp.itemPlacement tip ON tip.itemFk = v.item_id - WHERE v.calc_id = vCalc; - */ - INSERT INTO itemPlacement(itemFk, warehouseFk, pickable) - SELECT v.item_id, vWarehouseSillaFv, v.visible - IFNULL(tis.visible,0) - IFNULL(tip.visible,0) - FROM cache.visible v - LEFT JOIN tmp.itemShelving tis ON tis.itemFk = v.item_id - LEFT JOIN tmp.itemPlacement tip ON tip.itemFk = v.item_id - WHERE v.calc_id = vCalc - ON DUPLICATE KEY UPDATE pickable = VALUES(pickable); - - DROP TEMPORARY TABLE tmp.itemShelving; DROP TEMPORARY TABLE tmp.itemPlacement; END ;; DELIMITER ; @@ -64878,50 +56715,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemPlacementSave` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemPlacementSave`( - vCode VARCHAR(22), - vPlacement VARCHAR(10), - vWarehouseFk INT ) -BEGIN - DECLARE vItemFk INT; - SET vItemFk = barcodeToItem(vCode); - - IF ASCII(vPlacement) > 57 THEN - INSERT INTO itemPlacement(itemFk, warehouseFk, reserve, pickable) - VALUES(vItemFk, vWarehouseFk, vPlacement, 0) - ON DUPLICATE KEY UPDATE reserve = vPlacement, modificationDate = NOW(); - ELSE - INSERT INTO itemPlacement(itemFk, warehouseFk, code) - VALUES(vItemFk, vWarehouseFk, vPlacement) - ON DUPLICATE KEY UPDATE code = vPlacement, modificationDate = NOW(); - END IF; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `itemPlacementSupplyAiming` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemPlacementSupplyAiming`(vShelvingFk VARCHAR(10), quantity INT, vItemFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemPlacementSupplyAiming`(vShelvingFk VARCHAR(10), quantity INT, vItemFk INT) BEGIN SELECT ish.itemFk, @@ -64936,7 +56740,7 @@ BEGIN CAST(FLOOR(LEAST(ish.stock,quantity) / ish.packing) AS DECIMAL(10,0)), ' x ', ish.packing, - IF ( + IF ( LEAST(ish.stock,quantity) MOD ish.packing, CONCAT(' + ',CAST(LEAST(ish.stock,quantity) MOD ish.packing AS DECIMAL(10,0))), '' @@ -64958,16 +56762,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemPlacementSupplyCloseOrder`(vId INT, vQuantity INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemPlacementSupplyCloseOrder`(vId INT, vQuantity INT) BEGIN - UPDATE vn.itemPlacementSupply + UPDATE vn.itemPlacementSupply SET priority = 10 WHERE id = vId; @@ -64981,19 +56785,19 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemPlacementSupplyGetOrder`(vSector INT ) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemPlacementSupplyGetOrder`(vSector INT ) BEGIN DECLARE vId INT; DECLARE vLastParkingFk INT; DECLARE vNextParkingFk INT; - + SELECT sh.parkingFk INTO vLastParkingFk FROM vn.itemShelvingPlacementSupply isps JOIN vn.itemShelving ish ON ish.id = isps.itemShelvingFk @@ -65001,9 +56805,9 @@ BEGIN WHERE isps.userFk = getUser() ORDER BY isps.created DESC LIMIT 1; - + SET vNextParkingFk = vn.itemShelvingPlacementSupply_ClosestGet(vLastParkingFk); - + SELECT ipsl.id INTO vId FROM vn.itemPlacementSupplyList ipsl JOIN vn.itemShelvingPlacementSupplyStock ispss ON ispss.itemFk = ipsl.itemFk @@ -65012,13 +56816,13 @@ BEGIN AND ipsl.sectorFk = vSector ORDER BY ipsl.repoUserFk DESC, ipsl.priority DESC, (ispss.parkingFk = vNextParkingFk) DESC, ispss.parking DESC, ipsl.created LIMIT 1; - + UPDATE vn.itemPlacementSupply SET repoUserFk = getUser() WHERE id = vId; - - SELECT * FROM vn.itemPlacementSupplyList - WHERE id = vId + + SELECT * FROM vn.itemPlacementSupplyList + WHERE id = vId AND sectorFk = vSector; END ;; @@ -65031,35 +56835,35 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemPlacementSupplyStockGetTargetList`(vItemFk INT,vSectorFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemPlacementSupplyStockGetTargetList`(vItemFk INT,vSectorFk INT) BEGIN /* Devuelve la lista de ubicaciones para itemFk en ese sector. Se utiliza en la preparación previa. * Este proc se llama a continuacion de ticketToPrePrepare - * + * * @param vItemFk Identificador de vn.item * @param vSectorFk Identificador de vn.sector */ - + DECLARE vWarehouseAliasFk INT; - + SELECT w.aliasFk INTO vWarehouseAliasFk FROM vn.sector s JOIN vn.warehouse w ON w.id = s.warehouseFk WHERE s.id = vSectorFk; - - SELECT ish.shelvingFk shelving, - p.code parking, + + SELECT ish.shelvingFk shelving, + p.code parking, sum(ish.visible) as stockTotal, ish.created, p.pickingOrder - FROM vn.itemShelving ish + FROM vn.itemShelving ish JOIN vn.shelving sh ON sh.code = ish.shelvingFk JOIN vn.parking p ON p.id = sh.parkingFk JOIN vn.sector sc ON sc.id = p.sectorFk @@ -65068,87 +56872,9 @@ BEGIN AND ish.visible > 0 AND ish.itemFk = vItemFk GROUP BY ish.id - ORDER BY ish.priority DESC; - - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemPlacementUpdateVisible` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemPlacementUpdateVisible`() -BEGIN -/** - * Reemplaza únicamente el campo itemPlacement.pickable - * de los articulos de la tabla temporal tmp.itemPlacement(itemFk) - * restando al cache.visible los valores de las tablas - * itemShelving y los tickets con estado impreso - * que aun no han sido preparados. - */ - DECLARE vCalc INT; - DECLARE vTodayIni DATE DEFAULT CURDATE(); - DECLARE vTodayEnd DATETIME DEFAULT util.dayend(vTodayIni); - DECLARE vproductionOrderPrinted INT DEFAULT 4; - DECLARE vWarehouseSillaFv INT DEFAULT 1; - - UPDATE itemPlacement SET pickable = 0; - - CALL cache.visible_refresh(vCalc, FALSE, vWarehouseSillaFv); -SELECT * FROM cache.visible v; - DROP TEMPORARY TABLE IF EXISTS tmp.itemShelving; - CREATE TEMPORARY TABLE tmp.itemShelving - SELECT its.itemFk, IFNULL(SUM(visible),0) visible - FROM itemShelving its - JOIN tmp.itemPlacement tip ON tip.itemFk = its.itemFk - GROUP BY its.itemFk; -SELECT * FROM tmp.itemShelving; + ORDER BY sh.priority DESC; -SELECT s.itemFk, cast(SUM(s.quantity) AS UNSIGNED) visible - FROM ticket t - JOIN ticketState ts ON ts.ticketFk = t.id AND productionOrder = vproductionOrderPrinted - JOIN sale s ON s.ticketFk = t.id - JOIN tmp.itemPlacement tip ON tip.itemFk = s.itemFk - WHERE t.shipped BETWEEN vTodayIni AND vTodayEnd - GROUP BY s.itemFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticket; - CREATE TEMPORARY TABLE tmp.ticket - SELECT s.itemFk, cast(SUM(s.quantity) AS UNSIGNED) visible - FROM ticket t - JOIN ticketState ts ON ts.ticketFk = t.id AND productionOrder = vproductionOrderPrinted - JOIN sale s ON s.ticketFk = t.id - JOIN tmp.itemPlacement tip ON tip.itemFk = s.itemFk - WHERE t.shipped BETWEEN vTodayIni AND vTodayEnd - GROUP BY s.itemFk; -SELECT * FROM tmp.ticket; -SELECT v.item_id, vWarehouseSillaFv, v.visible - IFNULL(tis.visible,0) - IFNULL(tik.visible,0) - FROM cache.visible v - LEFT JOIN tmp.itemShelving tis ON tis.itemFk = v.item_id - LEFT JOIN tmp.ticket tik ON tik.itemFk = v.item_id - WHERE v.calc_id = vCalc; - - INSERT INTO itemPlacement(itemFk, warehouseFk, pickable) - SELECT v.item_id, vWarehouseSillaFv, v.visible - IFNULL(tis.visible,0) - IFNULL(tik.visible,0) - FROM cache.visible v - LEFT JOIN tmp.itemShelving tis ON tis.itemFk = v.item_id - LEFT JOIN tmp.ticket tik ON tik.itemFk = v.item_id - WHERE v.calc_id = vCalc - ON DUPLICATE KEY UPDATE pickable = VALUES(pickable); - - DROP TEMPORARY TABLE tmp.itemShelving; - DROP TEMPORARY TABLE tmp.ticket; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -65161,11 +56887,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemProposal`(vItemFk INT, vTicketFk INT,vShowType BOOL) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemProposal`(vItemFk INT, vTicketFk INT,vShowType BOOL) BEGIN /** @@ -65174,20 +56900,20 @@ BEGIN * @param vItemFk item id * @param vTicketFk ticket id * @param vShowType mostrar tipos - */ + */ DECLARE vWarehouseFk INT; DECLARE vShipped DATE; DECLARE vCalcFk INT; DECLARE vTypeFk INT; - - + + DECLARE vTag1 VARCHAR(25); DECLARE vTag5 VARCHAR(25); DECLARE vTag6 VARCHAR(25); DECLARE vTag7 VARCHAR(25); DECLARE vTag8 VARCHAR(25); - + DECLARE vValue1 VARCHAR(50); DECLARE vValue5 VARCHAR(50); DECLARE vValue6 VARCHAR(50); @@ -65197,16 +56923,16 @@ BEGIN SELECT warehouseFk, shipped INTO vWarehouseFk, vShipped FROM vn.ticket WHERE id = vTicketFk; - + SELECT typeFk, tag5, value5, tag6, value6, tag7, value7, tag8, value8, t1.name, it1.value INTO vTypeFk, vTag5, vValue5, vTag6, vValue6, vTag7, vValue7, vTag8, vValue8, vTag1, vValue1 FROM vn.item i LEFT JOIN vn.itemTag it1 ON it1.itemFk = i.id AND it1.priority = 1 LEFT JOIN vn.tag t1 ON t1.id = it1.tagFk WHERE i.id = vItemFk; - + CALL cache.available_refresh(vCalcFk, FALSE, vWarehouseFk, vShipped); - + SELECT i.id itemFk, i.longName, i.subName, @@ -65239,7 +56965,7 @@ BEGIN ORDER BY counter DESC, (t1.name = vTag1 COLLATE utf8_general_ci) DESC, (it1.value = vValue1 COLLATE utf8_general_ci) DESC, - (i.tag6 = vTag6 COLLATE utf8_general_ci) DESC, + (i.tag6 = vTag6 COLLATE utf8_general_ci) DESC, (i.value6 = vValue6 COLLATE utf8_general_ci) DESC, (i.tag5 = vTag5 COLLATE utf8_general_ci) DESC, (i.value5 = vValue5 COLLATE utf8_general_ci) DESC, @@ -65247,7 +56973,7 @@ BEGIN (i.value7 = vValue7 COLLATE utf8_general_ci) DESC, (i.tag8 = vTag8 COLLATE utf8_general_ci) DESC, (i.value8 = vValue8 COLLATE utf8_general_ci) DESC; - + END ;; DELIMITER ; @@ -65261,11 +56987,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemProposal_Add`(vSaleFk INT, vMateFk INT, vQuantity INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemProposal_Add`(vSaleFk INT, vMateFk INT, vQuantity INT) BEGIN /** * Añade un nuevo articulo para sustituir a otro, y actualiza la memoria de sustituciones. @@ -65273,7 +56999,7 @@ BEGIN * @param vSaleFk id de la tabla sale * @param vMateFk articulo sustituto * @ param vQuantity cantidad que se va a sustituir - */ + */ DECLARE vTicketFk INT; DECLARE vItemFk INT; DECLARE vWarehouseFk SMALLINT; @@ -65282,41 +57008,41 @@ BEGIN DECLARE vBox INT; DECLARE vPacking INT; DECLARE vRoundQuantity INT DEFAULT 1; - + SELECT s.ticketFk, LEAST(s.quantity, vQuantity), s.itemFk,t.shipped,t.warehouseFk INTO vTicketFk, vQuantity, vItemFk,vDate,vWarehouseFk FROM vn.sale s JOIN vn.ticket t ON t.id = s.ticketFk WHERE s.id = vSaleFk; - + UPDATE vn.sale SET quantity = quantity - vQuantity WHERE id = vSaleFk; - + CALL vn.buyUltimate(vWarehouseFk, vDate); - + SELECT `grouping`, groupingMode, packing INTO vGrouping,vBox,vPacking FROM buy b JOIN tmp.buyUltimate tmp ON b.id = tmp.buyFk WHERE tmp.itemFk = vMateFk AND tmp.WarehouseFk = vWarehouseFk; - + IF vBox = 2 AND vPacking > 0 THEN SET vRoundQuantity = vPacking; END IF; IF vBox = 1 AND vGrouping > 0 THEN SET vRoundQuantity = vGrouping; END IF; - + INSERT INTO vn.sale(ticketFk, itemFk, quantity, concept) SELECT vTicketFk, vMateFk, CEIL(vQuantity / vRoundQuantity) * vRoundQuantity, CONCAT('+ ',i.longName) FROM vn.item i WHERE id = vMateFk; - + SELECT LAST_INSERT_ID() INTO vSaleFk; - + CALL vn.sale_calculateComponent(vSaleFk, NULL); - + INSERT INTO vn.itemProposal(itemFk, mateFk, counter) VALUES(vItemFk, vMateFk, 1) ON DUPLICATE KEY UPDATE counter = counter + 1; @@ -65331,187 +57057,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemProposal_beta`(vItemFk INT, vTicketFk INT) -BEGIN - - DECLARE vWarehouseFk INT; - DECLARE vShipped DATE; - DECLARE vCalcFk INT; - DECLARE vTypeFk INT; - DECLARE vResultsMax INT DEFAULT 10; - - DECLARE vTag1 VARCHAR(25); - DECLARE vTag5 VARCHAR(25); - DECLARE vTag6 VARCHAR(25); - DECLARE vTag7 VARCHAR(25); - DECLARE vTag8 VARCHAR(25); - - DECLARE vValue1 VARCHAR(50); - DECLARE vValue5 VARCHAR(50); - DECLARE vValue6 VARCHAR(50); - DECLARE vValue7 VARCHAR(50); - DECLARE vValue8 VARCHAR(50); - - SELECT warehouseFk, shipped INTO vWarehouseFk, vShipped - FROM vn.ticket - WHERE id = vTicketFk; - - SELECT typeFk, tag5, value5, tag6, value6, tag7, value7, tag8, value8, t1.name, it1.value - INTO vTypeFk, vTag5, vValue5, vTag6, vValue6, vTag7, vValue7, vTag8, vValue8, vTag1, vValue1 - FROM vn.item i - LEFT JOIN vn.itemTag it1 ON it1.itemFk = i.id AND it1.priority = 1 - LEFT JOIN vn.tag t1 ON t1.id = it1.tagFk - WHERE i.id = vItemFk; - - CALL cache.available_refresh(vCalcFk, FALSE, vWarehouseFk, vShipped); - - SELECT i.id itemFk, - i.longName, - i.subName, - i.tag5, - i.value5, - (i.value5 <=> vValue5 COLLATE utf8_general_ci) match5, - i.tag6, - i.value6, - (i.value6 <=> vValue6 COLLATE utf8_general_ci) match6, - i.tag7, - i.value7, - (i.value7 <=> vValue7 COLLATE utf8_general_ci) match7, - i.tag8, - i.value8, - (i.value8 <=> vValue8 COLLATE utf8_general_ci) match8, - a.available, - IFNULL(ip.counter,0) counter - FROM vn.item i - JOIN cache.available a ON a.item_id = i.id - LEFT JOIN vn.itemProposal ip ON ip.mateFk = i.id AND ip.itemFk = vItemFk - LEFT JOIN vn.itemTag it1 ON it1.itemFk = i.id AND it1.priority = 1 - LEFT JOIN vn.tag t1 ON t1.id = it1.tagFk - WHERE a.calc_id = vCalcFk - AND available > 0 - AND i.typeFk = vTypeFk - AND i.id != vItemFk - ORDER BY counter DESC, - (t1.name = vTag1 COLLATE utf8_general_ci) DESC, - (it1.value = vValue1 COLLATE utf8_general_ci) DESC, - (i.tag5 = vTag5 COLLATE utf8_general_ci) DESC, - (i.value5 = vValue5 COLLATE utf8_general_ci) DESC, - (i.tag6 = vTag6 COLLATE utf8_general_ci) DESC, - (i.value6 = vValue6 COLLATE utf8_general_ci) DESC, - (i.tag7 = vTag7 COLLATE utf8_general_ci) DESC, - (i.value7 = vValue7 COLLATE utf8_general_ci) DESC, - (i.tag8 = vTag8 COLLATE utf8_general_ci) DESC, - (i.value8 = vValue8 COLLATE utf8_general_ci) DESC - LIMIT vResultsMax; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemProposal__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemProposal__`(vItemFk INT, vTicketFk INT) -BEGIN - - DECLARE vWarehouseFk INT; - DECLARE vShipped DATE; - DECLARE vCalcFk INT; - DECLARE vTypeFk INT; - DECLARE vResultsMax INT DEFAULT 10; - - DECLARE vTag5 VARCHAR(25); - DECLARE vTag6 VARCHAR(25); - DECLARE vTag7 VARCHAR(25); - DECLARE vTag8 VARCHAR(25); - - DECLARE vValue5 VARCHAR(50); - DECLARE vValue6 VARCHAR(50); - DECLARE vValue7 VARCHAR(50); - DECLARE vValue8 VARCHAR(50); - - SELECT warehouseFk, shipped INTO vWarehouseFk, vShipped - FROM vn.ticket - WHERE id = vTicketFk; - - SELECT typeFk, tag5, value5, tag6, value6, tag7, value7, tag8, value8 - INTO vTypeFk, vTag5, vValue5, vTag6, vValue6, vTag7, vValue7, vTag8, vValue8 - FROM vn.item i - LEFT JOIN vn.tag t5 ON t5.name = i.tag5 COLLATE utf8_general_ci - LEFT JOIN vn.tag t6 ON t6.name = i.tag6 COLLATE utf8_general_ci - LEFT JOIN vn.tag t7 ON t7.name = i.tag7 COLLATE utf8_general_ci - LEFT JOIN vn.tag t8 ON t8.name = i.tag8 COLLATE utf8_general_ci - WHERE i.id = vItemFk; - - CALL cache.available_refresh(vCalcFk, FALSE, vWarehouseFk, vShipped); - - SELECT i.id itemFk, - i.longName, - i.subName, - i.tag5, - i.value5, - (i.value5 <=> vValue5 COLLATE utf8_general_ci) match5, - i.tag6, - i.value6, - (i.value6 <=> vValue6 COLLATE utf8_general_ci) match6, - i.tag7, - i.value7, - (i.value7 <=> vValue7 COLLATE utf8_general_ci) match7, - i.tag8, - i.value8, - (i.value8 <=> vValue8 COLLATE utf8_general_ci) match8, - a.available, - IFNULL(ip.counter,0) counter - FROM vn.item i - JOIN cache.available a ON a.item_id = i.id - LEFT JOIN vn.itemProposal ip ON ip.mateFk = i.id AND ip.itemFk = vItemFk - WHERE a.calc_id = vCalcFk - AND available > 0 - AND i.typeFk = vTypeFk - AND i.id != vItemFk - ORDER BY counter DESC, - (i.tag5 = vTag5 COLLATE utf8_general_ci) DESC, - (i.value5 = vValue5 COLLATE utf8_general_ci) DESC, - (i.tag6 = vTag6 COLLATE utf8_general_ci) DESC, - (i.value6 = vValue6 COLLATE utf8_general_ci) DESC, - (i.tag7 = vTag7 COLLATE utf8_general_ci) DESC, - (i.value7 = vValue7 COLLATE utf8_general_ci) DESC, - (i.tag8 = vTag8 COLLATE utf8_general_ci) DESC, - (i.value8 = vValue8 COLLATE utf8_general_ci) DESC - LIMIT vResultsMax; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemProposal__2` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemProposal__2`(vItemFk INT, vTicketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemProposal_beta`(vItemFk INT, vTicketFk INT) BEGIN DECLARE vWarehouseFk INT; @@ -65519,13 +57071,13 @@ BEGIN DECLARE vCalcFk INT; DECLARE vTypeFk INT; DECLARE vResultsMax INT DEFAULT 10; - + DECLARE vTag1 VARCHAR(25); DECLARE vTag5 VARCHAR(25); DECLARE vTag6 VARCHAR(25); DECLARE vTag7 VARCHAR(25); DECLARE vTag8 VARCHAR(25); - + DECLARE vValue1 VARCHAR(50); DECLARE vValue5 VARCHAR(50); DECLARE vValue6 VARCHAR(50); @@ -65535,16 +57087,16 @@ BEGIN SELECT warehouseFk, shipped INTO vWarehouseFk, vShipped FROM vn.ticket WHERE id = vTicketFk; - + SELECT typeFk, tag5, value5, tag6, value6, tag7, value7, tag8, value8, t1.name, it1.value INTO vTypeFk, vTag5, vValue5, vTag6, vValue6, vTag7, vValue7, vTag8, vValue8, vTag1, vValue1 - FROM vn.item i + FROM vn.item i LEFT JOIN vn.itemTag it1 ON it1.itemFk = i.id AND it1.priority = 1 LEFT JOIN vn.tag t1 ON t1.id = it1.tagFk WHERE i.id = vItemFk; - + CALL cache.available_refresh(vCalcFk, FALSE, vWarehouseFk, vShipped); - + SELECT i.id itemFk, i.longName, i.subName, @@ -65562,7 +57114,7 @@ BEGIN (i.value8 <=> vValue8 COLLATE utf8_general_ci) match8, a.available, IFNULL(ip.counter,0) counter - FROM vn.item i + FROM vn.item i JOIN cache.available a ON a.item_id = i.id LEFT JOIN vn.itemProposal ip ON ip.mateFk = i.id AND ip.itemFk = vItemFk LEFT JOIN vn.itemTag it1 ON it1.itemFk = i.id AND it1.priority = 1 @@ -65576,7 +57128,7 @@ BEGIN (it1.value = vValue1 COLLATE utf8_general_ci) DESC, (i.tag5 = vTag5 COLLATE utf8_general_ci) DESC, (i.value5 = vValue5 COLLATE utf8_general_ci) DESC, - (i.tag6 = vTag6 COLLATE utf8_general_ci) DESC, + (i.tag6 = vTag6 COLLATE utf8_general_ci) DESC, (i.value6 = vValue6 COLLATE utf8_general_ci) DESC, (i.tag7 = vTag7 COLLATE utf8_general_ci) DESC, (i.value7 = vValue7 COLLATE utf8_general_ci) DESC, @@ -65594,13 +57146,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemRefreshTags`(IN vItem INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemRefreshTags`(IN vItem INT) BEGIN /** * Crea la tabla temporal necesaria para el procedimiento item_refreshTags @@ -65612,7 +57164,7 @@ BEGIN CREATE TEMPORARY TABLE tmp.item SELECT vItem id; - + CALL item_refreshTags(); DROP TEMPORARY TABLE tmp.item; @@ -65629,30 +57181,30 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemSale_byWeek`(vWeek INT, IN vYear INT, vItemFk INT, vWarehouseFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemSale_byWeek`(vWeek INT, IN vYear INT, vItemFk INT, vWarehouseFk INT) BEGIN - + DECLARE vStarted DATE; DECLARE vEnded DATETIME; SELECT MIN(dated), util.dayEnd(MAX(dated)) INTO vStarted, vEnded - FROM `time` t + FROM `time` t WHERE CONCAT(vYear, LPAD(vWeek, 2, 0)) = t.period; SELECT t.shipped, w.name warehouse, - s.ticketFk, + s.ticketFk, c.quality, t.nickname client, - am.name agencyName, + am.name agencyName, wk.code salesPerson, s.itemFk, - IFNULL(CONCAT(ig.longName,' ',ig.`size`,' ',ig.subName), s.concept) AS concept, - s.quantity, + IFNULL(CONCAT(ig.longName,' ',ig.`size`,' ',ig.subName), s.concept) AS concept, + s.quantity, s.price, s.priceFixed, s.discount, @@ -65662,15 +57214,15 @@ BEGIN wk.id salesPersonFk FROM sale s JOIN ticket t ON t.id = s.ticketFk - JOIN warehouse w ON w.id = t.warehouseFk + JOIN warehouse w ON w.id = t.warehouseFk JOIN address a ON a.id = t.addressFk LEFT JOIN agencyMode am ON am.id = t.agencyModeFk JOIN `client` c ON c.id = a.clientFk - LEFT JOIN worker wk ON wk.id = c.salesPersonFk + LEFT JOIN worker wk ON wk.id = c.salesPersonFk LEFT JOIN ticketLastState tls ON tls.ticketFk = t.id - LEFT JOIN saleBuy sb ON sb.saleFk = s.id - LEFT JOIN buy b ON b.id = sb.buyFk - LEFT JOIN item ig ON ig.id = b.itemOriginalFk + LEFT JOIN saleBuy sb ON sb.saleFk = s.id + LEFT JOIN buy b ON b.id = sb.buyFk + LEFT JOIN item ig ON ig.id = b.itemOriginalFk WHERE s.itemFk = vItemFk AND t.shipped BETWEEN vStarted AND vEnded AND IF(vWarehouseFk = 0, w.hasComission , t.warehouseFk = vWarehouseFk) @@ -65682,84 +57234,24 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemSale_byWeek__` */; +/*!50003 DROP PROCEDURE IF EXISTS `itemSaveMin` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemSale_byWeek__`(vWeek INT, IN vYear INT, vItemFk INT, vWarehouseFk INT) -BEGIN - - DECLARE vStarted DATE; - DECLARE vEnded DATETIME; - - SELECT MIN(dated), util.dayEnd(MAX(dated)) INTO vStarted, vEnded - FROM vn.`time` t - WHERE CONCAT(vYear, vWeek) = t.period; - - SELECT - t.shipped, - w.name warehouse, - s.ticketFk, - c.quality, - t.nickname AS client, - am.name AS agencyName, - wk.code AS salesPerson, - s.itemFk, - IFNULL(CONCAT(ig.longName,' ',ig.`size`,' ',ig.subName), s.concept) AS concept, - s.quantity, - s.price, - s.priceFixed, - s.discount, - tls.name stateName, - sb.buyFk, - s.id saleFk, - wk.id salesPersonFk - FROM vn.sale s - JOIN vn.ticket t ON t.id = s.ticketFk - JOIN vn.warehouse w ON w.id = t.warehouseFk - JOIN vn.address a ON a.id = t.addressFk - LEFT JOIN vn.agencyMode am ON am.id = t.agencyModeFk - JOIN vn.client c ON c.id = a.clientFk - LEFT JOIN vn.worker wk ON wk.id = c.salesPersonFk - LEFT JOIN vn.ticketLastState tls ON tls.ticketFk = t.id - LEFT JOIN vn.saleBuy sb ON sb.saleFk = s.id - LEFT JOIN vn.buy b ON b.id = sb.buyFk - LEFT JOIN vn.item ig ON ig.id = b.itemOriginalFk - WHERE s.itemFk = vItemFk - AND t.shipped BETWEEN vStarted and vEnded - AND IF(vWarehouseFk = 0, w.hasComission , t.warehouseFk= vWarehouseFk) - ORDER BY t.shipped, t.id; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemSaveMin` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemSaveMin`(min INT,vBarcode VARCHAR(22)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemSaveMin`(min INT,vBarcode VARCHAR(22)) BEGIN DECLARE vItemFk INT; SELECT vn.barcodeToItem(vBarcode) INTO vItemFk; - + UPDATE vn.item SET minimum = min WHERE id = vItemFk; - + END ;; @@ -65774,15 +57266,15 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemSearchShelving`(`vShelvingFk` VARCHAR(3)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemSearchShelving`(`vShelvingFk` VARCHAR(3)) BEGIN SELECT p.`column` AS col , p.`row` - FROM vn.shelving s - JOIN parking p ON s.parkingFk = p.id + FROM vn.shelving s + JOIN parking p ON s.parkingFk = p.id WHERE s.`code` = vShelvingFk COLLATE utf8_general_ci; END ;; DELIMITER ; @@ -65794,74 +57286,17 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingDelete`(vId INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingDelete`(vId INT) BEGIN DELETE FROM vn.itemShelving WHERE id = vId; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemShelvingEdit` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingEdit`(vVisible INT,vPacking INT,vId INT) -BEGIN - - UPDATE vn.itemShelving SET available = vVisible, visible = vVisible, packing = vPacking WHERE id = vId; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemShelvingList` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingList`(IN `vShelvingFk` VARCHAR(8)) -BEGIN - - /*MODIFICADA POR QUIQUE: OBTENEMOS DEEP Y PARKING*/ - SELECT ish.itemFk as item, - IFNULL(i.longName, CONCAT(i.name, ' ',i.size)) as description, - ish.visible as visible, - ceil(ish.visible/ish.packing) as stickers, - ish.packing as packing, - IF (p.`column` IS NULL,"",p.`column`) as col, - IF (p.`row` IS NULL,"",p.`row`) as `row`, - IF (p.`code` IS NULL,"",p.`code`) as `code`, - ish.id, - s.priority - FROM vn.itemShelving ish - JOIN vn.item i ON i.id = ish.itemFk - INNER JOIN vn.shelving s ON vShelvingFk = s.code COLLATE utf8_unicode_ci - LEFT JOIN vn.parking p ON s.parkingFk = p.id - WHERE ish.shelvingFk COLLATE utf8_unicode_ci =vShelvingFk COLLATE utf8_unicode_ci; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -65874,118 +57309,42 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingLog_get`(vShelvingFk VARCHAR(10) ) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingLog_get`(vShelvingFk VARCHAR(10) ) BEGIN - + /** * Devuelve el log de los item en cada carro * - * @param vShelvingFk Matrícula del carro - * + * @param vShelvingFk Matrícula del carro + * */ - - SELECT isl.itemShelvingFk, - isl.created, - isl.accion, - isl.itemFk, - isl.shelvingFk, - isl.quantity, + + SELECT isl.itemShelvingFk, + isl.created, + isl.accion, + isl.itemFk, + isl.shelvingFk, + isl.quantity, isl.visible, - isl.available, - isl.grouping, - isl.packing, - isl.stars, - item.longName, - item.size, - item.subName, - worker.code, + isl.available, + isl.grouping, + isl.packing, + isl.stars, + item.longName, + item.size, + item.subName, + worker.code, isl.accion - FROM item - JOIN itemShelvingLog isl ON item.id = isl.itemFk + FROM item + JOIN itemShelvingLog isl ON item.id = isl.itemFk JOIN worker ON isl.workerFk = worker.id WHERE shelvingFk = vShelvingFk OR isl.itemFk = vShelvingFk ORDER BY isl.created DESC; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemShelvingMake` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingMake`(IN `vShelvingFk` VARCHAR(8), IN `vBarcode` VARCHAR(22), IN `vShelve` VARCHAR(2), IN `vDeep` INT, IN `vQuantity` INT, IN `vPackagingFk` VARCHAR(10), IN `vGrouping` INT, IN `vPacking` INT, IN `vWarehouseFk` INT, IN `vLevel` INT) -BEGIN - - DECLARE vItemFk INT; - SELECT vn.barcodeToItem(vBarcode) INTO vItemFk; - - /*SELECT itemFk INTO vItemFk - FROM vn.buy b - WHERE b.id = vItemFk;*/ - - IF (SELECT COUNT(*) FROM vn.shelving WHERE code = vShelvingFk COLLATE utf8_unicode_ci) = 0 THEN - - INSERT IGNORE INTO vn.parking(`code`) VALUES(vShelvingFk); - INSERT INTO vn.shelving(`code`, parkingFk) - SELECT vShelvingFk, id - FROM vn.parking - WHERE `code` = vShelvingFk COLLATE utf8_unicode_ci; - - END IF; - - IF (SELECT COUNT(*) FROM vn.itemShelving - WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk - AND itemFk = vItemFk - AND packing = vPacking) = 1 THEN - - UPDATE vn.itemShelving SET quantity = quantity+vQuantity,visible = visible+vQuantity,available = available+vQuantity - WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk AND itemFk = vItemFk AND packing = vPacking; - - ELSE - CALL cache.last_buy_refresh(FALSE); - INSERT INTO itemShelving( itemFk, - shelvingFk, - shelve, - deep, - quantity, - visible, - available, - `grouping`, - packing, - packagingFk, - level) - - SELECT - vItemFk, - vShelvingFk, - vShelve, - vDeep, - vQuantity, - vQuantity, - vQuantity, - IF(vGrouping = 0, IFNULL(b.packing, vPacking), vGrouping) as `grouping`, - IF(vPacking = 0, b.packing, vPacking) as packing, - IF(vPackagingFk = '', b.packageFk, vPackagingFk) as packaging, - vLevel - FROM vn.item i - LEFT JOIN cache.last_buy lb ON i.id = lb.item_id AND lb.warehouse_id = vWarehouseFk - LEFT JOIN vn.buy b ON b.id = lb.buy_id - WHERE i.id = vItemFk; - END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -65998,78 +57357,67 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingMakeFromDate`(IN `vShelvingFk` VARCHAR(8), IN `vBarcode` VARCHAR(22), IN `vShelve` VARCHAR(2), IN `vDeep` INT, IN `vQuantity` INT, IN `vPackagingFk` VARCHAR(10), IN `vGrouping` INT, IN `vPacking` INT, IN `vWarehouseFk` INT, IN `vLevel` INT,`vCreated` VARCHAR(22)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingMakeFromDate`(IN `vShelvingFk` VARCHAR(8), IN `vBarcode` VARCHAR(22), IN `vShelve` VARCHAR(2), IN `vQuantity` INT, IN `vPackagingFk` VARCHAR(10), IN `vGrouping` INT, IN `vPacking` INT, IN `vWarehouseFk` INT, `vCreated` VARCHAR(22)) BEGIN - - - + DECLARE vItemFk INT; - - - + SELECT vn.barcodeToItem(vBarcode) INTO vItemFk; - - SELECT itemFk INTO vItemFk - FROM vn.buy b + SELECT itemFk INTO vItemFk + FROM vn.buy b WHERE b.id = vItemFk; - - - IF (SELECT COUNT(*) FROM vn.shelving WHERE code = vShelvingFk COLLATE utf8_unicode_ci) = 0 THEN - - INSERT IGNORE INTO vn.parking(`code`) VALUES(vShelvingFk); - INSERT INTO vn.shelving(`code`, parkingFk) - SELECT vShelvingFk, id - FROM vn.parking - WHERE `code` = vShelvingFk COLLATE utf8_unicode_ci; - - END IF; - - IF (SELECT COUNT(*) FROM vn.itemShelving - WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk - AND itemFk = vItemFk - AND packing = vPacking) = 1 THEN - UPDATE vn.itemShelving SET quantity = quantity+vQuantity,visible = visible+vQuantity,available = available+vQuantity, created = vCreated - WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk AND itemFk = vItemFk AND packing = vPacking; - + IF (SELECT COUNT(*) FROM vn.shelving WHERE code = vShelvingFk COLLATE utf8_unicode_ci) = 0 THEN + + INSERT IGNORE INTO vn.parking(`code`) VALUES(vShelvingFk); + INSERT INTO vn.shelving(`code`, parkingFk) + SELECT vShelvingFk, id + FROM vn.parking + WHERE `code` = vShelvingFk COLLATE utf8_unicode_ci; + + END IF; + + IF (SELECT COUNT(*) FROM vn.itemShelving + WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk + AND itemFk = vItemFk + AND packing = vPacking) = 1 THEN + + UPDATE vn.itemShelving + SET visible = visible+vQuantity, + created = vCreated + WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk + AND itemFk = vItemFk + AND packing = vPacking; + ELSE - CALL cache.last_buy_refresh(FALSE); - INSERT INTO itemShelving( itemFk, - shelvingFk, - shelve, - deep, - quantity, - visible, - available, - created, - `grouping`, - packing, - packagingFk, - level) - SELECT - vItemFk, - vShelvingFk, - vShelve, - vDeep, - vQuantity, - vQuantity, - vQuantity, - vCreated, - IF(vGrouping = 0, IFNULL(b.packing, vPacking), vGrouping) as `grouping`, - IF(vPacking = 0, b.packing, vPacking) as packing, - IF(vPackagingFk = '', b.packageFk, vPackagingFk) as packaging, - vLevel - FROM vn.item i - LEFT JOIN cache.last_buy lb ON i.id = lb.item_id AND lb.warehouse_id = vWarehouseFk - LEFT JOIN vn.buy b ON b.id = lb.buy_id - WHERE i.id = vItemFk; - END IF; - + CALL cache.last_buy_refresh(FALSE); + INSERT INTO itemShelving( itemFk, + shelvingFk, + shelve, + visible, + created, + `grouping`, + packing, + packagingFk) + SELECT vItemFk, + vShelvingFk, + vShelve, + vQuantity, + vCreated, + IF(vGrouping = 0, IFNULL(b.packing, vPacking), vGrouping) `grouping`, + IF(vPacking = 0, b.packing, vPacking) packing, + IF(vPackagingFk = '', b.packageFk, vPackagingFk) packaging + FROM vn.item i + LEFT JOIN cache.last_buy lb ON i.id = lb.item_id AND lb.warehouse_id = vWarehouseFk + LEFT JOIN vn.buy b ON b.id = lb.buy_id + WHERE i.id = vItemFk; + END IF; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -66080,19 +57428,19 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingMatch`(vEntryFk INT, vAllTravel BOOLEAN, vFromTimed DATETIME, vToTimed DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingMatch`(vEntryFk INT, vAllTravel BOOLEAN, vFromTimed DATETIME, vToTimed DATETIME) BEGIN DECLARE vTravelFk INT; - - SELECT travelFk INTO vTravelFk - FROM entry + + SELECT travelFk INTO vTravelFk + FROM entry WHERE id = vEntryFk; SELECT i.id, i.longName, i.size, i.subName, b.stickers, ish.etiquetas, b.printed @@ -66105,7 +57453,7 @@ BEGIN GROUP BY itemFk ) b ON b.itemFk = i.id LEFT JOIN ( - SELECT itemFk, sum(cast(visible / packing AS DECIMAL(10,0))) AS etiquetas + SELECT itemFk, sum(cast(visible / packing AS DECIMAL(10,0))) AS etiquetas FROM itemShelving ish JOIN shelving sh ON sh.code = ish.shelvingFk LEFT JOIN parking pk ON pk.id = sh.parkingFk @@ -66124,30 +57472,28 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingPlacementSupplyAdd`(vItemShelvingFk INT, vItemPlacementSupplyFk INT, vQuantity INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingPlacementSupplyAdd`(vItemShelvingFk INT, vItemPlacementSupplyFk INT, vQuantity INT) BEGIN - INSERT INTO vn.itemShelvingPlacementSupply( itemShelvingFk, - itemPlacementSupplyFk, - quantity, + INSERT INTO vn.itemShelvingPlacementSupply( itemShelvingFk, + itemPlacementSupplyFk, + quantity, userFk) - VALUES ( vItemShelvingFk, - vItemPlacementSupplyFk, - vQuantity, - getUser()); - - UPDATE vn.itemShelving - SET quantity = quantity - vQuantity, - visible = visible - vQuantity, - available = available - vQuantity - WHERE id = vItemShelvingFk; - + VALUES (vItemShelvingFk, + vItemPlacementSupplyFk, + vQuantity, + getUser()); + + UPDATE vn.itemShelving + SET visible = visible - vQuantity + WHERE id = vItemShelvingFk; + END ;; DELIMITER ; @@ -66159,58 +57505,58 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingProblem`(vSectorFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingProblem`(vSectorFk INT) BEGIN DECLARE vVisibleCache INT; DECLARE vWarehouseFk INT; - + SELECT warehouseFk INTO vWarehouseFk FROM vn.sector WHERE id = vSectorFk; CALL cache.visible_refresh (vVisibleCache, FALSE, vWarehouseFk); - - SELECT t.id as ticketFk, - CAST(s.quantity AS DECIMAL(10,0)) as Cantidad, - s.itemFk, - s.concept, - v.visible - GREATEST(0,iss.visible) + IFNULL(sub3.transit,0) as Nicho, + + SELECT t.id as ticketFk, + CAST(s.quantity AS DECIMAL(10,0)) as Cantidad, + s.itemFk, + s.concept, + v.visible - GREATEST(0,iss.visible) + IFNULL(sub3.transit,0) as Nicho, i.subName, - GREATEST(0,iss.visible - IFNULL(sub3.transit,0)) as Altillo, + GREATEST(0,iss.visible - IFNULL(sub3.transit,0)) as Altillo, s.id as saleFk, IFNULL(sub3.transit,0) transit, v.visible, s.isPicked, s.reserved, t.shipped, tst.productionOrder, mm.Id_Movimiento - FROM vn.ticket t + FROM vn.ticket t JOIN vn.ticketState tst ON tst.ticketFk = t.id JOIN vn.sale s ON s.ticketFk = t.id JOIN vn.item i ON i.id = s.itemFk JOIN cache.visible v ON s.itemFk = v.item_id AND v.calc_id = vVisibleCache LEFT JOIN vn2008.Movimientos_mark mm ON mm.Id_Movimiento = s.id AND mm.stateFk = 26 - JOIN vn.itemShelvingStock iss ON iss.itemFk = v.item_id + JOIN vn.itemShelvingStock iss ON iss.itemFk = v.item_id LEFT JOIN - (SELECT itemFk, sum(saldo) as transit - FROM vn.itemPlacementSupplyList - WHERE saldo > 0 + (SELECT itemFk, sum(saldo) as transit + FROM vn.itemPlacementSupplyList + WHERE saldo > 0 AND sectorFk = vSectorFk GROUP BY itemFk) sub3 ON sub3.itemFk = i.id - WHERE v.visible + IFNULL(sub3.transit,0) - GREATEST(0,iss.visible) < s.quantity + WHERE v.visible + IFNULL(sub3.transit,0) - GREATEST(0,iss.visible) < s.quantity AND IFNULL(sub3.transit,0) < s.quantity - AND s.isPicked = FALSE + AND s.isPicked = FALSE AND s.reserved = FALSE - AND t.shipped BETWEEN CURDATE() AND MIDNIGHT(CURDATE()) + AND t.shipped BETWEEN util.VN_CURDATE() AND MIDNIGHT(util.VN_CURDATE()) AND tst.isPreviousPreparable = TRUE AND t.warehouseFk = vWarehouseFk AND iss.sectorFk = vSectorFk AND mm.Id_Movimiento IS NULL ORDER BY itemFk; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -66223,13 +57569,13 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingRadar`(vSectorFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingRadar`(vSectorFk INT) proc:BEGIN - + DECLARE vCalcVisibleFk INT; DECLARE vCalcAvailableFk INT; DECLARE hasFatherSector BOOLEAN; @@ -66237,25 +57583,25 @@ proc:BEGIN DECLARE vWarehouseFk INT DEFAULT 0; DECLARE vSonSectorFk INT; DECLARE vWorkerFk INT; - - SELECT s.workerFk - INTO vWorkerFk + + SELECT s.workerFk + INTO vWorkerFk FROM vn.sector s WHERE s.id = vSectorFk; - + IF IFNULL(vWorkerFk,0) THEN - + CALL vn.itemShelvingRadar_Urgent(vWorkerFk); LEAVE proc; - + end if; - - + + SELECT w.id, s.warehouseFk INTO vBuyerFk, vWarehouseFk - FROM vn.worker w + FROM vn.worker w JOIN vn.sector s ON s.code = w.code WHERE s.id = vSectorFk; - + SELECT s.id INTO vSectorFk FROM vn.sector s WHERE s.warehouseFk = vWarehouseFk @@ -66265,21 +57611,21 @@ proc:BEGIN SELECT COUNT(*) INTO hasFatherSector FROM vn.sector WHERE sonFk = vSectorFk; - + SELECT warehouseFk, sonFk INTO vWarehouseFk, vSonSectorFk FROM vn.sector WHERE id = vSectorFk; - + CALL cache.visible_refresh(vCalcVisibleFk, TRUE, vWarehouseFk); - CALL cache.available_refresh(vCalcAvailableFk, FALSE, vWarehouseFk, CURDATE()); - + CALL cache.available_refresh(vCalcAvailableFk, FALSE, vWarehouseFk, util.VN_CURDATE()); + DROP TEMPORARY TABLE IF EXISTS tmp.itemShelvingRadar; - + IF hasFatherSector THEN - + CREATE TEMPORARY TABLE tmp.itemShelvingRadar (PRIMARY KEY (itemFk)) - ENGINE = MEMORY + ENGINE = MEMORY SELECT * FROM ( SELECT iss.itemFk, i.longName, @@ -66290,7 +57636,7 @@ proc:BEGIN SUM(IF(iss.sectorFk = vSectorFk, IFNULL(iss.visible,0), 0)) downstairs, IF(it.isPackaging, null, IFNULL(v.visible,0)) as visible, vSectorFk as sectorFk - + FROM vn.itemShelvingStock iss JOIN vn.sector s ON s.id = iss.sectorFk JOIN vn.item i on i.id = iss.itemFk @@ -66299,11 +57645,11 @@ proc:BEGIN LEFT JOIN cache.visible v ON v.item_id = iss.itemFk AND v.calc_id = vCalcVisibleFk WHERE vSectorFk IN (iss.sectorFk, s.sonFk) AND it.workerFk != 3366 - + GROUP BY iss.itemFk - + UNION ALL - + SELECT v.item_id, i.longName, i.size, @@ -66313,7 +57659,7 @@ proc:BEGIN 0 downstairs, IF(it.isPackaging, NULL, v.visible) visible, vSectorFk as sectorFk - FROM cache.visible v + FROM cache.visible v JOIN vn.item i on i.id = v.item_id JOIN vn.itemType it ON it.id = i.typeFk AND vBuyerFk IN (0,it.workerFk) LEFT JOIN vn.itemShelvingStock iss ON iss.itemFk = v.item_id AND iss.warehouseFk = vWarehouseFk @@ -66322,8 +57668,8 @@ proc:BEGIN AND iss.itemFk IS NULL AND it.isInventory ) sub GROUP BY itemFk; - - SELECT ishr.*, + + SELECT ishr.*, CAST(visible - upstairs - downstairs AS DECIMAL(10,0)) AS nicho, CAST(downstairs - IFNULL(notPickedYed,0) AS DECIMAL(10,0)) as pendiente FROM tmp.itemShelvingRadar ishr @@ -66338,17 +57684,17 @@ proc:BEGIN ) sub ON sub.itemFk = ishr.itemFk ORDER BY i.typeFk, i.longName ; - - + + ELSE - + CREATE TEMPORARY TABLE tmp.itemShelvingRadar (PRIMARY KEY (itemFk)) - ENGINE = MEMORY + ENGINE = MEMORY SELECT iss.itemFk, 0 `hour`, 0 `minute`, - IFNULL(ip.`code`,'--') itemPlacementCode, + '--' itemPlacementCode, i.longName, i.size, i.subName producer, @@ -66356,7 +57702,7 @@ proc:BEGIN IFNULL(a.available,0) available, IFNULL(v.visible - iss.visible,0) dayEndVisible, IFNULL(v.visible - iss.visible,0) firstNegative, - IFNULL(v.visible - iss.visible,0) itemPlacementVisible, + IFNULL(v.visible - iss.visible,0) itemPlacementVisible, IFNULL(i.minimum * b.packing,0) itemPlacementSize, ips.onTheWay, iss.visible itemShelvingStock, @@ -66365,19 +57711,18 @@ proc:BEGIN iss.sectorFk FROM vn.itemShelvingStock iss JOIN vn.item i on i.id = iss.itemFk - LEFT JOIN vn.itemPlacement ip ON ip.itemFk = iss.itemFk AND ip.warehouseFk = vWarehouseFk LEFT JOIN cache.last_buy lb ON lb.item_id = iss.itemFk AND lb.warehouse_id = vWarehouseFk LEFT JOIN vn.buy b ON b.id = lb.buy_id LEFT JOIN cache.available a ON a.item_id = iss.itemFk AND a.calc_id = vCalcAvailableFk LEFT JOIN cache.visible v ON v.item_id = iss.itemFk AND v.calc_id = vCalcVisibleFk LEFT JOIN (SELECT itemFk, sum(saldo) as onTheWay - FROM vn.itemPlacementSupplyList - WHERE saldo > 0 + FROM vn.itemPlacementSupplyList + WHERE saldo > 0 GROUP BY itemFk ) ips ON ips.itemFk = i.id - WHERE IFNULL(iss.sectorFk,0) IN (0, vSectorFk) - OR iss.sectorFk = vSectorFk; - /* + WHERE IFNULL(iss.sectorFk,0) IN (0, vSectorFk) + OR iss.sectorFk = vSectorFk; + /* UPDATE tmp.itemShelvingRadar isr JOIN vn.itemShelvingStock iss ON iss.itemFk = isr.itemFk SET isr.dayEndVisible = isr.dayEndVisible + iss.visible, @@ -66388,10 +57733,10 @@ proc:BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.itemOutTime; CREATE TEMPORARY TABLE tmp.itemOutTime SELECT *,SUM(amount) quantity - FROM + FROM (SELECT item_id itemFk, - amount, - IF(HOUR(t.shipped), HOUR(t.shipped), HOUR(z.`hour`)) as hours, + amount, + IF(HOUR(t.shipped), HOUR(t.shipped), HOUR(z.`hour`)) as hours, IF(MINUTE(t.shipped), MINUTE(t.shipped), MINUTE(z.`hour`)) as minutes FROM vn2008.item_out io JOIN tmp.itemShelvingRadar isr ON isr.itemFk = io.item_id @@ -66399,23 +57744,23 @@ proc:BEGIN JOIN vn.ticketState ts on ts.ticketFk = io.ticketFk JOIN vn.state s ON s.id = ts.stateFk LEFT JOIN vn.zone z ON z.id = t.zoneFk - LEFT JOIN (SELECT DISTINCT saleFk - FROM vn.saleTracking st - WHERE st.created > CURDATE() + LEFT JOIN (SELECT DISTINCT saleFk + FROM vn.saleTracking st + WHERE st.created > util.VN_CURDATE() AND st.isChecked ) stPrevious ON `stPrevious`.`saleFk` = io.saleFk WHERE t.warehouseFk = vWarehouseFk - AND s.isPicked = 0 - AND NOT io.Reservado + AND s.isPicked = 0 + AND NOT io.Reservado AND stPrevious.saleFk IS NULL - AND io.dat >= CURDATE() - AND io.dat < CURDATE()+1 + AND io.dat >= util.VN_CURDATE() + AND io.dat < util.VN_CURDATE()+1 ) sub GROUP BY itemFk, hours, minutes; - + INSERT INTO tmp.itemShelvingRadar (itemFk) SELECT itemFk FROM tmp.itemOutTime - ON DUPLICATE KEY UPDATE dayEndVisible = dayEndVisible + quantity, + ON DUPLICATE KEY UPDATE dayEndVisible = dayEndVisible + quantity, firstNegative = if (firstNegative < 0, firstNegative, firstNegative + quantity), `hour` = ifnull(if (firstNegative > 0 , `hour`, hours),0), `minute` = ifnull(if (firstNegative > 0, `minute`, minutes),0); @@ -66425,13 +57770,13 @@ proc:BEGIN dayEndVisible = 0, firstNegative = 0 WHERE itemPlacementVisible = - itemShelvingStock; - */ + */ SELECT * FROM tmp.itemShelvingRadar; END IF; DROP TEMPORARY TABLE tmp.itemShelvingRadar; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -66442,37 +57787,37 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingRadar_Entry`(vEntryFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingRadar_Entry`(vEntryFk INT) BEGIN DECLARE vWarehouseFk INT DEFAULT 1; DECLARE vCalcVisibleFk INT; DECLARE vCalcAvailableFk INT; - DECLARE vTodayDayEnd DATETIME DEFAULT util.dayEnd(CURDATE()); - + DECLARE vTodayDayEnd DATETIME DEFAULT util.dayEnd(util.VN_CURDATE()); + CALL cache.visible_refresh(vCalcVisibleFk, FALSE, 1); - CALL cache.available_refresh(vCalcAvailableFk, FALSE, vWarehouseFk, CURDATE()); - + CALL cache.available_refresh(vCalcAvailableFk, FALSE, vWarehouseFk, util.VN_CURDATE()); + DROP TEMPORARY TABLE IF EXISTS tmp.item; CREATE TEMPORARY TABLE tmp.item ENGINE = MEMORY SELECT DISTINCT itemFk - FROM vn.buy + FROM vn.buy WHERE entryFk = vEntryFk; - + DROP TEMPORARY TABLE IF EXISTS tmp.item2; CREATE TEMPORARY TABLE tmp.item2 ENGINE = MEMORY SELECT * FROM tmp.item; - - SELECT i.id as itemFk, + + SELECT i.id as itemFk, i.minimum, CAST(IFNULL(v.visible,0) - IFNULL(iss.visible,0) AS DECIMAL(10,0)) as enNicho, CAST(IFNULL(a.available,0) AS DECIMAL(10,0)) as disponible, @@ -66487,16 +57832,16 @@ BEGIN JOIN tmp.item2 ti ON ti.itemFk = s.itemFk JOIN vn.ticket t ON t.id = s.ticketFk LEFT JOIN vn.ticketState tst ON tst.ticketFk = t.id - WHERE t.shipped BETWEEN CURDATE() AND vTodayDayEnd + WHERE t.shipped BETWEEN util.VN_CURDATE() AND vTodayDayEnd AND t.warehouseFk = vWarehouseFk AND IFNULL(tst.productionOrder,0) < 5 GROUP BY s.itemFK ) ts ON ts.itemFk = i.id; - - + + DROP TEMPORARY TABLE tmp.item; DROP TEMPORARY TABLE tmp.item2; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -66509,45 +57854,45 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingRadar_Entry_State_beta`(vEntryFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingRadar_Entry_State_beta`(vEntryFk INT) BEGIN DECLARE vWarehouseFk INT DEFAULT 1; DECLARE vCalcVisibleFk INT; DECLARE vCalcAvailableFk INT; - DECLARE vTodayDayEnd DATETIME DEFAULT util.dayEnd(CURDATE()); - + DECLARE vTodayDayEnd DATETIME DEFAULT util.dayEnd(util.VN_CURDATE()); + CALL cache.visible_refresh(vCalcVisibleFk, FALSE, 1); - CALL cache.available_refresh(vCalcAvailableFk, FALSE, vWarehouseFk, CURDATE()); - + CALL cache.available_refresh(vCalcAvailableFk, FALSE, vWarehouseFk, util.VN_CURDATE()); + DROP TEMPORARY TABLE IF EXISTS tmp.item; CREATE TEMPORARY TABLE tmp.item ENGINE = MEMORY SELECT DISTINCT itemFk - FROM vn.buy + FROM vn.buy WHERE entryFk = vEntryFk; - + DROP TEMPORARY TABLE IF EXISTS tmp.item2; CREATE TEMPORARY TABLE tmp.item2 ENGINE = MEMORY SELECT * FROM tmp.item; - - SELECT i.id as itemFk, + + SELECT i.id as itemFk, CAST(IFNULL(iss.visible,0) - IFNULL(v.visible,0) AS DECIMAL(10,0)) as outShelving FROM vn.item i JOIN tmp.item ti ON ti.itemFk = i.id LEFT JOIN cache.visible v ON v.calc_id = vCalcVisibleFk AND v.item_id = i.id LEFT JOIN vn.itemShelvingStock iss ON iss.itemFk = i.id; - - + + DROP TEMPORARY TABLE tmp.item; DROP TEMPORARY TABLE tmp.item2; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -66560,29 +57905,31 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingRadar_Urgent`(vWorkerFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingRadar_Urgent`() BEGIN +/** + * Devuelve lo mismo que itemShelving_filterBuyer per sin filtrar + */ DECLARE vCalcVisibleFk INT; DECLARE vWarehouseFk INT DEFAULT 60; - -- Eliminar cuando tengamos programador de Android - CALL cache.visible_refresh(vCalcVisibleFk, TRUE, vWarehouseFk); - SELECT * FROM + SELECT * FROM (SELECT sub.itemFk, sub.longName, - CONCAT('Hoy saldrán ', CAST(sub2.pendiente AS DECIMAL(10,0)), ' unidades.') `size`, + CONCAT(DATE_FORMAT(sub2.etd,'%H:%i'), ' salen ', CAST(sub2.pendiente AS DECIMAL(10,0)), ' unidades.') `size`, CONCAT(IF(sub2.itemFk, IF(sub2.pendiente > (sub.upstairs + sub.downstairs),'(1) ','(2) '),'(3) ' ),sub.producer) producer, sub.upstairs, sub.downstairs, sub.visible, sub.sectorFk, - CAST(visible - upstairs - downstairs AS DECIMAL(10,0)) nicho + CAST(visible - upstairs - downstairs AS DECIMAL(10,0)) nicho, + sub2.etd FROM (SELECT iss.itemFk, CONCAT(i.longName,' ',i.size,' ',IFNULL(i.subName,'') ) longName, '' size, @@ -66590,222 +57937,99 @@ BEGIN 0 upstairs, SUM(IFNULL(iss.visible,0)) downstairs, IF(it.isPackaging, null, IFNULL(v.visible,0)) visible, - 0 sectorFk + IFNULL(iss.sectorFk,0) sectorFk FROM itemShelvingStock iss JOIN sector s ON s.id = iss.sectorFk JOIN item i on i.id = iss.itemFk JOIN itemType it ON it.id = i.typeFk - LEFT JOIN cache.visible v ON v.item_id = iss.itemFk AND v.calc_id = vCalcVisibleFk + LEFT JOIN cache.visible v ON v.item_id = iss.itemFk AND v.calc_id = @vCalcVisibleFk WHERE s.warehouseFk = vWarehouseFk - AND it.workerFk = vWorkerFk - GROUP BY itemFk - ) sub LEFT JOIN (SELECT s.itemFk, SUM(s.quantity) pendiente + GROUP BY itemFk + ) sub LEFT JOIN (SELECT s.itemFk, SUM(s.quantity) pendiente, MIN(zc.`hour`) etd FROM sale s LEFT JOIN saleTracking st ON st.saleFk = s.id - JOIN ticket t ON t.id = s.ticketFk + JOIN ticket t ON t.id = s.ticketFk + LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk JOIN client c on c.id = t.clientFk JOIN clientType ct ON ct.id = c.clientTypeFk - WHERE t.shipped BETWEEN CURDATE() AND util.dayend(CURDATE()) + WHERE t.shipped BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE()) AND ISNULL(st.saleFk) AND ct.code IN ('normal', 'trust') GROUP BY s.itemFk - ) sub2 ON sub2.itemFk = sub.itemFk - UNION ALL + ) sub2 ON sub2.itemFk = sub.itemFk + UNION ALL SELECT v.item_id , i.longName, - CONCAT('Hoy saldrán ', CAST(sub5.pendiente AS DECIMAL(10,0)), ' unidades.') `size`, + CONCAT(DATE_FORMAT(sub5.etd,'%H:%i'), ' salen ', CAST(sub5.pendiente AS DECIMAL(10,0)), ' unidades.') `size`, CONCAT(IF(sub5.pendiente,'(0) ','(3) ')) producer, 0, 0, v.visible, - 0, - v.visible nicho + IFNULL(iss.sectorFk,0), + v.visible nicho, + sub5.etd FROM cache.visible v JOIN item i ON i.id = v.item_id JOIN itemType it ON it.id = i.typeFk - LEFT JOIN itemShelvingStock iss ON iss.itemFk = v.item_id - LEFT JOIN (SELECT s.itemFk , SUM(s.quantity) pendiente + LEFT JOIN itemShelvingStock iss ON iss.itemFk = v.item_id + LEFT JOIN (SELECT s.itemFk , SUM(s.quantity) pendiente, MIN(zc.`hour`) etd FROM sale s LEFT JOIN saleTracking st ON st.saleFk = s.id - JOIN ticket t ON t.id = s.ticketFk + JOIN ticket t ON t.id = s.ticketFk + LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk JOIN client c on c.id = t.clientFk JOIN clientType ct ON ct.id = c.clientTypeFk - WHERE t.shipped BETWEEN CURDATE() AND util.dayend(CURDATE()) + WHERE t.shipped BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE()) AND ISNULL(st.saleFk) AND ct.code IN ('normal', 'trust') GROUP BY s.itemFk ) sub5 ON sub5.itemFk = v.item_id - WHERE v.calc_id = vCalcVisibleFk - AND ISNULL(iss.itemFk) - AND it.workerFk = vWorkerFk + WHERE v.calc_id = @vCalcVisibleFk + AND ISNULL(iss.itemFk) ) sub3 WHERE nicho - ORDER BY producer; - + ORDER BY LEFT(producer,3), etd, producer; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemShelvingRadar_Urgent__` */; +/*!50003 DROP PROCEDURE IF EXISTS `itemShelvingSale_Add` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingRadar_Urgent__`(vWorkerFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingSale_Add`(vItemShelvingFk INT, vSaleFk INT, vQuantity INT) BEGIN - DECLARE vCalcVisibleFk INT; - DECLARE vWarehouseFk INT DEFAULT 60; - -- DECLARE vSectorFk INt; - -- DECLARE vFatherSectorFk INT; - - -- Eliminar cuando tengamos programador de Android +/** + * Añade línea a itemShelvingSale y regulariza el carro + * + * @param vItemShelvingFk Id itemShelving + * @param vSaleFk Id de sale + * @param vQuantity cantidad a regularizar + */ + INSERT INTO itemShelvingSale(itemShelvingFk, + saleFk, + quantity, + userFk) + VALUES (vItemShelvingFk, + vSaleFk, + vQuantity, + getUser()); - CALL cache.visible_refresh(vCalcVisibleFk, TRUE, vWarehouseFk); - - SELECT * FROM ( - SELECT sub.itemFk, - sub.longName, - CONCAT('Hoy saldrán ', CAST(sub2.pendiente AS DECIMAL(10,0)), ' unidades.') `size`, - CONCAT(IF(sub2.itemFk, IF(sub2.pendiente > (sub.upstairs + sub.downstairs),'(1) ','(2) '),'(3) ' ),sub.producer) producer, - sub.upstairs, - sub.downstairs, - sub.visible, - sub.sectorFk, - CAST(visible - upstairs - downstairs AS DECIMAL(10,0)) AS nicho - FROM ( - SELECT iss.itemFk, - CONCAT(i.longName,' ',i.size,' ',IFNULL(i.subName,'') ) longName, - '' size, - CONCAT(iss.parkingCode , ' ', iss.shelvingFk) producer, - 0 upstairs, - SUM(IFNULL(iss.visible,0)) downstairs, - IF(it.isPackaging, null, IFNULL(v.visible,0)) as visible, - 0 as sectorFk - FROM vn.itemShelvingStock iss - JOIN vn.sector s ON s.id = iss.sectorFk - JOIN vn.item i on i.id = iss.itemFk - JOIN vn.itemType it ON it.id = i.typeFk - LEFT JOIN cache.visible v ON v.item_id = iss.itemFk AND v.calc_id = vCalcVisibleFk - WHERE s.warehouseFk = vWarehouseFk - AND it.workerFk = vWorkerFk - GROUP BY itemFk - ) sub - LEFT JOIN (SELECT s.itemFk , sum(s.quantity) as pendiente - FROM vn.sale s - LEFT JOIN vn.saleTracking st ON st.saleFk = s.id - JOIN vn.ticket t ON t.id = s.ticketFk - JOIN vn.client c on c.id = t.clientFk - WHERE t.shipped BETWEEN CURDATE() AND util.dayend(CURDATE()) - AND ISNULL(st.saleFk) - AND (c.clientTypeFk = 1 OR c.clientTypeFk = 5) - GROUP BY s.itemFk) sub2 ON sub2.itemFk = sub.itemFk - - UNION ALL - - SELECT v.item_id , - i.longName, - CONCAT('Hoy saldrán ', CAST(sub5.pendiente AS DECIMAL(10,0)), ' unidades.') `size`, - CONCAT(IF(sub5.pendiente,'(0) ','(3) ')) producer, - 0, - 0, - v.visible, - 0, - v.visible AS nicho - FROM cache.visible v - JOIN vn.item i ON i.id = v.item_id - JOIN vn.itemType it ON it.id = i.typeFk - LEFT JOIN vn.itemShelvingStock iss ON iss.itemFk = v.item_id - LEFT JOIN (SELECT s.itemFk , sum(s.quantity) as pendiente - FROM vn.sale s - LEFT JOIN vn.saleTracking st ON st.saleFk = s.id - JOIN vn.ticket t ON t.id = s.ticketFk - JOIN vn.client c on c.id = t.clientFk - WHERE t.shipped BETWEEN CURDATE() AND util.dayend(CURDATE()) - AND ISNULL(st.saleFk) - AND (c.clientTypeFk = 1 OR c.clientTypeFk = 5) - GROUP BY s.itemFk) sub5 ON sub5.itemFk = v.item_id - WHERE v.calc_id = vCalcVisibleFk - AND ISNULL(iss.itemFk) - AND it.workerFk = vWorkerFk) sub3 - WHERE nicho - ORDER BY producer; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemShelvingSaleAdd` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingSaleAdd`(vItemShelvingFk INT, saleFk INT, vQuantity INT) -BEGIN - -IF saleFk <> 0 THEN - INSERT INTO vn.itemShelvingSale( itemShelvingFk, - saleFk, - quantity, - userFk) - VALUES ( vItemShelvingFk, - saleFk, - vQuantity, - getUser()); - - -END IF; - UPDATE vn.itemShelving SET quantity = (quantity - vQuantity), available = (available - vQuantity), visible = (visible - vQuantity) + UPDATE itemShelving + SET visible = visible - vQuantity WHERE id = vItemShelvingFk; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemShelvingSaleSupplyAdd` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingSaleSupplyAdd`(vItemShelvingFk INT, saleFk INT, vQuantity INT,idMovimiento INT) -BEGIN -INSERT INTO vn.itemShelvingSale( itemShelvingFk, - saleFk, - quantity, - userFk) - VALUES ( vItemShelvingFk, - saleFk, - vQuantity, - getUser()); - - UPDATE vn.itemShelving - SET quantity = quantity - vQuantity, - visible = visible - vQuantity, - available = available - vQuantity - WHERE id = vItemShelvingFk; - - UPDATE vn2008.Movimientos_mark - SET valor = 1 - WHERE Id_Movimiento = idMovimiento; + UPDATE vn.saleTracking + SET isChecked = 1 + WHERE saleFk = vSaleFk; END ;; DELIMITER ; @@ -66813,116 +58037,23 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemShelvingSaleSupplyAddVoz` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingSaleSupplyAddVoz`(vItemShelvingFk VARCHAR(50), saleFk INT, vQuantity INT,idMovimiento INT) -BEGIN - - -/*INSERT INTO `vn`.`errorLogApp` (`error`, `workerFk`) VALUES (CONCAT(vItemShelvingFk," ",saleFk), '14255');*/ - -DECLARE vItemShelvingFkAux INT; -DECLARE vItemFk INT; - -SELECT itemFk INTO vItemFk FROM vn.sale WHERE id = saleFk; - -SELECT id INTO vItemShelvingFkAux FROM vn.itemShelving WHERE shelvingFk = vItemShelvingFk COLLATE utf8_general_ci AND itemFk = vItemFk; - -INSERT INTO vn.itemShelvingSale( itemShelvingFk, - saleFk, - quantity, - userFk) - VALUES ( vItemShelvingFkAux, - saleFk, - vQuantity, - getUser()); - - UPDATE vn.itemShelving - SET quantity = quantity - vQuantity, - visible = visible - vQuantity, - available = available - vQuantity - WHERE id = vItemShelvingFkAux; - - UPDATE vn2008.Movimientos_mark - SET valor = 1 - WHERE Id_Movimiento = idMovimiento; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemShelvingTicketSource__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingTicketSource__`(vTicketFk INT) -BEGIN - DECLARE vCalcFk INT; - DECLARE vWarehouseFk INT; - - SELECT warehouseFk INTO vWarehouseFk - FROM vn.ticket - WHERE id = vTicketFk; - SET vCalcFk = cache.ticketShippingCalcIdGet(vWarehouseFk); - - SELECT - s.id, - ubication, - s.quantity, - sis.quantity as Reserved, - s.itemFk, - s.concept, - s.ticketFk, - s.isPicked, - ish.packing, - FLOOR(sis.quantity / ish.packing) as stickers, - sis.quantity MOD ish.packing as rest, - ts.shippingHour, - ts.shippingMinute - FROM vn.saleItemShelving sis - JOIN vn.itemShelving ish ON ish.id = sis.itemShelvingFk - JOIN vn.sale s ON s.id = sis.saleFk - JOIN cache.ticketShipping ts ON ts.calc_id = vCalcFk AND ts.ticketFk = vTicketFk - WHERE s.ticketFk = vTicketFk; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `itemShelvingTransfer` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingTransfer`(vItemShelvingFk INT,shelvingFkD VARCHAR(22)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingTransfer`(vItemShelvingFk INT,shelvingFkD VARCHAR(22)) BEGIN - + UPDATE vn.itemShelving SET shelvingFk = shelvingFkD WHERE id = vItemShelvingFk; - + SELECT true; END ;; @@ -66937,82 +58068,116 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelving_add`(IN vShelvingFk VARCHAR(8), IN vBarcode VARCHAR(22), IN vShelve VARCHAR(2), IN vDeep INT, IN vQuantity INT, IN vPackagingFk VARCHAR(10), IN vGrouping INT, IN vPacking INT, IN vWarehouseFk INT, IN vLevel INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelving_add`(IN vShelvingFk VARCHAR(8), IN vBarcode VARCHAR(22), IN vShelve VARCHAR(2), IN vQuantity INT, IN vPackagingFk VARCHAR(10), IN vGrouping INT, IN vPacking INT, IN vWarehouseFk INT) BEGIN - + + /** * Añade registro o lo actualiza si ya existe. * * @param vShelvingFk matrícula del carro * @param vBarcode el id del registro * @param vShelve de itemshleving - * @param vDeep indica profundidad * @param vQuantity indica la cantidad del producto * @param vPackagingFk el packaging del producto en itemShelving, NULL para coger el de la ultima compra * @param vGrouping el grouping del producto en itemShelving, NULL para coger el de la ultima compra * @param vPacking el packing del producto, NULL para coger el de la ultima compra * @param vWarehouseFk indica el sector - * @param vLevel indica el level - * + * **/ - - DECLARE vItemFk INT; - SELECT barcodeToItem(vBarcode) INTO vItemFk; - + DECLARE vItemFk INT; + + SELECT barcodeToItem(vBarcode) INTO vItemFk; + IF (SELECT COUNT(*) FROM shelving WHERE code = vShelvingFk COLLATE utf8_unicode_ci) = 0 THEN - + INSERT IGNORE INTO parking(code) VALUES(vShelvingFk); - INSERT INTO shelving(code, parkingFk) + INSERT INTO shelving(code, parkingFk) SELECT vShelvingFk, id - FROM parking - WHERE `code` = vShelvingFk COLLATE utf8_unicode_ci; - - END IF; - - IF (SELECT COUNT(*) FROM itemShelving - WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk - AND itemFk = vItemFk + FROM parking + WHERE `code` = vShelvingFk COLLATE utf8_unicode_ci; + + END IF; + + IF (SELECT COUNT(*) FROM itemShelving + WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk + AND itemFk = vItemFk AND packing = vPacking) = 1 THEN - UPDATE itemShelving SET quantity = quantity+vQuantity,visible = visible+vQuantity,available = available+vQuantity - WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk AND itemFk = vItemFk AND packing = vPacking; - - ELSE + UPDATE itemShelving + SET visible = visible+vQuantity + WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk AND itemFk = vItemFk AND packing = vPacking; + + ELSE CALL cache.last_buy_refresh(FALSE); - INSERT INTO itemShelving( itemFk, - shelvingFk, - shelve, - deep, - quantity, - visible, - available, - grouping, - packing, - packagingFk, - level) - - SELECT - vItemFk, - vShelvingFk, - vShelve, - vDeep, - vQuantity, - vQuantity, - vQuantity, - IFNULL(vGrouping, b.grouping), - IFNULL(vPacking, b.packing), - IFNULL(vPackagingFk, b.packageFk), - vLevel - FROM item i + INSERT INTO itemShelving( itemFk, + shelvingFk, + shelve, + visible, + grouping, + packing, + packagingFk) + + SELECT vItemFk, + vShelvingFk, + vShelve, + vQuantity, + IFNULL(vGrouping, b.grouping), + IFNULL(vPacking, b.packing), + IFNULL(vPackagingFk, b.packageFk) + FROM item i LEFT JOIN cache.last_buy lb ON i.id = lb.item_id AND lb.warehouse_id = vWarehouseFk LEFT JOIN buy b ON b.id = lb.buy_id WHERE i.id = vItemFk; - END IF; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `itemShelving_addByClaim` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelving_addByClaim`(vClaimFk INT, vShelvingFk VARCHAR(3)) +BEGIN +/** + * Insert items of claim into itemShelving. + * + * @param vClaimFk The claim + * @param vShelvingFk The shelving + * @table tmp.buyUltimate + */ + DECLARE vWarehouseFk INT; + + SELECT t.warehouseFk INTO vWarehouseFk + FROM claim c + JOIN ticket t ON t.id = c.ticketFk + WHERE c.id = vClaimFk; + + CALL buyUltimate (vWarehouseFk, util.VN_CURDATE()); + + INSERT INTO itemShelving (itemFk, shelvingFk, packing, `grouping`, visible) + SELECT s.itemFk, vShelvingFk, b.packing, b.`grouping`, cb.quantity AS visible + FROM claim c + JOIN claimBeginning cb ON c.id = cb.claimFk + JOIN sale s ON s.id = cb.saleFk + JOIN ticket t ON t.id = s.ticketFk + JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk AND bu.warehouseFk = t.warehouseFk + JOIN buy b ON b.id = bu.buyFk + WHERE c.id = vClaimFk; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -67025,15 +58190,15 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelving_BuyerGet`( ) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelving_BuyerGet`( ) BEGIN SELECT * FROM vn.buyer; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -67044,13 +58209,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelving_BuyerTask`(vWorkerFk INT ) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelving_BuyerTask`(vWorkerFk INT ) BEGIN SELECT ish.id, @@ -67072,7 +58237,7 @@ BEGIN AND it.workerFk = vWorkerFk AND ish.stars IS NULL ORDER BY p.pickingOrder; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -67085,11 +58250,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelving_filterBuyer`(vBuyerFk INT, vWarehouseFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelving_filterBuyer`(vBuyerFk INT, vWarehouseFk INT) proc:BEGIN /** * Lista de articulos filtrados por comprador @@ -67099,10 +58264,15 @@ proc:BEGIN * @return Lista de articulos */ DECLARE vCalcVisibleFk INT; - + + IF vBuyerFk = 103 THEN -- hay que arreglarlo despues de la campaña PAK 23/04/2022 + CALL vn.itemShelvingRadar_Urgent(); + LEAVE proc; + END IF; + CALL cache.visible_refresh(vCalcVisibleFk, TRUE, vWarehouseFk); - SELECT * FROM + SELECT * FROM (SELECT sub.itemFk, sub.longName, CONCAT('Hoy saldrán ', CAST(sub2.pendiente AS DECIMAL(10,0)), ' unidades.') `size`, @@ -67119,7 +58289,7 @@ proc:BEGIN 0 upstairs, SUM(IFNULL(iss.visible,0)) downstairs, IF(it.isPackaging, null, IFNULL(v.visible,0)) visible, - IFNULL(iss.sectorFk,0) sectorFk + IFNULL(iss.sectorFk,0) sectorFk FROM itemShelvingStock iss JOIN sector s ON s.id = iss.sectorFk JOIN item i on i.id = iss.itemFk @@ -67127,19 +58297,19 @@ proc:BEGIN LEFT JOIN cache.visible v ON v.item_id = iss.itemFk AND v.calc_id = vCalcVisibleFk WHERE s.warehouseFk = vWarehouseFk AND it.workerFk = vBuyerFk - GROUP BY itemFk + GROUP BY itemFk ) sub LEFT JOIN (SELECT s.itemFk, SUM(s.quantity) pendiente FROM sale s LEFT JOIN saleTracking st ON st.saleFk = s.id - JOIN ticket t ON t.id = s.ticketFk + JOIN ticket t ON t.id = s.ticketFk JOIN client c on c.id = t.clientFk JOIN clientType ct ON ct.id = c.clientTypeFk - WHERE t.shipped BETWEEN CURDATE() AND util.dayend(CURDATE()) + WHERE t.shipped BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE()) AND ISNULL(st.saleFk) AND ct.code IN ('normal', 'trust') GROUP BY s.itemFk - ) sub2 ON sub2.itemFk = sub.itemFk - UNION ALL + ) sub2 ON sub2.itemFk = sub.itemFk + UNION ALL SELECT v.item_id , i.longName, CONCAT('Hoy saldrán ', CAST(sub5.pendiente AS DECIMAL(10,0)), ' unidades.') `size`, @@ -67152,25 +58322,24 @@ proc:BEGIN FROM cache.visible v JOIN item i ON i.id = v.item_id JOIN itemType it ON it.id = i.typeFk - LEFT JOIN itemShelvingStock iss ON iss.itemFk = v.item_id + LEFT JOIN itemShelvingStock iss ON iss.itemFk = v.item_id LEFT JOIN (SELECT s.itemFk , SUM(s.quantity) pendiente FROM sale s LEFT JOIN saleTracking st ON st.saleFk = s.id - JOIN ticket t ON t.id = s.ticketFk + JOIN ticket t ON t.id = s.ticketFk JOIN client c on c.id = t.clientFk JOIN clientType ct ON ct.id = c.clientTypeFk - WHERE t.shipped BETWEEN CURDATE() AND util.dayend(CURDATE()) + WHERE t.shipped BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE()) AND ISNULL(st.saleFk) AND ct.code IN ('normal', 'trust') GROUP BY s.itemFk ) sub5 ON sub5.itemFk = v.item_id WHERE v.calc_id = vCalcVisibleFk - AND ISNULL(iss.itemFk) + AND ISNULL(iss.itemFk) AND it.workerFk = vBuyerFk ) sub3 WHERE nicho ORDER BY producer; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -67183,21 +58352,21 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelving_get`(IN vShelvingFk VARCHAR(8)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelving_get`(IN vShelvingFk VARCHAR(8)) BEGIN /** - * Lista artículos de itemshelving + * Lista artículos de itemshelving * * @param vShelvingFk matrícula del carro - * + * **/ - SELECT ish.itemFk as item, - IFNULL(i.longName, CONCAT(i.name, ' ', i.size)) as description, + SELECT ish.itemFk as item, + IFNULL(i.longName, CONCAT(i.name, ' ', i.size)) as description, ish.visible as visible, ceil(ish.visible/ish.packing) as stickers, ish.packing as packing, @@ -67219,47 +58388,119 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `itemShelving_getAlternatives` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelving_getAlternatives`(vShelvingFk VARCHAR(10)) +BEGIN +/** + * Devuelve un listado de posibles ubicaciones alternativas a ubicar los item de la matricula + * del carro que se le ha pasado. + * + * @param vShelvingFk matricula del carro + */ + SELECT is2.id,is2.shelvingFk , p.code, is2.itemFk , is2.visible, p.pickingOrder + FROM itemShelving is2 + JOIN shelving sh ON sh.code = is2.shelvingFk + JOIN parking p ON p.id = sh.parkingFk + JOIN sector s ON s.id = p.sectorFk + LEFT JOIN worker w ON w.sectorFk = s.id AND w.id = account.myUser_getId() + JOIN warehouse wh ON wh.id = s.warehouseFk + JOIN itemShelving is3 ON is3.itemFk = is2.itemFk AND is3.shelvingFk = vShelvingFk COLLATE utf8_unicode_ci + WHERE is2.shelvingFk <> vShelvingFk COLLATE utf8_unicode_ci + GROUP BY is2.id + ORDER BY p.pickingOrder DESC; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `itemShelving_getInfo` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelving_getInfo`(vItemFk VARCHAR(22)) +BEGIN +/** + * Muestra información realtiva a la ubicación de un item + * + * @param vItemFk Id del item + */ + SELECT vn.barcodeToItem(vItemFk) + INTO vItemFk; + + SELECT pk.code Parking, + sh.code Matricula, + ish.visible visible, + ish.created created, + ish.itemFk itemFk, + sh.priority + FROM vn.itemShelving ish + JOIN vn.shelving sh ON sh.`code` = ish.shelvingFk + JOIN vn.parking pk ON pk.id = sh.parkingFk + WHERE ish.itemFk = vItemFk + ORDER BY sh.priority DESC, created ASC; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `itemShelving_getSaleDate` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelving_getSaleDate`(vShelvingFk VARCHAR(3)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelving_getSaleDate`(vShelvingFk VARCHAR(3)) BEGIN - + /* Devuelve la minima fecha en que se necesita cada producto en esa matricula. - * + * * @param vShelvingFk Matrícula del carro o pallet */ - + DECLARE vWarehouseFk INT; SELECT warehouseFk INTO vWarehouseFk FROM shelving s - JOIN parking p ON s.parkingFk = p.id + JOIN parking p ON s.parkingFk = p.id JOIN sector st ON st.id = p.sectorFk WHERE s.code = vShelvingFk COLLATE utf8_unicode_ci; - + DROP TEMPORARY TABLE IF EXISTS tmp.itemShelvingDistinct; CREATE TEMPORARY TABLE tmp.itemShelvingDistinct (PRIMARY KEY (itemFk)) ENGINE = MEMORY SELECT itemFk, SUM(visible) visible - FROM vn.itemShelving + FROM vn.itemShelving WHERE shelvingFk = vShelvingFk COLLATE utf8_unicode_ci - GROUP BY itemFk; - + GROUP BY itemFk; + DROP TEMPORARY TABLE IF EXISTS tmp.item; CREATE TEMPORARY TABLE tmp.item (PRIMARY KEY (itemFk)) ENGINE = MEMORY SELECT * FROM tmp.itemShelvingDistinct; - + DROP TEMPORARY TABLE IF EXISTS tmp.stockByDay; CREATE TEMPORARY TABLE tmp.stockByDay (index (itemFk, dated)) @@ -67270,42 +58511,42 @@ BEGIN FROM ( SELECT * FROM ( SELECT t2.* FROM ( - SELECT item_id itemFk, amount, CURDATE() dated - FROM cache.stock + SELECT item_id itemFk, amount, util.VN_CURDATE() dated + FROM cache.stock WHERE warehouse_id = vWarehouseFk UNION ALL - SELECT ish.itemFk, - sum(visible), CURDATE() - FROM vn.itemShelving ish - JOIN shelving sh ON sh.code = ish.shelvingFk - JOIN parking p ON sh.parkingFk = p.id + SELECT ish.itemFk, - sum(visible), util.VN_CURDATE() + FROM vn.itemShelving ish + JOIN shelving sh ON sh.code = ish.shelvingFk + JOIN parking p ON sh.parkingFk = p.id JOIN sector s ON s.id = p.sectorFk - WHERE s.isReserve + WHERE s.isReserve GROUP BY ish.itemFk UNION ALL SELECT item_id, sum(iei.amount), dat FROM vn2008.item_entry_in iei - WHERE dat >= CURDATE() + WHERE dat >= util.VN_CURDATE() AND warehouse_id = vWarehouseFk AND isVirtualStock = FALSE GROUP BY item_id, dat - UNION ALL + UNION ALL SELECT item_id, sum(ieo.amount), dat - FROM vn2008.item_entry_out ieo - WHERE dat >= CURDATE() + FROM vn2008.item_entry_out ieo + WHERE dat >= util.VN_CURDATE() AND warehouse_id = vWarehouseFk GROUP BY item_id, dat UNION ALL SELECT i.itemFk, sum(io.amount), dat FROM vn2008.item_out io JOIN tmp.item i ON i.itemFk = io.item_id - WHERE io.dat >= CURDATE() + WHERE io.dat >= util.VN_CURDATE() AND io.warehouse_id = vWarehouseFk GROUP BY io.item_id, io.dat - ) t2 + ) t2 JOIN tmp.itemShelvingDistinct ish ON ish.itemFk = t2.itemFk) t order by t.itemFk, DATE(t.dated), t.amount DESC) t3; - - SELECT sbd.itemFk, i.longName, DATE(dated) dated, ish.visible amount, sbd.stock + + SELECT sbd.itemFk, i.longName, DATE(dated) dated, ish.visible amount, sbd.stock FROM tmp.stockByDay sbd JOIN vn.item i ON i.id = sbd.itemFk JOIN tmp.itemShelvingDistinct ish ON ish.itemFk = sbd.itemFk @@ -67326,21 +58567,22 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelving_inventory`(vParkingFromFk INT, vParkingToFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelving_inventory`(vParkingFromFk INT, vParkingToFk INT) BEGIN - - /* Devuelve un listado de ubicaciones a revisar - * + + /** + * Devuelve un listado de ubicaciones a revisar + * * @param vParkingFromFk Parking de partida, identificador de vn.parking * @param vParkingToFk Parking de llegada, identificador de vn.parking */ - + DECLARE vSectorFk INT; DECLARE vPickingOrderFrom INT; DECLARE vPickingOrderTo INT; @@ -67348,30 +58590,30 @@ BEGIN SELECT p.sectorFk, p.pickingOrder INTO vSectorFk, vPickingOrderFrom FROM vn.parking p WHERE p.id = vParkingFromFk; - + SELECT p.pickingOrder INTO vPickingOrderTo FROM vn.parking p WHERE p.id = vParkingToFk; - + CALL vn.visible_getMisfit(vSectorFk); - SELECT p.code parking , - ish.shelvingFk , - ish.itemFk, + SELECT p.code parking , + ish.shelvingFk , + ish.itemFk, i.longName, - ish.visible , + ish.visible , ish.visible / ish.packing packs, - ish.packing, + ish.packing, sm.visible - sm.parked faltan - FROM vn.itemShelving ish - JOIN vn.item i ON i.id = ish.itemFk - JOIN tmp.stockMisfit sm ON sm.itemFk = ish.itemFk - JOIN vn.shelving sh ON sh.code = ish.shelvingFk - JOIN vn.parking p ON p.id = sh.parkingFk + FROM vn.itemShelving ish + JOIN vn.item i ON i.id = ish.itemFk + JOIN tmp.stockMisfit sm ON sm.itemFk = ish.itemFk + JOIN vn.shelving sh ON sh.code = ish.shelvingFk + JOIN vn.parking p ON p.id = sh.parkingFk WHERE p.pickingOrder BETWEEN vPickingOrderFrom AND vPickingOrderTo AND p.sectorFk = vSectorFk ORDER BY p.pickingOrder ; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -67382,19 +58624,19 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelving_StarsUpdate`(vId INT, vStars INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelving_StarsUpdate`(vId INT, vStars INT) BEGIN UPDATE vn.itemShelving SET stars = vStars WHERE id = vId; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -67407,11 +58649,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelving_update`(vVisible INT, vPacking INT, vShelf INT ,vGrouping INT ) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelving_update`(vVisible INT, vPacking INT, vShelf INT ,vGrouping INT ) BEGIN /** * Actualiza itemShelving. @@ -67421,12 +58663,11 @@ BEGIN * @param vPacking el packing del del producto en itemShelving * @param vGrouping el grouping del producto en itemShelving */ - UPDATE itemShelving SET - available = vVisible, - visible = vVisible, - packing = vPacking, - grouping = vGrouping - WHERE id = vShelf; + UPDATE itemShelving + SET visible = vVisible, + packing = vPacking, + grouping = vGrouping + WHERE id = vShelf; END ;; DELIMITER ; @@ -67438,13 +58679,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemStock`(vWarehouseFk SMALLINT, vDated DATETIME, vItemFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemStock`(vWarehouseFk SMALLINT, vDated DATETIME, vItemFk INT) BEGIN /** * Calcula el stock del vWarehouseFk desde FechaInventario hasta vDated @@ -67452,36 +58693,36 @@ BEGIN * @param vDated max date to filter * @param vItemFk item id **/ - + DECLARE vIsLogifloraDay BOOLEAN; SET vDated = TIMESTAMP(DATE(vDated), '00:00:00'); SELECT vn.isLogifloraDay(vDated, vWarehouseFk) INTO vIsLogifloraDay ; - + DROP TEMPORARY TABLE IF EXISTS tmp.itemList; CREATE TEMPORARY TABLE tmp.itemList (UNIQUE INDEX i USING HASH (itemFk)) ENGINE = MEMORY SELECT itemFk, SUM(quantity) stock, SUM(quantity) visible, SUM(quantity) available FROM ( - SELECT itemFk, quantity + SELECT itemFk, quantity FROM itemTicketOut - WHERE shipped >= CURDATE() AND shipped < vDated + WHERE shipped >= util.VN_CURDATE() AND shipped < vDated AND warehouseFk = vWarehouseFk AND (vItemFk IS NULL OR itemFk = vItemFk) UNION ALL - SELECT itemFk, quantity + SELECT itemFk, quantity FROM itemEntryIn i - LEFT JOIN edi.warehouseFloramondo wf ON wf.entryFk = i.entryFk - WHERE i.landed >= CURDATE() AND i.landed < vDated + LEFT JOIN edi.warehouseFloramondo wf ON wf.entryFk = i.entryFk + WHERE i.landed >= util.VN_CURDATE() AND i.landed < vDated AND i.warehouseInFk = vWarehouseFk AND (vItemFk IS NULL OR i.itemFk = vItemFk) AND (ISNULL(wf.entryFk) OR vIsLogifloraDay) UNION ALL - SELECT itemFk, quantity + SELECT itemFk, quantity FROM itemEntryOut - WHERE shipped >= CURDATE() AND shipped < vDated + WHERE shipped >= util.VN_CURDATE() AND shipped < vDated AND warehouseOutFk = vWarehouseFk AND (vItemFk IS NULL OR itemFk = vItemFk) ) t @@ -67490,7 +58731,7 @@ BEGIN CALL `cache`.stock_refresh (FALSE); INSERT INTO tmp.itemList (itemFk,stock,visible,available) - SELECT item_id,amount,amount,amount + SELECT item_id,amount,amount,amount FROM `cache`.stock WHERE warehouse_id = vWarehouseFk AND (vItemFk IS NULL OR vItemFk = item_id) ON DUPLICATE KEY UPDATE @@ -67503,211 +58744,20 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemStockUpdate` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemStockUpdate`( - vItemFk INT, - vWarehouseFk INT, - vNewVisible INT, - vIsTrash BOOLEAN) -BEGIN - - DECLARE vTicketFk INT; - DECLARE vClientFk INT; - DECLARE vCompanyVnlFk INT DEFAULT 442; - DECLARE vVisible INT DEFAULT 0; - DECLARE vCalc INT; - DECLARE vParkedStuff INT; - - SELECT barcodeToItem(vItemFk) INTO vItemFk; - - CALL cache.visible_refresh(vCalc, TRUE, vWarehouseFk); - - SELECT IFNULL(visible,0) INTO vVisible - FROM cache.visible - WHERE calc_id = vCalc - AND item_id = vItemFk; - - SELECT sum(visible) INTO vParkedStuff - FROM itemShelvingStock - WHERE warehouseFk = vWarehouseFk - AND itemFk = vItemFk; - - SET vNewVisible = vNewVisible + IFNULL(vParkedStuff,0); - - SELECT IF(vIsTrash, 200, 400) INTO vClientFk; - - SELECT t.id INTO vTicketFk - FROM ticket t - JOIN address a ON a.id=t.addressFk - WHERE t.warehouseFk = vWarehouseFk - AND t.clientFk = vClientFk - AND DATE(t.shipped) = CURDATE() - AND a.isDefaultAddress - LIMIT 1; - - IF vTicketFk IS NULL THEN - - CALL ticket_add( - vClientFk, - CURDATE(), - vWarehouseFk, - vCompanyVnlFk, - NULL, - NULL, - NULL, - CURDATE(), - account.userGetId(), - FALSE, - vTicketFk); - - END IF; - - INSERT INTO sale(ticketFk, itemFk, concept, quantity, price, discount) - SELECT vTicketFk, vItemFk, CONCAT(longName,' ', getWorkerCode(), ' ',LEFT(CAST(NOW() AS TIME),5)), vVisible - vNewVisible, 0, 0 - FROM item - WHERE id = vItemFk; - - UPDATE cache.visible - SET visible = vNewVisible - WHERE calc_id = vCalc - AND item_id = vItemFk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemStockUpdate__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemStockUpdate__`( - vItemFk INT, - vWarehouseFk INT, - vNewVisible INT, - vIsTrash BOOLEAN) -BEGIN - - DECLARE vTicketFk INT; - DECLARE vClientFk INT; - DECLARE vCompanyVnlFk INT DEFAULT 442; - DECLARE vAgencyModeOthersFk INT DEFAULT 2; - DECLARE vVisible INT DEFAULT 0; - DECLARE vCalc INT; - DECLARE vCurrentTime VARCHAR(5); - DECLARE vParkedStuff INT; - - SELECT vn.barcodeToItem(vItemFk) INTO vItemFk; - - CALL cache.visible_refresh(vCalc, TRUE, vWarehouseFk); - - SELECT IFNULL(visible,0) INTO vVisible - FROM cache.visible - WHERE calc_id = vCalc - AND item_id = vItemFk; - - SELECT sum(visible) INTO vParkedStuff - FROM vn.itemShelvingStock - WHERE warehouseFk = vWarehouseFk - AND itemFk = vItemFk; - - SET vNewVisible = vNewVisible + IFNULL(vParkedStuff,0); - - SELECT IF(vIsTrash,200,400) INTO vClientFk; - - SELECT t.id INTO vTicketFk - FROM vn.ticket t - JOIN vn.address a ON a.id=t.addressFk - WHERE t.warehouseFk = vWarehouseFk - AND t.clientFk = vClientFk - AND DATE(t.shipped) = CURDATE() - AND a.isDefaultAddress - LIMIT 1; - - IF vTicketFk IS NULL THEN - - CALL vn.ticketCreateWithoutZone(vClientFk, CURDATE(), vWarehouseFk, vCompanyVnlFk, NULL, vAgencyModeOthersFk, NULL, CURDATE(), account.userGetId(),vTicketFk); - - END IF; - - INSERT INTO sale(ticketFk, itemFk, concept, quantity, price, discount) - SELECT vTicketFk, vItemFk, CONCAT(longName," ",vn.getWorkerCode(), " ",LEFT(CAST(NOW() AS TIME),5)), vVisible - vNewVisible,0,0 - FROM vn.item - WHERE id = vItemFk; - - UPDATE cache.visible - SET visible = vNewVisible - WHERE calc_id = vCalc - AND item_id = vItemFk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemStockVisible_verify` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemStockVisible_verify`(vItemFk INT, vQuantity INT) -BEGIN - - INSERT INTO vn.itemShelving(itemFk, - shelvingFk, - quantity, - visible, - available, - packing) - VALUES( vItemFk, - 'FAL', - -vQuantity, - -vQuantity, - -vQuantity, - -vQuantity); - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `itemTagMake` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemTagMake`(vItemFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemTagMake`(vItemFk INT) BEGIN -/* * Crea los tags usando la tabla plantilla itemTag +/* * Crea los tags usando la tabla plantilla itemTag * y si no existe a partir de la ficha del artículo. * @param vItemFk El item al que se le añaden los tags */ @@ -67717,33 +58767,33 @@ BEGIN DECLARE vProducer VARCHAR(50); DECLARE vOrigin VARCHAR(20); DECLARE vTypeFk INTEGER; - - DELETE FROM itemTag + + DELETE FROM itemTag WHERE itemFk = vItemFk; - - SELECT typeFk INTO vTypeFk + + SELECT typeFk INTO vTypeFk FROM item WHERE id = vItemFk; - + INSERT INTO itemTag(itemFk, tagFk, value, priority) SELECT vItemFk, itt.tagFk, NULL, itt.priority FROM itemTag it LEFT JOIN itemTypeTag itt ON itt.itemTypeFk = vTypeFk WHERE it.itemFk = vItemFk; - + IF (SELECT COUNT(*) FROM itemTag WHERE itemFk = vItemFk LIMIT 1) = 0 THEN - SELECT ik.name, i.size, i.category, p.name, o.name + SELECT ik.name, i.size, i.category, p.name, o.name INTO vInk, vSize, vCategory, vProducer, vOrigin FROM item i LEFT JOIN ink ik ON ik.id = i.inkFk LEFT JOIN producer p ON p.id = i.producerFk AND p.isVisible LEFT JOIN origin o ON o.id = i.originFk WHERE i.id = vItemFk; - + INSERT IGNORE INTO itemTag(itemFk, tagFk, value, priority) VALUES(vItemFk, 1, vInk, 1); - + INSERT IGNORE INTO itemTag(itemFk, tagFk, value, priority) VALUES (vItemFk, 8, vSize, 2); @@ -67752,11 +58802,11 @@ BEGIN INSERT IGNORE INTO itemTag(itemFk, tagFk, value, priority) VALUES(vItemFk, 37, vProducer, 4); - + INSERT IGNORE INTO itemTag(itemFk, tagFk, value, priority) VALUES(vItemFk, 35, vOrigin, 5); END IF; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -67767,22 +58817,22 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemTagReorder`(itemTypeFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemTagReorder`(itemTypeFk INT) BEGIN SET @isTriggerDisabled = TRUE; - + -- No se puede usar temporary porque da error Error Code: 1137. No puedo reabrir tabla: 'i DROP TABLE IF EXISTS tmp.item; CREATE TABLE tmp.item SELECT DISTINCT i.id - FROM vn.item i + FROM vn.item i WHERE i.typeFk = itemTypeFk; UPDATE itemTag it @@ -67791,8 +58841,8 @@ BEGIN JOIN itemTypeTag itt ON itt.itemTypeFk = item.typeFk AND itt.tagFk = it.tagFk SET it.priority = itt.priority WHERE itt.itemTypeFk = itemTypeFk; - - CALL item_refreshTags(); + + CALL item_refreshTags(); SET @isTriggerDisabled = FALSE; @@ -67809,20 +58859,20 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemTagReorderByName`(vName VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemTagReorderByName`(vName VARCHAR(255)) BEGIN SET @isTriggerDisabled = TRUE; - + -- No se puede usar temporary porque da error Error Code: 1137. No puedo reabrir tabla: 'i DROP TABLE IF EXISTS tmp.item; CREATE TABLE tmp.item SELECT DISTINCT i.id - FROM vn.item i + FROM vn.item i WHERE i.`name` LIKE CONCAT(vName,'%'); UPDATE itemTag it @@ -67831,8 +58881,8 @@ BEGIN JOIN itemTypeTag itt ON itt.itemTypeFk = item.typeFk AND itt.tagFk = it.tagFk SET it.priority = itt.priority WHERE itt.itemTypeFk = itemTypeFk; - - CALL item_refreshTags(); + + CALL item_refreshTags(); SET @isTriggerDisabled = FALSE; @@ -67843,184 +58893,48 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemTagReorderByName__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemTagReorderByName__`(vName VARCHAR(255)) -BEGIN - -DECLARE vDone BOOL DEFAULT FALSE; - DECLARE vItem INT; - - DECLARE cur CURSOR FOR - SELECT id - FROM upda; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - SET @isTriggerDisabled = TRUE; - - DROP TEMPORARY TABLE IF EXISTS upda; - CREATE TEMPORARY TABLE upda - SELECT DISTINCT i.id - FROM vn.item i - WHERE i.name LIKE CONCAT(vName,'%'); - - UPDATE itemTag it - JOIN item i ON i.id = it.itemFk - JOIN itemTypeTag itt ON itt.itemTypeFk = i.typeFk AND itt.tagFk = it.tagFk - SET it.priority = itt.priority - WHERE itt.itemTypeFk = itemTypeFk; - - OPEN cur; - proc: LOOP - SET vDone = FALSE; - FETCH cur INTO vItem; - IF vDone THEN - LEAVE proc; - END IF; - CALL vn.itemRefreshTags(vItem); - END LOOP; - CLOSE cur; - SET @isTriggerDisabled = FALSE; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemTagReorder__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemTagReorder__`(itemTypeFk INT) -BEGIN - -DECLARE vDone BOOL DEFAULT FALSE; - DECLARE vItem INT; - - DECLARE cur CURSOR FOR - SELECT id - FROM upda; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - SET @isTriggerDisabled = TRUE; - - DROP TEMPORARY TABLE IF EXISTS upda; - create temporary table upda - SELECT DISTINCT i.id - FROM vn.item i - WHERE i.typeFk = itemTypeFk; - - UPDATE itemTag it - JOIN item i ON i.id = it.itemFk - JOIN itemTypeTag itt ON itt.itemTypeFk = i.typeFk AND itt.tagFk = it.tagFk - SET it.priority = itt.priority - WHERE itt.itemTypeFk = itemTypeFk; - - OPEN cur; - proc: LOOP - SET vDone = FALSE; - FETCH cur INTO vItem; - IF vDone THEN - LEAVE proc; - END IF; - CALL vn.itemRefreshTags(vItem); - END LOOP; - CLOSE cur; - SET @isTriggerDisabled = FALSE; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemTagReplace__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemTagReplace__`(fromItemFk INT, toItemFk INT) -BEGIN - -/* - * deprecated use itemTag_replace - */ - DELETE FROM itemTag - WHERE itemFk = toItemFk; - - INSERT INTO itemTag(itemFk, tagFk, value, priority) - SELECT toItemFk, tagFk, value, priority - FROM itemTag - WHERE itemFk = fromItemFk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `itemTag_replace` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemTag_replace`(vItemFromFk INT, vItemToFk INT, vPicture VARCHAR(100)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemTag_replace`(vItemFromFk INT, vItemToFk INT, vPicture VARCHAR(100)) BEGIN - + /* Reemplaza los tags de un artículo por los de otro, así como su imagen - * + * * @param vItemFromFk id de vn.item con el artículo del que se toman los tags * @param vItemToFk id de vn.item con el artículo del que se toman los tags * @param vPicture imagen del artículo. Opcional. Si no se especifica, hereada la del vItemFromFk */ - DELETE FROM vn.itemTag + DELETE FROM vn.itemTag WHERE itemFk = vItemToFk; - + INSERT INTO vn.itemTag(itemFk, tagFk, value, priority) SELECT vItemToFk, tagFk, value, priority - FROM vn.itemTag + FROM vn.itemTag WHERE itemFk = vItemFromFk; - + IF ISNULL(vPicture) THEN - - SELECT image INTO vPicture - FROM vn.item + + SELECT image INTO vPicture + FROM vn.item WHERE id = vItemFromFk; - + END IF; - UPDATE vn.item i + UPDATE vn.item i SET i.image = vPicture WHERE i.id = vItemToFk; - + CALL vn.itemRefreshTags(vItemToFk); - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -68031,13 +58945,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemTopSeller`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemTopSeller`() BEGIN DECLARE vCategoryFk INTEGER; DECLARE vDone INT DEFAULT FALSE; @@ -68045,9 +58959,9 @@ BEGIN SELECT DISTINCT id FROM vn.itemCategory WHERE merchandise <> FALSE; - + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN + DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN RESIGNAL; END; @@ -68056,47 +58970,47 @@ BEGIN SELECT s.itemFk, SUM(s.quantity) AS total, v.tipo_id typeFk FROM vn.sale s INNER JOIN bs.ventas v ON v.Id_Movimiento = s.id - WHERE v.fecha BETWEEN TIMESTAMPADD(DAY, - 7, CURDATE()) AND CURDATE() + WHERE v.fecha BETWEEN TIMESTAMPADD(DAY, - 7, util.VN_CURDATE()) AND util.VN_CURDATE() GROUP BY s.itemFk; - + DROP TABLE IF EXISTS tmp.topSeller; - CREATE TEMPORARY TABLE tmp.topSeller - ( + CREATE TEMPORARY TABLE tmp.topSeller + ( `id` int(11) NOT NULL DEFAULT '0', `typeFk` smallint(5) unsigned NOT NULL, `itemCategoryFk` int(10) unsigned NOT NULL, `total` bigint(21) NOT NULL DEFAULT '0' ) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - + OPEN rs; read_loop: LOOP FETCH rs INTO vCategoryFk; - + IF vDone THEN LEAVE read_loop; END IF; - + INSERT INTO tmp.topSeller SELECT tsm.itemFk, tsm.typeFk, it.categoryFk, tsm.total FROM tmp.topSellerMin tsm INNER JOIN vn.itemType it ON it.id = tsm.typeFk WHERE it.categoryFk = vCategoryFk ORDER BY tsm.itemFk ,tsm.total DESC - LIMIT 5; + LIMIT 5; END LOOP; CLOSE rs; - + SELECT i.name ,i.id, i.image, i.typeFk, it.categoryFk AS itemCategoryFk, ic.name AS itemCategoryName, it.name AS itemTypeName, ts.total FROM tmp.topSeller ts INNER JOIN vn.item i ON i.id = ts.id INNER JOIN vn.itemType it ON it.id = ts.typeFk INNER JOIN vn.itemCategory ic ON ic.id = it.categoryFk; - + DROP TABLE IF EXISTS topSellerMin; DROP TABLE IF EXISTS tmp.topSeller; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -68109,14 +59023,14 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemTrash`( - vItemFk INT, - vWarehouseFk INT, - vQuantity INT, +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemTrash`( + vItemFk INT, + vWarehouseFk INT, + vQuantity INT, vIsTrash BOOLEAN) BEGIN @@ -68124,112 +59038,51 @@ BEGIN DECLARE vClientFk INT; DECLARE vCompanyVnlFk INT DEFAULT 442; DECLARE vCalc INT; - - SELECT barcodeToItem(vItemFk) INTO vItemFk; - + + SELECT barcodeToItem(vItemFk) INTO vItemFk; + SELECT IF(vIsTrash, 200, 400) INTO vClientFk; - + SELECT t.id INTO vTicketFk FROM ticket t - JOIN address a ON a.id=t.addressFk + JOIN address a ON a.id=t.addressFk WHERE t.warehouseFk = vWarehouseFk AND t.clientFk = vClientFk - AND DATE(t.shipped) = CURDATE() + AND DATE(t.shipped) = util.VN_CURDATE() AND a.isDefaultAddress - LIMIT 1; - + LIMIT 1; + CALL cache.visible_refresh(vCalc, TRUE, vWarehouseFk); - - IF vTicketFk IS NULL THEN - + + IF vTicketFk IS NULL THEN + CALL ticket_add( - vClientFk, - CURDATE(), - vWarehouseFk, - vCompanyVnlFk, - NULL, - NULL, - NULL, - CURDATE(), - account.userGetId(), + vClientFk, + util.VN_CURDATE(), + vWarehouseFk, + vCompanyVnlFk, + NULL, + NULL, + NULL, + util.VN_CURDATE(), + account.myUser_getId(), FALSE, vTicketFk); END IF; - - INSERT INTO sale(ticketFk, itemFk, concept, quantity) - SELECT vTicketFk, - vItemFk, - CONCAT(longName,' ',getWorkerCode(), ' ', LEFT(CAST(NOW() AS TIME),5)), - vQuantity - FROM item - WHERE id = vItemFk; - - UPDATE cache.visible - SET visible = visible - vQuantity - WHERE calc_id = vCalc - AND item_id = vItemFk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemTrash__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemTrash__`( - vItemFk INT, - vWarehouseFk INT, - vQuantity INT, - vIsTrash BOOLEAN) -BEGIN - DECLARE vTicketFk INT; - DECLARE vClientFk INT; - DECLARE vCompanyVnlFk INT DEFAULT 442; - DECLARE vAgencyModeOthersFk INT DEFAULT 2; - DECLARE vCurrentTime VARCHAR(5); - DECLARE vCalc INT; - - SELECT vn.barcodeToItem(vItemFk) INTO vItemFk; - - SELECT IF(vIsTrash,200,400) INTO vClientFk; - - SELECT t.id INTO vTicketFk - FROM vn.ticket t - JOIN vn.address a ON a.id=t.addressFk - WHERE t.warehouseFk = vWarehouseFk - AND t.clientFk = vClientFk - AND DATE(t.shipped) = CURDATE() - AND a.isDefaultAddress - LIMIT 1; - - CALL cache.visible_refresh(vCalc, TRUE, vWarehouseFk); - - IF vTicketFk IS NULL THEN - - CALL vn.ticketCreateWithoutZone(vClientFk, CURDATE(), vWarehouseFk, vCompanyVnlFk, NULL, vAgencyModeOthersFk, NULL, CURDATE(), account.userGetId(),vTicketFk); - - END IF; - - INSERT INTO sale(ticketFk, itemFk, concept, quantity, price, discount) - SELECT vTicketFk, vItemFk, CONCAT(longName," ",vn.getWorkerCode(), " ",LEFT(CAST(NOW() AS TIME),5)), vQuantity,0,0 - FROM vn.item + INSERT INTO sale(ticketFk, itemFk, concept, quantity) + SELECT vTicketFk, + vItemFk, + CONCAT(longName,' ',getWorkerCode(), ' ', LEFT(CAST(util.VN_NOW() AS TIME),5)), + vQuantity + FROM item WHERE id = vItemFk; - - UPDATE cache.visible + + UPDATE cache.visible SET visible = visible - vQuantity - WHERE calc_id = vCalc + WHERE calc_id = vCalc AND item_id = vItemFk; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -68240,13 +59093,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemUpdateTag`(IN vItem BIGINT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `itemUpdateTag`(IN vItem BIGINT) BEGIN @@ -68270,7 +59123,7 @@ SET tag6 = t.name, value6 = it.value WHERE it.priority = 2 AND (vItem IS NULL OR vItem = it.itemFk); -UPDATE item i +UPDATE item i JOIN itemTag it ON it.itemFk = i.id JOIN tag t ON t.id = it.tagFk SET tag7 = t.name, value7 = it.value @@ -68284,6 +59137,269 @@ SET tag8 = t.name, value8 = it.value WHERE it.priority = 4 AND (vItem IS NULL OR vItem = it.itemFk); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_clean` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_clean`() +BEGIN +/** + * Elimina todos los items repetidos y los + * sustituye por el que tiene menor id + */ + DECLARE vItemFrom INT; + DECLARE vItemEnd INT; + DECLARE vItemOld INT; + DECLARE vItemNew INT; + DECLARE vCurrentItem INT; + DECLARE vQuantity INT; + DECLARE vCounter INT DEFAULT 0; + DECLARE vIsStop BOOL DEFAULT FALSE; + DECLARE vDone BOOL DEFAULT FALSE; + DECLARE curItemClean CURSOR FOR + SELECT i.id idOld, + i2.id idNew + FROM vn.item i + JOIN (SELECT i.id, + i.name, + i.subname, + i.value5, + i.value6, + i.value7, + i.value8, + i.value9, + i.value10, + i.NumberOfItemsPerCask, + i.EmbalageCode, + i.quality + FROM vn.item i + LEFT JOIN (SELECT i.id, + sr.NumberOfUnits, + MAX(di.LatestOrderDateTime) lodt + FROM vn.item i + JOIN edi.supplyResponse sr ON sr.ID = i.supplyResponseFk + JOIN edi.deliveryInformation di ON di.supplyResponseID = i.supplyResponseFk + GROUP BY i.id) sub ON sub.id = i.id + WHERE isFloramondo + AND (ISNULL(i.supplyResponseFk) + OR sub.NumberOfUnits = 0 + OR sub.lodt < util.VN_NOW()) + GROUP BY i.name, + subname, + value5, + value6, + value7, + value8, + value9, + value10, + NumberOfItemsPerCask, + EmbalageCode, + quality + ORDER BY i.id) i2 ON i2.name <=> i.name + AND i2.subname <=> i.subname + AND i2.value5 <=> i.value5 + AND i2.value6 <=> i.value6 + AND i2.value7 <=> i.value7 + AND i2.value8 <=> i.value8 + AND i2.value9 <=> i.value9 + AND i2.value10 <=> i.value10 + AND i2.NumberOfItemsPerCask <=> i.NumberOfItemsPerCask + AND i2.EmbalageCode <=> i.EmbalageCode + AND i2.quality <=> i.quality + WHERE isFloramondo + AND i.id <> i2.id + ORDER BY i.id; + + DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET vDone = TRUE; + + SELECT itemFrom INTO vItemFrom + FROM vn.itemCleanLog + ORDER BY created DESC + LIMIT 1; + + IF vItemFrom IS NULL THEN + SELECT MIN(id) INTO vItemFrom + FROM vn.item i + WHERE isFloramondo; + END IF; + + SELECT quantity + INTO vQuantity + FROM vn.itemCleanConfig; + + SET vItemEnd = vItemFrom + vQuantity; + + SET @isModeInventory:= TRUE; + + OPEN curItemClean; + curItemClean: LOOP + + FETCH curItemClean INTO vItemOld, vItemNew; + + START TRANSACTION; + + # Deletes + UPDATE IGNORE vn.itemCost + SET itemFk = vItemNew + WHERE itemFk = vItemOld; + + DELETE FROM vn.itemCost + WHERE itemFk = vItemOld; + + DELETE FROM vn2008.rec_translator + WHERE Id_Article = vItemOld; + + DELETE FROM bs.waste + WHERE itemFk = vItemOld; + + DELETE FROM vn.priceFixed + WHERE itemFk = vItemOld; + + DELETE FROM vn.itemMatchProperties + WHERE itemFk = vItemOld; + + DELETE FROM vn.itemBotanical + WHERE itemFk = vItemOld; + + DELETE FROM vn.itemProposal + WHERE itemFk = vItemOld; + + DELETE FROM vn.itemTag + WHERE itemFk = vItemOld; + + DELETE FROM vn.itemBarcode + WHERE itemFk = vItemOld; + + DELETE FROM vn.itemTaxCountry + WHERE itemFk = vItemOld; + + # Updates + UPDATE vn.buy + SET itemFk = vItemNew + WHERE itemFk = vItemOld; + + UPDATE vn.sale + SET itemFk = vItemNew + WHERE itemFk = vItemOld; + + UPDATE vn.specialPrice + SET itemFk = vItemNew + WHERE itemFk = vItemOld; + + UPDATE vn.packaging + SET itemFk = vItemNew + WHERE itemFk = vItemOld; + + UPDATE vn.packaging + SET freightItemFk = vItemNew + WHERE freightItemFk = vItemOld; + + UPDATE hedera.orderRow + SET itemFk = vItemNew + WHERE itemFk = vItemOld; + + UPDATE vn.itemLog + SET originFk = vItemNew + WHERE originFk = vItemOld; + + UPDATE vn.itemShelving + SET itemFk = vItemNew + WHERE itemFk = vItemOld; + + UPDATE vn.ticketPackagingStartingStock + SET itemFk = vItemNew + WHERE itemFk = vItemOld; + + UPDATE vn.inventoryFailure + SET itemFk = vItemNew + WHERE itemFk = vItemOld; + + UPDATE vn.genericAllocation + SET itemFk = vItemNew + WHERE itemFk = vItemOld; + + UPDATE vn.itemPlacementSupply + SET itemFk = vItemNew + WHERE itemFk = vItemOld; + + # Eliminamos el item sustituido + DELETE FROM vn.item + WHERE id = vItemOld; + + COMMIT; + + SELECT isStop INTO vIsStop + FROM vn.itemCleanConfig; + + IF vIsStop OR vItemOld > vItemEnd OR vDone THEN + LEAVE curItemClean; + END IF; + + SET vCounter = vCounter + 1; + + END LOOP; + CLOSE curItemClean; + + INSERT INTO itemCleanLog (itemFrom, itemDeleted) + VALUES (vItemOld, vCounter); + + SET @isModeInventory:= FALSE; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_deactivateUnused` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_deactivateUnused`() +BEGIN +/** + * Cambia a false el campo isActive de la tabla vn.item para todos aquellos + * items que no se han comprado en los últimos meses configurados en + * @vn.itemConfig.monthToDeactivate + */ + DECLARE vMonthToDeactivate INT; + + SELECT monthToDeactivate INTO vMonthToDeactivate + FROM vn.itemConfig; + + DROP TEMPORARY TABLE IF EXISTS tmp.buyMaxCreated; + CREATE TEMPORARY TABLE tmp.buyMaxCreated + ENGINE = MEMORY + SELECT b.itemFk, + MAX(b.created) created + FROM vn.buy b + JOIN vn.item i ON i.id = b.itemFk + WHERE i.isActive + GROUP BY itemFk; + + UPDATE vn.item i + JOIN tmp.buyMaxCreated bmc ON bmc.itemFk = i.id + SET i.isActive = FALSE + WHERE bmc.created < util.VN_CURDATE() - INTERVAL vMonthToDeactivate MONTH; + + DROP TEMPORARY TABLE IF EXISTS tmp.buyMaxCreated; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -68294,16 +59410,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_getBalance`(IN vItemId int, IN vWarehouse int) +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_getBalance`(IN vItemId int, IN vWarehouse int) BEGIN DECLARE vDateInventory DATETIME; - DECLARE vCurdate DATE DEFAULT CURDATE(); + DECLARE vCurdate DATE DEFAULT util.VN_CURDATE(); DECLARE vDayEnd DATETIME DEFAULT util.dayEnd(vCurdate); SELECT inventoried INTO vDateInventory FROM config; @@ -68321,8 +59437,8 @@ BEGIN `in` AS invalue, `out`, @a := @a + IFNULL(`in`,0) - IFNULL(`out`,0) as balance, - @currentLineFk := IF (@shipped < CURDATE() - OR (@shipped = CURDATE() AND (isPicked OR alertLevel >= 2)), + @currentLineFk := IF (@shipped < util.VN_CURDATE() + OR (@shipped = util.VN_CURDATE() AND (isPicked OR alertLevel >= 2)), lineFk,@currentLineFk) lastPreparedLineFk, isTicket, lineFk, @@ -68349,17 +59465,17 @@ BEGIN JOIN entry e ON e.id = b.entryFk JOIN travel tr ON tr.id = e.travelFk JOIN supplier s ON s.id = e.supplierFk - JOIN alertLevel al ON al.id = + JOIN alertLevel al ON al.id = CASE - WHEN tr.shipped < CURDATE() THEN 3 - WHEN tr.shipped = CURDATE() AND tr.isReceived = TRUE THEN 3 + WHEN tr.landed < util.VN_CURDATE() THEN 3 + WHEN tr.landed = util.VN_CURDATE() AND tr.isReceived = TRUE THEN 3 ELSE 0 END JOIN state st ON st.code = al.code WHERE tr.landed >= vDateInventory - AND vWarehouse = tr.warehouseInFk + AND vWarehouse = tr.warehouseInFk AND b.itemFk = vItemId - AND e.isInventory = FALSE + AND e.isExcludedFromAvailable = FALSE AND e.isRaid = FALSE UNION ALL @@ -68383,10 +59499,10 @@ BEGIN JOIN travel tr ON tr.id = e.travelFk JOIN warehouse w ON w.id = tr.warehouseOutFk JOIN supplier s ON s.id = e.supplierFk - JOIN alertLevel al ON al.id = + JOIN alertLevel al ON al.id = CASE - WHEN tr.shipped < CURDATE() THEN 3 - WHEN tr.shipped = CURDATE() AND tr.isReceived = TRUE THEN 3 + WHEN tr.shipped < util.VN_CURDATE() THEN 3 + WHEN tr.shipped = util.VN_CURDATE() AND tr.isReceived = TRUE THEN 3 ELSE 0 END JOIN state st ON st.code = al.code @@ -68394,7 +59510,7 @@ BEGIN AND vWarehouse =tr.warehouseOutFk AND s.id <> 4 AND b.itemFk = vItemId - AND e.isInventory = FALSE + AND e.isExcludedFromAvailable = FALSE AND w.isFeedStock = FALSE AND e.isRaid = FALSE UNION ALL @@ -68420,15 +59536,15 @@ BEGIN LEFT JOIN state st ON st.code = ts.code JOIN client c ON c.id = t.clientFk JOIN clientType ct ON ct.id = c.clientTypeFk - JOIN alertLevel al ON al.id = + JOIN alertLevel al ON al.id = CASE - WHEN t.shipped < curdate() THEN 3 - WHEN t.shipped > util.dayEnd(curdate()) THEN 0 + WHEN t.shipped < util.VN_CURDATE() THEN 3 + WHEN t.shipped > util.dayEnd(util.VN_CURDATE()) THEN 0 ELSE IFNULL(ts.alertLevel, 0) END LEFT JOIN state stPrep ON stPrep.`code` = 'PREPARED' LEFT JOIN saleTracking stk ON stk.saleFk = s.id AND stk.stateFk = stPrep.id - LEFT JOIN claimBeginning cb ON s.id = cb.saleFk + LEFT JOIN claimBeginning cb ON s.id = cb.saleFk WHERE t.shipped >= vDateInventory AND s.itemFk = vItemId AND vWarehouse =t.warehouseFk @@ -68447,76 +59563,78 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_getInfo`(IN `vBarcode` VARCHAR(22), IN `vWarehouseFk` INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_getInfo`(IN `vBarcode` VARCHAR(22), IN `vWarehouseFk` INT) BEGIN - - /* - * Devuelve información relativa al item correspondiente del vBarcode pasado - * - * @param vBarcode código relativo al ítem - * @param vWarehouseFk código del almacén - */ - +/** + * Devuelve información relativa al item correspondiente del vBarcode pasado + * + * @param vBarcode código relativo al ítem + * @param vWarehouseFk código del almacén + */ DECLARE vCacheVisibleFk INT; - DECLARE vCacheAvailableFk INT; - DECLARE vVisibleItemShelving INT; - DECLARE vItemFk INT; - - SELECT vn.barcodeToItem(vBarcode) INTO vItemFk; - - CALL cache.visible_refresh(vCacheVisibleFk, FALSE,vWarehouseFk); - CALL cache.available_refresh(vCacheAvailableFk, FALSE,vWarehouseFk, CURDATE()); + DECLARE vCacheAvailableFk INT; + DECLARE vVisibleItemShelving INT; + DECLARE vItemFk INT; - SELECT SUM(visible) INTO vVisibleItemShelving - FROM vn.itemShelvingStock - WHERE itemFk = vItemFk AND warehouseFk = vWarehouseFk; - - CALL vn.buyUltimate(vWarehouseFk, CURDATE()); + CALL cache.visible_refresh(vCacheVisibleFk, FALSE, vWarehouseFk); + CALL cache.available_refresh(vCacheAvailableFk, FALSE, vWarehouseFk, util.VN_CURDATE()); + CALL buyUltimate(vWarehouseFk, util.VN_CURDATE()); - SELECT i.id, + SELECT barcodeToItem(vBarcode) INTO vItemFk; + SELECT SUM(visible) INTO vVisibleItemShelving + FROM itemShelvingStock + WHERE itemFk = vItemFk + AND warehouseFk = vWarehouseFk; + + SELECT i.id, i.longName, - i.tag5, + i.tag5, i.value5, - i.tag6, - i.value6, - i.tag7, - i.value7, - i.image, - i.size, - i.stems, - i.category, - i.minimum as min, - p.name as producer, - o.code as origin, - v.visible - IFNULL(vVisibleItemShelving,0) as unlocated, - a.available, - vVisibleItemShelving, - v.visible, - c.`grouping`, - c.packing, - CONCAT('https://verdnatura.es/vn-image-data/catalog/200x200/', i.image) as urlImage200, - CONCAT('https://verdnatura.es/vn-image-data/catalog/1600x900/', i.image) as urlImage, - i.itemPackingTypeFk, - i.comment as reference - FROM vn.item i - LEFT JOIN vn.producer p ON p.id = i.producerFk - LEFT JOIN vn.origin o ON o.id = i.originFk - LEFT JOIN cache.visible v ON v.calc_id = vCacheVisibleFk AND v.item_id = i.id - LEFT JOIN cache.available a ON a.calc_id = vCacheAvailableFk AND a.item_id = i.id - LEFT JOIN ( - SELECT b.itemFk, b2.`grouping`, b2.packing - FROM tmp.buyUltimate b - JOIN vn.buy b2 ON b2.id = b.buyFk - WHERE b.warehouseFk = vWarehouseFk - ) c ON i.id = c.itemFk + i.tag6, + i.value6, + i.tag7, + i.value7, + i.image, + i.`size`, + i.stems, + i.category, + i.minimum `min`, + p.name producer, + o.code origin, + v.visible - IFNULL(vVisibleItemShelving, 0) unlocated, + a.available, + vVisibleItemShelving, + v.visible, + b.`grouping`, + b.packing, + CONCAT('https://verdnatura.es/vn-image-data/catalog/200x200/', i.image) urlImage200, + CONCAT('https://verdnatura.es/vn-image-data/catalog/1600x900/', i.image) urlImage, + i.itemPackingTypeFk, + i.comment reference, + u.name buyer, + IFNULL(b.buyingValue, 0) + + IFNULL(b.freightValue, 0) + + IFNULL(b.comissionValue, 0) + + IFNULL(b.packageValue, 0) itemCost + FROM item i + LEFT JOIN producer p ON p.id = i.producerFk + LEFT JOIN origin o ON o.id = i.originFk + LEFT JOIN cache.visible v ON v.calc_id = vCacheVisibleFk + AND v.item_id = i.id + LEFT JOIN cache.available a ON a.calc_id = vCacheAvailableFk + AND a.item_id = i.id + LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = i.id + LEFT JOIN buy b ON b.id = bu.buyFk + AND bu.warehouseFk = vWarehouseFk + JOIN itemType it ON it.id = i.typeFk + JOIN account.user u ON u.id = it.workerFk WHERE i.id = vItemFk; - - DROP TEMPORARY TABLE tmp.buyUltimate; + DROP TEMPORARY TABLE tmp.buyUltimate; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -68529,52 +59647,51 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_getLack`(IN vForce BOOLEAN, IN vDays INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_getLack`(IN vForce BOOLEAN, IN vDays INT) BEGIN /** * Calcula una tabla con el máximo negativo visible para cada producto y almacen - * + * * @param vForce Fuerza el recalculo del stock * @param vDays Numero de dias a considerar **/ CALL `cache`.stock_refresh(vForce); - CALL item_getMinacum(NULL, CURDATE(), vDays, NULL); + CALL item_getMinacum(NULL, util.VN_CURDATE(), vDays, NULL); CALL item_getMinETD(); - SELECT i.id itemFk, + SELECT i.id itemFk, i.longName, w.id warehouseFk, - p.`name` producer, + p.`name` producer, i.`size`, i.category, - w.name warehouse, + w.name warehouse, SUM(IFNULL(sub.amount,0)) lack, i.inkFk, - IFNULL(im.timed, util.midnight()) timed - FROM (SELECT item_id, - warehouse_id, + IFNULL(im.timed, util.midnight()) timed + FROM (SELECT item_id, + warehouse_id, amount FROM cache.stock WHERE amount > 0 UNION ALL - SELECT itemFk, - warehouseFk, + SELECT itemFk, + warehouseFk, amount FROM tmp.itemMinacum ) sub JOIN warehouse w ON w.id = sub.warehouse_id JOIN item i ON i.id = sub.item_id - LEFT JOIN producer p ON p.id = i.producerFk - JOIN itemType it ON it.id = i.typeFk + LEFT JOIN producer p ON p.id = i.producerFk + JOIN itemType it ON it.id = i.typeFk JOIN itemCategory ic ON ic.id = it.categoryFk LEFT JOIN tmp.itemMinETD im ON im.itemFk = i.id WHERE w.isForTicket - AND it.making IS NULL AND ic.display <> 0 AND it.code != 'GEN' GROUP BY i.id, w.id @@ -68594,11 +59711,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_getMinacum`(IN vWarehouseFk TINYINT, IN vDatedFrom DATETIME, IN vRange INT, IN vItemFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_getMinacum`(IN vWarehouseFk TINYINT, IN vDatedFrom DATETIME, IN vRange INT, IN vItemFk INT) BEGIN /** * Cálculo del mínimo acumulado, para un item si especificado, para todo el stock si es nulo @@ -68620,47 +59737,47 @@ BEGIN CREATE TEMPORARY TABLE tmp.itemMinacum (INDEX(itemFk)) ENGINE = MEMORY - SELECT sub1.itemFk, - sub1.warehouseFk, - minacum(sub1.dated, amount, DATE(vDatedFrom)) amount - FROM (SELECT sub.itemFk, - sub.dated, - SUM(sub.amount) amount, - sub.warehouseFk - FROM (SELECT s.itemFk, + SELECT sub1.itemFk, + sub1.warehouseFk, + minacum(sub1.dated, amount, DATE(vDatedFrom)) amount + FROM (SELECT sub.itemFk, + sub.dated, + SUM(sub.amount) amount, + sub.warehouseFk + FROM (SELECT s.itemFk, DATE(t.shipped) dated, - -s.quantity amount, + -s.quantity amount, t.warehouseFk - FROM sale s - JOIN ticket t ON t.id = s.ticketFk + FROM sale s + JOIN ticket t ON t.id = s.ticketFk WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo AND s.quantity != 0 AND (vItemFk IS NULL OR s.itemFk = vItemFk) AND (vWarehouseFk IS NULL OR t.warehouseFk = vWarehouseFk) UNION ALL - SELECT b.itemFk, - t.landed, - b.quantity, - t.warehouseInFk - FROM buy b - JOIN entry e ON e.id = b.entryFk - LEFT JOIN travel t ON t.id = e.travelFk + SELECT b.itemFk, + t.landed, + b.quantity, + t.warehouseInFk + FROM buy b + JOIN entry e ON e.id = b.entryFk + LEFT JOIN travel t ON t.id = e.travelFk WHERE t.landed BETWEEN vDatedFrom AND vDatedTo AND (vWarehouseFk IS NULL OR t.warehouseInFk = vWarehouseFk) - AND !e.isInventory + AND !e.isExcludedFromAvailable AND b.quantity != 0 AND (vItemFk IS NULL OR b.itemFk = vItemFk) UNION ALL - SELECT b.itemFk, - t.shipped, - -b.quantity, + SELECT b.itemFk, + t.shipped, + -b.quantity, t.warehouseOutFk - FROM buy b - JOIN entry e ON e.id = b.entryFk - LEFT JOIN travel t ON t.id = e.travelFk + FROM buy b + JOIN entry e ON e.id = b.entryFk + LEFT JOIN travel t ON t.id = e.travelFk WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo AND (vWarehouseFk IS NULL OR t.warehouseOutFk = vWarehouseFk) - AND !e.isInventory + AND !e.isExcludedFromAvailable AND b.quantity != 0 AND (vItemFk IS NULL OR b.itemFk = vItemFk) AND !e.isRaid @@ -68669,7 +59786,7 @@ BEGIN ) sub1 GROUP BY sub1.itemFk, sub1.warehouseFk HAVING amount != 0; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -68682,18 +59799,18 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_getMinETD`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_getMinETD`() BEGIN - + /* Devuelve una tabla temporal con la primera ETD, para todos los artículos con salida hoy. - * + * * @return tmp.itemMinETD(itemFk, timed) */ - + DECLARE vMidnight DATETIME DEFAULT util.midnight(); DROP TEMPORARY TABLE IF EXISTS tmp.itemMinETD; @@ -68704,8 +59821,8 @@ BEGIN SELECT s.itemFk, MIN(TIME(IFNULL(z.`hour`,vMidnight))) timed FROM ticket t JOIN sale s ON s.ticketFk = t.id - LEFT JOIN `zone` z ON z.id = t.zoneFk - WHERE t.shipped BETWEEN CURDATE() AND vMidnight + LEFT JOIN `zone` z ON z.id = t.zoneFk + WHERE t.shipped BETWEEN util.VN_CURDATE() AND vMidnight GROUP BY s.itemFk; END ;; DELIMITER ; @@ -68719,11 +59836,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_getSimilar`(vItemFk INT, vWarehouseFk INT, vDate DATE, vIsShowedByType BOOL) +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_getSimilar`(vItemFk INT, vWarehouseFk INT, vDate DATE, vIsShowedByType BOOL) BEGIN /** @@ -68734,33 +59851,33 @@ BEGIN * @param vWarehouseFk warehouse id * @param vDate fecha para revisar disponible * @param vIsShowedByType para mostrar solo artículos de ese tipo - */ + */ DECLARE vCalcFk INT; DECLARE vTypeFk INT; - + DECLARE vTag1 VARCHAR(25) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; DECLARE vTag5 VARCHAR(25) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; DECLARE vTag6 VARCHAR(25) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; DECLARE vTag7 VARCHAR(25) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; DECLARE vTag8 VARCHAR(25) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; - + DECLARE vValue1 VARCHAR(50) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; DECLARE vValue5 VARCHAR(50) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; DECLARE vValue6 VARCHAR(50) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; DECLARE vValue7 VARCHAR(50) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; DECLARE vValue8 VARCHAR(50) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci'; - + SELECT typeFk, tag5, value5, tag6, value6, tag7, value7, tag8, value8, t1.name, it1.value INTO vTypeFk, vTag5, vValue5, vTag6, vValue6, vTag7, vValue7, vTag8, vValue8, vTag1, vValue1 FROM vn.item i LEFT JOIN vn.itemTag it1 ON it1.itemFk = i.id AND it1.priority = 1 LEFT JOIN vn.tag t1 ON t1.id = it1.tagFk WHERE i.id = vItemFk; - + CALL cache.available_refresh(vCalcFk, FALSE, vWarehouseFk, vDate); - + SELECT i.id itemFk, i.longName, i.subName, @@ -68793,7 +59910,7 @@ BEGIN ORDER BY counter DESC, (t1.name = vTag1) DESC, (it1.value = vValue1) DESC, - (i.tag6 = vTag6) DESC, + (i.tag6 = vTag6) DESC, (i.value6 = vValue6) DESC, (i.tag5 = vTag5) DESC, (i.value5 = vValue5) DESC, @@ -68802,7 +59919,7 @@ BEGIN (i.tag8 = vTag8) DESC, (i.value8 = vValue8) DESC LIMIT 30; - + END ;; DELIMITER ; @@ -68814,47 +59931,46 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_GetVisible`(vWarehouse SMALLINT, vItem INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_GetVisible`(vWarehouse SMALLINT, vItem INT) BEGIN - DECLARE vTomorrow DATETIME DEFAULT TIMESTAMPADD(DAY, 1, CURDATE()); - + DECLARE vTomorrow DATETIME DEFAULT TIMESTAMPADD(DAY, 1, util.VN_CURDATE()); + INSERT INTO vn2008.tmp_item (item_id, visible) SELECT item_id, SUM(amount) amount FROM ( - SELECT i.itemFk AS item_id, quantity AS amount + SELECT i.itemFk AS item_id, quantity AS amount FROM itemTicketOut i - LEFT JOIN ticketState ts ON ts.ticketFk = i.ticketFk + LEFT JOIN ticketState ts ON ts.ticketFk = i.ticketFk JOIN state s ON s.id = ts.stateFk - LEFT JOIN (SELECT DISTINCT saleFk - FROM saleTracking st + LEFT JOIN (SELECT DISTINCT saleFk + FROM saleTracking st JOIN state s ON s.id = st.stateFk - WHERE st.created > CURDATE() + WHERE st.created > util.VN_CURDATE() AND (s.isPicked OR st.isChecked) ) stPrevious ON `stPrevious`.`saleFk` = i.saleFk WHERE i.warehouseFk = vWarehouse AND (vItem IS NULL OR i.itemFk = vItem) AND (s.isPicked OR i.reserved OR stPrevious.saleFk ) - AND i.shipped >= CURDATE() AND i.shipped < vTomorrow + AND i.shipped >= util.VN_CURDATE() AND i.shipped < vTomorrow UNION ALL - SELECT iei.itemFk, quantity + SELECT iei.itemFk, quantity FROM itemEntryIn iei - LEFT JOIN itemPlacement ip ON ip.itemFk = iei.itemFk AND ip.warehouseFk = vWarehouse - WHERE (iei.isReceived != FALSE /*OR ip.modificationDate > CURDATE()*/) - AND iei.landed >= CURDATE() AND iei.landed < vTomorrow + WHERE (iei.isReceived != FALSE /*OR ip.modificationDate > util.VN_CURDATE()*/ ) + AND iei.landed >= util.VN_CURDATE() AND iei.landed < vTomorrow AND iei.warehouseInFk = vWarehouse AND (vItem IS NULL OR iei.itemFk = vItem) AND iei.isVirtualStock is FALSE UNION ALL - SELECT itemFk, quantity + SELECT itemFk, quantity FROM itemEntryOut WHERE isDelivered != FALSE - AND shipped >= CURDATE() AND shipped < vTomorrow + AND shipped >= util.VN_CURDATE() AND shipped < vTomorrow AND warehouseOutFk = vWarehouse AND (vItem IS NULL OR itemFk = vItem) ) t @@ -68867,102 +59983,24 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `item_getVisibleAvailable` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_getVisibleAvailable`( - vItem INT, - vDate DATE, - vWarehouse TINYINT, - vRefresh BOOL) -BEGIN - DECLARE vVisibleCalc INT; - DECLARE vAvailableCalc INT; - DECLARE vVisibleAltillo INT; - - CALL cache.available_refresh(vAvailableCalc, FALSE /*vRefresh*/ , vWarehouse, vDate); - CALL cache.visible_refresh(vVisibleCalc, FALSE,vWarehouse); - - SELECT SUM(visible) INTO vVisibleAltillo - FROM vn.itemShelvingStock - WHERE itemFk = vItem - AND warehouseFk = vWarehouse; - - IF vRefresh THEN - - DROP TEMPORARY TABLE IF EXISTS vn2008.tmp_item; - CREATE TEMPORARY TABLE vn2008.tmp_item - (PRIMARY KEY (item_id)) - ENGINE = MEMORY - SELECT vItem item_id, 0 stock, 0 visible; - - SELECT i.id, i.longName, i.box, i.typeFk, - i.tag5,i.value5,i.tag6,i.value6,i.tag7,i.value7,i.tag8,i.value8, - ip.code, ip.reserve, - vi.visible - IFNULL(vVisibleAltillo,0) AS visible, - av.available - FROM vn.item i - LEFT JOIN vn.itemPlacement ip - ON i.id = ip.itemFk AND ip.warehouseFk = vWarehouse - LEFT JOIN vn2008.tmp_item v - ON v.item_id = i.id - LEFT JOIN cache.available av - ON av.calc_id = vAvailableCalc AND av.item_id = i.id - LEFT JOIN cache.visible vi - ON vi.calc_id = vVisibleCalc AND vi.item_id = i.id - LEFT JOIN cache.stock st - ON st.warehouse_id = vWarehouse AND st.item_id = i.id - WHERE (vItem IS NULL OR i.id = vItem); - - ELSE - - SELECT i.id, i.longName, i.box, i.typeFk, - i.tag5,i.value5,i.tag6,i.value6,i.tag7,i.value7,i.tag8,i.value8, - ip.code, ip.reserve, - v.visible - IFNULL(vVisibleAltillo,0) AS visible, - av.available - FROM vn.item i - LEFT JOIN vn.itemPlacement ip - ON i.id = ip.itemFk AND ip.warehouseFk = vWarehouse - LEFT JOIN cache.visible v - ON v.item_id = i.id AND v.calc_id = vVisibleCalc - LEFT JOIN cache.available av - ON av.item_id = i.id AND av.calc_id = vAvailableCalc - WHERE (vItem IS NULL OR i.id = vItem); - - END IF; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `item_refreshTags` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_refreshTags`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_refreshTags`() BEGIN /** * Actualiza la tabla item, los campos "cache" de tags * * @param temporary table tmp.item(id) del articulo **/ - + DECLARE done INT DEFAULT FALSE; DECLARE vItemFk INT; DECLARE cur1 CURSOR FOR SELECT id FROM tmp.item; @@ -68972,13 +60010,13 @@ BEGIN OPEN cur1; read_loop: LOOP - + FETCH cur1 INTO vItemFk; - + IF done THEN LEAVE read_loop; END IF; - + UPDATE item i LEFT JOIN itemTag it1 ON it1.priority = 1 AND it1.itemFk = i.id LEFT JOIN itemTag it2 ON it2.priority = 2 AND it2.itemFk = i.id @@ -68990,57 +60028,57 @@ BEGIN LEFT JOIN itemTag it1 ON it1.priority = 1 AND it1.itemFk = i.id LEFT JOIN tagAbbreviation ta1 ON ta1.`value` = it1.`value` LEFT JOIN itemTag it2 ON it2.priority = 2 AND it2.itemFk = i.id - LEFT JOIN tagAbbreviation ta2 ON ta2.`value` = it2.`value` AND ta2.`value` != 'Rosa' + LEFT JOIN tagAbbreviation ta2 ON ta2.`value` = it2.`value` AND ta2.tagFk IS NULL LEFT JOIN itemTag it3 ON it3.priority = 3 AND it3.itemFk = i.id LEFT JOIN tagAbbreviation ta3 ON ta3.`value` = it3.`value` - SET i.`name` = CONCAT_WS(' ', - IFNULL(ta1.abbreviation,it1.`value`), - IFNULL(ta2.abbreviation,it2.`value`), - IF(i.id > 400000,'',IFNULL(ta3.abbreviation,it3.`value`))) + SET i.`name` = CONCAT_WS(' ', + IFNULL(ta1.abbreviation,it1.`value`), + IFNULL(ta2.abbreviation,it2.`value`), + IF(i.isFloramondo,'',IFNULL(ta3.abbreviation,it3.`value`))) WHERE i.id = vItemFk; - + UPDATE item i LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 4 SET i.subName = it.`value` WHERE i.id = vItemFk; - + UPDATE item i LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 5 LEFT JOIN tag t ON t.id = it.tagFk SET tag5 = t.name, value5 = it.`value` WHERE i.id = vItemFk; - + UPDATE item i LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 6 LEFT JOIN tag t ON t.id = it.tagFk SET tag6 = t.name, value6 = it.`value` WHERE i.id = vItemFk; - + UPDATE item i LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 7 - LEFT JOIN tag t ON t.id = it.tagFk + LEFT JOIN tag t ON t.id = it.tagFk SET i.tag7 = t.name, i.value7 = it.`value` WHERE i.id = vItemFk; - + UPDATE item i LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 8 LEFT JOIN tag t ON t.id = it.tagFk SET tag8 = t.name, value8 = it.`value` WHERE i.id = vItemFk; - + UPDATE item i LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 9 LEFT JOIN tag t ON t.id = it.tagFk SET tag9 = t.name, value9 = it.`value` WHERE i.id = vItemFk; - + UPDATE item i LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 10 LEFT JOIN tag t ON t.id = it.tagFk SET tag10 = t.name, value10 = it.`value` WHERE i.id = vItemFk; - -- Al insertar el tag color se modifica también el antiguo campo color + -- Al insertar el tag color se modifica también el antiguo campo color UPDATE item i JOIN tag t ON t.overwrite = 'inkFk' JOIN itemTag it ON it.itemFk = i.id AND it.tagFk = t.id @@ -69055,7 +60093,7 @@ BEGIN JOIN origin o ON o.`name` = it.`value` SET i.originFk = o.id WHERE i.id = vItemFk; - + -- Al insertar el tag medida se modifica también en la tabla item UPDATE item i JOIN tag t ON t.overwrite = 'size' @@ -69070,28 +60108,28 @@ BEGIN JOIN producer p ON p.`name` = it.`value` SET i.producerFk = p.id WHERE i.id = vItemFk; - + -- Al insertar el tag tallos se modifica también en la tabla item UPDATE item i JOIN tag t ON t.overwrite = 'stems' JOIN itemTag it ON it.itemFk = i.id AND it.tagFk = t.id SET i.stems = it.`value` WHERE i.id = vItemFk; - + -- Al insertar el tag categoria se modifica también en la tabla item UPDATE item i JOIN tag t ON t.overwrite = 'category' JOIN itemTag it ON it.itemFk = i.id AND it.tagFk = t.id SET i.category = it.`value` WHERE i.id = vItemFk; - + -- Comprueba si existe un genérico y lo asigna CALL vn.item_setGeneric(vItemFk); - + END LOOP; CLOSE cur1; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -69102,20 +60140,20 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_refreshTags_beta`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_refreshTags_beta`() BEGIN /** * Actualiza la tabla item, los campos "cache" de tags * * @param temporary table tmp.item(id) del articulo **/ - + DECLARE done INT DEFAULT FALSE; DECLARE vItemFk INT; DECLARE cur1 CURSOR FOR SELECT id FROM tmp.item; @@ -69125,13 +60163,13 @@ BEGIN OPEN cur1; read_loop: LOOP - + FETCH cur1 INTO vItemFk; - + IF done THEN LEAVE read_loop; END IF; - + UPDATE item i LEFT JOIN itemTag it1 ON it1.priority = 1 AND it1.itemFk = i.id LEFT JOIN itemTag it2 ON it2.priority = 2 AND it2.itemFk = i.id @@ -69146,54 +60184,54 @@ BEGIN LEFT JOIN tagAbbreviation ta2 ON ta2.`value` = it2.`value` LEFT JOIN itemTag it3 ON it3.priority = 3 AND it3.itemFk = i.id LEFT JOIN tagAbbreviation ta3 ON ta3.`value` = it3.`value` - SET i.`name` = CONCAT_WS(' ', - IFNULL(ta1.abbreviation,it1.`value`), - IFNULL(ta2.abbreviation,it2.`value`), + SET i.`name` = CONCAT_WS(' ', + IFNULL(ta1.abbreviation,it1.`value`), + IFNULL(ta2.abbreviation,it2.`value`), IF(i.id > 400000,'',IFNULL(ta3.abbreviation,it3.`value`))) WHERE i.id = vItemFk; - + UPDATE item i JOIN tmp.itemToRefresh tmpI ON tmpI.id = i.id LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 4 SET i.subName = it.`value`; - + UPDATE item i LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 5 LEFT JOIN tag t ON t.id = it.tagFk SET tag5 = t.name, value5 = it.`value` WHERE i.id = vItemFk; - + UPDATE item i LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 6 LEFT JOIN tag t ON t.id = it.tagFk SET tag6 = t.name, value6 = it.`value` WHERE i.id = vItemFk; - + UPDATE item i LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 7 - LEFT JOIN tag t ON t.id = it.tagFk + LEFT JOIN tag t ON t.id = it.tagFk SET i.tag7 = t.name, i.value7 = it.`value` WHERE i.id = vItemFk; - + UPDATE item i LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 8 LEFT JOIN tag t ON t.id = it.tagFk SET tag8 = t.name, value8 = it.`value` WHERE i.id = vItemFk; - + UPDATE item i LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 9 LEFT JOIN tag t ON t.id = it.tagFk SET tag9 = t.name, value9 = it.`value` WHERE i.id = vItemFk; - + UPDATE item i LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 10 LEFT JOIN tag t ON t.id = it.tagFk SET tag10 = t.name, value10 = it.`value` WHERE i.id = vItemFk; - -- Al insertar el tag color se modifica también el antiguo campo color + -- Al insertar el tag color se modifica también el antiguo campo color UPDATE item i JOIN tag t ON t.overwrite = 'inkFk' JOIN itemTag it ON it.itemFk = i.id AND it.tagFk = t.id @@ -69208,7 +60246,7 @@ BEGIN JOIN origin o ON o.`name` = it.`value` SET i.originFk = o.id WHERE i.id = vItemFk; - + -- Al insertar el tag medida se modifica también en la tabla item UPDATE item i JOIN tag t ON t.overwrite = 'size' @@ -69223,147 +60261,18 @@ BEGIN JOIN producer p ON p.`name` = it.`value` SET i.producerFk = p.id WHERE i.id = vItemFk; - + -- Al insertar el tag tallos se modifica también en la tabla item UPDATE item i JOIN tag t ON t.overwrite = 'stems' JOIN itemTag it ON it.itemFk = i.id AND it.tagFk = t.id SET i.stems = it.`value` WHERE i.id = vItemFk; - + END LOOP; CLOSE cur1; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `item_refreshTags__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_refreshTags__`() -BEGIN -/** - * Actualiza la tabla item, los campos "cache" de tags - * Para actualizar mas de un registro, la tabla NO tiene que ser en memoria - * Error Code: 1137. No puedo reabrir tabla: 'tmpI - * - * @param temporary table tmp.item(id) del articulo - **/ - DROP TEMPORARY TABLE IF EXISTS tmp.itemToRefresh; - CREATE TEMPORARY TABLE tmp.itemToRefresh - SELECT id from tmp.item; - - UPDATE item i - JOIN tmp.itemToRefresh tmpI ON tmpI.id = i.id - LEFT JOIN itemTag it1 ON it1.priority = 1 AND it1.itemFk = i.id - LEFT JOIN itemTag it2 ON it2.priority = 2 AND it2.itemFk = i.id - LEFT JOIN itemTag it3 ON it3.priority = 3 AND it3.itemFk = i.id - SET i.longName = CONCAT_WS(' ', it1.`value`, it2.`value`, IF(it3.`value` = 'A1','',it3.`value`)); - UPDATE item i - JOIN tmp.itemToRefresh tmpI ON tmpI.id = i.id - LEFT JOIN itemTag it1 ON it1.priority = 1 AND it1.itemFk = i.id - LEFT JOIN tagAbbreviation ta1 ON ta1.`value` = it1.`value` - LEFT JOIN itemTag it2 ON it2.priority = 2 AND it2.itemFk = i.id - LEFT JOIN tagAbbreviation ta2 ON ta2.`value` = it2.`value` - LEFT JOIN itemTag it3 ON it3.priority = 3 AND it3.itemFk = i.id - LEFT JOIN tagAbbreviation ta3 ON ta3.`value` = it3.`value` - SET i.`name` = CONCAT_WS(' ', - IFNULL(ta1.abbreviation,it1.`value`), - IFNULL(ta2.abbreviation,it2.`value`), - IF(i.id > 400000,'',IFNULL(ta3.abbreviation,it3.`value`))); - - UPDATE item i - JOIN tmp.itemToRefresh tmpI ON tmpI.id = i.id - LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 4 - SET i.subName = it.`value`; - - UPDATE item i - JOIN tmp.itemToRefresh tmpI ON tmpI.id = i.id - LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 5 - LEFT JOIN tag t ON t.id = it.tagFk - SET tag5 = t.name, value5 = it.`value`; - - UPDATE item i - JOIN tmp.itemToRefresh tmpI ON tmpI.id = i.id - LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 6 - LEFT JOIN tag t ON t.id = it.tagFk - SET tag6 = t.name, value6 = it.`value`; - - UPDATE item i - JOIN tmp.itemToRefresh tmpI ON tmpI.id = i.id - LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 7 - LEFT JOIN tag t ON t.id = it.tagFk - SET i.tag7 = t.name, i.value7 = it.`value`; - - UPDATE item i - JOIN tmp.itemToRefresh tmpI ON tmpI.id = i.id - LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 8 - LEFT JOIN tag t ON t.id = it.tagFk - SET tag8 = t.name, value8 = it.`value`; - - UPDATE item i - JOIN tmp.itemToRefresh tmpI ON tmpI.id = i.id - LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 9 - LEFT JOIN tag t ON t.id = it.tagFk - SET tag9 = t.name, value9 = it.`value`; - - UPDATE item i - JOIN tmp.itemToRefresh tmpI ON tmpI.id = i.id - LEFT JOIN itemTag it ON it.itemFk = i.id AND it.priority = 10 - LEFT JOIN tag t ON t.id = it.tagFk - SET tag10 = t.name, value10 = it.`value`; - - -- Al insertar el tag color se modifica también el antiguo campo color - UPDATE item i - JOIN tmp.itemToRefresh tmpI ON tmpI.id = i.id - JOIN tag t ON t.overwrite = 'inkFk' - JOIN itemTag it ON it.itemFk = i.id AND it.tagFk = t.id - JOIN ink ON ink.`name` = it.`value` - SET i.inkFk = ink.id; - - -- Al insertar el tag origen se modifica también en la tabla item - UPDATE item i - JOIN tmp.itemToRefresh tmpI ON tmpI.id = i.id - JOIN tag t ON t.overwrite = 'originFk' - JOIN itemTag it ON it.itemFk = i.id AND it.tagFk = t.id - JOIN origin o ON o.`name` = it.`value` - SET i.originFk = o.id; - - -- Al insertar el tag medida se modifica también en la tabla item - UPDATE item i - JOIN tmp.itemToRefresh tmpI ON tmpI.id = i.id - JOIN tag t ON t.overwrite = 'size' - JOIN itemTag it ON it.itemFk = i.id AND it.tagFk = t.id - SET i.size = it.`value`; - - -- Al insertar el tag productor se modifica también en la tabla item - UPDATE item i - JOIN tmp.itemToRefresh tmpI ON tmpI.id = i.id - JOIN tag t ON t.overwrite = 'producerFk' - JOIN itemTag it ON it.itemFk = i.id AND it.tagFk = t.id - JOIN producer p ON p.`name` = it.`value` - SET i.producerFk = p.id; - - -- Al insertar el tag tallos se modifica también en la tabla item - UPDATE item i - JOIN tmp.itemToRefresh tmpI ON tmpI.id = i.id - JOIN tag t ON t.overwrite = 'stems' - JOIN itemTag it ON it.itemFk = i.id AND it.tagFk = t.id - SET i.stems = it.`value`; - - DROP TEMPORARY TABLE IF EXISTS tmp.itemToRefresh; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -69376,11 +60285,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_saveReference`(vBarcode VARCHAR(22), vReference VARCHAR(150)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_saveReference`(vBarcode VARCHAR(22), vReference VARCHAR(150)) BEGIN /** @@ -69389,11 +60298,11 @@ BEGIN * @param vBarcode del item * @param vReference referencia a actualizar */ - + DECLARE vItemFk INT; SELECT barcodeToItem(vBarcode) INTO vItemFk; - + UPDATE item SET comment = vReference WHERE id = vItemFk; END ;; @@ -69402,108 +60311,58 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `item_setCompression__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_setCompression__`() -BEGIN - /** - * Actualiza la compression de los articulos con un packing.hasCompressionVariations = TRUE - * - */ - DECLARE done INT DEFAULT FALSE; - DECLARE vBuyFk INT; - DECLARE cur1 CURSOR FOR SELECT b.id - FROM vn.item i - JOIN edi.supplyResponse ii ON i.supplyResponseFk = ii.ID - JOIN vn.packaging p ON p.id = ii.EmbalageCode AND hasCompressionVariations - JOIN vn.itemTag diameter ON diameter.itemFk = i.id - JOIN vn.tag tDiameter ON tDiameter.overwrite = 'diameter' AND tDiameter.id = diameter.tagFk - JOIN vn.itemTag size ON size.itemFk = i.id - JOIN vn.tag tSize ON tSize.overwrite = 'size' AND tSize.id = size.tagFk - JOIN vn.buy b ON b.itemFk = i.id; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - - UPDATE vn.item i - JOIN edi.supplyResponse ii ON i.supplyResponseFk = ii.ID - JOIN vn.packaging p ON p.id = ii.EmbalageCode AND hasCompressionVariations - JOIN vn.itemTag diameter ON diameter.itemFk = i.id - JOIN vn.tag tDiameter ON tDiameter.overwrite = 'diameter' AND tDiameter.id = diameter.tagFk - JOIN vn.itemTag size ON size.itemFk = i.id - JOIN vn.tag tSize ON tSize.overwrite = 'size' AND tSize.id = size.tagFk - SET i.`compression` = (PI() * POW(diameter.`value`/ 2, 2) * size.`value`) - / - ((p.width * p.depth * p.height) / ii.NumberOfItemsPerCask) - WHERE (PI() * POW(diameter.`value`/ 2, 2) * size.`value`) - / - ((p.width * p.depth * p.height) / ii.NumberOfItemsPerCask) <> 0; - - OPEN cur1; - - read_loop: LOOP - SET done = FALSE; - FETCH cur1 INTO vBuyFk; - IF done THEN - LEAVE read_loop; - END IF; - - call vn.buy_afterUpsert(vBuyFk); - - END LOOP; - - CLOSE cur1; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `item_setGeneric` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_setGeneric`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_setGeneric`(vSelf INT) BEGIN - - /* Asigna el código genérico a un item - * - * @param vSelf identificador de vn.item - */ - +/** + * Asigna el código genérico a un item, salvo que sea un código de item genérico. + * + * @param vSelf identificador de vn.item + */ DECLARE vGenericFk INT; - SELECT ga.itemFk INTO vGenericFk - FROM vn.genericAllocation ga - JOIN vn.item i ON (i.typeFk = ga.typeFk OR ISNULL(ga.typeFk)) - JOIN vn.itemTag it1 ON it1.itemFk = i.id AND (it1.value = ga.origin OR ISNULL(ga.origin)) - JOIN vn.itemTag it2 ON it2.itemFk = i.id AND (it2.value = ga.color OR ISNULL(ga.color)) - JOIN vn.itemTag it3 ON it3.itemFk = i.id AND (it3.value = ga.quality OR ISNULL(ga.quality)) - JOIN vn.itemTag it4 ON it4.itemFk = i.id AND (it4.value = ga.numFlores OR ISNULL(ga.numFlores)) - JOIN vn.itemTag it5 ON it5.itemFk = i.id AND (it5.value = ga.category OR ISNULL(ga.category)) - JOIN vn.itemTag it6 ON it6.itemFk = i.id AND (it6.value = ga.productor OR ISNULL(ga.productor)) - WHERE i.id = vSelf - AND ga.itemFk != vSelf - AND NOT i.isFloramondo - LIMIT 1; - - UPDATE vn.item - SET genericFk = vGenericFk - WHERE id = vSelf; + SELECT itemFk INTO vGenericFk + FROM ( + SELECT itemFk, (sum(matches) = maxMatches) `match` + FROM ( + SELECT ga.id gaid, + ga.itemFk, + (it.value <=> ga.origin) + + (it.value <=> ga.color) + + (it.value <=> ga.quality) + + (it.value <=> ga.numFlores) + + (it.value <=> ga.category) + + (it.value <=> ga.productor) matches, + !ISNULL(ga.origin) + +!ISNULL(ga.color) + +!ISNULL(ga.quality) + +!ISNULL(ga.numFlores) + +!ISNULL(ga.category) + +!ISNULL(ga.productor) maxMatches + FROM vn.item i + JOIN vn.itemTag it ON it.itemFk = i.id + JOIN vn.genericAllocation ga + ON (i.typeFk = ga.typeFk OR ga.typeFk IS NULL) + AND (i.longName = ga.longName OR ga.longName IS NULL) + AND (i.`size` = ga.`size` OR ga.`size` IS NULL) + AND i.id != ga.itemFk + WHERE i.id = vSelf + AND NOT i.isFloramondo) sub + GROUP BY gaid + HAVING `match`) sub2; + UPDATE vn.item + SET genericFk = vGenericFk + WHERE id = vSelf; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -69514,25 +60373,26 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_updatePackingShelve`(vSelf INT, vPacking INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_updatePackingShelve`(vSelf INT, vPacking INT) BEGIN - - /* Actualiza el valor de item.packingShelve - * + + /** + * Actualiza el valor de item.packingShelve + * * @param vSelf Identificador de vn.item * @param vPacking Cantidad de unidades de venta que caben en una bandeja */ - - UPDATE vn.item i + + UPDATE vn.item i SET i.packingShelve = vPacking WHERE i.id = vSelf; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -69545,11 +60405,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_updatePackingType`(vItem INT, vItemPackingTypeFk VARCHAR(1)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_updatePackingType`(vItem INT, vItemPackingTypeFk VARCHAR(1)) BEGIN /** * Update the packing type of an item @@ -69569,22 +60429,22 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_ValuateInventory`(IN vDated DATE, IN vIsDetailed BOOLEAN) +CREATE DEFINER=`root`@`localhost` PROCEDURE `item_ValuateInventory`(IN vDated DATE, IN vIsDetailed BOOLEAN) BEGIN DECLARE vInventoried DATE; DECLARE vHasNotInventory BOOLEAN DEFAULT FALSE; DECLARE vInventoried2 DATE; DECLARE vDateDayEnd DATETIME; - + SET vDateDayEnd = util.dayEnd(vDated); - + SELECT landed INTO vInventoried FROM travel tr JOIN entry E ON E.travelFk = tr.id @@ -69594,7 +60454,7 @@ BEGIN LIMIT 1; SET vHasNotInventory = IF (vInventoried is null, TRUE, FALSE); - + IF vHasNotInventory THEN SELECT landed INTO vInventoried2 @@ -69615,13 +60475,13 @@ BEGIN CREATE TEMPORARY TABLE inv (warehouseFk SMALLINT, Id_Article BIGINT, - cantidad INT, + cantidad INT, coste DOUBLE DEFAULT 0, total DOUBLE DEFAULT 0, Almacen VARCHAR(20), PRIMARY KEY (Almacen, Id_Article) USING HASH) ENGINE = MEMORY; - + IF vHasNotInventory = TRUE THEN INSERT INTO inv(warehouseFk, Id_Article, cantidad, Almacen) @@ -69649,7 +60509,7 @@ BEGIN JOIN itemType t ON t.id = i.typeFk JOIN warehouse w ON w.id = tr.warehouseInFk WHERE tr.landed BETWEEN vInventoried AND vDateDayEnd - AND IF(tr.landed = CURDATE(), tr.isReceived, trUE) + AND IF(tr.landed = util.VN_CURDATE(), tr.isReceived, trUE) AND NOT e.isRaid AND w.valuatedInventory AND t.isInventory @@ -69682,7 +60542,7 @@ BEGIN AND it.isInventory ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + s.quantity * IF(vHasNotInventory,1,-1); - IF vDated = CURDATE() THEN -- volver a poner lo que esta aun en las estanterias + IF vDated = util.VN_CURDATE() THEN -- volver a poner lo que esta aun en las estanterias INSERT INTO inv(warehouseFk, Id_Article, cantidad, Almacen) SELECT w.id, s.itemFk, s.quantity * IF(vHasNotInventory,0,1), w.`name` @@ -69698,7 +60558,7 @@ BEGIN AND it.isInventory ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + s.quantity * IF(vHasNotInventory,0,1); - END IF; + END IF; -- Mercancia en transito INSERT INTO inv(warehouseFk, Id_Article, cantidad, Almacen) @@ -69716,7 +60576,7 @@ BEGIN AND t.isInventory AND e.isConfirmed ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + (b.quantity); - + CALL vn.buyUltimate(NULL,vDateDayEnd); UPDATE inv i @@ -69731,215 +60591,20 @@ BEGIN IF vIsDetailed THEN SELECT inv.warehouseFk, - i.id itemFk, - i.longName , - i.size, - inv.Cantidad, + i.id itemFk, + i.longName , + i.size, + inv.Cantidad, tp.name Tipo, - ic.name Reino, - inv.coste, + ic.name Reino, + inv.coste, cast(inv.total as decimal(10,2)) total, almacen FROM inv JOIN warehouse w on w.id = warehouseFk JOIN item i ON i.id = inv.Id_Article JOIN itemType tp ON tp.id = i.typeFk - JOIN itemCategory ic ON ic.id = tp.categoryFk - WHERE w.valuatedInventory - and inv.total > 0 - order by inv.total desc; - - ELSE - - SELECT i.Almacen, ic.name as Reino, cast(i.total as decimal(10,2)) as Euros, w.code as Comprador,it.id - FROM inv i - JOIN warehouse wh on wh.id = warehouseFk - JOIN item it ON it.id = i.Id_Article - JOIN itemType itp ON itp.id = it.typeFk - LEFT JOIN worker w ON w.id = itp.workerFk - JOIN itemCategory ic ON ic.id = itp.categoryFk - WHERE wh.valuatedInventory - AND i.total > 0; - - END IF; - DROP TEMPORARY TABLE tmp.buyUltimate; - DROP TEMPORARY TABLE inv; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `item_ValuateInventory__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `item_ValuateInventory__`(IN vDated DATE, IN vIsDetailed BOOLEAN) -BEGIN - - DECLARE vInventoried DATE; - DECLARE vHasNotInventory BOOLEAN DEFAULT 0; - DECLARE vInventoried2 DATE; - DECLARE vDateDayEnd DATETIME; - - SET vDateDayEnd = util.dayEnd(vDated); - SELECT landed INTO vInventoried - FROM travel tr - JOIN entry E ON E.travelFk = tr.id - WHERE landed <= vDateDayEnd - AND E.supplierFk = 4 - ORDER BY landed DESC - LIMIT 1; - - SET vHasNotInventory = IF (vInventoried is null, TRUE, FALSE); - - IF vHasNotInventory THEN - - SELECT landed INTO vInventoried2 - FROM travel tr - JOIN entry E ON E.travelFk = tr.id - WHERE landed >= vDated - AND E.supplierFk = 4 - ORDER BY landed ASC - LIMIT 1; - - SET vInventoried = TIMESTAMPADD(DAY,1,vDated); - SET vDateDayEnd = vInventoried2; - - END IF; - - DROP TEMPORARY TABLE IF EXISTS inv; - - CREATE TEMPORARY TABLE inv - (warehouseFk SMALLINT, - Id_Article BIGINT, - cantidad INT, - coste DOUBLE DEFAULT 0, - total DOUBLE DEFAULT 0, - Almacen VARCHAR(20), - PRIMARY KEY (Almacen, Id_Article) USING HASH) - ENGINE = MEMORY; - - IF vHasNotInventory = TRUE THEN - - INSERT INTO inv(warehouseFk, Id_Article, cantidad, Almacen) - SELECT tr.warehouseInFk, b.itemFk, SUM(b.quantity), w.`name` - FROM buy b - JOIN item i ON i.id = b.itemFk - JOIN entry e ON e.id = b.entryFk - JOIN travel tr ON tr.id = e.travelFk - JOIN itemType t ON t.id = i.typeFk - JOIN warehouse w ON w.id = warehouseInFk - WHERE landed = vDateDayEnd - AND e.supplierFk = 4 - AND w.valuatedInventory - AND t.isInventory - GROUP BY tr.warehouseInFk, b.itemFk; - - END IF; - - INSERT INTO inv(warehouseFk, Id_Article, cantidad, Almacen) - SELECT tr.warehouseInFk, b.itemFk, b.quantity * IF(vHasNotInventory,-1,1), w.`name` - FROM buy b - JOIN item i ON i.id = b.itemFk - JOIN entry e ON e.id = b.entryFk - JOIN travel tr ON tr.id = e.travelFk - JOIN itemType t ON t.id = i.typeFk - JOIN warehouse w ON w.id = tr.warehouseInFk - WHERE tr.landed BETWEEN vInventoried AND vDateDayEnd - AND IF(tr.landed = CURDATE(), tr.isReceived, trUE) - AND NOT e.isRaid - AND w.valuatedInventory - AND t.isInventory - ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + (b.quantity * IF(vHasNotInventory,-1,1)); - - INSERT INTO inv(warehouseFk, Id_Article, cantidad, Almacen) - SELECT tr.warehouseOutFk, b.itemFk, b.quantity * IF(vHasNotInventory,1,-1), w.`name` - FROM buy b - JOIN item i ON i.id = b.itemFk - JOIN entry e ON e.id = b.entryFk - JOIN travel tr ON tr.id = e.travelFk - JOIN itemType t ON t.id = i.typeFk - JOIN warehouse w ON w.id = tr.warehouseOutFk - WHERE tr.shipped BETWEEN vInventoried AND vDateDayEnd - AND NOT e.isRaid - AND w.valuatedInventory - AND t.isInventory - ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + (b.quantity * IF(vHasNotInventory,1,-1)); - - INSERT INTO inv(warehouseFk, Id_Article, cantidad, Almacen) - SELECT w.id, s.itemFk, s.quantity * IF(vHasNotInventory,1,-1), w.`name` - FROM sale s - JOIN ticket t ON t.id = s.ticketFk - JOIN `client` c ON c.id = t.clientFk - JOIN item i ON i.id = s.itemFk - JOIN itemType it ON it.id = i.typeFk - JOIN warehouse w ON w.id = t.warehouseFk - WHERE t.shipped BETWEEN vInventoried AND vDateDayEnd - AND w.valuatedInventory - AND it.isInventory - ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + s.quantity * IF(vHasNotInventory,1,-1); - - IF vDated = CURDATE() THEN -- volver a poner lo que esta aun en las estanterias - - INSERT INTO inv(warehouseFk, Id_Article, cantidad, Almacen) - SELECT w.id, s.itemFk, s.quantity * IF(vHasNotInventory,0,1), w.`name` - FROM sale s - JOIN ticket t ON t.id = s.ticketFk - JOIN `client` c ON c.id = t.clientFk - JOIN item i ON i.id = s.itemFk - JOIN itemType it ON it.id = i.typeFk - JOIN warehouse w ON w.id = t.warehouseFk - WHERE t.shipped BETWEEN vDated AND vDateDayEnd - AND (s.isPicked <> 0 or t.isLabeled <> 0 ) - AND w.valuatedInventory - AND it.isInventory - ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + s.quantity * IF(vHasNotInventory,0,1); - - END IF; - - -- Mercancia en transito - INSERT INTO inv(warehouseFk, Id_Article, cantidad, Almacen) - SELECT tr.warehouseInFk, b.itemFk, b.quantity, CONCAT(wOut.`name`,' - ', wIn.`name`) - FROM buy b - JOIN item i ON i.id = b.itemFk - JOIN entry e ON e.id = b.entryFk - JOIN travel tr ON tr.id = e.travelFk - JOIN itemType t ON t.id = i.typeFk - JOIN warehouse wIn ON wIn.id = tr.warehouseInFk - JOIN warehouse wOut ON wOut.id = tr.warehouseOutFk - WHERE vDated >= tr.shipped AND vDated < tr.landed - AND NOT isRaid - AND wIn.valuatedInventory - AND t.isInventory - AND e.isConfirmed - ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + (b.quantity); - - CALL vn.buyUltimate(NULL,vDateDayEnd); - - UPDATE inv i - JOIN tmp.buyUltimate bu ON i.warehouseFk = bu.warehouseFk AND i.Id_Article = bu.itemFk - JOIN buy b ON b.id = bu.buyFk - SET total = i.cantidad * (ifnull(b.buyingValue,0) + IFNULL(b.packageValue,0) + IFNULL(b.freightValue,0) + IFNULL(b.comissionValue,0)), - coste = ifnull(b.buyingValue,0) + IFNULL(b.packageValue,0) + IFNULL(b.freightValue,0) + IFNULL(b.comissionValue,0) - WHERE i.cantidad <> 0; - - DELETE FROM inv WHERE Cantidad IS NULL or Cantidad = 0; - - IF vIsDetailed THEN - - SELECT inv.warehouseFk, i.id, i.name, i.size, inv.Cantidad, tp.code, - tp.categoryFk, inv.coste, cast(inv.total as decimal(10,2)) total,Almacen - FROM inv - JOIN warehouse w on w.id = warehouseFk - JOIN item i ON i.id = inv.Id_Article - JOIN itemType tp ON tp.id = i.typeFk + JOIN itemCategory ic ON ic.id = tp.categoryFk WHERE w.valuatedInventory and inv.total > 0 order by inv.total desc; @@ -69969,13 +60634,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ledger_doCompensation`(vDated DATE, vCompensationAccount VARCHAR(10) , vBankFk VARCHAR(10), vConcept VARCHAR(255), vAmount DECIMAL(10,2), vCompanyFk INT, vOriginalAccount VARCHAR(10)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ledger_doCompensation`(vDated DATE, vCompensationAccount VARCHAR(10) , vBankFk VARCHAR(10), vConcept VARCHAR(255), vAmount DECIMAL(10,2), vCompanyFk INT, vOriginalAccount VARCHAR(10)) BEGIN /** * Compensa un pago o un recibo insertando en contabilidad @@ -69986,37 +60651,37 @@ BEGIN * @param vConcept descripcion * @param vAmount cantidad que se compensa * @param vCompany empresa - * @param vOriginalAccount cuenta contable desde la cual se compensa - * - */ + * @param vOriginalAccount cuenta contable desde la cual se compensa + * + */ DECLARE vNewBookEntry INT; DECLARE vIsClientCompensation INT; DECLARE vClientFk INT; DECLARE vSupplierFk INT; DECLARE vIsOriginalAClient BOOL; DECLARE vPayMethodCompensation INT; - + CALL ledger_next(vNewBookEntry); SELECT COUNT(id) INTO vIsOriginalAClient FROM client WHERE accountingAccount LIKE vOriginalAccount COLLATE utf8_general_ci; - SELECT id, COUNT(id) INTO vClientFk, vIsClientCompensation - FROM client + SELECT id, COUNT(id) INTO vClientFk, vIsClientCompensation + FROM client WHERE accountingAccount LIKE vCompensationAccount COLLATE utf8_general_ci; - + SET @vAmount1:= 0.0; SET @vAmount2:= 0.0; - INSERT INTO XDiario (ASIEN, FECHA, SUBCTA, CONTRA, CONCEPTO, EURODEBE, EUROHABER, empresa_id) - VALUES ( vNewBookEntry, - vDated, - vOriginalAccount, - vCompensationAccount, - vConcept, + INSERT INTO XDiario (ASIEN, FECHA, SUBCTA, CONTRA, CONCEPTO, EURODEBE, EUROHABER, empresa_id) + VALUES ( vNewBookEntry, + vDated, + vOriginalAccount, + vCompensationAccount, + vConcept, @vAmount1:= IF( - (vIsOriginalAClient AND vAmount > 0) OR - (NOT vIsOriginalAClient AND vAmount < 0), - 0, + (vIsOriginalAClient AND vAmount > 0) OR + (NOT vIsOriginalAClient AND vAmount < 0), + 0, ABS(vAmount) ), @vAmount2:= IF(@vAmount1, @@ -70025,20 +60690,20 @@ BEGIN ), vCompanyFk ), - ( vNewBookEntry, - vDated, - vCompensationAccount, - vOriginalAccount, - vConcept, + ( vNewBookEntry, + vDated, + vCompensationAccount, + vOriginalAccount, + vConcept, @vAmount2, @vAmount1, vCompanyFk); - + IF vIsClientCompensation THEN IF vIsOriginalAClient THEN SET vAmount = -vAmount; END IF; - INSERT INTO receipt(invoiceFk, amountPaid, payed, bankFk, companyFk, clientFk, isConciliate) + INSERT INTO receipt(invoiceFk, amountPaid, payed, bankFk, companyFk, clientFk, isConciliate) VALUES (vConcept, vAmount, vDated, vBankFk, vCompanyFk, vClientFk, TRUE); ELSE IF NOT vIsOriginalAClient THEN @@ -70046,7 +60711,7 @@ BEGIN END IF; SELECT id INTO vSupplierFk FROM supplier WHERE `account` LIKE vCompensationAccount COLLATE utf8_general_ci; SELECT id INTO vPayMethodCompensation FROM payMethod WHERE `code` = 'compensation'; - + INSERT INTO payment (received, dueDated, supplierFk, amount, bankFk, payMethodFk, concept, companyFk, isConciliated) VALUES(vDated, vDated, vSupplierFk, vAmount, vBankFk, vPayMethodCompensation, vConcept, vCompanyFk, TRUE); END IF; @@ -70062,16 +60727,16 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ledger_next`(OUT vNewBookEntry INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ledger_next`(OUT vNewBookEntry INT) BEGIN - + UPDATE vn.ledgerConfig SET lastBookEntry = LAST_INSERT_ID(lastBookEntry + 1); SET vNewBookEntry = LAST_INSERT_ID(); - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -70082,13 +60747,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `logAdd`(vOriginFk INT, vActionCode VARCHAR(45), vEntity VARCHAR(45), vDescription TEXT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `logAdd`(vOriginFk INT, vActionCode VARCHAR(45), vEntity VARCHAR(45), vDescription TEXT) BEGIN /** * Guarda las acciones realizadas por el usuario @@ -70098,8 +60763,8 @@ BEGIN * @param vEntity Nombre que hace referencia a la tabla. * @param descripcion Descripción de la acción realizada por el usuario */ - - CALL logAddWithUser(vOriginFk, account.userGetId(), vActionCode, vEntity, vDescription); + + CALL logAddWithUser(vOriginFk, account.myUser_getId(), vActionCode, vEntity, vDescription); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -70110,13 +60775,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `logAddWithUser`(vOriginFk INT, vUserId INT, vActionCode VARCHAR(45), vEntity VARCHAR(45), vDescription TEXT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `logAddWithUser`(vOriginFk INT, vUserId INT, vActionCode VARCHAR(45), vEntity VARCHAR(45), vDescription TEXT) BEGIN /** * Guarda las acciones realizadas por el usuario @@ -70151,13 +60816,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `logShow`(vOriginFk INT, vEntity VARCHAR(45)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `logShow`(vOriginFk INT, vEntity VARCHAR(45)) BEGIN /** * Muestra las acciones realizadas por el usuario @@ -70166,15 +60831,15 @@ BEGIN * @param vEntity Nombre que hace referencia a la tabla. */ DECLARE vTableName VARCHAR(45); - + SET vTableName = CONCAT(vEntity, 'Log'); - + SET @qryLog := CONCAT( 'SELECT ot.id, ot.originFk, ot.userFk, u.name, ot.action, ot.creationDate, ot.description FROM ', vTableName, ' AS ot', ' INNER JOIN account.user u ON u.id = ot.userFk', ' WHERE ot.originFk = ', vOriginFk, ' ORDER BY ot.creationDate DESC' ); - + PREPARE stmt FROM @qryLog; EXECUTE stmt; END ;; @@ -70187,21 +60852,21 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `lungSize_generator`(vDate DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `lungSize_generator`(vDate DATE) BEGIN SET @buildingOrder := 0; SET @route := 0; set @cajas := 0; - + UPDATE tmp.sorter - SET buildingOrder = @buildingOrder := IF(@route = @route := routeFk, @buildingOrder, 0) + 1 + SET buildingOrder = @buildingOrder := IF(@route = @route := routeFk, @buildingOrder, 0) + 1 where date(created) = vDate order by routeFk, created, weight DESC; @@ -70219,23 +60884,23 @@ set @cajas := 0; UPDATE tmp.sorter SET lungGrow = IF(palletOrder = 0, -13, lungGrow); - + DELETE FROM tmp.lungSize WHERE dia = vDate; - + INSERT INTO tmp.lungSize(dia, hora,size) select vDate,hora, @cajas := @cajas + cajas as size from ( select IF(lungGrow BETWEEN -12 AND -1, ETD,time_format(created,"%H:%i")) as hora, sum(if(lungGrow <= 0, lungGrow, 1)) as cajas, @cajas := 0 - from tmp.sorter + from tmp.sorter where date(created) = vDate group by hora ) sub; - + SELECT * FROM tmp.lungSize WHERE dia = vDate; - - + + END ;; @@ -70248,31 +60913,31 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `machineWorker_add`(vPlate VARCHAR(10), vWorkerFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `machineWorker_add`(vPlate VARCHAR(10), vWorkerFk INT) BEGIN - + /** * Inserta registro si el vWorkerFk no ha registrado nada en las últimas 12 horas * @param vPlate número de matrícula - * @param vWorkerFk id del worker - * -*/ - UPDATE vn.machineWorker mw - JOIN vn.machine m ON m.id = mw.machineFk - SET mw.outTimed = NOW() + * @param vWorkerFk id del worker + * +*/ + UPDATE vn.machineWorker mw + JOIN vn.machine m ON m.id = mw.machineFk + SET mw.outTimed = util.VN_NOW() WHERE (mw.workerFk = vWorkerFk OR m.plate = vPlate) AND ISNULL(mw.outTimed); - + INSERT INTO machineWorker (machineFk, workerFk) SELECT m.id, vWorkerFk FROM machine m - WHERE m.plate= vPlate; + WHERE m.plate= vPlate; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -70285,28 +60950,28 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `machineWorker_getHistorical`(vPlate VARCHAR(20), vWorkerFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `machineWorker_getHistorical`(vPlate VARCHAR(20), vWorkerFk INT) BEGIN /** - * Obtiene historial de la matrícula vPlate que el trabajador vWorkerFk escanea, + * Obtiene historial de la matrícula vPlate que el trabajador vWorkerFk escanea, * si es jefe de producción muestra el historial completo. - * + * * @param vPlate número de matrícula - * @param vWorkerFk id del trabajador - * + * @param vWorkerFk id del trabajador + * */ DECLARE vWorkerName VARCHAR(255) DEFAULT account.user_getNameFromId(vWorkerFk); - SELECT mw.inTimed,account.user_getNameFromId(mw.workerFk) as workerName, mw.outTimed + SELECT mw.inTimed,account.user_getNameFromId(mw.workerFk) as workerName, mw.outTimed FROM machineWorker mw JOIN machine m ON m.plate = vPlate WHERE mw.machineFk = m.id - AND mw.workerFk = IF(account.user_hasRole(vWorkerName, 'productionAssi'), mw.workerFk, vWorkerFk) - ORDER BY mw.inTimed DESC; + AND mw.workerFk = IF(account.user_hasRole(vWorkerName, 'coolerAssist'), mw.workerFk, vWorkerFk) + ORDER BY mw.inTimed DESC; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -70319,19 +60984,19 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `machineWorker_update`(vPlate VARCHAR(10), vWorkerFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `machineWorker_update`(vPlate VARCHAR(10), vWorkerFk INT) BEGIN - + /** - * Actualiza el registro correspondiente si el vWorkerFk se ha registrado en las últimas horas (campo maxHours de machineWorkerConfig) con vPlate, - * + * Actualiza el registro correspondiente si el vWorkerFk se ha registrado en las últimas horas (campo maxHours de machineWorkerConfig) con vPlate, + * * @param vPlate número de matrícula - * @param vWorkerFk id del trabajador - * + * @param vWorkerFk id del trabajador + * */ DECLARE vMachineFk INT(10); @@ -70340,24 +61005,24 @@ BEGIN SELECT m.id INTO vMachineFk FROM machine m WHERE m.plate = vPlate; - + SELECT maxHours INTO vMaxHours FROM machineWorkerConfig; - IF (SELECT COUNT(*) + IF (SELECT COUNT(*) FROM machineWorker m WHERE m.workerFk = vWorkerFk - AND m.inTimed >= TIMESTAMPADD(HOUR , -vMaxHours, NOW()) AND ISNULL(m.outTimed)) THEN - + AND m.inTimed >= TIMESTAMPADD(HOUR , -vMaxHours, util.VN_NOW()) AND ISNULL(m.outTimed)) THEN + UPDATE machineWorker m SET m.outTimed = CURRENT_TIMESTAMP() - WHERE m.workerFk = vWorkerFk - AND m.inTimed >= TIMESTAMPADD(HOUR , -vMaxHours, NOW()) + WHERE m.workerFk = vWorkerFk + AND m.inTimed >= TIMESTAMPADD(HOUR , -vMaxHours, util.VN_NOW()) AND ISNULL(m.outTimed) AND m.machineFk = vMachineFk; - + END IF; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -70370,25 +61035,25 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `machine_getWorkerPlate`(vWorkerFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `machine_getWorkerPlate`(vWorkerFk INT) BEGIN /** - * Selecciona la matrícula del vehículo del workerfk - * + * Selecciona la matrícula del vehículo del workerfk + * * @param vWorkerFk el id del trabajador - * - * + * + * **/ - + SELECT m.plate - FROM machine m - JOIN machineWorker mw ON mw.machineFk = m.id - WHERE mw.inTimed >= TIMESTAMPADD(HOUR , -12,NOW()) - AND ISNULL(mw.outTimed) + FROM machine m + JOIN machineWorker mw ON mw.machineFk = m.id + WHERE mw.inTimed >= TIMESTAMPADD(HOUR , -12,util.VN_NOW()) + AND ISNULL(mw.outTimed) AND mw.workerFk = vWorkerFk; END ;; @@ -70407,7 +61072,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `mail_insert`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `mail_insert`( vReceiver VARCHAR(255), vReplyTo VARCHAR(50), vSubject VARCHAR(100), @@ -70416,20 +61081,21 @@ BEGIN /** * Inserta en la tabla vn.mail * - * @param vReceiver Receptor del correo + * @param vReceiver Receptor del correo * @param vReplyTo A quién contestar el correo * @param vSubject Título del correo * @param vBody Cuerpo del correo */ - + DECLARE vIsRepeated BOOLEAN; SELECT COUNT(*) INTO vIsRepeated FROM vn.mail - WHERE creationDate >= CURDATE() + WHERE creationDate >= util.VN_CURDATE() AND `receiver` = vReceiver AND `replyTo` = vReplyTo - AND `subject` = vSubject; + AND `subject` = vSubject + AND !sent; IF NOT vIsRepeated THEN @@ -70451,22 +61117,22 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `makeNewItem`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `makeNewItem`() BEGIN DECLARE newItemFk INT; - + SELECT getNewItemId() INTO newItemFk; - + INSERT INTO item(id,name,typeFk,originFk) SELECT newItemFk, 'Nuevo artículo', 78,39; - + SELECT newItemFk; @@ -70480,13 +61146,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `makePCSGraf`(vDated DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `makePCSGraf`(vDated DATE) BEGIN @@ -70494,34 +61160,34 @@ BEGIN DECLARE vMinute INT DEFAULT 0; DECLARE vBoxes INT; - + DROP TEMPORARY TABLE IF EXISTS vn.pcsDay; CREATE TEMPORARY TABLE vn.pcsDay SELECT 0 as hh, 0 as mm, 0 as boxes; - + -- Creamos una tabla soporte para acumular las cajas a lo largo del dia WHILE vHour < 24 DO - + WHILE vMinute < 59 DO - + SET vMinute = vMinute + 1; - + INSERT INTO vn.pcsDay(hh,mm) VALUES(vHour, vMinute); - + END WHILE; - + SET vMinute = -1; SET vHour = vHour + 1; - + END WHILE; - + -- Acumulamos UPDATE vn.pcsDay pd LEFT JOIN (SELECT * FROM vn.pcs_graf WHERE dia = vDated) pg USING(hh,mm) SET pd.boxes = pd.boxes + pg.box; - + SELECT * FROM vn.pcsDay; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -70534,47 +61200,51 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `manaSpellersRequery`(vWorkerFk INTEGER) +CREATE DEFINER=`root`@`localhost` PROCEDURE `manaSpellersRequery`(vWorkerFk INTEGER) BEGIN /** * Recalcula el mana consumido por un trabajador * * @param vWorkerFk Id Trabajador - */ + */ DECLARE vWorkerIsExcluded BOOLEAN; DECLARE vFromDated DATE; - DECLARE vToDated DATE DEFAULT TIMESTAMPADD(DAY,1,CURDATE()); + DECLARE vToDated DATE DEFAULT TIMESTAMPADD(DAY,1,util.VN_CURDATE()); DECLARE vMana INT; - DECLARE vAutoMana INT; - DECLARE vManaBank INT; - DECLARE vManaGreugeType INT; - - SELECT COUNT(*) INTO vWorkerIsExcluded + DECLARE vAutoMana INT; + DECLARE vClaimMana INT; + DECLARE vManaBank INT; + DECLARE vManaGreugeType INT; + + SELECT COUNT(*) INTO vWorkerIsExcluded FROM workerManaExcluded WHERE workerFk = vWorkerFk; - + IF NOT vWorkerIsExcluded THEN - SELECT id INTO vMana + SELECT id INTO vMana FROM `component` WHERE code = 'mana'; - - SELECT id INTO vAutoMana + + SELECT id INTO vAutoMana FROM `component` WHERE code = 'autoMana'; - - SELECT id INTO vManaBank + + SELECT id INTO vClaimMana + FROM `component` WHERE code = 'manaClaim'; + + SELECT id INTO vManaBank FROM `bank` WHERE code = 'mana'; - - SELECT id INTO vManaGreugeType + + SELECT id INTO vManaGreugeType FROM `greugeType` WHERE code = 'mana'; - SELECT max(dated) INTO vFromDated + SELECT max(dated) INTO vFromDated FROM clientManaCache; - - REPLACE workerMana (workerFk, amount) - SELECT vWorkerFk, sum(mana) FROM + + REPLACE workerMana (workerFk, amount) + SELECT vWorkerFk, sum(mana) FROM ( SELECT s.quantity * sc.value as mana FROM ticket t @@ -70582,7 +61252,7 @@ BEGIN JOIN client c ON c.id = a.clientFk JOIN sale s ON s.ticketFk = t.id JOIN saleComponent sc ON sc.saleFk = s.id - WHERE c.salesPersonFk = vWorkerFk AND sc.componentFk IN (vMana, vAutoMana) + WHERE c.salesPersonFk = vWorkerFk AND sc.componentFk IN (vMana, vAutoMana, vClaimMana) AND t.shipped > vFromDated AND t.shipped < vToDated UNION ALL SELECT - r.amountPaid @@ -70595,8 +61265,8 @@ BEGIN FROM greuge g JOIN client c ON c.id = g.clientFk WHERE c.salesPersonFk = vWorkerFk AND g.greugeTypeFk = vManaGreugeType - AND g.shipped > vFromDated and g.shipped < CURDATE() - UNION ALL + AND g.shipped > vFromDated and g.shipped < util.VN_CURDATE() + UNION ALL SELECT cc.mana FROM clientManaCache cc JOIN client c ON c.id = cc.clientFk @@ -70609,65 +61279,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `mergeTicketUnattended` */; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `mergeTicketUnattended`(IN vMainTicket INT(11), IN hasSameAgency BOOLEAN) -BEGIN - - DECLARE isBilled BOOLEAN; - DECLARE arrayTickets VARCHAR(255); - - SELECT Factura IS NOT NULL INTO isBilled FROM vn2008.Tickets WHERE Id_Ticket = vMainTicket; - - IF NOT isBilled THEN - - SELECT GROUP_CONCAT(distinct T.Id_Ticket) INTO arrayTickets - FROM vn2008.Tickets T LEFT JOIN vn.ticketState ts ON T.Id_Ticket = ts.ticket - JOIN vn2008.Tickets ticketOriginal ON ticketOriginal.Id_Ticket = vMainTicket - AND T.empresa_id = ticketOriginal.empresa_id - AND T.Id_Consigna = ticketOriginal.Id_Consigna - AND DATE(T.Fecha) = DATE(ticketOriginal.Fecha) - AND T.warehouse_id = ticketOriginal.warehouse_id - AND IF(hasSameAgency <> 0,T.Id_Agencia = ticketOriginal.Id_Agencia,TRUE) - LEFT JOIN vn.ticketState tsOriginal ON ticketOriginal.Id_Ticket = tsOriginal.ticket - WHERE ts.alertLevel < 3 - AND T.Factura IS NULL - AND T.Anotadoencaja = FALSE - AND T.Id_Ticket <> vMainTicket - AND ts.alertLevel = tsOriginal.alertLevel; - - CALL mergeTicketWithArray(vMainTicket,arrayTickets); - - END IF; - - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `mergeTicketWithArray` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `mergeTicketWithArray`(IN vMainTicket INT(11), IN arrayTickets VARCHAR(50)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `mergeTicketWithArray`(IN vMainTicket INT(11), IN arrayTickets VARCHAR(50)) BEGIN DECLARE isBilled BOOLEAN; @@ -70680,8 +61302,8 @@ BEGIN SELECT Factura IS NOT NULL INTO isBilled FROM vn2008.Tickets WHERE Id_Ticket = vMainTicket; IF NOT isBilled THEN - - SELECT Id_Trabajador INTO worker from vn2008.Trabajadores where user_id = account.userGetId(); + + SELECT Id_Trabajador INTO worker from vn2008.Trabajadores where user_id = account.myUser_getId(); DROP TEMPORARY TABLE IF EXISTS vn2008.Tickets_to_fusion; @@ -70697,31 +61319,31 @@ BEGIN FROM vn2008.Tickets_to_fusion tf INNER JOIN vn2008.ticket_observation tco USING(Id_Ticket) ON DUPLICATE KEY UPDATE `text` = CONCAT(ticket_observation.`text`,CONCAT(' Ticket ', VALUES(Id_Ticket), ':' , VALUES(`text`), '. ')); - + UPDATE vn2008.Movimientos M JOIN vn2008.Tickets_to_fusion USING(Id_Ticket) SET M.Id_Ticket = vMainTicket; - + UPDATE vn2008.expeditions M JOIN vn2008.Tickets_to_fusion t ON t.Id_Ticket = M.ticket_id SET M.ticket_id = vMainTicket; - + UPDATE vn.ticketPackaging tp JOIN vn2008.Tickets_to_fusion t ON t.Id_Ticket = tp.ticketFk SET tp.ticketFk = vMainTicket; - + UPDATE vn2008.Tickets SET Bultos = (SELECT COUNT(*) FROM vn2008.expeditions WHERE ticket_id = vMainTicket AND EsBulto) WHERE Id_Ticket = vMainTicket; - + UPDATE vn2008.Tickets JOIN vn2008.Tickets_to_fusion USING(Id_Ticket) SET Fecha = TIMESTAMPADD(YEAR,-1 * (YEAR(Fecha)-2000), Fecha), Id_Ruta = NULL; - + UPDATE vn.ticketLog tl JOIN vn2008.Tickets_to_fusion t ON t.Id_Ticket = tl.originFk SET tl.originFk = vMainTicket; - + UPDATE vn2008.Tickets SET Localizacion = CONCAT(Tickets.Localizacion,' ',IFNULL((SELECT GROUP_CONCAT(Localizacion SEPARATOR ' ') FROM vn2008.Tickets_to_fusion),'')) WHERE Id_Ticket = vMainTicket; @@ -70729,15 +61351,15 @@ BEGIN UPDATE vn2008.Splits s RIGHT JOIN vn2008.Tickets_to_fusion t USING(Id_Ticket) SET s.Id_Ticket = vMainTicket; - + UPDATE vn2008.Ordenes o RIGHT JOIN vn2008.Tickets_to_fusion t ON t.Id_Ticket = o.ticketFk SET o.ticketFk = vMainTicket; IF (SELECT COUNT(*) FROM vn2008.Splits WHERE Id_Ticket=vMainTicket) > 1 THEN - + SELECT Id_Split INTO vMainSplit FROM vn2008.Splits WHERE Id_Ticket = vMainTicket LIMIT 1; - + SELECT group_concat(Notas,',') INTO messageForSplit FROM vn2008.Splits WHERE Id_Ticket = vMainTicket; UPDATE vn2008.Splits SET Notas = messageForSplit WHERE Id_Split=vMainSplit; UPDATE vn2008.Split_lines sl JOIN vn2008.Splits s USING (Id_Split) SET sl.Id_Split=vMainSplit WHERE Id_Ticket=vMainTicket; @@ -70746,11 +61368,11 @@ BEGIN SELECT GROUP_CONCAT(Id_Ticket SEPARATOR ',') into messageLog FROM vn2008.Tickets_to_fusion; CALL vn2008.Ditacio(vMainTicket,'Fusion','T',worker,messageLog,NULL); - + DELETE ts FROM vn2008.Tickets_state ts JOIN vn2008.Tickets_to_fusion t USING(Id_Ticket); - + DROP TEMPORARY TABLE vn2008.Tickets_to_fusion; - END IF; + END IF; END ;; DELIMITER ; @@ -70764,28 +61386,28 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `mysqlConnectionsSorter_kill`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `mysqlConnectionsSorter_kill`() BEGIN /** - * Elimina conexiones del usuario sorter con tiempo >= 30seg. Asociado al evento con el mismo nombre - */ - + * Elimina conexiones del usuario sorter con tiempo >= 30seg. Asociado al evento con el mismo nombre + */ + DECLARE vDone INT DEFAULT 0; DECLARE vProcesId INT; DECLARE vCursor CURSOR FOR - SELECT p.id + SELECT p.id FROM information_schema.processlist p - WHERE USER = 'sorter' + WHERE USER = 'sorter' AND TIME >= 30; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + OPEN vCursor; l: LOOP @@ -70814,15 +61436,15 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `mysqlPreparedCount_check`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `mysqlPreparedCount_check`() BEGIN DECLARE vPreparedCount INTEGER; - SELECT VARIABLE_VALUE INTO vPreparedCount + SELECT VARIABLE_VALUE INTO vPreparedCount FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME LIKE '%prepared_stmt_count%'; @@ -70830,7 +61452,7 @@ BEGIN CALL `vn`.`mail_insert`('cau@verdnatura.es', NULL, 'Problemas BBDD prepared_stmt_count', - CONCAT('Existen problemas con el servicio de Logiflora, prepared_stmt_count con valor: ', + CONCAT('Existen problemas con el servicio de Logiflora, prepared_stmt_count con valor: ', vPreparedCount, ', está próximo a exceder su límite. \r\n Hay que reiniciar el servicio LF.VMP.Service del servidor a3.') ); @@ -70842,234 +61464,52 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `nestAdd__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `nestAdd__`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45), IN `vParentFk` INT, IN `vChild` VARCHAR(100)) -BEGIN - DECLARE vSql TEXT; - DECLARE vTableClone VARCHAR(45); - - SET vTableClone = CONCAT(vTable, 'Clone'); - - CALL util.exec(CONCAT('DROP TEMPORARY TABLE IF EXISTS tmp.', vTableClone)); - CALL util.exec(CONCAT( - 'CREATE TEMPORARY TABLE tmp.', vTableClone, - ' ENGINE = MEMORY' - ' SELECT * FROM ', vScheme, '.', vTable - )); - - -- Check parent childs - SET vSql = sql_printf(' - SELECT COUNT(c.id) INTO @childs - FROM %t.%t p - LEFT JOIN %t.%t c ON c.lft BETWEEN p.lft AND p.rgt AND c.id != %v - WHERE p.id = %v', - vScheme, vTable, 'tmp', vTableClone, vParentFk, vParentFk); - SET @qrySql := vSql; - - PREPARE stmt FROM @qrySql; - EXECUTE stmt; - DEALLOCATE PREPARE stmt; - - -- Select left from last child - IF @childs = 0 THEN - SET vSql = sql_printf('SELECT lft INTO @vLeft FROM %t.%t WHERE id = %v', vScheme, vTable, vParentFk); - SET @qrySql := vSql; - ELSE - SET vSql = sql_printf(' - SELECT c.rgt INTO @vLeft - FROM %t.%t p - JOIN %t.%t c ON c.lft BETWEEN p.lft AND p.rgt - WHERE p.id = %v - ORDER BY c.lft - DESC LIMIT 1', - vScheme, vTable, 'tmp', vTableClone, vParentFk); - SET @qrySql := vSql; - END IF; - - PREPARE stmt FROM @qrySql; - EXECUTE stmt; - DEALLOCATE PREPARE stmt; - - -- Update right - SET vSql = sql_printf('UPDATE %t.%t SET rgt = rgt + 2 WHERE rgt > %v ORDER BY rgt DESC', vScheme, vTable, @vLeft); - SET @qrySql := vSql; - - PREPARE stmt FROM @qrySql; - EXECUTE stmt; - DEALLOCATE PREPARE stmt; - - SET vSql = sql_printf('UPDATE %t.%t SET lft = lft + 2 WHERE lft > %v ORDER BY lft DESC', vScheme, vTable, @vLeft); - SET @qrySql := vSql; - - PREPARE stmt FROM @qrySql; - EXECUTE stmt; - DEALLOCATE PREPARE stmt; - - -- Escape character - SET vChild = REPLACE(vChild, "'", "\\'"); - - -- Add child - SET vSql = sql_printf('INSERT INTO %t.%t (name, lft, rgt) VALUES (%v, %v, %v)', vScheme, vTable, vChild, @vLeft + 1, @vLeft + 2); - SET @qrySql := vSql; - - PREPARE stmt FROM @qrySql; - EXECUTE stmt; - DEALLOCATE PREPARE stmt; - - CALL util.exec(CONCAT('DROP TEMPORARY TABLE tmp.', vTableClone)); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `nestLeave__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `nestLeave__`(vScheme VARCHAR(45), vTable VARCHAR(45), vParentFk INT) -BEGIN - DROP TEMPORARY TABLE IF EXISTS tmp.tree; - - CALL util.exec(CONCAT( - 'CREATE TEMPORARY TABLE tmp.tree ', - 'SELECT - node.id, - node.name, - node.lft, - node.rgt, - node.depth, - node.sons - FROM ', - vScheme, '.', vTable, ' AS node, ', - vScheme, '.', vTable, ' AS parent ', - 'WHERE - node.lft BETWEEN parent.lft AND parent.rgt - AND node.depth = parent.depth + 1 - AND parent.id = ', vParentFk, ' ' - 'GROUP BY node.id - ORDER BY node.lft')); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `nestTree__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `nestTree__`( - vSourceSchema VARCHAR(45), - vSourceTable VARCHAR(45), - vDestinationSchema VARCHAR(45), - vDestinationTable VARCHAR(45)) -BEGIN - DECLARE vTableClone VARCHAR(45); - - SET vTableClone = CONCAT(vSourceTable, 'Clone'); - - CALL util.exec(CONCAT('DROP TEMPORARY TABLE IF EXISTS tmp.', vTableClone)); - CALL util.exec(CONCAT( - 'CREATE TEMPORARY TABLE tmp.', vTableClone, - ' ENGINE = MEMORY', - ' SELECT * FROM ', vSourceSchema, '.', vSourceTable - )); - - CALL util.exec(CONCAT( - 'TRUNCATE TABLE ', vDestinationSchema, '.', vDestinationTable)); - CALL util.exec(CONCAT( - 'INSERT INTO ', vDestinationSchema, '.', vDestinationTable, - '(id, name, lft, rgt, depth, sons)', - 'SELECT - node.id, - node.name, - node.lft, - node.rgt, - COUNT(parent.id) - 1 depth, - CAST((node.rgt - node.lft - 1) / 2 as DECIMAL) as sons - FROM ', - vSourceSchema, '.', vSourceTable, ' AS node,', - 'tmp.', vTableClone, ' AS parent ', - 'WHERE node.lft - BETWEEN parent.lft AND parent.rgt - GROUP BY node.id - ORDER BY node.lft')); - - CALL util.exec(CONCAT('DROP TEMPORARY TABLE tmp.', vTableClone)); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `nextShelvingCodeMake` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `nextShelvingCodeMake`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `nextShelvingCodeMake`() BEGIN DECLARE newShelving VARCHAR(3); DECLARE vCode VARCHAR(3); - + SELECT MAX(code) INTO vCode FROM vn.shelving WHERE isPrinted = FALSE; - + SET @a1 := ASCII(MID(vCode,1,1)); SET @a2 := ASCII(MID(vCode,2,1)); SET @a3 := ASCII(MID(vCode,3,1)) + 1; - + IF @a3 > 90 THEN - + SET @a3 = 65; SET @a2 = @a2 + 1; - + IF @a2 > 90 THEN - + SET @a2 = 65; SET @a1 = @a1 + 1; - + IF @a1 > 90 THEN - + SET @a1 = 65; - + END IF; - + END IF; - + END IF; SET newShelving = CHAR(@a1,@a2,@a3 USING utf8); - + INSERT INTO vn.shelving(code) VALUES(newShelving); END ;; @@ -71084,11 +61524,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `observationAdd`(vOriginFk INT, vTableCode VARCHAR(45), vDescription TEXT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `observationAdd`(vOriginFk INT, vTableCode VARCHAR(45), vDescription TEXT) BEGIN /** * Guarda las observaciones realizadas por el usuario @@ -71098,18 +61538,18 @@ BEGIN * @param descripcion Texto de la observacion */ DECLARE vTableName VARCHAR(45); - + SET vTableName = CONCAT(vTableCode,'Observation'); - + IF ISNULL(vTableName) THEN CALL util.throw('CODE_NOT_FOUND'); END IF; - + SET @qryLog := CONCAT( 'INSERT INTO ', vTableName, ' (originFk, userFk, description)', - ' VALUES (', vOriginFk, ', ', account.userGetId(), ', "', vDescription, '")' + ' VALUES (', vOriginFk, ', ', account.myUser_getId(), ', "', vDescription, '")' ); - + PREPARE stmt FROM @qryLog; EXECUTE stmt; DEALLOCATE PREPARE stmt; @@ -71123,13 +61563,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `orderCreate`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `orderCreate`( vLanded DATE, vAgencyMode INT, vAddress INT, @@ -71139,15 +61579,15 @@ BEGIN DECLARE vDeliveryMethod INT; DECLARE vClient INT; - + SELECT deliveryMethodFk INTO vDeliveryMethod - FROM vn.agencyMode + FROM vn.agencyMode WHERE id = vAgencyMode; - + SELECT clientFk INTO vClient FROM vn.address WHERE id = vAddress; - + INSERT INTO hedera.order(date_send,customer_id,delivery_method_id,agency_id,address_id,source_app) VALUES( vLanded,vClient ,vDeliveryMethod,vAgencyMode ,vAddress ,vSourceApp); @@ -71163,17 +61603,17 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `orderDelete`(IN vId INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `orderDelete`(IN vId INT) BEGIN DELETE FROM hedera.`order` where id = vId; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -71184,13 +61624,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `orderListCreate`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `orderListCreate`( vLanded DATE, vAgencyMode INT, vAddress INT, @@ -71200,7 +61640,7 @@ BEGIN DECLARE vOrderId INT; CALL vn.orderCreate(vLanded,vAgencyMode,vAddress,vSourceApp,vOrderId); SELECT vOrderId; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -71211,16 +61651,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `orderListVolume`(IN vOrderId INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `orderListVolume`(IN vOrderId INT) BEGIN - SELECT + SELECT o.id, o.itemFk, i.description, @@ -71242,11 +61682,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `packageInvoicing`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `packageInvoicing`( IN vClient INT, IN vDate DATE, IN vCompany INT, @@ -71265,20 +61705,20 @@ BEGIN SET vGraceDays = IF(vIsAllInvoiceable ,0, 30); SET vGraceDate = TIMESTAMPADD(DAY, - vGraceDays, vDate); - - /* Clientes especiales: + + /* Clientes especiales: 3240 MADEFLOR 992 JAVIER FELIU 4 TONI VENDRELL */ - + IF vClient IN (992, 3240, 4) THEN - + SET vGraceDays = 365; - + END IF; /* Fin clientes especiales */ - + SET vDateEnd = DATE_ADD(vDate, INTERVAL 1 DAY); DROP TEMPORARY TABLE IF EXISTS tmp.packageToInvoice; @@ -71302,22 +61742,23 @@ BEGIN FROM tmp.packageToInvoice GROUP BY itemFk HAVING totalQuantity > 0; - + SELECT COUNT(*) INTO vIsInvoiceable FROM tmp.packageToInvoicePositives; IF vIsInvoiceable THEN - CALL ticketCreateWithUser(vClient, + CALL ticket_add(vClient, vDateEnd, - vWarehouse, - vCompany, - NULL, - NULL, - NULL, - vDateEnd, - account.userGetId(), + vWarehouse, + vCompany, + NULL, + NULL, + NULL, + vDateEnd, + account.myUser_getId(), + TRUE, vNewTicket); INSERT INTO ticketPackaging( @@ -71325,44 +61766,44 @@ BEGIN packagingFk, quantity, pvp) - SELECT vNewTicket, - pti.packagingFk, - - SUM(pti.quantity) AS totalQuantity, + SELECT vNewTicket, + pti.packagingFk, + - SUM(pti.quantity) AS totalQuantity, pti.price FROM tmp.packageToInvoice pti - LEFT JOIN tmp.packageToInvoicePositives ptip ON pti.itemFk = ptip.itemFk - WHERE ptip.itemFK IS NOT NULL + LEFT JOIN tmp.packageToInvoicePositives ptip ON pti.itemFk = ptip.itemFk + WHERE ptip.itemFK IS NOT NULL OR vIsAllInvoiceable GROUP BY packagingFk HAVING totalQuantity; INSERT INTO sale( ticketFk, - itemFk, - concept, - quantity, + itemFk, + concept, + quantity, price ) - SELECT vNewTicket, - pti.itemFk, - i.name as concept, - sum(pti.quantity) as totalQuantity, + SELECT vNewTicket, + pti.itemFk, + i.name as concept, + sum(pti.quantity) as totalQuantity, pti.price FROM tmp.packageToInvoice pti JOIN item i ON i.id = pti.itemFk LEFT JOIN tmp.packageToInvoicePositives ptip ON pti.itemFk = ptip.itemFk - WHERE ptip.itemFK IS NOT NULL + WHERE ptip.itemFK IS NOT NULL OR vIsAllInvoiceable GROUP BY pti.itemFk HAVING totalQuantity; - + INSERT INTO saleComponent(saleFk, componentFk, value) SELECT id, vComponentCost, price FROM sale WHERE ticketFk = vNewTicket; - + END IF; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -71373,13 +61814,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `packingListPrinted`(ticketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `packingListPrinted`(ticketFk INT) BEGIN UPDATE vn2008.Movimientos_mark mm @@ -71388,7 +61829,7 @@ BEGIN WHERE mm.valor = 1 -- Listo para imprimir AND mm.stateFk = 9 -- Encajando AND m.Id_Ticket = ticketFk; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -71401,27 +61842,73 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `packingListSwitch`(saleFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `packingListSwitch`(saleFk INT) BEGIN DECLARE valueFk INT; DECLARE encajando INT DEFAULT 9; - - SELECT valor INTO valueFk - FROM vn2008.Movimientos_mark - WHERE Id_Movimiento = saleFk + + SELECT valor INTO valueFk + FROM vn2008.Movimientos_mark + WHERE Id_Movimiento = saleFk AND stateFk = encajando; - + SET valueFk = (IFNULL(valueFk,0) + 1) MOD 3; - - REPLACE vn2008.Movimientos_mark(Id_Movimiento, valor, Id_Trabajador, stateFk) + + REPLACE vn2008.Movimientos_mark(Id_Movimiento, valor, Id_Trabajador, stateFk) VALUES(saleFk,valueFk,account.myUser_getId(),encajando); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `packingSite_startCollection` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `packingSite_startCollection`(vSelf INT, vTicketFk INT) +BEGIN +/** + * @param vSelf packingSite id + * @param vTicketFk A ticket id from the collection to start + */ + DECLARE vNewCollectionFk INT; + DECLARE vOldCollectionFk INT; + DECLARE vIsPackingByOther BOOL; + + SELECT collectionFk INTO vNewCollectionFk + FROM ticketCollection WHERE ticketFk = vTicketFk; + + SELECT collectionFk INTO vOldCollectionFk + FROM packingSite WHERE id = vSelf; + + IF NOT (vOldCollectionFk <=> vNewCollectionFk) THEN + SELECT COUNT(*) > 0 + INTO vIsPackingByOther + FROM packingSite + WHERE id <> vSelf + AND collectionFk = vOldCollectionFk; + + IF NOT vIsPackingByOther AND NOT collection_isPacked(vOldCollectionFk) AND vSelf IS NOT NULL THEN + CALL util.throw('cannotChangeCollection'); + END IF; + END IF; + + UPDATE packingSite SET collectionFk = vNewCollectionFk + WHERE id = vSelf; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -71432,13 +61919,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `parking_add`(vFromColumn INT, vToColumn INT, vFromRow INT, vToRow INT, vSectorFk INT, vIsLetterMode BOOLEAN) +CREATE DEFINER=`root`@`localhost` PROCEDURE `parking_add`(vFromColumn INT, vToColumn INT, vFromRow INT, vToRow INT, vSectorFk INT, vIsLetterMode BOOLEAN) BEGIN DECLARE vColumn INT; @@ -71446,88 +61933,34 @@ BEGIN DECLARE vLetters VARCHAR(26) DEFAULT 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; DECLARE vMaxId INT; DECLARE vCode VARCHAR(8); - + SET vColumn = vFromColumn; SET vRow = vFromRow; SET vCode = CONCAT(LPAD(vColumn,3,'0'),'-',IF(vIsLetterMode, MID(vLetters, vRow, 1), LPAD(vRow, 2,'0'))); - + SELECT MAX(id) INTO vMaxId FROM vn.parking; WHILE vColumn <= vToColumn DO - + WHILE vRow <= vToRow DO - + INSERT IGNORE INTO vn.parking(`column`, `row`, sectorFk, `code`, pickingOrder) VALUES (vColumn, vRow, vSectorFk, vCode, vColumn * 100 + vRow ) ON DUPLICATE KEY UPDATE `code` = vCode; - + SET vRow = vRow + 1; SET vCode = CONCAT(LPAD(vColumn,3,'0'),'-',IF(vIsLetterMode, MID(vLetters, vRow, 1), LPAD(vRow, 2,'0'))); - + END WHILE; - + SET vRow = vFromRow; SET vColumn = vColumn + 1; - + SET vCode = CONCAT(LPAD(vColumn,3,'0'),'-',IF(vIsLetterMode, MID(vLetters, vRow, 1), LPAD(vRow, 2,'0'))); - + END WHILE; - - SELECT * FROM vn.parking WHERE `column` BETWEEN vFromColumn AND vToColumn; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `parking_add__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `parking_add__`(vFromColumn INT, vToColumn INT, vFromRow INT, vToRow INT, vSectorFk INT, vIsLetterMode BOOLEAN) -BEGIN - - DECLARE vColumn INT; - DECLARE vRow INT; - DECLARE vLetters VARCHAR(26) DEFAULT 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; - DECLARE vMaxId INT; - DECLARE vCode VARCHAR(8); - - SET vColumn = vFromColumn; - SET vRow = vFromRow; - SET vCode = CONCAT(LPAD(vColumn,3,'0'),'-',IF(vIsLetterMode, MID(vLetters, vRow, 1), LPAD(vRow, 2,'0'))); - - SELECT MAX(id) INTO vMaxId - FROM vn.parking; - - WHILE vColumn <= vToColumn DO - - WHILE vRow <= vToRow DO - - INSERT IGNORE INTO vn.parking(`column`, `row`, sectorFk, `code`, pickingOrder) - VALUES (vColumn, vRow, vSectorFk, vCode, vColumn * 100 + vRow ) - ON DUPLICATE KEY UPDATE `code` = vCode; - - SET vRow = vRow + 1; - SET vCode = CONCAT(LPAD(vColumn,3,'0'),'-',IF(vIsLetterMode, MID(vLetters, vRow, 1), LPAD(vRow, 2,'0'))); - - END WHILE; - - SET vRow = vFromRow; - SET vColumn = vColumn + 1; - - SET vCode = CONCAT(LPAD(vColumn,3,'0'),'-',IF(vIsLetterMode, MID(vLetters, vRow, 1), LPAD(vRow, 2,'0'))); - - END WHILE; - SELECT * FROM vn.parking WHERE `column` BETWEEN vFromColumn AND vToColumn; END ;; @@ -71540,71 +61973,71 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `parking_algemesi`(vFromRow INT, vToRow INT, vSectorFk INT, vLetter VARCHAR(1), vPickingOrder INT, vTrolleysByLine INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `parking_algemesi`(vFromRow INT, vToRow INT, vSectorFk INT, vLetter VARCHAR(1), vPickingOrder INT, vTrolleysByLine INT) BEGIN DECLARE vRow INT; DECLARE vCode VARCHAR(8); DECLARE i INT; - + IF vToRow < vFromRow THEN - + SET vRow = vFromRow; - + WHILE vRow >= vToRow DO - + SET i = 1; - + WHILE i <= vTrolleysByLine DO - + SET vCode = CONCAT(vLetter,'-', LPAD(vRow,2,'0'),'-', i); - + INSERT IGNORE INTO vn.parking( sectorFk, `code`, pickingOrder) VALUES (vSectorFk, vCode, vPickingOrder + (i * 10)) ON DUPLICATE KEY UPDATE `code` = vCode; - + SET i = i + 1; - + END WHILE; - + SET vRow = vRow - 1; - + END WHILE; ELSE - + SET vRow = vFromRow; - + WHILE vRow <= vToRow DO - + SET i = 1; - + WHILE i <= vTrolleysByLine DO - + SET vCode = CONCAT(vLetter,'-', LPAD(vRow,2,'0'),'-', i); - + INSERT IGNORE INTO vn.parking( sectorFk, `code`, pickingOrder) VALUES (vSectorFk, vCode, vPickingOrder + (i * 10) ) ON DUPLICATE KEY UPDATE `code` = vCode; - + SET i = i + 1; - + END WHILE; - + SET vRow = vRow + 1; - + END WHILE; - - + + END IF; - - + + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -71615,86 +62048,41 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `parking_new`(vStart INT, vEnd INT, vSectorFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `parking_new`(vStart INT, vEnd INT, vSectorFk INT) BEGIN DECLARE vRow INT; DECLARE vColumn INT; DECLARE vLetters VARCHAR(200); DECLARE vLettersLength INT; - - SET vColumn = vStart; - SET vRow = 1; - SET vLetters = 'ABCDEF'; - SET vLettersLength = LENGTH(vLetters); - - WHILE vColumn <= vEnd DO - - REPLACE vn.parking(`column`, `row`, `code`, sectorFk) - VALUES(vColumn, vRow, CONCAT(vColumn,MID(vLetters,vRow,1)), vSectorFk); - - SET vRow = vRow + 1; - - IF vRow > vLettersLength THEN - - SET vRow = 1; - SET vColumn = vColumn + 1; - - END IF; - - END WHILE; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `parking_new__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `parking_new__`(vStart INT, vEnd INT, vSectorFk INT) -BEGIN - DECLARE vRow INT; - DECLARE vColumn INT; - DECLARE vLetters VARCHAR(200); - DECLARE vLettersLength INT; - SET vColumn = vStart; SET vRow = 1; SET vLetters = 'ABCDEF'; SET vLettersLength = LENGTH(vLetters); - + WHILE vColumn <= vEnd DO - + REPLACE vn.parking(`column`, `row`, `code`, sectorFk) VALUES(vColumn, vRow, CONCAT(vColumn,MID(vLetters,vRow,1)), vSectorFk); - + SET vRow = vRow + 1; - + IF vRow > vLettersLength THEN - + SET vRow = 1; SET vColumn = vColumn + 1; - + END IF; - + END WHILE; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -71705,19 +62093,19 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `parking_setOrder`(vWarehouseFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `parking_setOrder`(vWarehouseFk INT) BEGIN - + /* * Ordena el orden de preparacion de los parking de acuerdo con la tabla vn.corridor */ - + UPDATE vn.parking p JOIN ( SELECT code, @@ -71726,90 +62114,15 @@ BEGIN SELECT c.prepOrder, p.code, @orden := 0, - IF(c.isAscendent, 1,-1) * CAST(SUBSTRING(p.code,3,2) AS DECIMAL(2,0)) subCorridor , - CAST(IF(LENGTH(p.code) > 5, SUBSTRING(p.code,6,2), 0) AS DECIMAL(2,0)) ubication + IF(c.isAscendent, 1,-1) * CAST(SUBSTRING(p.code,3,2) AS DECIMAL(2,0)) subCorridor , + CAST(IF(LENGTH(p.code) > 5, SUBSTRING(p.code,6,2), 0) AS DECIMAL(2,0)) ubication FROM vn.parking p - JOIN vn.sector s ON s.id = p.sectorFk + JOIN vn.sector s ON s.id = p.sectorFk JOIN vn.corridor c ON c.code = LEFT(p.code,1) COLLATE utf8_general_ci - WHERE s.warehouseFk = vWarehouseFk) sub - ORDER BY sub.prepOrder, subCorridor, ubication) sub2 ON sub2.code = p.code + WHERE s.warehouseFk = vWarehouseFk) sub + ORDER BY sub.prepOrder, subCorridor, ubication) sub2 ON sub2.code = p.code SET p.pickingOrder = sub2.po; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `payRoll__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `payRoll__`(IN vFromDated DATE, IN vToDated DATE, IN vFromPaid DATE, IN vToPaid DATE, IN vPartTime BOOL) -BEGIN - SET @userFk := 0; - - SELECT CONCAT(w.lastName,', ',w.firstname) AS Trabajador, - CAST(Sum((wj.total + wj.permission + wj.lunch)* wj.priceOrdinaryHour + wj.hollyday * wj.priceHollydayHour - + wj.nocturn * wj.priceNocturnHour - + wj.extra * wj.priceExtraHour) AS DECIMAL(10,2)) AS salario, - CAST(Sum(wj.permission) AS DECIMAL(10,2)) AS permission, - CAST(Sum(wj.total) AS DECIMAL(10,2)) AS total, - CAST(Sum(wj.nocturn) AS DECIMAL(10,2)) AS nocturn, - CAST(Sum(wj.hollyday) AS DECIMAL(10,2)) AS hollyday, - CAST(Sum(wj.lunch) AS DECIMAL(10,2)) AS lunch, - CAST(Sum(wj.extra) AS DECIMAL(10,2)) AS extra, - CAST(Sum(wj.contractJourney) AS DECIMAL(10,2)) AS contractJourney, - d.name AS departamento, - CAST(Sum((wj.contractJourney + wj.permission) * wj.priceOrdinaryHour) AS DECIMAL(10,2)) AS teorico, - CAST(Sum((wj.lunch + wj.permission + wj.total) * wj.priceordinaryhour) AS DECIMAL(10,2)) AS practico, - CAST(Sum(wj.nocturn * wj.pricenocturnhour) AS DECIMAL(10,2)) AS nocturno, - CAST(Sum(wj.hollyday * wj.priceHollydayHour) AS DECIMAL(10,2)) AS festivos, - CAST(Sum(wj.extra * wj.priceextrahour) AS DECIMAL(10,2)) AS extras, - MAX(wj.businessFk) as businessFk, - IF(sub.workerFk IS NULL, FALSE, TRUE) isLastBusiness, - Min(b.date_start) AS fromDated, - Max(b.date_end) AS toDated, - blp.importepactado, - bl.porhoras, - IF(wj.userFk != @userFk, CAST(IFNULL(a.Anticipos,0) AS DECIMAL(10,2)), 0) AS Anticipos, - IF(wj.userFk != @userFk, CAST(IFNULL(se.SaldoEuros,0) AS DECIMAL(10,2)), 0) AS SaldoEuros, - @userFk := wj.userFk as userFk - FROM worker w - JOIN workerJourney wj ON w.id = wj.userFk - JOIN postgresql.business b ON b.business_id = wj.businessFk - JOIN postgresql.business_labour bl ON bl.business_id = b.business_id - JOIN postgresql.calendar_labour_type cl ON cl.calendar_labour_type_id = bl.calendar_labour_type_id - JOIN postgresql.business_labour_payroll blp ON blp.business_id = b.business_id - JOIN department d ON bl.department_id = d.id - LEFT JOIN (SELECT pe.id_trabajador, SUM(debe) Anticipos - FROM postgresql.income_employee ie - JOIN postgresql.person pe ON ie.person_id = pe.person_id - WHERE odbc_date BETWEEN vFromPaid AND vToPaid - AND id_incomeType = 14 -- Salario - GROUP BY pe.id_trabajador - ) a ON a.id_trabajador = w.id - LEFT JOIN (SELECT pe.id_trabajador, SUM(debe) - SUM(haber) as SaldoEuros - FROM postgresql.income_employee ie - JOIN postgresql.person pe ON ie.person_id = pe.person_id - GROUP BY pe.id_trabajador - ) se ON se.id_trabajador = w.id - LEFT JOIN (SELECT MAX(IFNULL(ended, DATE_ADD(vToDated, INTERVAL 1 DAY )))dated,wl.workerFk - FROM vn.workerLabour wl - GROUP BY wl.workerFk - HAVING dated<=vToDated - ) sub ON sub.workerFk = w.id - WHERE wj.dated BETWEEN vFromDated AND vToDated - AND IF(vPartTime, cl.hours_week <= 40, cl.hours_week = 40) - GROUP BY w.id - ORDER BY w.lastName, w.firstname; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -71822,101 +62135,77 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `placement_test`(vParamFk INT(11)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `placement_test`(vParamFk INT(11)) BEGIN - DECLARE vCalcFk INT; - DECLARE vWarehouseFk INT; - DECLARE vWarehouseAliasFk INT; - DECLARE vCurrentYear INT DEFAULT YEAR(NOW()); - - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - ENGINE = MEMORY + DECLARE vWarehouseFk INT; + DECLARE vWarehouseAliasFk INT; + DECLARE vCurrentYear INT DEFAULT YEAR(util.VN_NOW()); + + DROP TEMPORARY TABLE IF EXISTS tmp.sale; + CREATE TEMPORARY TABLE tmp.sale + ENGINE = MEMORY SELECT 0000000 as ticketFk, 0000000 as saleFk, - 0000000 as itemFk, - FALSE as isStowaway, - 0 as quantity; - - INSERT INTO tmp.sale(ticketFk, saleFk, itemFk, isStowaway) + 0000000 as itemFk, + FALSE as isStowaway, + 0 as quantity; + + INSERT INTO tmp.sale(ticketFk, saleFk, itemFk, isStowaway) SELECT s.ticketFk, s.id, s.itemFk, FALSE FROM vn.ticketCollection tc - JOIN vn.collection c ON c.id = tc.collectionFk + JOIN vn.collection c ON c.id = tc.collectionFk JOIN vn.sale s ON s.ticketFk = tc.ticketFk JOIN vn.item i ON i.id = s.itemFk WHERE tc.collectionFk = vParamFk AND (i.itemPackingTypeFk = c.itemPackingTypeFk OR ISNULL(c.itemPackingTypeFk)) - UNION ALL + UNION ALL SELECT s.ticketFk, s.id, s.itemFk, FALSE FROM vn.sale s WHERE s.ticketFk = vParamFk; - - - /* UNION ALL - SELECT sw.shipFk, s.id, s.itemFk, TRUE - FROM vn.sale s - JOIN vn.stowaway sw ON sw.id = s.ticketFk - JOIN vn.ticketCollection tc ON tc.ticketFk = sw.shipFk - WHERE tc.collectionFk = vParamFk; - - INSERT INTO tmp.sale(ticketFk, saleFk, itemFk, isStowaway) - SELECT s.ticketFk, s.id, s.itemFk, FALSE - FROM vn.sale s - JOIN vn.ticket t ON t.id = s.ticketFk - WHERE s.ticketFk = vParamFk - AND t.shipped > '2020-01-01' - UNION ALL - SELECT sw.shipFk, s.id, s.itemFk, TRUE - FROM vn.sale s - JOIN vn.stowaway sw ON sw.id = s.ticketFk - WHERE sw.shipFk = vParamFk; - - DELETE FROM tmp.sale - WHERE saleFk = 0; - */ - SELECT t.warehouseFk, w.aliasFk + + SELECT t.warehouseFk, w.aliasFk INTO vWarehouseFk, vWarehouseAliasFk - FROM vn.ticket t + FROM vn.ticket t JOIN tmp.sale ts ON ts.ticketFk = t.id - JOIN vn.warehouse w ON w.id = t.warehouseFk - LIMIT 1; - + JOIN vn.warehouse w ON w.id = t.warehouseFk + LIMIT 1; + CALL cache.visible_refresh(vCalcFk,FALSE,vWarehouseFk); - + UPDATE tmp.sale ts JOIN ( SELECT itemFk, sum(visible) as visible - FROM vn.itemShelvingStock iss + FROM vn.itemShelvingStock iss JOIN vn.warehouse w ON w.id = iss.warehouseFk WHERE w.aliasFk = vWarehouseAliasFk GROUP BY iss.itemFk ) iss ON iss.itemFk = ts.itemFk SET ts.quantity = iss.visible; - - DROP TEMPORARY TABLE IF EXISTS tmp.sale2; - CREATE TEMPORARY TABLE tmp.sale2 - ENGINE = MEMORY + + DROP TEMPORARY TABLE IF EXISTS tmp.sale2; + CREATE TEMPORARY TABLE tmp.sale2 + ENGINE = MEMORY SELECT * FROM tmp.sale; - - - DROP TEMPORARY TABLE IF EXISTS tmp.`grouping`; - CREATE TEMPORARY TABLE tmp.`grouping` - (PRIMARY KEY (itemFk)) + + + DROP TEMPORARY TABLE IF EXISTS tmp.`grouping`; + CREATE TEMPORARY TABLE tmp.`grouping` + (PRIMARY KEY (itemFk)) ENGINE = MEMORY SELECT b.itemFk, - CASE b.groupingMode - WHEN 0 THEN 1 - WHEN 2 THEN b.packing - ELSE b.`grouping` + CASE b.groupingMode + WHEN 0 THEN 1 + WHEN 2 THEN b.packing + ELSE b.`grouping` END AS `grouping` FROM buy b JOIN cache.last_buy lb ON lb.buy_id = b.id WHERE lb.warehouse_id = vWarehouseFk ; - + DROP TEMPORARY TABLE IF EXISTS tmp.grouping2; CREATE TEMPORARY TABLE tmp.grouping2 ENGINE = MEMORY @@ -71926,81 +62215,81 @@ BEGIN CREATE TEMPORARY TABLE tmp.salePlacementList ENGINE = MEMORY - SELECT ts.saleFk, + SELECT ts.saleFk, ts.itemFk, CONCAT( - IF( iss.id, - CONCAT('< ', IFNULL(wk.`code`, '---'),' > '), - ''), + IF( iss.id, + CONCAT('< ', IFNULL(wk.`code`, '---'),' > '), + ''), p.`code`) COLLATE utf8_general_ci as placement , sh.code COLLATE utf8_general_ci as shelving, ish.created, ish.visible, IF(ts.isStowaway, - 100000, IF(ish.visible > 0 OR iss.id, 1, 100000)) * p.pickingOrder as `order`, - IFNULL(IF(sc.isPreviousPreparedByPacking, ish.packing, g.`grouping`),1) as `grouping`, - IF(iss.id, TO_SECONDS(TIMESTAMPADD(YEAR,-vCurrentYear,iss.created)), TO_SECONDS(TIMESTAMPADD(YEAR,- year(ish.created),ish.created)) + TO_SECONDS(TIMESTAMPADD(YEAR,-vCurrentYear,NOW()))) as priority, - 0 as saleOrder, - sc.isPreviousPrepared, - iss.id as itemShelvingSaleFk, - ts.ticketFk - ,iss.id - , st.saleFk as salePreviousPrepared - , iss.userFk - FROM tmp.sale ts - LEFT JOIN (SELECT DISTINCT saleFk + IFNULL(IF(sc.isPreviousPreparedByPacking, ish.packing, g.`grouping`),1) as `grouping`, + IF(iss.id, TO_SECONDS(TIMESTAMPADD(YEAR,-vCurrentYear,iss.created)), TO_SECONDS(TIMESTAMPADD(YEAR,- year(ish.created),ish.created)) + TO_SECONDS(TIMESTAMPADD(YEAR,-vCurrentYear,util.VN_NOW()))) as priority, + 0 as saleOrder, + sc.isPreviousPrepared, + iss.id as itemShelvingSaleFk, + ts.ticketFk + ,iss.id + , st.saleFk as salePreviousPrepared + , iss.userFk + FROM tmp.sale ts + LEFT JOIN (SELECT DISTINCT saleFk FROM vn.saleTracking st - JOIN vn.state s ON s.id = st.stateFk + JOIN vn.state s ON s.id = st.stateFk WHERE st.isChecked AND s.semaphore = 1) st ON st.saleFk = ts.saleFk - JOIN vn.itemShelving ish ON ish.itemFk = ts.itemFk - JOIN vn.shelving sh ON sh.code = ish.shelvingFk - JOIN vn.parking p ON p.id = sh.parkingFk - JOIN vn.sector sc ON sc.id = p.sectorFk - JOIN vn.warehouse w ON w.id = sc.warehouseFk - LEFT JOIN tmp.`grouping` g ON g.itemFk = ts.itemFk - LEFT JOIN vn.itemShelvingSale iss ON iss.saleFk = ts.saleFk AND iss.itemShelvingFk = ish.id - LEFT JOIN vn.worker wk ON wk.id = iss.userFk + JOIN vn.itemShelving ish ON ish.itemFk = ts.itemFk + JOIN vn.shelving sh ON sh.code = ish.shelvingFk + JOIN vn.parking p ON p.id = sh.parkingFk + JOIN vn.sector sc ON sc.id = p.sectorFk + JOIN vn.warehouse w ON w.id = sc.warehouseFk + LEFT JOIN tmp.`grouping` g ON g.itemFk = ts.itemFk + LEFT JOIN vn.itemShelvingSale iss ON iss.saleFk = ts.saleFk AND iss.itemShelvingFk = ish.id + LEFT JOIN vn.worker wk ON wk.id = iss.userFk WHERE w.aliasFk = vWarehouseAliasFk - HAVING (iss.id AND st.saleFk) OR salePreviousPrepared IS NULL - ; - + HAVING (iss.id AND st.saleFk) OR salePreviousPrepared IS NULL + ; + DROP TEMPORARY TABLE IF EXISTS tmp.salePlacementList_2; CREATE TEMPORARY TABLE tmp.salePlacementList_2 ENGINE MEMORY - SELECT saleFk, priority as olderPriority + SELECT saleFk, priority as olderPriority FROM (SELECT saleFk, priority FROM tmp.salePlacementList ORDER BY IF(isPreviousPrepared,2,1), IF(visible > 0 OR itemShelvingSaleFk,1,2), priority - ) sub - GROUP BY saleFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.salePlacementList_3; + LIMIT 10000000000000000000 + ) sub + GROUP BY saleFk; + + DROP TEMPORARY TABLE IF EXISTS tmp.salePlacementList_3; CREATE TEMPORARY TABLE tmp.salePlacementList_3 ENGINE MEMORY - SELECT s1.saleFk, `order`as saleOrder + SELECT s1.saleFk, `order`as saleOrder FROM tmp.salePlacementList s1 - JOIN tmp.salePlacementList_2 s2 ON s2.saleFk = s1.saleFk AND s2.olderPriority = s1.priority; - - UPDATE tmp.salePlacementList s1 + JOIN tmp.salePlacementList_2 s2 ON s2.saleFk = s1.saleFk AND s2.olderPriority = s1.priority; + + UPDATE tmp.salePlacementList s1 JOIN tmp.salePlacementList_3 s3 ON s3.saleFk = s1.saleFk - SET s1.saleOrder = s3.saleOrder; - /* - -- Anula el orden de antigüedad y ordena por ubicación */ - UPDATE tmp.salePlacementList - SET saleOrder = `order`; - - SELECT * + SET s1.saleOrder = s3.saleOrder; + /* + -- Anula el orden de antigüedad y ordena por ubicación */ + UPDATE tmp.salePlacementList + SET saleOrder = `order`; + + SELECT * FROM tmp.salePlacementList - ORDER BY visible <> 0 DESC,saleOrder, IF(isPreviousPrepared,2,1), IF(itemShelvingSaleFk,1,2),priority; - + ORDER BY visible <> 0 DESC,saleOrder, IF(isPreviousPrepared,2,1), IF(itemShelvingSaleFk,1,2),priority; + DROP TEMPORARY TABLE tmp.sale, - tmp.sale2, - tmp.`grouping`, - tmp.grouping2, - tmp.salePlacementList_2, - tmp.salePlacementList_3; - + tmp.sale2, + tmp.`grouping`, + tmp.grouping2, + tmp.salePlacementList_2, + tmp.salePlacementList_3; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -72011,25 +62300,25 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `prepareClientList`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `prepareClientList`() BEGIN - + /* * Require la tabla tmp.ticket(id,clientFk) */ - + DROP TEMPORARY TABLE IF EXISTS tmp.client; CREATE TEMPORARY TABLE tmp.client (PRIMARY KEY (id)) ENGINE = MEMORY SELECT DISTINCT clientFk id - FROM tmp.ticket; + FROM tmp.ticket; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -72040,16 +62329,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `prepareTicketList`(vStartingDate DATETIME, vEndingDate DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `prepareTicketList`(vStartingDate DATETIME, vEndingDate DATETIME) BEGIN - - DROP TEMPORARY TABLE IF EXISTS tmp.productionTicket; + + DROP TEMPORARY TABLE IF EXISTS tmp.productionTicket; CREATE TEMPORARY TABLE tmp.productionTicket (PRIMARY KEY (ticketFk)) ENGINE = MEMORY @@ -72059,11 +62348,11 @@ BEGIN JOIN vn.client c ON c.id = t.clientFk WHERE c.typeFk IN ('normal','handMaking','internalUse') AND ( - t.shipped BETWEEN CURDATE() AND vEndingDate + t.shipped BETWEEN util.VN_CURDATE() AND vEndingDate OR ( ts.alertLevel < 3 AND t.shipped >= vStartingDate - AND t.shipped < CURDATE() + AND t.shipped < util.VN_CURDATE() ) ); END ;; @@ -72072,366 +62361,68 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `previousPreparationSticker_get__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `previousPreparationSticker_get__`(vTicketFk INT) -BEGIN - - SELECT t.id ticketFk, - p.code as location, - t.observations, - IF(HOUR(t.shipped), HOUR(t.shipped), HOUR(z.`hour`)) shippingHour, - IF(MINUTE(t.shipped), MINUTE(t.shipped), MINUTE(z.`hour`)) shippingMinute , - i.itemPackingTypeFk , - count(*) items - FROM vn.ticket t - JOIN vn.sale s ON s.ticketFk = t.id - JOIN vn.item i ON i.id = s.itemFk - -- JOIN vn.itemShelvingStock iss ON iss.itemFk = s.itemFk AND iss.sectorFk = 38 - JOIN vn.saleTracking st ON st.saleFk = s.id - JOIN vn.state ss ON ss.id = st.stateFk - LEFT JOIN vn.zone z ON z.id = t.zoneFk - LEFT JOIN vn.shelving sh ON sh.code = t.id - LEFT JOIN vn.parking p ON p.id = sh.parkingFk - WHERE t.id = vTicketFk - AND ss.code = 'PREVIOUS_PREPARATION' - AND st.isChecked = FALSE - GROUP BY i.itemPackingTypeFk ; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `previousSticker_get` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `previousSticker_get`(vSaleGroupFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `previousSticker_get`(vSaleGroupFk INT) BEGIN - - /* - * Devuelve los campos a imprimir en una etiqueta de preparación previa - * - * @param vSaleGroupFk Identificador de vn.saleGroup - */ +/** + * Devuelve los campos a imprimir en una etiqueta de preparación previa. + * Actualiza el valor de vn.saleGroup.parkingFk en el caso de que exista un saleGroup del mismo ticket + * con parking, del mismo sector, para que todos se pongan juntos + * + * @param vSaleGroupFk Identificador de vn.saleGroup + */ + DECLARE vTicketFk INT; + DECLARE vParkingFk INT; + DECLARE vSectorFk INT; - SELECT sgd.saleGroupFk, - t.id ticketFk, + SELECT s.ticketFk + INTO vTicketFk + FROM vn.saleGroupDetail sgd + JOIN vn.sale s ON s.id = sgd.saleFk + WHERE sgd.saleGroupFk = vSaleGroupFk + LIMIT 1; + + SELECT sg.parkingFk, sc.sectorFk + INTO vParkingFk, vSectorFk + FROM vn.saleGroup sg + JOIN vn.sectorCollectionSaleGroup scsg ON scsg.saleGroupFk = sg.id + JOIN vn.sectorCollection sc ON sc.id = scsg.sectorCollectionFk + JOIN vn.saleGroupDetail sgd ON sgd.saleGroupFk = sg.id + JOIN vn.sale s ON s.id = sgd.saleFk + WHERE s.ticketFk = vTicketFk + AND sg.parkingFk IS NOT NULL + LIMIT 1; + + UPDATE vn.saleGroup sg + SET sg.parkingFk = vParkingFk + WHERE sg.id = vSaleGroupFk + AND sg.sectorFk = vSectorFk; + + SELECT sgd.saleGroupFk, + t.id ticketFk, p.code as location, t.observations, - IF(HOUR(t.shipped), HOUR(t.shipped), HOUR(z.`hour`)) shippingHour, - IF(MINUTE(t.shipped), MINUTE(t.shipped), MINUTE(z.`hour`)) shippingMinute , - i.itemPackingTypeFk , - count(*) items + IF(HOUR(t.shipped), HOUR(t.shipped), HOUR(z.`hour`)) shippingHour, + IF(MINUTE(t.shipped), MINUTE(t.shipped), MINUTE(z.`hour`)) shippingMinute , + IFNULL(MAX(i.itemPackingTypeFk),'H') itemPackingTypeFk , + count(*) items FROM vn.sale s - JOIN vn.item i ON i.id = s.itemFk + JOIN vn.item i ON i.id = s.itemFk JOIN vn.saleGroupDetail sgd ON sgd.saleFk = s.id - JOIN vn.saleGroup sg ON sg.id = sgd.saleGroupFk + JOIN vn.saleGroup sg ON sg.id = sgd.saleGroupFk JOIN vn.ticket t ON t.id = s.ticketFk LEFT JOIN vn.parking p ON p.id = sg.parkingFk LEFT JOIN vn.`zone` z ON z.id = t.zoneFk WHERE sgd.saleGroupFk = vSaleGroupFk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `printTrolleyLabel` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `printTrolleyLabel`(vTicket INT, vPrinter INT, vReport INT) -BEGIN -/** - * Inserta en la cola de impresion una nueva etiqueta de carro, para el sacador - * - * @param vTicket Numero del ticket - * @param vPrinter Numero de impresora - * @param vReport Numero del informe - **/ - DECLARE vlabelCount INT DEFAULT 0; - DECLARE PRIORITY INT DEFAULT 3; - DECLARE vWorker INT; - DECLARE vShipmentHour VARCHAR(10); - - SELECT getTicketTrolleyLabelCount(vTicket) INTO vLabelCount; - SELECT account.myUser_getId() INTO vWorker; - SELECT CONCAT(getShipmentHour(vTicket),':00') INTO vShipmentHour; - - INSERT INTO printingQueue(printer - , priority - , report - , `text` - , worker - , text2 - , text3) - VALUES (vPrinter - , PRIORITY - , vReport - , vTicket - , vWorker - , vLabelCount - , vShipmentHour); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `prod` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `prod`(vWarehouseFk INT, vScopeDays INT) -proc: BEGIN - - DECLARE vEndingDate DATETIME DEFAULT TIMESTAMPADD(DAY,vScopeDays,util.dayEnd(CURDATE())); - - DECLARE vIsTodayRelative BOOLEAN; - - SELECT isTodayRelative INTO vIsTodayRelative - FROM vn.worker - WHERE userFk = vn.getUser(); - - CALL vn.prepareTicketList(TIMESTAMPADD(DAY,-1,CURDATE()), vEndingDate); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticket; - CREATE TEMPORARY TABLE tmp.ticket - SELECT * FROM tmp.productionTicket; - - CALL vn.prepareClientList(); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketGetProblems; - CREATE TEMPORARY TABLE tmp.ticketGetProblems - (INDEX (ticketFk)) ENGINE = MEMORY - SELECT tt.ticketFk, tt.clientFk, t.warehouseFk, t.shipped - FROM tmp.productionTicket tt - JOIN vn.ticket t ON t.id = tt.ticketFk; - - CALL vn.ticketGetProblems(vIsTodayRelative); - - DROP TEMPORARY TABLE IF EXISTS tmp.productionBuffer; - CREATE TEMPORARY TABLE tmp.productionBuffer - (PRIMARY KEY(ticketFk)) - ENGINE = MEMORY - SELECT tt.ticketFk - , tt.clientFk - , t.warehouseFk - , t.nickname - , t.packages - , IF(HOUR(t.shipped), HOUR(t.shipped), IFNULL(HOUR(zc.hour),HOUR(z.hour))) as HH - , IFNULL(HOUR(zc.hour),HOUR(z.hour)) as Departure - , IF(MINUTE(t.shipped), MINUTE(t.shipped), IFNULL(MINUTE(zc.hour), MINUTE(z.hour))) as mm - , t.routeFk - , IF(am.deliveryMethodFk = 2,z.`id`,0) as zona - , t.nickname addressNickname - , a.postalCode - , a.city - , p.name province - , CONCAT(z.`name`,' ',IFNULL(RIGHT(t.routeFk,3),'')) agency - , am.id agencyModeFk - , 0 AS `lines` - , CAST( 0 AS DECIMAL(5,2)) AS m3 - , CAST( 0 AS DECIMAL(5,2)) AS preparationRate - , "" as problem - , IFNULL(tls.state,2) AS state - , w.code workerCode - , DATE(t.shipped) shipped - , wk.code AS salesPersonCode - , p.id provinceFk - , tls.productionOrder - , ifnull(tls.alertLevel,0) alertLevel - , t.isBoxed as palletized - , rg.deviceId ubicacion - , tlu.lastUpdated - -- , tls.updated lastUpdated - , ifnull(st.graphCategory,0) graphCategory - , pk.code as parking - , 0 AS H - , 0 AS V - , 0 AS F - , 0 AS P - , st.isOk - , ag.isOwn - FROM tmp.productionTicket tt - JOIN vn.ticket t on tt.ticketFk = t.id - LEFT JOIN vn.ticketStateToday tst ON tst.ticket = t.id - LEFT JOIN vn.state st ON st.id = tst.state - LEFT JOIN vn.client c ON c.id = t.clientFk - LEFT JOIN vn.worker wk ON wk.id = c.salesPersonFk - JOIN vn.address a on a.id = t.addressFk - LEFT JOIN vn.province p on p.id = a.provinceFk - JOIN vn.agencyMode am ON am.id = t.agencyModeFk - JOIN vn.agency ag ON ag.id = am.agencyFk - LEFT JOIN vn.ticketState tls on tls.ticket = tt.ticketFk - LEFT JOIN vn.ticketLastUpdated tlu ON tlu.ticketFk = tt.ticketFk - LEFT JOIN vn.worker w on w.id = tls.worker - LEFT JOIN vn.routeGate rg ON rg.routeFk = t.routeFk - LEFT JOIN vn.zone z ON z.id = t.zoneFk - LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk AND date(t.shipped) = zc.dated - LEFT JOIN vn.ticketParking tp ON tp.ticketFk = t.id - LEFT JOIN vn.parking pk ON pk.id = tp.parkingFk - WHERE t.warehouseFk = vWarehouseFk - AND am.deliveryMethodFk IN (1,2,3); - - ALTER TABLE tmp.productionBuffer - CHANGE COLUMN `problem` `problem` VARCHAR(255), - ADD COLUMN `collectionH` INT, - ADD COLUMN `collectionV` INT, - ADD COLUMN `collectionF` INT, - ADD COLUMN `collectionP` INT; - - -- Líneas y volumen por ticket - UPDATE tmp.productionBuffer pb - JOIN ( - SELECT tt.ticketFk, - COUNT(*) as `lines`, - sum(sv.volume) as m3, - IFNULL(sum(IF(sv.isPicked,sv.volume,0)) / sum(sv.volume),0) as rate - FROM tmp.productionTicket tt - JOIN vn.saleVolume sv on sv.ticketFk = tt.ticketFk - GROUP BY tt.ticketFk - ) m on m.ticketFk = pb.ticketFk - SET pb.`lines` = m.`lines`, - pb.m3 = m.m3, - pb.preparationRate = m.rate; - - DELETE FROM tmp.productionBuffer - WHERE `lines`= 0; - - -- Lineas por linea de encajado - UPDATE tmp.productionBuffer pb - JOIN ( SELECT ticketFk, - sum(sub.H) H, - sum(sub.V) V, - sum(sub.F) F, - sum(sub.P) P - FROM ( - SELECT t.ticketFk, - sum(i.itemPackingTypeFk = 'H') H, - sum(i.itemPackingTypeFk = 'V') V, - sum(i.itemPackingTypeFk = 'F') F, - sum(i.itemPackingTypeFk = 'P') P - FROM tmp.productionTicket t - JOIN vn.sale s ON s.ticketFk = t.ticketFk - JOIN vn.item i ON i.id = s.itemFk - GROUP BY t.ticketFk, i.itemPackingTypeFk) sub - GROUP BY ticketFk - ) sub2 ON sub2.ticketFk = pb.ticketFk - SET pb.H = sub2.H, - pb.V = sub2.V, - pb.F = sub2.F, - pb.P = sub2.P; - - -- Colecciones segun tipo de encajado - UPDATE tmp.productionBuffer pb - JOIN vn.ticketCollection tc ON pb.ticketFk = tc.ticketFk - JOIN vn.collection c ON c.id = tc.collectionFk - SET pb.collectionH = c.id - WHERE c.itemPackingTypeFk = 'H' OR ISNULL(c.itemPackingTypeFk); - - UPDATE tmp.productionBuffer pb - JOIN vn.ticketCollection tc ON pb.ticketFk = tc.ticketFk - JOIN vn.collection c ON c.id = tc.collectionFk - SET pb.collectionV = c.id - WHERE c.itemPackingTypeFk = 'V' OR ISNULL(c.itemPackingTypeFk); - - UPDATE tmp.productionBuffer pb - JOIN vn.ticketCollection tc ON pb.ticketFk = tc.ticketFk - JOIN vn.collection c ON c.id = tc.collectionFk - SET pb.collectionF = c.id - WHERE c.itemPackingTypeFk = 'F' OR ISNULL(c.itemPackingTypeFk); - - UPDATE tmp.productionBuffer pb - JOIN vn.ticketCollection tc ON pb.ticketFk = tc.ticketFk - JOIN vn.collection c ON c.id = tc.collectionFk - SET pb.collectionP = c.id - WHERE c.itemPackingTypeFk = 'P' OR ISNULL(c.itemPackingTypeFk); - - -- Cajas - ALTER TABLE tmp.productionBuffer - ADD Cajas DOUBLE DEFAULT NULL; - /* - -- Problemas por ticket - UPDATE tmp.productionBuffer pb - JOIN tmp.ticketProblems tp ON tp.ticketFk = pb.ticketFk - SET pb.problem = CAST(CONCAT( IFNULL(tp.itemShortage,''), - IFNULL(tp.itemDelay,''), - IF(tp.isFreezed,' CONGELADO',''), - IF(tp.risk,' RIESGO',''), - IF(tp.hasTicketRequest, ' COD 100',''), - IF(tp.isTaxDataChecked, '',' FICHA INCOMPLETA'), - IF(tp.componentLack,' COMPONENTES', '') - ) as char(255)); - */ - -- Refresca la caché para el cierre dinámico de agencias - -- CALL cache.departure_timing(vWarehouseFk); -/* - -- Tickets de recogida - REPLACE tmp.productionBuffer( - shipped - , ticketFk - , agency - , clientFk - , addressNickname - , state - , workerCode - , alertLevel - , warehouseFk - ) - SELECT DATE(t.shipped) - , t.id - , am.name - , t.clientFk - , a.nickname - , s.id as state - , w.code - , ifnull(tls.alertLevel,0) alert_level - , vWarehouseFk - FROM vn.ticket t - JOIN vn.address a on a.id = t.addressFk - JOIN vn.agencyMode am ON am.id = t.agencyModeFk - LEFT JOIN vn2008.warehouse_pickup wp ON wp.agency_id = am.id - LEFT JOIN vn.ticketState tls on tls.ticket = t.id - LEFT JOIN vn.state s ON s.id = tls.state - LEFT JOIN vn.worker w on w.id = tls.worker - WHERE t.shipped between TIMESTAMPADD(WEEK,-1,CURDATE()) AND util.dayend(TIMESTAMPADD(DAY,-1,CURDATE())) - AND wp.warehouse_id = vWarehouseFk; -*/ - DROP TEMPORARY TABLE tmp.productionTicket; - DROP TEMPORARY TABLE tmp.ticket; - DROP TEMPORARY TABLE IF EXISTS tmp.risk; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -72442,465 +62433,233 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `productionControl`(vWarehouseFk INT, vScopeDays INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `productionControl`(vWarehouseFk INT, vScopeDays INT) proc: BEGIN +/** + * Devuelve un listado de tickets con parámetros relativos a la producción de los días en rango + * + * @param vWarehouseFk Identificador de vn.warehouse + * @param vScopeDays Número de días desde hoy en adelante que entran en el cálculo. + * + * @return Table tmp.productionBuffer + */ + DECLARE vEndingDate DATETIME DEFAULT TIMESTAMPADD(DAY, LEAST(1,vScopeDays), util.dayEnd(util.VN_CURDATE())); + DECLARE vIsTodayRelative BOOLEAN; - DECLARE vEndingDate DATETIME DEFAULT TIMESTAMPADD(DAY,vScopeDays,util.dayEnd(CURDATE())); - - DECLARE vIsTodayRelative BOOLEAN; - - CALL util.debugAdd('vn.productionControl',CONCAT('warehouse: ',vWarehouseFk,' scopeDays:',vScopeDays)); - - SELECT isTodayRelative INTO vIsTodayRelative - FROM vn.worker - WHERE userFk = vn.getUser(); - - CALL vn.prepareTicketList(TIMESTAMPADD(DAY,-1,CURDATE()), vEndingDate); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticket; - CREATE TEMPORARY TABLE tmp.ticket - SELECT * FROM tmp.productionTicket; - - CALL vn.prepareClientList(); - - DROP TEMPORARY TABLE IF EXISTS tmp.sale_getProblems; - CREATE TEMPORARY TABLE tmp.sale_getProblems - (INDEX (ticketFk)) ENGINE = MEMORY - SELECT tt.ticketFk, tt.clientFk, t.warehouseFk, t.shipped - FROM tmp.productionTicket tt - JOIN vn.ticket t ON t.id = tt.ticketFk; - - CALL vn.ticket_getProblems(vIsTodayRelative); - - DROP TEMPORARY TABLE IF EXISTS tmp.productionBuffer; - CREATE TEMPORARY TABLE tmp.productionBuffer - (PRIMARY KEY(ticketFk)) - ENGINE = MEMORY - SELECT tt.ticketFk - , tt.clientFk - , t.warehouseFk - , t.nickname - , t.packages - , IF(HOUR(t.shipped), HOUR(t.shipped), IFNULL(HOUR(zc.hour),HOUR(z.hour))) as HH - , IFNULL(HOUR(zc.hour),HOUR(z.hour)) as Departure - , IF(MINUTE(t.shipped), MINUTE(t.shipped), IFNULL(MINUTE(zc.hour), MINUTE(z.hour))) as mm - , t.routeFk - , IF(am.deliveryMethodFk = 2,z.`id`,0) as zona - , t.nickname addressNickname - , a.postalCode - , a.city - , p.name province - , CONCAT(z.`name`,' ',IFNULL(RIGHT(t.routeFk,3),'')) agency - , am.id agencyModeFk - , 0 AS `lines` - , CAST( 0 AS DECIMAL(5,2)) AS m3 - , CAST( 0 AS DECIMAL(5,2)) AS preparationRate - , "" as problem - , IFNULL(tls.state,2) AS state - , w.code workerCode - , DATE(t.shipped) shipped - , wk.code AS salesPersonCode - , p.id provinceFk - , tls.productionOrder - , ifnull(tls.alertLevel,0) alertLevel - , t.isBoxed as palletized - , IF(rm.isPickingAllowed ,rm.bufferFk, NULL) ubicacion - , tlu.lastUpdated - , ifnull(st.graphCategory,0) graphCategory - , pk.code as parking - , 0 AS H - , 0 AS V - , 0 AS N - , st.isOk - , ag.isOwn - FROM tmp.productionTicket tt - JOIN vn.ticket t on tt.ticketFk = t.id - LEFT JOIN vn.ticketStateToday tst ON tst.ticket = t.id - LEFT JOIN vn.state st ON st.id = tst.state - LEFT JOIN vn.client c ON c.id = t.clientFk - LEFT JOIN vn.worker wk ON wk.id = c.salesPersonFk - JOIN vn.address a on a.id = t.addressFk - LEFT JOIN vn.province p on p.id = a.provinceFk - JOIN vn.agencyMode am ON am.id = t.agencyModeFk - JOIN vn.agency ag ON ag.id = am.agencyFk - LEFT JOIN vn.ticketState tls on tls.ticket = tt.ticketFk - LEFT JOIN vn.ticketLastUpdated tlu ON tlu.ticketFk = tt.ticketFk - LEFT JOIN vn.worker w on w.id = tls.worker - LEFT JOIN vn.routesMonitor rm ON rm.routeFk = t.routeFk - LEFT JOIN vn.zone z ON z.id = t.zoneFk - LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk AND date(t.shipped) = zc.dated - LEFT JOIN vn.ticketParking tp ON tp.ticketFk = t.id - LEFT JOIN vn.parking pk ON pk.id = tp.parkingFk - WHERE t.warehouseFk = vWarehouseFk - AND am.deliveryMethodFk IN (1,2,3); + # Se comenta el IF para poder depurar (redmine #4537) + # IF vWarehouseFk <> 60 OR vScopeDays > 2 OR vScopeDays < 0 THEN + CALL util.debugAdd('productionControl', CONCAT('wh: ', vWarehouseFk, ' sd: ', vScopeDays)); + # END IF; - ALTER TABLE tmp.productionBuffer - CHANGE COLUMN `problem` `problem` VARCHAR(255), - ADD COLUMN `collectionH` INT, - ADD COLUMN `collectionV` INT; - - -- Líneas y volumen por ticket - UPDATE tmp.productionBuffer pb - JOIN ( - SELECT tt.ticketFk, - COUNT(*) as `lines`, - sum(sv.volume) as m3, - IFNULL(sum(IF(sv.isPicked,sv.volume,0)) / sum(sv.volume),0) as rate - FROM tmp.productionTicket tt - JOIN vn.saleVolume sv on sv.ticketFk = tt.ticketFk - GROUP BY tt.ticketFk - ) m on m.ticketFk = pb.ticketFk - SET pb.`lines` = m.`lines`, - pb.m3 = m.m3, - pb.preparationRate = m.rate; - - DELETE FROM tmp.productionBuffer - WHERE `lines`= 0; + SELECT isTodayRelative INTO vIsTodayRelative + FROM vn.worker + WHERE userFk = vn.getUser(); - -- Lineas por linea de encajado - UPDATE tmp.productionBuffer pb - JOIN ( SELECT ticketFk, - sum(sub.H) H, - sum(sub.V) V, - sum(sub.N) N - FROM ( - SELECT t.ticketFk, - sum(i.itemPackingTypeFk = 'H') H, - sum(i.itemPackingTypeFk = 'V') V, - sum(ISNULL(i.itemPackingTypeFk)) N - FROM tmp.productionTicket t - JOIN vn.sale s ON s.ticketFk = t.ticketFk - JOIN vn.item i ON i.id = s.itemFk - GROUP BY t.ticketFk, i.itemPackingTypeFk) sub - GROUP BY ticketFk - ) sub2 ON sub2.ticketFk = pb.ticketFk - SET pb.H = sub2.H, - pb.V = sub2.V, - pb.N = sub2.N; - - -- Colecciones segun tipo de encajado - UPDATE tmp.productionBuffer pb - JOIN vn.ticketCollection tc ON pb.ticketFk = tc.ticketFk - JOIN vn.collection c ON c.id = tc.collectionFk - SET pb.collectionH = c.id - WHERE c.itemPackingTypeFk = 'H' OR ISNULL(c.itemPackingTypeFk); - - UPDATE tmp.productionBuffer pb - JOIN vn.ticketCollection tc ON pb.ticketFk = tc.ticketFk - JOIN vn.collection c ON c.id = tc.collectionFk - SET pb.collectionV = c.id - WHERE c.itemPackingTypeFk = 'V' OR ISNULL(c.itemPackingTypeFk); - - -- Cajas - ALTER TABLE tmp.productionBuffer - ADD Cajas DOUBLE DEFAULT NULL; - - -- Problemas por ticket - UPDATE tmp.productionBuffer pb - JOIN tmp.ticket_problems tp ON tp.ticketFk = pb.ticketFk - SET pb.problem = TRIM(CAST(CONCAT( IFNULL(tp.itemShortage,''), - IFNULL(tp.itemDelay,''), - IF(tp.isFreezed,' CONGELADO',''), - IF(tp.hasHighRisk,' RIESGO',''), - IF(tp.hasTicketRequest, ' COD 100',''), - IF(tp.isTaxDataChecked, '',' FICHA INCOMPLETA'), - IF(tp.hasComponentLack,' COMPONENTES', ''), - IF(tp.isTooLittle,' PEQUEÑO', '') - ) as char(255))); - - -- Refresca la caché para el cierre dinámico de agencias - -- CALL cache.departure_timing(vWarehouseFk); -/* - -- Tickets de recogida - REPLACE tmp.productionBuffer( - shipped - , ticketFk - , agency - , clientFk - , addressNickname - , state - , workerCode - , alertLevel - , warehouseFk - ) - SELECT DATE(t.shipped) - , t.id - , am.name - , t.clientFk - , a.nickname - , s.id as state - , w.code - , ifnull(tls.alertLevel,0) alert_level - , vWarehouseFk - FROM vn.ticket t - JOIN vn.address a on a.id = t.addressFk - JOIN vn.agencyMode am ON am.id = t.agencyModeFk - LEFT JOIN vn2008.warehouse_pickup wp ON wp.agency_id = am.id - LEFT JOIN vn.ticketState tls on tls.ticket = t.id - LEFT JOIN vn.state s ON s.id = tls.state - LEFT JOIN vn.worker w on w.id = tls.worker - WHERE t.shipped between TIMESTAMPADD(WEEK,-1,CURDATE()) AND util.dayend(TIMESTAMPADD(DAY,-1,CURDATE())) - AND wp.warehouse_id = vWarehouseFk; -*/ - DROP TEMPORARY TABLE tmp.productionTicket; - DROP TEMPORARY TABLE tmp.ticket; - DROP TEMPORARY TABLE IF EXISTS tmp.risk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `productionControl__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `productionControl__`(vWarehouseFk INT, vScopeDays INT) -proc: BEGIN + CALL vn.prepareTicketList(TIMESTAMPADD(DAY, -1, util.VN_CURDATE()), vEndingDate); - DECLARE vEndingDate DATETIME DEFAULT TIMESTAMPADD(DAY,vScopeDays,util.dayEnd(CURDATE())); - - DECLARE vIsTodayRelative BOOLEAN; - - CALL util.debugAdd('vn.productionControl',CONCAT('warehouse: ',vWarehouseFk,' scopeDays:',vScopeDays)); - - SELECT isTodayRelative INTO vIsTodayRelative - FROM vn.worker - WHERE userFk = vn.getUser(); - - CALL vn.prepareTicketList(TIMESTAMPADD(DAY,-1,CURDATE()), vEndingDate); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticket; - CREATE TEMPORARY TABLE tmp.ticket - SELECT * FROM tmp.productionTicket; - - CALL vn.prepareClientList(); - /* - DROP TEMPORARY TABLE IF EXISTS tmp.ticketGetProblems; - CREATE TEMPORARY TABLE tmp.ticketGetProblems - (INDEX (ticketFk)) ENGINE = MEMORY - SELECT tt.ticketFk, tt.clientFk, t.warehouseFk, t.shipped - FROM tmp.productionTicket tt - JOIN vn.ticket t ON t.id = tt.ticketFk; - - CALL vn.ticketGetProblems(vIsTodayRelative); - */ - - DROP TEMPORARY TABLE IF EXISTS tmp.sale_getProblems; - CREATE TEMPORARY TABLE tmp.sale_getProblems - (INDEX (ticketFk)) ENGINE = MEMORY - SELECT tt.ticketFk, tt.clientFk, t.warehouseFk, t.shipped - FROM tmp.productionTicket tt - JOIN vn.ticket t ON t.id = tt.ticketFk; - - CALL vn.ticket_getProblems(vIsTodayRelative); - - DROP TEMPORARY TABLE IF EXISTS tmp.productionBuffer; - CREATE TEMPORARY TABLE tmp.productionBuffer - (PRIMARY KEY(ticketFk)) - ENGINE = MEMORY - SELECT tt.ticketFk - , tt.clientFk - , t.warehouseFk - , t.nickname - , t.packages - , IF(HOUR(t.shipped), HOUR(t.shipped), IFNULL(HOUR(zc.hour),HOUR(z.hour))) as HH - , IFNULL(HOUR(zc.hour),HOUR(z.hour)) as Departure - , IF(MINUTE(t.shipped), MINUTE(t.shipped), IFNULL(MINUTE(zc.hour), MINUTE(z.hour))) as mm - , t.routeFk - , IF(am.deliveryMethodFk = 2,z.`id`,0) as zona - , t.nickname addressNickname - , a.postalCode - , a.city - , p.name province - , CONCAT(z.`name`,' ',IFNULL(RIGHT(t.routeFk,3),'')) agency - , am.id agencyModeFk - , 0 AS `lines` - , CAST( 0 AS DECIMAL(5,2)) AS m3 - , CAST( 0 AS DECIMAL(5,2)) AS preparationRate - , "" as problem - , IFNULL(tls.state,2) AS state - , w.code workerCode - , DATE(t.shipped) shipped - , wk.code AS salesPersonCode - , p.id provinceFk - , tls.productionOrder - , ifnull(tls.alertLevel,0) alertLevel - , t.isBoxed as palletized - , IF(rm.isPickingAllowed ,rm.bufferFk, NULL) ubicacion - , tlu.lastUpdated - , ifnull(st.graphCategory,0) graphCategory - , pk.code as parking - , 0 AS H - , 0 AS V - , 0 AS F - , 0 AS P - , st.isOk - , ag.isOwn - FROM tmp.productionTicket tt - JOIN vn.ticket t on tt.ticketFk = t.id - LEFT JOIN vn.ticketStateToday tst ON tst.ticket = t.id - LEFT JOIN vn.state st ON st.id = tst.state - LEFT JOIN vn.client c ON c.id = t.clientFk - LEFT JOIN vn.worker wk ON wk.id = c.salesPersonFk - JOIN vn.address a on a.id = t.addressFk - LEFT JOIN vn.province p on p.id = a.provinceFk - JOIN vn.agencyMode am ON am.id = t.agencyModeFk - JOIN vn.agency ag ON ag.id = am.agencyFk - LEFT JOIN vn.ticketState tls on tls.ticket = tt.ticketFk - LEFT JOIN vn.ticketLastUpdated tlu ON tlu.ticketFk = tt.ticketFk - LEFT JOIN vn.worker w on w.id = tls.worker - -- LEFT JOIN vn.routeGate rg ON rg.routeFk = t.routeFk - LEFT JOIN vn.routesMonitor rm ON rm.routeFk = t.routeFk - LEFT JOIN vn.zone z ON z.id = t.zoneFk - LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk AND date(t.shipped) = zc.dated - LEFT JOIN vn.ticketParking tp ON tp.ticketFk = t.id - LEFT JOIN vn.parking pk ON pk.id = tp.parkingFk - WHERE t.warehouseFk = vWarehouseFk - AND am.deliveryMethodFk IN (1,2,3); + CREATE OR REPLACE TEMPORARY TABLE tmp.ticket + SELECT * FROM tmp.productionTicket; - ALTER TABLE tmp.productionBuffer + CALL vn.prepareClientList(); + + CREATE OR REPLACE TEMPORARY TABLE tmp.sale_getProblems + (INDEX (ticketFk)) ENGINE = MEMORY + SELECT tt.ticketFk, tt.clientFk, t.warehouseFk, t.shipped + FROM tmp.productionTicket tt + JOIN vn.ticket t ON t.id = tt.ticketFk; + + CALL vn.ticket_getProblems(vIsTodayRelative); + + CREATE OR REPLACE TEMPORARY TABLE tmp.productionBuffer + (PRIMARY KEY(ticketFk)) + ENGINE = MEMORY + SELECT tt.ticketFk, + tt.clientFk, + t.warehouseFk, + t.nickname, + t.packages, + IF(HOUR(t.shipped), HOUR(t.shipped),COALESCE(HOUR(zc.hour),HOUR(z.hour))) HH, + COALESCE(HOUR(zc.hour),HOUR(z.hour)) Departure, + COALESCE(MINUTE(t.shipped), MINUTE(zc.hour), MINUTE(z.hour)) mm, + t.routeFk, + IF(am.deliveryMethodFk = 2,z.`id`,0) zona, + t.nickname addressNickname, + a.postalCode, + a.city, + p.name province, + CONCAT(z.`name`,' ',IFNULL(RIGHT(t.routeFk,3),'')) agency, + am.id agencyModeFk, + 0 `lines`, + CAST( 0 AS DECIMAL(5,2)) m3, + CAST( 0 AS DECIMAL(5,2)) preparationRate, + "" problem, + IFNULL(tls.state,2) state, + w.code workerCode, + DATE(t.shipped) shipped, + wk.code salesPersonCode, + p.id provinceFk, + tls.productionOrder, + IFNULL(tls.alertLevel,0) alertLevel, + t.isBoxed palletized, + IF(rm.isPickingAllowed ,rm.bufferFk, NULL) ubicacion, + tlu.lastUpdated, + ifnull(st.graphCategory,0) graphCategory, + pk.code parking, + 0 H, + 0 V, + 0 N, + st.isOk, + ag.isOwn, + rm.bufferFk + FROM tmp.productionTicket tt + JOIN vn.ticket t on tt.ticketFk = t.id + LEFT JOIN vn.ticketStateToday tst ON tst.ticket = t.id + LEFT JOIN vn.state st ON st.id = tst.state + LEFT JOIN vn.client c ON c.id = t.clientFk + LEFT JOIN vn.worker wk ON wk.id = c.salesPersonFk + JOIN vn.address a on a.id = t.addressFk + LEFT JOIN vn.province p on p.id = a.provinceFk + JOIN vn.agencyMode am ON am.id = t.agencyModeFk + JOIN vn.agency ag ON ag.id = am.agencyFk + LEFT JOIN vn.ticketState tls on tls.ticket = tt.ticketFk + LEFT JOIN vn.ticketLastUpdated tlu ON tlu.ticketFk = tt.ticketFk + LEFT JOIN vn.worker w on w.id = tls.worker + LEFT JOIN vn.routesMonitor rm ON rm.routeFk = t.routeFk + LEFT JOIN vn.`zone` z ON z.id = t.zoneFk + LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk + AND DATE(t.shipped) = zc.dated + LEFT JOIN vn.ticketParking tp ON tp.ticketFk = t.id + LEFT JOIN vn.parking pk ON pk.id = tp.parkingFk + WHERE t.warehouseFk = vWarehouseFk + AND am.deliveryMethodFk IN (1,2,3); + + # Problemas por ticket + ALTER TABLE tmp.productionBuffer CHANGE COLUMN `problem` `problem` VARCHAR(255), ADD COLUMN `collectionH` INT, ADD COLUMN `collectionV` INT, - ADD COLUMN `collectionF` INT, - ADD COLUMN `collectionP` INT; - - -- Líneas y volumen por ticket - UPDATE tmp.productionBuffer pb - JOIN ( - SELECT tt.ticketFk, - COUNT(*) as `lines`, - sum(sv.volume) as m3, - IFNULL(sum(IF(sv.isPicked,sv.volume,0)) / sum(sv.volume),0) as rate - FROM tmp.productionTicket tt - JOIN vn.saleVolume sv on sv.ticketFk = tt.ticketFk - GROUP BY tt.ticketFk - ) m on m.ticketFk = pb.ticketFk - SET pb.`lines` = m.`lines`, - pb.m3 = m.m3, - pb.preparationRate = m.rate; - - DELETE FROM tmp.productionBuffer - WHERE `lines`= 0; + ADD COLUMN `collectionN` INT; - -- Lineas por linea de encajado - UPDATE tmp.productionBuffer pb - JOIN ( SELECT ticketFk, - sum(sub.H) H, - sum(sub.V) V, - sum(sub.F) F, - sum(sub.P) P - FROM ( - SELECT t.ticketFk, - sum(i.itemPackingTypeFk = 'H') H, - sum(i.itemPackingTypeFk = 'V') V, - sum(i.itemPackingTypeFk = 'F') F, - sum(i.itemPackingTypeFk = 'P') P - FROM tmp.productionTicket t - JOIN vn.sale s ON s.ticketFk = t.ticketFk - JOIN vn.item i ON i.id = s.itemFk - GROUP BY t.ticketFk, i.itemPackingTypeFk) sub + UPDATE tmp.productionBuffer pb + JOIN tmp.ticket_problems tp ON tp.ticketFk = pb.ticketFk + SET pb.problem = TRIM(CAST(CONCAT( IFNULL(tp.itemShortage,''), + IFNULL(tp.itemDelay,''), + IFNULL(tp.itemLost,''), + IF(tp.isFreezed,' CONGELADO',''), + IF(tp.hasHighRisk,' RIESGO',''), + IF(tp.hasTicketRequest, ' COD 100',''), + IF(tp.isTaxDataChecked, '',' FICHA INCOMPLETA'), + IF(tp.hasComponentLack,' COMPONENTES', ''), + IF(HOUR(util.VN_NOW()) < pb.HH AND tp.isTooLittle,' PEQUEÑO', '') + ) AS char(255))); + + # Clientes Nuevos o Recuperados + UPDATE tmp.productionBuffer pb + LEFT JOIN bs.clientNewBorn cnb ON cnb.clientFk = pb.clientFk + JOIN vn.productionConfig pc + SET pb.problem = TRIM(CAST(CONCAT('NUEVO ', pb.problem) AS CHAR(255))) + WHERE (ISNULL(cnb.clientFk) OR cnb.isRookie) + AND pc.rookieDays; + + # Líneas y volumen por ticket + UPDATE tmp.productionBuffer pb + JOIN ( + SELECT tt.ticketFk, + COUNT(*) `lines`, + SUM(sv.volume) m3, + IFNULL(SUM(IF(sv.isPicked,sv.volume,0)) / SUM(sv.volume),0) rate + FROM tmp.productionTicket tt + JOIN vn.saleVolume sv ON sv.ticketFk = tt.ticketFk + GROUP BY tt.ticketFk + ) m on m.ticketFk = pb.ticketFk + SET pb.`lines` = m.`lines`, + pb.m3 = m.m3, + pb.preparationRate = m.rate; + + DELETE FROM tmp.productionBuffer + WHERE `lines`= 0; + + # Lineas por linea de encajado + UPDATE tmp.productionBuffer pb + JOIN ( SELECT ticketFk, + SUM(sub.H) H, + SUM(sub.V) V, + SUM(sub.N) N + FROM ( + SELECT t.ticketFk, + SUM(i.itemPackingTypeFk = 'H') H, + SUM(i.itemPackingTypeFk = 'V') V, + SUM(ISNULL(i.itemPackingTypeFk)) N + FROM tmp.productionTicket t + JOIN vn.sale s ON s.ticketFk = t.ticketFk + JOIN vn.item i ON i.id = s.itemFk + GROUP BY t.ticketFk, i.itemPackingTypeFk) sub GROUP BY ticketFk - ) sub2 ON sub2.ticketFk = pb.ticketFk + ) sub2 ON sub2.ticketFk = pb.ticketFk SET pb.H = sub2.H, pb.V = sub2.V, - pb.F = sub2.F, - pb.P = sub2.P; - - -- Colecciones segun tipo de encajado + pb.N = sub2.N; + + # Colecciones segun tipo de encajado UPDATE tmp.productionBuffer pb - JOIN vn.ticketCollection tc ON pb.ticketFk = tc.ticketFk - JOIN vn.collection c ON c.id = tc.collectionFk - SET pb.collectionH = c.id - WHERE c.itemPackingTypeFk = 'H' OR ISNULL(c.itemPackingTypeFk); - + JOIN vn.ticketCollection tc ON pb.ticketFk = tc.ticketFk + SET pb.collectionH = IF(pb.H,tc.collectionFk,NULL), + pb.collectionV = IF(pb.V,tc.collectionFk,NULL), + pb.collectionN = IF(pb.N,tc.collectionFk,NULL); + + # Previa pendiente + ALTER TABLE tmp.productionBuffer + ADD previousWithoutParking BOOL DEFAULT FALSE; + + CREATE OR REPLACE TEMPORARY TABLE tmp.ticketWithPrevia + (ticketFk INT PRIMARY KEY, + salesCount INT DEFAULT 0, + salesInParkingCount INT DEFAULT 0) + ENGINE = MEMORY; + + # Insertamos todos los tickets que tienen productos parkineados + # en sectores de previa, segun el sector + INSERT INTO tmp.ticketWithPrevia(ticketFk, salesCount) + SELECT pb.ticketFk, COUNT(DISTINCT s.id) + FROM tmp.productionBuffer pb + JOIN vn.sale s ON s.ticketFk = pb.ticketFk + JOIN vn.itemShelvingStock iss ON iss.itemFk = s.itemFk + JOIN vn.sector sc ON sc.id = iss.sectorFk + JOIN vn.item i ON i.id = iss.itemFk + WHERE iss.isPreviousPrepared + AND (ISNULL(sc.itemPackingTypeFk) + OR (ISNULL(i.itemPackingTypeFk) AND NOT pb.V) + OR sc.itemPackingTypeFk = i.itemPackingTypeFk ) + GROUP BY pb.ticketFk; + + # Se calcula la cantidad de productos que estan ya preparados porque su saleGroup está aparcado + UPDATE tmp.ticketWithPrevia twp + JOIN ( SELECT pb.ticketFk, COUNT(DISTINCT s.id) salesInParkingCount + FROM tmp.productionBuffer pb + JOIN vn.sale s ON s.ticketFk = pb.ticketFk + JOIN vn.saleGroupDetail sgd ON sgd.saleFk = s.id + JOIN vn.saleGroup sg ON sg.id = sgd.saleGroupFk + WHERE NOT ISNULL(sg.parkingFk) + GROUP BY pb.ticketFk ) sub ON twp.ticketFk = sub.ticketFk + SET twp.salesInParkingCount = sub.salesInParkingCount; + + # Marcamos como pendientes aquellos que no coinciden las cantidades UPDATE tmp.productionBuffer pb - JOIN vn.ticketCollection tc ON pb.ticketFk = tc.ticketFk - JOIN vn.collection c ON c.id = tc.collectionFk - SET pb.collectionV = c.id - WHERE c.itemPackingTypeFk = 'V' OR ISNULL(c.itemPackingTypeFk); - - UPDATE tmp.productionBuffer pb - JOIN vn.ticketCollection tc ON pb.ticketFk = tc.ticketFk - JOIN vn.collection c ON c.id = tc.collectionFk - SET pb.collectionF = c.id - WHERE c.itemPackingTypeFk = 'F' OR ISNULL(c.itemPackingTypeFk); - - UPDATE tmp.productionBuffer pb - JOIN vn.ticketCollection tc ON pb.ticketFk = tc.ticketFk - JOIN vn.collection c ON c.id = tc.collectionFk - SET pb.collectionP = c.id - WHERE c.itemPackingTypeFk = 'P' OR ISNULL(c.itemPackingTypeFk); - - -- Cajas - ALTER TABLE tmp.productionBuffer - ADD Cajas DOUBLE DEFAULT NULL; - - -- Problemas por ticket - UPDATE tmp.productionBuffer pb - JOIN tmp.ticket_problems tp ON tp.ticketFk = pb.ticketFk - SET pb.problem = TRIM(CAST(CONCAT( IFNULL(tp.itemShortage,''), - IFNULL(tp.itemDelay,''), - IF(tp.isFreezed,' CONGELADO',''), - IF(tp.hasHighRisk,' RIESGO',''), - IF(tp.hasTicketRequest, ' COD 100',''), - IF(tp.isTaxDataChecked, '',' FICHA INCOMPLETA'), - IF(tp.hasComponentLack,' COMPONENTES', ''), - IF(tp.isTooLittle,' PEQUEÑO', '') - ) as char(255))); - - -- Refresca la caché para el cierre dinámico de agencias - -- CALL cache.departure_timing(vWarehouseFk); -/* - -- Tickets de recogida - REPLACE tmp.productionBuffer( - shipped - , ticketFk - , agency - , clientFk - , addressNickname - , state - , workerCode - , alertLevel - , warehouseFk - ) - SELECT DATE(t.shipped) - , t.id - , am.name - , t.clientFk - , a.nickname - , s.id as state - , w.code - , ifnull(tls.alertLevel,0) alert_level - , vWarehouseFk - FROM vn.ticket t - JOIN vn.address a on a.id = t.addressFk - JOIN vn.agencyMode am ON am.id = t.agencyModeFk - LEFT JOIN vn2008.warehouse_pickup wp ON wp.agency_id = am.id - LEFT JOIN vn.ticketState tls on tls.ticket = t.id - LEFT JOIN vn.state s ON s.id = tls.state - LEFT JOIN vn.worker w on w.id = tls.worker - WHERE t.shipped between TIMESTAMPADD(WEEK,-1,CURDATE()) AND util.dayend(TIMESTAMPADD(DAY,-1,CURDATE())) - AND wp.warehouse_id = vWarehouseFk; -*/ - DROP TEMPORARY TABLE tmp.productionTicket; - DROP TEMPORARY TABLE tmp.ticket; - DROP TEMPORARY TABLE IF EXISTS tmp.risk; - + JOIN tmp.ticketWithPrevia twp ON twp.ticketFk = pb.ticketFk + SET pb.previousWithoutParking = TRUE + WHERE twp.salesCount > twp.salesInParkingCount; + + DROP TEMPORARY TABLE tmp.productionTicket; + DROP TEMPORARY TABLE tmp.ticket; + DROP TEMPORARY TABLE tmp.risk; + DROP TEMPORARY TABLE tmp.ticket_problems; + DROP TEMPORARY TABLE tmp.ticketWithPrevia; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -72911,88 +62670,122 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `productionSectorList`(vSectorFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `productionSectorList`(vSectorFk INT) BEGIN - + + /** + * Devuelve el listado de vn.sale que se puede preparar en previa para ese sector + * + * @param vSectorFk Identificador de vn.sector + */ + DECLARE vWarehouseFk INT; SELECT warehouseFk INTO vWarehouseFk FROM vn.sector WHERE id = vSectorFk; - CALL vn.productionControl(vWarehouseFk, 0); - + DROP TEMPORARY TABLE IF EXISTS tmp.whiteTicket; + CREATE TEMPORARY TABLE tmp.whiteTicket + (ticketFk INT PRIMARY KEY) + SELECT s.ticketFk , count(*) AS saleNum, sum(ISNULL(i.itemPackingTypeFk)) iptNull + FROM vn.sale s + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.ticket t ON t.id = s.ticketFk + WHERE t.shipped BETWEEN util.VN_CURDATE() AND TIMESTAMPADD(HOUR, 23, util.VN_CURDATE()) + GROUP BY s.ticketFk + HAVING saleNum = iptNull; + + DROP TEMPORARY TABLE IF EXISTS tmp.sectorTypeTicket; + CREATE TEMPORARY TABLE tmp.sectorTypeTicket + (ticketFk INT PRIMARY KEY) + SELECT s.ticketFk , sum(i.itemPackingTypeFk <=> sc.itemPackingTypeFk) iptSector + FROM vn.sale s + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.sector sc ON sc.id = vSectorFk + WHERE t.shipped BETWEEN util.VN_CURDATE() AND TIMESTAMPADD(HOUR, 23, util.VN_CURDATE()) + GROUP BY s.ticketFk + HAVING iptSector; + + CALL vn.productionControl(vWarehouseFk, 0); + SELECT 0,999999,0 INTO @sameTicket, @ticket, @litrosTicket; - + SELECT @litrosTicket := IF(sub.ticketFk = @ticket, @litrosTicket + Litros, Litros) as LitrosTicket, - @sameTicket := IF(sub.ticketFk = @ticket, @sameTicket, IF(@sameTicket, 0 , 1)) as sameTicket, - sub.*, - @ticket := ticketFk + @sameTicket := IF(sub.ticketFk = @ticket, @sameTicket, IF(@sameTicket, 0 , 1)) as sameTicket, + sub.*, + @ticket := ticketFk AS lastTicket FROM ( SELECT * FROM ( - SELECT isa.saleFk, - isa.Modificado, - isa.ticketFk, - isa.isPicked, - isa.itemFk, - isa.quantity, + SELECT isa.saleFk, + isa.Modificado, + isa.ticketFk, + isa.isPicked, + isa.itemFk, + isa.quantity, isa.concept, - i.itemPackingTypeFk, - isa.`size`, - isa.Estado, - isa.sectorProdPriority, - isa.available, - isa.sectorFk, - isa.matricula, - isa.parking, - isa.itemShelving, - isa.Agency, - isa.shipped, - isa.`grouping`, - isa.packing, - isa.`hour`, - isa.isPreviousPreparable, - isa.physicalVolume, - isa.warehouseFk , - sum(isa.available) as totalAvailable, - IF (HOUR(isa.shipped),HOUR(isa.shipped), HOUR(isa.`hour`)) Hora, - IF (MINUTE(isa.shipped),MINUTE(isa.shipped), MINUTE(isa.`hour`)) Minuto, + i.itemPackingTypeFk, + isa.`size`, + isa.Estado, + isa.sectorProdPriority, + isa.available, + isa.sectorFk, + isa.matricula, + isa.parking, + isa.itemShelving, + isa.Agency, + isa.shipped, + isa.`grouping`, + isa.packing, + isa.`hour`, + isa.isPreviousPreparable, + isa.physicalVolume, + isa.warehouseFk , + sum(isa.available) as totalAvailable, + IF (HOUR(isa.shipped),HOUR(isa.shipped), HOUR(isa.`hour`)) Hora, + IF (MINUTE(isa.shipped),MINUTE(isa.shipped), MINUTE(isa.`hour`)) Minuto, i.subName, CAST(isa.physicalVolume * 1000 AS DECIMAL(10,0)) as Litros FROM vn.itemShelvingAvailable isa JOIN vn.item i ON i.id = isa.itemFk - JOIN vn.sector s ON s.id = isa.sectorFk - AND s.warehouseFk = isa.warehouseFk - AND (i.itemPackingTypeFk = s.itemPackingTypeFk - -- OR ISNULL(i.itemPackingTypeFk) - OR ISNULL(s.itemPackingTypeFk)) - JOIN vn.ticket t ON t.id = isa.ticketFk - JOIN vn.client c ON c.id = t.clientFk - JOIN tmp.productionBuffer pb ON pb.ticketFk = t.id - JOIN vn.packagingConfig pc - WHERE IF(s.isPreviousPreparedByPacking, - i.`size` > pc.previousPreparationMinimumSize - AND isa.packing > 1 - AND (MOD(TRUNCATE(isa.quantity,0), isa.packing)= 0 ), + JOIN vn.sector s ON s.id = isa.sectorFk AND s.warehouseFk = isa.warehouseFk + JOIN vn.ticket t ON t.id = isa.ticketFk + LEFT JOIN tmp.whiteTicket wt ON wt.ticketFk = isa.ticketFk + LEFT JOIN tmp.sectorTypeTicket stt ON stt.ticketFk = isa.ticketFk + JOIN vn.client c ON c.id = t.clientFk + JOIN tmp.productionBuffer pb ON pb.ticketFk = t.id + JOIN vn.packagingConfig pc + WHERE IF(s.isPreviousPreparedByPacking, + i.`size` > pc.previousPreparationMinimumSize + AND isa.packing > 1 + AND (MOD(TRUNCATE(isa.quantity,0), isa.packing)= 0 ), TRUE) AND isa.sectorFk = vSectorFk AND isa.quantity > 0 - AND pb.problem = "" + AND pb.problem = "" + AND (i.itemPackingTypeFk <=> s.itemPackingTypeFk + OR ISNULL(s.itemPackingTypeFk) + OR wt.ticketFk + OR (stt.ticketFk AND ISNULL(i.itemPackingTypeFk))) GROUP BY saleFk HAVING isa.quantity <= totalAvailable ) sub2 - ORDER BY Hora, Minuto, ticketFk + ORDER BY Hora, Minuto, ticketFk LIMIT 10000000000000000000 ) sub - ; - + ; + + DROP TEMPORARY TABLE tmp.whiteTicket; + DROP TEMPORARY TABLE tmp.sectorTypeTicket; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -73005,11 +62798,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `rangeDateInfo`(vStarted DATE, vEnded DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `rangeDateInfo`(vStarted DATE, vEnded DATE) BEGIN /** * Crea una tabla temporal con las fechas @@ -73030,7 +62823,7 @@ BEGIN `yearMonth` INT ) ENGINE = MEMORY; - + WHILE vDated <= vEnded DO INSERT INTO tmp.rangeDate SET `dated` = vDated, @@ -73040,7 +62833,7 @@ BEGIN `day` = DAY(vDated), `week` = WEEK(vDated, 1), `yearMonth` = YEAR(vDated) * 100 + MONTH(vDated); - + SET vDated = DATE_ADD(vDated, INTERVAL 1 DAY); END WHILE; END ;; @@ -73055,22 +62848,22 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `rankingTeamByQuarter`(vYear INT, vQuarter INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `rankingTeamByQuarter`(vYear INT, vQuarter INT) BEGIN DECLARE vMinimumSalesByQuarter INT; - + SELECT minimumSalesByQuarter INTO vMinimumSalesByQuarter FROM commissionConfig; - + DROP TEMPORARY TABLE IF EXISTS tmp.rankingTeam; CREATE TEMPORARY TABLE tmp.rankingTeam - (PRIMARY KEY(departmentFk)) ENGINE = MEMORY - SELECT + (PRIMARY KEY(departmentFk)) ENGINE = MEMORY + SELECT (sub1.importe - sub2.importe) / IF ((sub1.importe - sub2.importe) > 0,sub3.countPeople,1) AS diferencia, CONCAT(sub1.name, '(', @@ -73080,14 +62873,14 @@ BEGIN ')') AS teamPeople, sub1.departmentFk AS departmentFk FROM - (((SELECT + (((SELECT SUM(sub.importe) AS importe, sub.name AS name, sub.año AS año, sub.departmentFk AS departmentFk, COUNT(*) peopleMinSale FROM - (SELECT + (SELECT SUM(v.portfolioWeight) AS importe, d.`name`, v.año, @@ -73102,7 +62895,7 @@ BEGIN GROUP BY v.Id_Trabajador HAVING importe >= vMinimumSalesByQuarter) sub GROUP BY sub.departmentFk) sub1 - JOIN (SELECT + JOIN (SELECT SUM(v.portfolioWeight) AS importe, d.name, wd.departmentFk @@ -73114,7 +62907,7 @@ BEGIN AND d.name LIKE 'EQUIPO%' AND CEIL(v.mes / 3) = vQuarter GROUP BY wd.departmentFk - ORDER BY SUM(v.importe) DESC) sub2 ON (sub1.name = sub2.name)) + ORDER BY SUM(v.importe) DESC LIMIT 10000000000000000000) sub2 ON (sub1.name = sub2.name)) JOIN (SELECT COUNT(0) AS countPeople, wd.departmentFk AS departmentFk FROM @@ -73136,11 +62929,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `rate_getPrices`(vDated DATE, vWarehouseFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `rate_getPrices`(vDated DATE, vWarehouseFk INT) BEGIN /** * Prepara una tabla con las tarifas aplicables en funcion de la fecha y el almacén @@ -73148,7 +62941,7 @@ BEGIN * @param vDated fecha para la cual calcula la tarifa * @param vWarehouseFk warehouse para el cual calcula la tafia * @return tmp.rate(rate0, rate1, rate2, rate3) - */ + */ DROP TEMPORARY TABLE IF EXISTS tRate; CREATE TEMPORARY TABLE tRate SELECT rate0, rate1, rate2, rate3 @@ -73156,13 +62949,13 @@ BEGIN WHERE dated <= vDated AND warehouseFk = vWarehouseFk ORDER BY dated DESC; - + DROP TEMPORARY TABLE IF EXISTS tmp.rate; CREATE TEMPORARY TABLE tmp.rate ENGINE = MEMORY SELECT * FROM ( - SELECT * FROM tRate + SELECT * FROM tRate UNION ALL SELECT rate0, rate1, rate2, rate3 FROM rateConfig ) sub2 @@ -73180,11 +62973,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `rate_getPrices2`(vLanded DATE, vWarehouseFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `rate_getPrices2`(vLanded DATE, vWarehouseFk INT) BEGIN -- Prepara una tabla con las tarifas aplicables en funcion de la fecha y el almacén @@ -73195,13 +62988,13 @@ BEGIN WHERE dated <= vLanded AND warehouseFk = vWarehouseFk ORDER BY dated DESC; - + DROP TEMPORARY TABLE IF EXISTS tmp.rate; CREATE TEMPORARY TABLE tmp.rate ENGINE = MEMORY SELECT * FROM ( - SELECT * FROM tRate + SELECT * FROM tRate UNION ALL SELECT rate0, rate1, rate2, rate3 FROM rateConfig ) sub2 @@ -73213,58 +63006,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `rate_getPrices__` */; +/*!50003 DROP PROCEDURE IF EXISTS `recipe_Cook` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `rate_getPrices__`(vLanded DATE, vWarehouseFk INT) -BEGIN - - -- Prepara una tabla con las tarifas aplicables en funcion de la fecha y el almacén - - DROP TEMPORARY TABLE IF EXISTS tmp.rate; - CREATE TEMPORARY TABLE tmp.rate - ENGINE = MEMORY - SELECT * FROM - ( - SELECT * FROM - ( - SELECT DISTINCT rate0, rate1, rate2, rate3 - FROM vn.rate - WHERE dated <= vLanded - AND warehouseFk = vWarehouseFk - ORDER BY dated DESC - - ) sub - UNION ALL - SELECT rate0, rate1, rate2, rate3 - FROM rateConfig - ) sub2 - LIMIT 1; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `recipe_Cook` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `recipe_Cook`(vItemFk INT, vBunchesQuantity INT, vDate DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `recipe_Cook`(vItemFk INT, vBunchesQuantity INT, vDate DATE) BEGIN DECLARE vCalc INT; @@ -73276,7 +63028,7 @@ BEGIN CALL cache.available_refresh(vCalc, FALSE, vWarehouseFk, vDate); DROP TEMPORARY TABLE IF EXISTS tmp.recipeCook; - + CREATE TEMPORARY TABLE tmp.recipeCook SELECT *, @counter := IF(@element = element COLLATE utf8_general_ci , @counter + 1, 1) as counter, @@ -73294,22 +63046,22 @@ BEGIN IFNULL((i.inkFk = r.inkFk ) ,0) + IFNULL((i.size = r.size) ,0) + IFNULL((i.name LIKE CONCAT('%',r.name,'%')) ,0) - + IFNULL((i.longName LIKE CONCAT('%',r.longName,'%')),0) + + IFNULL((i.longName LIKE CONCAT('%',r.longName,'%')),0) + IFNULL((i.typeFk = r.typeFk),0) as matches, i.typeFk, rl.previousSelected - FROM vn.recipe r + FROM vn.recipe r JOIN vn.item i ON (IFNULL(i.name LIKE CONCAT('%',r.name,'%'), 0) OR IFNULL(i.longName LIKE CONCAT('%',r.longName,'%'),0)) OR i.typeFk <=> r.typeFk JOIN cache.available a ON a.item_id = i.id AND a.calc_id = vCalc LEFT JOIN (SELECT recipe_ItemFk, element as log_element, selected_ItemFk, count(*) as previousSelected FROM vn.recipe_log - GROUP BY recipe_ItemFk, element, selected_ItemFk) rl ON rl.recipe_ItemFk = r.itemFk + GROUP BY recipe_ItemFk, element, selected_ItemFk) rl ON rl.recipe_ItemFk = r.itemFk AND rl.log_element = r.element AND rl.selected_ItemFk = i.id WHERE r.itemFk = vItemFk - AND a.available > vBunchesQuantity * r.quantity + AND a.available > vBunchesQuantity * r.quantity UNION ALL SELECT 100 itemFk, CONCAT('? ',r.element,' ',IFNULL(r.size,''),' ',IFNULL(r.inkFk,'')) as longName, @@ -73326,15 +63078,15 @@ BEGIN WHERE r.itemFk = vItemFk GROUP BY r.element ) sub - + ORDER BY element, matches DESC, previousSelected DESC; - - SELECT * + + SELECT * FROM tmp.recipeCook WHERE counter < 6 - OR itemFk = 100 + OR itemFk = 100 ; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -73345,13 +63097,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `recipe_Plaster`(vItemFk INT, vTicketFk INT, vQuantity INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `recipe_Plaster`(vItemFk INT, vTicketFk INT, vQuantity INT) BEGIN DECLARE vLastCost DECIMAL(10,2); @@ -73359,71 +63111,71 @@ BEGIN DECLARE vShipped DATE; DECLARE vEntryFk INT; DECLARE vTravelFk INT; - + CALL cache.last_buy_refresh(FALSE); - - SELECT warehouseFk, shipped + + SELECT warehouseFk, shipped INTO vWarehouseFk, vShipped - FROM vn.ticket + FROM vn.ticket WHERE id = vTicketFk; UPDATE vn.ticket t JOIN vn.item i ON i.id = vItemFk SET t.nickname = CONCAT(vQuantity,' ',i.longName) WHERE t.id = vTicketFk; - + SELECT b.buyingValue INTO vLastCost FROM vn.buy b JOIN cache.last_buy lb ON lb.buy_id = b.id WHERE lb.item_id = vItemFk ORDER BY (lb.warehouse_id = vWarehouseFk) DESC LIMIT 1; - + INSERT INTO vn.sale(ticketFk, itemFk, quantity, concept, price) SELECT vTicketFk, 98, - vQuantity, i.longName, vLastCost FROM vn.item i WHERE i.id = vItemFk; - /* + /* SELECT tr.id INTO vTravelFk FROM vn.travel tr JOIN vn.warehouse w ON w.id = tr.warehouseOutFk WHERE tr.warehouseInFk = vWarehouseFk AND tr.landed = vShipped AND w.name = 'Confeccion'; - + IF IFNULL(vTravelFk,0) = 0 THEN - + INSERT INTO vn.travel(shipped, landed, warehouseInFk, warehouseOutFk, agencyFk) SELECT vShipped, vShipped, vWarehouseFk, w.id, am.id - FROM vn.warehouse w - JOIN vn.agencyMode am + FROM vn.warehouse w + JOIN vn.agencyMode am WHERE w.name = 'Confeccion' AND am.name = 'DIRECTO PROVEEDOR'; - + SET vTravelFk = LAST_INSERT_ID(); - - END IF; - + + END IF; + SELECT e.id INTO vEntryFk FROM vn.entry e JOIN vn.supplier s ON s.id = supplierFk WHERE e.travelFk = vTravelFk AND s.name = 'Confeccion Natural' AND e.isRaid = FALSE; - + IF IFNULL(vEntryFk,0) = 0 THEN - + INSERT INTO vn.entry(supplierFk, evaNotes, travelFk, companyFk) SELECT s.id, t.nickname, vTravelFk, c.id FROM vn.supplier s JOIN vn.ticket t ON t.id = vTicketFk - JOIN vn.company c ON c.code = 'VNL' + JOIN vn.company c ON c.code = 'VNL' WHERE s.name = 'Confeccion Natural'; - + SET vEntryFk = LAST_INSERT_ID(); - + END IF; - + INSERT INTO vn.buy(entryFk, itemFk, quantity, buyingValue, packageFk, packing, grouping) SELECT vEntryFk, b.itemFk, vQuantity, b.buyingValue, b.packageFk, b.packing, b.grouping FROM cache.last_buy lb @@ -73442,15 +63194,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `refund`(IN vOriginTicket INT, OUT vNewTicket INT) BEGIN - + DECLARE vDone BIT DEFAULT 0; DECLARE vCustomer MEDIUMINT; DECLARE vWarehouse TINYINT; @@ -73465,26 +63217,26 @@ BEGIN DECLARE vSaleNew INT; DECLARE vSaleMain INT; DECLARE vZoneFk INT; - + DECLARE vRsMainTicket CURSOR FOR SELECT id, itemFk, - quantity, concept, price, discount - FROM vn.sale + FROM vn.sale WHERE ticketFk = vOriginTicket; - + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = 1; - + SELECT id INTO vRefundAgencyMode FROM agencyMode WHERE `name` = 'ABONO'; - SELECT clientFk, warehouseFk, companyFk, addressFk + SELECT clientFk, warehouseFk, companyFk, addressFk INTO vCustomer, vWarehouse, vCompany, vAddress - FROM ticket + FROM ticket WHERE id = vOriginTicket; - - SELECT id INTO vZoneFk + + SELECT id INTO vZoneFk FROM zone WHERE agencyModeFk = vRefundAgencyMode LIMIT 1; - + INSERT INTO vn2008.Tickets ( Id_Cliente, Fecha, @@ -73498,39 +63250,39 @@ BEGIN ) SELECT vCustomer, - CURDATE(), + util.VN_CURDATE(), vAddress, vRefundAgencyMode, a.nickname, vWarehouse, vCompany, - CURDATE(), + util.VN_CURDATE(), vZoneFk FROM address a WHERE a.id = vAddress; SET vNewTicket = LAST_INSERT_ID(); - SET vDone := 0; + SET vDone := 0; OPEN vRsMainTicket ; FETCH vRsMainTicket INTO vSaleMain, vItemFk, vQuantity, vConcept, vPrice, vDiscount; WHILE NOT vDone DO - + INSERT INTO vn.sale(ticketFk, itemFk, quantity, concept, price, discount) VALUES( vNewTicket, vItemFk, vQuantity, vConcept, vPrice, vDiscount ); - + SET vSaleNew = LAST_INSERT_ID(); - - INSERT INTO vn.saleComponent(saleFk,componentFk,`value`) - SELECT vSaleNew,componentFk,`value` - FROM vn.saleComponent + + INSERT INTO vn.saleComponent(saleFk,componentFk,`value`) + SELECT vSaleNew,componentFk,`value` + FROM vn.saleComponent WHERE saleFk = vSaleMain; - + FETCH vRsMainTicket INTO vSaleMain, vItemFk, vQuantity, vConcept, vPrice, vDiscount; - + END WHILE; - CLOSE vRsMainTicket; + CLOSE vRsMainTicket; END ;; DELIMITER ; @@ -73542,13 +63294,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `replaceMovimientosMark`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `replaceMovimientosMark`( idMovimiento INT, detalle INT, originalQuantity INT, @@ -73565,12 +63317,12 @@ BEGIN * usar vn.saleTracking_Replace * */ - - REPLACE INTO vn2008.Movimientos_mark(Id_Movimiento, valor, original_quantity, Id_Trabajador, stateFk) + + REPLACE INTO vn2008.Movimientos_mark(Id_Movimiento, valor, original_quantity, Id_Trabajador, stateFk) VALUES(idMovimiento,detalle,originalQuantity,idTrabajador,stateFk); - /*INSERT INTO vn.ticketLog (originFk, userFk, action , description) + /*INSERT INTO vn.ticketLog (originFk, userFk, action , description) VALUES(originFk, userFk, actionString, description);*/ - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -73583,218 +63335,86 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `reportLabelCollection_get`(vCollectionFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `reportLabelCollection_get`(vParam INT) BEGIN /** - * Obtiene los datos necesarios de una colección + * Obtiene los datos de etiquetas a partir de de un ticket o colección. * - * @param vCollectionFk La colección de la que sacar los datos - **/ - DECLARE vItemPackingTypeFk VARCHAR(1); + * @param vParam Ticket/Colección del que sacar los datos + */ + DECLARE vIsCollection BOOL; - -- Si los sacadores NO son de V, pinta los colores - SELECT c.itemPackingTypeFk INTO vItemPackingTypeFk + SELECT IF(id, TRUE, FALSE) INTO vIsCollection FROM vn.collection c - WHERE c.id = vCollectionFk; + WHERE id = vParam; - IF !(vItemPackingTypeFk <=> 'V') THEN - - SELECT * FROM ( - SELECT CONCAT(tc.collectionFk,' ',LEFT(cc.code,4)) `level`, + SELECT c.itemPackingTypeFk, + CONCAT(tc.collectionFk, ' ', LEFT(cc.code, 4)) color, + CONCAT(tc.collectionFk, ' ', SUBSTRING('ABCDEFGH',tc.wagon, 1), '-', tc.`level`) levelV, tc.ticketFk, - LEFT(IF(t.routeFk IS null, am.name, zo.name ),12) agencyDescription, + LEFT(COALESCE(et.description, zo.name, am.name),12) agencyDescription, am.name, t.clientFk, - count(*) notes, + CONCAT(CAST(SUM(sv.volume) AS DECIMAL(5, 2)), 'm³') m3 , + CAST(IF(ic.code = 'plant', CONCAT(MAX(i.`size`),' cm'), COUNT(*)) AS CHAR) size, w.code workerCode, tt.labelCount, - IF(HOUR(t.shipped),TIME(t.shipped),TIME(zo.HOUR)) AS horaagencia, + IF(HOUR(t.shipped), TIME(t.shipped), TIME(zo.`hour`)) agencyHour, t.shipped, - count(*) lineas, - t.nickName, - CONCAT(CAST(SUM(sv.volume) AS DECIMAL(5,2)) , "m³") m3 - FROM vn.ticket t - JOIN vn.ticketCollection tc ON tc.ticketFk = t.id - JOIN vn.collection c ON c.id = tc.collectionFk - JOIN vn.collectionColors cc - ON cc.shelve = tc.`level` + COUNT(*) lineCount, + t.nickName + FROM ticket t + JOIN ticketCollection tc ON tc.ticketFk = t.id + JOIN collection c ON c.id = tc.collectionFk + LEFT JOIN collectionColors cc ON cc.shelve = tc.`level` AND cc.wagon = tc.wagon AND cc.trainFk = c.trainFk - JOIN vn.sale s ON s.ticketFk = t.id - LEFT JOIN vn.saleVolume sv ON sv.saleFk = s.id - JOIN vn.worker w ON w.id = c.workerFk - JOIN vn.agencyMode am ON am.id = t.agencyModeFk - LEFT JOIN vn.ticketTrolley tt ON tt.ticket = t.id - LEFT JOIN vn.address a ON a.id = t.addressFk - LEFT JOIN vn.route r ON r.id = t.routeFk - LEFT JOIN vn.zoneEstimatedDelivery ze ON ze.zoneFk = t.zoneFk - LEFT JOIN vn.agencyMode agm ON r.agencyModeFk =agm.id - LEFT JOIN vn.zone zo ON t.zoneFk = zo.id - WHERE tc.collectionFk = vCollectionFk - GROUP BY t.id) sub - ORDER BY `level`; - ELSE - SELECT CONCAT(tc.collectionFk,' ', SUBSTRING('ABCDEFGH',tc.wagon, 1), '-',tc.level) `level`, - tc.ticketFk, - LEFT(IF(t.routeFk IS null, am.name, zo.name ),12) agencyDescription, - am.name, - t.clientFk, - CAST(IF(ic.code = 'plant', CONCAT(MAX(i.size),' cm'),count(*)) AS CHAR) notes, - w.code workerCode, - tt.labelCount, - IF(HOUR(t.shipped),TIME(t.shipped),TIME(zo.HOUR)) horaagencia, - t.shipped, - count(*) lineas, - t.nickName, - CONCAT(CAST(SUM(sv.volume) AS DECIMAL(5,2)) , "m³") m3 - FROM vn.ticket t - JOIN vn.ticketCollection tc ON tc.ticketFk = t.id - JOIN vn.collection c ON c.id = tc.collectionFk - JOIN vn.sale s ON s.ticketFk = t.id - LEFT JOIN vn.saleVolume sv ON sv.saleFk = s.id - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - JOIN vn.worker w ON w.id = c.workerFk - JOIN vn.agencyMode am on am.id = t.agencyModeFk - LEFT JOIN vn.ticketTrolley tt ON tt.ticket = t.id - LEFT JOIN vn.address a ON a.id = t.addressFk - LEFT JOIN vn.route r ON r.id = t.routeFk - LEFT JOIN vn.zoneEstimatedDelivery ze ON ze.zoneFk = t.zoneFk - LEFT JOIN vn.agencyMode agm ON r.agencyModeFk =agm.id - LEFT JOIN vn.zone zo ON t.zoneFk = zo.id - WHERE tc.collectionFk = vCollectionFk - GROUP BY t.id; - END IF; + JOIN sale s ON s.ticketFk = t.id + LEFT JOIN saleVolume sv ON sv.saleFk = s.id + JOIN item i ON i.id = s.itemFk + JOIN itemType it ON it.id = i.typeFk + JOIN itemCategory ic ON ic.id = it.categoryFk + JOIN worker w ON w.id = c.workerFk + JOIN agencyMode am ON am.id = t.agencyModeFk + LEFT JOIN ticketTrolley tt ON tt.ticket = t.id + LEFT JOIN `zone` zo ON t.zoneFk = zo.id + LEFT JOIN routesMonitor rm ON rm.routeFk = t.routeFk + LEFT JOIN expeditionTruck et ON et.id = rm.expeditionTruckFk + WHERE IF(vIsCollection, tc.collectionFk = vParam, tc.ticketFk = vParam) + GROUP BY t.id + ORDER BY cc.`code`; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `reportLabelCollection_get__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `reportLabelCollection_get__`(vCollectionFk INT) -BEGIN - - DECLARE vItemPackingTypeFk VARCHAR(1); - - -- Si los sacadores NO son de V, pinta los colores - SELECT c.itemPackingTypeFk INTO vItemPackingTypeFk - FROM vn.collection c - WHERE c.id = vCollectionFk; - - IF !(vItemPackingTypeFk <=> 'V') THEN - - SELECT * FROM ( - SELECT CONCAT(tc.collectionFk,' ',LEFT(cc.code,4)) `level`, - tc.ticketFk, - LEFT(IF(t.routeFk IS null, am.name, zo.name ),12) agencyDescription, - am.name, - t.clientFk, - count(*) notes, - w.code workerCode, - tt.labelCount, - IF(HOUR(t.shipped),TIME(t.shipped),TIME(zo.HOUR)) as horaagencia, - t.shipped, - count(*) AS lineas , - t.nickName, - CAST(sv.litros / 1000 AS DECIMAL(5,2)) m3 - FROM vn.ticket t - JOIN vn.ticketCollection tc ON tc.ticketFk = t.id - JOIN vn.collection c ON c.id = tc.collectionFk - JOIN vn.collectionColors cc - ON cc.shelve = tc.`level` - AND cc.wagon = tc.wagon - AND cc.trainFk = c.trainFk - JOIN vn.sale s ON s.ticketFk = t.id - LEFT JOIN vn.saleVolume sv ON sv.saleFk = s.id - JOIN vn.worker w ON w.id = c.workerFk - JOIN vn.agencyMode am on am.id = t.agencyModeFk - LEFT JOIN vn.ticketTrolley tt ON tt.ticket = t.id - LEFT JOIN vn.address a ON a.id = t.addressFk - LEFT JOIN vn.route r on r.id = t.routeFk - LEFT JOIN vn.zoneEstimatedDelivery ze ON ze.zoneFk = t.zoneFk - LEFT JOIN vn.agencyMode agm on r.agencyModeFk =agm.id - LEFT JOIN vn.zone zo ON t.zoneFk = zo.id - WHERE tc.collectionFk = vCollectionFk - GROUP BY t.id) sub - ORDER BY `level`; - - ELSE - - SELECT CONCAT(tc.collectionFk,' ', SUBSTRING('ABCDEFGH',tc.wagon, 1), '-',tc.level) `level`, - tc.ticketFk, - LEFT(IF(t.routeFk IS null, am.name, zo.name ),12) agencyDescription, - am.name, - t.clientFk, - CAST(IF(ic.code = 'plant', CONCAT(MAX(i.size),' cm'),count(*)) AS CHAR) notes, - w.code workerCode, - tt.labelCount, - IF(HOUR(t.shipped),TIME(t.shipped),TIME(zo.HOUR)) as horaagencia, - t.shipped, - count(*) AS urgente , - t.nickName - FROM vn.ticket t - JOIN vn.ticketCollection tc ON tc.ticketFk = t.id - JOIN vn.collection c ON c.id = tc.collectionFk - JOIN vn.sale s ON s.ticketFk = t.id - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - JOIN vn.worker w ON w.id = c.workerFk - JOIN vn.agencyMode am on am.id = t.agencyModeFk - LEFT JOIN vn.ticketTrolley tt ON tt.ticket = t.id - LEFT JOIN vn.address a ON a.id = t.addressFk - LEFT JOIN vn.route r on r.id = t.routeFk - LEFT JOIN vn.zoneEstimatedDelivery ze ON ze.zoneFk = t.zoneFk - LEFT JOIN vn.agencyMode agm on r.agencyModeFk =agm.id - LEFT JOIN vn.zone zo ON t.zoneFk = zo.id - WHERE tc.collectionFk = vCollectionFk - GROUP BY t.id; - - END IF; - - END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `riskAllClients` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `riskAllClients`(maxRiskDate DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `riskAllClients`(maxRiskDate DATE) BEGIN - + DROP TEMPORARY TABLE IF EXISTS tmp.client_list; CREATE TEMPORARY TABLE tmp.client_list (PRIMARY KEY (Id_Cliente)) ENGINE = MEMORY SELECT id Id_Cliente, null grade FROM vn.client; - + CALL vn2008.risk_vs_client_list(maxRiskDate); - - SELECT + + SELECT c.RazonSocial, c.Id_Cliente, c.Credito, @@ -73806,7 +63426,7 @@ BEGIN JOIN tmp.risk r ON r.Id_Cliente = c.Id_Cliente JOIN tmp.client_list ci ON c.Id_Cliente = ci.Id_Cliente GROUP BY c.Id_cliente; - + DROP TEMPORARY TABLE IF EXISTS tmp.risk; DROP TEMPORARY TABLE IF EXISTS tmp.client_list; END ;; @@ -73815,145 +63435,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `routeGateAsign__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `routeGateAsign__`(vDevice VARCHAR(30), vRouteFk INT) -BEGIN - /* - UPDATE routeGate - SET displayText = NULL, - routeFk = NULL, - freeTickets = NULL, - expeditions = NULL, - scanned = NULL, - flag = NULL, - pallets = NULL, - lastScanned = NULL - WHERE routeFk = vRouteFk; - */ - IF ISNULL(vDevice) THEN - - DELETE FROM routeGate - WHERE routeFk = vRouteFk; - - ELSE - - REPLACE routeGate(routeFk, deviceId) - VALUES(vRouteFk, vDevice); - - END IF; - /* - UPDATE vn.route r - JOIN vn.beach b ON b.name = vDevice - SET r.beachFk = b.id - WHERE r.id = vRouteFk; - */ -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `routeGateUpdate` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `routeGateUpdate`() -BEGIN - - UPDATE vn.routeGate rg - LEFT JOIN vn.routesControl rc ON rg.routeFk = rc.routeFk - LEFT JOIN vn.route r ON r.id = rg.routeFk - LEFT JOIN vn.agencyMode a ON a.id = r.agencyModeFk - LEFT JOIN - ( - SELECT Id_Ruta, count(*) AS pedidosLibres - FROM vn2008.Tickets t - JOIN vn2008.Tickets_state ts ON t.Id_Ticket = ts.Id_Ticket - JOIN vncontrol.inter i ON i.inter_id = ts.inter_id - JOIN vn2008.state s ON i.state_id = s.id AND s.alert_level < 2 - WHERE t.Fecha BETWEEN CURDATE() AND util.dayend(CURDATE()) - AND t.warehouse_id IN (1,44) - AND Id_Ruta - GROUP BY Id_Ruta - ) t ON t.Id_Ruta = rg.routeFk - SET rg.scanned = rc.scanned, - rg.expeditions = rc.expeditions, - rg.flag = a.flag, - rg.freeTickets = t.pedidosLibres, - rg.pallets = rc.pallets, - rg.lastScanned = rc.lastScanned, - rg.displayText = IF(rg.routeFk is null, rg.displayText, rg.routeFk MOD 1000), - rg.ready = IF(rg.freeTickets, FALSE, rg.ready); - - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `routeGate_assignDevice` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `routeGate_assignDevice`(vDevice VARCHAR(30), vRouteFk INT) -BEGIN -/** - * Asigna el dispositivo la ruta - * - * @param vDevice Dispositivo a remplazar - * @param vRouteFk Ruta a la cual asignarlo - */ - IF ISNULL(vDevice) THEN - - DELETE FROM routeGate - WHERE routeFk = vRouteFk; - - ELSE - - REPLACE routeGate(routeFk, deviceId) - VALUES(vRouteFk, vDevice); - - END IF; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `routeGuessPriority` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `routeGuessPriority`(IN vRuta INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `routeGuessPriority`(IN vRuta INT) BEGIN /* Usa los valores del ultimo año para adivinar el orden de los tickets en la ruta * vRuta id ruta @@ -73964,7 +63456,7 @@ UPDATE ticket mt SELECT tt.addressFk, ROUND(IFNULL(AVG(t.priority),0),0) AS priority FROM ticket t JOIN ticket tt ON tt.addressFk = t.addressFk - WHERE t.shipped > TIMESTAMPADD(YEAR,-1,CURDATE()) + WHERE t.shipped > TIMESTAMPADD(YEAR,-1,util.VN_CURDATE()) AND tt.routeFk = vRuta GROUP BY addressFk ) sub ON sub.addressFk = mt.addressFk @@ -73982,36 +63474,36 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `routeInfo`(vRouteFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `routeInfo`(vRouteFk INT) BEGIN DECLARE vPackages INT; DECLARE vM3 INT; DECLARE vKg INT; DECLARE vMatricula varchar(50); - + SELECT sum(packages) as bultos INTO vPackages - FROM vn.ticket t + FROM vn.ticket t WHERE routeFk = vRouteFk; - + SELECT SUM(sv.physicalVolume), SUM(sv.physicalWeight) INTO vM3, vKg FROM vn.saleVolume sv WHERE sv.routeFk = vRouteFk; - + SELECT v.numberPlate as matricula INTO vMatricula - FROM vn.route r + FROM vn.route r JOIN vn.vehicle v ON r.vehicleFk = v.id WHERE r.id = vRouteFk; - + SELECT vRouteFk as Ruta, - vPackages as Bultos, + vPackages as Bultos, vM3 as m3, vKg as Kg, vMatricula as Matricula; @@ -74028,11 +63520,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `routeMonitor_calculate`(vDate DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `routeMonitor_calculate`(vDate DATE) BEGIN DECLARE vDateEND DATETIME; @@ -74041,12 +63533,12 @@ BEGIN SET vDate = TIMESTAMPADD(DAY,-1,vDate); DROP TEMPORARY TABLE IF EXISTS tmp.routesMonitor; - + CREATE TEMPORARY TABLE tmp.routesMonitor (INDEX (routeFk)) ENGINE = MEMORY SELECT DISTINCT(t.routeFk) routeFk - FROM vn.ticket t + FROM vn.ticket t WHERE t.shipped BETWEEN vDate AND vDateEND AND t.routeFk IS NOT NULL; @@ -74057,7 +63549,7 @@ BEGIN UPDATE routesMonitor rm JOIN route r ON r.id = rm.routeFk JOIN agencyMode a ON a.id = r.agencyModeFk - SET rm.`name` = a.name, + SET rm.`name` = a.name, rm.ticketFree = 0, rm.ticketProduction = 0, rm.ticketPacked = 0, @@ -74074,7 +63566,7 @@ BEGIN ) sub ON sub.routeFk = rm.routeFk SET rm.ticketFree = sub.ticketFree; - UPDATE routesMonitor rm + UPDATE routesMonitor rm JOIN(SELECT t.routeFk, COUNT(*) AS ticketPacked FROM vn.ticket t JOIN tmp.routesMonitor rm ON rm.routeFk = t.routeFk @@ -74082,7 +63574,7 @@ BEGIN JOIN ticketTracking tt ON tt.id = ts.ticketTrackingFk JOIN state s ON s.id = tt.stateFk AND s.alertLevel = 2 GROUP BY t.routeFk - ) sub ON sub.routeFk = rm.routeFk + ) sub ON sub.routeFk = rm.routeFk SET rm.ticketPacked = sub.ticketPacked; UPDATE routesMonitor rm @@ -74109,7 +63601,7 @@ BEGIN JOIN( SELECT t.routeFk, SUM(sv.volume) AS m3 FROM vn.ticket t JOIN tmp.routesMonitor rm ON rm.routeFk = t.routeFk - JOIN vn.saleVolume sv ON sv.ticketFk = t.id + JOIN vn.saleVolume sv ON sv.ticketFk = t.id GROUP BY t.routeFk ) sub ON sub.routeFk = rm.routeFk SET rm.m3 = sub.m3; @@ -74119,15 +63611,15 @@ BEGIN FROM vn.ticket t JOIN tmp.routesMonitor rm ON rm.routeFk = t.routeFk JOIN vn.expedition e ON e.ticketFk = t.id - JOIN vn.packaging pk ON pk.id = e.packagingFk + JOIN vn.packaging pk ON pk.id = e.packagingFk GROUP BY t.routeFk - ) sub ON sub.routeFk = rm.routeFk - SET rm.m3boxes = sub.m3boxes; + ) sub ON sub.routeFk = rm.routeFk + SET rm.m3boxes = sub.m3boxes; UPDATE routesMonitor rm - JOIN vn.expeditionTruck et ON et.id = rm.expeditionTruckFk + JOIN vn.expeditionTruck et ON et.id = rm.expeditionTruckFk SET rm.etd = et.ETD; - + DROP TEMPORARY TABLE tmp.routesMonitor; END ;; DELIMITER ; @@ -74139,20 +63631,20 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `routeSetOk`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `routeSetOk`( vRouteFk INT) BEGIN - + UPDATE vn.route r SET r.isOk = 1 WHERE r.id = vRouteFk; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -74163,13 +63655,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `routeUpdateM3`(vRoute INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `routeUpdateM3`(vRoute INT) BEGIN /** * @deprecated Use vn.route_updateM3() @@ -74181,22 +63673,93 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `route_calcCommission` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `route_calcCommission`(vSelf INT) +proc: BEGIN +/** + * Calcula las comisión para una ruta y guarda los valores en la tabla routeCommission + * + * @param vSelf id de ruta + */ + DECLARE vIsUpdatable BOOL; + DECLARE vIsFreelance BOOL; + + SELECT r.created >= rc.cutoffDated INTO vIsUpdatable + FROM route r + JOIN routeConfig rc + WHERE r.id = vSelf; + + IF vIsUpdatable THEN + DELETE FROM routeCommission + WHERE routeFk = vSelf; + + SELECT w.isFreelance INTO vIsFreelance + FROM route r + JOIN worker w ON w.id = r.workerFk + WHERE r.id = vSelf; + + IF vIsFreelance THEN + INSERT INTO routeCommission (routeFk, workCenterFk, freelanceYearlyM3) + SELECT vSelf, + r.commissionWorkCenterFk, + rc.freelanceM3 * IF(IFNULL(r.m3, 0) >= rc.freelanceMinM3, IFNULL(r.m3, 0), 0) + FROM route r + JOIN vehicle v ON v.id = r.vehicleFk + JOIN routeConfig rc + WHERE r.id = vSelf + AND r.workerFk + AND r.commissionWorkCenterFk; + ELSE + INSERT INTO routeCommission (routeFk, workCenterFk, km, m3, yearlyKm, yearlyM3, cat4m3, cat5m3) + SELECT vSelf, + r.commissionWorkCenterFk, + FORMAT((r.kmEnd - r.kmStart) * IF(v.isKmTruckRate, rc.kmHeavy, rc.kmLight), 2), + FORMAT(IFNULL(r.m3, 0) * IF(v.isKmTruckRate, rc.deliveryM3Cat5, rc.deliveryM3Cat4), 2), + FORMAT((r.kmEnd - r.kmStart) * rc.kmYearly, 2), + FORMAT(IFNULL(r.m3, 0) * rc.m3Yearly, 2), + FORMAT(distributionCat4M3 * IFNULL(r.m3, 0), 2), + FORMAT(rc.distributionCat5M3 * IFNULL(r.m3, 0), 2) + FROM route r + JOIN vehicle v ON v.id = r.vehicleFk + JOIN routeConfig rc + WHERE r.id = vSelf + AND r.kmStart + AND r.kmEnd + AND r.workerFk + AND r.commissionWorkCenterFk; + END IF; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `route_doRecalc` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `route_doRecalc`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `route_doRecalc`() proc: BEGIN /** * Recalculates modified route. */ - + DECLARE vDone BOOL; DECLARE vRouteFk INT; @@ -74205,7 +63768,7 @@ proc: BEGIN DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN DO RELEASE_LOCK('vn.route_doRecalc'); @@ -74248,11 +63811,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `route_getTickets`(vRouteFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `route_getTickets`(vRouteFk INT) BEGIN /** * Pasado un RouteFk devuelve la información @@ -74263,7 +63826,7 @@ BEGIN * @select Información de los tickets */ - SELECT + SELECT t.id AS Id, t.clientFk AS Client, a.id AS Address, @@ -74288,7 +63851,7 @@ BEGIN JOIN address a ON t.addressFk = a.id LEFT JOIN ticketLocation tl ON tl.ticketFk = t.id LEFT JOIN workerMedia wm ON wm.workerFk = c.salesPersonFk - LEFT JOIN + LEFT JOIN (SELECT tob.description AS Note, t.id FROM ticketObservation tob JOIN ticket t ON tob.ticketFk = t.id @@ -74297,8 +63860,8 @@ BEGIN AND ot.code = 'delivery' )tob ON tob.id = t.id LEFT JOIN stowaway st ON st.shipFk = t.id - LEFT JOIN - (SELECT sub.ticketFk, + LEFT JOIN + (SELECT sub.ticketFk, CONCAT('(', GROUP_CONCAT(DISTINCT sub.itemPackingTypeFk ORDER BY sub.items DESC SEPARATOR ','), ') ') itemPackingTypeFk FROM (SELECT s.ticketFk , i.itemPackingTypeFk, COUNT(*) items FROM ticket t @@ -74321,13 +63884,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `route_updateM3`(vRoute INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `route_updateM3`(vRoute INT) BEGIN UPDATE vn.route r @@ -74348,17 +63911,17 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `rutasAnalyze`(vYear INT, vMonth INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `rutasAnalyze`(vYear INT, vMonth INT) BEGIN /* Analiza los costes de las rutas de reparto y lo almacena en la tabla Rutas_Master -* +* * PAK 15/4/2019 */ @@ -74437,7 +64000,7 @@ BEGIN AND z.isVolumetric = FALSE GROUP BY r.id ON DUPLICATE KEY UPDATE Bultos = Bultos + VALUES(Bultos); - + -- Coste REAL de cada bulto "virtual", de acuerdo con el valor apuntado a mano en la ruta UPDATE bi.rutasBoard r INNER JOIN vn2008.Rutas_Master rm ON rm.año = r.year AND rm.mes = r.month AND rm.warehouse_id = r.warehouse_id @@ -74445,8 +64008,8 @@ BEGIN WHERE r.Bultos > 0 AND rm.año = vYear AND rm.mes = vMonth; - - -- Coste PRACTICO de cada bulto, de acuerdo con los componentes de tipo AGENCIA en cada linea de venta + + -- Coste PRACTICO de cada bulto, de acuerdo con los componentes de tipo AGENCIA en cada linea de venta UPDATE bi.rutasBoard r JOIN ( SELECT t.routeFk, sum(s.quantity * sc.value) practicoTotal @@ -74458,16 +64021,16 @@ BEGIN JOIN vn.`component` c ON c.id = sc.componentFk JOIN vn.componentType ct ON ct.id = c.typeFk WHERE ct.type = 'agencia' - AND tm.year = vYear + AND tm.year = vYear AND tm.month = vMonth GROUP BY r.id ) sub ON sub.routeFk = r.Id_Ruta SET r.practico = sub.practicoTotal / r.Bultos; - + -- Coste TEORICO de una caja "virtual" para cada ruta, teniendo en cuenta que hay carros, pallets, etc UPDATE bi.rutasBoard r JOIN ( - SELECT t.routeFk, + SELECT t.routeFk, SUM(t.zonePrice/ ebv.ratio)/ count(*) AS BultoTeoricoMedio FROM vn.ticket t JOIN vn.route r ON r.id = t.routeFk @@ -74477,7 +64040,7 @@ BEGIN JOIN vn.address ad ON ad.id = t.addressFk JOIN vn.client c ON c.id = ad.clientFk LEFT JOIN vn.zone z ON z.id = t.zoneFk - WHERE tm.year = vYear + WHERE tm.year = vYear AND tm.month = vMonth AND z.isVolumetric = FALSE GROUP BY t.routeFk) sub ON r.Id_Ruta = sub.routeFk @@ -74486,7 +64049,7 @@ BEGIN -- Coste VOLUMETRICO TEORICO de una caja "virtual" para cada ruta UPDATE bi.rutasBoard r JOIN ( - SELECT t.routeFk, + SELECT t.routeFk, SUM(freight) AS BultoTeoricoMedio FROM vn.ticket t JOIN vn.route r ON r.id = t.routeFk @@ -74494,7 +64057,7 @@ BEGIN JOIN vn.saleVolume sf ON sf.ticketFk = t.id JOIN vn.client c ON c.id = t.clientFk JOIN vn.zone z ON z.id = t.zoneFk - WHERE tm.year = vYear + WHERE tm.year = vYear AND tm.month = vMonth AND z.isVolumetric != FALSE GROUP BY t.routeFk) sub ON r.Id_Ruta = sub.routeFk @@ -74503,19 +64066,19 @@ BEGIN -- La diferencia entre el teorico y el practico se deberia de cobrar en greuges, cada noche UPDATE bi.rutasBoard r JOIN ( - SELECT t.routeFk, + SELECT t.routeFk, Sum(g.amount) AS greuge FROM vn.ticket t JOIN vn.route r ON r.id = t.routeFk JOIN vn.time tm ON tm.dated = r.created JOIN vn.greuge g ON g.ticketFk = t.id JOIN vn.greugeType gt ON gt.id = g.greugeTypeFk - WHERE tm.year = vYear + WHERE tm.year = vYear AND tm.month = vMonth AND gt.name = 'Diferencia portes' GROUP BY t.routeFk) sub ON r.Id_Ruta = sub.routeFk SET r.greuge = sub.greuge / r.Bultos; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -74526,35 +64089,35 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `saleBuy_Add`(vSaleFk INT, vBuyFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `saleBuy_Add`(vSaleFk INT, vBuyFk INT) BEGIN - + /* Añade un registro a la tabla saleBuy en el caso de que sea posible mantener la trazabilidad - * + * * @param vSaleFk clave primaria de vn.sale * @param vBuyFk clave primaria de vn.buy */ - /*IF (SELECT COUNT(*) + /*IF (SELECT COUNT(*) FROM vn.sale s JOIN vn.item i ON i.id = s.itemFk - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk + JOIN vn.itemType it ON it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk WHERE s.id = vSaleFk AND ic.code = 'fruit') THEN */ - - IF (SELECT COUNT(*) FROM vn.buy WHERE id = vBuyFk AND itemOriginalFk) THEN - + + IF (SELECT COUNT(*) FROM vn.buy WHERE id = vBuyFk AND itemOriginalFk) THEN + INSERT INTO vn.saleBuy (saleFk, buyFk) VALUES(vSaleFk, vBuyFk); - + END IF; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -74565,176 +64128,53 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `saleGroup_add`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `saleGroup_add`(vSectorFk INT) BEGIN - - /* - * Añade un nuevo registro a la tabla y devuelve su id - */ - - INSERT INTO vn.saleGroup(userFk) - VALUES (account.myUser_getId()); +/** + * Añade un nuevo registro a la tabla y devuelve su id. + * + * @param vSectorFk Identificador de vn.sector + */ + INSERT INTO vn.saleGroup(userFk, sectorFk) + VALUES (account.myUser_getId(), vSectorFk); SELECT LAST_INSERT_ID(); - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `saleItemShelvingDelete__` */; +/*!50003 DROP PROCEDURE IF EXISTS `saleGroup_setParking` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `saleItemShelvingDelete__`(vSaleFk INT) -BEGIN - - UPDATE vn.itemShelving ish - JOIN vn.saleItemShelving sis ON sis.itemShelvingFk = ish.id - SET ish.visible = sis.quantity + ish.visible, - ish.available = sis.quantity + ish.visible - WHERE sis.saleFk = vSaleFk; - - DELETE FROM vn.saleItemShelving - WHERE saleFk = vSaleFk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `saleItemShelvingIsPicked__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `saleItemShelvingIsPicked__`(vTicketFk INT, vIsPicked BOOL) -BEGIN - - DECLARE vStateFk INT; - - SELECT id INTO vStateFk - FROM state - WHERE code = 'PREVIOUS_PREPARATION'; - - UPDATE vn.sale s - JOIN vn.saleItemShelving sis ON sis.saleFk = s.id - SET s.isPicked = vIsPicked - WHERE s.ticketFk = vTicketFk; - - REPLACE vn2008.Movimientos_mark(Id_Movimiento, Valor, original_quantity, Id_Trabajador, stateFk) - SELECT s.id, s.isPicked, s.quantity, account.myUser_getId(), vStateFk - FROM sale s - JOIN vn.saleItemShelving sis ON sis.saleFk = s.id - WHERE s.ticketFk = vTicketFk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `saleItemShelvingMake__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `saleItemShelvingMake__`(IN `vTicketFk` INT, IN `vSectorFk` INT) -BEGIN - - SET @rest:= CAST(0 AS DECIMAL(10,0)); - SET @saleFk := CAST(0 AS DECIMAL(10,0)); - SET @reserved := CAST(0 AS DECIMAL(10,0)); - - UPDATE vn.itemShelving ish - JOIN vn.saleItemShelving sis ON sis.itemShelvingFk = ish.id - JOIN sale s ON s.id = sis.saleFk - SET ish.visible = sis.quantity + ish.visible, - ish.available = sis.quantity + ish.visible - WHERE s.ticketFk = vTicketFk; - - DELETE sis.* - FROM saleItemShelving sis - JOIN sale s ON s.id = sis.saleFk - WHERE s.ticketFk = vTicketFk; - - INSERT INTO saleItemShelving( saleFk, - itemShelvingFk, - quantity, - ubication) - SELECT saleFk, - itemShelvingFk, - CAST(Reserved as DECIMAL(10,0)) as Reserved, - ubication - FROM - (SELECT saleFk, - itemShelvingFk, - ubication, - @rest := IF(@saleFk = saleFk, @rest, quantity) as Falta, - @reserved := IF(available < @rest, available, IF(@rest < packing,0,@rest)) as Reserved, - @rest := @rest - @reserved, - @saleFk := saleFk - FROM - ( SELECT s.id as saleFk, - ish.created, - ish.id as itemShelvingFk, - ish.available, - s.quantity, - ish.packing, - CONCAT(p.`column`, '-',p.`row`,': ', sh.code ) as ubication - FROM vn.sale s - JOIN vn.ticket t ON t.id = s.ticketFk - JOIN vn.sector sc ON sc.warehouseFk = t.warehouseFk - JOIN vn.parking p ON p.sectorFk = sc.id - JOIN vn.shelving sh ON sh.parkingFk = p.id - JOIN vn.itemShelving ish ON ish.shelvingFk = sh.code AND ish.itemFk = s.itemFk - WHERE t.id = vTicketFk - AND sc.id = vSectorFk - AND s.quantity MOD ish.packing = 0 - AND s.quantity >= ish.packing - ORDER BY s.id, - sh.priority DESC, - ish.packing DESC, - ish.created - ) sub - ) sub2 - WHERE Reserved > 0; - - UPDATE vn.itemShelving ish - JOIN vn.saleItemShelving sis ON sis.itemShelvingFk = ish.id - JOIN vn.sale s ON s.id = sis.saleFk - SET ish.available = ish.visible - sis.quantity, - ish.visible = ish.visible - sis.quantity - WHERE s.ticketFk = vTicketFk - AND s.isPicked = FALSE; - - CALL vn.saleItemShelvingIsPicked(vTicketFk, TRUE); - +CREATE DEFINER=`root`@`localhost` PROCEDURE `saleGroup_setParking`(IN `vSaleGroupFk` VARCHAR(8), IN `vParkingFk` INT) +proc: BEGIN +/** + * Aparca una preparación previa en un parking + * + * @param vSaleGroupFk id de la preparación previa + * @param vParkingFk id del parking + */ + UPDATE vn.saleGroup sg + SET sg.parkingFk = vParkingFk + WHERE sg.id = vSaleGroupFk + AND sg.created >= TIMESTAMPADD(WEEK,-1,util.VN_CURDATE()); + CALL vn.ticket_setNextState(vn.ticket_get(vSaleGroupFk)); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -74745,13 +64185,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `saleMistake_Add`(vSaleFk INT, vUserFk INT, vTypeFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `saleMistake_Add`(vSaleFk INT, vUserFk INT, vTypeFk INT) BEGIN INSERT INTO vn.saleMistake(saleFk, userFk, typeFk) @@ -74769,11 +64209,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `saleMove`(IN vSaleFk BIGINT, IN vQuantity BIGINT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `saleMove`(IN vSaleFk BIGINT, IN vQuantity BIGINT) BEGIN DECLARE vShipped DATE; @@ -74800,19 +64240,19 @@ BEGIN IF vClientTypeFk <> 'handMaking' THEN SELECT t.id INTO vNewTicket - FROM ticket t + FROM ticket t JOIN ticketState ts ON ts.ticketFk = t.id WHERE t.addressFk = vAddressFk - AND t.warehouseFk = vWarehouseFk + AND t.warehouseFk = vWarehouseFk AND t.agencyModeFk = vAgencyModeFk AND t.landed <=> vLanded - AND t.shipped BETWEEN vShipped AND vShippedDayEnd + AND t.shipped BETWEEN vShipped AND vShippedDayEnd AND t.refFk IS NULL AND t.id <> vTicketOriginalFk AND IFNULL(ts.alertLevel,0) = 0 - LIMIT 1; + LIMIT 1; END IF; - + IF vNewTicket IS NULL THEN CALL vn.ticket_Clone(vTicketOriginalFk, vNewTicket); END IF; @@ -74821,64 +64261,33 @@ BEGIN SELECT vNewTicket, account.myUser_getId(), s.id FROM state s WHERE s.code = 'FIXING'; - + SELECT COUNT(id) INTO hasAlreadyItem FROM sale s WHERE s.ticketFk = vNewTicket AND s.itemFk = vItemFk; - + IF hasAlreadyItem = FALSE THEN - - INSERT INTO sale(ticketFk, itemFk, concept, quantity, price, discount) + + INSERT INTO sale(ticketFk, itemFk, concept, quantity, price, discount) SELECT vNewTicket, itemFk, concept, vQuantity, price, discount FROM sale s WHERE s.id = vSaleFk; - + SELECT LAST_INSERT_ID() INTO vNewSale; - + INSERT INTO saleComponent(saleFk, componentFk, `value`) SELECT vNewSale, componentFk, `value` - FROM saleComponent + FROM saleComponent WHERE saleFk = vSaleFk; - + ELSE - UPDATE sale + UPDATE sale SET quantity = quantity + vQuantity WHERE ticketFk = vNewTicket AND itemFk = vItemFk; END IF; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `saleParking_add__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `saleParking_add__`(vSaleFk INT, vParkingCode VARCHAR(10)) -BEGIN - - /* - * Inserta registro en saleParking - * - * vSaleFk Identificador de vn.sale - * vParkingCode Code de vn.parking - */ - - INSERT INTO vn.saleParking(saleFk, parkingFk, userFk) - SELECT vSaleFk, p.id, account.myUser_getId() - FROM vn.parking p - WHERE p.code = vParkingCode COLLATE utf8_unicode_ci; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -74891,54 +64300,47 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `salePreparingList`(IN ticketFk BIGINT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `salePreparingList`(IN ticketFk BIGINT) BEGIN -CALL cache.last_buy_refresh(FALSE); + CALL cache.last_buy_refresh(FALSE); - SELECT t.clientFk, - t.shipped, - a.nickname, + SELECT t.clientFk, + t.shipped, + a.nickname, s.ticketFk, - s.itemFk, - s.quantity, - s.concept, + s.itemFk, + s.quantity, + s.concept, s.reserved, s.id saleFk, - i.size, + i.size, i.inkFk, i.stems, i.image, i.subName, b.`grouping`, - ip.code as placement, - lpad(ifnull(cooler_path_detail_id, ip.code),5,'0') as path, - IF(stPrevious.saleFk,TRUE,FALSE) as isPreviousSelected, + IF(stPrevious.saleFk,TRUE,FALSE) as isPreviousSelected, stPrevious.isChecked as isPrevious, - stPrepared.isChecked as isPrepared, - stControled.isChecked as isControled, - ib.code as barcode - - FROM vn.ticket t - JOIN vn.address a ON a.id = t.addressFk - JOIN vn.sale s ON s.ticketFk = t.id - JOIN vn.item i ON i.id = s.itemFk - LEFT JOIN vn.itemPlacement ip ON i.id = ip.itemFk AND ip.warehouseFk = t.warehouseFk - LEFT JOIN vn2008.cooler_path_detail cpd on left(ip.code,3) = cpd.pasillo - LEFT JOIN cache.last_buy lb ON lb.item_id = i.id AND lb.warehouse_id = t.warehouseFk - LEFT JOIN vn.buy b ON b.id = lb.buy_id - LEFT JOIN vn.saleTracking stPrevious ON stPrevious.saleFk = s.id AND stPrevious.stateFk = 26 - LEFT JOIN vn.saleTracking stPrepared ON stPrepared.saleFk = s.id AND stPrepared.stateFk = 14 - LEFT JOIN vn.saleTracking stControled ON stControled.saleFk = s.id AND stControled.stateFk = 8 - LEFT JOIN vn.itemBarcode ib ON ib.itemFk = i.id - - WHERE t.id = ticketFk - GROUP BY s.id; - + stPrepared.isChecked as isPrepared, + stControled.isChecked as isControled, + ib.code as barcode + FROM vn.ticket t + JOIN vn.address a ON a.id = t.addressFk + JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + LEFT JOIN cache.last_buy lb ON lb.item_id = i.id AND lb.warehouse_id = t.warehouseFk + LEFT JOIN vn.buy b ON b.id = lb.buy_id + LEFT JOIN vn.saleTracking stPrevious ON stPrevious.saleFk = s.id AND stPrevious.stateFk = 26 + LEFT JOIN vn.saleTracking stPrepared ON stPrepared.saleFk = s.id AND stPrepared.stateFk = 14 + LEFT JOIN vn.saleTracking stControled ON stControled.saleFk = s.id AND stControled.stateFk = 8 + LEFT JOIN vn.itemBarcode ib ON ib.itemFk = i.id + WHERE t.id = ticketFk + GROUP BY s.id; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -74949,36 +64351,36 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `salesMerge`(vTicketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `salesMerge`(vTicketFk INT) BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.salesToPreserve; - + CREATE TEMPORARY TABLE tmp.salesToPreserve SELECT id, itemFk, sum(quantity) as newQuantity FROM vn.sale s WHERE s.ticketFk = vTicketFk AND s.itemFk NOT IN (95,98,100) GROUP by itemFk, price, discount; - - UPDATE vn.sale s + + UPDATE vn.sale s JOIN tmp.salesToPreserve stp ON stp.id = s.id SET quantity = newQuantity WHERE s.ticketFk = vTicketFk; - + DELETE s.* FROM vn.sale s LEFT JOIN tmp.salesToPreserve stp ON stp.id = s.id WHERE s.ticketFk = vTicketFk AND stp.id IS NULL AND s.itemFk NOT IN (95,98,100); - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -74989,13 +64391,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `salesMerge_byCollection`(vCollectionFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `salesMerge_byCollection`(vCollectionFk INT) BEGIN DECLARE vDone BOOL; @@ -75013,17 +64415,17 @@ BEGIN OPEN cCur; myLoop: LOOP - + SET vDone = FALSE; - + FETCH cCur INTO vTicketFk; IF vDone THEN LEAVE myLoop; END IF; - + CALL vn.salesMerge(vTicketFk); - + END LOOP; CLOSE cCur; @@ -75039,50 +64441,50 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `saleSplit`(vSaleFk INT, vQuantity INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `saleSplit`(vSaleFk INT, vQuantity INT) BEGIN - + DECLARE vNewSaleFk INT; - - INSERT INTO vn.sale(itemFk, - concept, - price, - discount, - quantity, - ticketFk, + + INSERT INTO vn.sale(itemFk, + concept, + price, + discount, + quantity, + ticketFk, isPriceFixed) - SELECT s.itemFk, - i.longName, - s.price, - s.discount, + SELECT s.itemFk, + i.longName, + s.price, + s.discount, vQuantity, - s.ticketFk, - s.isPriceFixed + s.ticketFk, + s.isPriceFixed FROM vn.sale s JOIN vn.item i ON i.id = s.itemFk WHERE s.id = vSaleFk; - + UPDATE vn.sale s JOIN vn.item i ON i.id = s.itemFk SET s.quantity = s.quantity - vQuantity, s.concept = i.longName WHERE s.id = vSaleFk; - + SELECT LAST_INSERT_ID() INTO vNewSaleFk; - - INSERT INTO vn.saleComponent( saleFk, - componentFk, + + INSERT INTO vn.saleComponent( saleFk, + componentFk, value) - SELECT vNewSaleFk, - componentFk, + SELECT vNewSaleFk, + componentFk, value - FROM vn.saleComponent + FROM vn.saleComponent WHERE saleFk = vSaleFk; END ;; @@ -75095,25 +64497,25 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `saleTracking_add`(vSaleGroupFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `saleTracking_add`(vSaleGroupFk INT) BEGIN - + /* Inserta en vn.saleTracking las lineas de una previa - * + * * @param vSaleGroupFk Identificador de vn.saleGroup */ - - REPLACE vn.saleTracking(saleFk, - isChecked, - workerFk, - actionFk, - stateFk) + + REPLACE vn.saleTracking(saleFk, + isChecked, + workerFk, + actionFk, + stateFk) SELECT sgd.saleFk , TRUE, account.myUser_getId(), @@ -75123,7 +64525,81 @@ BEGIN JOIN vncontrol.accion a ON a.accion = 'SACAR' JOIN vn.state s ON s.code = 'ON_PREPARATION' WHERE sgd.saleGroupFk = vSaleGroupFk; - + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `saleTracking_addPreparedSaleGroup` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `saleTracking_addPreparedSaleGroup`(vSaleGroupFk INT) +BEGIN + + /** + * Inserta lineas de vn.saleTracking para un saleGroup (previa) que escanea un sacador + * + * @param vSaleGroupFk Identificador de vn.saleGroup + */ + + REPLACE vn.saleTracking(saleFk, isChecked, workerFk, actionFk, stateFk) + SELECT sgd.saleFk, TRUE, account.myUser_getId(), a.accion_id id, s.id + FROM vn.saleGroupDetail sgd + JOIN vncontrol.accion a ON a.accion = 'SACAR' + JOIN vn.state s ON s.code = 'PREPARED' + WHERE sgd.saleGroupFk = vSaleGroupFk; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `saleTracking_addPrevOK` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `saleTracking_addPrevOK`(vSectorCollectionFk INT) +BEGIN + + /** + * Inserta los registros de la colección de sector con el estado PREVIA OK + * + * @param vSectorCollectionFk Identificador de vn.sectorCollection + */ + + REPLACE vn.saleTracking(saleFk, + isChecked, + workerFk, + actionFk, + stateFk) + SELECT sgd.saleFk, + TRUE, + sc.userFk, + a.accion_id, + s.id + FROM vn.sectorCollection sc + JOIN vn.sectorCollectionSaleGroup scsg ON scsg.sectorCollectionFk = sc.id + JOIN vn.saleGroupDetail sgd ON sgd.saleGroupFk = scsg.saleGroupFk + JOIN vn.state s ON s.code = 'OK PREVIOUS' + JOIN vncontrol.accion a ON a.accion = 'PRESACAR' + WHERE sc.id = vSectorCollectionFk; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -75134,13 +64610,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `saleTracking_del`(vSaleFk INT, vState VARCHAR(50)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `saleTracking_del`(vSaleFk INT, vState VARCHAR(50)) BEGIN DELETE FROM itemShelvingSale @@ -75149,9 +64625,9 @@ BEGIN DELETE st.* FROM vn.saleTracking st JOIN vn.state s ON s.id = st.stateFk - WHERE st.saleFk = vSaleFk + WHERE st.saleFk = vSaleFk AND s.code = vState COLLATE utf8_unicode_ci; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -75164,24 +64640,24 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `saleTracking_new`( vSaleFK INT, - vIsChecked BOOLEAN, - vOriginalQuantity INT, - vWorkerFk INT, - vAction VARCHAR(50), +CREATE DEFINER=`root`@`localhost` PROCEDURE `saleTracking_new`( vSaleFK INT, + vIsChecked BOOLEAN, + vOriginalQuantity INT, + vWorkerFk INT, + vAction VARCHAR(50), vState VARCHAR(50)) BEGIN - REPLACE vn.saleTracking(saleFk, - isChecked, - originalQuantity, - workerFk, - actionFk, - stateFk) + REPLACE vn.saleTracking(saleFk, + isChecked, + originalQuantity, + workerFk, + actionFk, + stateFk) SELECT vSaleFk, vIsChecked, vOriginalQuantity, @@ -75205,14 +64681,54 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `saleTracking_Replace`(vSaleFk INT, vIsChecked INT, vOriginalQuantity INT, vStateFk INT) +BEGIN + REPLACE vn.saleTracking(saleFk, isChecked, originalQuantity, stateFk) + VALUES(vSaleFk, vIsChecked, vOriginalQuantity, vStateFk); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `saleTracking_updateIsChecked` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; /*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `saleTracking_Replace`(vSaleFk INT, vIsChecked INT, vOriginalQuantity INT, vStateFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `saleTracking_updateIsChecked`(vSaleFk INT, vIsChecked BOOL) BEGIN - REPLACE vn.saleTracking(saleFk, isChecked, originalQuantity, stateFk) - VALUES(vSaleFk, vIsChecked, vOriginalQuantity, vStateFk); + + /** + * Actualiza el estado del campo vn.saleTracking.isChecked y elimina las lineas de vn.itemShelving + * si procede, en el caso de las preparaciones previas, por usuario + * + * @param vSaleFk Identificador de vn.sale + * @param vIsChecked Estado del registro + */ + + UPDATE vn.saleTracking st + JOIN vn.state s ON s.id = st.stateFk AND s.code = 'PREVIOUS_PREPARATION' + SET st.isChecked = vIsChecked + WHERE st.saleFk = vSaleFk + AND st.workerFk = account.myUser_getId(); + + IF vIsChecked = FALSE THEN + + DELETE FROM vn.itemShelvingSale + WHERE saleFk = vSaleFk; + + END IF; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -75223,28 +64739,28 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sale_calculateComponent`(vSale INT, vOption INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_calculateComponent`(vSale INT, vOption INT) proc: BEGIN /** * Crea tabla temporal para vn.sale_recalcComponent() para recalcular los componentes * * @param vSale Id de la venta * @param vOption indica en que componente pone el descuadre, NULL en casos habituales - */ + */ DROP TEMPORARY TABLE IF EXISTS tmp.recalculateSales; CREATE TEMPORARY TABLE tmp.recalculateSales SELECT s.id FROM sale s WHERE s.id = vSale; - + CALL vn.sale_recalcComponent(vOption); - + DROP TEMPORARY TABLE tmp.recalculateSales; END ;; DELIMITER ; @@ -75252,230 +64768,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `sale_calculateComponent__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sale_calculateComponent__`(vSale INT, vOption INT) -proc: BEGIN -/** - * Actualiza los componentes - * - * @param vSale Delivery date - * @param vOption indica en que componente pone el descuadre, NULL en casos habituales - * @return tmp.ticketLot(warehouseFk, available, itemFk, buyFk) - * @return tmp.sale(saleFk, warehouseFk) - */ - DECLARE vShipped DATE; - DECLARE vWarehouseFk SMALLINT; - DECLARE vAgencyModeFk INT; - DECLARE vAddressFk INT; - DECLARE vTicket BIGINT; - DECLARE vItem BIGINT; - DECLARE vLanded DATE; - DECLARE vTicketFree BOOLEAN DEFAULT TRUE; - DECLARE vZoneFk INTEGER; - - SELECT NOT (t.refFk IS NOT NULL OR ts.alertLevel > 0) OR s.price = 0, s.ticketFk, s.itemFk , t.zoneFk - INTO vTicketFree, vTicket, vItem, vZoneFk - FROM vn.ticket t - JOIN vn.sale s ON s.ticketFk = t.id - LEFT JOIN vn.ticketState ts ON ts.ticketFk = t.id - WHERE s.id = vSale - LIMIT 1; - - SELECT t.warehouseFk, DATE(t.shipped), t.addressFk, t.agencyModeFk, t.landed - INTO vWarehouseFk, vShipped, vAddressFk, vAgencyModeFk, vLanded - FROM agencyMode a - JOIN ticket t ON t.agencyModeFk = a.id - WHERE t.id = vTicket; - - IF IFNULL(vZoneFk,0) = 0 THEN - CALL util.throw('ticket dont have zone'); - END IF; - - CALL buyUltimate (vWarehouseFk, vShipped); - - DELETE FROM tmp.buyUltimate WHERE itemFk != vItem; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot - SELECT vWarehouseFk warehouseFk, NULL available, vItem itemFk, buyFk - FROM tmp.buyUltimate - WHERE itemFk = vItem; - - CALL catalog_componentCalculate(vZoneFk, vAddressFk, vShipped); - - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT vSale saleFk,vWarehouseFk warehouseFk; - - IF vOption IS NULL THEN - SET vOption = IF(vTicketFree,1,6); - END IF; - - CALL ticketComponentUpdateSale(vOption); - - INSERT INTO vn.ticketLog (originFk, userFk, `action`, description) - VALUES (vTicket, account.userGetId(), 'update', CONCAT('Bionizo linea id ', vSale)); - - DROP TEMPORARY TABLE tmp.buyUltimate; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `sale_calculateComponent__2` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sale_calculateComponent__2`() -proc: BEGIN -/** - * Actualiza los componentes - * - * @param vSale Delivery date - * @param vOption indica en que componente pone el descuadre, NULL en casos habituales - */ - DECLARE vShipped DATE; - DECLARE vWarehouseFk SMALLINT; - DECLARE vAgencyModeFk INT; - DECLARE vAddressFk INT; - DECLARE vTicketFk BIGINT; - DECLARE vItemFk BIGINT; - DECLARE vLanded DATE; - DECLARE vIsEditable BOOLEAN; - DECLARE vZoneFk INTEGER; - - DECLARE vSaleFk INTEGER; - DECLARE v_done BOOL DEFAULT FALSE; - - DECLARE vCur CURSOR FOR - select id from tmp.ticketRose; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = TRUE; - - OPEN vCur; - - l: LOOP - SET v_done = FALSE; - FETCH vCur INTO vSaleFk; - - IF v_done THEN - LEAVE l; - END IF; - - SELECT t.refFk IS NULL AND (IFNULL(ts.alertLevel, 0) = 0 OR s.price = 0), - s.ticketFk, - s.itemFk , - t.zoneFk, - t.warehouseFk, - t.shipped, - t.addressFk, - t.agencyModeFk, - t.landed - INTO vIsEditable, - vTicketFk, - vItemFk, - vZoneFk, - vWarehouseFk, - vShipped, - vAddressFk, - vAgencyModeFk, - vLanded - FROM ticket t - JOIN sale s ON s.ticketFk = t.id - LEFT JOIN ticketState ts ON ts.ticketFk = t.id - WHERE s.id = vSaleFk; - - - CALL zone_getLanded(vShipped, vAddressFk, vAgencyModeFk, vWarehouseFk, TRUE); - - IF (SELECT COUNT(*) FROM tmp.zoneGetLanded LIMIT 1) > 0 THEN - - IF vLanded IS NULL OR vZoneFk IS NULL THEN - - UPDATE ticket t - SET t.landed = (SELECT landed FROM tmp.zoneGetLanded LIMIT 1) - WHERE t.id = vTicketFk AND t.landed IS NULL; - - IF vZoneFk IS NULL THEN - SELECT zoneFk INTO vZoneFk FROM tmp.zoneGetLanded LIMIT 1; - UPDATE ticket t - SET t.zoneFk = vZoneFk - WHERE t.id = vTicketFk AND t.zoneFk IS NULL; - END IF; - DROP TEMPORARY TABLE tmp.zoneGetLanded; - - END IF; - - -- rellena la tabla buyUltimate con la ultima compra - CALL buyUltimate (vWarehouseFk, vShipped); - - DELETE FROM tmp.buyUltimate WHERE itemFk != vItemFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot - SELECT vWarehouseFk warehouseFk, NULL available, vItemFk itemFk, buyFk, vZoneFk zoneFk - FROM tmp.buyUltimate - WHERE itemFk = vItemFk; - - CALL catalog_componentPrepare(); - CALL catalog_componentCalculate(vZoneFk, vAddressFk, vShipped, vWarehouseFk); - - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT vSaleFk saleFk,vWarehouseFk warehouseFk; - /* - IF vOption IS NULL THEN - SET vOption = IF(vIsEditable, 1, 6); - END IF; - */ - - CALL ticketComponentUpdateSale(1); - CALL catalog_componentPurge(); - - DROP TEMPORARY TABLE tmp.buyUltimate; - DROP TEMPORARY TABLE tmp.sale; - - ELSE - INSERT INTO tmp.ticketFail (id) values (vSaleFk); - END IF; - - END LOOP; - CLOSE vCur; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `sale_checkNoComponents` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sale_checkNoComponents`(vCreatedFrom DATETIME, vCreatedTo DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_checkNoComponents`(vCreatedFrom DATETIME, vCreatedTo DATETIME) BEGIN /** * Comprueba que las ventas creadas entre un rango de fechas tienen componentes @@ -75504,7 +64807,7 @@ BEGIN GROUP BY s.id; DECLARE CONTINUE HANDLER FOR NOT FOUND - SET v_done = TRUE; + SET v_done = TRUE; DROP TEMPORARY TABLE IF EXISTS tmp.coste; @@ -75512,7 +64815,7 @@ BEGIN CREATE TEMPORARY TABLE tmp.coste (PRIMARY KEY (id)) ENGINE = MEMORY SELECT s.id - FROM sale s + FROM sale s JOIN item i ON i.id = s.itemFk JOIN itemType tp ON tp.id = i.typeFk JOIN itemCategory ic ON ic.id = tp.categoryFk @@ -75531,67 +64834,18 @@ BEGIN IF v_done THEN LEAVE l; END IF; - + SELECT ticketFk, concept INTO vTicketFk, vConcept FROM sale WHERE id = vSaleFk; - + CALL util.debugAdd(vTicketFk, vConcept); CALL sale_calculateComponent(vSaleFk, 1); END LOOP; CLOSE vCur; - DROP TEMPORARY TABLE tmp.coste; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `sale_fruitWithoutLot` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sale_fruitWithoutLot`() -BEGIN -/** -* -* Manda correo a el usuario encargado de fruta y verdura -* de las lineas de tickets a las que no ha sido asignada -* un lote. -* -*/ - SET SESSION group_concat_max_len = 102400; - - INSERT INTO mail (receiver,replyTo,subject,body) - SELECT CONCAT(sub.name, '@verdnatura.es') receiver, - 'noreply@verdnatura.es' replyTo, - CONCAT( - 'El ', - CONCAT (CAST((SUM(sub.fail)/COUNT(*))*100 AS DECIMAL(10,2)), ' %'), - CONCAT(' de los artículos han sido vendidos sin lote con fecha: ', DATE_SUB(CURDATE(), INTERVAL 3 DAY )) - ) subject, - GROUP_CONCAT(sub.ticket SEPARATOR '

') body - FROM (SELECT IF (sb.saleFk IS NULL,1, 0) fail, - u.name, - IF (sb.saleFk IS NULL,CONCAT('Artículo ',i.id,', ',i.name,':
     - https://salix.verdnatura.es/#!/ticket/',t.id,'/sale'), NULL) ticket - FROM ticket t - JOIN sale s ON s.ticketFk = t.id - LEFT JOIN saleBuy sb ON sb.saleFk = s.id - JOIN item i ON i.id = s.itemFk - JOIN itemType it ON it.id = i.typeFk - JOIN account.user u ON u.id = it.workerFk - JOIN itemCategory ic ON ic.id = it.categoryFk - WHERE t.shipped = DATE_SUB(CURDATE(), INTERVAL 1 DAY) - AND ic.code='fruit')sub; + DROP TEMPORARY TABLE tmp.coste; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -75602,224 +64856,122 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sale_getFromTicketOrCollection`(vParam INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_getFromTicketOrCollection`(vParam INT) BEGIN - - /* - * Visualizar lineas de la tabla sale a través del parámetro vParam que puede ser ticket o collection - * - * @param vParam Identificador de vn.ticket o vn.collection - */ - - DECLARE vItemPackingTypeFk VARCHAR(1); +/** + * Visualizar lineas de la tabla sale a través del parámetro vParam que puede + * ser ticket o collection. + * + * @param vParam Identificador de ticket o collection + */ DECLARE vIsCollection BOOL; SELECT COUNT(*) INTO vIsCollection - FROM vn.collection c + FROM collection c WHERE c.id = vParam; DROP TEMPORARY TABLE IF EXISTS tmp.ticket; + DROP TEMPORARY TABLE IF EXISTS tmp.ticket2; - IF vIsCollection THEN - + IF vIsCollection THEN CREATE TEMPORARY TABLE tmp.ticket - SELECT tc.ticketFk id, clientFk, tc.ticketFk as showTicketFk - FROM vn.ticketCollection tc - JOIN vn.ticket t ON t.id = tc.ticketFk - WHERE tc.collectionFk = vParam; - - ELSE - - CREATE TEMPORARY TABLE tmp.ticket - SELECT t.id, clientFk, t.id as showTicketFk - FROM vn.ticket t - WHERE t.id = vParam; - + (INDEX (id)) + ENGINE = MEMORY + SELECT tc.ticketFk id + FROM ticketCollection tc + JOIN ticket t ON t.id = tc.ticketFk + WHERE tc.collectionFk = vParam; + + CREATE TEMPORARY TABLE tmp.ticket2 + (INDEX (id)) + ENGINE = MEMORY + SELECT tc.ticketFk id + FROM ticketCollection tc + JOIN ticket t ON t.id = tc.ticketFk + WHERE tc.collectionFk = vParam; + ELSE + CREATE TEMPORARY TABLE tmp.ticket + (INDEX (id)) + ENGINE = MEMORY + SELECT vParam id; + + CREATE TEMPORARY TABLE tmp.ticket2 + (INDEX (id)) + ENGINE = MEMORY + SELECT vParam id; END IF; - SELECT showTicketFk ticketFk, - sgd.saleGroupFk, - s.id as saleFk, - s.itemFk, - s.quantity, - i.longName, - i.size, - s.reserved, - MAX(IF(st.semaphore <=> 1, TRUE, FALSE)) as isPreviousPrepared, - MAX(IF(st.semaphore <=> 2, TRUE, FALSE)) as isPrepared, - MAX(IF(st.semaphore <=> 3, TRUE, FALSE)) as isControlled, - MAX(IF(st.semaphore <=> 4, TRUE, FALSE)) as isPreControlled, - ic.color, - ip.productor, - s.discount, - s.price, - i.stems, - i.category, - o.code AS origin, - t.clientFk, - s.originalQuantity, - TRIM(CONCAT( - LPAD(s.concept,30,' '), ' ', - RPAD(IFNULL(i.size,''),5,' ') - ) - ) as line1, - '' cel1, - TRIM(CONCAT(LPAD(IFNULL(ip.productor,''),30,' '), ' ',LPAD(IFNULL(o.code,''),4,' '))) as line2, - IF(s.quantity MOD IFNULL(b.packing,s.quantity + 1), - CONCAT(CAST(s.quantity/IFNULL(b.`grouping`,1) AS decimal(10,0)),' x ',IFNULL(b.`grouping`,1)), - CONCAT(CAST(s.quantity / IFNULL(b.packing,1) AS DECIMAL(10,0)),' pack de ',IFNULL(b.packing,1))) cel2, - TRIM(CONCAT(ic.color))as line3, - p.code cel3, - s.isAdded, - str.originalQuantity as startQuantity, -- eliminar cuando tengamos la nueva apk - IFNULL(c.workerFk,getUser()) as workerFk, - IFNULL(SUM(iss.quantity),0) as pickedQuantity, - i.packingShelve - FROM vn.sale s - JOIN tmp.ticket t ON t.id = s.ticketFk - JOIN vn.ticket tt ON tt.id = t.id - LEFT JOIN cache.last_buy lb ON lb.item_id = s.itemFk AND lb.warehouse_id = tt.warehouseFk - LEFT JOIN vn.buy b ON b.id = lb.buy_id - JOIN vn.item i ON i.id = s.itemFk - LEFT JOIN vn.ticketCollection tc ON tc.ticketFk = t.id - LEFT JOIN vn.collection c ON c.id = tc.collectionFk - LEFT JOIN vn.saleTracking str ON str.saleFk = s.id AND str.isChecked = 1 - LEFT JOIN vn.itemShelvingSale iss ON iss.saleFk = s.id - LEFT JOIN vn.state st ON st.id = str.stateFk - LEFT JOIN vn.itemColor ic ON ic.itemFk = s.itemFk - LEFT JOIN vn.itemProductor ip ON ip.itemFk = s.itemFk - LEFT JOIN vn.origin o ON o.id = i.originFk - LEFT JOIN vn.saleGroupDetail sgd ON sgd.saleFk = s.id - LEFT JOIN vn.saleGroup sg ON sg.id = sgd.saleGroupFk - LEFT JOIN vn.parking p ON p.id = sg.parkingFk - -- WHERE (i.itemPackingTypeFk = c.itemPackingTypeFk OR ISNULL(c.itemPackingTypeFk)) + SELECT s.ticketFk, + sgd.saleGroupFk, + s.id as saleFk, + s.itemFk, + s.quantity, + i.longName, + i.size, + s.reserved, + MAX(IF(st.semaphore <=> 1, TRUE, FALSE)) as isPreviousPrepared, + MAX(IF(st.semaphore <=> 2, TRUE, FALSE)) as isPrepared, + MAX(IF(st.semaphore <=> 3, TRUE, FALSE)) as isControlled, + MAX(IF(st.semaphore <=> 4, TRUE, FALSE)) as isPreControlled, + ic.color, + ip.productor, + s.discount, + s.price, + i.stems, + i.category, + o.code origin, + tt.clientFk, + s.originalQuantity, + TRIM(CONCAT(LPAD(s.concept,30,' '), ' ', + RPAD(IFNULL(i.size,''),5,' '))) line1, + '' cel1, + TRIM(CONCAT(LPAD(IFNULL(ip.productor,''),30,' '), ' ',LPAD(IFNULL(o.code,''),4,' '))) line2, + IF(s.quantity MOD IFNULL(b.packing,s.quantity + 1), + CONCAT(CAST(s.quantity/IFNULL(b.`grouping`,1) AS DECIMAL(10,0)),' x ',IFNULL(b.`grouping`,1)), + CONCAT(CAST(s.quantity / IFNULL(b.packing,1) AS DECIMAL(10,0)),' pack de ',IFNULL(b.packing,1))) cel2, + TRIM(CONCAT(ic.color)) line3, + p.code cel3, + s.isAdded, + sub2.originalQuantity as startQuantity, -- eliminar cuando tengamos la nueva apk + IFNULL(c.workerFk,getUser()) as workerFk, + IFNULL(SUM(iss.quantity),0) as pickedQuantity, + i.packingShelve, + MIN(iss.created) picked + FROM tmp.ticket t + JOIN sale s ON s.ticketFk = t.id + JOIN ticket tt ON tt.id = t.id + LEFT JOIN cache.last_buy lb ON lb.item_id = s.itemFk AND lb.warehouse_id = tt.warehouseFk + LEFT JOIN buy b ON b.id = lb.buy_id + JOIN item i ON i.id = s.itemFk + LEFT JOIN ticketCollection tc ON tc.ticketFk = t.id + LEFT JOIN collection c ON c.id = tc.collectionFk + LEFT JOIN (SELECT sub.saleFk, sub.isChecked, sub.stateFk, sub.originalQuantity + FROM (SELECT DISTINCT st.id, st.saleFk, st.isChecked, st.stateFk, st.originalQuantity + FROM tmp.ticket2 t + JOIN sale s ON s.ticketFk = t.id + JOIN saleTracking st ON st.saleFk = s.id + ORDER BY st.id DESC + LIMIT 10000000000000000000) sub + GROUP BY sub.saleFk, sub.stateFK) sub2 ON sub2.saleFk = s.id AND sub2.isChecked = 1 + LEFT JOIN itemShelvingSale iss ON iss.saleFk = s.id + LEFT JOIN state st ON st.id = sub2.stateFk + LEFT JOIN itemColor ic ON ic.itemFk = s.itemFk + LEFT JOIN itemProductor ip ON ip.itemFk = s.itemFk + LEFT JOIN origin o ON o.id = i.originFk + LEFT JOIN saleGroupDetail sgd ON sgd.saleFk = s.id + LEFT JOIN saleGroup sg ON sg.id = sgd.saleGroupFk + LEFT JOIN parking p ON p.id = sg.parkingFk GROUP BY s.id; - - DROP TEMPORARY TABLE tmp.ticket; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `sale_getFromTicketOrCollection__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sale_getFromTicketOrCollection__`(vParam INT) -BEGIN - /* - * Visualizar lineas de la tabla sale a través del parámetro vParam que puede ser ticket o collection - */ - - DECLARE vItemPackingTypeFk VARCHAR(1); - - IF (SELECT COUNT(*) FROM vn.ticket WHERE id = vParam AND id > 2000000) THEN - - DROP TEMPORARY TABLE IF EXISTS tmp.ticket; - CREATE TEMPORARY TABLE tmp.ticket - SELECT t.id, clientFk, t.id as showTicketFk - FROM vn.ticket t - WHERE t.id = vParam; - - ELSE - - DROP TEMPORARY TABLE IF EXISTS tmp.ticket; - CREATE TEMPORARY TABLE tmp.ticket - SELECT tc.ticketFk id, clientFk, tc.ticketFk as showTicketFk - FROM vn.ticketCollection tc - JOIN vn.ticket t ON t.id = tc.ticketFk - WHERE tc.collectionFk = vParam; - - END IF; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticket3; - CREATE TEMPORARY TABLE tmp.ticket3 - SELECT * FROM tmp.ticket; - - SELECT showTicketFk ticketFk, - s.id as saleFk, - s.itemFk, - s.quantity, - i.longName, - i.size, - s.reserved, - MAX(IF(st.semaphore <=> 1, TRUE, FALSE)) as isPreviousPrepared, - MAX(IF(st.semaphore <=> 2, TRUE, FALSE)) as isPrepared, - MAX(IF(st.semaphore <=> 3, TRUE, FALSE)) as isControlled, - ic.color, - ip.productor, - s.discount, - s.price, - i.stems, - i.category, - o.code AS origin, - t.clientFk, - s.originalQuantity, - TRIM(CONCAT( - LPAD(s.concept,30,' '), ' ', - RPAD(IFNULL(i.size,''),5,' ') - ) - ) as line1, - '' cel1, - TRIM(CONCAT(LPAD(IFNULL(ip.productor,''),30,' '), ' ',LPAD(IFNULL(o.code,''),4,' '))) as line2, - IF(s.quantity MOD IFNULL(b.packing,s.quantity + 1), - CONCAT(CAST(s.quantity/IFNULL(b.`grouping`,1) AS decimal(10,0)),' x ',IFNULL(b.`grouping`,1)), - CONCAT(CAST(s.quantity / IFNULL(b.packing,1) AS DECIMAL(10,0)),' pack de ',IFNULL(b.packing,1))) cel2, - TRIM(CONCAT(ic.color))as line3, - p.code cel3, - -- TRIM(CONCAT(ic.color, IF(MAX(IF(st.semaphore <=> 1, TRUE, FALSE)) AND t.id != t.showTicketFk, CONCAT(' [ TICKET ',t.id,' ] '),''), IFNULL(LPAD(st.parkingCode,40,' '),''))) as line3, - s.isAdded, - str.originalQuantity as startQuantity, -- eliminar cuando tengamos la nueva apk - IFNULL(c.workerFk,getUser()) as workerFk, - IFNULL(SUM(iss.quantity),0) as pickedQuantity - FROM vn.sale s - JOIN tmp.ticket t ON t.id = s.ticketFk - JOIN vn.ticket tt ON tt.id = t.id - LEFT JOIN cache.last_buy lb ON lb.item_id = s.itemFk AND lb.warehouse_id = tt.warehouseFk - LEFT JOIN vn.buy b ON b.id = lb.buy_id - JOIN vn.item i ON i.id = s.itemFk - LEFT JOIN vn.ticketCollection tc ON tc.ticketFk = t.id - LEFT JOIN vn.collection c ON c.id = tc.collectionFk - LEFT JOIN vn.saleTracking str ON str.saleFk = s.id AND str.isChecked = 1 - LEFT JOIN vn.itemShelvingSale iss ON iss.saleFk = s.id - LEFT JOIN vn.state st ON st.id = str.stateFk - LEFT JOIN vn.itemColor ic ON ic.itemFk = s.itemFk - LEFT JOIN vn.itemProductor ip ON ip.itemFk = s.itemFk - LEFT JOIN vn.origin o ON o.id = i.originFk - LEFT JOIN vn.saleParking sp ON sp.saleFk = s.id - LEFT JOIN vn.parking p ON p.id = sp.parkingFk - /*LEFT JOIN (SELECT st.saleFk, p.`code` as parkingCode - FROM vn.saleTracking st - JOIN vn.state s ON s.id = st.stateFk - JOIN vn.sale sa ON sa.id = st.saleFk - JOIN tmp.ticket3 t ON t.id = sa.ticketFk - JOIN vn.ticketParking tp ON tp.ticketFk = sa.ticketFk - JOIN vn.parking p ON p.id = tp.parkingFk - WHERE st.isChecked - AND s.semaphore = 1 - GROUP BY st.saleFk) st ON st.saleFk = s.id - */ - WHERE (i.itemPackingTypeFk = c.itemPackingTypeFk OR ISNULL(c.itemPackingTypeFk)) - GROUP BY s.id; - - DROP TEMPORARY TABLE tmp.ticket; - DROP TEMPORARY TABLE tmp.ticket3; - + DROP TEMPORARY TABLE + tmp.ticket, + tmp.ticket2; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -75830,218 +64982,270 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sale_getProblems`(IN vIsTodayRelative tinyint(1)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_getProblems`(IN vIsTodayRelative tinyint(1)) BEGIN /** - * Calcula los problemas de cada venta - * para un conjunto de tickets. + * Calcula los problemas de cada venta para un conjunto de tickets. * + * @param vIsTodayRelative Indica si se calcula el disponible como si todo saliera hoy * @table tmp.sale_getProblems(ticketFk, clientFk, warehouseFk, shipped) Identificadores de los tickets a calcular * @return tmp.sale_problems */ - DECLARE vWarehouse INT; - DECLARE vDate DATE; - DECLARE vAvailableCache INT; - DECLARE vDone INT DEFAULT 0; - DECLARE vComponentCount INT; + DECLARE vWarehouseFk INT; + DECLARE vDate DATE; + DECLARE vAvailableCache INT; + DECLARE vVisibleCache INT; + DECLARE vDone INT DEFAULT 0; + DECLARE vComponentCount INT; - DECLARE vCursor CURSOR FOR - SELECT DISTINCT tt.warehouseFk, IF(vIsTodayRelative, CURDATE(), date(tt.shipped)) - FROM tmp.sale_getProblems tt - WHERE DATE(tt.shipped) BETWEEN CURDATE() - AND TIMESTAMPADD(DAY, IF(vIsTodayRelative, 9.9, 1.9), CURDATE()); - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = 1; + DECLARE vCursor CURSOR FOR + SELECT DISTINCT tt.warehouseFk, IF(vIsTodayRelative, util.VN_CURDATE(), date(tt.shipped)) + FROM tmp.sale_getProblems tt + WHERE DATE(tt.shipped) BETWEEN util.VN_CURDATE() + AND TIMESTAMPADD(DAY, IF(vIsTodayRelative, 9.9, 1.9), util.VN_CURDATE()); - DROP TEMPORARY TABLE IF EXISTS tmp.sale_problems; - CREATE TEMPORARY TABLE tmp.sale_problems ( - ticketFk INT(11), - saleFk INT(11), - isFreezed INTEGER(1) DEFAULT 0, - risk DECIMAL(10,2) DEFAULT 0, - hasHighRisk TINYINT(1) DEFAULT 0, - hasTicketRequest INTEGER(1) DEFAULT 0, - isAvailable INTEGER(1) DEFAULT 1, - itemShortage VARCHAR(250), - isTaxDataChecked INTEGER(1) DEFAULT 1, - itemDelay VARCHAR(250), - hasComponentLack INTEGER(1), - isTooLittle BOOL DEFAULT FALSE, - PRIMARY KEY (ticketFk, saleFk) - ) ENGINE = MEMORY; + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = 1; - DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; - CREATE TEMPORARY TABLE tmp.ticket_list - (PRIMARY KEY (ticketFk)) - ENGINE = MEMORY - SELECT tp.ticketFk, c.id clientFk - FROM tmp.sale_getProblems tp - JOIN vn.client c ON c.id = tp.clientFk; - - SELECT COUNT(*) INTO vComponentCount - FROM vn.component c - WHERE c.isRequired; - - INSERT INTO tmp.sale_problems(ticketFk, isTooLittle) - SELECT sub.ticketFk, TRUE - FROM (SELECT tl.ticketFk, SUM(sv.litros) litros, t.totalWithoutVat - FROM tmp.ticket_list tl - JOIN vn.saleVolume sv ON sv.ticketFk = tl.ticketFk - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk AND zc.dated = CURDATE() - WHERE NOW() < TIMESTAMPADD(MINUTE,MINUTE(zc.`hour`) ,TIMESTAMPADD(HOUR,HOUR(zc.`hour`),CURDATE())) - GROUP BY tl.ticketFk) sub - JOIN vn.volumeConfig vc - WHERE sub.litros < vc.minTicketVolume - AND sub.totalWithoutVat < vc.minTicketValue; - - INSERT INTO tmp.sale_problems(ticketFk, hasComponentLack, saleFk) - SELECT tl.ticketFk, (COUNT(DISTINCT s.id) * vComponentCount > COUNT(c.id)), s.id - FROM tmp.ticket_list tl - JOIN vn.sale s ON s.ticketFk = tl.ticketFk - LEFT JOIN vn.saleComponent sc ON sc.saleFk = s.id - LEFT JOIN vn.component c ON c.id = sc.componentFk AND c.isRequired - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.agencyMode am ON am.id = t.agencyModeFk - JOIN vn.deliveryMethod dm ON dm.id = am.deliveryMethodFk - WHERE dm.code IN('AGENCY','DELIVERY','PICKUP') - GROUP BY tl.ticketFk, s.id; - - INSERT INTO tmp.sale_problems(ticketFk, isFreezed) - SELECT DISTINCT tl.ticketFk, TRUE - FROM tmp.ticket_list tl - JOIN vn.client c ON c.id = tl.clientFk - WHERE c.isFreezed - ON DUPLICATE KEY UPDATE - isFreezed = c.isFreezed; - - DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt; - CREATE TEMPORARY TABLE tmp.clientGetDebt - (PRIMARY KEY (clientFk)) - ENGINE = MEMORY - SELECT DISTINCT clientFk - FROM tmp.ticket_list; + DELETE tt.* + FROM tmp.sale_getProblems tt + JOIN vn.ticketObservation tto ON tto.ticketFk = tt.ticketFk + JOIN vn.observationType ot ON ot.id = tto.observationTypeFk + WHERE ot.code = 'administrative' + AND tto.description = 'Miriam'; - CALL clientGetDebt(CURDATE()); + DROP TEMPORARY TABLE IF EXISTS tmp.sale_problems; + CREATE TEMPORARY TABLE tmp.sale_problems ( + ticketFk INT(11), + saleFk INT(11), + isFreezed INTEGER(1) DEFAULT 0, + risk DECIMAL(10,2) DEFAULT 0, + hasHighRisk TINYINT(1) DEFAULT 0, + hasTicketRequest INTEGER(1) DEFAULT 0, + isAvailable INTEGER(1) DEFAULT 1, + itemShortage VARCHAR(255), + isTaxDataChecked INTEGER(1) DEFAULT 1, + itemDelay VARCHAR(255), + itemLost VARCHAR(255), + hasComponentLack INTEGER(1), + isTooLittle BOOL DEFAULT FALSE, + PRIMARY KEY (ticketFk, saleFk) + ) ENGINE = MEMORY; - INSERT INTO tmp.sale_problems(ticketFk, risk, hasHighRisk) - SELECT DISTINCT tl.ticketFk, r.risk, ((r.risk - cc.riskTolerance) > c.credit + 10) - FROM tmp.ticket_list tl - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.agencyMode a ON t.agencyModeFk = a.id - JOIN tmp.risk r ON r.clientFk = t.clientFk - JOIN vn.client c ON c.id = t.clientFk - JOIN vn.clientConfig cc - WHERE r.risk > c.credit + 10 - AND a.isRiskFree = FALSE - ON DUPLICATE KEY UPDATE - risk = r.risk, hasHighRisk = ((r.risk - cc.riskTolerance) > c.credit + 10); - - INSERT INTO tmp.sale_problems(ticketFk, hasTicketRequest) - SELECT DISTINCT tl.ticketFk, TRUE - FROM tmp.ticket_list tl - JOIN vn.ticketRequest tr ON tr.ticketFk = tl.ticketFk - WHERE tr.isOK IS NULL - ON DUPLICATE KEY UPDATE - hasTicketRequest = TRUE; + DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; + CREATE TEMPORARY TABLE tmp.ticket_list + (PRIMARY KEY (ticketFk)) + ENGINE = MEMORY + SELECT tp.ticketFk, tp.clientFk + FROM tmp.sale_getProblems tp; - OPEN vCursor; + SELECT COUNT(*) INTO vComponentCount + FROM vn.component c + WHERE c.isRequired; - WHILE NOT vDone - DO - FETCH vCursor INTO vWarehouse, vDate; - - CALL cache.available_refresh(vAvailableCache, FALSE, vWarehouse, vDate); + -- Too Little + INSERT INTO tmp.sale_problems(ticketFk, isTooLittle) + SELECT tp.ticketFk, TRUE + FROM tmp.sale_getProblems tp + JOIN vn.ticket t ON t.id = tp.ticketFk + JOIN (SELECT t.addressFk, SUM(sv.litros) litros, t.totalWithoutVat + FROM tmp.ticket_list tl + JOIN vn.saleVolume sv ON sv.ticketFk = tl.ticketFk + JOIN vn.ticket t ON t.id = tl.ticketFk + JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk AND zc.dated = util.VN_CURDATE() + JOIN vn.agencyMode am ON am.id = t.agencyModeFk + JOIN vn.deliveryMethod dm ON dm.id = am.deliveryMethodFk + WHERE util.VN_NOW() < TIMESTAMPADD(MINUTE,MINUTE(zc.`hour`) ,TIMESTAMPADD(HOUR,HOUR(zc.`hour`),util.VN_CURDATE())) + AND dm.code IN('AGENCY','DELIVERY','PICKUP') + AND t.shipped BETWEEN util.VN_CURDATE() AND util.midnight() + GROUP BY t.addressFk) sub ON sub.addressFk = t.addressFk + JOIN vn.volumeConfig vc + WHERE sub.litros < vc.minTicketVolume + AND sub.totalWithoutVat < vc.minTicketValue; - INSERT INTO tmp.sale_problems(ticketFk, isAvailable, saleFk) - SELECT tl.ticketFk, FALSE, s.id - FROM tmp.ticket_list tl - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.sale s ON s.ticketFk = t.id - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.itemType it on it.id = i.typeFk - LEFT JOIN cache.available av ON av.item_id = i.id - AND av.calc_id = vAvailableCache - WHERE date(t.shipped) = vDate - AND it.categoryFk != 6 - AND IFNULL(av.available, 0) < 0 - AND s.isPicked = FALSE - AND NOT i.generic - AND vWarehouse = t.warehouseFk - GROUP BY tl.ticketFk - ON DUPLICATE KEY UPDATE - isAvailable = FALSE, saleFk = VALUES(saleFk); + -- Faltan componentes + INSERT INTO tmp.sale_problems(ticketFk, hasComponentLack, saleFk) + SELECT tl.ticketFk, (COUNT(DISTINCT s.id) * vComponentCount > COUNT(c.id)), s.id + FROM tmp.ticket_list tl + JOIN vn.sale s ON s.ticketFk = tl.ticketFk + LEFT JOIN vn.saleComponent sc ON sc.saleFk = s.id + LEFT JOIN vn.component c ON c.id = sc.componentFk AND c.isRequired + JOIN vn.ticket t ON t.id = tl.ticketFk + JOIN vn.agencyMode am ON am.id = t.agencyModeFk + JOIN vn.deliveryMethod dm ON dm.id = am.deliveryMethodFk + WHERE dm.code IN('AGENCY','DELIVERY','PICKUP') + GROUP BY tl.ticketFk, s.id; - INSERT INTO tmp.sale_problems(ticketFk, itemShortage, saleFk) - SELECT ticketFk, problem, saleFk - FROM ( - SELECT tl.ticketFk, CONCAT('F: ',GROUP_CONCAT(i.id, ' ', i.longName, ' ')) problem, s.id AS saleFk - FROM tmp.ticket_list tl - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.sale s ON s.ticketFk = t.id - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.itemType it on it.id = i.typeFk - LEFT JOIN vn.itemShelvingStock_byWarehouse issw ON issw.itemFk = i.id AND issw.warehouseFk = t.warehouseFk - LEFT JOIN cache.available av ON av.item_id = i.id AND av.calc_id = vAvailableCache - WHERE IFNULL(av.available, 0) <= 0 - AND s.quantity > IFNULL(issw.visible, 0) - AND s.quantity > 0 - AND s.isPicked = FALSE - AND s.reserved = FALSE - AND it.categoryFk != 6 - AND IF(vIsTodayRelative, TRUE, date(t.shipped) = vDate) - AND NOT i.generic - AND CURDATE() = vDate - AND t.warehouseFk = vWarehouse - GROUP BY tl.ticketFk) sub - ON DUPLICATE KEY UPDATE - itemShortage = sub.problem, saleFk = sub.saleFk; + -- Cliente congelado + INSERT INTO tmp.sale_problems(ticketFk, isFreezed) + SELECT DISTINCT tl.ticketFk, TRUE + FROM tmp.ticket_list tl + JOIN vn.client c ON c.id = tl.clientFk + WHERE c.isFreezed + ON DUPLICATE KEY UPDATE isFreezed = c.isFreezed; - INSERT INTO tmp.sale_problems(ticketFk, itemDelay, saleFk) - SELECT ticketFk, problem, saleFk - FROM ( - SELECT tl.ticketFk, GROUP_CONCAT('I: ',i.id, ' ', i.longName, ' ') problem, s.id AS saleFk - FROM tmp.ticket_list tl - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.sale s ON s.ticketFk = t.id - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.itemType it on it.id = i.typeFk - LEFT JOIN vn.itemShelvingStock_byWarehouse issw ON issw.itemFk = i.id AND issw.warehouseFk = t.warehouseFk - LEFT JOIN cache.available av ON av.item_id = i.id AND av.calc_id = vAvailableCache - WHERE IFNULL(av.available, 0) >= s.quantity - AND s.quantity > IFNULL(issw.visible, 0) - AND s.quantity > 0 - AND s.isPicked = FALSE - AND s.reserved = FALSE - AND it.categoryFk != 6 - AND IF(vIsTodayRelative, TRUE, date(t.shipped) = vDate) - AND NOT i.generic - AND CURDATE() = vDate - AND t.warehouseFk = vWarehouse - GROUP BY tl.ticketFk) sub - ON DUPLICATE KEY UPDATE - itemDelay = sub.problem, saleFk = sub.saleFk; - END WHILE; + -- Cr�dito excedido + DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt; + CREATE TEMPORARY TABLE tmp.clientGetDebt + (PRIMARY KEY (clientFk)) + ENGINE = MEMORY + SELECT DISTINCT clientFk + FROM tmp.ticket_list; - CLOSE vCursor; - - INSERT INTO tmp.sale_problems(ticketFk, isTaxDataChecked) - SELECT DISTINCT tl.ticketFk, FALSE - FROM tmp.ticket_list tl - JOIN vn.client c ON c.id = tl.clientFk - WHERE c.isTaxDataChecked = FALSE + CALL clientGetDebt(util.VN_CURDATE()); + + INSERT INTO tmp.sale_problems(ticketFk, risk, hasHighRisk) + SELECT DISTINCT tl.ticketFk, r.risk, ((r.risk - cc.riskTolerance) > c.credit + 10) + FROM tmp.ticket_list tl + JOIN vn.ticket t ON t.id = tl.ticketFk + JOIN vn.agencyMode a ON t.agencyModeFk = a.id + JOIN tmp.risk r ON r.clientFk = t.clientFk + JOIN vn.client c ON c.id = t.clientFk + JOIN vn.clientConfig cc + WHERE r.risk > c.credit + 10 + AND a.isRiskFree = FALSE ON DUPLICATE KEY UPDATE - isTaxDataChecked = FALSE; + risk = r.risk, hasHighRisk = ((r.risk - cc.riskTolerance) > c.credit + 10); - DROP TEMPORARY TABLE - tmp.clientGetDebt, - tmp.ticket_list; + -- Antiguo COD 100, son peticiones de compra sin terminar + INSERT INTO tmp.sale_problems(ticketFk, hasTicketRequest) + SELECT DISTINCT tl.ticketFk, TRUE + FROM tmp.ticket_list tl + JOIN vn.ticketRequest tr ON tr.ticketFk = tl.ticketFk + WHERE tr.isOK IS NULL + ON DUPLICATE KEY UPDATE hasTicketRequest = TRUE; + + -- Disponible, Faltas, Inventario y Retrasos + OPEN vCursor; + + WHILE NOT vDone DO + + FETCH vCursor INTO vWarehouseFk, vDate; + + -- Disponible: no va a haber suficiente producto para preparar todos los pedidos + CALL cache.available_refresh(vAvailableCache, FALSE, vWarehouseFk, vDate); + + INSERT INTO tmp.sale_problems(ticketFk, isAvailable, saleFk) + SELECT tl.ticketFk, FALSE, s.id + FROM tmp.ticket_list tl + JOIN vn.ticket t ON t.id = tl.ticketFk + JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it on it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN cache.available av ON av.item_id = i.id AND av.calc_id = vAvailableCache + WHERE date(t.shipped) = vDate + AND ic.merchandise = TRUE + AND IFNULL(av.available, 0) < 0 + AND s.isPicked = FALSE + AND NOT i.generic + AND vWarehouseFk = t.warehouseFk + GROUP BY tl.ticketFk + ON DUPLICATE KEY UPDATE isAvailable = FALSE, saleFk = VALUES(saleFk); + + -- Faltas: visible, disponible y ubicado son menores que la cantidad vendida + CALL cache.visible_refresh(vVisibleCache, FALSE, vWarehouseFk); + + INSERT INTO tmp.sale_problems(ticketFk, itemShortage, saleFk) + SELECT ticketFk, problem, saleFk + FROM ( + SELECT tl.ticketFk, + LEFT(CONCAT('F: ',GROUP_CONCAT(i.id, ' ', i.longName, ' ')),250) problem, + s.id AS saleFk + FROM tmp.ticket_list tl + JOIN vn.ticket t ON t.id = tl.ticketFk + JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it on it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN cache.visible v ON v.item_id = i.id AND v.calc_id = vVisibleCache + LEFT JOIN cache.available av ON av.item_id = i.id AND av.calc_id = vAvailableCache + LEFT JOIN vn.itemShelvingStock_byWarehouse issw ON issw.itemFk = i.id AND issw.warehouseFk = t.warehouseFk + WHERE IFNULL(v.visible,0) < s.quantity + AND IFNULL(av.available ,0) < s.quantity + AND IFNULL(issw.visible, 0) < s.quantity + AND s.isPicked = FALSE + AND s.reserved = FALSE + AND ic.merchandise = TRUE + AND IF(vIsTodayRelative, TRUE, date(t.shipped) = vDate) + AND NOT i.generic + AND util.VN_CURDATE() = vDate + AND t.warehouseFk = vWarehouseFk + GROUP BY tl.ticketFk) sub + ON DUPLICATE KEY UPDATE itemShortage = sub.problem, saleFk = sub.saleFk; + + -- Inventario: Visible suficiente, pero ubicado menor a la cantidad vendida + INSERT INTO tmp.sale_problems(ticketFk, itemLost, saleFk) + SELECT ticketFk, problem, saleFk + FROM ( + SELECT tl.ticketFk, LEFT(GROUP_CONCAT('I: ',i.id, ' ', i.longName, ' '),250) problem, s.id AS saleFk + FROM tmp.ticket_list tl + JOIN vn.ticket t ON t.id = tl.ticketFk + JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it on it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN cache.visible v ON v.item_id = s.itemFk AND v.calc_id = vVisibleCache + LEFT JOIN vn.itemShelvingStock_byWarehouse issw ON issw.itemFk = i.id AND issw.warehouseFk = t.warehouseFk + WHERE IFNULL(v.visible,0) >= s.quantity + AND IFNULL(issw.visible, 0) < s.quantity + AND s.quantity > 0 + AND s.isPicked = FALSE + AND s.reserved = FALSE + AND ic.merchandise = TRUE + AND IF(vIsTodayRelative, TRUE, date(t.shipped) = vDate) + AND NOT i.generic + AND util.VN_CURDATE() = vDate + AND t.warehouseFk = vWarehouseFk + GROUP BY tl.ticketFk) sub + ON DUPLICATE KEY UPDATE itemDelay = sub.problem, saleFk = sub.saleFk; + + -- Retraso: Disponible suficiente, pero no visible ni ubicado + INSERT INTO tmp.sale_problems(ticketFk, itemDelay, saleFk) + SELECT ticketFk, problem, saleFk + FROM ( + SELECT tl.ticketFk, LEFT(GROUP_CONCAT('R: ',i.id, ' ', i.longName, ' '),250) problem, s.id AS saleFk + FROM tmp.ticket_list tl + JOIN vn.ticket t ON t.id = tl.ticketFk + JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it on it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN cache.visible v ON v.item_id = s.itemFk AND v.calc_id = vVisibleCache + LEFT JOIN cache.available av ON av.item_id = i.id AND av.calc_id = vAvailableCache + LEFT JOIN vn.itemShelvingStock_byWarehouse issw ON issw.itemFk = i.id AND issw.warehouseFk = t.warehouseFk + WHERE IFNULL(v.visible,0) < s.quantity + AND IFNULL(av.available ,0) >= s.quantity + AND IFNULL(issw.visible, 0) < s.quantity + AND s.quantity > 0 + AND s.isPicked = FALSE + AND s.reserved = FALSE + AND ic.merchandise = TRUE + AND IF(vIsTodayRelative, TRUE, date(t.shipped) = vDate) + AND NOT i.generic + AND util.VN_CURDATE() = vDate + AND t.warehouseFk = vWarehouseFk + GROUP BY tl.ticketFk) sub + ON DUPLICATE KEY UPDATE itemDelay = sub.problem, saleFk = sub.saleFk; + END WHILE; + + CLOSE vCursor; + + INSERT INTO tmp.sale_problems(ticketFk, isTaxDataChecked) + SELECT DISTINCT tl.ticketFk, FALSE + FROM tmp.ticket_list tl + JOIN vn.client c ON c.id = tl.clientFk + WHERE c.isTaxDataChecked = FALSE + ON DUPLICATE KEY UPDATE isTaxDataChecked = FALSE; + + DROP TEMPORARY TABLE + tmp.clientGetDebt, + tmp.ticket_list; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -76052,25 +65256,25 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sale_getProblemsByTicket`(IN vTicketFk INT, IN vIsTodayRelative TINYINT(1)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_getProblemsByTicket`(IN vTicketFk INT, IN vIsTodayRelative TINYINT(1)) BEGIN /** - * Calcula los problemas de cada venta + * Calcula los problemas de cada venta * para un conjunto de tickets. * * @return Problems result */ DROP TEMPORARY TABLE IF EXISTS tmp.sale_getProblems; - CREATE TEMPORARY TABLE tmp.sale_getProblems + CREATE TEMPORARY TABLE tmp.sale_getProblems (INDEX (ticketFk)) ENGINE = MEMORY - SELECT t.id ticketFk, t.clientFk, t.warehouseFk, t.shipped + SELECT t.id ticketFk, t.clientFk, t.warehouseFk, t.shipped FROM ticket t WHERE t.id = vTicketFk; @@ -76087,253 +65291,34 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `sale_getProblems__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sale_getProblems__`(IN vIsTodayRelative tinyint(1)) -BEGIN -/** - * Calcula los problemas de cada venta - * para un conjunto de tickets. - * - * @table tmp.sale_getProblems(ticketFk, clientFk, warehouseFk, shipped) Identificadores de los tickets a calcular - * @return tmp.sale_problems - */ - DECLARE vWarehouse INT; - DECLARE vDate DATE; - DECLARE vAvailableCache INT; - DECLARE vDone INT DEFAULT 0; - DECLARE vComponentCount INT; - - DECLARE vCursor CURSOR FOR - SELECT DISTINCT tt.warehouseFk, IF(vIsTodayRelative, CURDATE(), date(tt.shipped)) - FROM tmp.sale_getProblems tt - WHERE DATE(tt.shipped) BETWEEN CURDATE() - AND TIMESTAMPADD(DAY, IF(vIsTodayRelative, 9.9, 1.9), CURDATE()); - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = 1; - - DROP TEMPORARY TABLE IF EXISTS tmp.sale_problems; - CREATE TEMPORARY TABLE tmp.sale_problems ( - ticketFk INT(11), - saleFk INT(11), - isFreezed INTEGER(1) DEFAULT 0, - risk DECIMAL(10,2) DEFAULT 0, - hasHighRisk TINYINT(1) DEFAULT 0, - hasTicketRequest INTEGER(1) DEFAULT 0, - isAvailable INTEGER(1) DEFAULT 1, - itemShortage VARCHAR(250), - isTaxDataChecked INTEGER(1) DEFAULT 1, - itemDelay VARCHAR(250), - hasComponentLack INTEGER(1), - isTooLittle BOOL DEFAULT FALSE, - PRIMARY KEY (ticketFk, saleFk) - ) ENGINE = MEMORY; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; - CREATE TEMPORARY TABLE tmp.ticket_list - (PRIMARY KEY (ticketFk)) - ENGINE = MEMORY - SELECT tp.ticketFk, c.id clientFk - FROM tmp.sale_getProblems tp - JOIN vn.client c ON c.id = tp.clientFk; - - SELECT COUNT(*) INTO vComponentCount - FROM vn.component c - WHERE c.isRequired; - - INSERT INTO tmp.sale_problems(ticketFk, isTooLittle) - SELECT sub.ticketFk, TRUE - FROM (SELECT tl.ticketFk, SUM(sv.litros) litros - FROM tmp.ticket_list tl - JOIN vn.saleVolume sv ON sv.ticketFk = tl.ticketFk - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk AND zc.dated = CURDATE() - WHERE NOW() < TIMESTAMPADD(MINUTE,MINUTE(zc.`hour`) ,TIMESTAMPADD(HOUR,HOUR(zc.`hour`),CURDATE())) - GROUP BY tl.ticketFk) sub - JOIN vn.volumeConfig vc - WHERE sub.litros < vc.minTicketVolume; - - INSERT INTO tmp.sale_problems(ticketFk, hasComponentLack, saleFk) - SELECT tl.ticketFk, (COUNT(DISTINCT s.id) * vComponentCount > COUNT(c.id)), s.id - FROM tmp.ticket_list tl - JOIN vn.sale s ON s.ticketFk = tl.ticketFk - LEFT JOIN vn.saleComponent sc ON sc.saleFk = s.id - LEFT JOIN vn.component c ON c.id = sc.componentFk AND c.isRequired - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.agencyMode am ON am.id = t.agencyModeFk - JOIN vn.deliveryMethod dm ON dm.id = am.deliveryMethodFk - WHERE dm.code IN('AGENCY','DELIVERY','PICKUP') - GROUP BY tl.ticketFk, s.id; - - INSERT INTO tmp.sale_problems(ticketFk, isFreezed) - SELECT DISTINCT tl.ticketFk, TRUE - FROM tmp.ticket_list tl - JOIN vn.client c ON c.id = tl.clientFk - WHERE c.isFreezed - ON DUPLICATE KEY UPDATE - isFreezed = c.isFreezed; - - DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt; - CREATE TEMPORARY TABLE tmp.clientGetDebt - (PRIMARY KEY (clientFk)) - ENGINE = MEMORY - SELECT DISTINCT clientFk - FROM tmp.ticket_list; - - CALL clientGetDebt(CURDATE()); - - INSERT INTO tmp.sale_problems(ticketFk, risk, hasHighRisk) - SELECT DISTINCT tl.ticketFk, r.risk, ((r.risk - cc.riskTolerance) > c.credit + 10) - FROM tmp.ticket_list tl - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.agencyMode a ON t.agencyModeFk = a.id - JOIN tmp.risk r ON r.clientFk = t.clientFk - JOIN vn.client c ON c.id = t.clientFk - JOIN vn.clientConfig cc - WHERE r.risk > c.credit + 10 - AND a.isRiskFree = FALSE - ON DUPLICATE KEY UPDATE - risk = r.risk, hasHighRisk = ((r.risk - cc.riskTolerance) > c.credit + 10); - - INSERT INTO tmp.sale_problems(ticketFk, hasTicketRequest) - SELECT DISTINCT tl.ticketFk, TRUE - FROM tmp.ticket_list tl - JOIN vn.ticketRequest tr ON tr.ticketFk = tl.ticketFk - WHERE tr.isOK IS NULL - ON DUPLICATE KEY UPDATE - hasTicketRequest = TRUE; - - OPEN vCursor; - - WHILE NOT vDone - DO - FETCH vCursor INTO vWarehouse, vDate; - - CALL cache.available_refresh(vAvailableCache, FALSE, vWarehouse, vDate); - - INSERT INTO tmp.sale_problems(ticketFk, isAvailable, saleFk) - SELECT tl.ticketFk, FALSE, s.id - FROM tmp.ticket_list tl - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.sale s ON s.ticketFk = t.id - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.itemType it on it.id = i.typeFk - LEFT JOIN cache.available av ON av.item_id = i.id - AND av.calc_id = vAvailableCache - WHERE date(t.shipped) = vDate - AND it.categoryFk != 6 - AND IFNULL(av.available, 0) < 0 - AND s.isPicked = FALSE - AND NOT i.generic - AND vWarehouse = t.warehouseFk - GROUP BY tl.ticketFk - ON DUPLICATE KEY UPDATE - isAvailable = FALSE, saleFk = VALUES(saleFk); - - INSERT INTO tmp.sale_problems(ticketFk, itemShortage, saleFk) - SELECT ticketFk, problem, saleFk - FROM ( - SELECT tl.ticketFk, CONCAT('F: ',GROUP_CONCAT(i.id, ' ', i.longName, ' ')) problem, s.id AS saleFk - FROM tmp.ticket_list tl - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.sale s ON s.ticketFk = t.id - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.itemType it on it.id = i.typeFk - LEFT JOIN vn.itemShelvingStock_byWarehouse issw ON issw.itemFk = i.id AND issw.warehouseFk = t.warehouseFk - LEFT JOIN cache.available av ON av.item_id = i.id AND av.calc_id = vAvailableCache - WHERE IFNULL(av.available, 0) < 0 - AND s.quantity > IFNULL(issw.visible, 0) - AND s.quantity > 0 - AND s.isPicked = FALSE - AND s.reserved = FALSE - AND it.categoryFk != 6 - AND IF(vIsTodayRelative, TRUE, date(t.shipped) = vDate) - AND NOT i.generic - AND CURDATE() = vDate - AND t.warehouseFk = vWarehouse - GROUP BY tl.ticketFk LIMIT 1) sub - ON DUPLICATE KEY UPDATE - itemShortage = sub.problem, saleFk = sub.saleFk; - - INSERT INTO tmp.sale_problems(ticketFk, itemDelay, saleFk) - SELECT ticketFk, problem, saleFk - FROM ( - SELECT tl.ticketFk, GROUP_CONCAT('I: ',i.id, ' ', i.longName, ' ') problem, s.id AS saleFk - FROM tmp.ticket_list tl - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.sale s ON s.ticketFk = t.id - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.itemType it on it.id = i.typeFk - LEFT JOIN vn.itemShelvingStock_byWarehouse issw ON issw.itemFk = i.id AND issw.warehouseFk = t.warehouseFk - WHERE s.quantity > IFNULL(issw.visible, 0) - AND s.quantity > 0 - AND s.isPicked = FALSE - AND s.reserved = FALSE - AND it.categoryFk != 6 - AND IF(vIsTodayRelative, TRUE, date(t.shipped) = vDate) - AND NOT i.generic - AND CURDATE() = vDate - AND t.warehouseFk = vWarehouse - GROUP BY tl.ticketFk LIMIT 1) sub - ON DUPLICATE KEY UPDATE - itemDelay = sub.problem, saleFk = sub.saleFk; - END WHILE; - - CLOSE vCursor; - - INSERT INTO tmp.sale_problems(ticketFk, isTaxDataChecked) - SELECT DISTINCT tl.ticketFk, FALSE - FROM tmp.ticket_list tl - JOIN vn.client c ON c.id = tl.clientFk - WHERE c.isTaxDataChecked = FALSE - ON DUPLICATE KEY UPDATE - isTaxDataChecked = FALSE; - - DROP TEMPORARY TABLE - tmp.clientGetDebt, - tmp.ticket_list; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `sale_PriceFix` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sale_PriceFix`(vTicketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_PriceFix`(vTicketFk INT) BEGIN - - DELETE sc.* - FROM vn.saleComponent sc + + DELETE sc.* + FROM vn.saleComponent sc JOIN vn.sale s ON s.id = sc.saleFk - JOIN vn.component c ON c.id = sc.componentFk - JOIN vn.componentType ct ON ct.id = c.typeFk + JOIN vn.component c ON c.id = sc.componentFk + JOIN vn.componentType ct ON ct.id = c.typeFk WHERE s.ticketFk = vTicketFk AND ct.`type` = 'otros'; - UPDATE vn.sale s + UPDATE vn.sale s JOIN ( - SELECT sc.saleFk, sum(sc.value ) price - FROM vn.saleComponent sc + SELECT sc.saleFk, sum(sc.value ) price + FROM vn.saleComponent sc JOIN vn.sale s ON s.id = sc.saleFk WHERE s.ticketFk = vTicketFk - GROUP BY sc.saleFk) sub ON sub.saleFk = s.id + GROUP BY sc.saleFk) sub ON sub.saleFk = s.id SET s.price = sub.price; END ;; DELIMITER ; @@ -76345,65 +65330,64 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sale_recalcComponent`(vOption INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_recalcComponent`(vOption INT) proc: BEGIN -/** +/** * Actualiza los componentes * * @table tmp.recalculateSales - */ - DECLARE vShipped DATE; + */ + DECLARE vShipped DATE; DECLARE vWarehouseFk SMALLINT; DECLARE vAgencyModeFk INT; DECLARE vAddressFk INT; DECLARE vTicketFk BIGINT; DECLARE vItemFk BIGINT; - DECLARE vLanded DATE; + DECLARE vLanded DATE; DECLARE vIsEditable BOOLEAN; DECLARE vZoneFk INTEGER; - DECLARE vOption INTEGER; - + DECLARE vSale INTEGER; DECLARE vDone BOOL DEFAULT FALSE; - + DECLARE vCur CURSOR FOR SELECT id from tmp.recalculateSales; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + OPEN vCur; l: LOOP SET vDone = FALSE; - FETCH vCur INTO vSale; - + FETCH vCur INTO vSale; + IF vDone THEN LEAVE l; END IF; - - SELECT t.refFk IS NULL, - s.ticketFk, - s.itemFk , - t.zoneFk, - t.warehouseFk, - t.shipped, - t.addressFk, - t.agencyModeFk, + + SELECT t.refFk IS NULL, + s.ticketFk, + s.itemFk , + t.zoneFk, + t.warehouseFk, + t.shipped, + t.addressFk, + t.agencyModeFk, t.landed - INTO vIsEditable, - vTicketFk, - vItemFk, - vZoneFk, - vWarehouseFk, - vShipped, - vAddressFk, - vAgencyModeFk, + INTO vIsEditable, + vTicketFk, + vItemFk, + vZoneFk, + vWarehouseFk, + vShipped, + vAddressFk, + vAgencyModeFk, vLanded FROM ticket t JOIN sale s ON s.ticketFk = t.id @@ -76411,59 +65395,59 @@ proc: BEGIN WHERE s.id = vSale; CALL zone_getLanded(vShipped, vAddressFk, vAgencyModeFk, vWarehouseFk, TRUE); - + IF (SELECT COUNT(*) FROM tmp.zoneGetLanded LIMIT 1) = 0 THEN CALL util.throw('There is no zone for these parameters'); END IF; - + IF vLanded IS NULL OR vZoneFk IS NULL THEN - + UPDATE ticket t - SET t.landed = (SELECT landed FROM tmp.zoneGetLanded LIMIT 1) + SET t.landed = (SELECT landed FROM tmp.zoneGetLanded LIMIT 1) WHERE t.id = vTicketFk AND t.landed IS NULL; - + IF vZoneFk IS NULL THEN SELECT zoneFk INTO vZoneFk FROM tmp.zoneGetLanded LIMIT 1; UPDATE ticket t SET t.zoneFk = vZoneFk WHERE t.id = vTicketFk AND t.zoneFk IS NULL; END IF; - + END IF; - + DROP TEMPORARY TABLE tmp.zoneGetLanded; - - -- rellena la tabla buyUltimate con la ultima compra - CALL buyUltimate (vWarehouseFk, vShipped); - + + -- rellena la tabla buyUltimate con la ultima compra + CALL buyUltimate (vWarehouseFk, vShipped); + DELETE FROM tmp.buyUltimate WHERE itemFk != vItemFk; - + DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot + CREATE TEMPORARY TABLE tmp.ticketLot SELECT vWarehouseFk warehouseFk, NULL available, vItemFk itemFk, buyFk, vZoneFk zoneFk FROM tmp.buyUltimate WHERE itemFk = vItemFk; - - CALL catalog_componentPrepare(); + + CALL catalog_componentPrepare(); CALL catalog_componentCalculate(vZoneFk, vAddressFk, vShipped, vWarehouseFk); - + DROP TEMPORARY TABLE IF EXISTS tmp.sale; CREATE TEMPORARY TABLE tmp.sale (PRIMARY KEY (saleFk)) ENGINE = MEMORY SELECT vSale saleFk,vWarehouseFk warehouseFk; - + IF vOption IS NULL THEN SET vOption = IF(vIsEditable, 1, 6); END IF; - - CALL ticketComponentUpdateSale(vOption); + + CALL ticketComponentUpdateSale(vOption); CALL catalog_componentPurge(); - + DROP TEMPORARY TABLE tmp.buyUltimate; DROP TEMPORARY TABLE tmp.sale; - + END LOOP; - CLOSE vCur; + CLOSE vCur; END ;; DELIMITER ; @@ -76477,36 +65461,36 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sale_setQuantity`(vSaleFk INT, vQuantity INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_setQuantity`(vSaleFk INT, vQuantity INT) BEGIN /* * Actualiza la cantidad de la línea de venta - * + * * @vSaleFk id de la línea de venta * @vQuantity cantidad a modificar - * + * */ - + DECLARE vDescription VARCHAR(100); DECLARE vOrigin INT; - + SELECT CONCAT("Cambio cantidad ",concept," de ", quantity," a ", vQuantity) INTO vDescription - FROM sale + FROM sale WHERE id = vSaleFk; SELECT ticketFk INTO vOrigin FROM sale WHERE id = vSaleFk; CALL logAdd(vOrigin, 'update', 'ticket', vDescription); - - UPDATE sale + + UPDATE sale SET originalQuantity = quantity, quantity = vQuantity WHERE id = vSaleFk; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -76517,13 +65501,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sale_updateOriginalQuantity`(vSale INT, vQuantity INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_updateOriginalQuantity`(vSale INT, vQuantity INT) proc: BEGIN UPDATE vn.sale SET originalQuantity = vQuantity @@ -76541,17 +65525,17 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `saveLoadWorker`(routeFk INT, workerFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `saveLoadWorker`(routeFk INT, workerFk INT) BEGIN -REPLACE INTO vn.routeLoadWorker(routeFk, workerFk) +REPLACE INTO vn.routeLoadWorker(routeFk, workerFk) VALUES(routeFk,workerFk); END ;; @@ -76560,7 +65544,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `scanTreeCreate__` */; +/*!50003 DROP PROCEDURE IF EXISTS `sectorCollectionSaleGroup_add` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -76570,34 +65554,172 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `scanTreeCreate__`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `sectorCollectionSaleGroup_add`(vSaleGroupFk INT, vSectorCollectionFk INT) BEGIN - CALL nestTree( - 'vn2008', - 'scan', - 'vn2008', - 'scanTree' - ); - UPDATE vn2008.scanTree st - JOIN ( - SELECT sl.scan_id, - MAX(sl.odbc_date) lastScanned, - COUNT(DISTINCT t.routeFk) routeCount, - MIN(t.routeFk) mod 1000 as minRoute, - MAX(t.routeFk) mod 1000 as maxRoute, - COUNT(sl.scan_line_id) as scanned - FROM vn2008.scan_line sl - JOIN expedition e ON e.id = sl.`code` - JOIN ticket t ON t.id = e.ticketFk - WHERE t.routeFk - GROUP BY sl.scan_id - ) rs ON rs.scan_id = st.id - SET st.lastScanned = rs.lastScanned, - st.routeCount = rs.routeCount, - st.minRoute = rs.minRoute, - st.maxRoute = IF(rs.minRoute != rs.maxRoute, rs.maxRoute,NULL), - st.scanned = rs.scanned; + /** + * Inserta un nuevo registro en vn.sectorCollectionSaleGroup + * Actualiza el usuario en vn.saleGroup y reemplaza los registros de vn.saleTracking + * + * @param vSaleGroupFk Identificador de vn.saleGroup + * @param vSectorCollectionFk Identificador de vn.sectorCollection + */ + + REPLACE vn.sectorCollectionSaleGroup(sectorCollectionFk, saleGroupFk) + VALUES(vSectorCollectionFk, vSaleGroupFk); + + UPDATE vn.saleGroup sg + JOIN vn.sectorCollectionSaleGroup scsg ON scsg.saleGroupFk = sg.id + JOIN vn.sectorCollection sc ON sc.id = scsg.sectorCollectionFk + SET sg.userFk = sc.userFk + WHERE sg.id = vSaleGroupFk; + + + INSERT IGNORE vn.saleTracking(saleFk, + isChecked, + workerFk, + actionFk, + stateFk) + SELECT sgd.saleFk , + FALSE, + sc.userFk, + a.accion_id, + s.id + FROM vn.saleGroupDetail sgd + JOIN vn.sectorCollectionSaleGroup scsg ON scsg.saleGroupFk = sgd.saleGroupFk + JOIN vn.sectorCollection sc ON sc.id = scsg.sectorCollectionFk + JOIN vncontrol.accion a ON a.accion = 'SACAR' + JOIN vn.state s ON s.code = 'PREVIOUS_PREPARATION' + WHERE sgd.saleGroupFk = vSaleGroupFk; + + UPDATE vn.saleTracking st + JOIN vn.saleGroupDetail sgd ON sgd.saleFk = st.saleFk + SET st.isChecked = TRUE + WHERE sgd.saleGroupFk = vSaleGroupFk AND st.workerFk = 20; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `sectorCollection_get` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `sectorCollection_get`(vSectorFk INT) +BEGIN + + /** + * Devuelve las colecciones del sector que corresponden al usuario conectado, y que estan incompletas + * + * @param vSectorFk Identificador de vn.sector + */ + + SELECT DISTINCT sc.id collectionFk, sc.created + FROM vn.sectorCollection sc + JOIN vn.state s ON s.code = 'PREVIOUS_PREPARATION' + LEFT JOIN vn.sectorCollectionSaleGroup scsg ON scsg.sectorCollectionFk = sc.id + LEFT JOIN vn.saleGroupDetail sgd ON sgd.saleGroupFk = scsg.saleGroupFk + LEFT JOIN vn.saleTracking st ON st.saleFk = sgd.saleFk AND st.stateFk = s.id AND st.workerFk = sc.userFk + LEFT JOIN vn.sale sl ON sl.id = st.saleFk + WHERE sc.userFk = account.myUser_getId() + AND (ISNULL(scsg.sectorCollectionFk) + OR + (NOT st.isChecked AND sl.quantity > 0)) + AND sc.created > util.VN_CURDATE(); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `sectorCollection_getSale` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `sectorCollection_getSale`(vSelf INT) +BEGIN +/** + * Devuelve las lineas de venta correspondientes a esa coleccion de sector + * + * @param vSelf Identificador de vn.sectorCollection + */ + SELECT s.ticketFk, + s.itemFk, + i.longName, + itemPackingTypeFk, + subName, + s.quantity, + w.code workerCode, + sgd.saleFk, + iss.quantity pickedQuantity, + c.salesPersonFk + FROM vn.sale s + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.saleGroupDetail sgd ON sgd.saleFk = s.id + JOIN vn.sectorCollectionSaleGroup scsg ON scsg.saleGroupFk = sgd.saleGroupFk + JOIN vn.saleTracking st ON st.saleFk = s.id + JOIN vn.state stt ON stt.id = st.stateFk AND stt.code = 'PREVIOUS_PREPARATION' + JOIN vn.worker w ON w.id = st.workerFk + JOIN vn.ticket t ON t.id= s.ticketFk + JOIN vn.client c ON c.id=t.clientFk + LEFT JOIN vn.itemShelvingSaleSum iss ON iss.saleFk = s.id + WHERE scsg.sectorCollectionFk = vSelf; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `sectorCollection_new` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `sectorCollection_new`(vSectorFk INT) +BEGIN +/** + * Inserta una nueva colección, si el usuario no tiene ninguna vacia. + * Esto se hace para evitar que por error se generen colecciones sin sentido. + * + * @param vSectorFk Identificador de #vn.sector + */ + DECLARE hasEmptyCollections BOOL; + DECLARE vUserFk INT; + + SET vUserFk = account.myUser_getId(); + + SELECT (COUNT(sc.id) > 0) INTO hasEmptyCollections + FROM vn.sectorCollection sc + LEFT JOIN vn.sectorCollectionSaleGroup scsg ON scsg.sectorCollectionFk = sc.id + WHERE ISNULL(scsg.id) + AND sc.userFk = vUserFk + AND sc.sectorFk = vSectorFk + AND sc.created >= util.VN_CURDATE(); + + IF NOT hasEmptyCollections THEN + INSERT INTO vn.sectorCollection(userFk, sectorFk) + VALUES(vUserFk, vSectorFk); + END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -76610,44 +65732,81 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sectorProductivity_add`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `sectorProductivity_add`() BEGIN - DECLARE vDatedFrom DATETIME; DECLARE vDatedTo DATETIME; - - SELECT DATE_SUB(CURDATE(),INTERVAL 1 DAY), CONCAT(DATE_SUB(CURDATE(),INTERVAL 1 DAY),' 23:59:59') INTO vDatedFrom, vDatedTo; + + SELECT DATE_SUB(util.VN_CURDATE(),INTERVAL 1 DAY), CONCAT(DATE_SUB(util.VN_CURDATE(),INTERVAL 1 DAY),' 23:59:59') INTO vDatedFrom, vDatedTo; + + DROP TEMPORARY TABLE IF EXISTS tmp.timeControlCalculate; + DROP TEMPORARY TABLE IF EXISTS tmp.errorsByChecker; + DROP TEMPORARY TABLE IF EXISTS tmp.previousErrors; CALL timeControl_calculateAll(vDatedFrom, vDatedTo); - - INSERT INTO sectorProductivity(workerFk, firstName, lastName, sector, ticketCount, saleCount, volume, hourWorked, dated) - SELECT sub.*, SUM(wp.volume) volume, IFNULL(CAST(tc.timeWorkDecimal AS DECIMAL (10,2)) , 0) AS hourWorked, DATE(vDatedFrom) dated - FROM( - SELECT w.id workerFk, - w.firstName, - w.lastName, - se.description sector, - COUNT(DISTINCT t.id) ticketCount, - COUNT(st.saleFk) saleCount - FROM vn.saleTracking st - JOIN vn.worker w ON w.id = st.workerFk - JOIN vn.sale s ON s.id = st.saleFk - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.sector se ON se.id = i.sectorFk - JOIN vn.ticket t ON s.ticketFk = t.id - WHERE st.created > vDatedFrom - AND se.code IN ('ALGEMESI ARTIFI','COMPLEMENTOS') - GROUP BY w.id - ) sub - LEFT JOIN tmp.timeControlCalculate tc ON tc.userFk = sub.workerFk - LEFT JOIN bs.workerProductivity wp ON wp.workerFk = sub.workerFk - WHERE wp.dated = vDatedFrom - GROUP BY sub.workerFk; - + + CREATE TEMPORARY TABLE tmp.errorsByChecker + ENGINE = MEMORY + SELECT sc.userFk workerFk, COUNT(DISTINCT s.ticketFk) errorsByChecker + FROM saleMistake sm + JOIN vn.saleGroupDetail sgd on sgd.saleFk = sm.saleFk + JOIN vn.sectorCollectionSaleGroup scsg on scsg.saleGroupFk = sgd.saleGroupFk + JOIN vn.sectorCollection sc on sc.id = scsg.sectorCollectionFk + JOIN sale s ON s.id = sm.saleFk + JOIN ticket t on t.id = s.ticketFk + WHERE (t.shipped BETWEEN vDatedFrom AND vDatedTo) + GROUP BY sc.userFk ; + + CREATE TEMPORARY TABLE tmp.previousErrors -- Errores de previa, derivadores de los revisadores (por reclamación) + ENGINE = MEMORY + SELECT tt.workerFk, COUNT(c.ticketFk) errorsByClaim + FROM claimDevelopment cd + JOIN claim c ON cd.claimFk = c.id + JOIN ticket t ON c.ticketFk = t.id + JOIN claimResponsible cr ON cd.claimResponsibleFk = cr.id + JOIN ticketTracking tt ON tt.ticketFk = t.id + JOIN state s ON s.id = tt.stateFk + WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo AND cr.description = 'Revisadores' AND s.code = 'OK PREVIOUS' + GROUP BY workerFk; + + DELETE FROM sectorProductivity + WHERE dated = vDatedFrom + AND sector IN ('Algemesi Artificial','Algemesi Complementos'); + + INSERT INTO sectorProductivity(workerFk, firstName, lastName, sector, ticketCount, saleCount, error, volume, hourWorked, dated) + SELECT w.id workerFk, + w.firstName, + w.lastName, + se.description sector, + COUNT(DISTINCT s.ticketFk) ticketCount, + COUNT(sgd.id) saleCount, + IFNULL(ec2.errorsByChecker,0) + IFNULL(pe.errorsByClaim, 0) errors, + wp.volume, + IFNULL(CAST(tc.timeWorkDecimal AS DECIMAL (10,2)) , 0) AS hourWorked, + DATE(vDatedFrom) dated + FROM vn.saleGroupDetail sgd + JOIN vn.saleGroup sg on sg.id = sgd.saleGroupFk + JOIN vn.sectorCollectionSaleGroup scsg on scsg.saleGroupFk = sgd.saleGroupFk + JOIN vn.sectorCollection sc on sc.id = scsg.sectorCollectionFk + join vn.sector se on se.id = sc.sectorFk + JOIN vn.worker w ON w.id = sc.userFk + LEFT JOIN vn.sale s ON s.id = sgd.saleFk + LEFT JOIN tmp.timeControlCalculate tc ON tc.userFk = w.id + LEFT JOIN bs.workerProductivity wp ON wp.workerFk = w.id + LEFT JOIN vncontrol.accion a ON a.accion_id = wp.actionFk AND a.accion = 'PRESACAR' + LEFT JOIN tmp.errorsByChecker ec2 ON ec2.workerFk = w.id + LEFT JOIN tmp.previousErrors pe ON pe.workerFk = w.id + WHERE DATE(sc.created) = vDatedFrom + AND wp.dated = vDatedFrom + GROUP BY w.id; + + DROP TEMPORARY TABLE tmp.timeControlCalculate; + DROP TEMPORARY TABLE tmp.errorsByChecker; + DROP TEMPORARY TABLE tmp.previousErrors; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -76660,16 +65819,20 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sector_get`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `sector_get`() BEGIN - SELECT s.id,s.description,s.warehouseFk - FROM vn.sector s; - +/** + * Obtiene los sectores +*/ + + SELECT s.id,s.description,s.warehouseFk + FROM vn.sector s; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -76680,62 +65843,93 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sector_getWarehouse`(vSectorFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `sector_getWarehouse`(vSectorFk INT) BEGIN SELECT s.warehouseFk FROM vn.sector s WHERE s.id = vSectorFk; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `setPlacementReserve` */; +/*!50003 DROP PROCEDURE IF EXISTS `setParking` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `setPlacementReserve`(vItemFk INT, vPlacement VARCHAR(10), vWarehouseFk INT ) -BEGIN +CREATE DEFINER=`root`@`localhost` PROCEDURE `setParking`(IN `vParam` VARCHAR(8), IN `vParkingCode` VARCHAR(8)) +proc: BEGIN +/** + * Aparca una colección, un ticket, un saleGroup o un shelving en un parking + * + * @param vParam id del ticket, colección, saleGroup o shelving + * @param vParkingCode código del parking + */ + DECLARE vParkingFk INT; + DECLARE vIsSaleGroup BOOL; + DECLARE vIsTicket BOOL; + DECLARE vIsCollection BOOL; - DECLARE vReserve VARCHAR(10); - DECLARE vReserveOLD VARCHAR(10); - DECLARE vPlacementOLD VARCHAR(10); - - SELECT code, reserve INTO vPlacementOLD, vReserveOLD - FROM itemPlacement - WHERE itemFk = vItemFk - AND warehouseFk = vWarehouseFk; - - IF ASCII(vPlacement) > 57 THEN - - SET vReserve = vPlacement; - SET vPlacement = vPlacementOLD; - - ELSE - - SET vReserve = vReserveOLD; - + SET vParkingCode = replace(vParkingCode,' ',''); + + SELECT id INTO vParkingFk + FROM vn.parking + WHERE code = vParkingCode COLLATE utf8_unicode_ci; + + IF vParkingFk IS NULL THEN + CALL util.throw('parkingNotExist'); + LEAVE proc; END IF; - - REPLACE itemPlacement(itemFk, warehouseFk, code,reserve) - VALUES(vItemFk, vWarehouseFk, vPlacement, vReserve); + -- Se comprueba si es una preparación previa + SELECT COUNT(*) INTO vIsSaleGroup + FROM vn.saleGroup sg + WHERE sg.id = vParam; + IF vIsSaleGroup THEN + CALL vn.saleGroup_setParking(vParam, vParkingFk); + LEAVE proc; + END IF; + + -- Se comprueba si es un ticket + SELECT COUNT(*) INTO vIsTicket + FROM vn.ticket t + WHERE t.id = vParam + AND t.shipped >= TIMESTAMPADD(WEEK,-1,util.VN_CURDATE()); + + IF vIsTicket THEN + CALL vn.ticket_setParking(vParam, vParkingFk); + LEAVE proc; + END IF; + + -- Se comprueba si es una coleccion de tickets + SELECT COUNT(*) INTO vIsCollection + FROM vn.collection c + WHERE c.id = vParam + AND c.created >= TIMESTAMPADD(WEEK,-1,util.VN_CURDATE()); + + IF vIsCollection THEN + CALL vn.collection_setParking(vParam, vParkingFk); + LEAVE proc; + END IF; + + -- Por descarte, se considera una matrícula + CALL vn.shelving_setParking(vParam, vParkingFk); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -76746,199 +65940,20 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `shelvingChange`(IN `vShelvingO` VARCHAR(8), IN `vShelvingD` VARCHAR(8)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `shelvingChange`(IN `vShelvingO` VARCHAR(8), IN `vShelvingD` VARCHAR(8)) BEGIN UPDATE vn.itemShelving - SET shelvingFk = vShelvingD COLLATE utf8_unicode_ci - WHERE shelvingFk = vShelvingO COLLATE utf8_unicode_ci; - - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `shelvingFuture__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `shelvingFuture__`(vSectorFk INT) -BEGIN + SET shelvingFk = vShelvingD COLLATE utf8_unicode_ci + WHERE shelvingFk = vShelvingO COLLATE utf8_unicode_ci; - DECLARE vDone BOOL DEFAULT FALSE; - DECLARE vItemFk INT; - DECLARE vItemShelvingRest INT; - DECLARE vItemShelvingFk INT; - DECLARE vItemShelvingCreated DATE; - DECLARE vSaleRest INT; - DECLARE vSaleDated DATE; - DECLARE vWarehouseFk INT; - - DECLARE rsItem CURSOR FOR - SELECT DISTINCT itemFk - FROM vn.itemShelvingStock - WHERE sectorFk = vSectorFk - AND visible > 0; - DECLARE rsItemShelving CURSOR FOR - SELECT ish.id, - ish.visible, - date(ish.created) - FROM vn.itemShelving ish - JOIN vn.shelving sh ON sh.code = ish.shelvingFk - JOIN vn.parking p ON p.id = sh.parkingFk - WHERE ish.itemFk = vItemFk - AND ish.visible > 0 - AND p.sectorFk = vSectorFk - ORDER BY date(ish.created), ish.visible; - - DECLARE rsSale CURSOR FOR - SELECT - floor(sum(io.amount)) as sold, - date(io.dat) as dated - FROM vn2008.item_out io - LEFT JOIN tmp.ticketFree tf ON tf.ticketFk = io.ticketFk - WHERE (dat BETWEEN util.tomorrow() AND '2019-10-31' - OR - (dat BETWEEN CURDATE() AND util.dayEnd(CURDATE()) AND tf.ticketFk IS NOT NULL)) - AND item_id = vItemFk - AND io.warehouse_id = vWarehouseFk - GROUP BY dated; - - DECLARE CONTINUE HANDLER FOR NOT FOUND - SET vDone = TRUE; - - SELECT warehouseFk INTO vWarehouseFk - FROM vn.sector - WHERE id = vSectorFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketFree; - CREATE TEMPORARY TABLE tmp.ticketFree - SELECT ticket as ticketFk - FROM vn.ticketStateToday tst - JOIN vn.state s ON s.id = tst.state - WHERE s.isPicked = FALSE; - - DROP TEMPORARY TABLE IF EXISTS tmp.result; - CREATE TEMPORARY TABLE tmp.result - SELECT ish.id as itemShelvingFk, - date(ish.created) as created, - ish.visible, - 0 as reserve, - CAST('2019-10-31' AS DATE) as picked, - ish.shelvingFk, - 0 as Litros, - p.code as parkingCode - FROM vn.itemShelving ish - JOIN vn.shelving sh ON sh.code = ish.shelvingFk - JOIN vn.parking p ON p.id = sh.parkingFk - WHERE ish.visible > 0 - AND p.sectorFk = vSectorFk - ORDER BY date(ish.created), ish.visible; - - UPDATE tmp.result r - JOIN (SELECT ish.id, floor(sum(ish.visible * r.cm3) / 1000) as Litros - FROM vn.itemShelving ish - JOIN bi.rotacion r ON r.Id_Article = ish.itemFk AND r.warehouse_id = vWarehouseFk - GROUP BY ish.id) sub ON r.itemShelvingFk = sub.id - SET r.Litros = sub.Litros; - - ALTER TABLE tmp.result - ADD PRIMARY KEY (itemShelvingFk); - - OPEN rsItem; - - FETCH rsItem INTO vItemFk; - - -- TRUNCATE tmp.log; - - WHILE NOT vDone DO - - OPEN rsItemShelving; - OPEN rsSale; - - FETCH rsSale INTO vSaleRest, vSaleDated; - FETCH rsItemShelving INTO vItemShelvingFk, vItemShelvingRest, vItemShelvingCreated; - /* - INSERT INTO tmp.log(vItemFk, vItemShelvingRest, vSaleRest, vSalePicked,ifSide) - VALUES (vItemFk, vItemShelvingRest, vSaleRest, vSaleDated, '0'); - */ - bucle: LOOP - - IF vDone THEN - - LEAVE bucle; - - END IF; - - IF vSaleRest >= vItemShelvingRest THEN - /* - INSERT INTO tmp.log(vItemFk, vItemShelvingRest, vSaleRest, vSalePicked,ifSide) - VALUES (vItemFk, vItemShelvingRest, vSaleRest, vSaleDated, '1'); - */ - SET vSaleRest = vSaleRest - vItemShelvingRest; - - UPDATE tmp.result - SET reserve = reserve + vItemShelvingRest, - picked = LEAST(picked, vSaleDated) - WHERE itemShelvingFk = vItemShelvingFk; - - FETCH rsItemShelving INTO vItemShelvingFk, vItemShelvingRest, vItemShelvingCreated; - - IF vSaleRest = 0 THEN - - FETCH rsSale INTO vSaleRest, vSaleDated; - - END IF; - - ELSE - /* - INSERT INTO tmp.log(vItemFk, vItemShelvingRest, vSaleRest, vSalePicked,ifSide) - VALUES (vItemFk, vItemShelvingRest, vSaleRest, vSaleDated, '2'); - */ - SET vItemShelvingRest = vItemShelvingRest - vSaleRest; - - UPDATE tmp.result - SET reserve = reserve + vSaleRest, - picked = LEAST(picked, vSaleDated) - WHERE itemShelvingFk = vItemShelvingFk; - - FETCH rsSale INTO vSaleRest, vSaleDated; - - END IF; - - END LOOP; - - CLOSE rsItemShelving; - CLOSE rsSale; - /* - INSERT INTO tmp.log(vItemFk, vItemShelvingRest, vSaleRest, vSalePicked,ifSide) - VALUES (vItemFk, vItemShelvingRest, vSaleRest, vSaleDated, '4'); - */ - SET vDone = FALSE; - - FETCH rsItem INTO vItemFk; - - END WHILE; - - CLOSE rsItem; - - SELECT * FROM tmp.result - ORDER BY created, visible; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -76951,22 +65966,22 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `shelvingLog_get`(shelvingFk VARCHAR(10)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `shelvingLog_get`(shelvingFk VARCHAR(10)) BEGIN - + /* Lista el log de un carro - * + * * @param shelvingFk matrícula del carro - * + * */ - + SELECT originFk, name, creationDate, description FROM shelvingLog sl - JOIN user u ON u.id = sl.userFk + JOIN user u ON u.id = sl.userFk WHERE sl.originFk = shelvingFk COLLATE utf8_general_ci ORDER BY creationDate DESC; @@ -76980,108 +65995,136 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `shelvingPark`(IN `vParam` VARCHAR(8), IN `vParkingCode` VARCHAR(8)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `shelvingPark`(IN `vParam` VARCHAR(8), IN `vParkingCode` VARCHAR(8)) proc: BEGIN - /* Aparca una colección, un ticket, un saleGroup o un shelving en un parking - * - * @param vParam - * - */ +/* + * Aparca una colección, un ticket, un saleGroup o un shelving en un parking + * + * @param vParam id del ticket, colección, saleGroup o shelving + * @param vParkingCode código del parking + * + */ + DECLARE vParkingFk INT; - DECLARE vColumn VARCHAR(3); - DECLARE vRow VARCHAR(2); - DECLARE vReturn VARCHAR(50); - DECLARE vIsSaleGroup BOOL; - DECLARE vIsTicket BOOL; - DECLARE vIsCollection BOOL; - - SET vParkingCode = replace(vParkingCode,' ','') ; - + DECLARE vColumn VARCHAR(3); + DECLARE vRow VARCHAR(2); + DECLARE vReturn VARCHAR(50); + DECLARE vIsSaleGroup BOOL; + DECLARE vIsTicket BOOL; + DECLARE vIsCollection BOOL; + DECLARE vCollection INT DEFAULT NULL; + DECLARE vDone INT DEFAULT FALSE; + DECLARE vTicketFk INT; + DECLARE vCursor CURSOR FOR + SELECT IFNULL(tc2.ticketFk, t.id) + FROM ticket t + LEFT JOIN ticketCollection tc1 ON tc1.ticketFk = t.id + LEFT JOIN ticketCollection tc2 ON tc2.collectionFk = tc1.collectionFk + WHERE t.id = vParam; + + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + SET vParkingCode = replace(vParkingCode,' ','') ; + SELECT id INTO vParkingFk - FROM vn.parking - WHERE code = vParkingCode COLLATE utf8_unicode_ci; - - IF vParkingFk IS NULL THEN - + FROM vn.parking + WHERE code = vParkingCode COLLATE utf8_unicode_ci; + + IF vParkingFk IS NULL THEN + LEAVE proc; END IF; - + -- Se comprueba si es una preparación previa SELECT COUNT(*) INTO vIsSaleGroup - FROM vn.saleGroup sg + FROM vn.saleGroup sg WHERE sg.id = vParam; - + IF vIsSaleGroup THEN - - UPDATE vn.saleGroup sg + + UPDATE vn.saleGroup sg SET sg.parkingFk = vParkingFk WHERE sg.id = vParam - AND sg.created >= TIMESTAMPADD(WEEK,-1,CURDATE()); - - CALL vn.ticket_setPreviousState(vn.ticket_get(vParam)); - + AND sg.created >= TIMESTAMPADD(WEEK,-1,util.VN_CURDATE()); + + CALL vn.ticket_setNextState(vn.ticket_get(vParam)); + LEAVE proc; - + END IF; -- Se comprueba si es un ticket SELECT COUNT(*) INTO vIsTicket FROM vn.ticket t WHERE t.id = vParam - AND t.shipped >= TIMESTAMPADD(WEEK,-1,CURDATE()); - - IF vIsTicket THEN - - REPLACE vn.ticketParking(ticketFk,parkingFk) - VALUES (vParam, vParkingFk); - - CALL vn.ticket_setPreviousState(vParam); - - LEAVE proc; - - END IF; + AND t.shipped >= TIMESTAMPADD(WEEK,-1,util.VN_CURDATE()); - -- Se comprueba si es una coleccion de tickets - SELECT COUNT(*) INTO vIsCollection - FROM vn.collection c + IF vIsTicket THEN + + INSERT INTO vn.ticketParking(ticketFk, parkingFk) + SELECT IFNULL(tc2.ticketFk, t.id), vParkingFk + FROM ticket t + LEFT JOIN ticketCollection tc1 ON tc1.ticketFk = t.id + LEFT JOIN ticketCollection tc2 ON tc2.collectionFk = tc1.collectionFk + WHERE t.id = vParam + ON DUPLICATE KEY UPDATE parkingFk = vParkingFk; + + OPEN vCursor; + l: LOOP + + FETCH vCursor INTO vTicketFk; + + IF vDone THEN + LEAVE l; + END IF; + + CALL vn.ticket_setNextState(vTicketFk); + + END LOOP; + + CLOSE vCursor; + + LEAVE proc; + + END IF; + + -- Se comprueba si es una coleccion de tickets + SELECT COUNT(*) INTO vIsCollection + FROM vn.collection c WHERE c.id = vParam - AND c.created >= TIMESTAMPADD(WEEK,-1,CURDATE()); - + AND c.created >= TIMESTAMPADD(WEEK,-1,util.VN_CURDATE()); + IF vIsCollection THEN - + REPLACE vn.ticketParking(ticketFk,parkingFk) SELECT tc.ticketFk, vParkingFk - FROM vn.ticketCollection tc + FROM vn.ticketCollection tc WHERE tc.collectionFk = vParam; - + LEAVE proc; - - END IF; - - -- Por descarte, se considera una matrícula - INSERT INTO vn.shelvingLog (originFk, userFk, action , description) - SELECT vParam, getUser(), 'update', CONCAT("Cambio parking ",vParam," de ", p.code," a ", vParkingCode) + + END IF; + + -- Por descarte, se considera una matrícula + INSERT INTO vn.shelvingLog (originFk, userFk, action , description) + SELECT vParam, account.myUser_getId(), 'update', CONCAT("Cambio parking ",vParam," de ", p.code," a ", vParkingCode) FROM parking p JOIN shelving s ON s.parkingFk = p.id WHERE s.code = vParam COLLATE utf8_unicode_ci; - + UPDATE vn.shelving - SET parkingFk = vParkingFk, parked = NOW(), isPrinted = 1 + SET parkingFk = vParkingFk, parked = util.VN_NOW(), isPrinted = TRUE WHERE `code` = vParam COLLATE utf8_unicode_ci; - - SELECT (COUNT(*) > 0) AS IsUpdated - FROM vn.shelving - WHERE parkingFk = vParkingFk - AND `code` = vParam COLLATE utf8_unicode_ci; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -77092,144 +66135,32 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `shelvingParking_get`(vShelvingFk VARCHAR(10), vWarehouseFk INT, vDayRange INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `shelvingParking_get`(vShelvingFk VARCHAR(10), vWarehouseFk INT, vDayRange INT) BEGIN - -SELECT s.itemFk, + +SELECT s.itemFk, s.concept, - CAST(SUM(s.quantity) AS DECIMAL(10,0)) as sinServir, - CAST(IFNULL(ist.visible,0) AS DECIMAL(10,0)) as aparcado + CAST(SUM(s.quantity) AS DECIMAL(10,0)) as sinServir, + CAST(IFNULL(ist.visible,0) AS DECIMAL(10,0)) as aparcado FROM vn.sale s LEFT JOIN vn.itemShelvingSale iss ON iss.saleFk = s.id JOIN vn.ticket t ON t.id = s.ticketFk LEFT JOIN vn.itemShelvingStock ist ON ist.itemFk = s.itemFk AND ist.warehouseFk = vWarehouseFk JOIN vn.itemShelving ish ON ish.itemFk = s.itemFk AND ish.shelvingFk = vShelvingFk COLLATE utf8_general_ci - WHERE t.shipped BETWEEN CURDATE() AND util.dayend(TIMESTAMPADD(DAY, GREATEST(0,vDayRange), CURDATE())) + WHERE t.shipped BETWEEN util.VN_CURDATE() AND util.dayend(TIMESTAMPADD(DAY, GREATEST(0,vDayRange), util.VN_CURDATE())) AND iss.saleFk IS NULL AND t.warehouseFk = vWarehouseFk GROUP BY s.itemFk HAVING sinServir > aparcado; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `shelvingPark__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `shelvingPark__`(IN `vParam` VARCHAR(8), IN `vParkingCode` VARCHAR(8)) -proc: BEGIN - /* Aparca una colección, un ticket, un saleGroup o un shelving en un parking - * - * @param vParam - * - */ - DECLARE vParkingFk INT; - DECLARE vColumn VARCHAR(3); - DECLARE vRow VARCHAR(2); - DECLARE vReturn VARCHAR(50); - DECLARE vIsSaleGroup BOOL; - DECLARE vIsTicket BOOL; - DECLARE vIsCollection BOOL; - - SET vParkingCode = replace(vParkingCode,' ','') ; - - SELECT id INTO vParkingFk - FROM vn.parking - WHERE code = vParkingCode COLLATE utf8_unicode_ci; - - IF vParkingFk IS NULL THEN - - LEAVE proc; - - END IF; - - -- Se comprueba si es una preparación previa - SELECT COUNT(*) INTO vIsSaleGroup - FROM vn.saleGroup sg - WHERE sg.id = vParam; - - IF vIsSaleGroup THEN - - UPDATE vn.saleGroup sg - SET sg.parkingFk = vParkingFk - WHERE sg.id = vParam - AND sg.created >= TIMESTAMPADD(WEEK,-1,CURDATE()); - - CALL vn.ticket_setPreviousState(vn.ticket_get(vParam)); - - LEAVE proc; - - END IF; - - -- Se comprueba si es un ticket - SELECT COUNT(*) INTO vIsTicket - FROM vn.ticket t - WHERE t.id = vParam - AND t.shipped >= TIMESTAMPADD(WEEK,-1,CURDATE()); - - IF vIsTicket THEN - - REPLACE vn.ticketParking(ticketFk,parkingFk) - VALUES (vParam, vParkingFk); - - CALL vn.ticket_setPreviousState(vParam); - - LEAVE proc; - - END IF; - - -- Se comprueba si es una coleccion de tickets - SELECT COUNT(*) INTO vIsCollection - FROM vn.collection c - WHERE c.id = vParam - AND c.created >= TIMESTAMPADD(WEEK,-1,CURDATE()); - - IF vIsCollection THEN - - REPLACE vn.ticketParking(ticketFk,parkingFk) - SELECT tc.ticketFk, vParkingFk - FROM vn.ticketCollection tc - WHERE tc.collectionFk = vParam; - - LEAVE proc; - - END IF; - - -- Por descarte, se considera una matrícula - INSERT INTO vn.shelvingLog (originFk, userFk, action , description) - SELECT vParam, getUser(), 'update', CONCAT("Cambio parking ",vParam," de ", p.code," a ", vParkingCode) - FROM parking p - JOIN shelving s ON s.parkingFk = p.id - WHERE s.code = vParam COLLATE utf8_unicode_ci; - - UPDATE vn.shelving - SET parkingFk = vParkingFk, parked = NOW(), isPrinted = 1 - WHERE `code` = vParam COLLATE utf8_unicode_ci; - - SELECT (COUNT(*) > 0) AS IsUpdated - FROM vn.shelving - WHERE parkingFk = vParkingFk - AND `code` = vParam COLLATE utf8_unicode_ci; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -77242,11 +66173,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `shelvingPriority_update`(priority INT,vShelvingFk VARCHAR(10)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `shelvingPriority_update`(priority INT,vShelvingFk VARCHAR(10)) BEGIN UPDATE vn.shelving SET priority = priority WHERE code=vShelvingFk COLLATE utf8_unicode_ci; @@ -77261,37 +66192,38 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `shelving_clean`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `shelving_clean`() BEGIN DELETE FROM vn.shelving WHERE length(code) > 3 - AND parked < TIMESTAMPADD(WEEK,-1,CURDATE()); - - DELETE FROM vn.itemShelving + AND parked < TIMESTAMPADD(WEEK,-1,util.VN_CURDATE()); + + DELETE FROM vn.itemShelving WHERE visible <= 0 - AND created < TIMESTAMPADD(MONTH,-1,CURDATE()); - - DELETE ish.* + AND created < TIMESTAMPADD(MONTH,-1,util.VN_CURDATE()); + + DELETE ish.* FROM vn.itemShelving ish JOIN vn.shelving sh ON sh.code = ish.shelvingFk - WHERE sh.parkingFk IS NULL - AND ish.created < TIMESTAMPADD(WEEK,-1,CURDATE()); + WHERE sh.parkingFk IS NULL + AND ish.created < TIMESTAMPADD(WEEK,-1,util.VN_CURDATE()); UPDATE vn.shelving sh LEFT JOIN vn.itemShelving its ON its.shelvingFk = sh.`code` - SET isPrinted = 0, + SET isPrinted = 0, parkingFk = NULL - WHERE its.id IS NULL - AND ( sh.parked IS NULL - OR - sh.parked < TIMESTAMPADD(MONTH,-1,CURDATE()) + WHERE its.id IS NULL + AND sh.isRecyclable + AND ( sh.parked IS NULL + OR + sh.parked < TIMESTAMPADD(MONTH,-1,util.VN_CURDATE()) ); END ;; @@ -77304,35 +66236,36 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `shelving_getSpam`(vDated DATE, vWarehouseFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `shelving_getSpam`(vDated DATE, vWarehouseFk INT) BEGIN - - /* Devuelve las matrículas con productos que no son necesarios para la venta hasta la fecha señalada - * + + /** + * Devuelve las matrículas con productos que no son necesarios para la venta hasta la fecha señalada + * * @param vDated Fecha hasta la que se puede pasar sin esos productos. * @param vWarehouse Identificador único de vn.warehouse */ - + DROP TEMPORARY TABLE IF EXISTS tmp.stock; CALL cache.stock_refresh(FALSE); CREATE TEMPORARY TABLE tmp.stock - SELECT i.id itemFk, - v.amount - IFNULL(fue.reserva,0) as visible, - fue.reserva, - sale.venta, - IFNULL(buy.compra,0) + IFNULL(mov.traslado,0) as compra, + SELECT i.id itemFk, + v.amount - IFNULL(fue.reserva,0) as visible, + fue.reserva, + sale.venta, + IFNULL(buy.compra,0) + IFNULL(mov.traslado,0) as compra, IFNULL(v.amount,0) + IFNULL(sale.venta,0) + IFNULL(buy.compra,0) + IFNULL(mov.traslado,0) - IFNULL(fue.reserva,0) as saldo - FROM vn.item i - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk + FROM vn.item i + JOIN vn.itemType it ON it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk LEFT JOIN ( SELECT ish.itemFk, CAST(SUM(ish.visible) AS DECIMAL(10,0)) AS reserva FROM vn.itemShelving ish @@ -77341,20 +66274,20 @@ BEGIN JOIN vn.sector s ON s.id = p.sectorFk WHERE s.code = 'FUENTES_PICASSE' OR sh.isSpam - GROUP BY ish.itemFk + GROUP BY ish.itemFk ) fue ON fue.itemFk = i.id LEFT JOIN cache.stock v ON i.id = v.item_id AND v.warehouse_id = vWarehouseFk LEFT JOIN ( SELECT item_id, CAST(sum(amount)AS DECIMAL(10,0)) as venta FROM vn2008.item_out - WHERE dat BETWEEN CURDATE() AND util.dayend(vDated) + WHERE dat BETWEEN util.VN_CURDATE() AND util.dayend(vDated) AND warehouse_id = vWarehouseFk GROUP BY item_id ) sale ON sale.item_id = i.id LEFT JOIN ( SELECT item_id, CAST(sum(amount)AS DECIMAL(10,0)) as compra FROM vn2008.item_entry_in - WHERE dat BETWEEN CURDATE() AND util.dayend(vDated) + WHERE dat BETWEEN util.VN_CURDATE() AND util.dayend(vDated) AND warehouse_id = vWarehouseFk AND isVirtualStock = FALSE GROUP BY item_id @@ -77362,32 +66295,32 @@ BEGIN LEFT JOIN ( SELECT item_id, CAST(sum(amount)AS DECIMAL(10,0)) as traslado FROM vn2008.item_entry_out - WHERE dat BETWEEN CURDATE() AND util.dayend(vDated) + WHERE dat BETWEEN util.VN_CURDATE() AND util.dayend(vDated) AND warehouse_id = vWarehouseFk GROUP BY item_id ) mov ON mov.item_id = i.id WHERE v.amount; - - SELECT ish.shelvingFk matricula, + + SELECT ish.shelvingFk matricula, i.longName articulo, ish.visible, - count(*) lineas, - sum(ish.visible <= s.saldo) spam, + count(*) lineas, + sum(ish.visible <= s.saldo) spam, p.code parking, - s.description sector , + s.description sector , w.name AS almacen, sh.isSpam - FROM vn.itemShelving ish + FROM vn.itemShelving ish JOIN vn.item i ON i.id = ish.itemFk - JOIN vn.shelving sh ON sh.code = ish.shelvingFk - JOIN vn.parking p ON p.id = sh.parkingFk - JOIN vn.sector s ON s.id = p.sectorFk - JOIN vn.warehouse w ON w.id = s.warehouseFk - LEFT JOIN tmp.stock s ON s.itemFk = ish.itemFk - WHERE (w.name = 'Algemesi' - OR (w.name = 'NuncaJamas' AND ish.created < curdate())) - AND ish.visible - GROUP BY ish.shelvingFk + JOIN vn.shelving sh ON sh.code = ish.shelvingFk + JOIN vn.parking p ON p.id = sh.parkingFk + JOIN vn.sector s ON s.id = p.sectorFk + JOIN vn.warehouse w ON w.id = s.warehouseFk + LEFT JOIN tmp.stock s ON s.itemFk = ish.itemFk + WHERE (w.name = 'Algemesi' + OR (w.name = 'NuncaJamas' AND ish.created < util.VN_CURDATE())) + AND ish.visible + GROUP BY ish.shelvingFk HAVING lineas = spam OR isSpam; DROP TEMPORARY TABLE tmp.stock; @@ -77398,133 +66331,33 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `silla_algemesi__` */; +/*!50003 DROP PROCEDURE IF EXISTS `shelving_setParking` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `silla_algemesi__`(vDate DATE, vItemFk INT, vQuantity INT) -BEGIN +CREATE DEFINER=`root`@`localhost` PROCEDURE `shelving_setParking`(IN `vShelvingCode` VARCHAR(8), IN `vParkingFk` INT) +proc: BEGIN +/** + * Aparca una matrícula en un parking + * + * @param vShelvingCode code de la matrícula + * @param vParkingFk id del parking + */ + INSERT INTO vn.shelvingLog (originFk, userFk, action , description) + SELECT vShelvingCode, account.myUser_getId(), 'update', CONCAT("Cambio parking ",vShelvingCode," de ", p.code," a ", vParkingFk) + FROM parking p + JOIN shelving s ON s.parkingFk = p.id + WHERE s.code = vShelvingCode COLLATE utf8_unicode_ci; -DECLARE done INT DEFAULT FALSE; -DECLARE vWarehouseFk INT DEFAULT 60; -DECLARE vTicketFk INT; -DECLARE vSaleFk INT; -DECLARE vClonTicket INT DEFAULT 0; -DECLARE i INT DEFAULT 0; - -DECLARE cur1 CURSOR FOR - select distinct s.ticketFk, s.id - from vn.sale s - join vn.ticket t ON t.id = s.ticketFk - left join vn.ticketStateToday tss ON tss.ticket = t.id - join vn.itemShelving ish ON ish.itemFk = s.itemFk - join vn.shelving sh ON sh.code = ish.shelvingFk - join vn.parking p ON p.id = sh.parkingFk - where t.shipped between vDate and util.dayend(vDate) - and p.sectorFk = 37 - and left(t.nickname,1) != '-' - and t.warehouseFk = 1 - and s.quantity mod ish.packing = 0 - and vItemFk IN (0,s.itemFk) - and IFNULL(tss.alertLevel,0) = 0 - and s.quantity >= ish.packing - and s.quantity >= vQuantity - and s.itemFk NOT IN (1, 130, 60002, 1778, 3899); - - -DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - -OPEN cur1; - -FETCH cur1 INTO vTicketFk, vSaleFk; - - WHILE done = 0 DO - - SELECT t.id INTO vClonTicket - FROM vn.ticket t - JOIN (SELECT t.addressFk, t.shipped - FROM vn.ticket t - LEFT JOIN vn.ticketStateToday tss ON tss.ticket = t.id - WHERE id = vTicketFk - and IFNULL(tss.alertLevel,0) = 0 ) sub USING(addressFk, shipped) - WHERE t.warehouseFk = vWarehouseFk - LIMIT 1; - - -- SELECT vTicketFk, vClonTicket; - - IF vClonTicket = 0 THEN - - INSERT INTO ticket ( - clientFk, - shipped, - addressFk, - agencyModeFk, - nickname, - warehouseFk, - companyFk, - landed, - zoneFk, - zonePrice, - zoneBonus, - routeFk - ) - SELECT - clientFk, - shipped, - addressFk, - agencyModeFk, - nickname, - vWarehouseFk, - companyFk, - landed, - zoneFk, - zonePrice, - zoneBonus, - routeFk - - FROM ticket - WHERE id = vTicketFk; - - SET vClonTicket = LAST_INSERT_ID(); - - -- SELECT 'lstID', vClonTicket; - - INSERT IGNORE INTO ticketObservation(ticketFk, observationTypeFk, description) - SELECT vClonTicket, ao.observationTypeFk, ao.description - FROM addressObservation ao - JOIN ticket t ON t.addressFk = ao.addressFk - WHERE t.id = vTicketFk; - - INSERT IGNORE INTO ticketLog - SET originFk = vClonTicket, userFk = account.myUser_getId(), `action` = 'insert', - description = CONCAT('Ha creado el ticket:', ' ', vClonTicket, ' clonando el ', vTicketFk); - - END IF; - - UPDATE vn.sale - SET ticketFk = vClonTicket - WHERE id = vSaleFk; - -- SELECT vTicketFk, vClonTicket; - - SET vClonTicket = 0; - - SET done = 0; - FETCH cur1 INTO vTicketFk, vSaleFk; - - SET i = i + 1; - - END WHILE; - - CLOSE cur1; - - SELECT i; - + UPDATE vn.shelving + SET parkingFk = vParkingFk, parked = util.VN_NOW(), isPrinted = TRUE + WHERE code = vShelvingCode COLLATE utf8_unicode_ci; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -77535,13 +66368,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `sleep_X_min`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `sleep_X_min`() BEGIN # Ernesto. 4.8.2020 # Para su uso en las tareas ejecutadas a las 2AM (visibles con: SELECT * FROM bs.nightTask order by started asc;) @@ -77554,31 +66387,31 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `solunionRiskRequest` */; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `solunionRiskRequest`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `solunionRiskRequest`() BEGIN - + DROP TEMPORARY TABLE IF EXISTS tmp.client_list; CREATE TEMPORARY TABLE tmp.client_list (PRIMARY KEY (Id_Cliente)) ENGINE = MEMORY - SELECT * FROM (SELECT cc.client Id_Cliente, ci.grade FROM vn.creditClassification cc + SELECT * FROM (SELECT cc.client Id_Cliente, ci.grade FROM vn.creditClassification cc JOIN vn.creditInsurance ci ON cc.id = ci.creditClassification WHERE dateEnd IS NULL - ORDER BY ci.creationDate DESC) t1 GROUP BY Id_Cliente; - - CALL vn2008.risk_vs_client_list(CURDATE()); - - SELECT + ORDER BY ci.creationDate DESC + LIMIT 10000000000000000000) t1 GROUP BY Id_Cliente; + + CALL vn2008.risk_vs_client_list(util.VN_CURDATE()); + + SELECT c.Id_Cliente, c.Cliente, c.Credito credito_vn, c.creditInsurance solunion, cast(r.risk as DECIMAL(10,0)) riesgo_vivo, cast(c.creditInsurance - r.risk as decimal(10,0)) margen_vivo, f.Consumo consumo_anual, c.Vencimiento, ci.grade @@ -77588,7 +66421,7 @@ BEGIN JOIN tmp.client_list ci ON c.Id_Cliente = ci.Id_Cliente JOIN bi.facturacion_media_anual f ON c.Id_Cliente = f.Id_Cliente GROUP BY Id_cliente; - + DROP TEMPORARY TABLE IF EXISTS tmp.risk; DROP TEMPORARY TABLE IF EXISTS tmp.client_list; END ;; @@ -77597,173 +66430,101 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -/*!50003 DROP PROCEDURE IF EXISTS `stockBuyed` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `stockBuyed`(vDate DATE) -BEGIN - DECLARE vVolume DECIMAL(10,2); - DECLARE vWarehouse INT DEFAULT 7; - DECLARE vRuben INT; - DECLARE vClaudi INT; - DECLARE vJose INT; - - SELECT w.id INTO vRuben - FROM vn.worker w - WHERE w.code = 'RET'; - - SELECT w.id INTO vClaudi - FROM vn.worker w - WHERE w.code = 'CSR'; - - SELECT w.id INTO vJose - FROM vn.worker w - WHERE w.code = 'ATJ'; - - CALL stockTraslation(vDate); - - -- SELECT Volumen INTO vVolume FROM vn2008.Cubos WHERE Id_Cubo = 'cc' LIMIT 1; - - INSERT INTO stockBuyed(user, buyed, `date`) - SELECT tr.user_id, SUM(( amount / c.packing ) * vn.buy_getVolume(Id_Compra)) / vc.palletM3 / 1000000 buyed, vDate - FROM tmp_item i - JOIN vn2008.Articles a ON a.Id_Article = i.item_id - JOIN vn2008.Tipos t ON a.tipo_id = t.tipo_id - JOIN vn2008.reinos r ON r.id = t.reino_id - JOIN vn2008.Trabajadores tr ON tr.Id_Trabajador = t.Id_Trabajador - JOIN vn2008.t_item_last_buy ilb ON ilb.item_id = Id_Article AND ilb.warehouse_id = vWarehouse - JOIN vn2008.Compres c ON c.Id_compra = ilb.buy_id - JOIN vn.volumeConfig vc - WHERE r.display <> 0 - GROUP BY tr.Id_Trabajador - ON DUPLICATE KEY UPDATE buyed = VALUES(buyed); - - INSERT INTO stockBuyed(USER, buyed, `date`) - SELECT vRuben, @amount := SUM(ic.cm3 * io.amount / vc.palletM3 / 1000000), vDate - FROM vn2008.item_out io - JOIN vn.itemCost ic ON ic.itemFk = io.item_id AND ic.warehouseFk = vWarehouse - JOIN vn.ticket t ON t.id = io.ticketFk - JOIN vn.address a ON a.id = t.addressFk - JOIN vn.province p ON p.id = a.provinceFk - JOIN vn.country c ON c.id = p.countryFk - JOIN vn.volumeConfig vc - WHERE dat = vDate - AND warehouse_id = vWarehouse - AND c.country = 'Francia' - ON DUPLICATE KEY UPDATE buyed = buyed + @amount; - - INSERT INTO stockBuyed(USER, buyed, `date`) - SELECT vJose, @amount := SUM(ic.cm3 * io.amount / vc.palletM3 / 1000000), vDate - FROM vn2008.item_out io - JOIN vn.itemCost ic ON ic.itemFk = io.item_id AND ic.warehouseFk = vWarehouse - JOIN vn.ticket t ON t.id = io.ticketFk - JOIN vn.address a ON a.id = t.addressFk - JOIN vn.province p ON p.id = a.provinceFk - JOIN vn.country c ON c.id = p.countryFk - JOIN vn.volumeConfig vc - WHERE dat = vDate - AND warehouse_id = vWarehouse - AND c.country = 'Holanda' - ON DUPLICATE KEY UPDATE buyed = buyed + @amount; - - INSERT INTO stockBuyed(USER, buyed, `date`) - SELECT vClaudi, @amount := SUM(ic.cm3 * io.amount / vc.palletM3 / 1000000), vDate - FROM vn2008.item_out io - JOIN vn.itemCost ic ON ic.itemFk = io.item_id AND ic.warehouseFk = vWarehouse - JOIN vn.ticket t ON t.id = io.ticketFk - JOIN vn.address a ON a.id = t.addressFk - JOIN vn.province p ON p.id = a.provinceFk - JOIN vn.country c ON c.id = p.countryFk - JOIN vn.volumeConfig vc - WHERE dat BETWEEN vDate AND util.dayend(vDate) - AND warehouse_id = vWarehouse - AND c.country NOT IN ('Francia','Holanda') - ON DUPLICATE KEY UPDATE buyed = buyed + @amount; - - DROP TEMPORARY TABLE - vn2008.t_item_last_buy, - tmp_item; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `stockBuyedByWorker` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `stockBuyedByWorker`(vDate DATE, vWorker INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `stockBuyedByWorker`(vDate DATE, vWorker INT) BEGIN - - DECLARE vVolume DECIMAL(10,2); - DECLARE vWarehouse INT DEFAULT 7; - CALL stockTraslation(vDate); - - SELECT Volumen INTO vVolume FROM vn2008.Cubos WHERE Id_Cubo = 'cc' LIMIT 1; - - SELECT c.Id_Entrada, a.Id_Article, a.Article, i.amount Cantidad, (0.6 * ( i.amount / c.packing ) * vn.buy_getVolume(Id_Compra))/vVolume buyed - FROM tmp_item i - JOIN vn2008.Articles a ON a.Id_Article = i.item_id - JOIN vn2008.Tipos t ON a.tipo_id = t.tipo_id - JOIN vn2008.reinos r ON r.id = t.reino_id + + DECLARE vVolume DECIMAL(10,2); + DECLARE vWarehouse INT DEFAULT 7; + CALL stockTraslation(vDate); + + SELECT Volumen INTO vVolume FROM vn2008.Cubos WHERE Id_Cubo = 'cc' LIMIT 1; + + SELECT c.Id_Entrada, a.Id_Article, a.Article, i.amount Cantidad, (0.6 * ( i.amount / c.packing ) * vn.buy_getVolume(Id_Compra))/vVolume buyed + FROM tmp_item i + JOIN vn2008.Articles a ON a.Id_Article = i.item_id + JOIN vn2008.Tipos t ON a.tipo_id = t.tipo_id + JOIN vn2008.reinos r ON r.id = t.reino_id JOIN vn2008.Trabajadores tr ON tr.Id_Trabajador = t.Id_Trabajador - JOIN vn2008.t_item_last_buy ilb ON ilb.item_id = a.Id_Article AND ilb.warehouse_id = vWarehouse - JOIN vn2008.Compres c ON c.Id_compra = ilb.buy_id - WHERE r.display <> 0 AND tr.user_id = vWorker; - - DROP TEMPORARY TABLE - vn2008.t_item_last_buy, - tmp_item; + JOIN tmp.buyUltimate bu ON bu.itemFk = a.Id_Article AND bu.warehouseFk = vWarehouse + JOIN vn2008.Compres c ON c.Id_compra = bu.buyFk + WHERE r.display <> 0 AND tr.user_id = vWorker; + + DROP TEMPORARY TABLE + tmp.buyUltimate, + tmp_item; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `stockBuyedByWorkerTest__` */; +/*!50003 DROP PROCEDURE IF EXISTS `stockBuyed_add` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `stockBuyedByWorkerTest__`(vDate DATE, vWorker INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `stockBuyed_add`(vDated DATE) BEGIN - - DECLARE vVolume DECIMAL(10,2); - DECLARE vWarehouse INT DEFAULT 7; - CALL stockTraslationTest(vDate); - - SELECT Volumen INTO vVolume FROM vn2008.Cubos WHERE Id_Cubo = 'cc' LIMIT 1; - - SELECT c.Id_Entrada, a.Id_Article, a.Article, i.amount Cantidad, (0.6 * ( i.amount / c.packing ) * vn.buy_getVolume(Id_Compra))/vVolume buyed - FROM tmp.item i - JOIN vn2008.Articles a ON a.Id_Article = i.item_id - JOIN vn2008.Tipos t ON a.tipo_id = t.tipo_id - JOIN vn2008.reinos r ON r.id = t.reino_id - JOIN vn2008.Trabajadores tr ON tr.Id_Trabajador = t.Id_Trabajador - JOIN vn2008.t_item_last_buy ilb ON ilb.item_id = a.Id_Article AND ilb.warehouse_id = vWarehouse - JOIN vn2008.Compres c ON c.Id_compra = ilb.buy_id - WHERE r.display <> 0 AND tr.user_id = vWorker; - DROP TEMPORARY TABLE IF EXISTS tmp_item; +/** + * Inserta el volumen de compra por comprador en vn.stockBuyed de acuerdo con la fecha + * + * @param vDated Fecha de compra + */ + CALL vn.stockTraslation(vDated); + + DELETE + FROM vn.stockBuyed + WHERE `date` = vDated; + + INSERT INTO vn.stockBuyed(`user`, buyed, `date`, description) + SELECT it.workerFk, + SUM(( ti.amount / b.packing ) * vn.buy_getVolume(b.id)) / vc.palletM3 / 1000000 buyed, + vDated, + u.name + FROM tmp_item ti + JOIN vn.item i ON i.id = ti.item_id + JOIN vn.itemType it ON it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + JOIN vn.warehouse wh ON wh.code = 'VNH' + JOIN tmp.buyUltimate bu ON bu.itemFk = i.id AND bu.warehouseFk = wh.id + JOIN vn.buy b ON b.id = bu.buyFk + JOIN vn.volumeConfig vc + JOIN account.`user` u ON u.id = it.workerFk + WHERE ic.display != 0 + GROUP BY it.workerFk; + + INSERT INTO stockBuyed(buyed, `date`, description) + SELECT SUM(ic.cm3 * ito.quantity / vc.palletM3 / 1000000), vDated, IF(c.country = 'España',p.name,c.country) destiny + FROM vn.itemTicketOut ito + JOIN vn.ticket t ON t.id = ito.ticketFk + JOIN vn.address a ON a.id = t.addressFk + JOIN vn.province p ON p.id = a.provinceFk + JOIN vn.country c ON c.id = p.countryFk + JOIN vn.warehouse wh ON wh.id = t.warehouseFk + JOIN vn.itemCost ic ON ic.itemFk = ito.itemFk AND ic.warehouseFk = t.warehouseFk + JOIN vn.volumeConfig vc + WHERE ito.shipped BETWEEN vDated AND util.dayend(vDated) + AND wh.code = 'VNH' + GROUP BY destiny; + + DROP TEMPORARY TABLE + tmp.buyUltimate, + tmp_item; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -77774,244 +66535,47 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `stockTraslation`(vDate DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `stockTraslation`(vDate DATE) BEGIN - /** - * Calcula el stock del vWarehouse desde FechaInventario hasta v_date - sin tener en cuenta las salidas del mismo dia vDate - para ver el transporte a reservar - **/ - - DECLARE vWarehouse INT DEFAULT 7; + /** + * Calcula el stock del vWarehouse desde FechaInventario hasta v_date + sin tener en cuenta las salidas del mismo dia vDate + para ver el transporte a reservar + **/ - DELETE FROM stockBuyed WHERE `date` = vDate; - - DROP TEMPORARY TABLE IF EXISTS tmp_item; - CREATE TEMPORARY TABLE tmp_item - (UNIQUE INDEX i USING HASH (item_id)) - ENGINE = MEMORY - SELECT item_id, SUM(amount) amount - FROM vn2008.item_entry_in - WHERE dat = vDate - AND vDate >= CURDATE() - AND warehouse_id = vWarehouse + DECLARE vWarehouse INT DEFAULT 7; + + DELETE FROM stockBuyed WHERE `date` = vDate; + + DROP TEMPORARY TABLE IF EXISTS tmp_item; + CREATE TEMPORARY TABLE tmp_item + (UNIQUE INDEX i USING HASH (item_id)) + ENGINE = MEMORY + SELECT item_id, SUM(amount) amount + FROM vn2008.item_entry_in + WHERE dat = vDate + AND vDate >= util.VN_CURDATE() + AND warehouse_id = vWarehouse AND isVirtualStock is FALSE - GROUP BY item_id - HAVING amount != 0; + GROUP BY item_id + HAVING amount != 0; CALL `cache`.stock_refresh (FALSE); - INSERT INTO tmp_item (item_id,amount) - SELECT item_id,s.amount - FROM `cache`.stock s - WHERE warehouse_id = vWarehouse - ON DUPLICATE KEY UPDATE - amount = tmp_item.amount + VALUES(amount); - - CALL vn2008.item_last_buy_(vWarehouse,vDate); + INSERT INTO tmp_item (item_id,amount) + SELECT item_id,s.amount + FROM `cache`.stock s + WHERE warehouse_id = vWarehouse + ON DUPLICATE KEY UPDATE amount = tmp_item.amount + VALUES(amount); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `stockTraslationTest__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `stockTraslationTest__`(vDate DATE) -BEGIN - /** - * Calcula el stock del vWarehouse desde FechaInventario hasta v_date - sin tener en cuenta las salidas del mismo dia vDate - para ver el transporte a reservar - **/ + CALL buyUltimate(vWarehouse,vDate); - DECLARE vWarehouse INT DEFAULT 7; - - DELETE FROM stockBuyed WHERE `date` = vDate; - DROP TEMPORARY TABLE IF EXISTS tmp.item; - - CREATE TEMPORARY TABLE tmp.item ( - `item_id` INT, - `amount` DECIMAL(10, 2) DEFAULT 0.00, - PRIMARY KEY(item_id) - ) ENGINE = MEMORY; - - - IF vDate >= CURDATE() THEN - INSERT INTO tmp.item - SELECT item_id, SUM(amount) amount - FROM vn2008.item_entry_in - WHERE dat = vDate - AND warehouse_id = vWarehouse - GROUP BY item_id HAVING amount != 0; - END IF; - - CALL `cache`.stock_refresh (FALSE); - - INSERT INTO tmp.item (item_id,amount) - SELECT item_id,s.amount FROM `cache`.stock s - WHERE warehouse_id = vWarehouse - ON DUPLICATE KEY UPDATE - amount = tmp.item.amount + VALUES(amount); - - CALL vn2008.item_last_buy_(vWarehouse,vDate); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `stowawayBoarding__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `stowawayBoarding__`(IN vShipFk INT, IN vStowawayFk INT) -BEGIN - - REPLACE stowaway(shipFk, id) - VALUES (vShipFk, vStowawayFk); - - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT id, vShipFk, myWorker_getId() - FROM state - WHERE code = 'BOARDING'; - - -- FIXME No crear ticket 98 - INSERT INTO sale(ticketFk, itemFk, quantity, concept) - VALUES(vShipFk, 98,1, CONCAT('POLIZÓN! ',vStowawayFk)); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `stowawayControl` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `stowawayControl`(vDated DATE) -BEGIN - - SELECT t.id ticketFV, - tst.code as stateFV, - sw.id ticketPCA, - w.code, - w.firstName, - w.lastName, - s.itemFk, - s.concept, - MAX(IF(s.isPicked,'OK',st.code)) situacion - FROM vn.ticket t - LEFT JOIN vn.ticketState tst ON tst.ticketFk = t.id - JOIN vn.stowaway sw ON sw.shipFk = t.id - LEFT JOIN vn.ticketCollection tc ON tc.ticketFk = t.id - LEFT JOIN vn.collection c ON c.id = tc.collectionFk - LEFT JOIN vn.worker w ON w.id = c.workerFk - JOIN vn.sale s ON s.ticketFk = sw.id - LEFT JOIN vn.saleTracking str ON str.saleFk = s.id AND str.isChecked = 1 - LEFT JOIN vn.state st ON st.id = str.stateFk AND st.code = 'PREPARED' - WHERE t.shipped BETWEEN vDated AND util.dayend(vDated) - GROUP BY s.id; - - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `stowaway_launchShip` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `stowaway_launchShip`(vStowawayFk INT) -BEGIN - - DECLARE myShipFk INT; - - SELECT shipFk INTO myShipFk - FROM vn.stowaway - WHERE id = vStowawayFk; - - IF myShipFk THEN - - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT id, myShipFk, account.myUser_getId() - FROM state - WHERE code = 'OK STOWAWAY'; - - END IF; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `stowaway_unboarding` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `stowaway_unboarding`(vShipFk INT, vStowawayFk INT) -BEGIN - DECLARE vWorker VARCHAR(255); - - DELETE FROM stowaway - WHERE shipFk = vShipFk AND id = vStowawayFk; - - DELETE tt FROM ticketTracking tt - JOIN state s ON s.id = tt.stateFk - WHERE code = 'BOARDING' AND ticketFk = vShipFk; - - DELETE FROM sale - WHERE ticketFk = vShipFk - AND itemFk = 98 - AND concept = CONCAT('POLIZÓN! ',vStowawayFk); - - SELECT u.`name` INTO vWorker - FROM account.user u JOIN worker w ON w.userFk = u.id - WHERE w.id = client_getSalesPersonByTicket(vStowawayFk); - - SELECT messageSend(vWorker,CONCAT('El ticket: ', vStowawayFk, ' ha dejado de ser un polizón')) INTO @a; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -78022,23 +66586,23 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `subordinateGetList`(vBossFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `subordinateGetList`(vBossFk INT) BEGIN -- deprecated usar vn.worker_GetHierarch DECLARE vBossId INT; DECLARE vDone BOOL; DECLARE workerCur CURSOR FOR - SELECT workerFk - FROM tmp.subordinate + SELECT workerFk + FROM tmp.subordinate WHERE NOT isChecked; - + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; DECLARE EXIT HANDLER FOR 1062 BEGIN @@ -78046,29 +66610,29 @@ BEGIN END; DROP TEMPORARY TABLE IF EXISTS tmp.subordinate; - + CREATE TEMPORARY TABLE tmp.subordinate (PRIMARY KEY (workerFk)) ENGINE = MEMORY SELECT vBossFk AS workerFk, 0 AS isChecked; - + WHILE (SELECT COUNT(*) FROM tmp.subordinate WHERE NOT isChecked) > 0 DO OPEN workerCur; workerLoop: LOOP SET vDone = FALSE; FETCH workerCur INTO vBossId; - + IF vDone THEN LEAVE workerLoop; END IF; - - INSERT INTO tmp.subordinate - SELECT id, 0 - FROM worker + + INSERT INTO tmp.subordinate + SELECT id, 0 + FROM worker WHERE bossFk = vBossId; - - UPDATE tmp.subordinate + + UPDATE tmp.subordinate SET isChecked = 1 WHERE workerFk = vBossId; END LOOP; @@ -78085,13 +66649,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `supplierExpenses`(vEnded DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `supplierExpenses`(vEnded DATE) BEGIN DROP TEMPORARY TABLE IF EXISTS openingBalance; @@ -78108,13 +66672,13 @@ BEGIN -- Calcula el balance inicial y final de cada proveedor INSERT INTO openingBalance SELECT MAX(dueDated), - supplierFk, - companyFk, + supplierFk, + companyFk, sum(amount) eurAmount, sum(divisa) foreignAmount FROM ( SELECT p.dueDated, - p.supplierFk, + p.supplierFk, p.companyFk, p.amount, p.divisa @@ -78130,7 +66694,7 @@ BEGIN SELECT iidd.dueDated, ii.supplierFk, ii.companyFk, - - iidd.amount, + - iidd.amount, - iidd.foreignValue FROM invoiceIn ii JOIN invoiceInDueDay iidd ON ii.id = iidd.invoiceInFk @@ -78138,14 +66702,14 @@ BEGIN JOIN company co ON co.id = ii.companyFk WHERE iidd.dueDated > '2014-12-31' AND iidd.dueDated <= vEnded - AND ii.isBooked AND co.`code` = 'VNL' + AND ii.isBooked AND co.`code` = 'VNL' AND c.`code` <> 'EUR' UNION ALL SELECT se.dueDated, se.supplierFk, se.companyFk, - - se.amount, + - se.amount, 0 FROM supplierExpense se JOIN currency c ON c.id = se.currencyFk @@ -78155,7 +66719,7 @@ BEGIN AND co.`code` = 'VNL' AND c.`code` <> 'EUR' ) sub GROUP BY companyFk, supplierFk; - + SELECT ob.dueDated , ob.supplierFk , ob.companyFk @@ -78179,11 +66743,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `supplierPackaging_ReportSource`(vFromDated DATE, vSupplierFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `supplierPackaging_ReportSource`(vFromDated DATE, vSupplierFk INT) BEGIN /** @@ -78193,20 +66757,141 @@ BEGIN * @param vSupplierFk Id del proveedor */ - SELECT * FROM ( - SELECT supplierFk, itemFk, longName, supplier, entryFk, landed, `out`, `in`, warehouse, buyingValue, (`in` - `out`) balance - FROM supplierPackaging - WHERE supplierFk = vSupplierFk - AND landed >= vFromDated - UNION ALL - SELECT vSupplierFk, itemFk, longName, supplier, 'anterior', vFromDated, sum(`out`), sum(`in`), NULL, buyingValue, (`in` - `out`) balance - FROM supplierPackaging - WHERE supplierFk = vSupplierFk - AND landed < vFromDated - GROUP BY itemFk - ) sub - WHERE `out` OR `in` - ORDER BY itemFk, landed; + DECLARE vCounter INT DEFAULT 0; + DECLARE vMaxRow INT DEFAULT 0; + DECLARE vItemFk INT DEFAULT 0; + SET @vRowNumber = 0; + SET @vBalance = 0; + + DROP TEMPORARY TABLE IF EXISTS tmp.supplierPackagingList; + CREATE TEMPORARY TABLE tmp.supplierPackagingList + SELECT itemFk, + @vRowNumber:= @vRowNumber + 1 `row` + FROM ( + SELECT * + FROM ( + SELECT supplierFk, + itemFk, + longName, + supplier, + entryFk, + landed, + `out`, + `in`, + warehouse, + buyingValue + FROM supplierPackaging + WHERE supplierFk = vSupplierFk + AND landed >= vFromDated + + UNION ALL + + SELECT vSupplierFk, + itemFk, + longName, + supplier, + 'previous', + vFromDated, + SUM(`out`), + SUM(`in`), + NULL, + buyingValue + FROM supplierPackaging + WHERE supplierFk = vSupplierFk + AND landed < vFromDated + GROUP BY itemFk) i + GROUP BY itemFk + ORDER BY landed) i2; + + SELECT MAX(`row`) + INTO vMaxRow + FROM tmp.supplierPackagingList; + + DROP TEMPORARY TABLE IF EXISTS tmp.supplierPackaging; + CREATE TEMPORARY TABLE tmp.supplierPackaging( + supplierFk INT, + itemFk INT, + longName VARCHAR(50), + supplier VARCHAR(50), + entryFk VARCHAR(50), + landed DATE, + `in` VARCHAR(50), + `out` VARCHAR(50), + warehouse INT, + buyingValue INT, + balance INT); + + l1: LOOP + + IF vCounter = vMaxRow THEN + LEAVE l1; + ELSE + SET vCounter = vCounter + 1; + SET @vBalance = 0; + END IF; + + SELECT itemFk + INTO vItemFk + FROM tmp.supplierPackagingList + WHERE `row` = vCounter; + + INSERT INTO tmp.supplierPackaging + SELECT supplierFk, + itemFk, + longName, + supplier, + entryFk, + landed, + `in`, + `out`, + warehouse, + buyingValue, + @vBalance:= (`in` - `out` + @vBalance) + FROM ( + SELECT supplierFk, + itemFk, + longName, + supplier, + entryFk, + landed, + `out`, + `in`, + warehouse, + buyingValue + FROM supplierPackaging + WHERE supplierFk = vSupplierFk + AND landed >= vFromDated + AND itemFk = vItemFk + + UNION ALL + + SELECT vSupplierFk, + itemFk, + longName, + supplier, + 'previous', + vFromDated, + SUM(`out`), + SUM(`in`), + NULL, + buyingValue + FROM supplierPackaging + WHERE supplierFk = vSupplierFk + AND landed < vFromDated + AND itemFk = vItemFk + GROUP BY itemFk + ) sub + WHERE `out` OR `in` + ORDER BY itemFk, landed; + + END LOOP l1; + + SELECT * FROM tmp.supplierPackaging; + + DROP TEMPORARY TABLE IF EXISTS tmp.supplierPackagingList; + DROP TEMPORARY TABLE IF EXISTS tmp.supplierPackaging; + SET @vRowNumber = 0; + SET @vBalance = 0; END ;; DELIMITER ; @@ -78220,11 +66905,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `supplier_checkBalance`(IN vDateTo DATETIME, IN vIsConciliated BOOL) +CREATE DEFINER=`root`@`localhost` PROCEDURE `supplier_checkBalance`(IN vDateTo DATETIME, IN vIsConciliated BOOL) BEGIN DECLARE vDateFrom DATE; @@ -78236,19 +66921,19 @@ BEGIN JOIN ( SELECT companyFk, supplierFk, ROUND(SUM(mysql),2) mysql, ROUND(SUM(sage),2) sage FROM ( SELECT companyFk, supplierFk, -SUM(iid.amount) as mysql, 0 sage FROM invoiceInDueDay iid - JOIN invoiceIn ii ON ii.id = iid.invoiceInFk + JOIN invoiceIn ii ON ii.id = iid.invoiceInFk WHERE IFNULL(ii.bookEntried, ii.issued) BETWEEN vDateFrom AND vDateTo AND ii.isBooked GROUP BY ii.id - UNION ALL + UNION ALL SELECT p.companyFk, p.supplierFk, p.amount, 0 FROM payment p JOIN payMethod pm ON pm.id = p.payMethodFk WHERE p.received BETWEEN vDateFrom AND vDateTo AND IF(vIsConciliated, p.isConciliated, TRUE) = TRUE AND NOT pm.code <=>'previousBalance' - UNION ALL - SELECT se.companyFk, se.supplierFk, - se.amount, 0 + UNION ALL + SELECT se.companyFk, se.supplierFk, - se.amount, 0 FROM supplierExpense se WHERE se.dated BETWEEN vDateFrom AND vDateTo AND IF(vIsConciliated, se.isConciliated, TRUE) = TRUE @@ -78269,7 +66954,37 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `test` */; +/*!50003 DROP PROCEDURE IF EXISTS `supplier_checkIsActive` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `supplier_checkIsActive`(vSelf INT) +BEGIN +/** + * Comprueba si un proveedor esta activo. + */ + DECLARE vIsActive BOOL; + + SELECT isActive INTO vIsActive + FROM vn.supplier + WHERE id = vSelf; + + IF NOT vIsActive THEN + CALL util.throw('INACTIVE_PROVIDER'); + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `supplier_disablePayMethodChecked` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -78279,7 +66994,43 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `test`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `supplier_disablePayMethodChecked`() +BEGIN + +/* + * Deshabilita la comprobación de los datos bancarios de todos aquellos proveedores que tengan + * un número que no sea 0 en el campo graceMonthsDisableChecked de la tabla vn.payMethod + * y que no hayan recibido un pago desde el mes indicado + */ + + UPDATE vn.supplier s + JOIN ( SELECT p.supplierFk + FROM vn.payment p + LEFT JOIN vn.supplier s ON s.id = p.supplierFk + LEFT JOIN vn.payMethod pm ON pm.id = s.payMethodFk + WHERE p.created < (util.VN_CURDATE() - INTERVAL pm.graceMonthsDisableChecked MONTH) + AND pm.graceMonthsDisableChecked + AND s.isPayMethodChecked + GROUP BY p.supplierFk) sdpmc ON sdpmc.supplierFk = s.id + SET s.isPayMethodChecked = FALSE; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `test` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `test`() BEGIN select 'procedimiento ejecutado con éxito'; END ;; @@ -78292,23 +67043,23 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketBoxesView`(IN vTicketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketBoxesView`(IN vTicketFk INT) BEGIN - - SELECT s.id, - s.itemFk, - s.concept, - floor(s.quantity / b.packing) as Cajas, - b.packing, - s.isPicked, + + SELECT s.id, + s.itemFk, + s.concept, + floor(s.quantity / b.packing) as Cajas, + b.packing, + s.isPicked, i.size - FROM ticket t + FROM ticket t JOIN sale s ON s.ticketFk = t.id JOIN item i ON i.id = s.itemFk JOIN cache.last_buy lb on lb.warehouse_id = t.warehouseFk AND lb.item_id = s.itemFk @@ -78319,7 +67070,7 @@ BEGIN AND p.isBox GROUP BY s.itemFk; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -78330,18 +67081,18 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketBuiltTime`(vDate DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketBuiltTime`(vDate DATE) BEGIN DECLARE vDateStart DATETIME DEFAULT DATE(vDate); DECLARE vDateEnd DATETIME DEFAULT util.dayEnd(vDate); - + DROP TEMPORARY TABLE IF EXISTS tmp.ticketBuiltTime; CREATE TEMPORARY TABLE tmp.ticketBuiltTime @@ -78354,20 +67105,21 @@ BEGIN SELECT ticketFk, builtTime FROM ( - SELECT + SELECT Id_Ticket as ticketFk, odbc_date as builtTime FROM vncontrol.inter WHERE odbc_date BETWEEN vDateStart AND vDateEnd ORDER BY Id_Ticket, odbc_date DESC - ) sub + LIMIT 10000000000000000000 + ) sub GROUP BY ticketFk ) sub2 ON sub2.ticketFk = t.id WHERE t.shipped BETWEEN vDate AND util.dayEnd(vDate) AND t.clientFk NOT IN (50,400,200) AND t.companyFk = 442 - + ; END ;; @@ -78382,11 +67134,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculateClon`(IN vTicketNew INT, vTicketOld INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketCalculateClon`(IN vTicketNew INT, vTicketOld INT) BEGIN /* * Recalcula los componentes un ticket clonado, @@ -78404,10 +67156,10 @@ BEGIN DECLARE vZoneFk INT; REPLACE INTO orderTicket(orderFk,ticketFk) - SELECT orderFk, vTicketNew - FROM orderTicket + SELECT orderFk, vTicketNew + FROM orderTicket WHERE ticketFk = vTicketOld; - + SELECT t.clientFk, t.warehouseFk, date(t.shipped), t.addressFk, t.agencyModeFk, t.landed, a.agencyFk, t.zoneFk INTO vClient, vWarehouse, vShipped, vAddress, vAgencyMode, vLanded, vAgency, vZoneFk FROM agencyMode a @@ -78417,47 +67169,47 @@ BEGIN IF vLanded IS NULL THEN CALL zone_getLanded(vShipped, vAddress, vAgency, vWarehouse, TRUE); UPDATE ticket t - JOIN tmp.zoneGetLanded zgl ON t.warehouseFk = zgl.warehouseFk + JOIN tmp.zoneGetLanded zgl ON t.warehouseFk = zgl.warehouseFk SET t.landed = zgl.landed, t.zoneFk = zgl.zoneFk WHERE t.id = vTicketNew; - + SELECT zoneFk INTO vZoneFk FROM tmp.zoneGetLanded LIMIT 1; DROP TEMPORARY TABLE IF EXISTS tmp.zoneGetLanded; END IF; -- rellena la tabla tmp.buyUltimate con la ultima compra - CALL buyUltimate(vWarehouse, vShipped); + CALL buyUltimate(vWarehouse, vShipped); DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot + CREATE TEMPORARY TABLE tmp.ticketLot SELECT vWarehouse warehouseFk, NULL available, s.itemFk, bu.buyFk, vZoneFk zoneFk FROM sale s LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk WHERE s.ticketFk = vTicketOld GROUP BY s.itemFk; - - CALL catalog_componentPrepare(); + + CALL catalog_componentPrepare(); CALL catalog_componentCalculate(vZoneFk, vAddress, vShipped, vWarehouse); -- Bionizamos lineas con Preu = 0 DROP TEMPORARY TABLE IF EXISTS tmp.sale; CREATE TEMPORARY TABLE tmp.sale (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT s.id saleFk, vWarehouse warehouseFk + SELECT s.id saleFk, vWarehouse warehouseFk FROM sale s JOIN ticket t on t.id = s.ticketFk WHERE s.ticketFk = vTicketNew AND s.price = 0; - + CALL ticketComponentUpdateSale(1); -- Bionizamos lineas con Preu > 0 DROP TEMPORARY TABLE IF EXISTS tmp.sale; CREATE TEMPORARY TABLE tmp.sale (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT s.id saleFk, vWarehouse warehouseFk - FROM sale s + SELECT s.id saleFk, vWarehouse warehouseFk + FROM sale s JOIN ticket t on t.id = s.ticketFk WHERE s.ticketFk = vTicketNew AND s.price > 0; - + CALL ticketComponentUpdateSale(6); -- Log @@ -78465,107 +67217,11 @@ BEGIN -- Limpieza CALL catalog_componentPurge(); - DROP TEMPORARY TABLE IF EXISTS - tmp.buyUltimate, - tmp.sale, + DROP TEMPORARY TABLE IF EXISTS + tmp.buyUltimate, + tmp.sale, tmp.zoneGetLanded; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketCalculateClon__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculateClon__`(IN vTicketNew INT, vTicketOld INT) -BEGIN - /* - * @vTicketNew id del nuevo ticket clonado - * @vTicketOld id ticket original, a partir del qual se clonara el nuevo - * Este procedimiento "rebioniza" una linea, eliminando los componentes existentes e insertandolos de nuevo - */ - DECLARE vShipped DATE; - DECLARE vClient INT; - DECLARE vWarehouse SMALLINT; - DECLARE vAgencyMode INT; - DECLARE vAddress INT; - DECLARE vLanded DATE; - DECLARE vAgency INT; - DECLARE vZoneFk INT; - REPLACE INTO orderTicket(orderFk,ticketFk) - SELECT orderFk, vTicketNew - FROM orderTicket - WHERE ticketFk = vTicketOld; - - SELECT t.clientFk, t.warehouseFk, date(t.shipped), t.addressFk, t.agencyModeFk, t.landed, a.agencyFk, t.zoneFk - INTO vClient, vWarehouse, vShipped, vAddress, vAgencyMode, vLanded, vAgency, vZoneFk - FROM vn.agencyMode a - JOIN vn.ticket t ON t.agencyModeFk = a.id - WHERE t.id = vTicketNew; - - IF vLanded IS NULL THEN - CALL zone_getLanded(vShipped, vAddress, vAgency, vWarehouse); - UPDATE ticket t - JOIN tmp.zoneGetLanded zgl ON t.warehouseFk = zgl.warehouseFk - SET t.landed = zgl.landed, - t.zone = zgl.zoneFk - WHERE t.id = vTicketNew; - - SELECT zoneFk INTO vZoneFk FROM tmp.zoneGetLanded LIMIT 1; - DROP TEMPORARY TABLE IF EXISTS tmp.zoneGetLanded; - END IF; - - -- rellena la tabla tmp.buyUltimate con la ultima compra - CALL buyUltimate(vWarehouse, vShipped); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot - SELECT vWarehouse warehouseFk, NULL available, s.itemFk, bu.buyFk - FROM sale s - LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk - WHERE s.ticketFk = vTicketOld GROUP BY s.itemFk; - - CALL catalog_componentCalculate(vZoneFk, vAddress, vAgencyMode); - - -- Bionizamos lineas con Preu = 0 - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT s.id saleFk, vWarehouse warehouseFk - FROM sale s - JOIN ticket t on t.id = s.ticketFk WHERE s.ticketFk = vTicketNew AND s.price = 0; - - CALL ticketComponentUpdateSale(1); - - -- Bionizamos lineas con Preu > 0 - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT s.id saleFk, vWarehouse warehouseFk - FROM sale s - JOIN ticket t on t.id = s.ticketFk WHERE s.ticketFk = vTicketNew - AND s.price > 0; - - CALL ticketComponentUpdateSale(6); - - -- Log - CALL `logAdd`(vTicketNew, 'update', ' ticket' , 'Bioniza Ticket'); - - -- Limpieza - DROP TEMPORARY TABLE IF EXISTS tmp.buyUltimate; - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - DROP TEMPORARY TABLE IF EXISTS tmp.zoneGetLanded; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -78576,24 +67232,24 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculateFromType`( vLanded DATE, +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketCalculateFromType`( vLanded DATE, vAddressFk INT, vAgencyModeFk INT, vTypeFk INT) BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.item; - CREATE TEMPORARY TABLE tmp.item - (INDEX (itemFk)) - ENGINE = MEMORY + CREATE TEMPORARY TABLE tmp.item + (INDEX (itemFk)) + ENGINE = MEMORY SELECT id itemFk FROM vn.item WHERE typeFk = vTypeFk; - + CALL catalog_calculate(vLanded, vAddressFk, vAgencyModeFk); DROP TEMPORARY TABLE tmp.item; DROP TEMPORARY TABLE tmp.ticketLot; @@ -78607,15 +67263,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculatePurge`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketCalculatePurge`() BEGIN - DROP TEMPORARY TABLE + DROP TEMPORARY TABLE tmp.ticketCalculateItem, tmp.ticketComponentPrice, tmp.ticketComponent, @@ -78627,293 +67283,68 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketCalculateSaleForcePrice2__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculateSaleForcePrice2__`(IN vSale BIGINT) -proc: BEGIN - - DECLARE vShipped DATE; - DECLARE vWarehouseFk SMALLINT; - DECLARE vAddressFk INT; - DECLARE vTicket BIGINT; - DECLARE vItem BIGINT; - DECLARE vZoneFk INT; - - SELECT ticketFk, itemFk - INTO vTicket, vItem - FROM sale - WHERE id = vSale; - - SELECT t.warehouseFk, DATE(t.shipped), t.addressFk, t.zoneFk - INTO vWarehouseFk, vShipped, vAddressFk, vZoneFk - FROM agencyMode a - JOIN ticket t ON t.agencyModeFk = a.id - WHERE t.id = vTicket; - - IF vZoneFk IS NULL THEN - CALL util.throw('ticket without zone'); - END IF; - - CALL buyUltimate (vWarehouseFk, vShipped); - - DELETE FROM tmp.buyUltimate WHERE itemFk != vItem; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot - SELECT vWarehouseFk warehouseFk, NULL available, vItem itemFk, buyFk - FROM tmp.buyUltimate - WHERE itemFk = vItem; - - CALL catalog_componentCalculate(vZoneFk, vAddressFk, vShipped); - - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT vSale saleFk,vWarehouseFk warehouseFk; - - CALL ticketComponentUpdateSale(1); - - INSERT INTO vn.ticketLog (originFk, userFk, `action`, description) - VALUES (vTicket, account.userGetId(), 'update', CONCAT('Bionizo linea id ', vSale)); - - DROP TEMPORARY TABLE tmp.buyUltimate; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketCalculateSaleForcePrice__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculateSaleForcePrice__`(IN vSale BIGINT) -proc: BEGIN - - DECLARE vShipped DATE; - DECLARE vWarehouseFk SMALLINT; - DECLARE vAddressFk INT; - DECLARE vTicket BIGINT; - DECLARE vItem BIGINT; - DECLARE vZoneFk INT; - - SELECT ticketFk, itemFk - INTO vTicket, vItem - FROM sale - WHERE id = vSale; - - SELECT t.warehouseFk, DATE(t.shipped), t.addressFk, t.zoneFk - INTO vWarehouseFk, vShipped, vAddressFk, vZoneFk - FROM agencyMode a - JOIN ticket t ON t.agencyModeFk = a.id - WHERE t.id = vTicket; - - IF vZoneFk IS NULL THEN - CALL util.throw('ticket without zone'); - END IF; - - CALL buyUltimate (vWarehouseFk, vShipped); - - DELETE FROM tmp.buyUltimate WHERE itemFk != vItem; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot - SELECT vWarehouseFk warehouseFk, NULL available, vItem itemFk, buyFk - FROM tmp.buyUltimate - WHERE itemFk = vItem; - - CALL catalog_componentCalculate(vZoneFk, vAddressFk, vShipped); - - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT vSale saleFk,vWarehouseFk warehouseFk; - - CALL ticketComponentUpdateSale(1); - - INSERT INTO vn.ticketLog (originFk, userFk, `action`, description) - VALUES (vTicket, account.userGetId(), 'update', CONCAT('Bionizo linea id ', vSale)); - - DROP TEMPORARY TABLE tmp.buyUltimate; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketCalculateSale__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculateSale__`(IN vSale BIGINT) -proc: BEGIN --- OBSOLETO USAR: sale_calculateComponent(vSale, NULL) - DECLARE vShipped DATE; - DECLARE vWarehouseFk SMALLINT; - DECLARE vAgencyModeFk INT; - DECLARE vAddressFk INT; - DECLARE vTicket BIGINT; - DECLARE vItem BIGINT; - DECLARE vLanded DATE; - DECLARE vTicketFree BOOLEAN DEFAULT TRUE; - DECLARE vZoneFk INTEGER; - - SELECT NOT (t.refFk IS NOT NULL OR ts.alertLevel > 0) OR s.price = 0, s.ticketFk, s.itemFk , t.zoneFk - INTO vTicketFree, vTicket, vItem, vZoneFk - FROM vn.ticket t - JOIN vn.sale s ON s.ticketFk = t.id - LEFT JOIN vn.ticketState ts ON ts.ticketFk = t.id - WHERE s.id = vSale - LIMIT 1; - - SELECT t.warehouseFk, DATE(t.shipped), t.addressFk, t.agencyModeFk, t.landed - INTO vWarehouseFk, vShipped, vAddressFk, vAgencyModeFk, vLanded - FROM agencyMode a - JOIN ticket t ON t.agencyModeFk = a.id - WHERE t.id = vTicket; - - IF IFNULL(vZoneFk,0) = 0 THEN - CALL util.throw('ticket dont have zone'); - END IF; - - CALL buyUltimate (vWarehouseFk, vShipped); - - DELETE FROM tmp.buyUltimate WHERE itemFk != vItem; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot - SELECT vWarehouseFk warehouseFk, NULL available, vItem itemFk, buyFk, vZoneFk zoneFk - FROM tmp.buyUltimate - WHERE itemFk = vItem; - - CALL vn.catalog_componentCalculate; - CALL catalog_componentCalculate(vZoneFk, vAddressFk, vShipped, vWarehouseFk); - - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT vSale saleFk,vWarehouseFk warehouseFk; - - CALL ticketComponentUpdateSale(IF(vTicketFree,1,6)); - - INSERT INTO vn.ticketLog (originFk, userFk, `action`, description) - VALUES (vTicket, account.userGetId(), 'update', CONCAT('Bionizo linea id ', vSale)); - - CALL catalog_componentPurge(); - DROP TEMPORARY TABLE tmp.buyUltimate; - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketCalculate__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculate__`( - vLanded DATE, - vAddressFk INT, - vAgencyModeFk INT) -proc: BEGIN --- OBSOLETO utilizar catalog_calculate - CALL vn.catalog_calculate(vLanded, vAddressFk, vAgencyModeFk); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketClon` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketClon`(vTicketFk INT, vNewShipped DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketClon`(vTicketFk INT, vNewShipped DATE) BEGIN - + DECLARE done INT DEFAULT FALSE; - DECLARE vNewTicketFk INT; + DECLARE vNewTicketFk INT; DECLARE vOldSaleFk INT; DECLARE vNewSaleFk INT; - + DECLARE cur1 CURSOR FOR SELECT id FROM vn.sale WHERE ticketFk = vTicketFk; - + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - - SET vNewShipped = IFNULL(vNewShipped, CURDATE()); - + + SET vNewShipped = IFNULL(vNewShipped, util.VN_CURDATE()); + CALL vn.ticket_Clone(vTicketFk, vNewTicketFk); - - UPDATE vn.ticket + + UPDATE vn.ticket SET landed = TIMESTAMPADD(DAY, DATEDIFF(vNewShipped, shipped), landed), shipped = vNewShipped WHERE id = vNewTicketFk; - + OPEN cur1; - + read_loop: LOOP - + FETCH cur1 INTO vOldSaleFk; - + IF done THEN LEAVE read_loop; END IF; - + INSERT INTO vn.sale(ticketFk, itemFk, quantity, concept, price, discount, priceFixed, isPriceFixed) SELECT vNewTicketFk, itemFk, quantity, concept, price, discount, priceFixed, isPriceFixed FROM vn.sale WHERE id = vOldSaleFk; - + SELECT max(id) INTO vNewSaleFk FROM vn.sale WHERE ticketFk = vNewTicketFk; - + INSERT INTO vn.saleComponent(saleFk, componentFk, value, isGreuge) SELECT vNewSaleFk, componentFk, value, isGreuge FROM vn.saleComponent WHERE saleFk = vOldSaleFk; - + END LOOP; CLOSE cur1; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -78924,29 +67355,29 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketClon_OneYear`(vTicketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketClon_OneYear`(vTicketFk INT) BEGIN DECLARE vShipped DATE; DECLARE vMaxDated DATE; - - SELECT shipped, TIMESTAMPADD(YEAR,1,shipped) + + SELECT shipped, TIMESTAMPADD(YEAR,1,shipped) INTO vShipped, vMaxDated FROM vn.ticket WHERE id = vTicketFk; - + WHILE vShipped <= vMaxDated DO - + SET vShipped = TIMESTAMPADD(WEEK, 1, vShipped); - + CALL vn.ticketClon(vTicketFk, vShipped); - + END WHILE; END ;; @@ -78955,214 +67386,23 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketClosureAgencyListAdd__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosureAgencyListAdd__`(vAgencyModeFk INT) -BEGIN -/** - * Prepara un listado de agencias sobre los que se realizará el cierre. - * Es necesario llamar al procedimiento por cada agencia. - * - * @param vAgencyModeFk Id almacén - */ - CREATE TEMPORARY TABLE IF NOT EXISTS tmp.ticketClosureAgencyList ( - `agencyModeFk` INT, - PRIMARY KEY(agencyModeFk)) ENGINE = MEMORY; - - INSERT INTO tmp.ticketClosureAgencyList(agencyModeFk) VALUES(vAgencyModeFk); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketClosureAgencyList__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosureAgencyList__`(vWarehouseFk INT, vDateTo DATE) -BEGIN -/** - * Inserta los tickets de todos los almacenes en la tabla temporal - * para ser cerrados. - * - * @param vWarehouseFk Id del almacén - * @param vDate Fecha del cierre - */ - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure; - - CREATE TEMPORARY TABLE tmp.ticketClosure ENGINE = MEMORY ( - SELECT - t.id AS ticketFk - FROM expedition e - INNER JOIN ticket t ON t.id = e.ticketFk - INNER JOIN tmp.ticketClosureAgencyList al ON al.agencyModeFk = t.agencyModeFk - LEFT JOIN ticketState ts ON ts.ticketFk = t.id - WHERE - ts.alertLevel = 2 - AND t.warehouseFk = vWarehouseFk - AND DATE(t.shipped) BETWEEN DATE_ADD(vDateTo, INTERVAL -2 DAY) AND vDateTo - AND t.refFk IS NULL - GROUP BY e.ticketFk); - - DROP TEMPORARY TABLE tmp.ticketClosureAgencyList; - - CALL ticketClosure(); - - DROP TEMPORARY TABLE tmp.ticketClosure; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketClosureRoute__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosureRoute__`( vRouteFk INT) -BEGIN -/** - * Inserta los tickets de la ruta en la tabla temporal - * para ser cerrados. - * - * @param vWarehouseFk Almacén a cerrar - * @param vRouteFk Ruta a cerrar - * @param vDate Fecha del cierre - */ - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure; - - CREATE TEMPORARY TABLE tmp.ticketClosure ENGINE = MEMORY ( - SELECT - t.id AS ticketFk - FROM expedition e - INNER JOIN ticket t ON t.id = e.ticketFk - LEFT JOIN ticketState ts ON ts.ticketFk = t.id - WHERE - ts.alertLevel = 2 - AND t.routeFk = vRouteFk - AND t.refFk IS NULL - GROUP BY e.ticketFk); - - CALL ticketClosure(); - - DROP TEMPORARY TABLE tmp.ticketClosure; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketClosureTicket__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosureTicket__`(vTicketFk INT) -BEGIN - -/** - * @deprecated Use ticket_closeByTicket() - * Inserta el ticket en la tabla temporal - * para ser cerrado. - * - * @param vTicketFk Id del ticket - */ - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure; - - CREATE TEMPORARY TABLE tmp.ticketClosure ENGINE = MEMORY ( - SELECT - t.id AS ticketFk - FROM expedition e - INNER JOIN ticket t ON t.id = e.ticketFk - LEFT JOIN ticketState ts ON ts.ticketFk = t.id - WHERE - ts.alertLevel = 2 - AND t.id = vTicketFk - AND t.refFk IS NULL - GROUP BY e.ticketFk); - - CALL ticketClosure(); - - DROP TEMPORARY TABLE tmp.ticketClosure; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketCollection_get` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCollection_get`(vTicketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketCollection_get`(vTicketFk INT) BEGIN - SELECT tc.collectionFk + SELECT tc.collectionFk FROM vn.ticketCollection tc WHERE ticketFk = vTicketFk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketCollection_get__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCollection_get__`(vTicketFk INT) -BEGIN - SELECT tc.collectionFk - FROM vn.ticketCollection tc - JOIN vn.collection c ON c.id = tc.collectionFk - JOIN tmp.workerPackingType wpt ON wpt.workerFk = account.myUser_getId() - WHERE ticketFk = vTicketFk - AND c.itemPackingTypeFk = wpt.itemPackingTypeFk - ; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -79175,24 +67415,24 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCollection_setUsedShelves`(vTicketFk INT, vUsedShelves INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketCollection_setUsedShelves`(vTicketFk INT, vUsedShelves INT) BEGIN - + /* * Inserta número de baldas que ocupa un ticket - * + * * @param vTicketFk Identificador de ticket * @param vUsedShelves Número de baldas */ - + UPDATE ticketCollection tc SET tc.usedShelves = vUsedShelves WHERE tc.ticketFk = vTicketFk; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -79203,13 +67443,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketComponentUpdate`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketComponentUpdate`( vTicketFk INT, vClientFk INT, vAgencyModeFk INT, @@ -79230,18 +67470,18 @@ BEGIN END; START TRANSACTION; - + IF (SELECT addressFk FROM ticket WHERE id = vTicketFk) <> vAddressFk THEN - - UPDATE ticket t + + UPDATE ticket t JOIN address a ON a.id = vAddressFk SET t.nickname = a.nickname WHERE t.id = vTicketFk; - + END IF; - + UPDATE ticket t - SET + SET t.clientFk = vClientFk, t.agencyModeFk = vAgencyModeFk, t.addressFk = vAddressFk, @@ -79252,12 +67492,12 @@ BEGIN t.isDeleted = vIsDeleted WHERE t.id = vTicketFk; - + IF vHasToBeUnrouted THEN UPDATE ticket t SET t.routeFk = NULL WHERE t.id = vTicketFk; END IF; - + IF vOption <> 8 THEN DROP TEMPORARY TABLE IF EXISTS tmp.sale; CREATE TEMPORARY TABLE tmp.sale @@ -79281,13 +67521,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketComponentUpdateSale`(vOption INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketComponentUpdateSale`(vOption INT) BEGIN /** * A partir de la tabla tmp.sale, crea los Movimientos_componentes @@ -79299,104 +67539,104 @@ BEGIN DECLARE vComponentFk INT; DECLARE vRenewComponents BOOLEAN; DECLARE vKeepPrices BOOLEAN; - + CASE vOption - WHEN 1 THEN + WHEN 1 THEN SET vRenewComponents = TRUE; SET vKeepPrices = FALSE; WHEN 2 THEN - SELECT id INTO vComponentFk FROM component WHERE `code` = 'debtCollection'; + SELECT id INTO vComponentFk FROM component WHERE `code` = 'debtCollection'; SET vRenewComponents = TRUE; SET vKeepPrices = TRUE; - WHEN 3 THEN - SELECT id INTO vComponentFk FROM component WHERE `code` = 'mana'; - SET vRenewComponents = TRUE; - SET vKeepPrices = TRUE; - WHEN 4 THEN - SELECT id INTO vComponentFk FROM component WHERE `code` = 'buyerDiscount'; + WHEN 3 THEN + SELECT id INTO vComponentFk FROM component WHERE `code` = 'mana'; SET vRenewComponents = TRUE; SET vKeepPrices = TRUE; - /* WHEN 5 THEN + WHEN 4 THEN + SELECT id INTO vComponentFk FROM component WHERE `code` = 'buyerDiscount'; + SET vRenewComponents = TRUE; + SET vKeepPrices = TRUE; + /* WHEN 5 THEN SET vComponentFk = 35; SET vRenewComponents = TRUE; SET vKeepPrices = TRUE;*/ - WHEN 6 THEN + WHEN 6 THEN SELECT id INTO vComponentFk FROM component WHERE `code` = 'imbalance'; SET vRenewComponents = TRUE; SET vKeepPrices = TRUE; WHEN 7 THEN REPLACE INTO saleComponent(saleFk, componentFk, value) - SELECT s.id, 28, ROUND(((s.price * (100 - s.discount) / 100) - SUM(IFNULL(sc.value, 0))) * 0.8, 3) + SELECT s.id, 28, ROUND(((s.price * (100 - s.discount) / 100) - SUM(IFNULL(sc.value, 0))) * 0.8, 3) FROM sale s JOIN tmp.sale tmps ON tmps.saleFk = s.id - LEFT JOIN saleComponent sc ON sc.saleFk = s.id + LEFT JOIN saleComponent sc ON sc.saleFk = s.id AND sc.componentFk NOT IN (28, 29) GROUP BY s.id; - + REPLACE INTO saleComponent(saleFk, componentFk, value) - SELECT s.id, 29, ROUND(((s.price * (100 - s.discount) / 100) - SUM(IFNULL(sc.value, 0))) * 0.2, 3) + SELECT s.id, 29, ROUND(((s.price * (100 - s.discount) / 100) - SUM(IFNULL(sc.value, 0))) * 0.2, 3) FROM sale s JOIN tmp.sale tmps ON tmps.saleFk = s.id - LEFT JOIN saleComponent sc ON sc.saleFk = s.id + LEFT JOIN saleComponent sc ON sc.saleFk = s.id AND sc.componentFk NOT IN (28, 29) GROUP BY s.id; - + SET vRenewComponents = FALSE; SET vKeepPrices = FALSE; WHEN 8 THEN - DELETE sc.* + DELETE sc.* FROM tmp.sale tmps JOIN saleComponent sc ON sc.saleFk = tmps.saleFk; - + REPLACE INTO saleComponent(saleFk, componentFk, value) - SELECT s.id, 28, ROUND(((s.price * (100 - s.discount) / 100)), 3) + SELECT s.id, 28, ROUND(((s.price * (100 - s.discount) / 100)), 3) FROM sale s JOIN tmp.sale tmps ON tmps.saleFk = s.id; - + SET vRenewComponents = FALSE; SET vKeepPrices = FALSE; - WHEN 9 THEN + WHEN 9 THEN SET vRenewComponents = TRUE; SET vKeepPrices = TRUE; END CASE; IF vRenewComponents THEN - DELETE sc.* - FROM tmp.sale tmps + DELETE sc.* + FROM tmp.sale tmps JOIN saleComponent sc ON sc.saleFk = tmps.saleFk JOIN `component` c ON c.id = sc.componentFk WHERE c.isRenewable; - + REPLACE INTO saleComponent(saleFk, componentFk, value) SELECT s.id, tc.componentFk, tc.cost - FROM sale s + FROM sale s JOIN tmp.sale tmps ON tmps.saleFk = s.id JOIN tmp.ticketComponent tc ON tc.itemFk = s.itemFk AND tc.warehouseFk = tmps.warehouseFk - LEFT JOIN saleComponent sc ON sc.saleFk = s.id - AND sc.componentFk = tc.componentFk - LEFT JOIN `component` c ON c.id = tc.componentFk + LEFT JOIN saleComponent sc ON sc.saleFk = s.id + AND sc.componentFk = tc.componentFk + LEFT JOIN `component` c ON c.id = tc.componentFk WHERE IF(sc.componentFk IS NULL AND NOT c.isRenewable, FALSE, TRUE); - - -- Añadir componente venta por paquete + + -- Añadir componente venta por paquete DROP TEMPORARY TABLE IF EXISTS tmp.sale2; CREATE TEMPORARY TABLE tmp.sale2 (PRIMARY KEY (saleFk)) - ENGINE = MEMORY + ENGINE = MEMORY SELECT * FROM tmp.sale; - + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponent2; CREATE TEMPORARY TABLE tmp.ticketComponent2 - SELECT * FROM tmp.ticketComponent; - - REPLACE INTO saleComponent(saleFk, componentFk, value) + SELECT * FROM tmp.ticketComponent; + + REPLACE INTO saleComponent(saleFk, componentFk, value) SELECT t.id, t.componentFk, t.cost FROM ( SELECT s.id, tc.componentFk, tc.cost, MOD(s.quantity, b.packing) as resto FROM vn.sale s JOIN tmp.sale tmps ON tmps.saleFk = s.id - JOIN cache.last_buy lb ON lb.item_id = s.itemFk AND tmps.warehouseFk = lb.warehouse_id + JOIN cache.last_buy lb ON lb.item_id = s.itemFk AND tmps.warehouseFk = lb.warehouse_id JOIN vn.buy b ON b.id = buy_id JOIN tmp.ticketComponent tc ON tc.itemFk = s.itemFk AND tc.warehouseFk = tmps.warehouseFk - JOIN `component` c ON c.id = tc.componentFk AND c.code = 'salePerPackage' + JOIN `component` c ON c.id = tc.componentFk AND c.code = 'salePerPackage' LEFT JOIN ( SELECT s.id FROM vn.sale s @@ -79407,8 +67647,8 @@ BEGIN ) tp ON tp.id = s.id WHERE tp.id IS NULL HAVING resto <> 0) t; - - DROP TEMPORARY TABLE IF EXISTS + + DROP TEMPORARY TABLE IF EXISTS tmp.sale2, tmp.ticketComponent2; END IF; @@ -79426,26 +67666,26 @@ BEGIN UPDATE sale s JOIN item i on i.id = s.itemFk JOIN itemType it on it.id = i.typeFk - JOIN (SELECT SUM(sc.value) sumValue, sc.saleFk + JOIN (SELECT SUM(sc.value) sumValue, sc.saleFk FROM saleComponent sc JOIN tmp.sale tmps ON tmps.saleFk = sc.saleFk GROUP BY sc.saleFk) sc ON sc.saleFk = s.id SET s.price = sumValue / ((100 - s.discount) / 100) - WHERE it.code != 'PRT' ; - + WHERE it.code != 'PRT' ; + REPLACE INTO saleComponent(saleFk, componentFk, value) SELECT s.id, 21, ROUND((s.price * (100 - s.discount) / 100) - SUM(value), 3) saleValue FROM sale s JOIN tmp.sale tmps ON tmps.saleFk = s.id LEFT JOIN saleComponent sc ON sc.saleFk = s.id WHERE sc.componentFk != 21 - GROUP BY s.id + GROUP BY s.id HAVING ROUND(saleValue, 4) <> 0; END IF; - + UPDATE sale s JOIN ( - SELECT SUM(sc.value) sumValue, sc.saleFk + SELECT SUM(sc.value) sumValue, sc.saleFk FROM saleComponent sc JOIN tmp.sale tmps ON tmps.saleFk = sc.saleFk JOIN `component` c ON c.id = sc.componentFk @@ -79459,10 +67699,10 @@ BEGIN JOIN sale s on s.id = sc.saleFk JOIN item i ON i.id = s.itemFk JOIN itemType it ON it.id = i.typeFk - WHERE it.code = 'PRT'; - + WHERE it.code = 'PRT'; + INSERT INTO saleComponent(saleFk, componentFk, value) - SELECT s.id, 15, s.price + SELECT s.id, 15, s.price FROM sale s JOIN tmp.sale tmps ON tmps.saleFk = s.id JOIN item i ON i.id = s.itemFK @@ -79478,13 +67718,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCreate`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketCreate`( vClientId INT ,vShipped DATE ,vWarehouseId INT @@ -79495,7 +67735,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `ticketCreate`( ,vlanded DATE ,OUT vNewTicket INT) BEGIN - CALL `ticketCreateWithUser`(vClientId, vShipped, vWarehouseId, vCompanyFk, vAddressFk, vAgencyType, vRouteFk, vlanded, account.userGetId(), vNewTicket); + CALL `ticketCreateWithUser`(vClientId, vShipped, vWarehouseId, vCompanyFk, vAddressFk, vAgencyType, vRouteFk, vlanded, account.myUser_getId(), vNewTicket); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -79506,13 +67746,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCreateWithUser`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketCreateWithUser`( vClientId INT ,vShipped DATE ,vWarehouseFk INT @@ -79524,184 +67764,19 @@ CREATE DEFINER=`root`@`%` PROCEDURE `ticketCreateWithUser`( ,vUserId INT ,OUT vNewTicket INT) BEGIN --- si se modifica algo avisad a jgallego - DECLARE vZoneFk INT; - DECLARE vPrice DECIMAL(10,2); - DECLARE vBonus DECIMAL(10,2); - - IF vClientId IS NULL THEN - CALL util.throw ('CLIENT_NOT_ESPECIFIED'); - END IF; - - IF NOT vAddressFk OR vAddressFk IS NULL THEN - SELECT id INTO vAddressFk - FROM address - WHERE clientFk = vClientId AND isDefaultAddress; - END IF; - - IF vAgencyModeFk IS NOT NULL THEN - - CALL vn.zone_getShipped (vlanded, vAddressFk, vAgencyModeFk, TRUE); - - SELECT zoneFk, price, bonus INTO vZoneFk, vPrice, vBonus - FROM tmp.zoneGetShipped - WHERE shipped = vShipped AND warehouseFk = vWarehouseFk LIMIT 1; - - IF vZoneFk IS NULL OR vZoneFk = 0 THEN - CALL util.throw ('NOT_ZONE_WITH_THIS_PARAMETERS'); - END IF; - END IF; - INSERT INTO ticket ( - clientFk, - shipped, - addressFk, - agencyModeFk, - nickname, - warehouseFk, - routeFk, - companyFk, - landed, - zoneFk, - zonePrice, - zoneBonus - ) - SELECT - vClientId, - vShipped, - a.id, - vAgencyModeFk, - a.nickname, - vWarehouseFk, - IF(vRouteFk,vRouteFk,NULL), - vCompanyFk, - vlanded, - vZoneFk, - vPrice, - vBonus - FROM address a - JOIN agencyMode am ON am.id = a.agencyModeFk - WHERE a.id = vAddressFk; - - SET vNewTicket = LAST_INSERT_ID(); - - INSERT INTO ticketObservation(ticketFk, observationTypeFk, description) - SELECT vNewTicket, ao.observationTypeFk, ao.description - FROM addressObservation ao - JOIN address a ON a.id = ao.addressFk - WHERE a.id = vAddressFk; - - INSERT INTO vn.ticketLog - SET originFk = vNewTicket, userFk = vUserId, `action` = 'insert', description = CONCAT('Ha creado el ticket:', ' ', vNewTicket); - - IF (SELECT ct.isCreatedAsServed FROM vn.clientType ct JOIN vn.client c ON c.typeFk = ct.code WHERE c.id = vClientId ) <> FALSE THEN - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT id, vNewTicket, account.myUser_getId() - FROM state - WHERE `code` = 'DELIVERED'; - END IF; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketCreateWithUser__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCreateWithUser__`( - vClientId INT - ,vShipped DATE - ,vWarehouseFk INT - ,vCompanyFk INT - ,vAddressFk INT - ,vAgencyModeFk INT - ,vRouteFk INT - ,vlanded DATE - ,vUserId INT - ,OUT vNewTicket INT) -BEGIN - - DECLARE vZoneFk INT; - DECLARE vPrice DECIMAL(10,2); - DECLARE vBonus DECIMAL(10,2); - - IF vClientId IS NULL THEN - CALL util.throw ('CLIENT_NOT_ESPECIFIED'); - END IF; - - IF NOT vAddressFk OR vAddressFk IS NULL THEN - SELECT id INTO vAddressFk - FROM address - WHERE clientFk = vClientId AND isDefaultAddress; - END IF; - - IF vAgencyModeFk IS NOT NULL THEN - - CALL vn.zone_getShippedWarehouse(vlanded, vAddressFk, vAgencyModeFk); - - SELECT zoneFk, price, bonus INTO vZoneFk, vPrice, vBonus - FROM tmp.zoneGetShipped - WHERE shipped = vShipped AND warehouseFk = vWarehouseFk LIMIT 1; - - IF vZoneFk IS NULL OR vZoneFk = 0 THEN - CALL util.throw ('NOT_ZONE_WITH_THIS_PARAMETERS'); - END IF; - END IF; - INSERT INTO ticket ( - clientFk, - shipped, - addressFk, - agencyModeFk, - nickname, - warehouseFk, - routeFk, - companyFk, - landed, - zoneFk, - zonePrice, - zoneBonus - ) - SELECT - vClientId, - vShipped, - a.id, - vAgencyModeFk, - a.nickname, - vWarehouseFk, - IF(vRouteFk,vRouteFk,NULL), - vCompanyFk, - vlanded, - vZoneFk, - vPrice, - vBonus - FROM address a - JOIN agencyMode am ON am.id = a.agencyModeFk - WHERE a.id = vAddressFk; - - SET vNewTicket = LAST_INSERT_ID(); - - INSERT INTO ticketObservation(ticketFk, observationTypeFk, description) - SELECT vNewTicket, ao.observationTypeFk, ao.description - FROM addressObservation ao - JOIN address a ON a.id = ao.addressFk - WHERE a.id = vAddressFk; - - INSERT INTO vn.ticketLog - SET originFk = vNewTicket, userFk = vUserId, `action` = 'insert', description = CONCAT('Ha creado el ticket:', ' ', vNewTicket); - - IF (SELECT ct.isCreatedAsServed FROM vn.clientType ct JOIN vn.client c ON c.typeFk = ct.code WHERE c.id = vClientId ) <> FALSE THEN - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT id, vNewTicket, getWorker() - FROM state - WHERE `code` = 'DELIVERED'; - END IF; + CALL ticket_add( + vClientId, + vShipped, + vWarehouseFk, + vCompanyFk, + vAddressFk, + vAgencyModeFk, + vRouteFk, + vlanded, + vUserId, + TRUE, + vNewTicket + ); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -79712,13 +67787,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketDown_PrintableSelection`(vSectorFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketDown_PrintableSelection`(vSectorFk INT) BEGIN UPDATE vn.ticketDown td @@ -79743,265 +67818,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketFilter__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketFilter__`() -BEGIN -/** - * Obtiene un listado de tickets - * junto con el precio total y los problemas - * - * @table tmp.ticket(ticketFk) Identificadores de los tickets a calcular - * @return Listado de tickets - */ - CALL ticketGetTotal(); - CALL ticketGetProblems(FALSE); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketFilter; - CREATE TEMPORARY TABLE tmp.ticketFilter ENGINE = MEMORY - SELECT t.*, tt.total, tp.problem - FROM tmp.ticket t - JOIN tmp.ticketTotal tt ON tt.ticketFk = t.ticketFk - LEFT JOIN tmp.ticketProblems tp ON tp.ticketFk = t.ticketFk; - - DROP TEMPORARY TABLE - tmp.ticket, - tmp.ticketTotal, - tmp.ticketProblems; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketGetProblems__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketGetProblems__`(IN vIsTodayRelative TINYINT(1)) -BEGIN -/** - * @deprecated Use ticket_getProblems() instead - * - * Hay que revisar los dos procesos y unificarlos. No son equivalentes. PAK 04/06/21 - * - */ - DECLARE vWarehouse INT; - DECLARE vDate DATE; - DECLARE vAvailableCache INT; - DECLARE vDone INT DEFAULT 0; - DECLARE vComponentCount INT; - DECLARE vHasUbications BOOL; - - DECLARE vCursor CURSOR FOR - SELECT DISTINCT tt.warehouseFk, IF(vIsTodayRelative, CURDATE(), date(tt.shipped)), w.hasUbications - FROM tmp.ticketGetProblems tt - JOIN vn.warehouse w ON w.id = tt.warehouseFk - WHERE DATE(tt.shipped) BETWEEN CURDATE() - AND TIMESTAMPADD(DAY, IF(vIsTodayRelative, 9.9, 1.9), CURDATE()); - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = 1; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketProblems; - CREATE TEMPORARY TABLE tmp.ticketProblems ( - ticketFk INT(11) PRIMARY KEY, - isFreezed INTEGER(1) DEFAULT 0, - risk DECIMAL(10,2) DEFAULT 0, - hasTicketRequest INTEGER(1) DEFAULT 0, - isAvailable INTEGER(1) DEFAULT 1, - itemShortage VARCHAR(250), - isTaxDataChecked INTEGER(1) DEFAULT 1, - itemDelay VARCHAR(250), - componentLack INTEGER(1) - ) ENGINE = MEMORY; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketList; - CREATE TEMPORARY TABLE tmp.ticketList - (PRIMARY KEY (ticketFk)) - ENGINE = MEMORY - SELECT tp.ticketFk, c.id clientFk - FROM tmp.ticketGetProblems tp - JOIN vn.client c ON c.id = tp.clientFk; - - SELECT COUNT(*) INTO vComponentCount - FROM vn.component c - WHERE c.isRequired; - - INSERT INTO tmp.ticketProblems(ticketFk, componentLack) - SELECT tl.ticketFk, - (COUNT(DISTINCT s.id) * (vComponentCount - (dm.code = 'PICKUP')) > COUNT(c.id)) - FROM tmp.ticketList tl - JOIN vn.sale s ON s.ticketFk = tl.ticketFk - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.agencyMode am ON am.id = t.agencyModeFk - JOIN vn.deliveryMethod dm ON dm.id = am.deliveryMethodFk - LEFT JOIN vn.saleComponent sc ON sc.saleFk = s.id - LEFT JOIN vn.component c ON c.id = sc.componentFk AND c.isRequired - GROUP BY tl.ticketFk; - - INSERT INTO tmp.ticketProblems(ticketFk, isFreezed) - SELECT DISTINCT tl.ticketFk, 1 - FROM tmp.ticketList tl - JOIN vn.client c ON c.id = tl.clientFk - WHERE c.isFreezed - ON DUPLICATE KEY UPDATE - isFreezed = c.isFreezed; - - DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt; - CREATE TEMPORARY TABLE tmp.clientGetDebt - (PRIMARY KEY (clientFk)) - ENGINE = MEMORY - SELECT DISTINCT clientFk - FROM tmp.ticketList; - - CALL clientGetDebt(CURDATE()); - - INSERT INTO tmp.ticketProblems(ticketFk, risk) - SELECT DISTINCT tl.ticketFk, r.risk - FROM tmp.ticketList tl - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.agencyMode a ON t.agencyModeFk = a.id - JOIN tmp.risk r ON r.clientFk = t.clientFk - JOIN vn.client c ON c.id = t.clientFk - JOIN vn.clientConfig cc - WHERE r.risk - cc.riskTolerance > c.credit + 10 - AND a.isRiskFree = FALSE - ON DUPLICATE KEY UPDATE - risk = r.risk; - - INSERT INTO tmp.ticketProblems(ticketFk, hasTicketRequest) - SELECT DISTINCT tl.ticketFk, 1 - FROM tmp.ticketList tl - JOIN vn.ticketRequest tr ON tr.ticketFk = tl.ticketFk - WHERE tr.isOK IS NULL AND tr.saleFk IS NOT NULL - ON DUPLICATE KEY UPDATE - hasTicketRequest = 1; - - OPEN vCursor; - - WHILE NOT vDone - DO - FETCH vCursor INTO vWarehouse, vDate, vHasUbications; - - CALL cache.available_refresh(vAvailableCache, FALSE, vWarehouse, vDate); - - INSERT INTO tmp.ticketProblems(ticketFk, isAvailable) - SELECT tl.ticketFk, 0 - FROM tmp.ticketList tl - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.sale s ON s.ticketFk = t.id - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.itemType it on it.id = i.typeFk - LEFT JOIN cache.available av ON av.item_id = i.id - AND av.calc_id = vAvailableCache - WHERE date(t.shipped) = vDate - AND it.categoryFk != 6 - AND IFNULL(av.available, 0) < 0 - AND s.isPicked = FALSE - AND NOT i.generic - AND vWarehouse = t.warehouseFk - GROUP BY tl.ticketFk - ON DUPLICATE KEY UPDATE - isAvailable = 0; - - IF vHasUbications THEN - - INSERT INTO tmp.ticketProblems(ticketFk, itemShortage) - SELECT ticketFk, problem - FROM ( - SELECT tl.ticketFk, CONCAT('F: ',GROUP_CONCAT(i.id, ' ', i.longName, ' ')) problem - FROM tmp.ticketList tl - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.sale s ON s.ticketFk = t.id - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.itemType it on it.id = i.typeFk - LEFT JOIN vn.itemShelvingStock_byWarehouse issw ON issw.itemFk = i.id AND issw.warehouseFk = t.warehouseFk - LEFT JOIN cache.available av ON av.item_id = i.id AND av.calc_id = vAvailableCache - WHERE IFNULL(av.available, 0) < 0 - AND s.quantity > IFNULL(issw.visible, 0) - AND s.quantity > 0 - AND s.isPicked = FALSE - AND s.reserved = FALSE - AND it.categoryFk != 6 - AND IF(vIsTodayRelative, TRUE, date(t.shipped) = vDate) - AND NOT i.generic - AND CURDATE() = vDate - AND t.warehouseFk = vWarehouse - GROUP BY tl.ticketFk) sub - ON DUPLICATE KEY UPDATE - itemShortage = sub.problem; - - INSERT INTO tmp.ticketProblems(ticketFk, itemDelay) - SELECT ticketFk, problem - FROM ( - SELECT tl.ticketFk, GROUP_CONCAT('I: ',i.id, ' ', i.longName, ' ') problem - FROM tmp.ticketList tl - JOIN vn.ticket t ON t.id = tl.ticketFk - JOIN vn.sale s ON s.ticketFk = t.id - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.itemType it on it.id = i.typeFk - LEFT JOIN vn.itemShelvingStock_byWarehouse issw ON issw.itemFk = i.id AND issw.warehouseFk = t.warehouseFk - WHERE s.quantity > IFNULL(issw.visible, 0) - AND s.quantity > 0 - AND s.isPicked = FALSE - AND s.reserved = FALSE - AND it.categoryFk != 6 - AND IF(vIsTodayRelative, TRUE, date(t.shipped) = vDate) - AND NOT i.generic - AND CURDATE() = vDate - AND t.warehouseFk = vWarehouse - GROUP BY tl.ticketFk) sub - ON DUPLICATE KEY UPDATE - itemDelay = sub.problem; - - END IF; - - END WHILE; - - CLOSE vCursor; - - INSERT INTO tmp.ticketProblems(ticketFk, isTaxDataChecked) - SELECT DISTINCT tl.ticketFk, FALSE - FROM tmp.ticketList tl - JOIN vn.client c ON c.id = tl.clientFk - WHERE c.isTaxDataChecked= FALSE - ON DUPLICATE KEY UPDATE - isTaxDataChecked = FALSE; - - DROP TEMPORARY TABLE - tmp.clientGetDebt, - tmp.ticketList; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketGetTaxAdd` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketGetTaxAdd`(vTicketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketGetTaxAdd`(vTicketFk INT) BEGIN /** * Añade un ticket a la tabla tmp.ticket para calcular @@ -80011,24 +67838,24 @@ BEGIN CREATE TEMPORARY TABLE tmp.ticket ENGINE = MEMORY SELECT vTicketFk ticketFk; - + CALL vn.ticket_getTax(NULL); - SELECT + SELECT tt.ticketFk, CAST(tt.taxableBase AS DECIMAL(10, 2)) AS taxableBase, CAST(tt.rate * tt.taxableBase / 100 AS DECIMAL(10, 2)) AS tax, - pgc.*, + pgc.*, CAST(IF(pe.equFk IS NULL, taxableBase, 0) AS DECIMAL(10, 2)) AS Base, pgc.rate / 100 as vatPercent FROM tmp.ticketTax tt JOIN vn.pgc ON pgc.code = tt.pgcFk LEFT JOIN vn.pgcEqu pe ON pe.equFk = pgc.code; - + DROP TEMPORARY TABLE tmp.ticket; DROP TEMPORARY TABLE tmp.ticketTax; DROP TEMPORARY TABLE tmp.ticketAmount; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -80039,13 +67866,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketGetTax_new`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketGetTax_new`() READS SQL DATA BEGIN /** @@ -80066,29 +67893,29 @@ BEGIN JOIN ticket t ON t.id = tmpTicket.ticketFk; CALL addressTaxArea (); - + DROP TEMPORARY TABLE IF EXISTS tmp.ticketTax; CREATE TEMPORARY TABLE tmp.ticketTax (INDEX (ticketFk)) ENGINE = MEMORY SELECT tmpTicket.ticketFk, bp.pgcFk, - SUM(ROUND(s.quantity * s.price * (100 - s.discount)/100,2) + SUM(ROUND(s.quantity * s.price * (100 - s.discount)/100,2) ) AS taxableBase, SUM(ROUND(s.quantity * s.price * (100 - s.discount)/100,2) ) * pgc.rate / 100 AS tax, tc.code - + FROM tmp.ticket tmpTicket JOIN sale s ON s.ticketFk = tmpTicket.ticketFk JOIN item i ON i.id = s.itemFk JOIN ticket t ON t.id = tmpTicket.ticketFk JOIN supplier su ON su.id = t.companyFk - JOIN tmp.addressTaxArea ata + JOIN tmp.addressTaxArea ata ON ata.addressFk = t.addressFk AND ata.companyFk = t.companyFk - JOIN itemTaxCountry itc + JOIN itemTaxCountry itc ON itc.itemFk = i.id AND itc.countryFk = su.countryFk - JOIN bookingPlanner bp + JOIN bookingPlanner bp ON bp.countryFk = su.countryFk AND bp.taxAreaFk = ata.areaFk AND bp.taxClassFk = itc.taxClassFk @@ -80096,7 +67923,7 @@ BEGIN JOIN taxClass tc ON tc.id = bp.taxClassFk GROUP BY tmpTicket.ticketFk, pgc.code HAVING taxableBase != 0; - + DROP TEMPORARY TABLE IF EXISTS tmp.ticketAmount; CREATE TEMPORARY TABLE tmp.ticketAmount (INDEX (ticketFk)) @@ -80107,134 +67934,7 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.addressCompany; DROP TEMPORARY TABLE IF EXISTS tmp.addressTaxArea; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketGetTax__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketGetTax__`() - READS SQL DATA -BEGIN -/** - * Calcula la base imponible, el IVA y el recargo de equivalencia para - * un conjunto de tickets. - * - * @table tmp.ticket(ticketFk) Identificadores de los tickets a calcular - * @return tmp.ticketAmount - * @return tmp.ticketTax Impuesto desglosado para cada ticket. - */ - DROP TEMPORARY TABLE IF EXISTS tmp.addressCompany; - CREATE TEMPORARY TABLE tmp.addressCompany - (INDEX (addressFk, companyFk)) - ENGINE = MEMORY - SELECT DISTINCT t.addressFk, t.companyFk - FROM tmp.ticket tmpTicket - JOIN ticket t ON t.id = tmpTicket.ticketFk; - - CALL addressTaxArea (); - - - /** Solo se calcula la base imponible (taxableBase) y el impuesto se calculará posteriormente - * No se debería cambiar el sistema por problemas con los decimales - */ - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketTax; - CREATE TEMPORARY TABLE tmp.ticketTax - (INDEX (ticketFk)) - ENGINE = MEMORY - SELECT tmpTicket.ticketFk, - bp.pgcFk, - SUM(s.quantity * s.price * (100 - s.discount)/100 ) AS taxableBase, - pgc.rate, - tc.code - FROM tmp.ticket tmpTicket - JOIN sale s ON s.ticketFk = tmpTicket.ticketFk - JOIN item i ON i.id = s.itemFk - JOIN ticket t ON t.id = tmpTicket.ticketFk - JOIN supplier su ON su.id = t.companyFk - JOIN tmp.addressTaxArea ata - ON ata.addressFk = t.addressFk AND ata.companyFk = t.companyFk - JOIN itemTaxCountry itc - ON itc.itemFk = i.id AND itc.countryFk = su.countryFk - JOIN bookingPlanner bp - ON bp.countryFk = su.countryFk - AND bp.taxAreaFk = ata.areaFk - AND bp.taxClassFk = itc.taxClassFk - JOIN pgc ON pgc.code = bp.pgcFk - JOIN taxClass tc ON tc.id = bp.taxClassFk - GROUP BY tmpTicket.ticketFk, pgc.code,pgc.rate - HAVING taxableBase != 0; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketServiceTax; - CREATE TEMPORARY TABLE tmp.ticketServiceTax - (INDEX (ticketFk)) - ENGINE = MEMORY - SELECT tt.ticketFk, - SUM(ts.quantity * ts.price) AS taxableBase, - pgc.rate, - tc.code - FROM tmp.ticketTax tt - JOIN ticketService ts ON ts.ticketFk = tt.ticketFk - JOIN ticket t ON t.id = tt.ticketFk - JOIN supplier su ON su.id = t.companyFk - JOIN tmp.addressTaxArea ata - ON ata.addressFk = t.addressFk AND ata.companyFk = t.companyFk - JOIN bookingPlanner bp - ON bp.countryFk = su.countryFk - AND bp.taxAreaFk = ata.areaFk - AND bp.taxClassFk = ts.taxClassFk - JOIN pgc ON pgc.code = bp.pgcFk AND pgc.rate = tt.rate - JOIN taxClass tc ON tc.id = bp.taxClassFk - GROUP BY tt.ticketFk, tt.code,tt.rate - HAVING taxableBase != 0; - - UPDATE tmp.ticketTax tt - JOIN tmp.ticketServiceTax ts ON tt.ticketFk = ts.ticketFk AND tt.code = ts.code AND tt.rate = ts.rate - SET tt.taxableBase = tt.taxableBase + ts.taxableBase; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketAmount; - CREATE TEMPORARY TABLE tmp.ticketAmount - (INDEX (ticketFk)) - ENGINE = MEMORY - SELECT ticketFk, taxableBase, SUM(CAST(taxableBase * rate / 100 AS DECIMAL(10, 2))) tax,code - FROM tmp.ticketTax - GROUP BY ticketFk, code; - - DROP TEMPORARY TABLE IF EXISTS tmp.addressCompany; - DROP TEMPORARY TABLE IF EXISTS tmp.addressTaxArea; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketGetTax__2` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketGetTax__2`() - READS SQL DATA -BEGIN - CALL ticket_getTax(NULL); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -80247,11 +67947,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketGetTotal`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketGetTotal`() BEGIN /** * Calcula el total con IVA para un conjunto de tickets. @@ -80271,7 +67971,7 @@ BEGIN FROM tmp.ticket t LEFT JOIN tmp.ticketAmount ta ON t.ticketFk = ta.ticketFk GROUP BY ticketFk; - + DROP TEMPORARY TABLE IF EXISTS tmp.ticketAmount; DROP TEMPORARY TABLE IF EXISTS tmp.ticketTax; END ;; @@ -80284,13 +67984,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketGetVisibleAvailable`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketGetVisibleAvailable`( vTicket INT) BEGIN DECLARE vVisibleCalc INT; @@ -80305,10 +68005,10 @@ BEGIN WHERE t.id = vTicket; IF vAlertLevel IS NULL OR vAlertLevel = 0 THEN - IF vShipped >= CURDATE() THEN + IF vShipped >= util.VN_CURDATE() THEN CALL cache.available_refresh(vAvailableCalc, FALSE, vWarehouse, vShipped); END IF; - IF vShipped = CURDATE() THEN + IF vShipped = util.VN_CURDATE() THEN CALL cache.visible_refresh(vVisibleCalc, FALSE, vWarehouse); END IF; END IF; @@ -80326,64 +68026,33 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketListCreate__` */; +/*!50003 DROP PROCEDURE IF EXISTS `ticketManaToPromo` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketListCreate__`( - vClientId INT - ,vShipped DATE - ,vWarehouseId INT - ,vCompanyFk INT - ,vAddressFk INT - ,vAgencyType INT - ,vRouteFk INT - ,vlanded DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketManaToPromo`(vTicketFk INT) BEGIN - DECLARE vNewTicket INT; - CALL vn.ticketCreate(vClientId, vShipped, vWarehouseId, vCompanyFk, vAddressFk, vAgencyType, vRouteFk, vlanded,vNewTicket); - SELECT vNewTicket; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketManaToPromo` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketManaToPromo`(vTicketFk INT) -BEGIN - DECLARE vManaComponent INT; - + DECLARE vPromoComponent INT; SELECT id INTO vManaComponent - FROM vn.component c + FROM vn.component c WHERE c.code = 'mana'; - + SELECT id INTO vPromoComponent - FROM vn.component c + FROM vn.component c WHERE c.code = 'floramondoPromo'; - + UPDATE vn.saleComponent sc - JOIN vn.sale s ON s.id = sc.saleFk + JOIN vn.sale s ON s.id = sc.saleFk SET componentFk = vPromoComponent WHERE componentFk = vManaComponent AND s.ticketFk = vTicketFk; @@ -80399,29 +68068,29 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketMissed_List`(vTicketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketMissed_List`(vTicketFk INT) BEGIN DECLARE vParkingFk INT; DECLARE vParked DATETIME; DECLARE vLevel INT; DECLARE vCollectionFk INT; - - SELECT IFNULL(`level`,0), IFNULL(collectionFk,0) + + SELECT IFNULL(`level`,0), IFNULL(collectionFk,0) INTO vLevel, vCollectionFk FROM vn.ticketCollection WHERE ticketFk = vTicketFk LIMIT 1; - - SELECT created, parkingFk + + SELECT created, parkingFk INTO vParked, vParkingFk FROM vn.ticketParking WHERE ticketFk = vTicketFk; - + SELECT tp.ticketFk, CONCAT(tc.collectionFk, ' - ', tc.level) coleccion, tp.created, p.code, am.name as Agencia FROM vn.ticketParking tp JOIN vn.parking p ON p.id = tp.parkingFk @@ -80448,7 +68117,7 @@ BEGIN AND sc.isPackagingArea AND tp.created < vParked AND t.packages <=> 0); - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -80459,17 +68128,17 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketNotInvoicedByClient`(vClientFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketNotInvoicedByClient`(vClientFk INT) BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.ticket; - + CREATE TEMPORARY TABLE tmp.ticket SELECT id ticketFk FROM ticket @@ -80479,7 +68148,7 @@ BEGIN CALL vn.ticketGetTotal; - SELECT c.id, + SELECT c.id, c.name as Cliente, t.shipped as Fecha, t.id as Id_Ticket, @@ -80490,7 +68159,7 @@ BEGIN DROP TEMPORARY TABLE tmp.ticket, - tmp.ticketTotal; + tmp.ticketTotal; END ;; DELIMITER ; @@ -80498,59 +68167,32 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketPackagingRecovery` */; +/*!50003 DROP PROCEDURE IF EXISTS `ticketObservation_addNewBorn` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketPackagingRecovery`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketObservation_addNewBorn`(vTicketFk INT) BEGIN - /* Recupera los embalajes que han caido en el cliente 31 */ + /** + * Inserta observaciones para los tickets con clientes nuevos o recuperados + * + * @param vTicketFk Identificador de vn.ticket + */ - DECLARE done BOOL DEFAULT FALSE; - DECLARE vClientFk INT; - DECLARE vTicketFk INT; - DECLARE vTicketNewFk INT; - DECLARE vWarehouseFk INT; - DECLARE vShipped DATE; - DECLARE vCompanyFk INT; + DECLARE vDescription VARCHAR(20) DEFAULT '¡Cliente NUEVO! '; - DECLARE rs CURSOR FOR - SELECT DISTINCT tp.ticketFk, a.clientFk, t.warehouseFk, t.shipped, t.companyFk - FROM ticket t - JOIN ticketPackaging tp ON t.id = tp.ticketFk - JOIN address a ON a.id = t.addressFk - WHERE t.clientFk = 31 - AND t.shipped > '2001-01-01'; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - - OPEN rs; - - FETCH rs INTO vTicketFk, vClientFk, vWarehouseFk, vShipped, vCompanyFk; - - WHILE NOT done DO - - CALL vn.ticketCreate(vClientFk,vShipped,vWarehouseFk,vCompanyFk, NULL, NULL, NULL, - vShipped,vTicketNewFk); - - UPDATE vn.ticketPackaging set ticketFk = vTicketNewFk WHERE ticketFk = vTicketFk; - - CALL vn.ticketStateUpdate(vTicketNewFk, 'DELIVERED'); - - INSERT INTO vn.sale(ticketFk, itemFk, concept) VALUES(vTicketNewFk,90,CONCAT('Embalajes ',vTicketFk)); - - FETCH rs INTO vTicketFk, vClientFk, vWarehouseFk, vShipped, vCompanyFk; - - END WHILE; - - CLOSE rs; + INSERT INTO vn.ticketObservation(ticketFk, observationTypeFk, description) + SELECT vTicketFk, ot.id, vDescription + FROM vn.observationType ot + WHERE ot.hasNewBornMessage + ON DUPLICATE KEY UPDATE description = CONCAT(vDescription, ticketObservation.description); END ;; DELIMITER ; @@ -80562,45 +68204,45 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketParking_findSkipped`(vTicketFk INT, vItemPackingTypeFk VARCHAR(1)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketParking_findSkipped`(vTicketFk INT, vItemPackingTypeFk VARCHAR(1)) BEGIN - + /** * Averigua los tickets que se han saltado por un error en el proceso encajado * @param vTicketFk Ticket * @param vItemPackingTypeFk Modo de encajado * @return un select con los tickets afectados - */ + */ DECLARE vParkingFk INT; DECLARE vParked DATETIME; DECLARE vLevel INT; DECLARE vWagon INT; DECLARE vCollectionFk INT; - - SELECT IFNULL(`level`,0), IFNULL(`wagon`,0),IFNULL(collectionFk,0) + + SELECT IFNULL(`level`,0), IFNULL(`wagon`,0),IFNULL(collectionFk,0) INTO vLevel, vWagon, vCollectionFk FROM vn.ticketCollection tc JOIN vn.collection c ON c.id = tc.collectionFk AND c.itemPackingTypeFk = vItemPackingTypeFk WHERE ticketFk = vTicketFk ORDER BY c.id DESC LIMIT 1; - - SELECT created, parkingFk + + SELECT created, parkingFk INTO vParked, vParkingFk FROM vn.ticketParking tp - JOIN vn.parking p ON p.id = tp.parkingFk - JOIN vn.sector s ON s.id = p.sectorFk + JOIN vn.parking p ON p.id = tp.parkingFk + JOIN vn.sector s ON s.id = p.sectorFk WHERE ticketFk = vTicketFk AND s.itemPackingTypeFk = vItemPackingTypeFk AND s.isPackagingArea ; - + SELECT tp.ticketFk, CONCAT(tc.collectionFk, ' ', tc.wagon, ' - ', tc.level) coleccion, tp.created, p.code, am.name as Agencia FROM vn.ticketParking tp JOIN vn.parking p ON p.id = tp.parkingFk @@ -80617,9 +68259,9 @@ BEGIN AND ( ( IFNULL(tc.collectionFk,-1) != IFNULL(@vCollectionFk,0) AND tp.created < vParked ) OR - ( tc.collectionFk = vCollectionFk + ( tc.collectionFk = vCollectionFk AND (LEFT(tc.wagon,1) < LEFT(vWagon,1) - OR (LEFT(tc.wagon,1) = LEFT(vWagon,1) AND LEFT(tc.level,1) < LEFT(vLevel,1))) + OR (LEFT(tc.wagon,1) = LEFT(vWagon,1) AND LEFT(tc.level,1) < LEFT(vLevel,1))) ) ) ) -- Etiquetas que no se han escaneado y ya estamos con una posterior @@ -80627,7 +68269,7 @@ BEGIN (s.alertLevel > 1 AND tp.parkingFk = vParkingFk AND sc.isPackagingArea - AND tp.created < vParked + AND tp.created < vParked AND t.packages <=> 0); END ;; DELIMITER ; @@ -80635,24 +68277,55 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketRefund_beforeUpsert` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketRefund_beforeUpsert`(vRefundTicketFk INT, vOriginalTicketFk INT) +BEGIN + DECLARE vAlreadyExists BOOLEAN DEFAULT FALSE; + + IF vRefundTicketFk = vOriginalTicketFk THEN + CALL util.throw('Original ticket and refund ticket has same id'); + END IF; + + SELECT COUNT(*) INTO vAlreadyExists + FROM ticketRefund + WHERE originalTicketFk = vOriginalTicketFk; + + IF vAlreadyExists > 0 THEN + CALL util.throw('This ticket is already a refund'); + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketRequest_Add` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketRequest_Add`(vDescription VARCHAR(255), vQuantity INT, vPrice DOUBLE, vTicketFk INT, vBuyerCode VARCHAR(3)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketRequest_Add`(vDescription VARCHAR(255), vQuantity INT, vPrice DOUBLE, vTicketFk INT, vBuyerCode VARCHAR(3)) BEGIN - INSERT INTO vn.ticketRequest(description, - quantity, - price, - ticketFk, - buyerCode, + INSERT INTO vn.ticketRequest(description, + quantity, + price, + ticketFk, + buyerCode, requesterFk) VALUES(vDescription, vQuantity, @@ -80660,181 +68333,6 @@ BEGIN vTicketFk, vBuyerCode, vn.getUser()); - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketSplitCounter` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketSplitCounter`(vTicketFk INT) -BEGIN - -SELECT CONCAT(OK,'/',Total, IF(OK = Total ,' LS','')) - FROM - ( - SELECT sum(if(l.Id_Movimiento != 0,1,0)) as OK, COUNT(*) as Total - FROM vn.sale s - LEFT JOIN movement_label l ON l.Id_Movimiento = s.id - WHERE ticketFk = vTicketFk - ) sub; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketStatePrevious__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketStatePrevious__`(vTicketFk INT) -BEGIN - - DECLARE vControlFk INT; - DECLARE vLastWorkerFk INT; - DECLARE vStateId INT; - - SELECT MAX(inter_id) INTO vControlFk - FROM vncontrol.inter - WHERE Id_Ticket = vTicketFk; - - IF (SELECT s.code - FROM vn.state s - JOIN vncontrol.inter i ON i.state_id = s.id - WHERE i.inter_id = vControlFk) - = 'PREVIOUS_PREPARATION' THEN - - SELECT inter_id, Id_Trabajador - INTO vControlFk,vLastWorkerFk - FROM vncontrol.inter i - JOIN vn.state s ON i.state_id = s.id - WHERE Id_Ticket = vTicketFk - AND inter_id < vControlFk - AND s.code != 'PREVIOUS_PREPARATION' - ORDER BY inter_id DESC - LIMIT 1; - /* - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador, Id_Supervisor) - SELECT state_id, Id_Ticket, vLastWorkerFk, vn.getWorker() - FROM vncontrol.inter - WHERE inter_id = vControlFk; - */ - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador, Id_Supervisor) - SELECT s.nextStateFk, i.Id_Ticket, vLastWorkerFk, account.myUser_getId() - FROM vncontrol.inter i - JOIN vn.state s ON i.state_id = s.id - WHERE inter_id = vControlFk; - - SELECT state_id INTO vStateId - FROM vncontrol.inter - WHERE inter_id = vControlFk; - - END IF; - - /*DELETE FROM vn2008.Movimientos_mark - WHERE Id_Movimiento IN (SELECT Id_Movimiento FROM vn2008.Movimientos WHERE Id_Ticket = vTicketFk) - AND valor <> 1 - AND stateFk = 26; */ - - SELECT TRUE AS IsUpdated; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketStateToday_setOnchecking` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketStateToday_setOnchecking`(vParamFk INT) -BEGIN - /* - * @deprecated:utilizar ticketStateToday_setState - */ - - DECLARE vAlertLevel INT; - - SELECT s.alertLevel INTO vAlertLevel - FROM vn.state s - JOIN vn.ticketStateToday tst ON tst.state = s.id - WHERE tst.ticket = vParamFk - LIMIT 1; - - IF vAlertLevel < 2 THEN - - CALL vn.ticketStateUpdate(vParamFk, 'ON_CHECKING'); - - END IF; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketStateToday_setOnPreviousChecking` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketStateToday_setOnPreviousChecking`(vParamFk INT) -BEGIN - - /* - * @deprecated:utilizar ticketStateToday_setState - */ - - - /* - * Cambia el estado del ticket al estado de "control previa" - * - * @param vParamFk ticket a cambiar el estado - * - */ - DECLARE vAlertLevel INT; - - SELECT s.alertLevel INTO vAlertLevel - FROM state s - JOIN ticketStateToday tst ON tst.state = s.id - WHERE tst.ticket = vParamFk - LIMIT 1; - - IF vAlertLevel < 2 THEN - - CALL ticketStateUpdate(vParamFk, 'PREVIOUS_CONTROL'); - - END IF; END ;; DELIMITER ; @@ -80848,32 +68346,32 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketStateToday_setState`(vTicketFk INT, vStateCode VARCHAR(45)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketStateToday_setState`(vTicketFk INT, vStateCode VARCHAR(45)) BEGIN - + /* Modifica el estado de un ticket de hoy - * + * * @param vTicketFk el id del ticket * @param vStateCode estado a modificar del ticket - * + * */ - + DECLARE vAlertLevel INT; - - SELECT s.alertLevel INTO vAlertLevel - FROM state s - JOIN ticketStateToday tst ON tst.state = s.id + + SELECT s.alertLevel INTO vAlertLevel + FROM state s + JOIN ticketStateToday tst ON tst.state = s.id WHERE tst.ticket = vTicketFk LIMIT 1; - + IF vAlertLevel < 2 THEN - + CALL vn.ticket_setState(vTicketFk, vStateCode); - + END IF; END ;; @@ -80888,31 +68386,31 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketStateUpdate`(vTicketFk INT, vStateCode VARCHAR(45)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketStateUpdate`(vTicketFk INT, vStateCode VARCHAR(45)) BEGIN - + /* * @deprecated:utilizar ticket_setState */ - + DECLARE vAlertLevel INT; - SELECT s.alertLevel INTO vAlertLevel + SELECT s.alertLevel INTO vAlertLevel FROM vn.state s JOIN vn.ticketState ts ON ts.stateFk = s.id WHERE ts.ticketFk = vTicketFk; - - IF !(vStateCode = 'ON_CHECKING' AND vAlertLevel > 1) THEN - + + IF !(vStateCode = 'ON_CHECKING' AND vAlertLevel > 1) THEN + INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) SELECT id, vTicketFk, account.myUser_getId() - FROM vn.state + FROM vn.state WHERE `code` = vStateCode collate utf8_unicode_ci; - + END IF; END ;; @@ -80925,13 +68423,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketToInvoiceByAddress`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketToInvoiceByAddress`( vStarted DATE, vEnded DATETIME, vAddress INT, @@ -80957,53 +68455,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketToInvoiceByClient__` */; +/*!50003 DROP PROCEDURE IF EXISTS `ticketToInvoiceByDate` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketToInvoiceByClient__`( - vStarted DATE, - vEnded DATETIME, - vClient INT, - vCompany INT - ) -BEGIN - - SET vEnded = util.dayEnd(vEnded); - - DROP TEMPORARY TABLE IF EXISTS vn.ticketToInvoice; - - CREATE TEMPORARY TABLE vn.ticketToInvoice - SELECT id - FROM vn.ticket - WHERE clientFk = vClient - AND companyFk = vCompany - AND shipped BETWEEN vStarted AND vEnded - AND refFk IS NULL; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketToInvoiceByDate` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketToInvoiceByDate`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketToInvoiceByDate`( vStarted DATE, vEnded DATETIME, vClient INT, @@ -81033,13 +68495,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketToInvoiceByRef`(IN vInvoiceRef VARCHAR(15)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketToInvoiceByRef`(IN vInvoiceRef VARCHAR(15)) BEGIN /* Para tickets ya facturados, vuelve a repetir el proceso de facturación. @@ -81051,264 +68513,38 @@ BEGIN DECLARE vCountry INT; DECLARE vTaxArea VARCHAR(15); DECLARE vSpainCountryCode INT DEFAULT 1; - - SELECT id - INTO vInvoice - FROM vn.invoiceOut + + SELECT id + INTO vInvoice + FROM vn.invoiceOut WHERE ref = vInvoiceRef; - - SELECT s.countryFk + + SELECT s.countryFk INTO vCountry FROM vn.supplier s JOIN vn.invoiceOut io ON io.companyFk = s.id WHERE io.id = vInvoice; - + SELECT IF( - c.isEqualizated - AND c.countryFk = vSpainCountryCode + c.isEqualizated + AND c.countryFk = vSpainCountryCode AND i.taxAreaFk = 'NATIONAL', 'EQU', i.taxAreaFk ) INTO vTaxArea FROM vn.invoiceOutSerial i - JOIN vn.invoiceOut io ON io.serial = i.code + JOIN vn.invoiceOut io ON io.serial = i.code JOIN vn.client c ON c.id = io.clientFk WHERE io.id = vInvoice; - + DROP TEMPORARY TABLE IF EXISTS vn.ticketToInvoice; CREATE TEMPORARY TABLE vn.ticketToInvoice - SELECT id - FROM vn.ticket + SELECT id + FROM vn.ticket WHERE refFk = vInvoiceRef; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketToPrePrepare` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketToPrePrepare`(IN vSaleGroupFk INT, IN vSectorFk INT) -BEGIN - -/* Devuelve las lineas de vn.sale para preparación previa según el saleGroup - * - * - * @param vSaleGroupFk Identificador de vn.saleGroup -*/ - DECLARE vIsResetCode BOOLEAN; - - SELECT (vSaleGroupFk = 2000000) INTO vIsResetCode; - - IF vIsResetCode THEN - - UPDATE vn.saleTracking st - JOIN vn.state s ON s.code = 'OK PREVIOUS' - JOIN vn.state s2 ON s2.id = st.stateFk - SET st.stateFk = s.id - WHERE workerFk = vn.getUser() - AND s2.code = 'PREVIOUS_PREPARATION'; - - ELSE - - UPDATE vn.saleTracking st - JOIN vn.saleGroupDetail sgd ON sgd.saleFk = st.saleFk - SET workerFk = vn.getUser() - WHERE sgd.saleGroupFk = vSaleGroupFk; - - UPDATE vn.saleGroup sg - SET sg.userFk = vn.getUser() - WHERE sg.id = vSaleGroupFk; - - SELECT s.ticketFk, - s.itemFk, - i.longName, - IFNULL(i.itemPackingTypeFk,' ') itemPackingTypeFk, - IFNULL(i.subName ,' ') subName, - s.quantity originalQuantity , - s.quantity, - w.code workerCode, - sgd.saleFk, - IFNULL(iss.quantity,0) pickedQuantity, - vSectorFk - FROM vn.sale s - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.saleGroupDetail sgd ON sgd.saleFk = s.id - JOIN vn.saleTracking st ON st.saleFk = s.id - JOIN vn.state stt ON stt.id = st.stateFk - JOIN vn.worker w ON w.id = st.workerFk - LEFT JOIN vn.itemShelvingSaleSum iss ON iss.saleFk = s.id - WHERE st.workerFk = account.myUser_getId() - AND stt.code = 'PREVIOUS_PREPARATION'; - - END IF; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketToPrePrepare_BETA` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketToPrePrepare_BETA`() -BEGIN - -/* Devuelve las lineas de vn.sale para preparación previa según el saleGroup - * - * - * @param vSaleGroupFk Identificador de vn.saleGroup -*/ - DECLARE vIsResetCode BOOLEAN; - - - - IF vIsResetCode THEN - - UPDATE vn.saleTracking st - JOIN vn.state s ON s.code = 'OK PREVIOUS' - JOIN vncontrol.accion a ON a.accion_id = st.actionFk - JOIN vn.state s2 ON s2.id = st.stateFk - SET st.stateFk = s.id - WHERE workerFk = vn.getUser() - AND a.accion = 'PRESACAR' - AND s2.code != 'OK PREVIOUS'; - - ELSE - - - - SELECT s.ticketFk, - s.itemFk, - i.longName, - i.itemPackingTypeFk, - i.subName, - s.quantity originalQuantity , - s.quantity, - w.code workerCode, - sgd.saleFk, - IFNULL(iss.quantity,0) pickedQuantity - FROM vn.sale s - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.saleGroupDetail sgd ON sgd.saleFk = s.id - JOIN vn.saleTracking st ON st.saleFk = s.id - JOIN vn.state stt ON stt.id = st.stateFk - JOIN vn.worker w ON w.id = st.workerFk - LEFT JOIN vn.itemShelvingSaleSum iss ON iss.saleFk = s.id - WHERE st.workerFk = 14348 - AND stt.code = 'PREVIOUS_PREPARATION'; - - END IF; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketToPrePrepare__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketToPrePrepare__`(IN vIdTicket INT, IN viewAll BOOL, IN vSectorFk INT) -BEGIN - -/* Tickets de preparacion previa (artificial) 21/03/2021 PAK -*/ - -/* Tickets de preparacion previa (artificial) 21/03/2021 PAK -*/ - - DECLARE vIsResetCode BOOLEAN; - -IF viewAll IS true THEN - - SELECT (vIdTicket = 2000000) INTO vIsResetCode; - - IF vIsResetCode THEN - - UPDATE vn.saleTracking st - JOIN vn.state s ON s.code = 'OK PREVIOUS' - JOIN vncontrol.accion a ON a.accion_id = st.actionFk - JOIN vn.state s2 ON s2.id = st.stateFk - SET st.stateFk = s.id - WHERE workerFk = vn.getUser() - AND (a.accion = 'PRESACAR') - AND st.created > TIMESTAMPADD(HOUR, -10, NOW()); - - ELSE - - UPDATE vn.saleTracking st - JOIN vn.salesToPrePrepare stpp ON stpp.Id_Movimiento_mark = st.id - SET workerFk = vn.getUser() - WHERE stpp.Id_Ticket = vIdTicket - AND stpp.isChecked = FALSE; - - SELECT stpp.Id_Ticket, - stpp.Id_Movimiento, - stpp.Id_Movimiento_mark, - stpp.Id_Trabjador, - stpp.Id_Article, - i.itemPackingTypeFk packingType, - stpp.Concepte Concepte, - stpp.subName, - stpp.Cantidad, - stpp.original_quantity, - stpp.Hora, - stpp.Departure, - stpp.Minuto, - stpp.agency_id, - stpp.warehouse_id, - stpp.province_id, - stpp.picked, - stpp.trabajador, - ispss.created, - ispss.sectorFk - FROM vn.salesToPrePrepare stpp - JOIN vn.worker w ON w.code = stpp.trabajador - LEFT JOIN vn.itemShelvingPlacementSupplyStock ispss - ON ispss.itemShelvingFk = ( SELECT itemShelvingFk - FROM vn.itemShelvingPlacementSupplyStock - WHERE itemFk = stpp.Id_Article - AND sectorFk = vSectorFk - ORDER BY parking ASC - LIMIT 1) - LEFT JOIN vn.parking p ON p.id = ispss.parkingFk - LEFT JOIN vn.item i ON i.id = stpp.Id_Article - JOIN vn.state s ON s.id = stpp.stateFk - WHERE w.id = vn.getUser() - AND stpp.created > CURDATE() - AND s.code = 'PREVIOUS_PREPARATION' - ORDER BY p.pickingOrder, p.column ASC; - - END IF; - -END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -81319,13 +68555,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketTrackingAdd`(vTicketFk INT, vState VARCHAR(25) CHARSET UTF8, vWorkerFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketTrackingAdd`(vTicketFk INT, vState VARCHAR(25) CHARSET UTF8, vWorkerFk INT) BEGIN /** * Inserta un registro de cambios en un ticket. @@ -81341,170 +68577,68 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketVolumeByDate_ventas_Artificial__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketVolumeByDate_ventas_Artificial__`(vDate DATE) -BEGIN - - DECLARE vDateStart DATETIME DEFAULT DATE(vDate); - DECLARE vDateEnd DATETIME DEFAULT util.dayEnd(vDate); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketVolumeByDate_Artificial; - - CREATE TEMPORARY TABLE tmp.ticketVolumeByDate_Artificial - ENGINE = MEMORY - SELECT s.ticketFk, - CAST(SUM(r.cm3 * s.quantity) / 1000000 AS DECIMAL(10,2)) as m3 - FROM sale s - JOIN bs.ventas v ON v.Id_Movimiento = s.id - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.sector sc ON sc.id = i.sectorFk - JOIN vn.ticket t on t.id = s.ticketFk - JOIN bi.rotacion r ON r.Id_Article = s.itemFk AND r.warehouse_id = t.warehouseFk - WHERE sc.description = 'Artificial' - AND t.shipped BETWEEN vDateStart AND vDateEnd - GROUP BY s.ticketFk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketVolumeByDate_ventas__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketVolumeByDate_ventas__`(vDate DATE) -BEGIN - - DECLARE vDateStart DATETIME DEFAULT DATE(vDate); - DECLARE vDateEnd DATETIME DEFAULT util.dayEnd(vDate); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketVolumeByDate; - - CREATE TEMPORARY TABLE tmp.ticketVolumeByDate - ENGINE = MEMORY - SELECT s.ticketFk, - CAST(SUM(r.cm3 * s.quantity) / 1000000 AS DECIMAL(10,2)) as m3 - FROM sale s - JOIN bs.ventas v ON v.Id_Movimiento = s.id - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory ic ON ic.id = it.categoryFk - JOIN vn.ticket t on t.id = s.ticketFk - JOIN bi.rotacion r ON r.Id_Article = s.itemFk AND r.warehouse_id = t.warehouseFk - WHERE ic.merchandise - AND t.shipped BETWEEN vDateStart AND vDateEnd - AND it.name NOT IN ('Accesorios Funerarios','Composiciones planta','Composición bajo pedido','Coronas y centros') - GROUP BY s.ticketFk; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketVolumeByDate__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketVolumeByDate__`(vDate DATE) -BEGIN - - DECLARE vDateStart DATETIME DEFAULT DATE(vDate); - DECLARE vDateEnd DATETIME DEFAULT util.dayEnd(vDate); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketVolumeByDate; - - CREATE TEMPORARY TABLE tmp.ticketVolumeByDate - ENGINE = MEMORY - SELECT s.ticketFk, - CAST(SUM(ic.cm3delivery * s.quantity) / 1000000 AS DECIMAL(10,2)) as m3 - FROM sale s - JOIN vn.item i ON i.id = s.itemFk - JOIN vn.itemType it ON it.id = i.typeFk - JOIN vn.itemCategory c ON c.id = it.categoryFk - JOIN vn.ticket t on t.id = s.ticketFk - JOIN vn.itemCost ic ON ic.itemFk = s.itemFk AND ic.warehouseFk = t.warehouseFk - WHERE c.merchandise - AND t.shipped BETWEEN vDateStart AND vDateEnd - GROUP BY s.ticketFk; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticket_add` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_add`( - vClientId INT - ,vShipped DATE - ,vWarehouseFk INT - ,vCompanyFk INT - ,vAddressFk INT - ,vAgencyModeFk INT - ,vRouteFk INT - ,vlanded DATE - ,vUserId INT - ,vIsRequiredZone INT - ,OUT vNewTicket INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_add`( + vClientId INT + ,vShipped DATE + ,vWarehouseFk INT + ,vCompanyFk INT + ,vAddressFk INT + ,vAgencyModeFk INT + ,vRouteFk INT + ,vlanded DATE + ,vUserId INT + ,vIsRequiredZone INT + ,OUT vNewTicket INT) BEGIN - DECLARE vZoneFk INT; - DECLARE vPrice DECIMAL(10,2); - DECLARE vBonus DECIMAL(10,2); - - IF vClientId IS NULL THEN - CALL util.throw ('CLIENT_NOT_ESPECIFIED'); + DECLARE vPrice DECIMAL(10,2); + DECLARE vBonus DECIMAL(10,2); + DECLARE vIsActive BOOL; + + IF vClientId IS NULL THEN + CALL util.throw ('CLIENT_NOT_ESPECIFIED'); + END IF; + + SELECT isActive INTO vIsActive + FROM vn.client + WHERE id = vClientId; + + IF NOT vIsActive THEN + CALL util.throw ('CLIENT_NOT_ACTIVE'); END IF; IF NOT vAddressFk OR vAddressFk IS NULL THEN - SELECT id INTO vAddressFk - FROM address - WHERE clientFk = vClientId AND isDefaultAddress; - END IF; - + SELECT id INTO vAddressFk + FROM address + WHERE clientFk = vClientId + AND isDefaultAddress; + END IF; + IF vAgencyModeFk IS NOT NULL THEN - CALL vn.zone_getShipped (vlanded, vAddressFk, vAgencyModeFk, TRUE); - - SELECT zoneFk, price, bonus INTO vZoneFk, vPrice, vBonus + + SELECT zoneFk, price, bonus + INTO vZoneFk, vPrice, vBonus FROM tmp.zoneGetShipped - WHERE shipped = vShipped AND warehouseFk = vWarehouseFk LIMIT 1; - + WHERE shipped = vShipped + AND warehouseFk = vWarehouseFk + LIMIT 1; + IF (vZoneFk IS NULL OR vZoneFk = 0) AND vIsRequiredZone THEN - CALL util.throw ('NOT_ZONE_WITH_THIS_PARAMETERS'); + CALL util.throw ('NOT_ZONE_WITH_THIS_PARAMETERS'); END IF; END IF; + INSERT INTO ticket ( clientFk, shipped, @@ -81515,23 +68649,22 @@ BEGIN routeFk, companyFk, landed, - zoneFk, - zonePrice, - zoneBonus + zoneFk, + zonePrice, + zoneBonus ) - SELECT - vClientId, - vShipped, - a.id, - vAgencyModeFk, - a.nickname, - vWarehouseFk, - IF(vRouteFk,vRouteFk,NULL), - vCompanyFk, - vlanded, - vZoneFk, - vPrice, - vBonus + SELECT vClientId, + vShipped, + a.id, + vAgencyModeFk, + a.nickname, + vWarehouseFk, + IF(vRouteFk,vRouteFk,NULL), + vCompanyFk, + vlanded, + vZoneFk, + vPrice, + vBonus FROM address a JOIN agencyMode am ON am.id = a.agencyModeFk WHERE a.id = vAddressFk; @@ -81544,7 +68677,15 @@ BEGIN JOIN address a ON a.id = ao.addressFk WHERE a.id = vAddressFk; - INSERT INTO vn.ticketLog + IF (SELECT COUNT(*) + FROM bs.clientNewBorn cnb + WHERE cnb.clientFk = vClientId + AND NOT cnb.isRookie) = 0 THEN + + CALL vn.ticketObservation_addNewBorn(vNewTicket); + END IF; + + INSERT INTO vn.ticketLog SET originFk = vNewTicket, userFk = vUserId, `action` = 'insert', description = CONCAT('Ha creado el ticket:', ' ', vNewTicket); IF (SELECT ct.isCreatedAsServed FROM vn.clientType ct JOIN vn.client c ON c.typeFk = ct.code WHERE c.id = vClientId ) <> FALSE THEN @@ -81563,28 +68704,121 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_administrativeCopy`(vOriginalTicket INT, OUT vNewTicket INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_administrativeCopy`(vOriginalTicket INT, OUT vNewTicket INT) BEGIN - + INSERT INTO vn.ticket(clientFk, addressFk, shipped, warehouseFk, companyFk, landed) - SELECT t.clientFk , t.addressFk , t.shipped ,w.id, t.companyFk , t.landed + SELECT t.clientFk , t.addressFk , t.shipped ,w.id, t.companyFk , t.landed FROM vn.ticket t JOIN vn.warehouse w ON w.name = 'INVENTARIO' WHERE t.id = vOriginalTicket; - + SELECT LAST_INSERT_ID() INTO vNewTicket; INSERT INTO vn.sale(ticketFk, itemFk, concept, quantity, price, discount) - SELECT vNewTicket, s.itemFk , s.concept , s.quantity , s.price , s.discount + SELECT vNewTicket, s.itemFk , s.concept , s.quantity , s.price , s.discount FROM vn.sale s WHERE s.ticketFk = vOriginalTicket; - + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_canAdvance` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_canAdvance`(vDated DATE, vWarehouseFk INT) +BEGIN +/** + * Devuelve los tickets y la cantidad de lineas de venta que se pueden adelantar. + * + * @param vDated Fecha de los tickets que se quieren adelantar. + * @param vWarehouseFk Almacén + */ + DECLARE vDateInventory DATE; + DECLARE vDateToAdvance DATE; + + SELECT inventoried INTO vDateInventory FROM vn.config; + + SET vDateToAdvance = TIMESTAMPADD(DAY,-1,vDated); + + DROP TEMPORARY TABLE IF EXISTS tmp.stock; + CREATE TEMPORARY TABLE tmp.stock + (itemFk INT PRIMARY KEY, + amount INT) + ENGINE = MEMORY; + + INSERT INTO tmp.stock(itemFk, amount) + SELECT itemFk, SUM(quantity) amount FROM + ( + SELECT itemFk, quantity + FROM vn.itemTicketOut + WHERE shipped >= vDateInventory + AND shipped < vDated + AND warehouseFk = vWarehouseFk + UNION ALL + SELECT itemFk, quantity + FROM vn.itemEntryIn + WHERE landed >= vDateInventory + AND landed < vDated + AND isVirtualStock = FALSE + AND warehouseInFk = vWarehouseFk + UNION ALL + SELECT itemFk, quantity + FROM vn.itemEntryOut + WHERE shipped >= vDateInventory + AND shipped < vDated + AND warehouseOutFk = vWarehouseFk + ) t + GROUP BY itemFk HAVING amount != 0; + + SELECT s.ticketFk ticketFuture, + sum((s.quantity <= IFNULL(st.amount,0))) hasStock, + count(DISTINCT s.id) saleCount, + st.name tfState, + GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk) tfIpt, + t2.ticketFk, + t2.state, + t2.ipt + FROM vn.ticket t + JOIN vn.ticketState ts ON ts.ticketFk = t.id + JOIN vn.state st ON st.id = ts.stateFk + LEFT JOIN (SELECT + t2.id ticketFk, + t2.addressFk, + st.name state, + GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk) ipt + FROM vn.ticket t2 + JOIN vn.sale s ON s.ticketFk = t2.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.ticketState ts ON ts.ticketFk = t2.id + JOIN vn.state st ON st.id = ts.stateFk + WHERE t2.shipped BETWEEN vDateToAdvance AND util.dayend(vDateToAdvance) + AND t2.warehouseFk = vWarehouseFk + GROUP BY t2.id) t2 ON t2.addressFk = t.addressFk + JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + LEFT JOIN tmp.stock st ON st.itemFk = s.itemFk + WHERE t.shipped BETWEEN vDated AND util.dayend(vDated) + AND t.warehouseFk = vWarehouseFk + GROUP BY t.id; + + DROP TEMPORARY TABLE tmp.stock; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -81597,50 +68831,67 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_canMerge`(vDated DATE, vScopeDays INT, vLitersMax INT, vLinesMax INT, vWarehouseFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_canMerge`(vDated DATE, vScopeDays INT, vLitersMax INT, vLinesMax INT, vWarehouseFk INT) BEGIN - - /* Devuelve un listado de tickets susceptibles de fusionarse con otros tickets en el futuro - * - * @param vDated Fecha en cuestión - * @param vScopeDays Dias en el futuro a sondear - * @param vLitersMax Volumen máximo de los tickets a catapultar - * @param vLinesMax Número máximo de lineas de los tickets a catapultar - * @param vWarehouseFk Identificador de vn.warehouse - */ - - SELECT sv.ticketFk , - CAST(sum(litros) AS DECIMAL(10,0)) liters, - CAST(count(*) AS DECIMAL(10,0)) `lines`, +/** + * Devuelve un listado de tickets susceptibles de fusionarse con otros tickets en el futuro + * + * @param vDated Fecha en cuestión + * @param vScopeDays Dias en el futuro a sondear + * @param vLitersMax Volumen máximo de los tickets a catapultar + * @param vLinesMax Número máximo de lineas de los tickets a catapultar + * @param vWarehouseFk Identificador de vn.warehouse + */ + SELECT sv.ticketFk , + GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk) ipt, + CAST(sum(litros) AS DECIMAL(10,0)) liters, + CAST(count(*) AS DECIMAL(10,0)) `lines`, + st.name state, sub2.id ticketFuture, - sub2.shipped - FROM vn.saleVolume sv - JOIN vn.ticket t ON t.id = sv.ticketFk - JOIN vn.address a ON a.id = t.addressFk - JOIN vn.province p ON p.id = a.provinceFk - JOIN vn.country c ON c.id = p.countryFk + sub2.shipped, + sub2.iptd tfIpt, + sub2.state tfState + FROM vn.saleVolume sv + JOIN vn.sale s ON s.id = sv.saleFk + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.ticket t ON t.id = sv.ticketFk + JOIN vn.address a ON a.id = t.addressFk + JOIN vn.province p ON p.id = a.provinceFk + JOIN vn.country c ON c.id = p.countryFk JOIN vn.ticketState ts ON ts.ticketFk = t.id - JOIN vn.alertLevel al ON al.id = ts.alertLevel + JOIN vn.state st ON st.id = ts.stateFk + JOIN vn.alertLevel al ON al.id = ts.alertLevel LEFT JOIN vn.ticketParking tp ON tp.ticketFk = t.id LEFT JOIN ( - SELECT * FROM ( - SELECT t.addressFk , t.id, t.shipped - FROM vn.ticket t - WHERE t.shipped BETWEEN TIMESTAMPADD(DAY, vScopeDays,vDated) - AND util.dayend(TIMESTAMPADD(DAY, vScopeDays,vDated)) - AND t.warehouseFk = vWarehouseFk - ) sub - GROUP BY sub.addressFk - ) sub2 ON sub2.addressFk = t.addressFk AND t.id != sub2.id + SELECT * + FROM ( + SELECT + t.addressFk , + t.id, + t.shipped, + st.name state, + GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk) iptd + FROM vn.ticket t + JOIN vn.ticketState ts ON ts.ticketFk = t.id + JOIN vn.state st ON st.id = ts.stateFk + JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + WHERE t.shipped BETWEEN TIMESTAMPADD(DAY, vScopeDays,vDated) + AND util.dayend(TIMESTAMPADD(DAY, vScopeDays,vDated)) + AND t.warehouseFk = vWarehouseFk + GROUP BY t.id + ) sub + GROUP BY sub.addressFk + ) sub2 ON sub2.addressFk = t.addressFk AND t.id != sub2.id WHERE t.shipped BETWEEN vDated AND util.dayend(vDated) AND t.warehouseFk = vWarehouseFk AND al.code = 'FREE' AND tp.ticketFk IS NULL - GROUP BY sv.ticketFk + GROUP BY sv.ticketFk HAVING liters <= vLitersMax AND `lines` <= vLinesMax AND ticketFuture; END ;; DELIMITER ; @@ -81648,107 +68899,47 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticket_canMerge__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_canMerge__`(vDated DATE, vScopeDays INT, vLitersMax INT, vLinesMax INT, vWarehouseFk INT) -BEGIN - - /* Devuelve un listado de tickets susceptibles de fusionarse con otros tickets en el futuro - * - * @param vDated Fecha en cuestión - * @param vScopeDays Dias en el futuro a sondear - * @param vLitersMax Volumen máximo de los tickets a catapultar - * @param vLinesMax Número máximo de lineas de los tickets a catapultar - * @param vWarehouseFk Identificador de vn.warehouse - */ - - SELECT sv.ticketFk , - CAST(sum(litros) AS DECIMAL(10,0)) liters, - CAST(count(*) AS DECIMAL(10,0)) `lines`, - sub2.id ticketFuture, - sub2.shipped - FROM vn.saleVolume sv - JOIN vn.ticket t ON t.id = sv.ticketFk - JOIN vn.address a ON a.id = t.addressFk - JOIN vn.province p ON p.id = a.provinceFk - JOIN vn.country c ON c.id = p.countryFk - JOIN vn.ticketState ts ON ts.ticketFk = t.id - JOIN vn.alertLevel al ON al.id = ts.alertLevel - LEFT JOIN vn.ticketParking tp ON tp.ticketFk = t.id - LEFT JOIN tmp.routeDayMove ra ON ra.routeFk = t.routeFk - LEFT JOIN ( - SELECT * FROM ( - SELECT t.addressFk , t.id, t.shipped - FROM vn.ticket t - WHERE t.shipped BETWEEN TIMESTAMPADD(DAY, vScopeDays,vDated) - AND util.dayend(TIMESTAMPADD(DAY, vScopeDays,vDated)) - AND t.warehouseFk = vWarehouseFk - ) sub - GROUP BY sub.addressFk - ) sub2 ON sub2.addressFk = t.addressFk AND t.id != sub2.id - WHERE t.shipped BETWEEN vDated AND util.dayend(vDated) - AND t.warehouseFk = vWarehouseFk - AND al.code = 'FREE' - AND tp.ticketFk IS NULL - AND ra.routeFk IS NULL - GROUP BY sv.ticketFk - HAVING liters <= vLitersMax AND `lines` <= vLinesMax AND ticketFuture; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticket_changeClient` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_changeClient`(vNewClient INT, vUserFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_changeClient`(vNewClient INT, vUserFk INT) BEGIN - + /** * Dado un conjunto de tickets * cambia el cliente al nuevo cliente dado - * + * * params @vNewClient nuevo cliente * params @vUserFk usuario que realiza el cambio - * + * * table @tmp.ticket(ticketFk) conjunto de tickets */ - + INSERT INTO ticketLog (originFk, userFk, `action`, changedModel, oldInstance, newInstance) SELECT t.id, vUserFk, 'update', 'Ticket', CONCAT('{"clientFk":',t.clientFk,'}'), CONCAT('{"clientFk":',vNewClient,'}') FROM ticket t - JOIN tmp.ticket tt + JOIN tmp.ticket tt ON t.id = tt.ticketFk; - + UPDATE ticket t JOIN tmp.ticket tt ON t.id = tt.ticketFk SET t.clientFk = vNewClient; - + UPDATE ticket t JOIN tmp.ticket tt ON t.id = tt.ticketFk JOIN stowaway s ON s.shipFk = tt.ticketFk SET t.clientFk = vNewClient; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -81761,42 +68952,42 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_checkFullyControlled`(vWorkerFk INT, vTicketFk INT ) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_checkFullyControlled`(vWorkerFk INT, vTicketFk INT ) BEGIN /** - * Comprueba que no hay ningún ticket pendiente de revisar de alguna colección que haya revisado el trabajador + * Comprueba que no hay ningún ticket pendiente de revisar de alguna colección que haya revisado el trabajador * @param vWorkerFk id del user * @param vTicketFk número de ticket escaneada - * + * */ - + SELECT t.id - FROM ticket t - JOIN sale s ON s.ticketFk = t.id + FROM ticket t + JOIN sale s ON s.ticketFk = t.id JOIN ticketCollection tc ON tc.ticketFk = t.id - JOIN (SELECT tc.collectionFk - FROM ticketState ts + JOIN (SELECT tc.collectionFk + FROM ticketState ts JOIN ticketCollection tc ON tc.ticketFk = ts.ticketFk - LEFT JOIN (SELECT tc.collectionFk - FROM ticketCollection tc + LEFT JOIN (SELECT tc.collectionFk + FROM ticketCollection tc WHERE ticketFk = vTicketFk - AND tc.created >= CURDATE() + AND tc.created >= util.VN_CURDATE() )sub ON sub.collectionFk = tc.collectionFk WHERE ts.workerFk = vWorkerFk AND sub.collectionFk IS NULL - AND tc.created >= CURDATE() + AND tc.created >= util.VN_CURDATE() GROUP BY tc.collectionFk - )sub ON sub.collectionFk = tc.collectionFk + )sub ON sub.collectionFk = tc.collectionFk JOIN ticketState ts ON ts.ticketFk = t.id - WHERE ts.code IN ('ON_PREPARATION', 'PREPARED', 'PREVIOUS_PREPARATION', 'OK PREVIOUS') - AND t.shipped >= CURDATE() + WHERE ts.code IN ('ON_PREPARATION', 'PREPARED', 'PREVIOUS_PREPARATION', 'OK PREVIOUS') + AND t.shipped >= util.VN_CURDATE() AND s.quantity <>0 LIMIT 1; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -81809,17 +69000,17 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_checkNoComponents`(vShippedFrom DATETIME, vShippedTo DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_checkNoComponents`(vShippedFrom DATETIME, vShippedTo DATETIME) BEGIN /** * Comprueba que los tickets entre un rango de fechas tienen componentes * - * @param vShippedFrom rango inicial de fecha + * @param vShippedFrom rango inicial de fecha * @param vShippedTo rango final de fecha */ DECLARE v_done BOOL DEFAULT FALSE; @@ -81838,9 +69029,9 @@ BEGIN AND clt.isActive != 0 AND ic.merchandise != 0 GROUP BY s.id; - + DECLARE CONTINUE HANDLER FOR NOT FOUND - SET v_done = TRUE; + SET v_done = TRUE; DROP TEMPORARY TABLE IF EXISTS tmp.coste; @@ -81859,7 +69050,7 @@ BEGIN JOIN componentType ct ON ct.id = c.typeFk AND ct.id = 1 WHERE t.shipped >= vShippedFrom AND ic.merchandise != 0; - + OPEN vCur; l: LOOP @@ -81873,8 +69064,8 @@ BEGIN CALL sale_calculateComponent(vSaleFk, 1); END LOOP; - CLOSE vCur; - DROP TEMPORARY TABLE tmp.coste; + CLOSE vCur; + DROP TEMPORARY TABLE tmp.coste; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -81885,20 +69076,20 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_Clone`(vOriginalTicket INT, OUT vNewTicket INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_Clone`(vOriginalTicket INT, OUT vNewTicket INT) BEGIN /** * Clona el contenido de un ticket en otro * * @param vOriginalTicket ticket Original * @param vNewTicket ticket creado - */ + */ DECLARE vStateFk INT; INSERT INTO ticket ( @@ -81915,7 +69106,7 @@ BEGIN zoneBonus, routeFk, priority, - hasPriority + hasPriority ) SELECT clientFk, @@ -81931,29 +69122,29 @@ BEGIN zoneBonus, routeFk, priority, - hasPriority + hasPriority FROM ticket WHERE id = vOriginalTicket; SET vNewTicket = LAST_INSERT_ID(); - + INSERT INTO ticketObservation(ticketFk, observationTypeFk, description) SELECT vNewTicket, ao.observationTypeFk, ao.description FROM addressObservation ao JOIN ticket t ON t.addressFk = ao.addressFk WHERE t.id = vNewTicket; - + INSERT INTO ticketLog - SET originFk = vNewTicket, userFk = account.myUser_getId(), `action` = 'insert', + SET originFk = vNewTicket, userFk = account.myUser_getId(), `action` = 'insert', description = CONCAT('Ha creado el ticket:', ' ', vNewTicket, ' clonando el ', vOriginalTicket); - + INSERT INTO ticketLog - SET originFk = vOriginalTicket, userFk = account.myUser_getId(), `action` = 'insert', + SET originFk = vOriginalTicket, userFk = account.myUser_getId(), `action` = 'insert', description = CONCAT('Ha creado el ticket:', ' ', vNewTicket, ' clonando el ', vOriginalTicket); INSERT INTO vncontrol.inter(Id_Ticket, state_id, Id_Trabajador, odbc_date) SELECT vNewTicket, state_id, Id_Trabajador , odbc_date - FROM vncontrol.inter + FROM vncontrol.inter WHERE Id_Ticket = vOriginalTicket ORDER BY odbc_date; END ;; @@ -81968,11 +69159,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_cloneWeekly`(IN vWeek INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_cloneWeekly`(IN vWeek INT) BEGIN DECLARE vIsDone BOOL; DECLARE vLanding DATE; @@ -81986,16 +69177,16 @@ BEGIN DECLARE vAgencyModeFk INT; DECLARE vNewTicket INT; DECLARE vYear INT; - + DECLARE rsTicket CURSOR FOR SELECT tt.ticketFk, tt.weekDay, t.clientFk, t.warehouseFk, t.companyFk, t.addressFk, tt.agencyModeFk - FROM vn.ticketWeekly tt + FROM vn.ticketWeekly tt JOIN vn.ticket t ON tt.ticketFk = t.id; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vIsDone = TRUE; - SET vYear = YEAR(CURDATE()) + IF(vWeek < WEEK(CURDATE()),1, 0); - + SET vYear = YEAR(util.VN_CURDATE()) + IF(vWeek < WEEK(util.VN_CURDATE()),1, 0); + OPEN rsTicket; myLoop: LOOP BEGIN @@ -82011,7 +69202,7 @@ BEGIN LEAVE myLoop; END IF; - SELECT dated INTO vShipment + SELECT dated INTO vShipment FROM `time` WHERE `year` = vYear AND `week` = vWeek AND WEEKDAY(dated) = vWeekDay; @@ -82022,52 +69213,52 @@ BEGIN JOIN vn.saleCloned sc ON sc.saleOriginalFk = saleOrig.id JOIN vn.sale saleClon ON saleClon.id = sc.saleClonedFk JOIN vn.ticket tClon ON tClon.id = saleClon.ticketFk - WHERE tOrig.id = vTicketFk AND tClon.isDeleted = FALSE AND DATE(tClon.shipped) = vShipment) > 0 + WHERE tOrig.id = vTicketFk AND tClon.isDeleted = FALSE AND DATE(tClon.shipped) = vShipment) > 0 THEN ITERATE myLoop; END IF; - + IF vAgencyModeFk IS NULL THEN - SELECT agencyModeFk INTO vAgencyModeFk + SELECT agencyModeFk INTO vAgencyModeFk FROM address WHERE clientFk = vClientFk AND isDefaultAddress; END IF; - + CALL vn.zone_getLanded(vShipment, vAddressFk, vAgencyModeFk, vWarehouseFk,FALSE); SET vLanding = NULL; SELECT landed INTO vLanding from tmp.zoneGetLanded LIMIT 1; - + CALL ticket_add( - vClientFk, - vShipment, - vWarehouseFk, - vCompanyFk, - vAddressFk, - vAgencyModeFk, - NULL, - vLanding, - account.userGetId(), - FALSE, + vClientFk, + vShipment, + vWarehouseFk, + vCompanyFk, + vAddressFk, + vAgencyModeFk, + NULL, + vLanding, + account.myUser_getId(), + FALSE, vNewTicket); IF (vLanding IS NULL) THEN - + SELECT e.email INTO vSalesPersonEmail FROM vn.client c JOIN vn.worker sp ON sp.id = c.salesPersonFk JOIN account.emailUser e ON e.userFk = sp.userFk WHERE c.id = vClientFk; - + SET vSubject = CONCAT('Turnos - No se ha podido clonar correctamente el ticket ', vTicketFk, ' para el dia: ', vShipment); - SET vMessage = CONCAT('No se ha podido clonar el ticket ', vTicketFk, - ' para el dia: ', vShipment, - ' porque no hay una zona de envío disponible. Se ha creado el ticket: ', vNewTicket, + SET vMessage = CONCAT('No se ha podido clonar el ticket ', vTicketFk, + ' para el dia: ', vShipment, + ' porque no hay una zona de envío disponible. Se ha creado el ticket: ', vNewTicket, ' pero ha que revisar las fechas y la agencia'); - + SELECT COUNT(*) INTO vMailSent - FROM vn.mail - WHERE receiver = vSalesPersonEmail + FROM vn.mail + WHERE receiver = vSalesPersonEmail AND subject = vSubject; IF NOT vMailSent THEN @@ -82075,183 +69266,37 @@ BEGIN END IF; CALL vn.ticketStateUpdate (vNewTicket, 'FIXING'); END IF; - + INSERT INTO vn.sale (ticketFk, itemFk, concept, quantity, price, discount, priceFixed, isPriceFixed) SELECT vNewTicket, saleOrig.itemFk , saleOrig.concept , saleOrig.quantity, saleOrig.price , saleOrig.discount, saleOrig.priceFixed, saleOrig.isPriceFixed - FROM vn.sale saleOrig - WHERE saleOrig.ticketFk = vTicketFk; - + FROM vn.sale saleOrig + WHERE saleOrig.ticketFk = vTicketFk; + INSERT IGNORE INTO vn.saleCloned(saleOriginalFk, saleClonedFk) - SELECT saleOriginal.id, saleClon.id + SELECT saleOriginal.id, saleClon.id FROM vn.sale saleOriginal JOIN vn.sale saleClon ON saleOriginal.itemFk = saleClon.itemFk AND saleOriginal.quantity = saleClon.quantity WHERE saleOriginal.ticketFk = vTicketFk AND saleClon.ticketFk = vNewTicket; - - INSERT INTO ticketRequest (description,ordered,shipped,salesPersonCode,buyerCode,quantity,price,itemFk,clientFk,response, - total,buyed,saleFk) - SELECT o.description,o.ordered,vShipment,o.salesPersonCode,o.buyerCode,o.quantity,o.price,o.itemFk,o.clientFk,o.response, - o.total,o.buyed,s2.id - FROM sale s JOIN ticketRequest o ON o.saleFk = s.id - JOIN sale s2 ON s.concept = s2.concept AND s.quantity = s2.quantity AND s.itemFk = s2.itemFk - WHERE s.ticketFk = vTicketFk AND s2.ticketFk = vNewTicket; - + + INSERT INTO ticketRequest (description,ordered,shipped,quantity,price,itemFk,clientFk,response, + total,buyed,requesterFk,attenderFk,ticketFk) + SELECT description,ordered,shipped,quantity,price,itemFk,clientFk,response, + total,buyed,requesterFk,attenderFk,vNewTicket + FROM ticketRequest + WHERE ticketFk =vTicketFk; + INSERT INTO ticketObservation(ticketFk,observationTypeFk,description) VALUES(vNewTicket,4,CONCAT('turno desde ticket: ',vTicketFk)) - ON DUPLICATE KEY UPDATE description = CONCAT(ticketObservation.description,VALUES(description),' '); - + ON DUPLICATE KEY UPDATE description = CONCAT(ticketObservation.description,VALUES(description),' '); + INSERT INTO ticketObservation(ticketFk,observationTypeFk,description) VALUES(vNewTicket,1,'ATENCION: Contiene lineas de TURNO') - ON DUPLICATE KEY UPDATE description = CONCAT(ticketObservation.description,VALUES(description),' '); - + ON DUPLICATE KEY UPDATE description = CONCAT(ticketObservation.description,VALUES(description),' '); + CALL vn.ticketCalculateClon(vNewTicket, vTicketFk); END; END LOOP; CLOSE rsTicket; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticket_cloneWeekly__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_cloneWeekly__`(IN vWeek INT) -BEGIN - -- si se modifica algo avisad a jgallego - DECLARE vIsDone BOOL; - DECLARE vLanding DATE; - DECLARE vShipment DATE; - DECLARE vWarehouse INT; - DECLARE vTicket INT; - DECLARE vWeekDay INT; - DECLARE vClient INT; - DECLARE vEmpresa INT; - DECLARE vConsignatario INT; - DECLARE vAgencia INT; - DECLARE vNewTicket INT; - DECLARE vYear INT; - - DECLARE rsTicket CURSOR FOR - SELECT tt.ticketFk, tt.weekDay, t.clientFk, t.warehouseFk, t.companyFk, t.addressFk, tt.agencyModeFk - FROM vn.ticketWeekly tt - JOIN vn.ticket t ON tt.ticketFk = t.id; - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vIsDone = TRUE; - - SET vYear = YEAR(CURDATE()) + IF(vWeek < WEEK(CURDATE()),1, 0); - - OPEN rsTicket; - myLoop: LOOP - BEGIN - DECLARE vSalesPersonEmail VARCHAR(150); - DECLARE vMailSent BOOL; - DECLARE vSubject VARCHAR(150); - DECLARE vMessage TEXT; - /*DECLARE vError TEXT; - DECLARE CONTINUE HANDLER FOR SQLEXCEPTION - BEGIN - GET DIAGNOSTICS CONDITION 1 - vError = MESSAGE_TEXT; - - END;*/ - - SET vIsDone = FALSE; - FETCH rsTicket INTO vTicket, vWeekDay, vClient, vWarehouse, vEmpresa, vConsignatario, vAgencia; - - IF vIsDone THEN - - LEAVE myLoop; - END IF; - SELECT dated INTO vShipment - FROM `time` - WHERE `year` = vYear AND `week` = vWeek - AND WEEKDAY(dated) = vWeekDay; - - -- busca si el ticket ya ha sido clonado - IF (SELECT COUNT(*) FROM vn.ticket tOrig - JOIN vn.sale saleOrig ON tOrig.id = saleOrig.ticketFk - JOIN vn.saleCloned sc ON sc.saleOriginalFk = saleOrig.id - JOIN vn.sale saleClon ON saleClon.id = sc.saleClonedFk - JOIN vn.ticket tClon ON tClon.id = saleClon.ticketFk - WHERE tOrig.id = vTicket AND tClon.isDeleted = FALSE AND DATE(tClon.shipped) = vShipment) > 0 - THEN - ITERATE myLoop; - END IF; - CALL vn.zone_getLanded(vShipment, vConsignatario, vAgencia, vWarehouse,FALSE); - - SELECT landed INTO vLanding from tmp.zoneGetLanded LIMIT 1; - IF (SELECT COUNT(*) FROM agencyMode WHERE id = vAgencia AND name LIKE '%turno%') THEN - SET vAgencia = NULL; - END IF; - - CALL vn.ticketCreateWithoutZone(vClient, vShipment, vWarehouse, vEmpresa, vConsignatario, vAgencia, NULL, vLanding,account.userGetId(), vNewTicket); - - IF (vLanding IS NULL) THEN - - SELECT e.email INTO vSalesPersonEmail - FROM vn.client c - JOIN vn.worker sp ON sp.id = c.salesPersonFk - JOIN account.emailUser e ON e.userFk = sp.userFk - WHERE c.id = vClient; - - SET vSubject = CONCAT('Turnos - No se ha podido clonar correctamente el ticket ', vTicket, - ' para el dia: ', vShipment); - SET vMessage = CONCAT('No se ha podido clonar el ticket ', vTicket, - ' para el dia: ', vShipment, - ' porque no hay una zona de envío disponible. Se ha creado el ticket: ', vNewTicket, - ' pero ha que revisar las fechas y la agencia'); - - SELECT COUNT(*) INTO vMailSent - FROM vn.mail - WHERE sender = vSalesPersonEmail - AND subject = vSubject; - - IF NOT vMailSent THEN - INSERT INTO vn.mail (`sender`,`subject`,`body`) - VALUES (vSalesPersonEmail, vSubject, vMessage); - END IF; - CALL vn.ticketStateUpdate (vNewTicket, 'FIXING'); - END IF; - - INSERT INTO vn.sale (ticketFk, itemFk, concept, quantity, price, discount, priceFixed, isPriceFixed) - SELECT vNewTicket, saleOrig.itemFk , saleOrig.concept , saleOrig.quantity, saleOrig.price , saleOrig.discount, saleOrig.priceFixed, saleOrig.isPriceFixed - FROM vn.sale saleOrig - WHERE saleOrig.ticketFk = vTicket; - - INSERT IGNORE INTO vn.saleCloned(saleOriginalFk, saleClonedFk) - SELECT saleOriginal.id, saleClon.id - FROM vn.sale saleOriginal - JOIN vn.sale saleClon ON saleOriginal.itemFk = saleClon.itemFk AND saleOriginal.quantity = saleClon.quantity - WHERE saleOriginal.ticketFk = vTicket AND saleClon.ticketFk = vNewTicket; - - INSERT INTO ticketRequest (description,ordered,shipped,salesPersonCode,buyerCode,quantity,price,itemFk,clientFk,response, - total,buyed,saleFk) - SELECT o.description,o.ordered,vShipment,o.salesPersonCode,o.buyerCode,o.quantity,o.price,o.itemFk,o.clientFk,o.response, - o.total,o.buyed,s2.id - FROM sale s JOIN ticketRequest o ON o.saleFk = s.id - JOIN sale s2 ON s.concept = s2.concept AND s.quantity = s2.quantity AND s.itemFk = s2.itemFk - WHERE s.ticketFk = vTicket AND s2.ticketFk = vNewTicket; - - INSERT INTO ticketObservation(ticketFk,observationTypeFk,description) VALUES(vNewTicket,4,CONCAT('turno desde ticket: ',vTicket)) - ON DUPLICATE KEY UPDATE description = CONCAT(ticketObservation.description,VALUES(description),' '); - - INSERT INTO ticketObservation(ticketFk,observationTypeFk,description) VALUES(vNewTicket,1,'ATENCION: Contiene lineas de TURNO') - ON DUPLICATE KEY UPDATE description = CONCAT(ticketObservation.description,VALUES(description),' '); - - CALL vn.ticketCalculateClon(vNewTicket, vTicket); - END; - END LOOP; - - CLOSE rsTicket; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -82262,16 +69307,16 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_close`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_close`() BEGIN /** - * Realiza el cierre de todos los + * Realiza el cierre de todos los * tickets de la tabla tmp.ticket_close. * * @table tmp.ticket_close(ticketFk) Identificadores de los tickets a cerrar @@ -82289,7 +69334,7 @@ BEGIN DECLARE cur CURSOR FOR SELECT ticketFk FROM tmp.ticket_close; - + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN RESIGNAL; @@ -82299,7 +69344,7 @@ BEGIN proc: LOOP SET vDone = FALSE; - + FETCH cur INTO vCurTicketFk; IF vDone THEN @@ -82317,12 +69362,12 @@ BEGIN c.hasToInvoice INTO vClientFk, vIsTaxDataChecked, - vCompanyFk, + vCompanyFk, vShipped, vHasDailyInvoice, vWithPackage, vHasToInvoice - FROM ticket t + FROM ticket t JOIN `client` c ON c.id = t.clientFk JOIN province p ON p.id = c.provinceFk JOIN country co ON co.id = p.countryFk @@ -82331,22 +69376,22 @@ BEGIN INSERT INTO ticketPackaging (ticketFk, packagingFk, quantity) (SELECT vCurTicketFk, p.id, COUNT(*) - FROM expedition e + FROM expedition e JOIN packaging p ON p.itemFk = e.itemFk WHERE e.ticketFk = vCurTicketFk AND p.isPackageReturnable AND vWithPackage GROUP BY p.itemFk); -- No retornables o no catalogados - INSERT INTO sale (itemFk, ticketFk, concept, quantity, price, isPriceFixed) - (SELECT e.itemFk, vCurTicketFk, i.name, COUNT(*) AS amount, getSpecialPrice(e.itemFk, vClientFk), 1 - FROM expedition e - JOIN item i ON i.id = e.itemFk + INSERT INTO sale (itemFk, ticketFk, concept, quantity, price, isPriceFixed) + (SELECT e.itemFk, vCurTicketFk, i.name, COUNT(*) AS amount, getSpecialPrice(e.itemFk, vClientFk), 1 + FROM expedition e + JOIN item i ON i.id = e.itemFk LEFT JOIN packaging p ON p.itemFk = i.id WHERE e.ticketFk = vCurTicketFk AND IFNULL(p.isPackageReturnable, 0) = 0 AND getSpecialPrice(e.itemFk, vClientFk) > 0 GROUP BY e.itemFk); - + IF(vHasDailyInvoice) AND vHasToInvoice THEN -- Facturacion rapida @@ -82354,10 +69399,10 @@ BEGIN -- Facturar si está contabilizado IF vIsTaxDataChecked THEN CALL invoiceOut_newFromClient( - vClientFk, - (SELECT invoiceSerial(vClientFk, vCompanyFk, 'M')), - vShipped, - vCompanyFk, + vClientFk, + (SELECT invoiceSerial(vClientFk, vCompanyFk, 'M')), + vShipped, + vCompanyFk, NULL, NULL, vNewInvoiceId); @@ -82374,144 +69419,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticket_closeAll__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_closeAll__`() -BEGIN -/** - * Realiza el cierre de todos los - * tickets de la tabla tmp.ticketClosure. - * - * @param vTicketFk Id del ticket - */ - DECLARE vDone BOOL; - DECLARE vClientFk INT; - DECLARE vCurTicketFk INT; - DECLARE vIsTaxDataChecked BOOL; - DECLARE vCompanyFk INT; - DECLARE vShipped DATE; - DECLARE vNewInvoiceId INT; - DECLARE vHasDailyInvoice BOOL; - DECLARE vWithPackage BOOL; - DECLARE vHasToInvoice BOOL; - - DECLARE cur CURSOR FOR - SELECT ticketFk FROM tmp.ticketClosure; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN - RESIGNAL; - END; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure2; - CREATE TEMPORARY TABLE tmp.ticketClosure2 - SELECT ticketFk FROM tmp.ticketClosure; - - INSERT INTO tmp.ticketClosure - SELECT id FROM stowaway s - JOIN tmp.ticketClosure2 tc ON s.shipFk = tc.ticketFk; - OPEN cur; - - proc: LOOP - SET vDone = FALSE; - - FETCH cur INTO vCurTicketFk; - - IF vDone THEN - LEAVE proc; - END IF; - - -- ticketClosure start - SELECT - c.id, - c.isTaxDataChecked, - t.companyFk, - t.shipped, - co.hasDailyInvoice, - w.isManaged, - c.hasToInvoice - INTO vClientFk, - vIsTaxDataChecked, - vCompanyFk, - vShipped, - vHasDailyInvoice, - vWithPackage, - vHasToInvoice - FROM ticket t - JOIN `client` c ON c.id = t.clientFk - JOIN province p ON p.id = c.provinceFk - JOIN country co ON co.id = p.countryFk - JOIN warehouse w ON w.id = t.warehouseFk - WHERE t.id = vCurTicketFk; - - INSERT INTO ticketPackaging (ticketFk, packagingFk, quantity) - (SELECT vCurTicketFk, p.id, COUNT(*) - FROM expedition e - JOIN packaging p ON p.itemFk = e.itemFk - WHERE e.ticketFk = vCurTicketFk AND p.isPackageReturnable - AND vWithPackage - GROUP BY p.itemFk); - - -- No retornables o no catalogados - INSERT INTO sale (itemFk, ticketFk, concept, quantity, price, isPriceFixed) - (SELECT e.itemFk, vCurTicketFk, i.name, COUNT(*) AS amount, getSpecialPrice(e.itemFk, vClientFk), 1 - FROM expedition e - JOIN item i ON i.id = e.itemFk - LEFT JOIN packaging p ON p.itemFk = i.id - WHERE e.ticketFk = vCurTicketFk AND IFNULL(p.isPackageReturnable, 0) = 0 - AND getSpecialPrice(e.itemFk, vClientFk) > 0 - GROUP BY e.itemFk); - - CALL vn.zonePromo_Make(); - - IF(vHasDailyInvoice) AND vHasToInvoice THEN - - -- Facturacion rapida - CALL ticketTrackingAdd(vCurTicketFk, 'DELIVERED', NULL); - -- Facturar si está contabilizado - IF vIsTaxDataChecked THEN - CALL invoiceOut_newFromClient( - vClientFk, - (SELECT invoiceSerial(vClientFk, vCompanyFk, 'M')), - vShipped, - vCompanyFk, - NULL, - NULL, - vNewInvoiceId); - END IF; - ELSE - CALL ticketTrackingAdd(vCurTicketFk, (SELECT vn.getAlert3State(vCurTicketFk)), NULL); - END IF; - END LOOP; - - CLOSE cur; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticket_closeByTicket` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_closeByTicket`(IN vTicketFk int) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_closeByTicket`(IN vTicketFk int) BEGIN /** @@ -82523,18 +69441,18 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.ticket_close; CREATE TEMPORARY TABLE tmp.ticket_close ENGINE = MEMORY ( - SELECT + SELECT t.id AS ticketFk FROM expedition e INNER JOIN ticket t ON t.id = e.ticketFk LEFT JOIN ticketState ts ON ts.ticketFk = t.id JOIN alertLevel al ON al.id = ts.alertLevel - WHERE + WHERE al.code = 'PACKED' AND t.id = vTicketFk AND t.refFk IS NULL GROUP BY e.ticketFk); - + CALL ticket_close(); DROP TEMPORARY TABLE tmp.ticket_close; @@ -82550,22 +69468,22 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_componentMakeUpdate`(IN vTicketFk INT, IN vClientFk INT, +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_componentMakeUpdate`(IN vTicketFk INT, IN vClientFk INT, IN vNickname VARCHAR(50), IN vAgencyModeFk INT, IN vAddressFk INT, IN vZoneFk INT, IN vWarehouseFk TINYINT, IN vCompanyFk SMALLINT, IN vShipped DATETIME, IN vLanded DATE, IN vIsDeleted TINYINT(1), IN vHasToBeUnrouted TINYINT(1), IN vOption INT) BEGIN - + /** * Modifica en el ticket los campos que se le pasan por parámetro * y cambia sus componentes - * + * * @param vTicketFk Id del ticket a modificar * @param vClientFk nuevo cliente * @param vNickname nuevo alias @@ -82580,29 +69498,29 @@ BEGIN * @param vHasToBeUnrouted si se le elimina la ruta al ticket * @param vOption opcion para el case del proc ticketComponentUpdateSale */ - + DECLARE vPrice DECIMAL(10,2); DECLARE vBonus DECIMAL(10,2); CALL ticket_componentPreview (vTicketFk, vLanded, vAddressFk, vZoneFk, vWarehouseFk); IF (SELECT addressFk FROM ticket WHERE id = vTicketFk) <> vAddressFk THEN - - UPDATE ticket t + + UPDATE ticket t JOIN address a ON a.id = vAddressFk SET t.nickname = a.nickname WHERE t.id = vTicketFk; - + END IF; CALL zone_getShipped(vLanded, vAddressFk, vAgencyModeFk, TRUE); - SELECT zoneFk, price, bonus INTO vZoneFk, vPrice, vBonus + SELECT zoneFk, price, bonus INTO vZoneFk, vPrice, vBonus FROM tmp.zoneGetShipped WHERE shipped BETWEEN DATE(vShipped) AND util.dayEnd(vShipped) AND warehouseFk = vWarehouseFk LIMIT 1; - + UPDATE ticket t - SET + SET t.clientFk = vClientFk, t.nickname = vNickname, t.agencyModeFk = vAgencyModeFk, @@ -82617,12 +69535,12 @@ BEGIN t.isDeleted = vIsDeleted WHERE t.id = vTicketFk; - + IF vHasToBeUnrouted THEN UPDATE ticket t SET t.routeFk = NULL WHERE t.id = vTicketFk; END IF; - + IF vOption <> 8 THEN DROP TEMPORARY TABLE IF EXISTS tmp.sale; CREATE TEMPORARY TABLE tmp.sale @@ -82652,15 +69570,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_componentPreview`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_componentPreview`( vTicketFk INT, - vLanded DATE, + vLanded DATE, vAddressFk INT, vZoneFk INT, vWarehouseFk SMALLINT) @@ -82676,7 +69594,7 @@ BEGIN * * @return tmp.ticketComponentPreview (warehouseFk, itemFk, componentFk, cost) */ - DECLARE vHasDataChanged BOOL DEFAULT FALSE; + DECLARE vHasDataChanged BOOL DEFAULT FALSE; DECLARE vHasAddressChanged BOOL; DECLARE vHasZoneChanged BOOL DEFAULT FALSE; DECLARE vHasWarehouseChanged BOOL DEFAULT FALSE; @@ -82687,8 +69605,8 @@ BEGIN DECLARE vHasChangeAll BOOL DEFAULT FALSE; - SELECT DATE(landed) <> vLanded, - addressFk <> vAddressFk, + SELECT DATE(landed) <> vLanded, + addressFk <> vAddressFk, zoneFk <> vZoneFk, warehouseFk <> vWarehouseFk INTO @@ -82711,15 +69629,15 @@ BEGIN SET vAgencyModeTypeRateFk = 6; END IF; - SELECT TIMESTAMPADD(DAY, -travelingDays, vLanded) INTO vShipped + SELECT TIMESTAMPADD(DAY, -travelingDays, vLanded) INTO vShipped FROM zone WHERE id = vZoneFk; - + CALL buyUltimate(vWarehouseFk, vShipped); - + DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot ENGINE = MEMORY ( - SELECT + CREATE TEMPORARY TABLE tmp.ticketLot ENGINE = MEMORY ( + SELECT vWarehouseFk AS warehouseFk, NULL AS available, s.itemFk, @@ -82739,9 +69657,9 @@ BEGIN JOIN sale s ON s.id = sc.saleFk JOIN ticket t ON t.id = s.ticketFk JOIN `component` c ON c.id = sc.componentFk - WHERE s.ticketFk = vTicketFk - AND (c.isRenewable = FALSE - OR + WHERE s.ticketFk = vTicketFk + AND (c.isRenewable = FALSE + OR (NOT vHasChangeAll AND (NOT (c.typeFk <=> vAddressTypeRateFk OR c.typeFk <=> vAgencyModeTypeRateFk)))); @@ -82762,226 +69680,19 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticket_componentPreview__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_componentPreview__`( - vTicketFk INT, - vLanded DATE, - vAddressFk INT, - vZoneFk INT, - vWarehouseFk SMALLINT) -BEGIN -/** - * Calcula los componentes de los articulos de un ticket - * - * @param vTicketFk id del ticket - * @param vLanded nueva fecha de entrega - * @param vAddressFk nuevo consignatario - * @param vZoneFk nueva zona - * @param vWarehouseFk nuevo warehouse - * - * @return tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) - */ - DECLARE vShipped DATE; - DECLARE vBuyOrderItem INT DEFAULT 100; - - DECLARE vHasDataChanged BOOL DEFAULT FALSE; - DECLARE vHasAddressChanged BOOL; - DECLARE vHasZoneChanged BOOL DEFAULT FALSE; - DECLARE vHasWarehouseChanged BOOL DEFAULT FALSE; - - DECLARE vAddressTypeRateFk INT DEFAULT NULL; - DECLARE vAgencyModeTypeRateFk INT DEFAULT NULL; - - DECLARE vHasChangeAll BOOL DEFAULT FALSE; - - SELECT DATE(landed) <> vLanded, - addressFk <> vAddressFk, - zoneFk <> vZoneFk, - warehouseFk <> vWarehouseFk - INTO - vHasDataChanged, - vHasAddressChanged, - vHasZoneChanged, - vHasWarehouseChanged - FROM vn.ticket t - WHERE t.id = vTicketFk; - - IF vHasDataChanged OR vHasWarehouseChanged THEN - SET vHasChangeAll = TRUE; - END IF; - - IF vHasAddressChanged THEN - SET vAddressTypeRateFk = 5; - END IF; - - IF vHasZoneChanged THEN - SET vAgencyModeTypeRateFk = 6; - END IF; - - SELECT TIMESTAMPADD(DAY, -travelingDays, vLanded) INTO vShipped - FROM zone - WHERE id = vZoneFk; - - CALL buyUltimate(vWarehouseFk, vShipped); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot ENGINE = MEMORY ( - SELECT - vWarehouseFk AS warehouseFk, - NULL AS available, - s.itemFk, - bu.buyFk - FROM sale s - LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk - WHERE s.ticketFk = vTicketFk - AND s.itemFk != vBuyOrderItem - GROUP BY bu.warehouseFk, bu.itemFk); - - CALL catalog_componentCalculate(vZoneFk, vAddressFk, vShipped); - - REPLACE INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) - SELECT t.warehouseFk, s.itemFk, sc.componentFk, sc.value - FROM saleComponent sc - JOIN sale s ON s.id = sc.saleFk - JOIN ticket t ON t.id = s.ticketFk - JOIN `component` c ON c.id = sc.componentFk - WHERE s.ticketFk = vTicketFk - AND (c.isRenewable = FALSE - OR - (NOT vHasChangeAll - AND (NOT (c.typeFk <=> vAddressTypeRateFk - OR c.typeFk <=> vAgencyModeTypeRateFk)))); - - SET @shipped = vShipped; - - DROP TEMPORARY TABLE - tmp.buyUltimate, - tmp.ticketLot; - - IF vShipped IS NULL THEN - CALL util.throw('NO_ZONE_AVAILABLE'); - END IF; - - IF vShipped < CURDATE() THEN - CALL util.throw('ERROR_PAST_SHIPMENT'); - END IF; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticket_componentUpdate__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_componentUpdate__`( - vTicketFk INT, - vClientFk INT, - vAgencyModeFk INT, - vAddressFk INT, - vZoneFk INT, - vWarehouseFk TINYINT, - vCompanyFk SMALLINT, - vShipped DATETIME, - vLanded DATE, - vIsDeleted BOOLEAN, - vHasToBeUnrouted BOOLEAN, - vOption INT) -BEGIN - DECLARE vPrice DECIMAL(10,2); - DECLARE vBonus DECIMAL(10,2); - DECLARE EXIT HANDLER FOR SQLEXCEPTION - BEGIN - ROLLBACK; - RESIGNAL; - END; - - START TRANSACTION; - - IF (SELECT addressFk FROM ticket WHERE id = vTicketFk) <> vAddressFk THEN - - UPDATE ticket t - JOIN address a ON a.id = vAddressFk - SET t.nickname = a.nickname - WHERE t.id = vTicketFk; - - END IF; - - CALL vn.zone_getShippedWarehouse(vlanded, vAddressFk, vAgencyModeFk); - - SELECT zoneFk, price, bonus INTO vZoneFk, vPrice, vBonus - FROM tmp.zoneGetShipped - WHERE shipped = vShipped AND warehouseFk = vWarehouseFk LIMIT 1; - - UPDATE ticket t - SET - t.clientFk = vClientFk, - t.agencyModeFk = vAgencyModeFk, - t.addressFk = vAddressFk, - t.zoneFk = vZoneFk, - t.zonePrice = vPrice, - t.zoneBonus = vBonus, - t.warehouseFk = vWarehouseFk, - t.companyFk = vCompanyFk, - t.landed = vLanded, - t.shipped = vShipped, - t.isDeleted = vIsDeleted - WHERE - t.id = vTicketFk; - - IF vHasToBeUnrouted THEN - UPDATE ticket t SET t.routeFk = NULL - WHERE t.id = vTicketFk; - END IF; - - IF vOption <> 8 THEN - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - (PRIMARY KEY (saleFk)) - ENGINE = MEMORY - SELECT id AS saleFk, vWarehouseFk warehouseFk - FROM sale s WHERE s.ticketFk = vTicketFk; - - CALL ticketComponentUpdateSale (vOption); - - DROP TEMPORARY TABLE tmp.sale; - END IF; - COMMIT; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticket_DelayTruck` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_DelayTruck`(vWarehouserFk INT, vHour INT, vMinute INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_DelayTruck`(vWarehouserFk INT, vHour INT, vMinute INT) BEGIN - + DECLARE done INT DEFAULT FALSE; DECLARE vTicketFk INT; DECLARE cur1 CURSOR FOR SELECT ticketFk FROM tmp.ticket; @@ -82994,7 +69705,7 @@ BEGIN CREATE TEMPORARY TABLE tmp.ticket SELECT ticketFk FROM tmp.productionBuffer - WHERE shipped = curdate() + WHERE shipped = util.VN_CURDATE() AND problem LIKE '%I:%' AND (HH <= vHour OR HH = vHour AND mm < vMinute) AND alertLevel = 0; @@ -83002,19 +69713,19 @@ BEGIN OPEN cur1; read_loop: LOOP - + FETCH cur1 INTO vTicketFk; - + IF done THEN LEAVE read_loop; END IF; - + CALL vn.ticket_DelayTruckSplit(vTicketFk); - + END LOOP; CLOSE cur1; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -83025,60 +69736,60 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_DelayTruckSplit`(vTicketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_DelayTruckSplit`(vTicketFk INT) BEGIN - + /* * Splita las lineas de ticket que no estan ubicadas - * + * */ - + DECLARE vNewTicketFk INT; DECLARE vTotalLines INT; DECLARE vLinesToSplit INT; DROP TEMPORARY TABLE IF EXISTS tmp.SalesToSplit; - + SELECT COUNT(*) INTO vTotalLines - FROM vn.sale + FROM vn.sale WHERE ticketFk = vTicketFk; - + CREATE TEMPORARY TABLE tmp.SalesToSplit SELECT s.id saleFk FROM vn.ticket t - JOIN vn.sale s ON t.id = s.ticketFk - LEFT JOIN vn.itemShelvingStock_byWarehouse issw ON issw.itemFk = s.itemFk AND issw.warehouseFk = t.warehouseFk + JOIN vn.sale s ON t.id = s.ticketFk + LEFT JOIN vn.itemShelvingStock_byWarehouse issw ON issw.itemFk = s.itemFk AND issw.warehouseFk = t.warehouseFk WHERE s.quantity > IFNULL(issw.visible, 0) AND s.quantity > 0 AND s.isPicked = FALSE AND s.reserved = FALSE AND t.id = vTicketFk; - + SELECT COUNT(*) INTO vLinesToSplit FROM tmp.SalesToSplit; - + IF vLinesToSplit = vTotalLines AND vLinesToSplit > 0 THEN - + SET vNewTicketFk = vTicketFk; - + ELSE - + CALL vn.ticket_Clone(vTicketFk, vNewTicketFk); - - UPDATE vn.sale s - JOIN tmp.SalesToSplit sts ON sts.saleFk = s.id + + UPDATE vn.sale s + JOIN tmp.SalesToSplit sts ON sts.saleFk = s.id SET s.ticketFk = vNewTicketFk; - + END IF; - + CALL vn.ticketStateUpdate(vNewTicketFk, 'FIXING'); - + DROP TEMPORARY TABLE tmp.SalesToSplit; END ;; @@ -83091,38 +69802,54 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_doRecalc`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_doRecalc`() proc: BEGIN /** * Recalculates modified ticket. */ - DECLARE vDone BOOL; DECLARE vTicketFk INT; + DECLARE vError INT; DECLARE cCur CURSOR FOR - SELECT ticketFk FROM ticketRecalc; + SELECT DISTINCT ticketFk FROM tTicket; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + DECLARE CONTINUE HANDLER FOR SQLEXCEPTION - BEGIN + BEGIN DO RELEASE_LOCK('vn.ticket_doRecalc'); ROLLBACK; - RESIGNAL; + GET DIAGNOSTICS CONDITION 2 @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; + SET vError = IFNULL(@errno, 0); + IF NOT(vError = 1105 OR vError = 1751) THEN + CALL `vn`.`mail_insert`('cau@verdnatura.es', + NULL, + 'Problema al recalcular el total de ticket', + CONCAT('Se ha detectado un problema en ticket_doRecalc al calcular el total del ticket : ', + vTicketFk,' el error es el: ', + CONCAT('ERROR ', IFNULL(@errno, 0), ': ', ifnull(@text, ''))) + ); + END IF; + RESIGNAL; END; IF !GET_LOCK('vn.ticket_doRecalc', 0) THEN LEAVE proc; END IF; + DROP TEMPORARY TABLE IF EXISTS tTicket; + CREATE TEMPORARY TABLE tTicket + ENGINE = MEMORY + SELECT id, ticketFk FROM ticketRecalc; + OPEN cCur; myLoop: LOOP @@ -83133,14 +69860,15 @@ proc: BEGIN LEAVE myLoop; END IF; - START TRANSACTION; - CALL ticket_recalc(vTicketFk); - COMMIT; - - DELETE FROM ticketRecalc WHERE ticketFk = vTicketFk; + CALL ticket_recalc(vTicketFk); END LOOP; CLOSE cCur; + + DELETE tr FROM ticketRecalc tr JOIN tTicket t ON tr.id = t.id; + + DROP TEMPORARY TABLE tTicket; + DO RELEASE_LOCK('vn.ticket_doRecalc'); END ;; DELIMITER ; @@ -83148,17 +69876,348 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_doRefund` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_doRefund`(OUT vNewTicket INT) +BEGIN +/** + * Crea un ticket de abono a partir de tmp.sale y/o tmp.ticketService + * + * @return vNewTicket + */ + DECLARE vDone BIT DEFAULT 0; + DECLARE vClientFk MEDIUMINT; + DECLARE vWarehouse TINYINT; + DECLARE vCompany MEDIUMINT; + DECLARE vAddress MEDIUMINT; + DECLARE vRefundAgencyMode INT; + DECLARE vItemFk INT; + DECLARE vQuantity DECIMAL (10,2); + DECLARE vConcept VARCHAR(50); + DECLARE vPrice DECIMAL (10,2); + DECLARE vDiscount TINYINT; + DECLARE vSaleNew INT; + DECLARE vSaleMain INT; + DECLARE vZoneFk INT; + DECLARE vDescription VARCHAR(50); + DECLARE vTaxClassFk INT; + DECLARE vTicketServiceTypeFk INT; + DECLARE vOriginTicket INT; + + DECLARE cSales CURSOR FOR + SELECT s.id, s.itemFk, - s.quantity, s.concept, s.price, s.discount + FROM tmp.sale s; + + DECLARE cTicketServices CURSOR FOR + SELECT ts.description, - ts.quantity, ts.price, ts.taxClassFk, ts.ticketServiceTypeFk + FROM tmp.ticketService ts; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + SELECT sub.ticketFk INTO vOriginTicket + FROM ( + SELECT s.ticketFk + FROM tmp.sale s + UNION ALL + SELECT ts.ticketFk + FROM tmp.ticketService ts + ) sub + LIMIT 1; + + SELECT id INTO vRefundAgencyMode + FROM agencyMode WHERE `name` = 'ABONO'; + + SELECT clientFk, warehouseFk, companyFk, addressFk + INTO vClientFk, vWarehouse, vCompany, vAddress + FROM ticket + WHERE id = vOriginTicket; + + SELECT id INTO vZoneFk + FROM zone WHERE agencyModeFk = vRefundAgencyMode + LIMIT 1; + + INSERT INTO vn.ticket ( + clientFk, + shipped, + addressFk, + agencyModeFk, + nickname, + warehouseFk, + companyFk, + landed, + zoneFk + ) + SELECT + vClientFk, + util.VN_CURDATE(), + vAddress, + vRefundAgencyMode, + a.nickname, + vWarehouse, + vCompany, + util.VN_CURDATE(), + vZoneFk + FROM address a + WHERE a.id = vAddress; + + SET vNewTicket = LAST_INSERT_ID(); + + SET vDone := FALSE; + OPEN cSales; + FETCH cSales INTO vSaleMain, vItemFk, vQuantity, vConcept, vPrice, vDiscount; + + WHILE NOT vDone DO + INSERT INTO vn.sale(ticketFk, itemFk, quantity, concept, price, discount) + VALUES( vNewTicket, vItemFk, vQuantity, vConcept, vPrice, vDiscount ); + + SET vSaleNew = LAST_INSERT_ID(); + + INSERT INTO vn.saleComponent(saleFk,componentFk,`value`) + SELECT vSaleNew,componentFk,`value` + FROM vn.saleComponent + WHERE saleFk = vSaleMain; + + FETCH cSales INTO vSaleMain, vItemFk, vQuantity, vConcept, vPrice, vDiscount; + END WHILE; + CLOSE cSales; + + SET vDone := FALSE; + OPEN cTicketServices; + FETCH cTicketServices INTO vDescription, vQuantity, vPrice, vTaxClassFk, vTicketServiceTypeFk; + + WHILE NOT vDone DO + INSERT INTO vn.ticketService(description, quantity, price, taxClassFk, ticketFk, ticketServiceTypeFk) + VALUES(vDescription, vQuantity, vPrice, vTaxClassFk, vNewTicket, vTicketServiceTypeFk); + + FETCH cTicketServices INTO vDescription, vQuantity, vPrice, vTaxClassFk, vTicketServiceTypeFk; + END WHILE; + + CLOSE cTicketServices; + + INSERT INTO vn.ticketRefund(refundTicketFk, originalTicketFk) + VALUES(vNewTicket, vOriginTicket); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_getFromFloramondo` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_getFromFloramondo`(vDateFrom DATE, vDateTo DATE) +BEGIN +/** + * Genera una tabla con la lista de tickets de Floramondo + * para una fecha determinada. + * + * @param vDated Fecha de preparación de los pedidos + * @table tmp.ticketFloramondo(ticketFk, clientName, agencyName, + * agencyModeFk, supplierName, supplierFk, freight, expeditionCount, + * margin, trolleys, pallets, shipped, created) + */ + DROP TEMPORARY TABLE IF EXISTS tmp.ticketFloramondo; + CREATE TEMPORARY TABLE tmp.ticketFloramondo + (ticketFk INT PRIMARY KEY, + clientName VARCHAR(50), + agencyName VARCHAR(50), + agencyModeFk INT, + supplierName VARCHAR(50), + supplierFk INT, + freight DECIMAL(10,2) DEFAULT 0, + expeditionCount INT, + margin DECIMAL(10,3) DEFAULT 0, + trolleys INT DEFAULT 0, + pallets INT DEFAULT 0, + shipped DATE, + created DATE) + ENGINE = MEMORY; + + INSERT INTO tmp.ticketFloramondo(ticketFk, + clientName, + agencyName, + agencyModeFk, + shipped, + supplierName, + supplierFk, + created) + SELECT t.id ticketFk, + t.nickname, + am.name, + am.id, + t.shipped, + s.name, + sat.supplierFk, + t.created + FROM vn.ticket t + JOIN vn.agencyMode am ON am.id = t.agencyModeFk + JOIN vn.warehouse w ON w.id = t.warehouseFk + AND w.code IN ('VNH','FLM') + AND t.shipped BETWEEN vDateFrom AND util.dayend(vDateTo) + JOIN vn.agency a ON a.id = am.agencyFk + LEFT JOIN vn.supplierAgencyTerm sat ON sat.agencyFk = a.id + LEFT JOIN vn.supplier s ON s.id = sat.supplierFk; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticket; + CREATE TEMPORARY TABLE tmp.ticket + (ticketFk INT(11) PRIMARY KEY) + SELECT ticketFk + FROM tmp.ticketFloramondo; + + -- Freight + UPDATE tmp.ticketFloramondo tf + JOIN (SELECT SUM(sc.value * s.quantity) freight, t.ticketFk + FROM vn.saleComponent sc + JOIN vn.component c ON c.id = sc.componentFk + JOIN vn.componentType ct ON ct.id = c.typeFk + JOIN vn.sale s ON s.id = sc.saleFk + JOIN tmp.ticket t ON t.ticketFk = s.ticketFk + WHERE ct.code = 'FREIGHT' + GROUP BY t.ticketFk) sb ON sb.ticketFk = tf.ticketFk + SET tf.freight = sb.freight; + + -- Freight service + UPDATE tmp.ticketFloramondo tf + JOIN (SELECT SUM(ts.price * ts.quantity) service, t.ticketFk + FROM vn.ticketService ts + JOIN tmp.ticket t ON t.ticketFk = ts.ticketFk + GROUP BY t.ticketFk) sb ON sb.ticketFk = tf.ticketFk + SET tf.freight = tf.freight + sb.service; + + -- Expedition Count + UPDATE tmp.ticketFloramondo tf + JOIN (SELECT COUNT(e.id) expeditionCount, t.ticketFk + FROM vn.expedition e + RIGHT JOIN tmp.ticket t ON t.ticketFk = e.ticketFk + GROUP BY t.ticketFk) sb ON sb.ticketFk = tf.ticketFk + SET tf.expeditionCount = sb.expeditionCount; + + -- Margin + UPDATE tmp.ticketFloramondo tf + JOIN (SELECT SUM(IF(ct.code = 'COST',sc.value, 0)) cost, + SUM(IF(ct.isMargin, sc.value, 0)) margin, + t.ticketFk + FROM vn.saleComponent sc + JOIN vn.component c ON c.id = sc.componentFk + JOIN vn.componentType ct ON ct.id = c.typeFk + JOIN vn.sale s ON s.id = sc.saleFk + JOIN tmp.ticket t ON t.ticketFk = s.ticketFk + GROUP BY t.ticketFk) sb ON sb.ticketFk = tf.ticketFk + SET tf.margin = sb.margin / sb.cost; + + -- Trolleys + UPDATE tmp.ticketFloramondo tf + JOIN (SELECT SUM(tp.quantity) trolleys, t.ticketFk + FROM vn.ticketPackaging tp + JOIN tmp.ticket t ON t.ticketFk = tp.ticketFk + JOIN vn.packaging p ON p.id = tp.packagingFk + WHERE p.isTrolley + GROUP BY t.ticketFk) sb ON sb.ticketFk = tf.ticketFk + SET tf.trolleys = sb.trolleys; + + -- Pallets + UPDATE tmp.ticketFloramondo tf + JOIN (SELECT SUM(tp.quantity) pallets, t.ticketFk + FROM vn.ticketPackaging tp + JOIN tmp.ticket t ON t.ticketFk = tp.ticketFk + JOIN vn.packaging p ON p.id = tp.packagingFk + WHERE p.isPallet + GROUP BY t.ticketFk) sb ON sb.ticketFk = tf.ticketFk + SET tf.pallets = sb.pallets; + + SELECT * FROM tmp.ticketFloramondo; + + DROP TEMPORARY TABLE tmp.ticket; + DROP TEMPORARY TABLE tmp.ticketFloramondo; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_getMovable` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_getMovable`(vTicketFk INT, vDatedNew DATETIME, vWarehouseFk INT) +BEGIN +/** + * Cálcula el stock movible para los artículos de un ticket + * vDatedNew debe ser menor que vDatedOld, en los otros casos se + * asume que siempre es posible + * + * @param vTicketFk -> Ticket + * @param vDatedNew -> Nueva fecha + * @return Sales con Movible +*/ + DECLARE vDatedOld DATETIME; + SET vDatedNew = DATE_ADD(vDatedNew, INTERVAL 1 DAY); + + SELECT t.shipped INTO vDatedOld + FROM ticket t + WHERE t.id = vTicketFk; + + CALL itemStock(vWarehouseFk, vDatedNew, NULL); + CALL item_getMinacum(vWarehouseFk, vDatedNew, DATEDIFF(DATE_SUB(vDatedOld, INTERVAL 1 DAY), vDatedNew), NULL); + + SELECT s.id, + s.itemFk, + s.quantity, + s.concept, + s.price, + s.reserved, + s.discount, + i.image, + i.subName, + il.stock + IFNULL(im.amount, 0) AS movable + FROM ticket t + JOIN sale s ON s.ticketFk = t.id + JOIN item i ON i.id = s.itemFk + LEFT JOIN tmp.itemMinacum im ON im.itemFk = s.itemFk AND im.warehouseFk = vWarehouseFk + LEFT JOIN tmp.itemList il ON il.itemFk = s.itemFk + WHERE t.id = vTicketFk; + + DROP TEMPORARY TABLE IF EXISTS tmp.itemList; + DROP TEMPORARY TABLE IF EXISTS tmp.itemMinacum; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticket_getProblems` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_getProblems`(IN vIsTodayRelative tinyint(1)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_getProblems`(IN vIsTodayRelative tinyint(1)) BEGIN /** * Calcula los problemas para un conjunto de tickets. @@ -83167,101 +70226,46 @@ BEGIN * @table tmp.sale_getProblems(ticketFk, clientFk, warehouseFk, shipped) Identificadores de los tickets a calcular * @return tmp.ticket_problems */ - CALL sale_getProblems(vIsTodayRelative); + CALL sale_getProblems(vIsTodayRelative); - DROP TEMPORARY TABLE IF EXISTS tmp.ticket_problems; - CREATE TEMPORARY TABLE tmp.ticket_problems - (PRIMARY KEY (ticketFk)) - ENGINE = MEMORY - SELECT - ticketFk, - MAX(p.isFreezed) AS isFreezed, - MAX(p.risk) AS risk, - MAX(p.hasHighRisk) AS hasHighRisk, - MAX(p.hasTicketRequest) AS hasTicketRequest, - MIN(p.isAvailable) AS isAvailable, - MAX(p.itemShortage) AS itemShortage, - MIN(p.isTaxDataChecked) AS isTaxDataChecked, - MAX(p.hasComponentLack) AS hasComponentLack, - MAX(p.isTooLittle) AS isTooLittle, - max(p.itemDelay) AS itemDelay, - 0 AS totalProblems - FROM tmp.sale_problems p - GROUP BY ticketFk; + DROP TEMPORARY TABLE IF EXISTS tmp.ticket_problems; + CREATE TEMPORARY TABLE tmp.ticket_problems + (PRIMARY KEY (ticketFk)) + ENGINE = MEMORY + SELECT + ticketFk, + MAX(p.isFreezed) AS isFreezed, + MAX(p.risk) AS risk, + MAX(p.hasHighRisk) AS hasHighRisk, + MAX(p.hasTicketRequest) AS hasTicketRequest, + MIN(p.isAvailable) AS isAvailable, + MAX(p.itemShortage) AS itemShortage, + MIN(p.isTaxDataChecked) AS isTaxDataChecked, + MAX(p.hasComponentLack) AS hasComponentLack, + MAX(p.isTooLittle) AS isTooLittle, + MAX(p.itemDelay) AS itemDelay, + MAX(p.itemLost) AS itemLost, + 0 AS totalProblems + FROM tmp.sale_problems p + GROUP BY ticketFk; - UPDATE tmp.ticket_problems tp - SET tp.totalProblems = ( - (tp.isFreezed) + - IF(tp.risk, TRUE, FALSE) + - (tp.hasTicketRequest) + - (tp.isAvailable = 0) + - (tp.isTaxDataChecked = 0) + - (tp.hasComponentLack) + - (tp.itemDelay) + - (tp.isTooLittle) - ); + UPDATE tmp.ticket_problems tp + SET tp.totalProblems = + ( + (tp.isFreezed) + + IF(tp.risk, TRUE, FALSE) + + (tp.hasTicketRequest) + + (tp.isAvailable = 0) + + (tp.isTaxDataChecked = 0) + + (tp.hasComponentLack) + + (tp.itemDelay) + + (tp.isTooLittle) + + (tp.itemLost) + + (tp.itemShortage) + ); - DROP TEMPORARY TABLE - tmp.sale_problems; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticket_getProblems__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_getProblems__`(IN vIsTodayRelative tinyint(1)) -BEGIN -/** - * Calcula los problemas para un conjunto de tickets. - * Agrupados por ticket - * - * @table tmp.sale_getProblems(ticketFk, clientFk, warehouseFk, shipped) Identificadores de los tickets a calcular - * @return tmp.ticket_problems - */ - CALL sale_getProblems(vIsTodayRelative); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticket_problems; - CREATE TEMPORARY TABLE tmp.ticket_problems - (PRIMARY KEY (ticketFk)) - ENGINE = MEMORY - SELECT - ticketFk, - MAX(p.isFreezed) AS isFreezed, - MAX(p.risk) AS risk, - MAX(p.hasHighRisk) AS hasHighRisk, - MAX(p.hasTicketRequest) AS hasTicketRequest, - MIN(p.isAvailable) AS isAvailable, - MAX(p.itemShortage) AS itemShortage, - MIN(p.isTaxDataChecked) AS isTaxDataChecked, - MAX(p.hasComponentLack) AS hasComponentLack, - MAX(p.isTooLittle) AS isTooLittle, - 0 AS totalProblems - FROM tmp.sale_problems p - GROUP BY ticketFk; - - UPDATE tmp.ticket_problems tp - SET tp.totalProblems = ( - (tp.isFreezed) + - IF(tp.risk, TRUE, FALSE) + - (tp.hasTicketRequest) + - (tp.isAvailable = 0) + - (tp.isTaxDataChecked = 0) + - (tp.hasComponentLack) + - (tp.isTooLittle) - ); - - DROP TEMPORARY TABLE - tmp.sale_problems; + DROP TEMPORARY TABLE + tmp.sale_problems; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -83274,11 +70278,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_getShip`(vTicketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_getShip`(vTicketFk INT) BEGIN SELECT s.shipFk FROM vn.stowaway s WHERE s.id = vTicketFk; @@ -83288,6 +70292,156 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_getSplitList` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_getSplitList`(vDated DATE, vHour TIME, vWarehouseFk INT) +BEGIN +/** + * Devuelve un listado con los tickets posibles para splitar HOY. + * + * @param vDated Fecha a estudiar + * @param vHour Hora a partir de la cual todavía se puede enviar, si la fecha es la de hoy + * @param vWarehouseFk Almacén + */ + DECLARE vAvailableCache INT; + DECLARE vVisibleCache INT; + + CALL cache.available_refresh(vAvailableCache, FALSE, vWarehouseFk, util.VN_CURDATE()); + CALL cache.visible_refresh(vVisibleCache, FALSE, vWarehouseFk); + CALL `vn`.`zoneClosure_recalc`(); + + DROP TEMPORARY TABLE IF EXISTS tmp.salesToSplit; + + CREATE TEMPORARY TABLE tmp.salesToSplit + (saleFk INT PRIMARY KEY, + ticketFk INT, + problem VARCHAR(1)) ENGINE = MEMORY; + + INSERT INTO tmp.salesToSplit(saleFk, ticketFk, problem) + SELECT s.id, s.ticketFk, 'F' + FROM vn.ticket t + JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it on it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN cache.visible v ON v.item_id = i.id AND v.calc_id = vVisibleCache + LEFT JOIN cache.available av ON av.item_id = i.id AND av.calc_id = vAvailableCache + LEFT JOIN vn.itemShelvingStock_byWarehouse issw ON issw.itemFk = i.id AND issw.warehouseFk = t.warehouseFk + WHERE IFNULL(v.visible,0) < s.quantity + AND IFNULL(av.available ,0) < s.quantity + AND IFNULL(issw.visible, 0) < s.quantity + AND s.isPicked = FALSE + AND s.reserved = FALSE + AND ic.merchandise = TRUE + AND t.shipped BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE()) + AND NOT i.generic + AND t.warehouseFk = vWarehouseFk; + + INSERT IGNORE INTO tmp.salesToSplit(saleFk, ticketFk, problem) + SELECT s.id, s.ticketFk, 'I' + FROM vn.ticket t + JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it on it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN cache.visible v ON v.item_id = s.itemFk AND v.calc_id = vVisibleCache + LEFT JOIN vn.itemShelvingStock_byWarehouse issw ON issw.itemFk = i.id AND issw.warehouseFk = t.warehouseFk + WHERE IFNULL(v.visible,0) >= s.quantity + AND IFNULL(issw.visible, 0) < s.quantity + AND s.quantity > 0 + AND s.isPicked = FALSE + AND s.reserved = FALSE + AND ic.merchandise = TRUE + AND t.shipped BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE()) + AND NOT i.generic + AND t.warehouseFk = vWarehouseFk; + + INSERT IGNORE INTO tmp.salesToSplit(saleFk, ticketFk, problem) + SELECT s.id, s.ticketFk, 'R' + FROM vn.ticket t + JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it on it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN cache.visible v ON v.item_id = s.itemFk AND v.calc_id = vVisibleCache + LEFT JOIN cache.available av ON av.item_id = i.id AND av.calc_id = vAvailableCache + LEFT JOIN vn.itemShelvingStock_byWarehouse issw ON issw.itemFk = i.id AND issw.warehouseFk = t.warehouseFk + WHERE IFNULL(v.visible,0) < s.quantity + AND IFNULL(av.available ,0) >= s.quantity + AND IFNULL(issw.visible, 0) < s.quantity + AND s.quantity > 0 + AND s.isPicked = FALSE + AND s.reserved = FALSE + AND ic.merchandise = TRUE + AND t.shipped BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE()) + AND NOT i.generic + AND t.warehouseFk = vWarehouseFk; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketsToSplit; + + CREATE TEMPORARY TABLE tmp.ticketsToSplit + (ticketFk INT PRIMARY KEY, + problems VARCHAR(100), + addressFk INT, + ipt VARCHAR(10), + etd TIME) ENGINE = MEMORY; + + INSERT INTO tmp.ticketsToSplit + SELECT + ss.ticketFk, + GROUP_CONCAT(DISTINCT ss.problem ORDER BY ss.problem) problems, + t.addressFk, + GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk) ipt, + zc.`hour` etd + FROM tmp.salesToSplit ss + JOIN vn.ticket t ON t.id = ss.ticketFk + JOIN vn.sale s ON s.id = ss.saleFk + JOIN vn.item i ON i.id = s.itemFk + LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk + GROUP BY ss.ticketFk; + + SELECT + ts.*, + t.id ticketFuture, + st.name state, + zc.`hour` tfEtd, + GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk) tfIpt, + st2.name tfState + FROM tmp.ticketsToSplit ts + LEFT JOIN vn.ticketState ts2 ON ts2.ticketFk = ts.ticketFk + LEFT JOIN vn.state st ON st.id = ts2.stateFk + LEFT JOIN vn.ticket t + ON t.id != ts.ticketFk + AND t.addressFk = ts.addressFk + AND t.shipped BETWEEN vDated AND util.dayend(vDated) + LEFT JOIN vn.zoneClosure zc ON zc.zoneFk = t.zoneFk AND zc.dated = vDated + LEFT JOIN vn.sale s ON s.ticketFk = t.id + LEFT JOIN vn.item i ON i.id = s.itemFk + LEFT JOIN vn.ticketState tst ON tst.ticketFk = t.id + LEFT JOIN vn.state st2 ON st2.id = tst.stateFk + WHERE (t.id IS NULL + OR (vDated > util.VN_CURDATE()) + OR (vDated = util.VN_CURDATE() AND vHour >= zc.`hour`)) + AND ts.etd <= vHour + GROUP BY ts.ticketFk, t.id + ORDER BY ts.etd, ts.ticketFk; + + DROP TEMPORARY TABLE + tmp.ticketsToSplit; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticket_getTax` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -83296,9 +70450,9 @@ DELIMITER ; /*!50003 SET character_set_results = utf8mb4 */ ; /*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_getTax`(IN vTaxArea VARCHAR(25)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_getTax`(IN vTaxArea VARCHAR(25)) BEGIN /** * Calcula la base imponible, el IVA y el recargo de equivalencia para @@ -83317,7 +70471,7 @@ BEGIN JOIN ticket t ON t.id = tmpTicket.ticketFk; CALL addressTaxArea (); - + IF vTaxArea > '' THEN UPDATE tmp.addressTaxArea SET areaFk = vTaxArea; @@ -83389,8 +70543,8 @@ BEGIN CREATE TEMPORARY TABLE tmp.ticketAmount (INDEX (ticketFk)) ENGINE = MEMORY - SELECT ticketFk, - taxableBase, + SELECT ticketFk, + taxableBase, SUM(CAST(taxableBase * rate / 100 AS DECIMAL(10, 2))) tax, code FROM tmp.ticketTax @@ -83404,129 +70558,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticket_getTax__` */; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_insertZone` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_getTax__`(vTaxArea VARCHAR(25)) - READS SQL DATA -BEGIN -/** - * Calcula la base imponible, el IVA y el recargo de equivalencia para - * un conjunto de tickets. - * - * @table tmp.ticket(ticketFk) Identificadores de los tickets a calcular - * @return tmp.ticketAmount - * @return tmp.ticketTax Impuesto desglosado para cada ticket. - */ - DROP TEMPORARY TABLE IF EXISTS tmp.addressCompany; - CREATE TEMPORARY TABLE tmp.addressCompany - (INDEX (addressFk, companyFk)) - ENGINE = MEMORY - SELECT DISTINCT t.addressFk, t.companyFk - FROM tmp.ticket tmpTicket - JOIN ticket t ON t.id = tmpTicket.ticketFk; - - CALL addressTaxArea (); - - IF vTaxArea > '' THEN - UPDATE tmp.addressTaxArea - SET areaFk = vTaxArea; - END IF; - /** Solo se calcula la base imponible (taxableBase) y el impuesto se calculará posteriormente - * No se debería cambiar el sistema por problemas con los decimales - */ - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketTax; - CREATE TEMPORARY TABLE tmp.ticketTax - (INDEX (ticketFk)) - ENGINE = MEMORY - SELECT * FROM ( - SELECT tmpTicket.ticketFk, - bp.pgcFk, - SUM(s.quantity * s.price * (100 - s.discount)/100 ) AS taxableBase, - pgc.rate, - tc.code, - bp.priority - FROM tmp.ticket tmpTicket - JOIN sale s ON s.ticketFk = tmpTicket.ticketFk - JOIN item i ON i.id = s.itemFk - JOIN ticket t ON t.id = tmpTicket.ticketFk - JOIN supplier su ON su.id = t.companyFk - JOIN tmp.addressTaxArea ata - ON ata.addressFk = t.addressFk AND ata.companyFk = t.companyFk - JOIN itemTaxCountry itc - ON itc.itemFk = i.id AND itc.countryFk = su.countryFk - JOIN bookingPlanner bp - ON bp.countryFk = su.countryFk - AND bp.taxAreaFk = ata.areaFk - AND bp.taxClassFk = itc.taxClassFk - JOIN pgc ON pgc.code = bp.pgcFk - JOIN taxClass tc ON tc.id = bp.taxClassFk - GROUP BY tmpTicket.ticketFk, pgc.code,pgc.rate - HAVING taxableBase != 0) t - ORDER BY priority; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketServiceTax; - CREATE TEMPORARY TABLE tmp.ticketServiceTax - (INDEX (ticketFk)) - ENGINE = MEMORY - SELECT tt.ticketFk, - SUM(ts.quantity * ts.price) AS taxableBase, - pgc.rate, - tc.code - FROM tmp.ticketTax tt - JOIN ticketService ts ON ts.ticketFk = tt.ticketFk - JOIN ticket t ON t.id = tt.ticketFk - JOIN supplier su ON su.id = t.companyFk - JOIN tmp.addressTaxArea ata - ON ata.addressFk = t.addressFk AND ata.companyFk = t.companyFk - JOIN bookingPlanner bp - ON bp.countryFk = su.countryFk - AND bp.taxAreaFk = ata.areaFk - AND bp.taxClassFk = ts.taxClassFk - JOIN pgc ON pgc.code = bp.pgcFk AND pgc.rate = tt.rate - JOIN taxClass tc ON tc.id = bp.taxClassFk - GROUP BY tt.ticketFk, tt.code,tt.rate - HAVING taxableBase != 0; - - UPDATE tmp.ticketTax tt - JOIN tmp.ticketServiceTax ts ON tt.ticketFk = ts.ticketFk AND tt.code = ts.code AND tt.rate = ts.rate - SET tt.taxableBase = tt.taxableBase + ts.taxableBase; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketAmount; - CREATE TEMPORARY TABLE tmp.ticketAmount - (INDEX (ticketFk)) - ENGINE = MEMORY - SELECT ticketFk, taxableBase, SUM(CAST(taxableBase * rate / 100 AS DECIMAL(10, 2))) tax,code - FROM tmp.ticketTax - GROUP BY ticketFk, code; - - DROP TEMPORARY TABLE IF EXISTS tmp.addressCompany; - DROP TEMPORARY TABLE IF EXISTS tmp.addressTaxArea; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticket_insertZone` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_insertZone`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_insertZone`() BEGIN DECLARE vDone INT DEFAULT 0; DECLARE vFechedTicket INT; @@ -83534,24 +70576,24 @@ BEGIN DECLARE vAddressFk INT; DECLARE vAgencyModeFk INT; DECLARE vWarehouseFk INT; - DECLARE vCursor CURSOR FOR + DECLARE vCursor CURSOR FOR SELECT id, landed, addressFk, agencyModeFk, warehouseFk FROM vn.ticket WHERE shipped > '2020-01-01' AND zoneFk is null; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET vDone = 1; - + OPEN vCursor; REPEAT FETCH vCursor INTO vFechedTicket, vLanded, vAddressFk, vAgencyModeFk, vWarehouseFk; CALL vn.zone_getShipped (vlanded, vAddressFk, vAgencyModeFk, TRUE); - + UPDATE vn.ticket t JOIN tmp.zoneGetShipped zgs ON zgs.warehouseFk = vWarehouseFk SET t.zoneFk = zgs.zoneFk WHERE t.id = vFechedTicket; - + UNTIL vDone END REPEAT; DROP TEMPORARY TABLE tmp.zoneGetShipped; - + CLOSE vCursor; END ;; DELIMITER ; @@ -83563,30 +70605,31 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_merge`(vSelf INT, vTicketTargetFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_merge`(vSelf INT, vTicketTargetFk INT) BEGIN - - /* Fusiona el primer ticket al segundo - * + + /** + * Fusiona el primer ticket al segundo + * * @param vSelf Número de ticket a fusionar * @param vTicketTargetFk Ticket destino - * + * */ - - UPDATE vn.sale s + + UPDATE vn.sale s SET s.ticketFk = vTicketTargetFk WHERE s.ticketFk = vSelf; - - UPDATE vn.ticket t - SET t.shipped = TIMESTAMPADD(YEAR, - YEAR(NOW()) MOD 2000, t.shipped ) + + UPDATE vn.ticket t + SET t.shipped = TIMESTAMPADD(YEAR, - YEAR(util.VN_NOW()) MOD 2000, t.shipped ) WHERE t.id = vSelf; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -83599,20 +70642,20 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_priceDifference`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_priceDifference`( vTicketFk INT, - vLanded DATE, + vLanded DATE, vAddressFk INT, vZoneFk INT, vWarehouseFk INT) BEGIN /** * Devuelve las diferencias de precio de los movimientos de un ticket. - * + * * @param vTicketFk Id del ticket * @param vLanded Fecha de recepcion * @param vAddressFk Id del consignatario @@ -83621,26 +70664,26 @@ BEGIN */ CALL vn.ticket_componentPreview(vTicketFk, vLanded, vAddressFk, vZoneFk, vWarehouseFk); - SELECT s.itemFk, - i.name, - i.size, - i.category, - IFNULL(s.quantity, 0) AS quantity, - IFNULL(s.price, 0) AS price, + SELECT s.itemFk, + i.name, + i.size, + i.category, + IFNULL(s.quantity, 0) AS quantity, + IFNULL(s.price, 0) AS price, ROUND(SUM(tc.cost), 2) AS newPrice, s.quantity * (s.price - ROUND(SUM(tc.cost), 2)) difference, s.id AS saleFk FROM sale s - JOIN item i ON i.id = s.itemFk - JOIN ticket t ON t.id = s.ticketFk - LEFT JOIN tmp.ticketComponentPreview tc ON tc.itemFk = s.itemFk + JOIN item i ON i.id = s.itemFk + JOIN ticket t ON t.id = s.ticketFk + LEFT JOIN tmp.ticketComponentPreview tc ON tc.itemFk = s.itemFk AND tc.warehouseFk = vWarehouseFk - LEFT JOIN saleComponent sc ON sc.saleFk = s.id + LEFT JOIN saleComponent sc ON sc.saleFk = s.id AND sc.componentFk = tc.componentFk - LEFT JOIN `component` c ON c.id = tc.componentFk - WHERE t.id = vTicketFk - AND IF(sc.componentFk IS NULL - AND c.classRate IS NOT NULL, FALSE, TRUE) + LEFT JOIN `component` c ON c.id = tc.componentFk + WHERE t.id = vTicketFk + AND IF(sc.componentFk IS NULL + AND c.classRate IS NOT NULL, FALSE, TRUE) GROUP BY s.id ORDER BY s.id; DROP TEMPORARY TABLE tmp.ticketComponentPreview; @@ -83654,13 +70697,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_recalc`(vTicketId INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_recalc`(vTicketId INT) BEGIN /** * Calcula y guarda el total con/sin IVA en un ticket. @@ -83693,17 +70736,17 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_recalcComponents`(IN vTicketFk BIGINT, vIsTicketEditable BOOLEAN) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_recalcComponents`(IN vTicketFk BIGINT, vIsTicketEditable BOOLEAN) proc: BEGIN /** - * Este procedimiento recalcula los componentes de un ticket, + * Este procedimiento recalcula los componentes de un ticket, * eliminando los componentes existentes e insertandolos de nuevo * * @param vTicketFk Id del ticket @@ -83715,7 +70758,7 @@ proc: BEGIN DECLARE vAddressFk INT; DECLARE vLanded DATE; DECLARE vZoneFk INTEGER; - + IF vIsTicketEditable IS NULL THEN SELECT IFNULL(ts.alertLevel,0) = 0 AND IFNULL(t.refFk,'') = '' INTO vIsTicketEditable @@ -83723,10 +70766,10 @@ proc: BEGIN WHERE id = vTicketFk; END IF; - SELECT t.warehouseFk, - t.shipped, - t.addressFk, - t.agencyModeFk, + SELECT t.warehouseFk, + t.shipped, + t.addressFk, + t.agencyModeFk, t.landed, t.zoneFk INTO vWarehouseFk, vShipped, vAddressFk, vAgencyModeFk, vLanded, vZoneFk @@ -83742,7 +70785,7 @@ proc: BEGIN IF vLanded IS NULL OR vZoneFk IS NULL THEN UPDATE ticket t - SET t.landed = (SELECT landed FROM tmp.zoneGetLanded LIMIT 1) + SET t.landed = (SELECT landed FROM tmp.zoneGetLanded LIMIT 1) WHERE t.id = vTicketFk AND t.landed IS NULL; IF vZoneFk IS NULL THEN @@ -83751,23 +70794,23 @@ proc: BEGIN SET t.zoneFk = vZoneFk WHERE t.id = vTicketFk AND t.zoneFk IS NULL; END IF; - + END IF; - + DROP TEMPORARY TABLE tmp.zoneGetLanded; - -- rellena la tabla buyUltimate con la ultima compra - CALL buyUltimate (vWarehouseFk, vShipped); - + -- rellena la tabla buyUltimate con la ultima compra + CALL buyUltimate (vWarehouseFk, vShipped); + DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot + CREATE TEMPORARY TABLE tmp.ticketLot SELECT vWarehouseFk warehouseFk, NULL available, s.itemFk, bu.buyFk, vZoneFk zoneFk FROM sale s LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk - WHERE s.ticketFk = vTicketFk + WHERE s.ticketFk = vTicketFk GROUP BY s.itemFk; - + CALL catalog_componentPrepare(); CALL catalog_componentCalculate(vZoneFk, vAddressFk, vShipped, vWarehouseFk); @@ -83776,209 +70819,14 @@ proc: BEGIN (PRIMARY KEY (saleFk)) ENGINE = MEMORY SELECT id saleFk, vWarehouseFk warehouseFk FROM sale s - WHERE s.ticketFk = vTicketFk; - - -- si el ticket esta facturado, respeta los precios - CALL ticketComponentUpdateSale(IF(vIsTicketEditable, 1, 6)); - + WHERE s.ticketFk = vTicketFk; + + -- si el ticket esta facturado, respeta los precios + CALL ticketComponentUpdateSale(IF(vIsTicketEditable, 1, 6)); + CALL catalog_componentPurge(); - DROP TEMPORARY TABLE - tmp.buyUltimate, - tmp.sale; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticket_recalcComponentsForcePrice__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_recalcComponentsForcePrice__`(IN vTicketFk BIGINT, vIsTicketEditable BOOLEAN ) -proc: BEGIN - -/** - * Este procedimiento trata de "rebionizar" un ticket, - * eliminando los componentes existentes e insertandolos de nuevo - * - * @param vTicketFk Id del ticket - * @return tmp.buyUltimate - */ - DECLARE vShipped DATE; - DECLARE vWarehouseFk SMALLINT; - DECLARE vAgencyModeFk INT; - DECLARE vAddressFk INT; - DECLARE vLanded DATE; - DECLARE vZoneFk INTEGER; - - IF vIsTicketEditable IS NULL THEN - SELECT (IFNULL(ts.alertLevel,0) >0 or IFNULL(t.refFk,"") != "") = FALSE, t.zoneFk - INTO vIsTicketEditable, vZoneFk - FROM ticket t LEFT JOIN ticketState ts ON t.id = ts.ticket - WHERE id = vTicketFk; - END IF; - SELECT warehouseFk, date(shipped), addressFk, agencyModeFk, landed - INTO vWarehouseFk, vShipped, vAddressFk, vAgencyModeFk, vLanded - FROM ticket - WHERE id = vTicketFk; - - CALL vn.zone_getShipped (vLanded, vAddressFk, vAgencyModeFk, TRUE); - - CALL vn.buyUltimate (vWarehouseFk, vShipped); -- rellena la tabla buyUltimate con la ultima compra - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot - SELECT vWarehouseFk warehouseFk, NULL available, - s.itemFk, bu.buyFk - FROM sale s - LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk - WHERE s.ticketFk = vTicketFk - GROUP BY s.itemFk; - - CALL vn.catalog_componentCalculate(vZoneFk, vAddressFk, vShipped); - - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT id saleFk, vWarehouseFk warehouseFk - FROM sale s - WHERE s.ticketFk = vTicketFk; - - CALL vn.ticketComponentUpdateSale(IF(vIsTicketEditable,1,6)); -- si el ticket esta facturado, respeta los precios - - IF vLanded IS NULL THEN - - CALL zone_getLanded(vShipped, vAddressFk, vAgencyModeFk, vWarehouseFk); - - UPDATE vn2008.Tickets t - SET t.landing = (SELECT landed FROM tmp.zoneGetLanded) - WHERE Id_Ticket = vTicketFk; - - DROP TEMPORARY TABLE tmp.zoneGetLanded; - - END IF; - - DROP TEMPORARY TABLE tmp.buyUltimate; - DROP TEMPORARY TABLE tmp.ticketComponentPrice; - DROP TEMPORARY TABLE tmp.ticketComponent; - DROP TEMPORARY TABLE tmp.sale; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticket_recalcComponents__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_recalcComponents__`(IN vTicketFk BIGINT, vIsTicketEditable BOOLEAN) -proc: BEGIN - -/** - * Este procedimiento recalcula los componentes de un ticket, - * eliminando los componentes existentes e insertandolos de nuevo - * - * @param vTicketFk Id del ticket - * @param vIsTicketEditable si no se quiere forzar llamar con NULL - */ - DECLARE vShipped DATE; - DECLARE vWarehouseFk SMALLINT; - DECLARE vAgencyModeFk INT; - DECLARE vAddressFk INT; - DECLARE vLanded DATE; - DECLARE vZoneFk INTEGER; - - -- Santos 2021, borrar a partir del dia 31 PAK - IF (SELECT COUNT(*) - FROM tmp.routeDayMove ra - JOIN vn.ticket t ON t.routeFk = ra.routeFk - WHERE t.id = vTicketFk) THEN - - LEAVE proc; - - END IF; - - IF vIsTicketEditable IS NULL THEN - SELECT IFNULL(ts.alertLevel,0) = 0 AND IFNULL(t.refFk,'') = '' - INTO vIsTicketEditable - FROM ticket t LEFT JOIN ticketState ts ON t.id = ts.ticket - WHERE id = vTicketFk; - END IF; - - SELECT t.warehouseFk, - t.shipped, - t.addressFk, - t.agencyModeFk, - t.landed, - t.zoneFk - INTO vWarehouseFk, vShipped, vAddressFk, vAgencyModeFk, vLanded, vZoneFk - FROM ticket t LEFT JOIN ticketState ts ON t.id = ts.ticket - WHERE t.id = vTicketFk; - - IF vLanded IS NULL OR vZoneFk IS NULL THEN - - CALL zone_getLanded(vShipped, vAddressFk, vAgencyModeFk, vWarehouseFk, TRUE); - - IF (SELECT COUNT(*) FROM tmp.zoneGetLanded LIMIT 1) = 0 THEN - CALL util.throw('There is no zone for these parameters'); - END IF; - - UPDATE ticket t - SET t.landed = (SELECT landed FROM tmp.zoneGetLanded LIMIT 1) - WHERE t.id = vTicketFk AND t.landed IS NULL; - - IF vZoneFk IS NULL THEN - SELECT zoneFk INTO vZoneFk FROM tmp.zoneGetLanded LIMIT 1; - UPDATE ticket t - SET t.zoneFk = vZoneFk - WHERE t.id = vTicketFk AND t.zoneFk IS NULL; - END IF; - DROP TEMPORARY TABLE tmp.zoneGetLanded; - - END IF; - - -- rellena la tabla buyUltimate con la ultima compra - CALL buyUltimate (vWarehouseFk, vShipped); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot - SELECT vWarehouseFk warehouseFk, NULL available, - s.itemFk, bu.buyFk, vZoneFk zoneFk - FROM sale s - LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk - WHERE s.ticketFk = vTicketFk - GROUP BY s.itemFk; - - CALL catalog_componentPrepare(); - CALL catalog_componentCalculate(vZoneFk, vAddressFk, vShipped, vWarehouseFk); - - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT id saleFk, vWarehouseFk warehouseFk - FROM sale s - WHERE s.ticketFk = vTicketFk; - - -- si el ticket esta facturado, respeta los precios - CALL ticketComponentUpdateSale(IF(vIsTicketEditable, 1, 6)); - - CALL catalog_componentPurge(); - DROP TEMPORARY TABLE - tmp.buyUltimate, + DROP TEMPORARY TABLE + tmp.buyUltimate, tmp.sale; END ;; DELIMITER ; @@ -83990,11 +70838,11 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_requestRecalc`(vSelf INT) proc: BEGIN @@ -84007,7 +70855,98 @@ proc: BEGIN LEAVE proc; END IF; - INSERT IGNORE INTO ticketRecalc SET ticketFk = vSelf; + INSERT INTO ticketRecalc SET ticketFk = vSelf; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_setNextState` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setNextState`(vSelf INT) +BEGIN +/** + * Cambia el estado del ticket al siguiente estado según la tabla state + * + * @param vSelf id dle ticket + */ + DECLARE vStateFk INT; + DECLARE vNewStateFk INT; + + SELECT stateFk INTO vStateFk + FROM ticketState + WHERE ticketFk = vSelf; + + SELECT nextStateFk INTO vNewStateFk + FROM state + WHERE id = vStateFk; + + INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) + VALUES (vNewStateFk, vSelf, account.myUser_getId()); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_setParking` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setParking`(IN `vTicketFk` VARCHAR(8), IN `vParkingFk` INT) +proc: BEGIN +/** + * Aparca un ticket en un parking + * + * @param vTicketFk id del ticket + * @param vParkingFk id del parking + */ + DECLARE vDone INT DEFAULT FALSE; + DECLARE vCollectionTicketFk INT; + DECLARE vCursor CURSOR FOR + SELECT IFNULL(tc2.ticketFk, t.id) + FROM ticket t + LEFT JOIN ticketCollection tc1 ON tc1.ticketFk = t.id + LEFT JOIN ticketCollection tc2 ON tc2.collectionFk = tc1.collectionFk + WHERE t.id = vTicketFk; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + INSERT INTO vn.ticketParking(ticketFk, parkingFk) + SELECT IFNULL(tc2.ticketFk, t.id), vParkingFk + FROM ticket t + LEFT JOIN ticketCollection tc1 ON tc1.ticketFk = t.id + LEFT JOIN ticketCollection tc2 ON tc2.collectionFk = tc1.collectionFk + WHERE t.id = vTicketFk + ON DUPLICATE KEY UPDATE parkingFk = vParkingFk; + + OPEN vCursor; + l: LOOP + FETCH vCursor INTO vCollectionTicketFk; + + IF vDone THEN + LEAVE l; + END IF; + + CALL vn.ticket_setNextState(vCollectionTicketFk); + END LOOP; + + CLOSE vCursor; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -84020,45 +70959,39 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_setPreviousState`(vTicketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setPreviousState`(vTicketFk INT) BEGIN - DECLARE vControlFk INT; - - SELECT MAX(inter_id) INTO vControlFk + + SELECT MAX(inter_id) INTO vControlFk FROM vncontrol.inter - WHERE Id_Ticket = vTicketFk; - + WHERE Id_Ticket = vTicketFk; + IF (SELECT s.code - FROM vn.state s - JOIN vncontrol.inter i ON i.state_id = s.id - WHERE i.inter_id = vControlFk) + FROM vn.state s + JOIN vncontrol.inter i ON i.state_id = s.id + WHERE i.inter_id = vControlFk) = 'PREVIOUS_PREPARATION' THEN - - SELECT inter_id + SELECT inter_id INTO vControlFk - FROM vncontrol.inter i + FROM vncontrol.inter i JOIN vn.state s ON i.state_id = s.id WHERE Id_Ticket = vTicketFk AND inter_id < vControlFk - AND s.code != 'PREVIOUS_PREPARATION' + AND s.code != 'PREVIOUS_PREPARATION' ORDER BY inter_id DESC - LIMIT 1; - - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) + LIMIT 1; + + INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) SELECT s.nextStateFk, i.Id_Ticket, account.myUser_getId() FROM vncontrol.inter i JOIN vn.state s ON i.state_id = s.id - WHERE inter_id = vControlFk; - - END IF; - - SELECT TRUE AS IsUpdated; - + WHERE inter_id = vControlFk; + END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -84071,35 +71004,135 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_setState`(vTicketFk INT, vStateCode VARCHAR(45)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setState`(vSelf INT, vStateCode VARCHAR(255)) BEGIN - - /* Modifica el estado de un ticket - * - * @param vTicketFk el id del ticket - * @param vStateCode estado a modificar del ticket - * - */ - +/** + * Modifica el estado de un ticket si se cumplen las condiciones necesarias. + * + * @param vSelf el id del ticket + * @param vStateCode estado a modificar del ticket + */ DECLARE vAlertLevel INT; + DECLARE vCurrentStateCode VARCHAR(255); + DECLARE vCanChangeState BOOL; + DECLARE vPackedState INT; - SELECT s.alertLevel INTO vAlertLevel - FROM vn.state s - JOIN vn.ticketState ts ON ts.stateFk = s.id - WHERE ts.ticketFk = vTicketFk; - - IF !(vStateCode = 'ON_CHECKING' AND vAlertLevel > 1) THEN - + SELECT s.alertLevel, s.`code` + INTO vAlertLevel, vCurrentStateCode + FROM state s + JOIN ticketState ts ON ts.stateFk = s.id + WHERE ts.ticketFk = vSelf; + + SELECT id INTO vPackedState + FROM alertLevel + WHERE code = 'PACKED'; + + SET vCanChangeState = (vStateCode <> 'ON_CHECKING' OR vAlertLevel < vPackedState) + AND NOT ( + vCurrentStateCode IN ('CHECKED', 'CHECKING') + AND vStateCode IN ('PREPARED', 'ON_PREPARATION') + ); + + IF vCanChangeState THEN INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT id, vTicketFk, account.myUser_getId() - FROM vn.state - WHERE `code` = vStateCode collate utf8_unicode_ci; - - END IF; + SELECT id, vSelf, account.myUser_getId() + FROM state + WHERE `code` = vStateCode COLLATE utf8_unicode_ci; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_split` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_split`(vTicketFk INT, vTicketFutureFk INT, vDated DATE) +proc:BEGIN +/** + * Mueve las lineas con problemas a otro ticket existente o a uno nuevo. + * + * @param vTicketFk Identificador del ticket a splittar + * @param vTicketFutureFk Identificador del ticket al que se quieren mover las lineas + * @param vDate Fecha a la que se va a mover + * @table tmp.salesToSplit(saleFk, ticketFk, problem) + */ + DECLARE vHasFullProblem BOOL; + DECLARE vProblemLines INT; + DECLARE vTotalLines INT; + + SELECT COUNT(*) INTO vProblemLines + FROM tmp.salesToSplit + WHERE ticketFk = vTicketFk; + + SELECT count(*) INTO vTotalLines + FROM vn.sale s + WHERE s.ticketFk = vTicketFk; + + SET vHasFullProblem = (vTotalLines = vProblemLines); + + -- Ticket completo + IF vHasFullProblem THEN + + UPDATE vn.ticket + SET landed = vDated + 1, + shipped = vDated, + nickname = CONCAT('(',DAY(util.VN_CURDATE()),') ', nickname ) + WHERE id = vTicketFk; + + SELECT CONCAT("Se ha cambiado el ticket ", vTicketFk, " al dia ", vDated); + LEAVE proc; + + END IF; + + -- Ticket a futuro existe + IF vTicketFutureFk THEN + + UPDATE vn.sale s + JOIN tmp.salesToSplit ss ON s.id = ss.saleFk + SET s.ticketFk = vTicketFutureFk, + s.concept = CONCAT('(s) ', s.concept) + WHERE ss.ticketFk = vTicketFk; + + SELECT CONCAT("Se han movido lineas del ticket ", vTicketFk, + " al ticket existente ", vTicketFutureFk,"(", vDated,")"); + LEAVE proc; + + END IF; + + -- Ticket nuevo + CALL vn.ticket_Clone(vTicketFk, vTicketFutureFk); + + UPDATE vn.ticket t + JOIN vn.productionConfig pc + SET t.landed = vDated + 1, + t.shipped = vDated, + t.agencyModeFk = pc.defautlAgencyMode, + t.zoneFk = pc.defaultZone + WHERE t.id = vTicketFutureFk; + + UPDATE vn.sale s + JOIN tmp.salesToSplit sts ON sts.saleFk = s.id + SET s.ticketFk = vTicketFutureFk, + s.concept = CONCAT('(s) ', s.concept) + WHERE sts.ticketFk = vTicketFk; + + CALL vn.ticketStateUpdate(vTicketFutureFk, 'FIXING'); + + SELECT CONCAT("Se han movido lineas del ticket ", vTicketFk, + " al nuevo ticket ", vTicketFutureFk,"(", vDated,")"); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -84110,123 +71143,113 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_splitItemPackingType`(vTicketFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_splitItemPackingType`(vTicketFk INT, vOriginalItemPackingTypeFk VARCHAR(1)) proc:BEGIN - - /* - * Clona y reparte las ventas de un ticket en funcion del tipo de empaquetado - * - * @param vTicketFk Identificador de vn.ticket - * @return table tmp.ticketIPT(ticketFk, itemPackingTypeFk) - */ - - +/** + * Clona y reparte las ventas de un ticket en funcion del tipo de empaquetado. + * Respeta el id inicial para el tipo propuesto. + * + * @param vTicketFk Identificador de vn.ticket + * @param vOriginalItemPackingTypeFk Tipo para el que se reserva el número de ticket original + * @return table tmp.ticketIPT(ticketFk, itemPackingTypeFk) + */ DECLARE vItemPackingTypeFk VARCHAR(1); - DECLARE vNewTicketFk INT; - DECLARE vPackingTypesToSplit INT; - DECLARE vDone INT DEFAULT FALSE; - - DECLARE cur1 CURSOR FOR - SELECT itemPackingTypeFk - FROM tmp.saleGroup - WHERE itemPackingTypeFk IS NOT NULL; + + DECLARE cur1 CURSOR FOR + SELECT itemPackingTypeFk + FROM tmp.saleGroup + WHERE itemPackingTypeFk IS NOT NULL + ORDER BY (itemPackingTypeFk = vOriginalItemPackingTypeFk) DESC; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; DROP TEMPORARY TABLE IF EXISTS tmp.sale; CREATE TEMPORARY TABLE tmp.sale (PRIMARY KEY (id)) - SELECT s.id, i.itemPackingTypeFk , sv.litros + SELECT s.id, i.itemPackingTypeFk , sv.litros FROM vn.sale s - JOIN vn.item i ON i.id = s.itemFk + JOIN vn.item i ON i.id = s.itemFk JOIN vn.saleVolume sv ON sv.saleFk = s.id - WHERE s.ticketFk = vTicketFk; - + LEFT JOIN vn.saleTracking st ON st.saleFk = s.id + WHERE s.ticketFk = vTicketFk + AND ISNULL(st.id); + DROP TEMPORARY TABLE IF EXISTS tmp.saleGroup; CREATE TEMPORARY TABLE tmp.saleGroup SELECT itemPackingTypeFk , sum(litros) AS totalLitros FROM tmp.sale - GROUP BY itemPackingTypeFk; - + GROUP BY itemPackingTypeFk; + SELECT COUNT(*) INTO vPackingTypesToSplit FROM tmp.saleGroup WHERE itemPackingTypeFk IS NOT NULL; - + DROP TEMPORARY TABLE IF EXISTS tmp.ticketIPT; CREATE TEMPORARY TABLE tmp.ticketIPT (ticketFk INT, itemPackingTypeFk VARCHAR(1)); CASE vPackingTypesToSplit - WHEN 0 THEN - INSERT INTO tmp.ticketIPT(ticketFk, itemPackingTypeFk) VALUES(vTicketFk, 'H'); - WHEN 1 THEN - INSERT INTO tmp.ticketIPT(ticketFk, itemPackingTypeFk) SELECT vTicketFk, itemPackingTypeFk FROM tmp.saleGroup WHERE itemPackingTypeFk IS NOT NULL; ELSE - OPEN cur1; FETCH cur1 INTO vItemPackingTypeFk; - + INSERT INTO tmp.ticketIPT(ticketFk, itemPackingTypeFk) VALUES(vTicketFk, vItemPackingTypeFk); - - read_loop: LOOP - - FETCH cur1 INTO vItemPackingTypeFk; - - IF vDone THEN - LEAVE read_loop; - END IF; - - CALL vn.ticket_Clone(vTicketFk, vNewTicketFk); - - INSERT INTO tmp.ticketIPT(ticketFk, itemPackingTypeFk) + + read_loop: LOOP + FETCH cur1 INTO vItemPackingTypeFk; + + IF vDone THEN + LEAVE read_loop; + END IF; + + CALL vn.ticket_Clone(vTicketFk, vNewTicketFk); + + INSERT INTO tmp.ticketIPT(ticketFk, itemPackingTypeFk) VALUES(vNewTicketFk, vItemPackingTypeFk); - - END LOOP; - - CLOSE cur1; - - UPDATE vn.sale s - JOIN tmp.sale ts ON ts.id = s.id - JOIN tmp.ticketIPT t ON t.itemPackingTypeFk = ts.itemPackingTypeFk - SET s.ticketFk = t.ticketFk; - - SELECT itemPackingTypeFk INTO vItemPackingTypeFk - FROM tmp.saleGroup sg - WHERE NOT ISNULL(sg.itemPackingTypeFk) - ORDER BY sg.totalLitros - LIMIT 1; - - UPDATE vn.sale s - JOIN tmp.sale ts ON ts.id = s.id - JOIN tmp.ticketIPT t ON t.itemPackingTypeFk = vItemPackingTypeFk - SET s.ticketFk = t.ticketFk - WHERE ISNULL(ts.itemPackingTypeFk); - + END LOOP; + + CLOSE cur1; + + UPDATE vn.sale s + JOIN tmp.sale ts ON ts.id = s.id + JOIN tmp.ticketIPT t ON t.itemPackingTypeFk = ts.itemPackingTypeFk + SET s.ticketFk = t.ticketFk; + + SELECT itemPackingTypeFk INTO vItemPackingTypeFk + FROM tmp.saleGroup sg + WHERE NOT ISNULL(sg.itemPackingTypeFk) + ORDER BY sg.totalLitros + LIMIT 1; + + UPDATE vn.sale s + JOIN tmp.sale ts ON ts.id = s.id + JOIN tmp.ticketIPT t ON t.itemPackingTypeFk = vItemPackingTypeFk + SET s.ticketFk = t.ticketFk + WHERE ts.itemPackingTypeFk IS NULL; END CASE; - + DROP TEMPORARY TABLE tmp.sale; DROP TEMPORARY TABLE tmp.saleGroup; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -84237,51 +71260,51 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_splitPackingComplete`(vTicketFk INT, vSectorFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_splitPackingComplete`(vTicketFk INT, vSectorFk INT) BEGIN - + DECLARE vNeedToSplit BOOLEAN; DECLARE vNewTicketFk INT; - + DROP TEMPORARY TABLE IF EXISTS tmpSale; - + CREATE TEMPORARY TABLE tmpSale SELECT DISTINCT s.id - FROM vn.ticket t + FROM vn.ticket t JOIN vn.sale s ON s.ticketFk = t.id - JOIN vn.item i ON i.id = s.itemFk + JOIN vn.item i ON i.id = s.itemFk LEFT JOIN vn.itemShelvingStock iss ON iss.itemFk = s.itemFk AND iss.sectorFk = vSectorFk - JOIN vn.packagingConfig pc + JOIN vn.packagingConfig pc WHERE t.id = vTicketFk AND ( s.quantity MOD IFNULL(iss.packing,1) != 0 - OR + OR IFNULL(iss.packing,1) = 1 - OR + OR i.`size` <= pc.previousPreparationMinimumSize ); - - SELECT COUNT(*) + + SELECT COUNT(*) INTO vNeedToSplit - FROM tmpSale; - + FROM tmpSale; + IF vNeedToSplit THEN - + CALL vn.ticket_Clone(vTicketFk, vNewTicketFk); - + UPDATE vn.sale s - JOIN vn.tmpSale ts ON ts.id = s.id + JOIN vn.tmpSale ts ON ts.id = s.id SET s.ticketFk = vNewTicketFk; - + END IF; - + DROP TEMPORARY TABLE tmpSale; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -84292,13 +71315,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_WeightDeclaration`(vClientFk INT, vDated DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_WeightDeclaration`(vClientFk INT, vDated DATE) BEGIN DECLARE vTheorycalWeight DECIMAL(10,2); @@ -84312,7 +71335,7 @@ BEGIN WHERE ot.description = 'Peso Aduana' AND t.clientFk = vClientFk AND t.shipped BETWEEN vDated AND util.dayend(vDated); - + SELECT sum(IF(sv.physicalWeight = 0, sv.weight, sv.physicalWeight)) INTO vTheorycalWeight FROM vn.ticket t JOIN vn.sale s ON s.ticketFk = t.id @@ -84321,9 +71344,9 @@ BEGIN JOIN vn.itemCost ic ON ic.itemFk = i.id AND ic.warehouseFk = t.warehouseFk WHERE t.clientFk = vClientFk AND t.shipped BETWEEN vDated AND util.dayend(vDated); - + SET vRatio = vRealWeight / vTheorycalWeight; - + DROP TEMPORARY TABLE IF EXISTS tmp.ticketWeight; CREATE TEMPORARY TABLE tmp.ticketWeight @@ -84344,7 +71367,7 @@ BEGIN AND t.shipped BETWEEN vDated AND util.dayend(vDated) GROUP BY ib.ediBotanic, o.code; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -84357,28 +71380,26 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `timeBusiness_calculate`(vDatedFrom DATETIME, vDatedTo DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `timeBusiness_calculate`(vDatedFrom DATETIME, vDatedTo DATETIME) BEGIN - /** - * Horas que debe trabajar un empleado según contrato y día. + * Horas que debe trabajar un empleado según contrato y día. * @param vDatedFrom workerTimeControl * @param vDatedTo workerTimeControl * @table tmp.user(userFk) * @return tmp.timeBusinessCalculate */ - DROP TEMPORARY TABLE IF EXISTS tmp.timeBusinessCalculate; CREATE TEMPORARY TABLE tmp.timeBusinessCalculate - SELECT dated, + SELECT dated, businessFk, - userFk, - departmentFk, + userFk, + departmentFk, hourStart, hourEnd, timeTable, @@ -84388,68 +71409,63 @@ BEGIN timeWorkSeconds timeBusinessSeconds, SEC_TO_TIME(timeWorkSeconds) timeBusinessSexagesimal, timeWorkSeconds / 3600 timeBusinessDecimal, - type, + name type, permissionRate, hoursWeek, discountRate, isAllowedToWork FROM(SELECT t.dated, - b.business_id businessFk, + b.id businessFk, w.userFk, - bl.department_id departmentFk, - IF(j.start = NULL, NULL, GROUP_CONCAT(DISTINCT LEFT(j.start,5) ORDER BY j.start ASC SEPARATOR ' - ')) hourStart , + b.departmentFk, + IF(j.start = NULL, NULL, GROUP_CONCAT(DISTINCT LEFT(j.start,5) ORDER BY j.start ASC SEPARATOR ' - ')) hourStart , IF(j.start = NULL, NULL, GROUP_CONCAT(DISTINCT LEFT(j.end,5) ORDER BY j.end ASC SEPARATOR ' - ')) hourEnd, IF(j.start = NULL, NULL, GROUP_CONCAT(DISTINCT LEFT(j.start,5), " - ", LEFT(j.end,5) ORDER BY j.end ASC SEPARATOR ' - ')) timeTable, - IF(j.start = NULL, 0, IFNULL(SUM(TIME_TO_SEC(j.end)) - SUM(TIME_TO_SEC(j.start)),0)) timeWorkSeconds, - cs.type, - cs.permissionRate, - cs.discountRate, + IF(j.start = NULL, 0, IFNULL(SUM(TIME_TO_SEC(j.end)) - SUM(TIME_TO_SEC(j.start)), 0)) timeWorkSeconds, + at2.name, + at2.permissionRate, + at2.discountRate, cl.hours_week hoursWeek, - cs.isAllowedToWork - FROM vn.time t - LEFT JOIN postgresql.business b ON t.dated BETWEEN b.date_start AND ifnull(b.date_end, vDatedTo ) - LEFT JOIN postgresql.profile AS pr ON b.client_id = pr.profile_id - LEFT JOIN postgresql.person AS p ON pr.person_id = p.person_id - LEFT JOIN vn.worker AS w ON p.id_trabajador = w.id + at2.isAllowedToWork + FROM time t + LEFT JOIN business b ON t.dated BETWEEN b.started AND IFNULL(b.ended, vDatedTo) + LEFT JOIN worker w ON w.id = b.workerFk JOIN tmp.`user` u ON u.userFK = w.userFK - JOIN postgresql.business_labour AS bl ON b.business_id = bl.business_id - LEFT JOIN postgresql.business_labour_payroll AS bp ON bl.business_id = bp.business_id - LEFT JOIN postgresql.professional_category AS pc ON bl.professional_category_id = pc.professional_category_id - LEFT JOIN postgresql.workcenter AS wc ON bl.workcenter_id = wc.workcenter_id - LEFT JOIN postgresql.calendar_labour_type AS cl ON bl.calendar_labour_type_id = cl.calendar_labour_type_id - LEFT JOIN postgresql.journey AS j ON j.business_id = b.business_id and j.day_id=WEEKDAY(t.dated)+1 - LEFT JOIN postgresql.calendar_employee ce ON ce.business_id=b.business_id and ce.date = t.dated - LEFT JOIN postgresql.calendar_state cs ON cs.calendar_state_id = ce.calendar_state_id + LEFT JOIN workCenter wc ON wc.id = b.workcenterFK + LEFT JOIN postgresql.calendar_labour_type cl ON cl.calendar_labour_type_id = b.calendarTypeFk + LEFT JOIN postgresql.journey j ON j.business_id = b.id AND j.day_id = WEEKDAY(t.dated) + 1 + LEFT JOIN postgresql.calendar_employee ce ON ce.businessFk = b.id AND ce.date = t.dated + LEFT JOIN absenceType at2 ON at2.id = ce.calendar_state_id WHERE t.dated BETWEEN vDatedFrom AND vDatedTo - GROUP BY w.userFk,dated + GROUP BY w.userFk, t.dated )sub; UPDATE tmp.timeBusinessCalculate t LEFT JOIN postgresql.journey j ON j.business_id = t.businessFk SET t.timeWorkSeconds = t.hoursWeek / 5 * 3600, - t.timeWorkSexagesimal = SEC_TO_TIME( t.hoursWeek / 5 * 3600), - t.timeWorkDecimal = t.hoursWeek / 5, + t.timeWorkSexagesimal = SEC_TO_TIME( t.hoursWeek / 5 * 3600), + t.timeWorkDecimal = t.hoursWeek / 5, t.timeBusinessSeconds = t.hoursWeek / 5 * 3600, - t.timeBusinessSexagesimal = SEC_TO_TIME( t.hoursWeek / 5 * 3600), + t.timeBusinessSexagesimal = SEC_TO_TIME( t.hoursWeek / 5 * 3600), t.timeBusinessDecimal = t.hoursWeek / 5 WHERE DAYOFWEEK(t.dated) IN(2,3,4,5,6) AND j.journey_id IS NULL ; - UPDATE tmp.timeBusinessCalculate t + UPDATE tmp.timeBusinessCalculate t SET t.timeWorkSeconds = t.timeWorkSeconds - (t.timeWorkSeconds * permissionRate) , t.timeWorkSexagesimal = SEC_TO_TIME ((t.timeWorkDecimal - (t.timeWorkDecimal * permissionRate)) * 3600), t.timeWorkDecimal = t.timeWorkDecimal - (t.timeWorkDecimal * permissionRate) - WHERE permissionRate <> 0; + WHERE permissionRate <> 0; - UPDATE tmp.timeBusinessCalculate t - JOIN vn.calendarHolidays ch ON ch.dated = t.dated - JOIN postgresql.business_labour bl ON bl.business_id = t.businessFk AND bl.workcenter_id = ch.workcenterFk + UPDATE tmp.timeBusinessCalculate t + JOIN calendarHolidays ch ON ch.dated = t.dated + JOIN business b ON b.id = t.businessFk + AND b.workcenterFk = ch.workcenterFk SET t.timeWorkSeconds = 0, - t.timeWorkSexagesimal = 0, + t.timeWorkSexagesimal = 0, t.timeWorkDecimal = 0, t.permissionrate = 1, t.type = 'Festivo' WHERE t.type IS NULL; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -84462,11 +71478,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `timeBusiness_calculateAll`(vDatedFrom DATETIME, vDatedTo DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `timeBusiness_calculateAll`(vDatedFrom DATETIME, vDatedTo DATETIME) BEGIN /** @@ -84476,16 +71492,16 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.`user`; - CREATE TEMPORARY TABLE IF NOT EXISTS tmp.`user` + CREATE TEMPORARY TABLE IF NOT EXISTS tmp.`user` SELECT userFk FROM vn.worker w JOIN vn.`user` u ON u.id = w.userFk WHERE userFk IS NOT NULL; - + CALL vn.timeBusiness_calculate(vDatedFrom, vDatedTo); DROP TEMPORARY TABLE tmp.`user`; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -84496,40 +71512,33 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `timeBusiness_calculateByDepartment`(vDepartmentFk INT, vDatedFrom DATETIME, vDatedTo DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `timeBusiness_calculateByDepartment`(vDepartmentFk INT, vDatedFrom DATETIME, vDatedTo DATETIME) BEGIN - /** - * @param vDepartmentFk + * @param vDepartmentFk * @param vDatedFrom workerTimeControl * @param vDatedTo workerTimeControl */ - - DROP TEMPORARY TABLE IF EXISTS tmp.`user`; - - CREATE TEMPORARY TABLE tmp.`user` - SELECT DISTINCT w.userFk - FROM postgresql.business AS b - LEFT JOIN postgresql.profile AS pr ON pr.profile_id = b.client_id - LEFT JOIN postgresql.person AS p ON p.person_id = pr.person_id - LEFT JOIN postgresql.business_labour AS bl ON b.business_id = bl.business_id - LEFT JOIN vn.worker AS w ON p.id_trabajador = w.id - LEFT JOIN vn.department AS d ON bl.department_id = d.id - WHERE ((b.date_start BETWEEN vDatedFrom AND vDatedTo OR b.date_end BETWEEN vDatedFrom AND vDatedTo) OR - (b.date_end IS NULL AND b.date_start <= vDatedTo) OR - (b.date_start <= vDatedFrom AND b.date_end >= vDatedTo) - ) AND bl.department_id = vDepartmentFk - ORDER BY b.date_end DESC; - - CALL vn.timeBusiness_calculate(vDatedFrom, vDatedTo); - - DROP TEMPORARY TABLE tmp.`user`; + DROP TEMPORARY TABLE IF EXISTS tmp.`user`; + + CREATE TEMPORARY TABLE tmp.`user` + SELECT DISTINCT b.workerFk userFk + FROM business AS b + WHERE (b.started BETWEEN vDatedFrom AND vDatedTo + OR IFNULL(b.ended, vDatedTo) BETWEEN vDatedFrom AND vDatedTo + OR (b.started <= vDatedFrom AND b.ended >= vDatedTo) + ) AND b.departmentFk = vDepartmentFk + ORDER BY b.ended DESC; + + CALL timeBusiness_calculate(vDatedFrom, vDatedTo); + + DROP TEMPORARY TABLE tmp.`user`; END ;; DELIMITER ; @@ -84541,29 +71550,29 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `timeBusiness_calculateByUser`(vUserFk INT, vDatedFrom DATETIME, vDatedTo DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `timeBusiness_calculateByUser`(vUserFk INT, vDatedFrom DATETIME, vDatedTo DATETIME) BEGIN /** - * @param vUserFk + * @param vUserFk * @param vDatedFrom workerTimeControl * @param vDatedTo workerTimeControl */ - + DROP TEMPORARY TABLE IF EXISTS tmp.`user`; - + CREATE TEMPORARY TABLE tmp.`user` SELECT id userFk - FROM user - WHERE id = vUserFk; + FROM user + WHERE id = vUserFk; CALL vn.timeBusiness_calculate(vDatedFrom, vDatedTo); - + DROP TEMPORARY TABLE tmp.`user`; END ;; @@ -84576,13 +71585,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `timeBusiness_calculateByWorker`(vWorkerFk INT, vDatedFrom DATETIME, vDatedTo DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `timeBusiness_calculateByWorker`(vWorkerFk INT, vDatedFrom DATETIME, vDatedTo DATETIME) BEGIN /** @@ -84590,127 +71599,19 @@ BEGIN * @param vDatedFrom workerTimeControl * @param vDatedTo workerTimeControl */ - + DROP TEMPORARY TABLE IF EXISTS tmp.`user`; - + CREATE TEMPORARY TABLE tmp.`user` SELECT u.id userFk FROM vn.user u JOIN vn.worker w ON w.userFk = u.id WHERE w.id = vWorkerFk; - + CALL vn.timeBusiness_calculate(vDatedFrom, vDatedTo); - + DROP TEMPORARY TABLE tmp.`user`; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `timeBusiness_calculate__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `timeBusiness_calculate__`(vDatedFrom DATETIME, vDatedTo DATETIME) -BEGIN - -/** - * Horas que debe trabajar un empleado según contrato y día. - * @param vDatedFrom workerTimeControl - * @param vDatedTo workerTimeControl - * @table tmp.user(userFk) - * @return tmp.timeBusinessCalculate - */ - - DROP TABLE IF EXISTS tmp.timeBusinessCalculate; - DROP TEMPORARY TABLE IF EXISTS tmp.businessFullTime; - - CALL rangeDateInfo(vDatedFrom, vDatedTo); - - CREATE TABLE tmp.timeBusinessCalculate - SELECT dated, - businessFk, - userFk, - departmentFk, - hourStart, - hourEnd, - timeTable, - timeWorkSeconds, - SEC_TO_TIME(timeWorkSeconds) timeWorkSexagesimal, - timeWorkSeconds / 3600 timeWorkDecimal, - timeWorkSeconds timeBusinessSeconds, - SEC_TO_TIME(timeWorkSeconds) timeBusinessSexagesimal, - timeWorkSeconds / 3600 timeBusinessDecimal, - type, - permissionRate, - hoursWeek, - discountRate - FROM(SELECT rd.dated, - b.business_id businessFk, - w.userFk, - bl.department_id departmentFk, - IF(j.start = NULL, NULL, GROUP_CONCAT(DISTINCT LEFT(j.start,5) ORDER BY j.start ASC SEPARATOR ' - ')) hourStart , - IF(j.start = NULL, NULL, GROUP_CONCAT(DISTINCT LEFT(j.end,5) ORDER BY j.end ASC SEPARATOR ' - ')) hourEnd, - IF(j.start = NULL, NULL, GROUP_CONCAT(DISTINCT LEFT(j.start,5), " - ", LEFT(j.end,5) ORDER BY j.end ASC SEPARATOR ' - ')) timeTable, - IF(j.start = NULL, 0, IFNULL(SUM(TIME_TO_SEC(j.end)) - SUM(TIME_TO_SEC(j.start)),0)) timeWorkSeconds, - cs.type, - cs.permissionRate, - cs.discountRate, - cl.hours_week hoursWeek - FROM tmp.rangeDate rd - LEFT JOIN postgresql.business b ON rd.dated BETWEEN b.date_start AND ifnull(b.date_end, vDatedTo ) - LEFT JOIN postgresql.profile AS pr ON b.client_id = pr.profile_id - LEFT JOIN postgresql.person AS p ON pr.person_id = p.person_id - LEFT JOIN vn.worker AS w ON p.id_trabajador = w.id - JOIN tmp.`user` u ON u.userFK = w.userFK - JOIN postgresql.business_labour AS bl ON b.business_id = bl.business_id - LEFT JOIN postgresql.business_labour_payroll AS bp ON bl.business_id = bp.business_id - LEFT JOIN postgresql.professional_category AS pc ON bl.professional_category_id = pc.professional_category_id - LEFT JOIN postgresql.workcenter AS wc ON bl.workcenter_id = wc.workcenter_id - LEFT JOIN postgresql.calendar_labour_type AS cl ON bl.calendar_labour_type_id = cl.calendar_labour_type_id - LEFT JOIN postgresql.journey AS j ON j.business_id = b.business_id and j.day_id=WEEKDAY(rd.dated)+1 - LEFT JOIN postgresql.calendar_employee ce ON ce.business_id=b.business_id and ce.date = rd.dated - LEFT JOIN postgresql.calendar_state cs ON cs.calendar_state_id = ce.calendar_state_id - WHERE rd.dated BETWEEN vDatedFrom AND vDatedTo - GROUP BY w.userFk,dated - )sub; - - - UPDATE tmp.timeBusinessCalculate t - LEFT JOIN postgresql.journey j ON j.business_id = t.businessFk - SET t.timeWorkSeconds = t.hoursWeek / 5 * 3600, - t.timeWorkSexagesimal = SEC_TO_TIME( t.hoursWeek / 5 * 3600), - t.timeWorkDecimal = t.hoursWeek / 5, - t.timeBusinessSeconds = t.hoursWeek / 5 * 3600, - t.timeBusinessSexagesimal = SEC_TO_TIME( t.hoursWeek / 5 * 3600), - t.timeBusinessDecimal = t.hoursWeek / 5 - WHERE DAYOFWEEK(t.dated) IN(2,3,4,5,6) AND j.journey_id IS NULL ; - - UPDATE tmp.timeBusinessCalculate t - SET t.timeWorkSeconds = t.timeWorkSeconds - (t.timeWorkSeconds * permissionRate) , - t.timeWorkSexagesimal = SEC_TO_TIME ((t.timeWorkDecimal - (t.timeWorkDecimal * permissionRate)) * 3600), - t.timeWorkDecimal = t.timeWorkDecimal - (t.timeWorkDecimal * permissionRate) - WHERE permissionRate <> 0; - -UPDATE tmp.timeBusinessCalculate t - JOIN vn.calendarHolidays ch ON ch.dated = t.dated - JOIN postgresql.business_labour bl ON bl.business_id = t.businessFk AND bl.workcenter_id = ch.workcenterFk - SET t.timeWorkSeconds = 0, - t.timeWorkSexagesimal = 0, - t.timeWorkDecimal = 0, - t.permissionrate = 1, - t.type = 'Festivo' - WHERE t.type IS NULL; - -DROP TEMPORARY TABLE IF EXISTS tmp.rangeDate; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -84721,51 +71622,189 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `timeControl_calculate`(vDatedFrom DATETIME, vDatedTo DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `timeControl_calculate`(vDatedFrom DATETIME, vDatedTo DATETIME) BEGIN +/* + * @param vDatedFrom + * @param vDatedTo + * Calculo de horas trabajadas por empleado y dia, sin tener encuenta los dias con fichadas incorrectas + * segun la tabla tmp.timeControlError + * @return tmp.timeControlCalculate (workerFk, dated, timeWorkSeconds, timeWorkSexagesimal, timeWorkDecimal, timed) + */ + DECLARE vHourToSeconds INTEGER; + DECLARE vDatedFromYesterday DATETIME; + DECLARE vDatedToTomorrow DATETIME; + DECLARE vTimeToBreakTime INT; + DECLARE vBreakTime INT; + + SELECT DATE_SUB(vDatedFrom, INTERVAL 1 DAY), DATE_ADD(vDatedTo, INTERVAL 1 DAY) + INTO vDatedFromYesterday, vDatedToTomorrow; + + SELECT timeToBreakTime, breakTime INTO vTimeToBreakTime, vBreakTime + FROM workerTimeControlConfig LIMIT 1; + + CALL timeControl_getError(vDatedFrom, vDatedTo); + + DROP TEMPORARY TABLE IF EXISTS tmp.workerTimeControl; + CREATE TEMPORARY TABLE tmp.workerTimeControl + (INDEX (userFk), INDEX (timed)) + ENGINE = MEMORY + SELECT DISTINCT(wtc.id), + wtc.userFk, + wtc.timed, + wtc.direction, + TRUE isReal + FROM workerTimeControl wtc + JOIN tmp.`user` w ON w.userFk = wtc.userFk + LEFT JOIN tmp.timeControlError tce ON tce.id = wtc.id + WHERE wtc.timed BETWEEN vDatedFromYesterday AND vDatedToTomorrow + AND tce.id IS NULL + ORDER BY wtc.userFk, wtc.timed ASC; + + SELECT MAX(id) INTO @vCont + FROM tmp.workerTimeControl; + + DROP TEMPORARY TABLE IF EXISTS tmp.workerTimeControlAux; + CREATE TEMPORARY TABLE tmp.workerTimeControlAux ( + `id` int(11) , + `userFk` int(10) unsigned , + `timed` datetime, + `direction` enum('in', 'out','middle') + ) ENGINE=MEMORY; + + + SET @counter := 0; + SET @vIsOdd := FALSE; + + -- Cambio de dia en medio de un descanso + INSERT INTO tmp.workerTimeControlAux (id, userFk, timed, direction) + SELECT @vCont:= @vCont + 1 id, userFk, util.dayEnd(dated) timed, 'middle' direction + FROM(SELECT wtc.userFk, + DATE(@lastTimed) dated, + (@vIsOdd := NOT @vIsOdd) isOdd, + IF(@vIsOdd AND wtc.direction = 'middle' AND DATE(timed) <> DATE(@lastTimed), TRUE, FALSE) hasBreak, + @lastTimed := wtc.timed + FROM tmp.workerTimeControl wtc + ORDER BY wtc.userFk, wtc.timed + LIMIT 10000000000000000000 + )sub + WHERE hasBreak; + + SET @counter := 0; + SET @vIsOdd := FALSE; + + INSERT INTO tmp.workerTimeControlAux (id, userFk, timed, direction) + SELECT @vCont:= @vCont + 1, userFk, DATE_ADD(sub.dated, INTERVAL 1 DAY), 'middle' + FROM(SELECT wtc.userFk, + DATE(@lastTimed) dated, + (@vIsOdd := NOT @vIsOdd) isOdd, + IF(@vIsOdd AND wtc.direction = 'middle' AND DATE(timed) <> DATE(@lastTimed), TRUE, FALSE) hasBreak, + @lastTimed := wtc.timed + FROM tmp.workerTimeControl wtc + ORDER BY wtc.userFk, wtc.timed + LIMIT 10000000000000000000 + )sub + WHERE hasBreak; + + -- Cambio de dia + INSERT INTO tmp.workerTimeControlAux (id, userFk, timed, direction) + SELECT @vCont:= @vCont + 1 id, sub.userFk, util.dayEnd(sub.dated) timed, 'out' direction + FROM (SELECT MAX(wtc.timed) timed, wtc.userFk, date(wtc.timed) dated + FROM workerTimeControl wtc + JOIN tmp.`user` w ON w.userFk = wtc.userFk + LEFT JOIN tmp.timeControlError tce ON tce.id = wtc.id + WHERE wtc.timed BETWEEN vDatedFromYesterday AND vDatedToTomorrow + AND tce.id IS NULL + GROUP BY wtc.userFk, DATE(wtc.timed) + ) sub + JOIN tmp.workerTimeControl wtc ON wtc.timed = sub.timed AND wtc.userFk = sub.userFk + WHERE wtc.direction <> 'out'; + + INSERT INTO tmp.workerTimeControlAux (id, userFk, timed, direction) + SELECT @vCont:= @vCont + 1, sub.userFk, DATE_ADD(sub.dated, INTERVAL 1 DAY), 'in' + FROM (SELECT MAX(wtc.timed) timed, wtc.userFk, date(wtc.timed) dated + FROM workerTimeControl wtc + JOIN tmp.`user` w ON w.userFk = wtc.userFk + LEFT JOIN tmp.timeControlError tce ON tce.id = wtc.id + WHERE wtc.timed BETWEEN vDatedFromYesterday AND vDatedToTomorrow + AND tce.id IS NULL + GROUP BY wtc.userFk, DATE(wtc.timed) + ) sub + JOIN tmp.workerTimeControl wtc ON wtc.timed = sub.timed AND wtc.userFk = sub.userFk + WHERE wtc.direction <> 'out'; + + INSERT INTO tmp.workerTimeControl (id, userFk, timed, direction, isReal) + SELECT id, userFk, timed, direction, FALSE FROM tmp.workerTimeControlAux; + + SET vHourToSeconds = 3600; SET @vIsOdd := TRUE; - SET @vUser := NULL; - SET @vDated := NULL; - + SET @vDated := 0; + SET @vLastTimed := 0; + + DROP TEMPORARY TABLE IF EXISTS tmp.workerBreakDays; + CREATE TEMPORARY TABLE tmp.workerBreakDays + (INDEX (userFk), INDEX (dated)) + ENGINE = MEMORY + SELECT sub.userFk, sub.dated + FROM (SELECT (@vIsOdd := NOT @vIsOdd), + IF(wtc.direction = 'in', @vIsOdd := TRUE, NULL), + IF(@vIsOdd, @vLastTimed := UNIX_TIMESTAMP(wtc.timed), NULL), + IF(@vIsOdd, 0, UNIX_TIMESTAMP(wtc.timed) - @vLastTimed) timeWork, + IF(direction='in', @vDated := DATE(wtc.timed), @vDated) dated, + wtc.userFk + FROM tmp.workerTimeControl wtc + ORDER BY wtc.userFk, wtc.timed, wtc.id + LIMIT 10000000000000000000 + )sub + GROUP BY sub.userFk, sub.dated + HAVING SUM(sub.timeWork) >= vTimeToBreakTime; + + SET @vIsOdd := TRUE; + SET @vDated := 0; + SET @vLastTimed := 0; + + DROP TEMPORARY TABLE IF EXISTS tmp.workerTimeControlAux2; + CREATE TEMPORARY TABLE tmp.workerTimeControlAux2 + SELECT * + FROM tmp.workerTimeControl + WHERE timed BETWEEN vDatedFromYesterday AND vDatedTo + ORDER BY userFk, timed, id; + DROP TEMPORARY TABLE IF EXISTS tmp.timeControlCalculate; - CREATE TEMPORARY TABLE tmp.timeControlCalculate - SELECT - userFk, - dated, - IF( timeWork >= 18000, @timeWork:=timeWork + 1200, @timeWork:=timeWork) timeWorkSeconds, - SEC_TO_TIME(@timeWork ) timeWorkSexagesimal, - @timeWork / 3600 timeWorkDecimal, - timed - FROM (SELECT SUM(timeWork) timeWork, - userFk, - dated, - GROUP_CONCAT(DATE_FORMAT(sub.timed,"%H:%i") ORDER BY sub.timed ASC SEPARATOR ' - ') timed - FROM (SELECT IF(@vUser = wtc.userFk, @vUser :=@vUser, @vUser := wtc.userFk), - IF(@vIsOdd, @vIsOdd := FALSE, @vIsOdd := TRUE), - IF(direction='in', @vIsOdd := TRUE, @vIsOdd := @vIsOdd), - IF(@vIsOdd, @vLastTimed:=UNIX_TIMESTAMP(timed),@vLastTimed:=@vLastTimed), - IF(@vIsOdd, 0, UNIX_TIMESTAMP(timed)-@vLastTimed) timeWork, - IF(direction='in', @vDated := DATE(wtc.timed), @vDated :=@vDated) dated, - wtc.timed timed, - wtc.userFk, - direction - FROM (SELECT DISTINCT(wtc.id), wtc.userFk, wtc.timed, wtc.direction - FROM workerTimeControl wtc - JOIN tmp.`user` w ON w.userFk = wtc.userFk - WHERE wtc.timed BETWEEN vDatedFrom AND vDatedTo - ORDER BY userFk, timed ASC - ) wtc - WHERE wtc.timed BETWEEN vDatedFrom AND vDatedTo - ) sub - GROUP BY userFk, dated - )sub2; + (INDEX (userFk, dated)) + ENGINE = MEMORY + SELECT sub.userFk, + sub.dated, + IF(wb.userFk, vBreakTime, 0) + SUM(sub.timeWork) timeWorkSeconds, + SEC_TO_TIME(IF(wb.userFk, vBreakTime, 0) + SUM(sub.timeWork)) timeWorkSexagesimal, + (IF(wb.userFk, vBreakTime, 0) + SUM(sub.timeWork)) / vHourToSeconds timeWorkDecimal, + CAST(GROUP_CONCAT(DATE_FORMAT(sub.realTimed, "%H:%i") ORDER BY sub.timed ASC SEPARATOR ' - ') AS CHAR(256)) timed + FROM (SELECT (@vIsOdd := NOT @vIsOdd), + IF(direction='in', @vIsOdd := TRUE, 0), + IF(@vIsOdd, @vLastTimed := UNIX_TIMESTAMP(timed), 0), + IF(@vIsOdd, 0, UNIX_TIMESTAMP(timed) - @vLastTimed) timeWork, + timed, + userFk, + DATE(timed) dated, + IF(isReal, timed, NULL) realTimed + FROM tmp.workerTimeControlAux2 + )sub + LEFT JOIN tmp.workerBreakDays wb ON wb.userFk = sub.userFk AND wb.dated = sub.dated + WHERE sub.timed BETWEEN vDatedFrom AND vDatedTo + GROUP BY sub.userFk, sub.dated; + + DROP TEMPORARY TABLE tmp.workerBreakDays; + DROP TEMPORARY TABLE tmp.timeControlError; + DROP TEMPORARY TABLE tmp.workerTimeControlAux; + DROP TEMPORARY TABLE tmp.workerTimeControlAux2; + DROP TEMPORARY TABLE tmp.workerTimeControl; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -84776,13 +71815,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `timeControl_calculateAll`(vDatedFrom DATETIME, vDatedTo DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `timeControl_calculateAll`(vDatedFrom DATETIME, vDatedTo DATETIME) BEGIN /** @@ -84792,16 +71831,16 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.`user`; - CREATE TEMPORARY TABLE IF NOT EXISTS tmp.`user` + CREATE TEMPORARY TABLE IF NOT EXISTS tmp.`user` SELECT userFk FROM vn.worker w JOIN vn.`user` u ON u.id = w.userFk WHERE userFk IS NOT NULL; - + CALL vn.timeControl_calculate(vDatedFrom, vDatedTo); DROP TEMPORARY TABLE tmp.`user`; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -84812,40 +71851,33 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `timeControl_calculateByDepartment`(vDepartmentFk INT, vDatedFrom DATETIME, vDatedTo DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `timeControl_calculateByDepartment`(vDepartmentFk INT, vDatedFrom DATETIME, vDatedTo DATETIME) BEGIN - /** - * @param vDepartmentFk + * @param vDepartmentFk * @param vDatedFrom workerTimeControl * @param vDatedTo workerTimeControl */ - - DROP TEMPORARY TABLE IF EXISTS tmp.`user`; - - CREATE TEMPORARY TABLE tmp.`user` - SELECT DISTINCT w.userFk - FROM postgresql.business AS b - LEFT JOIN postgresql.profile AS pr ON pr.profile_id = b.client_id - LEFT JOIN postgresql.person AS p ON p.person_id = pr.person_id - LEFT JOIN postgresql.business_labour AS bl ON b.business_id = bl.business_id - LEFT JOIN vn.worker AS w ON p.id_trabajador = w.id - LEFT JOIN vn.department AS d ON bl.department_id = d.id - WHERE ((b.date_start BETWEEN vDatedFrom AND vDatedTo OR b.date_end BETWEEN vDatedFrom AND vDatedTo) OR - (b.date_end IS NULL AND b.date_start <= vDatedTo) OR - (b.date_start <= vDatedFrom AND b.date_end >= vDatedTo) - ) AND bl.department_id = vDepartmentFk - ORDER BY b.date_end DESC; - - CALL vn.timeControl_calculate(vDatedFrom, vDatedTo); - - DROP TEMPORARY TABLE tmp.`user`; + DROP TEMPORARY TABLE IF EXISTS tmp.`user`; + + CREATE TEMPORARY TABLE tmp.`user` + SELECT DISTINCT b.workerFk userFk + FROM business AS b + WHERE (b.started BETWEEN vDatedFrom AND vDatedTo + OR IFNULL(b.ended, vDatedTo) BETWEEN vDatedFrom AND vDatedTo + OR (b.started <= vDatedFrom AND b.ended >= vDatedTo) + ) AND b.departmentFk = vDepartmentFk + ORDER BY b.ended DESC; + + CALL timeControl_calculate(vDatedFrom, vDatedTo); + + DROP TEMPORARY TABLE tmp.`user`; END ;; DELIMITER ; @@ -84857,29 +71889,29 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `timeControl_calculateByUser`(vUserFk INT, vDatedFrom DATETIME, vDatedTo DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `timeControl_calculateByUser`(vUserFk INT, vDatedFrom DATETIME, vDatedTo DATETIME) BEGIN /** - * @param vUserFk + * @param vUserFk * @param vDatedFrom workerTimeControl * @param vDatedTo workerTimeControl */ - + DROP TEMPORARY TABLE IF EXISTS tmp.`user`; - + CREATE TEMPORARY TABLE tmp.`user` SELECT id userFk - FROM user - WHERE id = vUserFk; + FROM user + WHERE id = vUserFk; CALL vn.timeControl_calculate(vDatedFrom, vDatedTo); - + DROP TEMPORARY TABLE tmp.`user`; END ;; @@ -84892,31 +71924,31 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `timeControl_calculateByWorker`(vWorkerFk INT, vDatedFrom DATETIME, vDatedTo DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `timeControl_calculateByWorker`(vWorkerFk INT, vDatedFrom DATETIME, vDatedTo DATETIME) BEGIN /** - * @param vWorkerFk + * @param vWorkerFk * @param vDatedFrom workerTimeControl * @param vDatedTo workerTimeControl */ - + DROP TEMPORARY TABLE IF EXISTS tmp.`user`; - + CREATE TEMPORARY TABLE tmp.`user` SELECT u.id userFk FROM vn.user u JOIN vn.worker w ON w.userFk = u.id WHERE w.id = vWorkerFk; - + CALL vn.timeControl_calculate(vDatedFrom, vDatedTo); - + DROP TEMPORARY TABLE tmp.`user`; END ;; @@ -84925,23 +71957,106 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `timeControl_getError` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `timeControl_getError`(vDatedFrom DATETIME, vDatedTo DATETIME) +BEGIN +/* + * @param vDatedFrom + * @param vDatedTo + * @table tmp.`user`(userFk) + * Fichadas incorrectas de las cuales no se puede calcular horas trabajadas + * @return tmp.timeControlError (id) + */ + DECLARE vDayMaxTime INTEGER; + + SET @journeyCounter := 0; + SET @lastUserFk := NULL; + + SELECT dayMaxTime INTO vDayMaxTime + FROM workerTimeControlConfig LIMIT 1; + + DROP TEMPORARY TABLE IF EXISTS tmp.timeControl; + CREATE TEMPORARY TABLE tmp.timeControl + (INDEX(id), INDEX(journeyCounter)) + ENGINE = MEMORY + SELECT sub.id, + sub.direction, + sub.timed, + IF(sub.direction = 'in' OR @hasOut OR sub.userFk <> @lastUserFk, @journeyCounter := @journeyCounter + 1, @journeyCounter) journeyCounter, + @lastUserFk := sub.userFk workerFk, + IF(sub.direction = 'out', @hasOut:= TRUE, @hasOut:= FALSE) + FROM ( + SELECT DISTINCT wtc.id, + wtc.direction, + wtc.timed, + wtc.userFk + FROM workerTimeControl wtc + JOIN tmp.`user` w ON w.userFk = wtc.userFk + WHERE wtc.timed BETWEEN DATE_SUB(vDatedFrom, INTERVAL 1 DAY) AND DATE_ADD(vDatedTo, INTERVAL 1 DAY) + ORDER BY wtc.userFk, wtc.timed + ) sub; + + DROP TEMPORARY TABLE IF EXISTS tmp.timeControlAux; + CREATE TEMPORARY TABLE tmp.timeControlAux + (INDEX(id), INDEX(journeyCounter)) + ENGINE = MEMORY + SELECT * FROM tmp.timeControl; + + DROP TEMPORARY TABLE IF EXISTS tmp.timeControlError; + CREATE TEMPORARY TABLE tmp.timeControlError + (INDEX(id)) + ENGINE = MEMORY + SELECT id + FROM tmp.timeControlAux tca + JOIN ( + SELECT journeyCounter, + UNIX_TIMESTAMP(MAX(timed)) - UNIX_TIMESTAMP(MIN(timed)) timeWork, + SUM(direction = 'in') totalIn, + SUM(direction = 'out') totalOut, + timed + FROM tmp.timeControl + GROUP BY journeyCounter + HAVING COUNT(*) MOD 2 = 1 + OR totalIn <> 1 + OR totalOut <> 1 + OR timeWork >= vDayMaxTime + )sub ON sub.journeyCounter = tca.journeyCounter + WHERE sub.timed BETWEEN vDatedFrom AND vDatedTo; + + DROP TEMPORARY TABLE IF EXISTS tmp.timeControl; + DROP TEMPORARY TABLE IF EXISTS tmp.timeControlAux; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `timeWorkerControl_check` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `timeWorkerControl_check`(vUserFk INT, vDated DATE,vTabletFk VARCHAR(100)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `timeWorkerControl_check`(vUserFk INT, vDated DATE,vTabletFk VARCHAR(100)) proc: BEGIN /** * deprecated call workerTimeControl_check */ CALL vn.workerTimeControl_check(vUserFk,vDated,vTabletFk); - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -84954,14 +72069,14 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `tpvTransaction_checkStatus`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `tpvTransaction_checkStatus`() BEGIN /** - * + * * Envia mail con los cobros web no * trasladados a la ficha del cliente. * @@ -84977,7 +72092,7 @@ BEGIN FROM hedera.tpvTransaction t WHERE t.receiptFk IS NULL AND t.status = 'ok' - AND t.created < DATE_ADD(NOW(),INTERVAL - 2 DAY) + AND t.created < DATE_ADD(util.VN_NOW(),INTERVAL - 2 DAY) GROUP BY t.clientFk; END ;; @@ -84992,18 +72107,18 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `travelVolume`(vTravelFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `travelVolume`(vTravelFk INT) BEGIN - - SELECT w1.name AS ORI, - w2.name AS DES, + + SELECT w1.name AS ORI, + w2.name AS DES, tr.shipped shipment, tr.landed landing, - a.name Agencia, + a.name Agencia, s.name Proveedor, e.id Id_Entrada, e.REF Referencia, @@ -85011,18 +72126,18 @@ BEGIN vn.item_getVolume(b.itemFk ,b.packageFk)) / vc.trolleyM3 / 1000000 ,1) AS DECIMAL(10,2)) AS CC, CAST(ROUND(SUM(GREATEST(b.stickers ,b.quantity /b.packing ) * vn.item_getVolume(b.itemFk ,b.packageFk)) / vc.palletM3 / 1000000,1) AS DECIMAL(10,2)) AS espais - FROM vn.buy b - JOIN vn.entry e ON e.id = b.entryFk - JOIN vn.supplier s ON s.id = e.supplierFk - JOIN vn.travel tr ON tr.id = e.travelFk - JOIN vn.agencyMode a ON a.id = tr.agencyFk - JOIN vn.warehouse w1 ON w1.id = tr.warehouseInFk - JOIN vn.warehouse w2 ON w2.id = tr.warehouseOutFk - JOIN vn.volumeConfig vc - JOIN vn.item i ON i.id = b.itemFk + FROM vn.buy b + JOIN vn.entry e ON e.id = b.entryFk + JOIN vn.supplier s ON s.id = e.supplierFk + JOIN vn.travel tr ON tr.id = e.travelFk + JOIN vn.agencyMode a ON a.id = tr.agencyModeFk + JOIN vn.warehouse w1 ON w1.id = tr.warehouseInFk + JOIN vn.warehouse w2 ON w2.id = tr.warehouseOutFk + JOIN vn.volumeConfig vc + JOIN vn.item i ON i.id = b.itemFk JOIN vn.itemType it ON it.id = i.typeFk WHERE tr.id = vTravelFk; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -85033,28 +72148,26 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `travelVolume_get`(vFromDated DATE, vToDated DATE, vWarehouseFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `travelVolume_get`(vFromDated DATE, vToDated DATE, vWarehouseFk INT) BEGIN - SELECT tr.landed Fecha, - a.name Agencia, - count(DISTINCT e.id) numEntradas, + a.name Agencia, + count(DISTINCT e.id) numEntradas, FLOOR(sum(item_getVolume(b.itemFk, b.packageFk) * b.stickers / 1000000 )) AS m3 FROM vn.travel tr - JOIN vn.agencyMode a ON a.id = tr.agencyFk - JOIN vn.entry e ON e.travelFk = tr.id - JOIN vn.buy b ON b.entryFk = e.id - WHERE tr.landed BETWEEN vFromDated AND vToDated - AND e.isRaid = FALSE + JOIN vn.agencyMode a ON a.id = tr.agencyModeFk + JOIN vn.entry e ON e.travelFk = tr.id + JOIN vn.buy b ON b.entryFk = e.id + WHERE tr.landed BETWEEN vFromDated AND vToDated + AND e.isRaid = FALSE AND tr.warehouseInFk = vWarehouseFk GROUP BY tr.landed , a.name ; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -85065,13 +72178,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `travel_checkDates`(vShipped DATE, vLanded DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `travel_checkDates`(vShipped DATE, vLanded DATE) BEGIN /** * Checks the landing/shipment dates of travel, throws an error @@ -85080,11 +72193,70 @@ BEGIN * @param vShipped The shipment date * @param vLanded The landing date */ - + IF vLanded < vShipped THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Landing cannot be lesser than shipment'; - END IF; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `travel_clone` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `travel_clone`(vSelf INT, vDays INT, OUT vNewTravelFk INT) +BEGIN +/** + * Clona un travel el número de dias indicado y devuelve su id. + * + * @param vSelf Identificador de vn.travel + * @param vDays Número de dias a futuro + * @return vNewTravelFk Nuevo número de travel + */ + SELECT tr.id INTO vNewTravelFk + FROM vn.travel tr + JOIN vn.travel tr2 USING(shipped, warehouseInFk, warehouseOutFk, agencyModeFk, `ref`) + WHERE tr2.id = vSelf + AND tr.landed = TIMESTAMPADD(DAY, vDays, tr2.landed); + + IF ISNULL(vNewTravelFk) THEN + START TRANSACTION; + + INSERT INTO vn.travel( shipped, + shipmentHour, + landed, + landingHour, + warehouseInFk, + warehouseOutFk, + agencyModeFk, + `ref`, + cargoSupplierFk) + SELECT shipped, + shipmentHour, + TIMESTAMPADD(DAY, vDays, landed), + landingHour, + warehouseInFk, + warehouseOutFk, + agencyModeFk, + `ref`, + cargoSupplierFk + FROM vn.travel + WHERE id = vSelf; + + SELECT LAST_INSERT_ID() INTO vNewTravelFk; + + COMMIT; + END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -85095,20 +72267,20 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `travel_cloneWithEntries`( - IN vTravelFk INT, - IN vDateStart DATE, +CREATE DEFINER=`root`@`localhost` PROCEDURE `travel_cloneWithEntries`( + IN vTravelFk INT, + IN vDateStart DATE, IN vDateEnd DATE, IN vWarehouseOutFk INT, - IN vWarehouseInFk INT, - IN vRef VARCHAR(255), - IN vAgencyModeFk INT, + IN vWarehouseInFk INT, + IN vRef VARCHAR(255), + IN vAgencyModeFk INT, OUT vNewTravelFk INT) BEGIN /** @@ -85129,37 +72301,37 @@ BEGIN DECLARE vRsEntry CURSOR FOR SELECT e.id FROM entry e - JOIN travel t + JOIN travel t ON t.id = e.travelFk WHERE e.travelFk = vTravelFk; - + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + DECLARE EXIT HANDLER FOR SQLEXCEPTION/*, 1062 Duplicate key*/ - BEGIN + BEGIN ROLLBACK; - + END; - + START TRANSACTION; - INSERT INTO travel (shipped, landed, warehouseInFk, warehouseOutFk, agencyFk, `ref`, isDelivered, isReceived, m3, kg) + INSERT INTO travel (shipped, landed, warehouseInFk, warehouseOutFk, agencyModeFk, `ref`, isDelivered, isReceived, m3, kg) SELECT vDateStart, vDateEnd, vWarehouseInFk, vWarehouseOutFk, vAgencyModeFk, vRef, isDelivered, isReceived, m3, kg FROM travel WHERE id = vTravelFk; - + SET vNewTravelFk = LAST_INSERT_ID(); CALL logAdd(vNewTravelFk, 'insert', 'travel', CONCAT('clona travel ',vTravelFk)); SET vDone = FALSE; SET @isModeInventory = TRUE; OPEN vRsEntry ; FETCH vRsEntry INTO vAuxEntryFk; - + WHILE NOT vDone DO INSERT INTO entry ( supplierFk, ref, - isInventory, - isConfirmed, + isExcludedFromAvailable, + isConfirmed, isOrdered, isRaid, commission, @@ -85168,12 +72340,12 @@ BEGIN travelFk, currencyFk, companyFk, - gestDocFk, + gestDocFk, invoiceInFk) SELECT supplierFk, ref, - isInventory, - isConfirmed, + isExcludedFromAvailable, + isConfirmed, isOrdered, isRaid, commission, @@ -85182,14 +72354,14 @@ BEGIN vNewTravelFk, currencyFk, companyFk, - gestDocFk, + gestDocFk, invoiceInFk FROM entry WHERE id = vAuxEntryFk; - + SET vEntryNew = LAST_INSERT_ID(); - - CALL logAdd(vEntryNew, 'insert', 'entry', CONCAT('clona entrada ',vAuxEntryFk)); + + CALL logAdd(vEntryNew, 'insert', 'entry', CONCAT('clona entrada ',vAuxEntryFk)); INSERT INTO buy ( entryFk, itemFk, @@ -85234,8 +72406,8 @@ BEGIN isChecked, weight FROM buy - WHERE entryFk = vAuxEntryFk; - + WHERE entryFk = vAuxEntryFk; + FETCH vRsEntry INTO vAuxEntryFk; END WHILE; SET @isModeInventory = FALSE; @@ -85247,159 +72419,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `travel_cloneWithEntries__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `travel_cloneWithEntries__`(IN vTravelFk INT, IN vDateStart DATE, IN vDateEnd DATE, - IN vRef VARCHAR(255), OUT vNewTravelFk INT) -BEGIN - DECLARE vEntryNew INT; - DECLARE vDone BOOLEAN DEFAULT FALSE; - DECLARE vAuxEntryFk INT; - DECLARE vRsEntry CURSOR FOR - SELECT e.id - FROM entry e - JOIN travel t - ON t.id = e.travelFk - WHERE e.travelFk = vTravelFk; - - DECLARE vRsBuy CURSOR FOR - SELECT b.* - FROM buy b - JOIN entry e - ON b.entryFk = e.id - WHERE e.travelFk = vNewTravelFk and b.entryFk=vNewTravelFk - ORDER BY e.id; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - DECLARE EXIT HANDLER FOR SQLEXCEPTION - BEGIN - ROLLBACK; - RESIGNAL; - END; - - START TRANSACTION; - - INSERT INTO travel (shipped,landed, warehouseInFk, warehouseOutFk, agencyFk, ref, isDelivered, isReceived, m3, kg) - SELECT vDateStart, vDateEnd,warehouseInFk, warehouseOutFk, agencyFk, vRef, isDelivered, isReceived, m3, kg - FROM travel - WHERE id = vTravelFk; - - SET vNewTravelFk = LAST_INSERT_ID(); - SET vDone = FALSE; - OPEN vRsEntry ; - FETCH vRsEntry INTO vAuxEntryFk; - - WHILE NOT vDone DO - INSERT INTO entry (supplierFk, - ref, - isInventory, - isConfirmed, - isOrdered, - isRaid, - commission, - created, - evaNotes, - travelFk, - currencyFk, - companyFk, - gestDocFk, - invoiceInFk) - SELECT supplierFk, - ref, - isInventory, - isConfirmed, - isOrdered, - isRaid, - commission, - created, - evaNotes, - vNewTravelFk, - currencyFk, - companyFk, - gestDocFk, - invoiceInFk - FROM entry - WHERE id = vAuxEntryFk; - - SET vEntryNew = LAST_INSERT_ID(); - - - INSERT INTO buy (entryFk, - itemFk, - quantity, - buyingValue, - packageFk, - stickers, - freightValue, - packageValue, - comissionValue, - packing, - `grouping`, - groupingMode, - location, - price1, - price2, - price3, - minPrice, - producer, - printedStickers, - isChecked, - weight) - SELECT vEntryNew, - itemFk, - quantity, - buyingValue, - packageFk, - stickers, - freightValue, - packageValue, - comissionValue, - packing, - `grouping`, - groupingMode, - location, - price1, - price2, - price3, - minPrice, - producer, - printedStickers, - isChecked, - weight - FROM buy - WHERE entryFk = vAuxEntryFk; - - - FETCH vRsEntry INTO vAuxEntryFk; - END WHILE; - CLOSE vRsEntry; - COMMIT; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `travel_doRecalc` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `travel_doRecalc`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `travel_doRecalc`() BEGIN /** * Recounts the number of entries of changed travels. @@ -85427,11 +72457,11 @@ BEGIN SELECT COUNT(*) INTO vTotalEntries FROM entry WHERE travelFk = vTravelFk; - + UPDATE travel SET totalEntries = vTotalEntries WHERE id = vTravelFk; - + DELETE FROM travelRecalc WHERE travelFk = vTravelFk; END LOOP; @@ -85446,34 +72476,83 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `travel_moveRaids`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `travel_moveRaids`() BEGIN - - /* - * Desplaza al dia siguiente los travels que contengan redadas y avisa a los compradores - * - */ - - DROP TEMPORARY TABLE IF EXISTS tmp.travel; +/* + * Desplaza al dia siguiente los travels que contengan redadas y avisa a los compradores + * + */ + DECLARE vDone BOOL DEFAULT FALSE; + DECLARE vWorkerName VARCHAR(50); + DECLARE vRaid TEXT; + DECLARE vWorker VARCHAR(50) DEFAULT ''; + DECLARE vMailBody TEXT DEFAULT ''; + + DECLARE vCur CURSOR FOR + SELECT GROUP_CONCAT( DISTINCT CONCAT('https://salix.verdnatura.es/#!/travel/', ttr.id, '/summary ') ORDER BY ttr.id SEPARATOR '\n\r'), + u.name + FROM tmp.travel ttr + JOIN entry e ON e.travelFk = ttr.id + JOIN buy b ON b.entryFk = e.id + JOIN item i ON i.id = b.itemFk + JOIN itemType it ON it.id = i.typeFk + JOIN account.user u ON u.id = it.workerFk + GROUP BY u.name; + + DECLARE CONTINUE HANDLER FOR NOT FOUND + SET vDone = TRUE; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + DROP TEMPORARY TABLE IF EXISTS tmp.travel; CREATE TEMPORARY TABLE tmp.travel - SELECT tr.id - FROM vn.travel tr - JOIN vn.entry e ON e.travelFk = tr.id - WHERE tr.landed = util.tomorrow() - AND e.isRaid; - - UPDATE vn.travel tr + SELECT tr.id,tr.landed + FROM travel tr + JOIN entry e ON e.travelFk = tr.id + WHERE tr.landed = util.tomorrow() + AND e.isRaid + GROUP BY tr.id; + + START TRANSACTION; + + UPDATE travel tr JOIN tmp.travel ttr ON ttr.id = tr.id - SET tr.landed = TIMESTAMPADD(DAY,1,util.tomorrow()), - tr.`ref` = CONCAT(tr.`ref`,' ', tr.landed ); - + SET tr.landed = TIMESTAMPADD(DAY, 1, tr.landed); + + INSERT INTO travelLog (originFk, userFk , action, description) + SELECT ttr.id, account.myUser_getId(), 'update', CONCAT('Se ha cambiado la fecha del travel al dia ', util.tomorrow()) + FROM tmp.travel ttr; + + OPEN vCur; + + l: LOOP + SET vDone = FALSE; + FETCH vCur INTO vRaid, vWorkerName; + + IF vDone THEN + LEAVE l; + END IF; + + CALL `vn`.`mail_insert`(CONCAT(vWorkerName, '@verdnatura.es'), + 'noreply@verdnatura.es', + 'Cambio de fecha en Redadas', + CONCAT('Se ha movido las siguientes redadas: \n\r ', vRaid) + ); + + END LOOP; + CLOSE vCur; + COMMIT; DROP TEMPORARY TABLE tmp.travel; END ;; @@ -85488,11 +72567,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `travel_requestRecalc`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `travel_requestRecalc`(vSelf INT) proc: BEGIN /** * Adds a request to recount the number of entries for the travel. @@ -85502,7 +72581,7 @@ proc: BEGIN IF vSelf IS NULL THEN LEAVE proc; END IF; - + INSERT IGNORE INTO travelRecalc SET travelFk = vSelf; END ;; DELIMITER ; @@ -85516,53 +72595,53 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `travel_weeklyClone`(vSinceWeek INT, vToWeek INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `travel_weeklyClone`(vSinceWeek INT, vToWeek INT) BEGIN /** * Clona los travels plantilla para las semanas pasadas por parámetros * - * @param vSinceWeek Numero de semanas en el futuro para empezar a clonar + * @param vSinceWeek Número de semanas en el futuro para empezar a clonar * @param vToWeek Número de semenas en el futuro hasta donde clonar */ - + DECLARE vCounter INT; DECLARE vCurrentTravelFk INT; DECLARE vShipped DATE; DECLARE vLanded DATE; - DECLARE vWarehouseInFk INT; - DECLARE vWarehouseOutFk INT; + DECLARE vWarehouseInFk INT; + DECLARE vWarehouseOutFk INT; DECLARE vAgencyModeFk INT; DECLARE vRef VARCHAR(255); DECLARE vDone BOOLEAN DEFAULT FALSE; DECLARE vRsTravel CURSOR FOR - SELECT travelFk, - @a := TIMESTAMPADD(DAY,vCounter * 7 - WEEKDAY(CURDATE()) - 1 + weekDay,CURDATE()), - @a := TIMESTAMPADD(DAY,duration,@a), - warehouseOutFk, - warehouseInFk, - `ref`, - agencyModeFk - FROM travel_cloneWeekly - WHERE travelFk; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + SELECT travelFk, + @a := TIMESTAMPADD(DAY,vCounter * 7 - WEEKDAY(util.VN_CURDATE()) - 1 + weekDay,util.VN_CURDATE()), + @a := TIMESTAMPADD(DAY,duration,@a), + warehouseOutFk, + warehouseInFk, + `ref`, + agencyModeFk + FROM travelClonedWeekly + WHERE travelFk; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; SET vCounter = vSinceWeek; vWeekLoop :LOOP - INSERT IGNORE INTO travel (shipped, landed, warehouseOutFk, warehouseInFk, agencyFk, ref, cargoSupplierFk, kg) - SELECT @a := TIMESTAMPADD(DAY, vCounter * 7 - WEEKDAY(CURDATE()) - 1 + weekDay,CURDATE()), - @a := TIMESTAMPADD(DAY, duration, @a), - warehouseOutFk, - warehouseInFk, - agencyModeFk, - ref, - cargoSupplierFk, - kg - FROM travel_cloneWeekly + INSERT IGNORE INTO travel (shipped, landed, warehouseOutFk, warehouseInFk, agencyModeFk, ref, cargoSupplierFk, kg) + SELECT @a := TIMESTAMPADD(DAY, vCounter * 7 - WEEKDAY(util.VN_CURDATE()) - 1 + weekDay,util.VN_CURDATE()), + @a := TIMESTAMPADD(DAY, duration, @a), + warehouseOutFk, + warehouseInFk, + agencyModeFk, + ref, + supplierFk, + kg + FROM travelClonedWeekly WHERE travelFk IS NULL; OPEN vRsTravel; FETCH vRsTravel INTO vCurrentTravelFk, vShipped, vLanded, vWarehouseOutFk, vWarehouseInFk, vRef, vAgencyModeFk; @@ -85572,51 +72651,14 @@ BEGIN FETCH vRsTravel INTO vCurrentTravelFk, vShipped, vLanded, vWarehouseOutFk, vWarehouseInFk, vRef, vAgencyModeFk; END WHILE; CLOSE vRsTravel; - - IF vCounter = vToWeek THEN - LEAVE vWeekLoop; - END IF; - SET vCounter = vCounter + 1; - - END LOOP vWeekLoop; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `travel_weeklyClone__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `travel_weeklyClone__`(vSinceWeek INT, vToWeek INT) -BEGIN - DECLARE vCounter INT; - SET vCounter = vSinceWeek; - vWeekLoop :LOOP - INSERT IGNORE INTO travel (shipped, landed, warehouseOutFk, warehouseInFk, agencyFk, ref, cargoSupplierFk, kg) - SELECT @a := TIMESTAMPADD(DAY,vCounter * 7 - WEEKDAY(CURDATE()) - 1 + weekDay,CURDATE()), - @a := TIMESTAMPADD(DAY,duration,@a), - warehouseOutFk, - warehouseInFk, - agencyModeFk, - ref, - cargoSupplierFk, - kg - FROM travel_cloneWeekly; IF vCounter = vToWeek THEN LEAVE vWeekLoop; END IF; - SET vCounter = vCounter + 1; - END LOOP; + SET vCounter = vCounter + 1; + + END LOOP vWeekLoop; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -85627,23 +72669,23 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `typeTagMake`(vTypeFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `typeTagMake`(vTypeFk INT) BEGIN /* * Plantilla para modificar reemplazar todos los tags * por los valores que tienen los articulos - * + * * @param vTypeFk tipo a modificar - * + * */ - DELETE it.* - FROM itemTag it + DELETE it.* + FROM itemTag it JOIN item i ON i.id = it.itemFk WHERE i.typeFk = vTypeFk; @@ -85652,40 +72694,40 @@ BEGIN FROM item i JOIN tag t ON t.name = 'Longitud' COLLATE utf8_general_ci WHERE i.typeFk = vTypeFk; - + INSERT INTO itemTag(itemFk, tagFk, value, priority) SELECT i.id, t.id, i.category, 5 FROM item i JOIN tag t ON t.name = 'Categoria' COLLATE utf8_general_ci WHERE i.typeFk = vTypeFk; - + INSERT INTO itemTag(itemFk, tagFk, value, priority) SELECT i.id, t.id, ink.name, 2 FROM item i JOIN tag t ON t.name = 'Color' COLLATE utf8_general_ci JOIN ink ON ink.id = i.inkFk WHERE i.typeFk = vTypeFk; - + INSERT INTO itemTag(itemFk, tagFk, value, priority) SELECT i.id, t.id, p.name, 3 FROM item i JOIN tag t ON t.name = 'Productor' COLLATE utf8_general_ci JOIN producer p ON p.id = i.producerFk - WHERE i.typeFk = vTypeFk; - + WHERE i.typeFk = vTypeFk; + INSERT INTO itemTag(itemFk, tagFk, value, priority) SELECT i.id, t.id, o.name, 4 FROM item i JOIN tag t ON t.name = 'Origen' COLLATE utf8_general_ci JOIN origin o ON o.id = i.originFk WHERE i.typeFk = vTypeFk; - /* + /* INSERT INTO itemTag(itemFk, tagFk, value, priority) SELECT i.id, t.id, i.stems, 6 FROM item i JOIN tag t ON t.name = 'Tallos' COLLATE utf8_general_ci - WHERE i.typeFk = vTypeFk; - */ + WHERE i.typeFk = vTypeFk; + */ -- CALL itemTagArrangedUpdate(NULL); END ;; @@ -85698,17 +72740,17 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `updatePedidosInternos`(vItemFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `updatePedidosInternos`(vItemFk INT) BEGIN UPDATE vn.item SET upToDown = 0 WHERE item.id = vItemFk; - + END ;; DELIMITER ; @@ -85720,29 +72762,29 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `visible_getMisfit`(vSectorFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `visible_getMisfit`(vSectorFk INT) BEGIN - + /* Devuelve una tabla temporal con los descuadres entre el visible teórico y lo ubicado en la práctica - * + * * @param vSectorFk Identificador de vn.sector - * + * * @return tmp.stockMisfit(itemFk, visible, parked) */ - + DECLARE vCalcVisibleFk INT; DECLARE vWarehouseFk INT; SELECT warehouseFk INTO vWarehouseFk - FROM vn.sector s + FROM vn.sector s WHERE s.id = vSectorFk; - + CALL cache.visible_refresh(vCalcVisibleFk, FALSE, vWarehouseFk); DROP TEMPORARY TABLE IF EXISTS tmp.stockMisfit; @@ -85755,17 +72797,17 @@ BEGIN INSERT INTO tmp.stockMisfit(itemFk, parked) SELECT iss.itemFk , sum(iss.visible ) - FROM vn.itemShelvingStock iss - JOIN vn.sector s ON s.id = iss.sectorFk + FROM vn.itemShelvingStock iss + JOIN vn.sector s ON s.id = iss.sectorFk WHERE vSectorFk IN (s.id, s.sonFk) GROUP BY iss.itemFk; - + INSERT INTO tmp.stockMisfit(itemFk, visible) - SELECT v.item_id , v.visible - FROM cache.visible v - WHERE v.calc_id = vCalcVisibleFk + SELECT v.item_id , v.visible + FROM cache.visible v + WHERE v.calc_id = vCalcVisibleFk ON DUPLICATE KEY UPDATE visible = v.visible; - + DELETE FROM tmp.stockMisfit WHERE visible = parked; @@ -85779,27 +72821,27 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `warehouseFitting`(IN vWhOrigin INT , IN vWhDestiny INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `warehouseFitting`(IN vWhOrigin INT , IN vWhDestiny INT) BEGIN DECLARE vCacheVisibleOriginFk INT; DECLARE vCacheVisibleDestinyFk INT; - + CALL cache.visible_refresh(vCacheVisibleOriginFk, FALSE, vWhOrigin); CALL cache.visible_refresh(vCacheVisibleDestinyFk, FALSE, vWhDestiny); - + SELECT i.id itemFk, i.longName, i.size, i.subName, vOrigin.visible AS Origen, vDestiny.visible Destino - + FROM vn.item i JOIN vn.itemType it ON it.id = i.typeFk LEFT JOIN cache.visible vOrigin ON vOrigin.calc_id = vCacheVisibleOriginFk AND vOrigin.item_id = i.id @@ -85817,24 +72859,24 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `warehouseFitting_byTravel`(IN vTravelFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `warehouseFitting_byTravel`(IN vTravelFk INT) BEGIN DECLARE vWhOrigin INT; DECLARE vWhDestiny INT; - + SELECT warehouseInFk, warehouseOutFk INTO vWhDestiny, vWhOrigin FROM vn.travel WHERE id = vTravelFk; - + CALL vn.warehouseFitting(vWhOrigin, vWhDestiny); - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -85845,13 +72887,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerCalculateBoss`(vWorker INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerCalculateBoss`(vWorker INT) BEGIN /** * Actualiza la tabla workerBosses @@ -85888,62 +72930,61 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerCalendar_calculateBusiness`(vYear INT, vBusinessFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerCalendar_calculateBusiness`(vYear INT, vBusinessFk INT) BEGIN - /** * Calcula los días y horas de vacaciones en función de un contrato y año * * @param vYear - * @param vBusinessFk + * @param vBusinessFk * @return tmp.workerCalendarCalculateBusiness (days, hours, daysEnjoyed, hoursEnjoyed) */ - DECLARE vStarted DATE; DECLARE vEnded DATE; DECLARE vDaysHoliday DECIMAL(5,2); DECLARE vHoursWeek DECIMAL(5,2); DECLARE vDaysToSubtract DECIMAL(5,2); DECLARE vDaysHolidayEnjoyed DECIMAL(5,2); + DECLARE vPayedHolidays DECIMAL(5,2); DECLARE vDifDays INT; - SELECT IF(b.date_start < CONCAT(vYear,"-01-01"), CONCAT(vYear,"-01-01"),b.date_start), - IF(b.date_end IS NULL OR YEAR(b.date_end)>vYear , CONCAT(vYear,"-12-31"), b.date_end), - IF(hasHolidayEntilement, w.days, 0), - c.hours_week - INTO vStarted, - vEnded, - vDaysHoliday, - vHoursWeek - FROM postgresql.business b - JOIN postgresql.business_labour_payroll blp ON blp.business_id = b.business_id - JOIN vn2008.payroll_contratos p ON p.CodContrato = cod_contrato - JOIN postgresql.business_labour bl ON bl.business_id = b.business_id - JOIN workCenterHoliday w ON w.workcenterFk = bl.workcenter_id - LEFT JOIN postgresql.calendar_labour_type c ON c.calendar_labour_type_id=bl.calendar_labour_type_id - WHERE b.business_id= vBusinessFk - AND w.year = vYear; + SELECT IF(b.started < CONCAT(vYear,"-01-01"), CONCAT(vYear,"-01-01"),b.started), + IF(b.ended IS NULL OR YEAR(b.ended)>vYear , CONCAT(vYear,"-12-31"), b.ended), + IF(wbt.hasHolidayEntitlement, w.days, 0), + c.hours_week, + IF(YEAR(b.ended) = vYear, b.payedHolidays, 0) payedHolidays + INTO vStarted, + vEnded, + vDaysHoliday, + vHoursWeek, + vPayedHolidays + FROM business b + JOIN workerBusinessType wbt ON wbt.id = b.workerBusinessTypeFk + JOIN workCenterHoliday w ON w.workcenterFk = b.workcenterFk + LEFT JOIN postgresql.calendar_labour_type c ON c.calendar_labour_type_id = b.calendarTypeFk + WHERE b.id = vBusinessFk + AND w.year = vYear; DROP TEMPORARY TABLE IF EXISTS tmp.workerCalendarCalculateBusiness; - + IF vStarted < vEnded THEN SET vDifDays = DAYOFYEAR(vEnded) - DAYOFYEAR(vStarted) + 1; - SELECT IFNULL(SUM(holidayEntitlementRate), 0) , - SUM(-(discountRate - 1)) - INTO vDaysToSubtract, - vDaysHolidayEnjoyed - FROM workerCalendar w - JOIN absenceType a ON a.id = w.absenceTypeFk - WHERE w.businessFk = vBusinessFk + SELECT IFNULL(SUM(holidayEntitlementRate), 0), + SUM(-(discountRate - 1)) + vPayedHolidays + INTO vDaysToSubtract, + vDaysHolidayEnjoyed + FROM workerCalendar w + JOIN absenceType a ON a.id = w.absenceTypeFk + WHERE w.businessFk = vBusinessFk AND YEAR(dated) = vYear; END IF; - CREATE TEMPORARY TABLE tmp.workerCalendarCalculateBusiness + CREATE TEMPORARY TABLE tmp.workerCalendarCalculateBusiness ENGINE = MEMORY SELECT @days := IFNULL(ROUND((vDaysHoliday * (vDifDays - vDaysToSubtract) / IF(util.isLeapYear(vYear) , 366, 365)), 1), 0) days, @days * (vHoursWeek / 5) hours, @@ -85961,45 +73002,42 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerCalendar_calculateYear`(vYear INT, vWorkerFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerCalendar_calculateYear`(vYear INT, vWorkerFk INT) BEGIN /** * Calcula los días y horas de vacaciones en función de un trabajador y año * - * @param vYear - * @param vWorkerFk + * @param vYear + * @param vWorkerFk * @return tmp.workerCalendarCalculateYear (days, hours, daysEnjoyed, hoursEnjoyed) - */ - + */ DECLARE vDone BOOL; DECLARE vBusinessFk INT; DECLARE cur CURSOR FOR - SELECT b.business_id - FROM postgresql.business b - LEFT JOIN postgresql.profile AS pr ON pr.profile_id = b.client_id - LEFT JOIN postgresql.person AS p ON p.person_id = pr.person_id - WHERE vYear BETWEEN YEAR(b.date_start) AND IFNULL(YEAR(b.date_end), vYear ) - AND p.id_trabajador = vWorkerFk; + SELECT b.id + FROM business b + WHERE vYear BETWEEN YEAR(b.started) AND IFNULL(YEAR(b.ended), vYear) + AND b.workerFk = vWorkerFk; DECLARE CONTINUE HANDLER FOR NOT FOUND - SET vDone = TRUE; - + SET vDone = TRUE; + DROP TEMPORARY TABLE IF EXISTS tmp.workerCalendarCalculateYear; CREATE TEMPORARY TABLE tmp.workerCalendarCalculateYear - (days DEC(5,2), + (days DEC(5,2), hours DEC(5,2), - daysEnjoyed DEC(5,2), - hoursEnjoyed DEC(5,2)) + daysEnjoyed DEC(5,2), + hoursEnjoyed DEC(5,2)) ENGINE = MEMORY; INSERT INTO tmp.workerCalendarCalculateYear VALUES(0, 0, 0, 0); - + OPEN cur; l: LOOP @@ -86012,12 +73050,12 @@ BEGIN CALL workerCalendar_calculateBusiness(vYear, vBusinessFk); UPDATE tmp.workerCalendarCalculateYear w - JOIN tmp.workerCalendarCalculateBusiness wc + JOIN tmp.workerCalendarCalculateBusiness wc SET w.days = w.days + wc.days, w.hours = w.hours + wc.hours, w.daysEnjoyed = w.daysEnjoyed + wc.daysEnjoyed, w.hoursEnjoyed = w.hoursEnjoyed + wc.hoursEnjoyed; - + DROP TEMPORARY TABLE tmp.workerCalendarCalculateBusiness; END LOOP; @@ -86036,24 +73074,26 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerCreate`( - vFirstname VARCHAR(50), - vSurnames VARCHAR(50), - vWorkerCode CHAR(3), - vBossFk INT, - vUserFk INT +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerCreate`( + vFirstname VARCHAR(50), + vLastName VARCHAR(50), + vCode CHAR(3), + vBossFk INT, + vUserFk INT, + vFi VARCHAR(15) , + vBirth DATE ) BEGIN /** * Create new worker * */ - INSERT INTO worker(id, code, firstName, lastName, userFk, bossFk) - VALUES (vUserFk, vWorkerCode, vFirstname, vSurnames, vUserFk, vBossFk); + INSERT INTO worker(id, code, firstName, lastName, userFk, bossFk, fi, birth) + VALUES (vUserFk, vCode, vFirstname, vLastName, vUserFk, vBossFk, vFi, vBirth); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -86064,75 +73104,39 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerCreateExternal`( - vFirstName VARCHAR(50), - vSurname1 VARCHAR(50), - vSurname2 VARCHAR(50), - vUser VARCHAR(20), - vPassword VARCHAR(50), - vWorkerCode VARCHAR(3), - vRole INT(2) - ) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerCreateExternal`( + vFirstName VARCHAR(50), + vSurname1 VARCHAR(50), + vSurname2 VARCHAR(50), + vUser VARCHAR(20), + vPassword VARCHAR(50), + vWorkerCode VARCHAR(3), + vRole INT(2) + ) BEGIN DECLARE vUserId INT; - DECLARE vWorkerPako INT DEFAULT 2; - DECLARE vSurnames VARCHAR(100); + DECLARE vSurnames VARCHAR(100); + + INSERT INTO account.user(name, password, role) + SELECT vUser, MD5(vPassword), vRole; - INSERT INTO account.user(name,password,role) - SELECT vUser,MD5(vPassword),vRole; - SET vUserId = LAST_INSERT_ID(); - /* - INSERT INTO vn.worker(firstName,lastName,bossFk,workerCode,user_id) - SELECT vFirstName,CONCAT(vSurname1,' ',vSurname2),2,vWorkerCode,vUser; - */ - - IF vSurname2 IS NULL THEN + + IF vSurname2 IS NULL THEN SET vSurnames = vSurname1; - ELSE + ELSE SET vSurnames = CONCAT(vSurname1, ' ', vSurname2); - END IF; - - INSERT INTO vn2008.Trabajadores(Nombre, Apellidos, boss, CodigoTrabajador, user_id) - SELECT vFirstName, vSurnames, vWorkerPako, vWorkerCode, vUserId; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `workerCreate__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerCreate__`( - vFirstname VARCHAR(50), - vSurnames VARCHAR(50), - vFi VARCHAR(9), - vWorkerCode CHAR(3), - vBossFk INT, - vUserFk INT -) -BEGIN -/** - * Create new worker - * - */ - INSERT INTO worker(code, firstName, lastName, fi, userFk, bossFk) - VALUES (vWorkerCode, vFirstname, vSurnames, vFi, vUserFk, vBossFk); + END IF; + + INSERT INTO worker(firstName, lastName, code, userFk, isFreelance) + SELECT vFirstName, vSurnames, vWorkerCode, vUserId, TRUE; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -86143,42 +73147,33 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerDepartmentByDate`(vDate DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerDepartmentByDate`(vDate DATE) BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.workerDepartmentByDate; CREATE TEMPORARY TABLE tmp.workerDepartmentByDate ENGINE = MEMORY - SELECT - w.userFk, - p.name, - p.firstname, - d.name AS department, - d.id as departmentFk, - b.date_start, - d.isProduction, - CAST(12 * blp.importepactado / clt.hours_week / 52 AS DECIMAL(10,2)) as costeHora , - p.nif - - FROM postgresql.person p - JOIN postgresql.profile pr ON p.person_id = pr.person_id - JOIN postgresql.business b ON b.client_id = pr.profile_id - JOIN postgresql.business_labour bl ON bl.business_id = b.business_id - JOIN postgresql.calendar_labour_type clt ON clt.calendar_labour_type_id = bl.calendar_labour_type_id - JOIN postgresql.business_labour_payroll blp ON blp.business_id = b.business_id - JOIN vn.department d ON d.id = bl.department_id - JOIN vn.worker w ON w.id = p.id_trabajador - WHERE b.date_start <= vDate AND IFNULL(b.date_end,'3000-01-01') > vDate - ; - - -- SELECT * FROM tmp.workerDepartmentByDate; - + SELECT w.userFk, + w.lastName name, + w.firstName firstname, + d.name department, + d.id departmentFk, + b.started, + d.isProduction, + CAST(12 * b.amount / clt.hours_week / 52 AS DECIMAL(10,2)) costeHora, + w.fi nif + FROM business b + JOIN postgresql.calendar_labour_type clt ON clt.calendar_labour_type_id = b.calendarTypeFk + JOIN department d ON d.id = b.departmentFk + JOIN worker w ON w.id = b.workerFk + WHERE b.started <= vDate + AND (b.ended > vDate OR b.ended IS NULL); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -86189,32 +73184,36 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET character_set_client = utf8mb3 */ ; +/*!50003 SET character_set_results = utf8mb3 */ ; +/*!50003 SET collation_connection = utf8mb3_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `workerDisable`(vUserId int) mainLabel:BEGIN - IF (SELECT COUNT(*) FROM workerDisableExcluded WHERE workerFk = vUserId AND (dated > CURDATE() OR dated IS NULL)) > 0 THEN + IF (SELECT COUNT(*) FROM workerDisableExcluded WHERE workerFk = vUserId AND (dated > util.VN_CURDATE() OR dated IS NULL)) > 0 THEN LEAVE mainLabel; - END IF; + END IF; DELETE FROM account.account WHERE id = vUserId; - UPDATE account.user + UPDATE account.user SET role = 2 - WHERE id = vUserId; - - DELETE FROM pbx.sip - WHERE user_id = vUserId; + WHERE id = vUserId; + + DELETE FROM pbx.sip + WHERE user_id = vUserId; UPDATE `client` c JOIN payMethod p ON p.name = 'CONTADO' SET c.credit = 0, c.payMethodFk = p.id, hasCoreVnl = FALSE - WHERE c.id = vUserId; + WHERE c.id = vUserId; + + UPDATE `client` c + SET c.salesPersonFk = null + WHERE c.salesPersonFk = vUserId; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -86225,33 +73224,40 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerDisableAll`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerDisableAll`() BEGIN DECLARE done BOOL DEFAULT FALSE; DECLARE vUserFk INT; DECLARE rs CURSOR FOR - SELECT a.id - FROM ((SELECT * FROM (select date_end,date_start,business_id, client_id - FROM postgresql.business - ORDER BY client_id, date_end IS NULL DESC , date_end DESC) - c GROUP BY client_id) c - INNER JOIN postgresql.business b ON c.client_id = b.client_id AND c.business_id = b.business_id - INNER JOIN postgresql.profile pr ON b.client_id = pr.profile_id - INNER JOIN postgresql.person p ON pr.person_id = p.person_id - - INNER JOIN vn.worker w ON p.id_trabajador = w.id) - INNER JOIN account.account a ON w.userFk = a.id - WHERE ((b.date_end) IS NOT NULL - AND (b.date_end) < CURDATE() - AND (b.date_end) > TIMESTAMPADD(DAY, -70,CURDATE()) ); - + SELECT DISTINCT a.id + FROM vn.business b + LEFT JOIN(SELECT DISTINCT workerFk + FROM business b + WHERE ended IS NULL + OR ended >= util.VN_CURDATE() + )sub ON sub.workerFk = b.workerFk + JOIN account.account a ON a.id = b.workerFk + WHERE sub.workerFk IS NULL + AND b.ended BETWEEN TIMESTAMPADD(DAY, -70, util.VN_CURDATE()) AND util.VN_CURDATE(); + +/* SELECT DISTINCT b.workerFk + FROM business b + JOIN account.account a ON a.id = b.workerFk + LEFT JOIN ( + SELECT DISTINCT workerFk + FROM business + WHERE IFNULL(ended, util.VN_CURDATE())>=util.VN_CURDATE() + )sub ON sub.workerFk = a.id + WHERE sub.workerFk IS NULL +*/ + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN rs; @@ -86265,43 +73271,7 @@ BEGIN END WHILE; CLOSE rs; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `workerDisable__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `workerDisable__`(vUserId int) -mainLabel:BEGIN - IF vUserId = 14255 THEN - LEAVE mainLabel; - END IF; - DELETE FROM account.account - WHERE id = vUserId; - - UPDATE account.user - SET role = 2 - WHERE id = vUserId; - - DELETE FROM pbx.sip - WHERE user_id = vUserId; - - UPDATE `client` c - JOIN payMethod p ON p.name = 'CONTADO' - SET c.credit = 0, c.payMethodFk = p.id, hasCoreVnl = FALSE - WHERE c.id = vUserId; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -86312,13 +73282,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerForAllCalculateBoss`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerForAllCalculateBoss`() BEGIN /** * Actualiza la tabla workerBosses utilizando el procedimiento @@ -86348,322 +73318,6 @@ BEGIN CLOSE cur; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `workerJourneyReplaceLauncher__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerJourneyReplaceLauncher__`() -BEGIN - - DECLARE vDateStart DATE; - DECLARE vDateEnd DATE; - - SET vDateStart = TIMESTAMPADD(MONTH,-1,CURDATE()); - SET vDateEnd = util.yesterday(); - - CALL vn.workerJourneyReplace(vDateStart,vDateEnd,0); - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `workerJourneyReplace__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerJourneyReplace__`(vFromDate DATE, vToDate DATE, vUserFk INT) -BEGIN - - /* Actualiza la tabla workerJourney para que actue como caché permanente revisable de las jornadas laborales. - * vUserFk es opcional. El valor 0 indica que se tenga en cuenta a todos los usuarios. - * - * PAK Julio '18 - */ - - DELETE - FROM workerJourney - WHERE dated BETWEEN vFromDate AND vToDate - AND isPaid = FALSE - AND isUpdated = FALSE - AND vUserFk IN (0,userFk); - - - -- Se inicia la tabla con todas las fechas posibles para cada uno de los trabajadores que han fichado en el rango de fechas. - INSERT IGNORE INTO workerJourney(userFk, dated, businessFk) - SELECT w.userFk, tm.dated, b.business_id - FROM vn.worker w - JOIN postgresql.person pe ON pe.id_trabajador = w.id - JOIN postgresql.profile p ON p.person_id = pe.person_id - JOIN postgresql.business b ON b.client_id = p.profile_id - JOIN postgresql.business_labour bl ON bl.business_id = b.business_id - JOIN vn.time tm ON tm.dated BETWEEN b.date_start AND IFNULL(b.date_end,CURDATE()) - WHERE b.date_start <= vToDate - AND IFNULL(b.date_end, CURDATE()) >= vFromDate - -- AND bl.porhoras - AND vUserFk IN (0,w.userFk); - - - - - - -- Se actualiza la cantidad total de horas prácticas, así como el tiempo de almuerzo remunerado, si corresponde - - /*UPDATE workerJourney wj - JOIN workerTimeControl_Journey j ON wj.dated = j.dated AND wj.userFk = j.userFk - SET wj.total = j.Journey, - wj.lunch = IF(j.Journey < 5,0,0.33) - WHERE wj.dated BETWEEN vFromDate AND vToDate - AND wj.isPaid = FALSE - AND wj.isUpdated = FALSE - AND vUserFk IN (0,wj.userFk); */ - - - IF vUserFk = 0 THEN - CALL vn.timeControl_calculateAll( vFromDate , CONCAT(REPLACE(vToDate, '00:00:00', ''), ' 23:59:59')); - ELSE - CALL vn.timeControl_calculateByUser( vUserFk, vFromDate , CONCAT(REPLACE(vToDate, '00:00:00', ''), ' 23:59:59')); - END IF; - - UPDATE workerJourney wj - JOIN tmp.timeControlCalculate t ON wj.dated = t.dated AND wj.userFk = t.userFk - SET wj.total = CAST(IF(t.timeWorkDecimal >= 5.33,t.timeWorkDecimal-0.33,t.timeWorkDecimal) AS DECIMAL (10,2)), - wj.lunch = IF(t.timeWorkDecimal >= 5.33,0.33,0) - WHERE wj.dated BETWEEN vFromDate AND vToDate - AND wj.isPaid = FALSE - AND wj.isUpdated = FALSE - AND vUserFk IN (0,wj.userFk); - - DROP TEMPORARY TABLE tmp.timeControlCalculate; - - - - /********** NOCTURNIDAD ************/ - DROP TEMPORARY TABLE IF EXISTS tmp.workerTimeControl; - - CREATE TEMPORARY TABLE tmp.workerTimeControl - SELECT w.*, 0 as Non - FROM vn.workerTimeControl w - WHERE timed BETWEEN vFromDate AND vToDate - AND vUserFk IN (0,userFk) - ORDER BY userFk, timed; - - -- Regalamos un segundo para evitar que hayan fichadas en las horas claves de inicio y fin de la nocturnidad. - UPDATE tmp.workerTimeControl - SET timed = TIMESTAMPADD(SECOND,-1,timed) - WHERE TIME(timed) IN ('06:00:00','22:00:00'); - - -- Fichada virtual a las 6:00 h, hora en que empieza la jornada diurna - INSERT INTO tmp.workerTimeControl(userFk, timed) - SELECT userFk, TIMESTAMPADD(HOUR, 6, DATE(timed)) - FROM vn.workerTimeControl - WHERE vUserFk IN (0,userFk) - GROUP BY userFk, DATE(timed); - - -- Fichada virtual a las 22:00 h, momento en que empieza la jornada nocturna. - INSERT INTO tmp.workerTimeControl(userFk, timed) - SELECT userFk, TIMESTAMPADD(HOUR, 22, DATE(timed)) - FROM vn.workerTimeControl - WHERE vUserFk IN (0,userFk) - GROUP BY userFk, DATE(timed); - - -- Establece el orden en que se han de leer las fichadas - CALL vn.workerTimeControlSetOrder; - - -- Marca los impares para facilitar la consulta siguiente - UPDATE tmp.workerTimeControl - SET Non = 1 - WHERE `order` mod 2; - - -- Actualizamos la nocturnidad - UPDATE workerJourney wj - JOIN - ( SELECT userFk, Dia, sum(Nocturnidad) as Nocturnidad FROM - ( - SELECT userFk, - date(timed) as Dia, - (( - IF( TIME(timed) < '06:00:00' OR (TIME(timed) = '06:00:00' AND Non = FALSE ) , IF(Non,-1,1),0) - + - IF(TIME(timed) > '22:00:00' OR (TIME(timed) = '22:00:00' AND Non = TRUE), If(Non,-1,1),0) - ) - * (HOUR(`timed`) + MINUTE(`timed`) / 60) - ) as Nocturnidad - FROM tmp.workerTimeControl - ) sub - GROUP BY Dia, userFk - HAVING Nocturnidad - ) night ON night.userFk = wj.userFk AND night.Dia = wj.dated - SET wj.nocturn = night.Nocturnidad - WHERE wj.isPaid = FALSE AND isUpdated = FALSE; - - -- Horas téoricas y precio de la hora ordinaria - UPDATE vn.workerJourney wj - JOIN postgresql.business_labour_payroll blp ON blp.business_id = wj.businessFk - JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk - JOIN postgresql.calendar_labour_type pclt ON pclt.calendar_labour_type_id = bl.calendar_labour_type_id - SET wj.priceOrdinaryHour = (12 * blp.importepactado) / (52 * pclt.hours_week), - wj.contractJourney = pclt.hours_week/5 - WHERE wj.dated BETWEEN vFromDate AND vToDate - AND vUserFk IN (0,wj.userFk) - AND wj.isPaid = FALSE - AND isUpdated = FALSE; - - -- Precio Extras, Vacaciones y Nocturnas - UPDATE vn.workerJourney wj - JOIN - ( - SELECT dated, hollidayInc, nightInc, extraInc - FROM ( - SELECT tm.dated , hollidayInc, nightInc, extraInc - FROM vn.time tm - JOIN vn.workerHourPrice whp ON tm.dated >= whp.dated - ORDER BY tm.dated, whp.dated DESC - ) sub - GROUP BY dated - ) conv ON conv.dated = wj.dated - SET wj.priceHollydayHour = wj.priceOrdinaryHour * conv.hollidayInc, - wj.priceNocturnHour = wj.priceOrdinaryHour * conv.nightInc, - wj.priceExtraHour = wj.priceOrdinaryHour * conv.extraInc - WHERE wj.dated BETWEEN vFromDate AND vToDate - AND vUserFk IN (0,wj.userFk) - AND wj.isPaid = FALSE - AND wj.isUpdated = FALSE; - - -- Elimina el precio de las horas extras para los contratos parciales. - UPDATE vn.workerJourney wj - JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk - JOIN postgresql.calendar_labour_type clt ON clt.calendar_labour_type_id = bl.calendar_labour_type_id - SET wj.priceExtraHour = 0 - WHERE clt.isPartial - AND wj.dated BETWEEN vFromDate AND vToDate - AND vUserFk IN (0,wj.userFk) - AND wj.isPaid = FALSE - AND wj.isUpdated = FALSE; - - -- Bajas, vacaciones y festivos personales - /* UPDATE vn.workerJourney wj - JOIN postgresql.calendar_employee pce ON pce.date = wj.dated AND pce.business_id = wj.businessFk - JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk - SET wj.permission = IF(pce.calendar_state_id = 6, 0.5, 1) * wj.contractJourney, - wj.contractJourney = IF(pce.calendar_state_id = 6, 0.5, 0) * wj.contractJourney,-- Vacaciones medio dia - wj.hollyday = wj.total - IF(pce.calendar_state_id = 6, 0.5, 0) * wj.contractJourney - WHERE wj.dated BETWEEN vFromDate AND vToDate - AND vUserFk IN (0,wj.userFk) - AND wj.isPaid = FALSE - AND wj.isUpdated = FALSE;*/ - - UPDATE vn.workerJourney wj - JOIN postgresql.calendar_employee pce ON pce.date = wj.dated AND pce.business_id = wj.businessFk - JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk - JOIN postgresql.calendar_state cs ON cs.calendar_state_id = pce.calendar_state_id - SET wj.permission = cs.permissionRate * wj.contractJourney, - wj.contractJourney = IF(cs.permissionRate = 1, 0, cs.permissionRate) * wj.contractJourney, - wj.hollyday = wj.total - IF(cs.permissionRate = 1, 0, cs.permissionRate) * wj.contractJourney - WHERE cs.permissionRate > 0 - AND wj.dated BETWEEN vFromDate AND vToDate - AND vUserFk IN (0,wj.userFk) - AND wj.isPaid = FALSE - AND wj.isUpdated = FALSE; - - - - - -- Festivos por centro de trabajo -UPDATE vn.workerJourney wj - JOIN vn.calendarHolidays ch ON ch.dated = wj.dated - JOIN postgresql.business_labour pbl ON wj.businessFk = pbl.business_id AND pbl.workcenter_id = ch.workcenterFk - SET wj.hollyday = wj.total, - wj.permission = wj.contractJourney, - wj.contractJourney = 0 - WHERE wj.dated BETWEEN vFromDate AND vToDate - AND vUserFk IN (0,wj.userFk) - AND wj.isPaid = FALSE - AND wj.isUpdated = FALSE; - - -- Domingos - UPDATE vn.workerJourney - SET hollyday = total, - contractJourney = 0 - WHERE weekday(dated) = 6 - AND dated BETWEEN vFromDate AND vToDate - AND vUserFk IN (0,userFk) - AND isPaid = FALSE - AND isUpdated = FALSE; - - -- Sábados - UPDATE vn.workerJourney - SET contractJourney = 0 - WHERE weekday(dated) = 5 - AND dated BETWEEN vFromDate AND vToDate - AND vUserFk IN (0,userFk) - AND isPaid = FALSE - AND isUpdated = FALSE; - - - -- Horas extras - UPDATE workerJourney - SET extra = lunch + total - contractJourney - WHERE dated BETWEEN vFromDate AND vToDate - AND vUserFk IN (0,userFk) - AND isPaid = FALSE - AND isUpdated = FALSE; - - -- Contratos NO por horas - INSERT IGNORE INTO workerJourney( userFk, - dated, - businessFk, - priceOrdinaryHour, - contractJourney, - total) - SELECT w.userFk, - tm.dated, - b.business_id, - (12 * blp.importepactado) / (52 * pclt.hours_week) as priceOrdinaryHour, - IF(weekday(tm.dated) IN (5,6),0, pclt.hours_week/5) as contractJourney, - IF(weekday(tm.dated) IN (5,6),0, pclt.hours_week/5) as total - FROM vn.worker w - JOIN postgresql.person pe ON pe.id_trabajador = w.id - JOIN postgresql.profile p ON p.person_id = pe.person_id - JOIN postgresql.business b ON b.client_id = p.profile_id - JOIN postgresql.business_labour bl ON bl.business_id = b.business_id - JOIN postgresql.calendar_labour_type pclt ON pclt.calendar_labour_type_id = bl.calendar_labour_type_id - JOIN postgresql.business_labour_payroll blp ON blp.business_id = b.business_id - JOIN vn.time tm ON tm.dated BETWEEN b.date_start AND IFNULL(b.date_end,CURDATE()) - WHERE b.date_start <= vToDate - AND IFNULL(b.date_end, CURDATE()) >= vFromDate - AND bl.porhoras = FALSE - AND vUserFk IN (0,w.userFk); - - -- Elimina dias sin fichadas ni contrato - /* DELETE FROM workerJourney - WHERE contractJourney = 0 - AND total = 0 - AND permission = 0 - AND dated BETWEEN vFromDate AND vToDate - AND vUserFk IN (0,userFk) - AND isPaid = FALSE - AND isUpdated = FALSE; -*/ END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -86676,110 +73330,241 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerJourney_replace`(vDatedFrom DATE, vDatedTo DATE, vWorkerFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerJourney_replace`( + vDatedFrom DATE, + vDatedTo DATE, + vWorkerFk INT) BEGIN /** - * Actualiza la tabla workerJourney para que actue como caché permanente revisable de las jornadas laborales. + * Actualiza la tabla workerJourney para que actue como caché permanente revisable + * de las jornadas laborales. * @param vDatedFrom workerTimeControl * @param vDatedTo workerTimeControl * @param vWorkerFk, en caso de pasar 0 ó NULL se aplica a todos - */ - + */ DECLARE vDatedTimeTo DATETIME; - DECLARE vMaxTimePerDay INT; + DECLARE vMaxTimePerDay INT; DECLARE vMinHoursToBreak DECIMAL(10,2); DECLARE vBreakHours DECIMAL(10,2); DECLARE vMonthByYear INT; DECLARE vWeeksByYear INT DEFAULT 52; - DECLARE vMonthsByYear INT DEFAULT 12; + DECLARE vMonthsByYear INT DEFAULT 12; DECLARE vDaysByWeek INT DEFAULT 5; + DECLARE vDatedFromYesterday DATETIME; + DECLARE vDatedToTomorrow DATETIME; + + SELECT DATE_SUB(vDatedFrom, INTERVAL 1 DAY), DATE_ADD(vDatedTo, INTERVAL 1 DAY) + INTO vDatedFromYesterday, vDatedToTomorrow; SET vDatedTimeTo = util.dayEnd(vDatedTo); - - SELECT minHoursToBreak, breakHours, maxTimePerDay + + SELECT minHoursToBreak, breakHours, maxTimePerDay INTO vMinHoursToBreak, vBreakHours, vMaxTimePerDay FROM workerTimeControlConfig; DELETE FROM workerJourney - WHERE dated BETWEEN vDatedFrom AND vDatedTo + WHERE dated BETWEEN vDatedFrom AND vDatedTo AND NOT isPaid AND NOT isUpdated - AND (vWorkerFk IS NULL OR userFK = vWorkerFk); + AND (vWorkerFk IS NULL OR userFK = vWorkerFk); - -- Se inserta todos los días del periodo por worker y business en el rango de fechas. + -- Se inserta todos los días del periodo por worker y business en el rango de fechas. INSERT IGNORE INTO workerJourney(userFk, dated, businessFk) - SELECT w.workerFk, t.dated, w.businessFk - FROM workerLabour w - JOIN time t ON t.dated BETWEEN w.started AND IFNULL(w.ended,CURDATE()) + SELECT b.workerFk, t.dated, b.id + FROM business b + JOIN time t ON t.dated BETWEEN b.started AND IFNULL(b.ended,util.VN_CURDATE()) WHERE t.dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR w.workerFk = vWorkerFk) - ORDER BY w.workerFk, t.dated, w.businessFk; - + AND (vWorkerFk IS NULL OR b.workerFk = vWorkerFk) + ORDER BY b.workerFk, t.dated, b.id; + + DROP TEMPORARY TABLE IF EXISTS tmp.`user`; + IF vWorkerFk THEN CALL timeControl_calculateByUser(vWorkerFk, vDatedFrom , vDatedTimeTo); + CREATE TEMPORARY TABLE IF NOT EXISTS tmp.`user` + SELECT vWorkerFk userFk; ELSE - CALL timeControl_calculateAll(vDatedFrom, vDatedTimeTo); - END IF; + CALL timeControl_calculateAll(vDatedFrom, vDatedTimeTo); + CREATE TEMPORARY TABLE IF NOT EXISTS tmp.`user` + SELECT id userFk + FROM worker w; + END IF; UPDATE workerJourney wj JOIN tmp.timeControlCalculate t ON wj.dated = t.dated AND wj.userFk = t.userFk - SET wj.total = CAST(IF(t.timeWorkDecimal >= vMinHoursToBreak, t.timeWorkDecimal - vBreakHours, t.timeWorkDecimal) AS DECIMAL (10,2)), + SET wj.total = CAST(IF(t.timeWorkDecimal >= vMinHoursToBreak, + t.timeWorkDecimal - vBreakHours, + t.timeWorkDecimal) AS DECIMAL (10,2)), wj.lunch = IF(t.timeWorkDecimal >= vMinHoursToBreak , vBreakHours , 0) WHERE wj.dated BETWEEN vDatedFrom AND vDatedTo AND NOT wj.isPaid AND NOT wj.isUpdated AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk); - - -- NOCTURNIDAD + + -- NOCTURNIDAD + CALL timeControl_getError(vDatedFrom, vDatedTimeTo); SET @vIsOdd := TRUE; SET @vDated := NULL; - CALL vn.workerTimeControl_calculateOddDays(); + + DROP TEMPORARY TABLE IF EXISTS tmp.workerTimeControl; + CREATE TEMPORARY TABLE tmp.workerTimeControl + (INDEX (userFk), INDEX (timed)) + ENGINE = MEMORY + SELECT DISTINCT(wtc.id), + wtc.userFk, + wtc.timed, + wtc.direction + FROM workerTimeControl wtc + JOIN tmp.`user` w ON w.userFk = wtc.userFk + LEFT JOIN tmp.timeControlError tce ON tce.id = wtc.id + WHERE wtc.timed BETWEEN vDatedFrom AND vDatedToTomorrow + AND tce.id IS NULL + AND (vWorkerFk IS NULL OR wtc.userFk = vWorkerFk) + ORDER BY wtc.userFk, wtc.timed ASC; + + SELECT MAX(id) INTO @vCont + FROM tmp.workerTimeControl; + + DROP TEMPORARY TABLE IF EXISTS tmp.workerTimeControlAux; + CREATE TEMPORARY TABLE tmp.workerTimeControlAux ( + `id` int(11) , + `userFk` int(10) unsigned , + `timed` datetime, + `direction` enum('in', 'out','middle') + ) ENGINE=MEMORY; + + SET @vIsOdd := TRUE; + SET @lastUserFk := NULL; + SET @lastDirection := NULL; + + -- Cambio de dia en medio de un descanso + INSERT INTO tmp.workerTimeControlAux (id, userFk, timed, direction) + SELECT @vCont:= @vCont + 1, + lastUserFk, + util.dayEnd(dated), + 'middle' + FROM (SELECT IF(@lastUserFk <> userFk, @vIsOdd := TRUE, NULL), + DATE(@lastTimed) dated, + @lastUserFk lastUserFk, + IF(direction ='middle', @vIsOdd := NOT @vIsOdd, FALSE) isOdd, + IF(@vIsOdd + AND @lastDirection = 'middle' + AND (DATE(@lastTimed) <> date(timed) + OR @lastUserFk <> userFk), TRUE, FALSE) hasBreak, + @lastTimed := wtc.timed, + @lastUserFk := userFk, + @lastDirection := direction + FROM tmp.workerTimeControl wtc + ORDER BY wtc.userFk, wtc.timed)sub + WHERE hasBreak; + + SET @vIsOdd := TRUE; + SET @lastUserFk := NULL; + SET @lastDirection := NULL; + + INSERT INTO tmp.workerTimeControlAux (id, userFk, timed, direction) + SELECT @vCont:= @vCont + 1, + lastUserFk, + DATE_ADD(sub.dated, INTERVAL 1 DAY), + 'middle' + FROM (SELECT IF(@lastUserFk <> userFk, @vIsOdd := TRUE, NULL), + DATE(@lastTimed) dated, + @lastUserFk lastUserFk, + IF(direction ='middle', @vIsOdd := NOT @vIsOdd, FALSE) isOdd, + IF(@vIsOdd + AND @lastDirection = 'middle' + AND (DATE(@lastTimed)<>date(timed) + OR @lastUserFk<>userFk), TRUE, FALSE) hasBreak, + @lastTimed := wtc.timed, + @lastUserFk := userFk, + @lastDirection := direction + FROM tmp.workerTimeControl wtc + ORDER BY wtc.userFk, wtc.timed)sub + WHERE hasBreak; + + -- Cambio de dia + INSERT INTO tmp.workerTimeControlAux (id, userFk, timed, direction) + SELECT @vCont:= @vCont + 1, + wtc.userFk, + util.dayEnd(date(wtc.timed)), + 'out' + FROM workerTimeControl wtc + JOIN tmp.`user` w ON w.userFk = wtc.userFk + LEFT JOIN tmp.timeControlError tce ON tce.id = wtc.id + WHERE wtc.timed BETWEEN vDatedFromYesterday AND vDatedToTomorrow + AND wtc.direction <> 'out' + GROUP BY wtc.userFk, DATE(wtc.timed); + + INSERT INTO tmp.workerTimeControlAux (id, userFk, timed, direction) + SELECT @vCont:= @vCont + 1, + wtc.userFk, + DATE_ADD(date(wtc.timed), INTERVAL 1 DAY), + 'in' + FROM workerTimeControl wtc + JOIN tmp.`user` w ON w.userFk = wtc.userFk + LEFT JOIN tmp.timeControlError tce ON tce.id = wtc.id + WHERE wtc.timed BETWEEN vDatedFromYesterday AND vDatedToTomorrow + AND wtc.direction <> 'out' + GROUP BY wtc.userFk, DATE(wtc.timed); + + INSERT INTO tmp.workerTimeControl (id, userFk, timed, direction) + SELECT id, userFk, timed, direction + FROM tmp.workerTimeControlAux; + + SET @lastUserFk := NULL; + SET @vIsOdd := TRUE; + SET @vDated := NULL; + SET @vLastTimed := NULL; UPDATE workerJourney wj JOIN (SELECT sub.dated, userFk, SUM(NigthlyHours) NigthlyHours - FROM(SELECT IF(@vIsOdd, @vIsOdd := FALSE, @vIsOdd := TRUE), + FROM(SELECT (@vIsOdd := NOT @vIsOdd) isOdd, IF(direction='in', @vIsOdd := TRUE, @vIsOdd := @vIsOdd), - IF(@vIsOdd, @vLastTimed:=UNIX_TIMESTAMP(timed),@vLastTimed:=@vLastTimed), - IF(direction='in', @vDated := DATE(wtc.timed), @vDated :=@vDated) dated, + IF(@vIsOdd, @vLastTimed:=UNIX_TIMESTAMP(timed),@vLastTimed), + IF(direction='in', @vDated := DATE(wtc.timed), @vDated ) dated, wtc.userFk, - IF(UNIX_TIMESTAMP(timed)- @vLastTimed < vMaxTimePerDay, - vn.workerNigthlyHours_calculate(FROM_UNIXTIME(@vLastTimed), wtc.timed), - 0) NigthlyHours + IF(UNIX_TIMESTAMP(timed)- @vLastTimed < vMaxTimePerDay, + workerNigthlyHours_calculate(FROM_UNIXTIME(@vLastTimed), wtc.timed), + 0) NigthlyHours, + @lastUserFk := userFk FROM (SELECT DISTINCT(wtc.id), wtc.userFk, wtc.timed, wtc.direction - FROM workerTimeControl wtc - WHERE wtc.timed BETWEEN vDatedFrom AND util.dayEnd(DATE_ADD(vDatedTo, INTERVAL 1 DAY)) + FROM tmp.workerTimeControl wtc + LEFT JOIN tmp.timeControlError tce ON tce.id = wtc.id + WHERE wtc.timed BETWEEN vDatedFrom AND util.dayEnd(vDatedToTomorrow) + AND tce.id IS NULL ORDER BY userFk, timed ASC + LIMIT 10000000000000000000 ) wtc + ORDER BY wtc.userFk, wtc.timed )sub - LEFT JOIN tmp.workerTimeControlOddDays wo ON wo.workerFk = sub.userFk - AND wo.dated = sub.dated WHERE sub.dated BETWEEN vDatedFrom AND vDatedTo - AND wo.workerFk IS NULL GROUP BY userFk, sub.dated )night ON night.userFk = wj.userFk AND night.dated = wj.dated SET wj.nocturn = night.NigthlyHours WHERE NOT wj.isPaid AND NOT isUpdated - AND night.NigthlyHours <> 0; + AND night.NigthlyHours <> 0; -- Horas téoricas y precio de la hora ordinaria UPDATE workerJourney wj - JOIN postgresql.business_labour_payroll blp ON blp.business_id = wj.businessFk - JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk - JOIN postgresql.calendar_labour_type cl ON cl.calendar_labour_type_id = bl.calendar_labour_type_id - SET wj.priceOrdinaryHour = (vMonthsByYear * blp.importepactado) / (vWeeksByYear * cl.hours_week), + JOIN business b ON b.id = wj.businessFk + JOIN postgresql.calendar_labour_type cl + ON cl.calendar_labour_type_id = b.calendarTypeFk + SET wj.priceOrdinaryHour = + (vMonthsByYear * b.amount) / + (vWeeksByYear * cl.hours_week), wj.contractJourney = cl.hours_week / vDaysByWeek WHERE wj.dated BETWEEN vDatedFrom AND vDatedTo AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) AND NOT wj.isPaid AND NOT isUpdated; - -- Precio Extras, Vacaciones y Nocturnas + -- Precio Extras, Vacaciones y Nocturnas UPDATE workerJourney wj JOIN(SELECT MAX(w.dated), t.dated, w.holidayInc, w.nightInc, w.extraInc FROM time t @@ -86797,34 +73582,44 @@ BEGIN -- Elimina el precio de las horas extras para los contratos parciales. UPDATE workerJourney wj - JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk - JOIN postgresql.calendar_labour_type cl ON cl.calendar_labour_type_id = bl.calendar_labour_type_id + JOIN business b ON b.id = wj.businessFk + JOIN postgresql.calendar_labour_type cl + ON cl.calendar_labour_type_id = b.calendarTypeFk SET wj.priceExtraHour = 0 WHERE cl.isPartial AND wj.dated BETWEEN vDatedFrom AND vDatedTo AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) - AND NOT wj.isPaid + AND NOT wj.isPaid AND NOT wj.isUpdated; - -- Bajas, vacaciones y festivos personales + -- Ausencias UPDATE workerJourney wj - JOIN businessCalendar bc ON bc.businessFk = wj.businessFk AND bc.dated = wj.dated + JOIN businessCalendar bc ON bc.businessFk = wj.businessFk + AND bc.dated = wj.dated JOIN absenceType ab ON ab.id = bc.absenceTypeFk - JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk - SET wj.permission = ab.permissionRate * wj.contractJourney, - wj.contractJourney = IF(ab.permissionRate = 1, 0, ab.permissionRate) * wj.contractJourney, - wj.holiday = wj.total - IF(ab.permissionRate = 1, 0, ab.permissionRate) * wj.contractJourney - WHERE ab.permissionRate > 0 + SET wj.permission = ab.permissionRate * wj.contractJourney, + wj.contractJourney = IF(ab.permissionRate = 1, 0, ab.permissionRate) * wj.contractJourney + WHERE ab.permissionRate > 0 AND wj.dated BETWEEN vDatedFrom AND vDatedTo AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) - AND NOT wj.isPaid + AND NOT wj.isPaid AND NOT wj.isUpdated; + -- Sábados / Domingos + UPDATE workerJourney + SET holiday = IF(DAYNAME(dated)='sábado', 0, total), + contractJourney = 0 + WHERE DAYNAME(dated) IN ('sábado', 'domingo') + AND dated BETWEEN vDatedFrom AND vDatedTo + AND (vWorkerFk IS NULL OR userFk = vWorkerFk) + AND NOT isPaid + AND NOT isUpdated; + -- Festivos por centro de trabajo UPDATE workerJourney wj JOIN calendarHolidays ch ON ch.dated = wj.dated - JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk - AND bl.workcenter_id = ch.workcenterFk + JOIN business b ON b.id = wj.businessFk + AND b.workcenterFk = ch.workcenterFk SET wj.holiday = wj.total, wj.permission = wj.contractJourney, wj.contractJourney = 0 @@ -86832,239 +73627,85 @@ BEGIN AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) AND NOT wj.isPaid AND NOT wj.isUpdated; - - -- Sábados / Domingos - UPDATE workerJourney - SET holiday = total, - contractJourney = 0 - WHERE DAYNAME(dated) IN ('sábado', 'domingo') - AND dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR userFk = vWorkerFk) - AND NOT isPaid - AND NOT isUpdated; -- Horas extras - UPDATE workerJourney + UPDATE workerJourney SET extra = lunch + total - contractJourney WHERE dated BETWEEN vDatedFrom AND vDatedTo AND (vWorkerFk IS NULL OR userFk = vWorkerFk) AND NOT isPaid AND NOT isUpdated; - + DROP TEMPORARY TABLE tmp.timeControlCalculate; - DROP TEMPORARY TABLE tmp.workerTimeControlOddDays; + DROP TEMPORARY TABLE tmp.`user`; + DROP TEMPORARY TABLE tmp.timeControlError; + DROP TEMPORARY TABLE tmp.workerTimeControlAux; + DROP TEMPORARY TABLE tmp.workerTimeControl; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `workerJourney_replace__` */; +/*!50003 DROP PROCEDURE IF EXISTS `workerMistakeType_get` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerJourney_replace__`(vDatedFrom DATE, vDatedTo DATE, vWorkerFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerMistakeType_get`() BEGIN + /** - * Actualiza la tabla workerJourney para que actue como caché permanente revisable de las jornadas laborales. - * @param vDatedFrom workerTimeControl - * @param vDatedTo workerTimeControl - * @param vWorkerFk, en caso de pasar 0 ó NULL se aplica a todos - */ - - DECLARE vDatedTimeTo DATETIME; - DECLARE vMinHoursToBreak DECIMAL(10,2); - DECLARE vBreakHours DECIMAL(10,2); - DECLARE vMonthByYear INT; - DECLARE vWeeksByYear INT DEFAULT 52; - DECLARE vMonthsByYear INT DEFAULT 12; - DECLARE vDaysByWeek INT DEFAULT 5; + * Obtiene los tipos de error para los trabajadores + */ - SET vDatedTimeTo = util.dayEnd(vDatedTo); - - SELECT minHoursToBreak, breakHours - INTO vMinHoursToBreak, vBreakHours - FROM workerTimeControlConfig; + SELECT code, description + FROM workerMistakeType + ORDER BY description; - DELETE FROM workerJourney - WHERE dated BETWEEN vDatedFrom AND vDatedTo - AND NOT isPaid - AND NOT isUpdated - AND (vWorkerFk IS NULL OR userFK = vWorkerFk); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `workerMistake_add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerMistake_add`(vWorkerFk INT, vWorkerMistakeTypeFk VARCHAR(10), vUserFk INT ) +BEGIN - -- Se inserta todos los días del periodo por worker y business en el rango de fechas. - INSERT IGNORE INTO workerJourney(userFk, dated, businessFk) - SELECT w.workerFk, t.dated, w.businessFk - FROM workerLabour w - JOIN time t ON t.dated BETWEEN w.started AND IFNULL(w.ended,CURDATE()) - WHERE t.dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR w.workerFk = vWorkerFk) - ORDER BY w.workerFk, t.dated, w.businessFk; - - IF vWorkerFk THEN - CALL timeControl_calculateByUser(vWorkerFk, vDatedFrom , vDatedTimeTo); +/** + * Añade error al trabajador + * + * @param vWorkerFk id del trabajador al cual se le va a añadir error + * @param vWorkerMistakeTypeFk code del tipo de error + * @param vUserFk id del usuario que pone el error + * + */ + DECLARE vWorkerName VARCHAR(255) DEFAULT account.user_getNameFromId(vUserFk); + + IF(account.user_hasRole(vWorkerName,'coolerBoss')) + THEN + INSERT INTO vn.workerMistake(userFk, workerMistakeTypeFk) + VALUES(vWorkerFk, vWorkerMistakeTypeFk); ELSE - CALL timeControl_calculateAll(vDatedFrom, vDatedTimeTo); - END IF; + CALL util.throw('No tienes permisos para realizar la acción'); - UPDATE workerJourney wj - JOIN tmp.timeControlCalculate t ON wj.dated = t.dated AND wj.userFk = t.userFk - SET wj.total = CAST(IF(t.timeWorkDecimal >= vMinHoursToBreak, t.timeWorkDecimal - vBreakHours, t.timeWorkDecimal) AS DECIMAL (10,2)), - wj.lunch = IF(t.timeWorkDecimal >= vMinHoursToBreak , vBreakHours , 0) - WHERE wj.dated BETWEEN vDatedFrom AND vDatedTo - AND NOT wj.isPaid - AND NOT wj.isUpdated - AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk); - - -- NOCTURNIDAD - DROP TEMPORARY TABLE IF EXISTS tmp.workerTimeControl; - CREATE TEMPORARY TABLE tmp.workerTimeControl - SELECT sub.userFk, sub.timed, sub.order, 0 Non, FALSE manual - FROM (SELECT w.userFk, - IF(TIME(w.timed) IN ('06:00:00','22:00:00'), TIMESTAMPADD(SECOND, -1, w.timed), w.timed) timed, -- Regalamos un segundo para evitar que hayan fichadas en las horas claves de inicio y fin de la nocturnidad. - w.`order` - FROM workerTimeControl w - WHERE w.timed BETWEEN vDatedFrom AND vDatedTo - AND w.userFk = IFNULL(vWorkerFk, w.userFk) - UNION ALL - SELECT w.userFk, - TIMESTAMPADD(HOUR, 6, DATE(w.timed)), - w.`order` - FROM workerTimeControl w - WHERE w.timed BETWEEN vDatedFrom AND vDatedTo - AND w.userFk = IFNULL(vWorkerFk, w.userFk) - GROUP BY w.userFk, DATE(w.timed) - UNION ALL - SELECT w.userFk, - TIMESTAMPADD(HOUR, 22, DATE(w.timed)), - w.order - FROM workerTimeControl w - WHERE w.timed BETWEEN vDatedFrom AND vDatedTo - AND w.userFk = IFNULL(vWorkerFk, w.userFk) - GROUP BY w.userFk, DATE(w.timed) - ) sub - ORDER BY sub.userFk, sub.timed; - - -- Establece el orden en que se han de leer las fichadas - CALL workerTimeControlSetOrder(); + END IF; - -- Marca los impares para facilitar la consulta siguiente - UPDATE tmp.workerTimeControl - SET Non = 1 - WHERE `order` mod 2; - - -- Actualizamos la nocturnidad - UPDATE workerJourney wj - JOIN(SELECT userFk, Dia, sum(Nocturnidad) Nocturnidad FROM - (SELECT userFk, - date(timed) Dia, - ((IF( TIME(timed) < '06:00:00' OR (TIME(timed) = '06:00:00' AND Non = FALSE ) , IF(Non,-1,1),0) - + - IF(TIME(timed) > '22:00:00' OR (TIME(timed) = '22:00:00' AND Non = TRUE), If(Non,-1,1),0)) - * (HOUR(`timed`) + MINUTE(`timed`) / 60) - ) Nocturnidad - FROM tmp.workerTimeControl - ) sub - GROUP BY userFk, Dia - ) night ON night.userFk = wj.userFk AND night.Dia = wj.dated - SET wj.nocturn = night.Nocturnidad - WHERE NOT wj.isPaid - AND NOT isUpdated - AND night.Nocturnidad<>0; - - - -- Horas téoricas y precio de la hora ordinaria - UPDATE workerJourney wj - JOIN postgresql.business_labour_payroll blp ON blp.business_id = wj.businessFk - JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk - JOIN postgresql.calendar_labour_type cl ON cl.calendar_labour_type_id = bl.calendar_labour_type_id - SET wj.priceOrdinaryHour = (vMonthsByYear * blp.importepactado) / (vWeeksByYear * cl.hours_week), - wj.contractJourney = cl.hours_week / vDaysByWeek - WHERE wj.dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) - AND NOT wj.isPaid - AND NOT isUpdated; - - -- Precio Extras, Vacaciones y Nocturnas - UPDATE workerJourney wj - JOIN(SELECT MAX(w.dated), t.dated, w.holidayInc, w.nightInc, w.extraInc - FROM time t - JOIN workerHourPrice w ON w.dated <= t.dated - WHERE t.dated BETWEEN vDatedFrom AND vDatedTo - GROUP BY t.dated - ) sub ON sub.dated = wj.dated - SET wj.priceHolidayHour = wj.priceOrdinaryHour * sub.holidayInc, - wj.priceNocturnHour = wj.priceOrdinaryHour * sub.nightInc, - wj.priceExtraHour = wj.priceOrdinaryHour * sub.extraInc - WHERE wj.dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) - AND NOT wj.isPaid - AND NOT wj.isUpdated; - - -- Elimina el precio de las horas extras para los contratos parciales. - UPDATE workerJourney wj - JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk - JOIN postgresql.calendar_labour_type cl ON cl.calendar_labour_type_id = bl.calendar_labour_type_id - SET wj.priceExtraHour = 0 - WHERE cl.isPartial - AND wj.dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) - AND NOT wj.isPaid - AND NOT wj.isUpdated; - - -- Bajas, vacaciones y festivos personales - UPDATE workerJourney wj - JOIN businessCalendar bc ON bc.businessFk = wj.businessFk AND bc.dated = wj.dated - JOIN absenceType ab ON ab.id = bc.absenceTypeFk - JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk - SET wj.permission = ab.permissionRate * wj.contractJourney, - wj.contractJourney = IF(ab.permissionRate = 1, 0, ab.permissionRate) * wj.contractJourney, - wj.holiday = wj.total - IF(ab.permissionRate = 1, 0, ab.permissionRate) * wj.contractJourney - WHERE ab.permissionRate > 0 - AND wj.dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) - AND NOT wj.isPaid - AND NOT wj.isUpdated; - - -- Festivos por centro de trabajo - UPDATE workerJourney wj - JOIN calendarHolidays ch ON ch.dated = wj.dated - JOIN postgresql.business_labour bl ON bl.business_id = wj.businessFk - AND bl.workcenter_id = ch.workcenterFk - SET wj.holiday = wj.total, - wj.permission = wj.contractJourney, - wj.contractJourney = 0 - WHERE wj.dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR wj.userFk = vWorkerFk) - AND NOT wj.isPaid - AND NOT wj.isUpdated; - - -- Sábados / Domingos - UPDATE workerJourney - SET holiday = total, - contractJourney = 0 - WHERE DAYNAME(dated) IN ('sábado', 'domingo') - AND dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR userFk = vWorkerFk) - AND NOT isPaid - AND NOT isUpdated; - - -- Horas extras - UPDATE workerJourney - SET extra = lunch + total - contractJourney - WHERE dated BETWEEN vDatedFrom AND vDatedTo - AND (vWorkerFk IS NULL OR userFk = vWorkerFk) - AND NOT isPaid - AND NOT isUpdated; - - DROP TEMPORARY TABLE tmp.timeControlCalculate; - DROP TEMPORARY TABLE tmp.workerTimeControl; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -87077,11 +73718,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerShelving_Add`(vWorkerFk INT, vBarcode VARCHAR(12)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerShelving_Add`(vWorkerFk INT, vBarcode VARCHAR(12)) BEGIN /* * Inserta en workerShelving asociando los carros al trabajador @@ -87091,7 +73732,7 @@ BEGIN DECLARE vIsShelvingFk BOOL; SELECT COUNT(*) > 0 INTO vIsShelvingFk - FROM vn.shelving s + FROM vn.shelving s WHERE s.code = vBarcode COLLATE utf8_general_ci; IF NOT vIsShelvingFk THEN @@ -87099,7 +73740,7 @@ BEGIN SELECT st.shelvingFk INTO vBarcode FROM vn.smartTag st WHERE st.code = vBarcode COLLATE utf8_general_ci; - + END IF; INSERT INTO vn.workerShelving (workerFk, shelvingFk) @@ -87116,11 +73757,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerShelving_delete`(vWorkerFk INT, vBarcode VARCHAR(12)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerShelving_delete`(vWorkerFk INT, vBarcode VARCHAR(12)) BEGIN /* * Borra de workerShelving el carro o etiqueta insertado por el trabajador @@ -87131,20 +73772,20 @@ BEGIN SELECT COUNT(*) > 0 INTO vIsShelvingFk - FROM vn.shelving s + FROM vn.shelving s WHERE s.code = vBarcode COLLATE utf8_general_ci; - + IF NOT vIsShelvingFk THEN SELECT st.shelvingFk INTO vBarcode FROM vn.smartTag st WHERE st.code = vBarcode COLLATE utf8_general_ci; - + END IF; - - DELETE FROM vn.workerShelving - WHERE shelvingFk = vBarcode COLLATE utf8_general_ci + + DELETE FROM vn.workerShelving + WHERE shelvingFk = vBarcode COLLATE utf8_general_ci AND workerFk = vWorkerFk ; END ;; @@ -87157,62 +73798,23 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControlAdd`(IN vUserFk INT, IN vWarehouseFk INT, IN vDated DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControlAdd`(IN vUserFk INT, IN vWarehouseFk INT, IN vDated DATETIME) BEGIN /*INSERT INTO workerTimeControl(userFk, timed, manual, warehouseFk) VALUES(vUserFk, vDated, FALSE, vWarehouseFk); - - CALL vn.workerTimeControlSOWP(vUserFk , vDated);*/ - - CALL vn.workerTimeControl_add(vUserFk,vWarehouseFk,NOW(),FALSE); - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `workerTimeControlNonDays__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControlNonDays__`() -BEGIN - SET @cont := 0; - SELECT sub2.userFk, sub2.dated Fecha, CONCAT (w.firstName," ", w.lastName) worker, au.name Boss, d.name - FROM (SELECT userFk, - dated, - COUNT(*) cont2 - FROM (SELECT DATE(wtc.timed) dated, - userFk, - IFNULL(@cont, @cont := 0 ), - IF(direction = 'in', @cont:=@cont+1, TRUE), - @cont cont - FROM vn.workerTimeControl wtc - WHERE wtc.timed BETWEEN TIMESTAMPADD(YEAR,-1,CURDATE()) AND CURDATE() - ORDER BY userFk, timed)sub - GROUP BY cont - HAVING cont2 MOD 2 = 1)sub2 - JOIN worker w ON w.userFk = sub2.userFk - LEFT JOIN worker wb ON wb.id = w.bossFk - LEFT JOIN account.user au ON au.id = wb.userFK - LEFT JOIN workerDepartment wd ON wd.workerFk = w.id - LEFT JOIN department d ON d.id = wd.departmentFk - ORDER BY Boss ASC; + CALL vn.workerTimeControlSOWP(vUserFk , vDated);*/ + + CALL vn.workerTimeControl_add(vUserFk,vWarehouseFk,util.VN_NOW(),FALSE); + + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -87223,13 +73825,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControlPinGenerate`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControlPinGenerate`( vWorkerFk INT) BEGIN /** @@ -87237,8 +73839,8 @@ BEGIN * */ - - + + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -87249,13 +73851,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControlSetOrder`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControlSetOrder`() BEGIN SET @order := 1; @@ -87278,13 +73880,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControlSetOrder_by_User_and_dateRange`(vUserFk INT, vStarted DATE, vFinished DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControlSetOrder_by_User_and_dateRange`(vUserFk INT, vStarted DATE, vFinished DATE) BEGIN SET @order := 0; @@ -87306,22 +73908,22 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControlSOWP`(IN vUserFk INT, IN vDated DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControlSOWP`(IN vUserFk INT, IN vDated DATE) BEGIN SET @order := 0; - - UPDATE workerTimeControl - SET `order` = @order := @order + 1 - WHERE vUserFk =userFk + + UPDATE workerTimeControl + SET `order` = @order := @order + 1 + WHERE vUserFk =userFk AND vDated = DATE(timed) ORDER BY timed; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -87332,81 +73934,17 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControl_add`(IN vUserFk INT, IN vWarehouseFk INT, IN vTimed DATETIME, IN vIsManual BOOL) -BEGIN - - - SELECT workerTimeControl_add(vUserFk,vWarehouseFk,vTimed,vIsManual); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `workerTimeControl_add__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControl_add__`(IN vUserFk INT, IN vWarehouseFk INT, IN vTimed DATETIME, IN vIsManual BOOL) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControl_add`(IN vUserFk INT, IN vWarehouseFk INT, IN vTimed DATETIME, IN vIsManual BOOL) BEGIN - DECLARE vDirection VARCHAR(6); - DECLARE vLastIn DATETIME; - DECLARE vDayStayMax INT; - DECLARE vHasDirectionOut INT; - SELECT dayStayMax INTO vDayStayMax - FROM vn.workerTimeControlParams; - - SELECT vn.timeWorkerControl_getDirection(vUserFk,vTimed) INTO vDirection; - - IF vDirection = 'out' THEN - - SELECT MAX(timed) INTO vLastIn - FROM vn.workerTimeControl - WHERE userFk = vUserFk - AND direction = 'in' - AND timed < vTimed; - - UPDATE vn.workerTimeControl wtc - SET wtc.direction = 'middle' - WHERE userFk = vUserFk - AND direction = 'out' - AND timed BETWEEN vLastIn AND vTimed; - - ELSE IF vDirection = 'in' THEN - - SELECT COUNT(*) INTO vHasDirectionOut - FROM vn.workerTimeControl wtc - WHERE userFk = vUserFk - AND direction = 'out' - AND timed BETWEEN vTimed AND TIMESTAMPADD(SECOND, 50400, vTimed); - - UPDATE vn.workerTimeControl wtc - SET wtc.direction = IF (vHasDirectionOut,'middle','out') - WHERE userFk = vUserFk - AND direction = 'in' - AND timed BETWEEN vTimed AND TIMESTAMPADD(SECOND, 50400, vTimed); - - END IF; - END IF; - - INSERT INTO workerTimeControl(userFk, timed, warehouseFk, direction, manual) - VALUES(vUserFk, vTimed, vWarehouseFk, vDirection, vIsManual); - - CALL vn.workerTimeControlSOWP(vUserFk, vTimed); + SELECT workerTimeControl_add(vUserFk,vWarehouseFk,vTimed,vIsManual); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -87417,39 +73955,44 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControl_calculateOddDays`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControl_calculateOddDays`() BEGIN -/* - * Calculo de las fichadas impares por empleado y dia +/** + * Calculo de las fichadas impares por empleado y dia. + * * @return tmp.workerTimeControlOddDays (userFk, dated) */ SET @cont := FALSE; - SET @lastUserFk:= NULL; - DROP TEMPORARY TABLE IF EXISTS tmp.workerTimeControlOddDays; - CREATE TEMPORARY TABLE tmp.workerTimeControlOddDays + SET @lastUserFk:= NULL; + + DROP TEMPORARY TABLE IF EXISTS tmp.workerTimeControlOddDays; + CREATE TEMPORARY TABLE tmp.workerTimeControlOddDays SELECT sub2.userFk workerFk, sub2.dated - FROM (SELECT userFk, - dated, - COUNT(*) cont2 - FROM (SELECT DATE(wtc.timed) dated, - userFk, - IFNULL(@cont, @cont := TRUE ), - IF(direction = 'in' OR userFk <> @lastUserFk, @cont := @cont+1, TRUE), - @cont cont, - @lastUserFk := userFk - FROM vn.workerTimeControl wtc - WHERE wtc.timed BETWEEN TIMESTAMPADD(YEAR,-1,CURDATE()) AND CURDATE() - ORDER BY userFk, timed)sub - GROUP BY cont - HAVING cont2 MOD 2 = 1)sub2 - JOIN worker w ON w.userFk = sub2.userFk; - + FROM ( + SELECT userFk, + dated, + COUNT(*) cont2 + FROM ( + SELECT DATE(wtc.timed) dated, + userFk, + IFNULL(@cont, @cont := TRUE ), + IF(direction = 'in' OR userFk <> @lastUserFk, @cont := @cont+1, TRUE), + @cont cont, + @lastUserFk := userFk + FROM workerTimeControl wtc + WHERE wtc.timed BETWEEN TIMESTAMPADD(YEAR,-1,util.VN_CURDATE()) AND util.dayEnd(util.VN_CURDATE()) + ORDER BY userFk, timed + LIMIT 10000000000000000000)sub + GROUP BY cont + HAVING cont2 MOD 2 = 1 + )sub2 + JOIN worker w ON w.userFk = sub2.userFk; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -87462,11 +74005,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControl_check`(vUserFk INT, vDated DATE,vTabletFk VARCHAR(100)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControl_check`(vUserFk INT, vDated DATE,vTabletFk VARCHAR(100)) proc: BEGIN /** * Verifica si el empleado puede fichar en el momento actual, si puede fichar llama a workerTimeControlAdd @@ -87475,153 +74018,146 @@ proc: BEGIN * @return Retorna si encuentra un problema 'odd','maxTimeWork','breakDay','breakWeek' ; * En caso de tener algun problema retorna el primero que encuentra */ - DECLARE vLastIn DATETIME ; - DECLARE vLastOut DATETIME ; - DECLARE vDayWorkMax INT; - DECLARE vDayBreak INT; - DECLARE vWeekBreak INT ; + DECLARE vLastIn DATETIME ; + DECLARE vLastOut DATETIME ; + DECLARE vDayWorkMax INT; + DECLARE vDayBreak INT; + DECLARE vWeekBreak INT ; DECLARE vWeekScope INT; - DECLARE vDayStayMax INT; - DECLARE vProblem VARCHAR(20) DEFAULT NULL; - DECLARE vTimedWorked INT; - DECLARE vCalendarStateType VARCHAR(20) DEFAULT NULL; - DECLARE vDepartmentFk INT; - DECLARE vTo VARCHAR(50) DEFAULT NULL; - DECLARE vUserName VARCHAR(50) DEFAULT NULL; - DECLARE vBody VARCHAR(255) DEFAULT NULL; - - SELECT dayBreak, weekBreak, weekScope, dayWorkMax, dayStayMax + DECLARE vDayStayMax INT; + DECLARE vProblem VARCHAR(20) DEFAULT NULL; + DECLARE vTimedWorked INT; + DECLARE vCalendarStateType VARCHAR(20) DEFAULT NULL; + DECLARE vDepartmentFk INT; + DECLARE vTo VARCHAR(50) DEFAULT NULL; + DECLARE vUserName VARCHAR(50) DEFAULT NULL; + DECLARE vBody VARCHAR(255) DEFAULT NULL; + + SELECT dayBreak, weekBreak, weekScope, dayWorkMax, dayStayMax INTO vDayBreak, vWeekBreak, vWeekScope, vDayWorkMax, vDayStayMax FROM workerTimeControlParams; - SELECT MAX(timed) INTO vLastIn - FROM workerTimeControl - WHERE userFk = vUserFk + SELECT MAX(timed) INTO vLastIn + FROM workerTimeControl + WHERE userFk = vUserFk AND direction = 'in'; - - SELECT MAX(timed) INTO vLastOut - FROM workerTimeControl - WHERE userFk = vUserFk - AND direction = 'out'; - - SELECT CONCAT(u.name,'@verdnatura.es') INTO vTo + + SELECT MAX(timed) INTO vLastOut + FROM workerTimeControl + WHERE userFk = vUserFk + AND direction = 'out'; + + SELECT CONCAT(u.name,'@verdnatura.es') INTO vTo FROM account.user u - WHERE u.id = (SELECT bossFk FROM worker WHERE id = vUserFk); - + WHERE u.id = (SELECT bossFk FROM worker WHERE id = vUserFk); + SELECT CONCAT(firstName,' ',lastName) INTO vUserName FROM worker w - WHERE w.id = vUserFk; - - - IF UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(vLastIn) > vDayStayMax THEN -- NUEVA JORNADA - - -- VERIFICAR DESCANSO DIARIO - IF UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(vLastOut) < vDayBreak THEN - SELECT "Descansos 12 h" AS problem; - -- ENVIAMOS CORREO AL BOSSFK + WHERE w.id = vUserFk; + + + IF UNIX_TIMESTAMP(util.VN_NOW()) - UNIX_TIMESTAMP(vLastIn) > vDayStayMax THEN -- NUEVA JORNADA + + -- VERIFICAR DESCANSO DIARIO + IF UNIX_TIMESTAMP(util.VN_NOW()) - UNIX_TIMESTAMP(vLastOut) < vDayBreak THEN + SELECT "Descansos 12 h" AS problem; + -- ENVIAMOS CORREO AL BOSSFK SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"Descansos 12 h") INTO vBody; CALL mail_insert(vTo,vTo,'error al fichar',vBody); - LEAVE proc; - END IF; - - -- VERIFICAR FICHADAS IMPARES DEL ÚLTIMO DÍA QUE SE FICHÓ - IF (SELECT MOD(COUNT(*),2) -- <>0 - FROM workerTimeControl + LEAVE proc; + END IF; + + -- VERIFICAR FICHADAS IMPARES DEL ÚLTIMO DÍA QUE SE FICHÓ + IF (SELECT MOD(COUNT(*),2) -- <>0 + FROM workerTimeControl WHERE userFk = vUserFk AND timed >= vLastIn - ) THEN + ) THEN SELECT "Dias con fichadas impares" AS problem; - -- ENVIAMOS CORREO AL BOSSFK + -- ENVIAMOS CORREO AL BOSSFK SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"Dias con fichadas impares") INTO vBody; CALL mail_insert(vTo,vTo,'error al fichar',vBody); - LEAVE proc; + LEAVE proc; END IF; - - -- VERIFICAR VACACIONES - SELECT cs.type INTO vCalendarStateType - FROM postgresql.calendar_employee ce - JOIN postgresql.business b USING(business_id) - JOIN postgresql.profile pr ON pr.profile_id = b.client_id - JOIN postgresql.person p ON p.person_id = pr.person_id - JOIN postgresql.calendar_state cs USING(calendar_state_id) - JOIN worker w ON w.id = p.id_trabajador - WHERE ce.date = CURDATE() - AND cs.isAllowedToWork = FALSE - AND w.userFk = vUserFk + + -- VERIFICAR VACACIONES + SELECT at2.name INTO vCalendarStateType + FROM calendar c + JOIN business b ON b.id = c.businessFk + JOIN absenceType at2 ON at2.id = c.dayOffTypeFk + WHERE c.dated = util.VN_CURDATE() + AND at2.isAllowedToWork = FALSE + AND b.workerFk = vUserFk LIMIT 1; - - IF(LENGTH(vCalendarStateType)) THEN + + IF(LENGTH(vCalendarStateType)) THEN SELECT vCalendarStateType AS problem; - -- ENVIAMOS CORREO AL BOSSFK + -- ENVIAMOS CORREO AL BOSSFK SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"Vacaciones") INTO vBody; CALL mail_insert(vTo,vTo,'error al fichar',vBody); - LEAVE proc; - - END IF; - - - -- VERIFICAR CONTRATO EN VIGOR - IF (SELECT COUNT(*) - FROM postgresql.business b - JOIN postgresql.profile pr ON pr.profile_id = b.client_id - JOIN postgresql.person p ON p.person_id = pr.person_id - JOIN worker w ON w.id = p.id_trabajador - WHERE w.userFk = vUserFk - AND b.date_start <= vDated - AND IFNULL(b.date_end,vDated) >= vDated - ) = 0 THEN - SELECT "No hay un contrato en vigor" AS problem; - -- ENVIAMOS CORREO AL BOSSFK - SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"No hay un contrato en vigor") INTO vBody; - CALL mail_insert(vTo,vTo,'error al fichar',vBody); - LEAVE proc; - + LEAVE proc; + END IF; - -- VERIFICAR DESCANSO SEMANAL + -- VERIFICAR CONTRATO EN VIGOR + IF (SELECT COUNT(*) + FROM business b + WHERE b.workerFk = vUserFk + AND b.started <= vDated + AND IFNULL(b.ended, vDated) >= vDated + ) = 0 THEN + SELECT "No hay un contrato en vigor" AS problem; + -- ENVIAMOS CORREO AL BOSSFK + SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"No hay un contrato en vigor") INTO vBody; + CALL mail_insert(vTo,vTo,'error al fichar',vBody); + LEAVE proc; + + END IF; + + -- VERIFICAR DESCANSO SEMANAL SET @vHasBreakWeek:= FALSE; - SET @vLastTimed:= UNIX_TIMESTAMP((NOW() - INTERVAL vWeekScope SECOND)); - + SET @vLastTimed:= UNIX_TIMESTAMP((util.VN_NOW() - INTERVAL vWeekScope SECOND)); + DROP TEMPORARY TABLE IF EXISTS tmp.trash; CREATE TEMPORARY TABLE tmp.trash - SELECT IF(vWeekBreak-(UNIX_TIMESTAMP(timed)-@vLastTimed) <= 0, @vHasBreakWeek:=TRUE, TRUE) alias, + SELECT IF(vWeekBreak-(UNIX_TIMESTAMP(timed)-@vLastTimed) <= 0, @vHasBreakWeek:=TRUE, TRUE) alias, @vLastTimed:= UNIX_TIMESTAMP(timed) - FROM workerTimeControl - WHERE timed>= (NOW() - INTERVAL vWeekScope SECOND) + FROM workerTimeControl + WHERE timed>= (util.VN_NOW() - INTERVAL vWeekScope SECOND) AND userFk= vUserFk AND direction IN ('in','out') - ORDER BY timed ASC; - - IF UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(vLastOut) < vWeekBreak AND @vHasBreakWeek = FALSE THEN -- REVISA SI EL DESCANSO SE HA REALIZADO DESPUÉS DE LA ÚLTIMA FICHADA + ORDER BY timed ASC; + + IF UNIX_TIMESTAMP(util.VN_NOW()) - UNIX_TIMESTAMP(vLastOut) < vWeekBreak AND @vHasBreakWeek = FALSE THEN -- REVISA SI EL DESCANSO SE HA REALIZADO DESPUÉS DE LA ÚLTIMA FICHADA SELECT "Descansos 36 h" AS problem; - -- ENVIAMOS CORREO AL BOSSFK + -- ENVIAMOS CORREO AL BOSSFK SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"Descansos 36 h") INTO vBody; CALL mail_insert(vTo,vTo,'error al fichar',vBody); - LEAVE proc; + LEAVE proc; END IF; - - DROP TEMPORARY TABLE tmp.trash; - - ELSE -- DIA ACTUAL - + + DROP TEMPORARY TABLE tmp.trash; + + ELSE -- DIA ACTUAL + -- VERIFICA QUE EL TIEMPO EFECTIVO NO SUPERE EL MÁXIMO - SELECT IFNULL(SUM(if( mod(wtc.order,2)=1, -UNIX_TIMESTAMP(timed), UNIX_TIMESTAMP(timed))),0) - IF( MOD(COUNT(*),2), UNIX_TIMESTAMP(NOW()), 0) INTO vTimedWorked + SELECT IFNULL(SUM(if( mod(wtc.order,2)=1, -UNIX_TIMESTAMP(timed), UNIX_TIMESTAMP(timed))),0) - IF( MOD(COUNT(*),2), UNIX_TIMESTAMP(util.VN_NOW()), 0) INTO vTimedWorked FROM workerTimeControl wtc - WHERE userFk = vUserFk + WHERE userFk = vUserFk AND timed >= vLastIn ORDER BY timed; - IF vTimedWorked > vDayWorkMax THEN - SELECT "Jornadas" AS problem; - -- ENVIAMOS CORREO AL BOSSFK + IF vTimedWorked > vDayWorkMax THEN + SELECT "Jornadas" AS problem; + -- ENVIAMOS CORREO AL BOSSFK SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"Jornadas") INTO vBody; CALL mail_insert(vTo,vTo,'error al fichar',vBody); - LEAVE proc; + LEAVE proc; END IF; END IF; - - -- VERIFICAR DEPARTAMENTO + + -- VERIFICAR DEPARTAMENTO /* IF vTabletFk IS NOT NULL THEN SELECT wtcu.departmentFk INTO vDepartmentFk FROM workerTimeControlUserInfo wtcu @@ -87631,393 +74167,180 @@ proc: BEGIN WHERE td.tabletFk = vTabletFk AND td.departmentFk = vDepartmentFk ) = 0 THEN SELECT "No perteneces a este departamento." AS problem; - -- ENVIAMOS CORREO AL BOSSFK + -- ENVIAMOS CORREO AL BOSSFK SELECT CONCAT(vUserName,' No a podido fichar por el siguiente problema: ',"No perteneces a este departamento.") INTO vBody; CALL mail_insert(vTo,vTo,'error al fichar',vBody); - LEAVE proc; + LEAVE proc; END IF; END IF;*/ - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `workerTimeControl_checkTest` */; +/*!50003 DROP PROCEDURE IF EXISTS `workerTimeControl_checkBreak` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControl_checkTest`(vUserFk INT, vTimed DATETIME, vTabletFk VARCHAR(100)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControl_checkBreak`(vStarted DATE) BEGIN - /** - * Verifica si el empleado puede fichar en el momento actual, si puede fichar llama a vn.workerTimeControlAdd - * @param vUserFk Identificador del trabajador - * @return Retorna si encuentra un problema 'odd','maxTimeWork','breakDay','breakWeek' ; - * En caso de tener algun problema retorna el primero que encuentra + * Retorna los trabajadores que no han respetado el descanso semanal de 36/72 horas + * El sistema verificará el descanso corto en la siguiente semana + * o el largo en las 2 siguientes semanas a partir de la fecha dada + * @param vStarted día inicio de la semana en el que se quiere verificar + * @return tmp.workerWithoutWeekBreak (workerFk) */ - DECLARE vLastIn DATETIME ; - DECLARE vLastOut DATETIME ; - DECLARE vDayWorkMax INT; - DECLARE vDayBreak INT; - DECLARE vWeekBreak INT ; - DECLARE vWeekMaxBreak INT; - DECLARE vWeekScope INT; - DECLARE vWeekMaxScope INT; - DECLARE vDayStayMax INT; - DECLARE vAskInOut INT; - DECLARE vTimedWorked INT; - DECLARE vCalendarStateType VARCHAR(20) DEFAULT NULL; - DECLARE vDepartmentFk INT; - DECLARE vTo VARCHAR(50) DEFAULT NULL; - DECLARE vUserName VARCHAR(50) DEFAULT NULL; - DECLARE vBody VARCHAR(255) DEFAULT NULL; + DECLARE vShortEnded DATETIME; + DECLARE vLongEnded DATETIME; + DECLARE vShortWeekBreak INT; + DECLARE vLongWeekBreak INT; - IF (vTimed IS NULL) THEN - SET vTimed = NOW(); - END IF; - - SELECT dayBreak, weekBreak, weekScope, dayWorkMax, dayStayMax, weekMaxBreak, weekMaxScope, askInOut - INTO vDayBreak, vWeekBreak, vWeekScope, vDayWorkMax, vDayStayMax, vWeekMaxBreak, vWeekMaxScope, vAskInOut - FROM vn.workerTimeControlParams; + SELECT util.dayEnd(DATE_ADD(vStarted, INTERVAL shortWeekDays DAY)), + util.dayEnd(DATE_ADD(vStarted, INTERVAL longWeekDays DAY)), + shortWeekBreak, + longWeekBreak + INTO vShortEnded, vLongEnded, vShortWeekBreak, vLongWeekBreak + FROM workerTimeControlConfig; - SELECT MAX(timed) INTO vLastIn - FROM vn.workerTimeControl - WHERE userFk = vUserFk AND - direction = 'in'; + SET @previousTimed:= UNIX_TIMESTAMP(vStarted); + SET @lastUserFk := NULL; - SELECT MAX(timed) INTO vLastOut - FROM vn.workerTimeControl - WHERE userFk = vUserFk AND - direction = 'out'; + -- Descanso corto en la semana - - SELECT email INTO vTo - FROM account.user w - WHERE w.id = (SELECT bossFk FROM vn.worker WHERE id = vUserFk); + DROP TEMPORARY TABLE IF EXISTS tmp.worker; + CREATE TEMPORARY TABLE tmp.worker + (PRIMARY KEY(workerFk)) + ENGINE = MEMORY + SELECT DISTINCT userFk workerFk + FROM workerTimeControl + WHERE timed BETWEEN vStarted AND vShortEnded + AND direction IN ('in', 'out'); - SELECT CONCAT(firstName,' ',lastName) INTO vUserName - FROM vn.worker w - WHERE w.id = vUserFk; - - -- VERIFICAR CONTRATO EN VIGOR - IF (SELECT COUNT(*) - FROM postgresql.business b - JOIN postgresql.profile pr ON pr.profile_id = b.client_id - JOIN postgresql.person p ON p.person_id = pr.person_id - JOIN vn.worker w ON w.id = p.id_trabajador - WHERE w.userFk = vUserFk AND - b.date_start <= CURDATE() AND - IFNULL(b.date_end,CURDATE()) >= CURDATE() - ) = 0 THEN - -- ENVIAMOS CORREO AL BOSSFK - SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"No hay un contrato en vigor") INTO vBody; - CALL vn.mail_insert(vTo,vTo,'error al fichar',vBody); - CALL util.throw("No hay un contrato en vigor"); - END IF; + DROP TEMPORARY TABLE IF EXISTS tmp.worker2; + CREATE TEMPORARY TABLE tmp.worker2 + (PRIMARY KEY(workerFk)) + ENGINE = MEMORY + SELECT workerFk + FROM tmp.worker; - -- VERIFICAR DEPARTAMENTO - /*IF vTabletFk IS NOT NULL THEN - IF ( SELECT COUNT(*) - FROM vn.tabletDepartment td - JOIN vn.workerTimeControlUserInfo wtcu ON wtcu.departmentFk = td.departmentFk - WHERE td.tabletFk = vTabletFk AND wtcu.userFk = vUserFk - ) = 0 THEN - -- ENVIAMOS CORREO AL BOSSFK - SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"No perteneces a este departamento.") INTO vBody; - CALL vn.mail_insert(vTo,vTo,'error al fichar',vBody); - CALL util.throw("No perteneces a este departamento."); - END IF; - END IF;*/ - - SELECT IFNULL(dayBreak, vDayBreak) INTO vDayBreak - FROM postgresql.business b - JOIN postgresql.profile pr ON pr.profile_id = b.client_id - JOIN postgresql.person p ON p.person_id = pr.person_id - JOIN postgresql. business_labour bl ON b.business_id = bl.business_id - JOIN postgresql.professional_category pc ON bl.professional_category_id = pc.professional_category_id - WHERE p.id_trabajador = vUserFk AND - b.date_start <= DATE(vTimed) AND - IFNULL(b.date_end, DATE(vTimed)) >= DATE(vTimed); - -- VERIFICAR DESCANSO DIARIO - -- 12 / 9 horas dependiendo del valor de vDayBreak - IF UNIX_TIMESTAMP(vTimed) - UNIX_TIMESTAMP(vLastOut) < vDayBreak THEN - -- ENVIAMOS CORREO AL BOSSFK - SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"Descansos ", FORMAT(vDayBreak/3600,0) ," h") INTO vBody; - CALL vn.mail_insert(vTo,vTo,'error al fichar',vBody); - CALL util.throw(CONCAT("Descansos ", FORMAT(vDayBreak/3600,0) ," h")); - END IF; - - -- VERIFICAR FICHADAS IMPARES DEL ÚLTIMO DÍA QUE SE FICHÓ - IF (SELECT MOD(COUNT(*),2) -- <>0 - FROM vn.workerTimeControl - WHERE userFk = vUserFk AND - timed >= vLastIn - ) THEN - -- ENVIAMOS CORREO AL BOSSFK - SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"Dias con fichadas impares") INTO vBody; - CALL vn.mail_insert(vTo,vTo,'error al fichar',vBody); - CALL util.throw("Dias con fichadas impares"); - END IF; - -- VERIFICAR VACACIONES - SELECT cs.type INTO vCalendarStateType - FROM postgresql.calendar_employee ce - JOIN postgresql.business b USING(business_id) - JOIN postgresql.profile pr ON pr.profile_id = b.client_id - JOIN postgresql.person p ON p.person_id = pr.person_id - JOIN postgresql.calendar_state cs USING(calendar_state_id) - JOIN vn.worker w ON w.id = p.id_trabajador - WHERE ce.date = CURDATE() AND - cs.isAllowedToWork = FALSE AND - w.userFk = vUserFk - LIMIT 1; - - IF(LENGTH(vCalendarStateType)) THEN - -- ENVIAMOS CORREO AL BOSSFK - SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"Vacaciones") INTO vBody; - CALL vn.mail_insert(vTo,vTo,'error al fichar',vBody); - CALL util.throw(vCalendarStateType); - END IF; - - -- VERIFICAR DESCANSO SEMANAL - SET @vHasBreakWeek:= FALSE; - SET @vLastTimed:= UNIX_TIMESTAMP((vTimed - INTERVAL vWeekScope SECOND)); - - DROP TEMPORARY TABLE IF EXISTS tmp.trash; - CREATE TEMPORARY TABLE tmp.trash - SELECT IF(vWeekBreak-(UNIX_TIMESTAMP(timed)-@vLastTimed) <= 0, @vHasBreakWeek:=TRUE, TRUE) alias, - @vLastTimed:= UNIX_TIMESTAMP(timed) - FROM workerTimeControl - WHERE timed>= (vTimed - INTERVAL vWeekScope SECOND) AND - userFk= vUserFk AND - direction IN ('in','out') - ORDER BY timed ASC; - - IF UNIX_TIMESTAMP(vTimed) - UNIX_TIMESTAMP(vLastOut) < vWeekBreak AND @vHasBreakWeek = FALSE THEN -- REVISA SI EL DESCANSO SE HA REALIZADO DESPUÉS DE LA ÚLTIMA FICHADA - SET @vHasBreakWeek:= FALSE; - SET @vLastTimed:= UNIX_TIMESTAMP((vTimed - INTERVAL vWeekMaxScope SECOND)); - DROP TEMPORARY TABLE tmp.trash; - CREATE TEMPORARY TABLE tmp.trash - SELECT IF(vWeekMaxBreak-(UNIX_TIMESTAMP(timed)-@vLastTimed) <= 0, @vHasBreakWeek:=TRUE, TRUE) alias, - @vLastTimed:= UNIX_TIMESTAMP(timed) - FROM workerTimeControl - WHERE timed>= (vTimed - INTERVAL vWeekMaxScope SECOND) AND - userFk= vUserFk AND - direction IN ('in','out') - ORDER BY timed ASC; - IF UNIX_TIMESTAMP(vTimed) - UNIX_TIMESTAMP(vLastOut) < vWeekMaxBreak AND @vHasBreakWeek = FALSE THEN -- REVISA SI EL DESCANSO SE HA REALIZADO DESPUÉS DE LA ÚLTIMA FICHADA - -- ENVIAMOS CORREO AL BOSSFK - SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"Descansos ", FORMAT(vWeekMaxBreak/3600,0) ," h") INTO vBody; - CALL vn.mail_insert(vTo,vTo,'error al fichar',vBody); - CALL util.throw(CONCAT( "Descansos ", FORMAT(vWeekMaxBreak/3600,0) ," h")); - END IF; - -- ENVIAMOS CORREO AL BOSSFK - SELECT CONCAT(vUserName,' No ha podido fichar por el siguiente problema: ',"Descansos ", FORMAT(vWeekBreak/3600,0) ," h") INTO vBody; - CALL vn.mail_insert(vTo,vTo,'error al fichar',vBody); - CALL util.warn(CONCAT( "Descansos ", FORMAT(vWeekBreak/3600,0) ," h")); - END IF; - DROP TEMPORARY TABLE tmp.trash; + DROP TEMPORARY TABLE IF EXISTS tmp.workerWithoutShortWeekBreak; + CREATE TEMPORARY TABLE tmp.workerWithoutShortWeekBreak + SELECT sub2.userFk workerFk + FROM(SELECT sub.userFk, + IF(sub.userFk <> @lastUserFk, + @previousTimed:= sub.timed, + FALSE), + IF(sub.timed - @previousTimed >= vShortWeekBreak, + TRUE, + FALSE) hasShortWeekBreak, + @previousTimed:= sub.timed, + @lastUserFk:= sub.userFk + FROM ( + SELECT userFk, UNIX_TIMESTAMP(timed) timed + FROM workerTimeControl + WHERE timed BETWEEN vStarted AND vShortEnded + AND direction IN ('in', 'out') + UNION + SELECT w.workerFk, + UNIX_TIMESTAMP(IFNULL( + MIN(wtc.timed), + DATE_ADD(vShortEnded, INTERVAL vShortWeekBreak SECOND))) + FROM tmp.worker w + LEFT JOIN workerTimeControl wtc + ON wtc.userFk = w.workerFk + AND wtc.timed BETWEEN vShortEnded + AND DATE_ADD(vShortEnded, INTERVAL vShortWeekBreak SECOND) + GROUP BY w.workerFk + UNION + SELECT w.workerFk, + UNIX_TIMESTAMP(IFNULL( + MAX(wtc.timed), + DATE_SUB(vStarted, INTERVAL vShortWeekBreak SECOND))) + FROM tmp.worker2 w + LEFT JOIN workerTimeControl wtc + ON wtc.userFk = w.workerFk + AND wtc.timed BETWEEN + DATE_SUB(vStarted, INTERVAL vShortWeekBreak SECOND) + AND vStarted + GROUP BY w.workerFk + ORDER BY userFk, timed + LIMIT 10000000000000000000 + )sub + )sub2 + GROUP BY sub2.userFk + HAVING NOT SUM(hasShortWeekBreak); - -- Preguntar dirección de la fichada - IF UNIX_TIMESTAMP(vTimed) - UNIX_TIMESTAMP(vLastIn) >= vAskInOut AND (SELECT MOD(COUNT(*),2) - FROM vn.workerTimeControl WHERE userFk = vUserFk AND timed >= vLastIn) THEN - CALL util.warn("AskInOut"); - END IF ; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `workerTimeControl_check__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControl_check__`(vUserFk INT, vDated DATE,vTabletFk VARCHAR(100)) -proc: BEGIN -/** - * Verifica si el empleado puede fichar en el momento actual, si puede fichar llama a workerTimeControlAdd - * - * @param vUserFk Identificador del trabajador - * @return Retorna si encuentra un problema 'odd','maxTimeWork','breakDay','breakWeek' ; - * En caso de tener algun problema retorna el primero que encuentra - */ - DECLARE vLastIn DATETIME ; - DECLARE vLastOut DATETIME ; - DECLARE vDayWorkMax INT; - DECLARE vDayBreak INT; - DECLARE vWeekBreak INT ; - DECLARE vWeekScope INT; - DECLARE vDayStayMax INT; - DECLARE vProblem VARCHAR(20) DEFAULT NULL; - DECLARE vTimedWorked INT; - DECLARE vCalendarStateType VARCHAR(20) DEFAULT NULL; - DECLARE vDepartmentFk INT; - DECLARE vTo VARCHAR(50) DEFAULT NULL; - DECLARE vUserName VARCHAR(50) DEFAULT NULL; - DECLARE vBody VARCHAR(255) DEFAULT NULL; - - SELECT dayBreak, weekBreak, weekScope, dayWorkMax, dayStayMax - INTO vDayBreak, vWeekBreak, vWeekScope, vDayWorkMax, vDayStayMax - FROM workerTimeControlParams; + -- Descanso largo en las 2 siguientes semanas + DROP TEMPORARY TABLE tmp.worker; + CREATE TEMPORARY TABLE tmp.worker + (PRIMARY KEY(workerFk)) + ENGINE = MEMORY + SELECT workerFk + FROM tmp.workerWithoutShortWeekBreak; - SELECT MAX(timed) INTO vLastIn - FROM workerTimeControl - WHERE userFk = vUserFk - AND direction = 'in'; - - SELECT MAX(timed) INTO vLastOut - FROM workerTimeControl - WHERE userFk = vUserFk - AND direction = 'out'; - - SELECT CONCAT(u.name,'@verdnatura.es') INTO vTo - FROM account.user u - WHERE u.id = (SELECT bossFk FROM worker WHERE id = vUserFk); - - SELECT CONCAT(firstName,' ',lastName) INTO vUserName - FROM worker w - WHERE w.id = vUserFk; - - - IF UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(vLastIn) > vDayStayMax THEN -- NUEVA JORNADA - - -- VERIFICAR DESCANSO DIARIO - IF UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(vLastOut) < vDayBreak THEN - SELECT "Descansos 12 h" AS problem; - -- ENVIAMOS CORREO AL BOSSFK - SELECT CONCAT(vUserName,' No a podido fichar por el siguiente problema: ',"Descansos 12 h") INTO vBody; - CALL mail_insert(vTo,vTo,'error al fichar',vBody); - LEAVE proc; - END IF; - - -- VERIFICAR FICHADAS IMPARES DEL ÚLTIMO DÍA QUE SE FICHÓ - IF (SELECT MOD(COUNT(*),2) -- <>0 - FROM workerTimeControl - WHERE userFk = vUserFk - AND timed >= vLastIn - ) THEN - SELECT "Dias con fichadas impares" AS problem; - -- ENVIAMOS CORREO AL BOSSFK - SELECT CONCAT(vUserName,' No a podido fichar por el siguiente problema: ',"Dias con fichadas impares") INTO vBody; - CALL mail_insert(vTo,vTo,'error al fichar',vBody); - LEAVE proc; - END IF; - - -- VERIFICAR VACACIONES - SELECT cs.type INTO vCalendarStateType - FROM postgresql.calendar_employee ce - JOIN postgresql.business b USING(business_id) - JOIN postgresql.profile pr ON pr.profile_id = b.client_id - JOIN postgresql.person p ON p.person_id = pr.person_id - JOIN postgresql.calendar_state cs USING(calendar_state_id) - JOIN worker w ON w.id = p.id_trabajador - WHERE ce.date = CURDATE() - AND cs.isAllowedToWork = FALSE - AND w.userFk = vUserFk - LIMIT 1; - - IF(LENGTH(vCalendarStateType)) THEN - SELECT vCalendarStateType AS problem; - -- ENVIAMOS CORREO AL BOSSFK - SELECT CONCAT(vUserName,' No a podido fichar por el siguiente problema: ',"Vacaciones") INTO vBody; - CALL mail_insert(vTo,vTo,'error al fichar',vBody); - LEAVE proc; - - END IF; - - - -- VERIFICAR CONTRATO EN VIGOR - IF (SELECT COUNT(*) - FROM postgresql.business b - JOIN postgresql.profile pr ON pr.profile_id = b.client_id - JOIN postgresql.person p ON p.person_id = pr.person_id - JOIN worker w ON w.id = p.id_trabajador - WHERE w.userFk = vUserFk - AND b.date_start <= vDated - AND IFNULL(b.date_end,vDated) >= vDated - ) = 0 THEN - SELECT "No hay un contrato en vigor" AS problem; - -- ENVIAMOS CORREO AL BOSSFK - SELECT CONCAT(vUserName,' No a podido fichar por el siguiente problema: ',"No hay un contrato en vigor") INTO vBody; - CALL mail_insert(vTo,vTo,'error al fichar',vBody); - LEAVE proc; - - END IF; + DROP TEMPORARY TABLE tmp.worker2; + CREATE TEMPORARY TABLE tmp.worker2 + (PRIMARY KEY(workerFk)) + ENGINE = MEMORY + SELECT workerFk + FROM tmp.workerWithoutShortWeekBreak; - -- VERIFICAR DESCANSO SEMANAL - SET @vHasBreakWeek:= FALSE; - SET @vLastTimed:= UNIX_TIMESTAMP((NOW() - INTERVAL vWeekScope SECOND)); - - DROP TEMPORARY TABLE IF EXISTS tmp.trash; - CREATE TEMPORARY TABLE tmp.trash - SELECT IF(vWeekBreak-(UNIX_TIMESTAMP(timed)-@vLastTimed) <= 0, @vHasBreakWeek:=TRUE, TRUE) alias, - @vLastTimed:= UNIX_TIMESTAMP(timed) - FROM workerTimeControl - WHERE timed>= (NOW() - INTERVAL vWeekScope SECOND) - AND userFk= vUserFk - AND direction IN ('in','out') - ORDER BY timed ASC; - - IF UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(vLastOut) < vWeekBreak AND @vHasBreakWeek = FALSE THEN -- REVISA SI EL DESCANSO SE HA REALIZADO DESPUÉS DE LA ÚLTIMA FICHADA - SELECT "Descansos 36 h" AS problem; - -- ENVIAMOS CORREO AL BOSSFK - SELECT CONCAT(vUserName,' No a podido fichar por el siguiente problema: ',"Descansos 36 h") INTO vBody; - CALL mail_insert(vTo,vTo,'error al fichar',vBody); - LEAVE proc; - END IF; - - DROP TEMPORARY TABLE tmp.trash; - - ELSE -- DIA ACTUAL - - -- VERIFICA QUE EL TIEMPO EFECTIVO NO SUPERE EL MÁXIMO - SELECT IFNULL(SUM(if( mod(wtc.order,2)=1, -UNIX_TIMESTAMP(timed), UNIX_TIMESTAMP(timed))),0) - IF( MOD(COUNT(*),2), UNIX_TIMESTAMP(NOW()), 0) INTO vTimedWorked - FROM workerTimeControl wtc - WHERE userFk = vUserFk - AND timed >= vLastIn - ORDER BY timed; + DROP TEMPORARY TABLE IF EXISTS tmp.workerWithoutWeekBreak; + CREATE TEMPORARY TABLE tmp.workerWithoutWeekBreak + (PRIMARY KEY(workerFk)) + ENGINE = MEMORY + SELECT sub2.userFk workerFk + FROM(SELECT userFk, + IF(userFk <> @lastUserFk, + @previousTimed:= timed, + TRUE), + IF(timed - @previousTimed >= vLongWeekBreak, + TRUE, + FALSE) hasLongWeekBreak, + @previousTimed:= timed, + @lastUserFk:= userFk + FROM (SELECT userFk, UNIX_TIMESTAMP(timed) timed + FROM workerTimeControl wtc + JOIN tmp.workerWithoutShortWeekBreak wws ON wws.workerFk = wtc.userFk + WHERE timed BETWEEN vStarted AND vLongEnded + AND direction IN ('in', 'out') + UNION + SELECT w.workerFk, + UNIX_TIMESTAMP(IFNULL(MIN(wtc.timed), + DATE_ADD(vLongEnded, INTERVAL vLongWeekBreak SECOND))) + FROM tmp.worker w + LEFT JOIN workerTimeControl wtc + ON wtc.userFk = w.workerFk + AND timed BETWEEN vLongEnded + AND DATE_ADD(vLongEnded, INTERVAL vLongWeekBreak SECOND) + GROUP BY w.workerFk + UNION + SELECT w.workerFk, + UNIX_TIMESTAMP(IFNULL(MAX(wtc.timed), + DATE_SUB(vStarted, INTERVAL vLongWeekBreak SECOND))) + FROM tmp.worker2 w + LEFT JOIN workerTimeControl wtc + ON wtc.userFk = w.workerFk + AND timed BETWEEN DATE_SUB(vStarted, INTERVAL vLongWeekBreak SECOND) + AND vStarted + GROUP BY w.workerFk + ORDER BY userFk, timed + LIMIT 10000000000000000000 + )sub + )sub2 + GROUP BY userFk + HAVING NOT SUM(hasLongWeekBreak); - IF vTimedWorked > vDayWorkMax THEN - SELECT "Jornadas" AS problem; - -- ENVIAMOS CORREO AL BOSSFK - SELECT CONCAT(vUserName,' No a podido fichar por el siguiente problema: ',"Jornadas") INTO vBody; - CALL mail_insert(vTo,vTo,'error al fichar',vBody); - LEAVE proc; - END IF; - - END IF; - - -- VERIFICAR DEPARTAMENTO - IF vTabletFk IS NOT NULL THEN - SELECT wtcu.departmentFk INTO vDepartmentFk - FROM workerTimeControlUserInfo wtcu - WHERE wtcu.userFk = vUserFk; - IF (SELECT COUNT(td.tabletFk) - FROM tabletDepartment td - WHERE td.tabletFk = vTabletFk AND td.departmentFk = vDepartmentFk - ) = 0 THEN - SELECT "No perteneces a este departamento." AS problem; - -- ENVIAMOS CORREO AL BOSSFK - SELECT CONCAT(vUserName,' No a podido fichar por el siguiente problema: ',"No perteneces a este departamento.") INTO vBody; - CALL mail_insert(vTo,vTo,'error al fichar',vBody); - LEAVE proc; - END IF; - END IF; - + DROP TEMPORARY TABLE tmp.workerWithoutShortWeekBreak, tmp.worker, tmp.worker2; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -88030,19 +74353,25 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControl_clockIn`(vWorker INT, vTimed DATETIME, vDirection VARCHAR(10)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControl_clockIn`( + vWorker INT, + vTimed DATETIME, + vDirection VARCHAR(10)) BEGIN /** * Verifica si el empleado puede fichar * @param vWorker Identificador del trabajador - * @param vTimed valor de la fichada, IF vTimed IS NULL vTimed = NOW() - * @param vDirection solo se pueden pasa los valores del campo workerTimeControl.direction ENUM('in', 'out', 'middle') - * @return Si todo es correcto, retorna el número de id la tabla workerTimeControl. Si hay algún problema, devuelve el mesaje a que se debe mostrar al usuario - * Solo retorna el primer problema, en caso de no ocurrir ningún error se añadirá fichada a la tabla vn.workerTimeControl + * @param vTimed valor de la fichada, IF vTimed IS NULL vTimed = util.VN_NOW() + * @param vDirection solo se pueden pasa los valores del campo + * workerTimeControl.direction ENUM('in', 'out', 'middle') + * @return Si todo es correcto, retorna el número de id la tabla workerTimeControl. + * Si hay algún problema, devuelve el mesaje a que se debe mostrar al usuario + * Solo retorna el primer problema, en caso de no ocurrir ningún error se añadirá + * fichada a la tabla vn.workerTimeControl */ DECLARE vLastIn DATETIME; DECLARE vLastOut DATETIME; @@ -88062,48 +74391,45 @@ BEGIN DECLARE vDated DATE; DECLARE vIsAllowedToWork VARCHAR(50); DECLARE vDepartmentFk INT; - DECLARE vTimedLoop INT; - DECLARE vTimedLoopPrevious INT; + DECLARE vTimedLoop BIGINT; + DECLARE vTimedLoopPrevious BIGINT; DECLARE vHasBreakWeek BOOLEAN DEFAULT FALSE; DECLARE vManual BOOLEAN DEFAULT TRUE; DECLARE vDone INT DEFAULT FALSE; DECLARE vCursor CURSOR FOR - SELECT UNIX_TIMESTAMP(NOW() - INTERVAL vGap SECOND) - UNION - SELECT UNIX_TIMESTAMP(NOW()) - UNION - (SELECT UNIX_TIMESTAMP(timed) - FROM workerTimeControl - WHERE timed BETWEEN (vTimed - INTERVAL vGap SECOND) AND vTimed AND - userFk = vWorker AND - direction IN ('in', 'out') - ORDER BY timed ASC); - - DECLARE vCursor2 CURSOR FOR - SELECT UNIX_TIMESTAMP(NOW() - INTERVAL vGap SECOND) - UNION - SELECT UNIX_TIMESTAMP(NOW()) + SELECT UNIX_TIMESTAMP(vTimed) timed UNION SELECT UNIX_TIMESTAMP(timed) - FROM workerTimeControl - WHERE timed BETWEEN vTimed AND (vTimed - INTERVAL vGap SECOND) AND - userFk = vWorker AND - direction IN ('in', 'out') - ORDER BY timed ASC; - + FROM workerTimeControl + WHERE timed BETWEEN (vTimed - INTERVAL vGap SECOND) AND vTimed + AND userFk = vWorker + AND direction IN ('in', 'out') + ORDER BY timed ASC; + + DECLARE vCursor2 CURSOR FOR + SELECT UNIX_TIMESTAMP(vTimed) timed + UNION + SELECT UNIX_TIMESTAMP(timed) + FROM workerTimeControl + WHERE timed BETWEEN vTimed AND (vTimed + INTERVAL vGap SECOND) + AND userFk = vWorker + AND direction IN ('in', 'out') + ORDER BY timed ASC; + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - DECLARE EXIT HANDLER FOR SQLSTATE '45000' + DECLARE EXIT HANDLER FOR SQLSTATE '45000' BEGIN - SELECT CONCAT(u.name, '@verdnatura.es'), CONCAT(w.firstName, ' ', w.lastName) + SELECT CONCAT(u.name, '@verdnatura.es'), + CONCAT(w.firstName, ' ', w.lastName) INTO vMailTo, vUserName FROM account.user u - JOIN worker w ON w.bossFk = u.id + JOIN worker w ON w.bossFk = u.id WHERE w.id = vWorker; - CASE vErrorCode + CASE vErrorCode WHEN 'IS_NOT_ALLOWED_FUTURE' THEN SELECT 'No se permite fichar a futuro' INTO vErrorMessage; WHEN 'INACTIVE_BUSINESS' THEN @@ -88113,235 +74439,251 @@ BEGIN WHEN 'ODD_WORKERTIMECONTROL' THEN SELECT 'Fichadas impares' INTO vErrorMessage; WHEN 'BREAK_DAY' THEN - SELECT CONCAT('Descanso diario ', FORMAT(vDayBreak/3600, 0) , 'h.') INTO vErrorMessage; + SELECT CONCAT('Descanso diario ', FORMAT(vDayBreak/3600, 0), 'h.') + INTO vErrorMessage; WHEN 'BREAK_WEEK' THEN - SELECT CONCAT('Descanso semanal ', + SELECT CONCAT('Descanso semanal ', FORMAT(vShortWeekBreak / 3600,0) ,'h. / ', FORMAT(vLongWeekBreak / 3600, 0) ,'h.') INTO vErrorMessage; WHEN 'WRONG_DIRECTION' THEN SELECT 'Dirección incorrecta' INTO vErrorMessage; - ELSE + ELSE SELECT 'Error sin definir'INTO vErrorMessage; END CASE; - + SELECT vErrorMessage `error`; - SELECT CONCAT(vUserName, ' no ha podido fichar por el siguiente problema: ', vErrorMessage) INTO vErrorMessage; + SELECT CONCAT(vUserName, + ' no ha podido fichar por el siguiente problema: ', + vErrorMessage) + INTO vErrorMessage; CALL mail_insert( vMailTo, vMailTo, 'Error al fichar', vErrorMessage); - + END; - IF (vTimed IS NULL) THEN - SET vTimed = NOW(); + IF (vTimed IS NULL) THEN + SET vTimed = util.VN_NOW(); SET vManual = FALSE; END IF; - + SET vDated = DATE(vTimed); - - SELECT IF(pc.category_name = 'Conductor +3500kg', wc.dayBreakDriver, wc.dayBreak), - wc.shortWeekBreak, - wc.longWeekBreak, - wc.weekScope - INTO vDayBreak, - vShortWeekBreak, - vLongWeekBreak, - vWeekScope - FROM workerLabour w - JOIN postgresql.business_labour bl ON bl.business_id = w.businessFk - JOIN postgresql.professional_category pc ON pc.professional_category_id = bl.professional_category_id + + SELECT IF(pc.category_name = 'Conductor +3500kg', + wc.dayBreakDriver, + wc.dayBreak), + wc.shortWeekBreak, + wc.longWeekBreak, + wc.weekScope + INTO vDayBreak, + vShortWeekBreak, + vLongWeekBreak, + vWeekScope + FROM business b + JOIN postgresql.professional_category pc + ON pc.professional_category_id = b.workerBusinessProfessionalCategoryFk JOIN workerTimeControlConfig wc ON TRUE - WHERE w.workerFk = vWorker - AND vDated BETWEEN w.started AND IFNULL(w.ended, vDated); + WHERE b.workerFk = vWorker + AND vDated BETWEEN b.started AND IFNULL(b.ended, vDated); SELECT timed INTO vLastIn - FROM workerTimeControl + FROM workerTimeControl WHERE userFk = vWorker - AND direction = 'in' + AND direction = 'in' AND timed < vTimed ORDER BY timed DESC - LIMIT 1; + LIMIT 1; SELECT timed INTO vLastOut - FROM workerTimeControl + FROM workerTimeControl WHERE userFk = vWorker - AND direction = 'out' + AND direction = 'out' AND timed < vTimed ORDER BY timed DESC LIMIT 1; SELECT timed INTO vNextIn - FROM workerTimeControl + FROM workerTimeControl WHERE userFk = vWorker - AND direction = 'in' + AND direction = 'in' AND timed > vTimed ORDER BY timed ASC LIMIT 1; SELECT direction INTO vNextDirection - FROM workerTimeControl + FROM workerTimeControl WHERE userFk = vWorker AND timed > vTimed ORDER BY timed ASC LIMIT 1; - + SELECT direction INTO vLastDirection - FROM workerTimeControl + FROM workerTimeControl WHERE userFk = vWorker AND timed < vTimed ORDER BY timed DESC - LIMIT 1; + LIMIT 1; -- FICHADAS A FUTURO - IF vTimed > DATE_ADD(NOW(), INTERVAL 60 SECOND) THEN + IF vTimed > DATE_ADD(util.VN_NOW(), INTERVAL 60 SECOND) THEN SET vErrorCode = 'IS_NOT_ALLOWED_FUTURE'; - CALL util.throw(vErrorCode); + CALL util.throw(vErrorCode); END IF; - + -- CONTRATO EN VIGOR IF vDayBreak IS NULL THEN SET vErrorCode = 'INACTIVE_BUSINESS'; - CALL util.throw(vErrorCode); + CALL util.throw(vErrorCode); END IF; -- VERIFICAR SI ESTÁ PERMITIDO TRABAJAR CALL timeBusiness_calculateByWorker(vWorker, vDated, vDated); - SELECT isAllowedToWork INTO vIsAllowedToWork + SELECT isAllowedToWork INTO vIsAllowedToWork FROM tmp.timeBusinessCalculate; DROP TEMPORARY TABLE tmp.timeBusinessCalculate; - + IF NOT vIsAllowedToWork THEN - SET vErrorCode = 'IS_NOT_ALLOWED_WORK'; + SET vErrorCode = 'IS_NOT_ALLOWED_WORK'; CALL util.throw(vErrorCode); END IF; - - -- DIRECCION CORRECTA - CALL vn.workerTimeControl_direction(vWorker, vTimed); - IF (SELECT IF(IF(option1 IN ('inMiddle', 'outMiddle'), 'middle', option1) <> vDirection - AND IF(option2 IN ('inMiddle', 'outMiddle'), 'middle', IFNULL(option2, '')) <> vDirection, TRUE , FALSE) - FROM tmp.workerTimeControlDirection) THEN + + -- DIRECCION CORRECTA + CALL workerTimeControl_direction(vWorker, vTimed); + IF (SELECT + IF(IF(option1 IN ('inMiddle', 'outMiddle'), + 'middle', + option1) <> vDirection + AND IF(option2 IN ('inMiddle', 'outMiddle'), + 'middle', + IFNULL(option2, '')) <> vDirection, + TRUE , + FALSE) + FROM tmp.workerTimeControlDirection + ) THEN SET vIsError = TRUE; END IF; - + DROP TEMPORARY TABLE tmp.workerTimeControlDirection; IF vIsError = TRUE THEN - SET vErrorCode = 'WRONG_DIRECTION'; - CALL util.throw(vErrorCode); - END IF; - - -- FICHADAS IMPARES - IF (SELECT IF(vDirection = 'in', MOD(COUNT(*), 2) , IF (vDirection = 'out', NOT MOD(COUNT(*), 2), FALSE)) - FROM workerTimeControl - WHERE userFk = vWorker - AND timed BETWEEN vLastIn AND vTimed - ) THEN - SET vErrorCode = 'ODD_WORKERTIMECONTROL'; - CALL util.throw(vErrorCode); + SET vErrorCode = 'WRONG_DIRECTION'; + CALL util.throw(vErrorCode); END IF; - -- DESCANSO DIARIO + -- FICHADAS IMPARES + IF (SELECT IF(vDirection = 'in', + MOD(COUNT(*), 2) , + IF (vDirection = 'out', NOT MOD(COUNT(*), 2), FALSE)) + FROM workerTimeControl + WHERE userFk = vWorker + AND timed BETWEEN vLastIn AND vTimed + ) THEN + SET vErrorCode = 'ODD_WORKERTIMECONTROL'; + CALL util.throw(vErrorCode); + END IF; + + -- DESCANSO DIARIO CASE vDirection WHEN 'in' THEN - IF UNIX_TIMESTAMP(vTimed) - UNIX_TIMESTAMP(vLastOut) <= vDayBreak THEN + IF UNIX_TIMESTAMP(vTimed) - UNIX_TIMESTAMP(vLastOut) <= vDayBreak THEN SET vIsError = TRUE; END IF; WHEN 'out' THEN - IF UNIX_TIMESTAMP(vNextIn) - UNIX_TIMESTAMP(vTimed) <= vDayBreak THEN + IF UNIX_TIMESTAMP(vNextIn) - UNIX_TIMESTAMP(vTimed) <= vDayBreak THEN SET vIsError = TRUE; END IF; ELSE BEGIN END; END CASE; - + IF vIsError THEN - SET vErrorCode = 'BREAK_DAY'; - CALL util.throw(vErrorCode); + SET vErrorCode = 'BREAK_DAY'; + CALL util.throw(vErrorCode); END IF; -- VERIFICAR DESCANSO SEMANAL - IF (vDirection IN('in', 'out')) THEN - -- VERIFICA DESCANSO CORTO EN LA ÚLTIMA SEMANA + IF (vDirection IN('in', 'out')) THEN + -- VERIFICA DESCANSO CORTO EN LA ÚLTIMA SEMANA SET vGap = vWeekScope; SET vTimedLoopPrevious = UNIX_TIMESTAMP((vTimed - INTERVAL vGap SECOND)); SET vDone = FALSE; OPEN vCursor; l:LOOP FETCH vCursor INTO vTimedLoop; - IF vDone THEN + IF vDone THEN LEAVE l; END IF; - IF vShortWeekBreak - (vTimedLoop - vTimedLoopPrevious) < 0 THEN + IF vShortWeekBreak - (vTimedLoop - vTimedLoopPrevious) <= 0 THEN SET vHasBreakWeek = TRUE; LEAVE l; END IF; SET vTimedLoopPrevious = vTimedLoop; - END LOOP l; + END LOOP l; CLOSE vCursor; -- VERIFICA DESCANSO LARGO EN LA ÚLTIMAS 2 SEMANAS IF NOT vHasBreakWeek THEN SET vGap = vWeekScope * 2; - SET vTimedLoopPrevious = UNIX_TIMESTAMP((vTimed - INTERVAL vGap SECOND)); + SET vTimedLoopPrevious = UNIX_TIMESTAMP(vTimed - INTERVAL vGap SECOND); SET vDone = FALSE; OPEN vCursor; l:LOOP FETCH vCursor INTO vTimedLoop; - IF vDone THEN + IF vDone THEN LEAVE l; END IF; - IF vLongWeekBreak - (vTimedLoop - vTimedLoopPrevious) < 0 THEN - SET vHasBreakWeek = TRUE; - LEAVE l; - END IF; - SET vTimedLoopPrevious = vTimedLoop; - END LOOP l; - CLOSE vCursor; - END IF; - - IF vManual THEN - -- VERIFICA DESCANSO CORTO EN LA PRÓXIMA SEMANA - SET vGap = vWeekScope; - SET vTimedLoopPrevious = vTimed; - SET vDone = FALSE; - OPEN vCursor; - l:LOOP - FETCH vCursor INTO vTimedLoop; - IF vDone THEN - LEAVE l; - END IF; - IF vShortWeekBreak - (vTimedLoop - vTimedLoopPrevious) < 0 THEN + IF vLongWeekBreak - (vTimedLoop - vTimedLoopPrevious) <= 0 THEN SET vHasBreakWeek = TRUE; LEAVE l; END IF; SET vTimedLoopPrevious = vTimedLoop; - END LOOP l; + END LOOP l; CLOSE vCursor; + END IF; + + IF vManual THEN + -- VERIFICA DESCANSO CORTO EN LA PRÓXIMA SEMANA + SET vGap = vWeekScope; + SET vTimedLoopPrevious = vTimed; + SET vDone = FALSE; + OPEN vCursor2; + l:LOOP + FETCH vCursor2 INTO vTimedLoop; + IF vDone THEN + LEAVE l; + END IF; + IF vShortWeekBreak - (vTimedLoop - vTimedLoopPrevious) <= 0 THEN + SET vHasBreakWeek = TRUE; + LEAVE l; + END IF; + SET vTimedLoopPrevious = vTimedLoop; + END LOOP l; + CLOSE vCursor2; -- VERIFICA DESCANSO LARGO EN LAS PRÓXIMAS 2 SEMANAS IF NOT vHasBreakWeek THEN SET vGap = vWeekScope * 2; SET vTimedLoopPrevious = vTimed; SET vDone = FALSE; - OPEN vCursor; + OPEN vCursor2; l:LOOP - FETCH vCursor INTO vTimedLoop; - IF vDone THEN + FETCH vCursor2 INTO vTimedLoop; + IF vDone THEN LEAVE l; END IF; - IF vShortWeekBreak - (vTimedLoop - vTimedLoopPrevious) < 0 THEN + IF vShortWeekBreak - (vTimedLoop - vTimedLoopPrevious) <= 0 THEN SET vHasBreakWeek = TRUE; LEAVE l; END IF; SET vTimedLoopPrevious = vTimedLoop; - END LOOP l; - CLOSE vCursor; + END LOOP l; + CLOSE vCursor2; END IF; END IF; IF NOT vHasBreakWeek THEN - SET vErrorCode = 'BREAK_WEEK'; - CALL util.throw(vErrorCode); - END IF; + SET vErrorCode = 'BREAK_WEEK'; + CALL util.throw(vErrorCode); + END IF; END IF; - + -- SE PERMITE FICHAR INSERT INTO workerTimeControl(userFk, timed, direction, manual) VALUES(vWorker, vTimed, vDirection, vManual); - + SELECT LAST_INSERT_ID() id; END ;; DELIMITER ; @@ -88359,55 +74701,58 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControl_direction`(vWorkerFk VARCHAR(10), vTimed DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControl_direction`(vWorkerFk VARCHAR(10), vTimed DATETIME) BEGIN /** * Devuelve que direcciones de fichadas son lógicas a partir de la anterior fichada * @param vWorkerFk Identificador del trabajador * @return (option1, option2) - * Los valores posibles de retorno son ('in', 'inMiddle', 'outMiddle', 'out') + * Los valores posibles de retorno son ('in', 'inMiddle', 'outMiddle', 'out') */ DECLARE vLastIn DATETIME ; DECLARE vIsMiddleOdd BOOLEAN ; - IF (vTimed IS NULL) THEN - SET vTimed = NOW(); + IF (vTimed IS NULL) THEN + SET vTimed = util.VN_NOW(); END IF; - + SELECT timed INTO vLastIn - FROM workerTimeControl + FROM workerTimeControl WHERE userFk = vWorkerFk - AND direction = 'in' + AND direction = 'in' AND timed < vTimed ORDER BY timed DESC LIMIT 1; - + SELECT (COUNT(*)mod 2 = 1) INTO vIsMiddleOdd - FROM workerTimeControl + FROM workerTimeControl WHERE userFk = vWorkerFk - AND direction = 'middle' - AND timed BETWEEN vLastIn AND NOW(); + AND direction = 'middle' + AND timed BETWEEN vLastIn AND util.VN_NOW(); DROP TEMPORARY TABLE IF EXISTS tmp.workerTimeControlDirection; - CREATE TEMPORARY TABLE tmp.workerTimeControlDirection - SELECT CASE WHEN w.direction ='in' THEN 'inMiddle' - WHEN w.direction = 'out' THEN 'in' - WHEN w.direction = 'middle' AND vIsMiddleOdd THEN 'outMiddle' - WHEN w.direction IS NULL THEN 'in' - ELSE 'inMiddle' - END option1, - CASE WHEN w.direction ='in' THEN 'out' - WHEN w.direction = 'out' THEN NULL - WHEN w.direction = 'middle' AND vIsMiddleOdd THEN NULL - WHEN w.direction IS NULL THEN NULL - ELSE 'out' - END option2 - FROM workerTimeControl w - WHERE w.timed <= vTimed - AND w.userFk = vWorkerFk - ORDER BY w.timed DESC - LIMIT 1; + SELECT IF(isCorrect, option1, NULL) option1, + IF(isCorrect, option2, NULL) option2 + FROM( SELECT IF(w.direction <> 'out' AND (UNIX_TIMESTAMP(vTimed) - UNIX_TIMESTAMP(w.timed) > wc.dayBreak), FALSE, TRUE) isCorrect, + CASE WHEN w.direction ='in' THEN 'inMiddle' + WHEN w.direction = 'out' THEN 'in' + WHEN w.direction = 'middle' AND vIsMiddleOdd THEN 'outMiddle' + WHEN w.direction IS NULL THEN 'in' + ELSE 'inMiddle' + END option1, + CASE WHEN w.direction ='in' THEN 'out' + WHEN w.direction = 'out' THEN NULL + WHEN w.direction = 'middle' AND vIsMiddleOdd THEN NULL + WHEN w.direction IS NULL THEN NULL + ELSE 'out' + END option2 + FROM workerTimeControl w + JOIN workerTimeControlConfig wc ON TRUE + WHERE w.timed <= vTimed + AND w.userFk = vWorkerFk + ORDER BY w.timed DESC + LIMIT 1)sub; IF (SELECT IF(COUNT(*)=0, TRUE, FALSE) FROM tmp.workerTimeControlDirection ) THEN INSERT INTO tmp.workerTimeControlDirection (option1, option2) @@ -88426,97 +74771,85 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControl_getClockIn`(vUserFk INT, vDated DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControl_getClockIn`( + vUserFk INT, + vDated DATE) BEGIN - /** * Muestra una tabla con los 7 días inmediatamente anteriores a la fecha proporcionada - * y las fichadas de cada dia, en columnas por día - * + * y las fichadas de cada día, en columnas por día + * @param vUserFk Identificador del trabajador + * @param vDated Fecha proporcionada */ + CALL timeControl_calculateByWorker( + vUserFk, + DATE_SUB(vDated, INTERVAL 6 DAY), util.dayEnd(vDated)); - CALL workerTimeControl_setOrder(vUserFk,TIMESTAMPADD(DAY,-8,vDated),vDated); + SET @position := 0; + SET @lastDated := NULL; - DROP TEMPORARY TABLE IF EXISTS tmp.workerWeekTiming; - CREATE TEMPORARY TABLE tmp.workerWeekTiming - SELECT orden `orden`, - max(hace7dias) 7_dias_antes, - max(hace6dias) 6_dias_antes, - max(hace5dias) 5_dias_antes, - max(hace4dias) 4_dias_antes, - max(hace3dias) 3_dias_antes, - max(antesdeayer) 2_dias_antes, - max(ayer) 1_dia_antes, - max(hoy) mismo_dia - FROM - ( - SELECT IF(dias = 7, fichada, '') as hace7dias, - IF(dias = 6, fichada, '') as hace6dias, - IF(dias = 5, fichada, '') as hace5dias, - IF(dias = 4, fichada, '') as hace4dias, - IF(dias = 3, fichada, '') as hace3dias, - IF(dias = 2, fichada, '') as antesdeayer, - IF(dias = 1, fichada, '') as ayer, - IF(dias = 0, fichada, '') as hoy, - orden + SELECT * + FROM( SELECT MAX(6daysAgo) 6daysAgo, + MAX(6daysAgoDirection) 6daysAgoDirection, + MAX(5daysAgo) 5daysAgo, + MAX(5daysAgoDirection) 5daysAgoDirection, + MAX(4daysAgo) 4daysAgo, + MAX(4daysAgoDirection) 4daysAgoDirection, + MAX(3daysAgo) 3daysAgo, + MAX(3daysAgoDirection) 3daysAgoDirection, + MAX(2daysAgo) 2daysAgo, + MAX(2daysAgoDirection) 2daysAgoDirection, + MAX(1daysAgo) 1daysAgo, + MAX(1daysAgoDirection) 1daysAgoDirection, + MAX(0daysAgo) 0daysAgo, + MAX(0daysAgoDirection) 0daysAgoDirection + FROM(SELECT IF(daysAgo = 6, timed, '') 6daysAgo, + IF(daysAgo = 5, timed, '') 5daysAgo, + IF(daysAgo = 4, timed, '') 4daysAgo, + IF(daysAgo = 3, timed, '') 3daysAgo, + IF(daysAgo = 2, timed, '') 2daysAgo, + IF(daysAgo = 1, timed, '') 1daysAgo, + IF(daysAgo = 0, timed, '') 0daysAgo, + IF(daysAgo = 6, direction, '') 6daysAgoDirection, + IF(daysAgo = 5, direction, '') 5daysAgoDirection, + IF(daysAgo = 4, direction, '') 4daysAgoDirection, + IF(daysAgo = 3, direction, '') 3daysAgoDirection, + IF(daysAgo = 2, direction, '') 2daysAgoDirection, + IF(daysAgo = 1, direction, '') 1daysAgoDirection, + IF(daysAgo = 0, direction, '') 0daysAgoDirection, - FROM - ( - SELECT `order` as orden, datediff(vDated, timed) as dias, date(timed) as fecha, TIME_FORMAT(timed,'%H:%i') as fichada - FROM vn.workerTimeControl wtc - WHERE userFk = vUserFk - AND timed >= TIMESTAMPADD(DAY, -7, vDated) - ) sub - )sub2 - GROUP BY orden; - - DROP TEMPORARY TABLE IF EXISTS tmp.workerWeekTiming_Aux; - CREATE TEMPORARY TABLE tmp.workerWeekTiming_Aux - SELECT * FROM tmp.workerWeekTiming; - - INSERT INTO tmp.workerWeekTiming( 7_dias_antes, 6_dias_antes, 5_dias_antes, 4_dias_antes, 3_dias_antes, 2_dias_antes, 1_dia_antes, mismo_dia) - VALUES('total','','','','','','',''); - - INSERT INTO tmp.workerWeekTiming( orden, 7_dias_antes, 6_dias_antes, 5_dias_antes, 4_dias_antes, 3_dias_antes, 2_dias_antes, 1_dia_antes, mismo_dia) - SELECT 0, - IFNULL(DATE_FORMAT(SEC_TO_TIME(SUM(IF(orden MOD 2, - TIME_TO_SEC(7_dias_antes), TIME_TO_SEC(7_dias_antes)))),'%H:%i'),''), - IFNULL(DATE_FORMAT(SEC_TO_TIME(SUM(IF(orden MOD 2, - TIME_TO_SEC(6_dias_antes), TIME_TO_SEC(6_dias_antes)))),'%H:%i'),''), - IFNULL(DATE_FORMAT(SEC_TO_TIME(SUM(IF(orden MOD 2, - TIME_TO_SEC(5_dias_antes), TIME_TO_SEC(5_dias_antes)))),'%H:%i'),''), - IFNULL(DATE_FORMAT(SEC_TO_TIME(SUM(IF(orden MOD 2, - TIME_TO_SEC(4_dias_antes), TIME_TO_SEC(4_dias_antes)))),'%H:%i'),''), - IFNULL(DATE_FORMAT(SEC_TO_TIME(SUM(IF(orden MOD 2, - TIME_TO_SEC(3_dias_antes), TIME_TO_SEC(3_dias_antes)))),'%H:%i'),''), - IFNULL(DATE_FORMAT(SEC_TO_TIME(SUM(IF(orden MOD 2, - TIME_TO_SEC(2_dias_antes), TIME_TO_SEC(2_dias_antes)))),'%H:%i'),''), - IFNULL(DATE_FORMAT(SEC_TO_TIME(SUM(IF(orden MOD 2, - TIME_TO_SEC(1_dia_antes), TIME_TO_SEC(1_dia_antes)))),'%H:%i'),''), - '' - FROM tmp.workerWeekTiming_Aux; - - INSERT INTO tmp.workerWeekTiming_Aux( orden, 1_dia_antes) - SELECT 0, ROUND(( - IFNULL(TIME_TO_SEC(7_dias_antes),0) + - IFNULL(TIME_TO_SEC(6_dias_antes),0) + - IFNULL(TIME_TO_SEC(5_dias_antes),0) + - IFNULL(TIME_TO_SEC(4_dias_antes),0) + - IFNULL(TIME_TO_SEC(3_dias_antes),0) + - IFNULL(TIME_TO_SEC(2_dias_antes),0) + - IFNULL(TIME_TO_SEC(1_dia_antes),0) - ) / 3600,1) - FROM tmp.workerWeekTiming - WHERE orden = 0; - - - INSERT INTO tmp.workerWeekTiming( 7_dias_antes,6_dias_antes,5_dias_antes,4_dias_antes,3_dias_antes,2_dias_antes,1_dia_antes,mismo_dia) - SELECT '','','','','','',1_dia_antes,'' - FROM tmp.workerWeekTiming_Aux - WHERE orden = 0; - - SELECT 7_dias_antes, 6_dias_antes, 5_dias_antes, 4_dias_antes, 3_dias_antes, 2_dias_antes, 1_dia_antes, mismo_dia FROM tmp.workerWeekTiming; - - DROP TEMPORARY TABLE tmp.workerWeekTiming; - DROP TEMPORARY TABLE tmp.workerWeekTiming_Aux; + direction, + position + FROM(SELECT DATEDIFF(vDated, timed) daysAgo, + TIME_FORMAT(timed,'%H:%i') timed, + IF(DATE(timed) <> @lastDated, @position := 0, NULL), + @position := @position+1 position, + @lastDated := DATE(timed), + direction + FROM workerTimeControl wtc + WHERE wtc.userFk = vUserFk + AND wtc.timed >= TIMESTAMPADD(DAY, -6,vDated) + ORDER BY wtc.timed + LIMIT 10000000000000000000 + )sub + )sub2 + GROUP BY position) sub3 + JOIN (SELECT MAX(IF(daysAgo = 6, timeWorkSeconds, 0)) 6daysAgoTotal, + MAX(IF(daysAgo = 5, timeWorkSeconds, 0)) 5daysAgoTotal, + MAX(IF(daysAgo = 4, timeWorkSeconds, 0)) 4daysAgoTotal, + MAX(IF(daysAgo = 3, timeWorkSeconds, 0)) 3daysAgoTotal, + MAX(IF(daysAgo = 2, timeWorkSeconds, 0)) 2daysAgoTotal, + MAX(IF(daysAgo = 1, timeWorkSeconds, 0)) 1daysAgoTotal, + MAX(IF(daysAgo = 0, timeWorkSeconds, 0)) 0daysAgoTotal + FROM (SELECT DATEDIFF(vDated, dated) daysAgo, + timeWorkSeconds + FROM tmp.timeControlCalculate) sub4)sub5 ON TRUE; + DROP TEMPORARY TABLE tmp.timeControlCalculate; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -88529,11 +74862,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControl_login`(vWorkerFk VARCHAR(10)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControl_login`(vWorkerFk VARCHAR(10)) BEGIN /** * Consulta la información del usuario y los botones que tiene que activar en la tablet tras hacer login @@ -88542,7 +74875,7 @@ BEGIN * @return (name, surname, userFk, departmentFk, button1, button2) * Los valores posibles para button son ('in', 'inMiddle', 'outMiddle', 'out') */ - CALL vn.workerTimeControl_direction(vWorkerFk, NOW()); + CALL vn.workerTimeControl_direction(vWorkerFk, util.VN_NOW()); SELECT wi.name, wi.surname, @@ -88568,56 +74901,56 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControl_remove`(IN vUserFk INT, IN vTimed DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControl_remove`(IN vUserFk INT, IN vTimed DATETIME) BEGIN DECLARE vDirectionRemove VARCHAR(6); DECLARE vDirectionPrevious VARCHAR(6); DECLARE vTimedPrevious DATETIME; - SELECT direction INTO vDirectionRemove - FROM vn.workerTimeControl - WHERE userFk = vUserFk + SELECT direction INTO vDirectionRemove + FROM vn.workerTimeControl + WHERE userFk = vUserFk AND timed = vTimed ; IF vDirectionRemove = 'out' THEN - + SELECT timed, direction INTO vTimedPrevious, vDirectionPrevious - FROM vn.workerTimeControl - WHERE userFk = vUserFk + FROM vn.workerTimeControl + WHERE userFk = vUserFk AND timed < vTimed ORDER BY timed DESC - LIMIT 1; - + LIMIT 1; + IF vDirectionPrevious = "middle" THEN - UPDATE vn.workerTimeControl + UPDATE vn.workerTimeControl SET direction = "out" WHERE userFk = vUserFk AND timed = vTimedPrevious; END IF; - + ELSE IF vDirectionRemove = 'in' THEN - UPDATE vn.workerTimeControl + UPDATE vn.workerTimeControl SET direction = "in" WHERE userFk = vUserFk AND timed > vTimed ORDER BY timed ASC - LIMIT 1; + LIMIT 1; END IF; - + END IF; - + DELETE FROM vn.workerTimeControl - WHERE userFk = vUserFk + WHERE userFk = vUserFk AND timed = vTimed; - + CALL vn.workerTimeControlSOWP(vUserFk, vTimed); - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -88628,13 +74961,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControl_repair`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControl_repair`() proc: BEGIN /** * Corrige las fichadas @@ -88645,31 +74978,31 @@ proc: BEGIN UPDATE vn.workerTimeControl SET direction = 'middle'; /*2- poner los out*/ -UPDATE vn.workerTimeControl wtc - JOIN +UPDATE vn.workerTimeControl wtc + JOIN (SELECT userFk,MAX(timed) maxTimed FROM (SELECT id, userFk, timed, date(timed) dated - FROM vn.workerTimeControl - ) sub + FROM vn.workerTimeControl + ) sub GROUP BY userFk,dated )sub SET direction = "out" - WHERE wtc.userFk = sub.userFk + WHERE wtc.userFk = sub.userFk AND wtc.timed = sub.maxTimed; - - /*3- poner los in*/ -UPDATE vn.workerTimeControl wtc - JOIN + + /*3- poner los in*/ +UPDATE vn.workerTimeControl wtc + JOIN (SELECT userFk,MIN(timed) maxTimed FROM (SELECT id, userFk, timed, date(timed) dated - FROM vn.workerTimeControl - ) sub + FROM vn.workerTimeControl + ) sub GROUP BY userFk,dated )sub SET direction = "in" - WHERE wtc.userFk = sub.userFk - AND wtc.timed = sub.maxTimed ; - + WHERE wtc.userFk = sub.userFk + AND wtc.timed = sub.maxTimed ; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -88682,18 +75015,18 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControl_sendMail`(vWeek INT, vYear INT, vWorkerFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControl_sendMail`(vWeek INT, vYear INT, vWorkerFk INT) BEGIN /** - * Inserta en la tabla vn.mail para notificar a los empleados que teletrabajan de las jornadas que se han registrado. + * Inserta en la tabla vn.mail para notificar a los empleados que teletrabajan de las jornadas que se han registrado. * Inserta fichadas en el casos que se determina que el empleado está realizando teletrabajo * - * @param vWeek - * @param vYear + * @param vWeek + * @param vYear * @param vWorkerFk -> En el caso de querer generarlo para todos los empleados deberá de informarse como NULL */ DECLARE vStarted VARCHAR(25); @@ -88720,58 +75053,82 @@ BEGIN DECLARE vPermissionRate DECIMAL(5,2); DECLARE vIsTeleworking BOOL; DECLARE vIsTeleworkingOld BOOL; - + DECLARE vError BOOL DEFAULT FALSE; + DECLARE vCursor CURSOR FOR - SELECT CONCAT(u.name, '@verdnatura.es'), u.id, tb.dated, tb.timeWorkDecimal, LEFT(tb.timeWorkSexagesimal,5) timeWorkSexagesimal, - tb.timeTable, tc.timeWorkDecimal timeWorkedDecimal, LEFT(tc.timeWorkSexagesimal,5) timeWorkedSexagesimal, tb.type, tb.businessFk,tb.permissionRate, d.isTeleworking + SELECT CONCAT(u.name, '@verdnatura.es'), + u.id, + tb.dated, + tb.timeWorkDecimal, + LEFT(tb.timeWorkSexagesimal,5) timeWorkSexagesimal, + tb.timeTable, + tc.timeWorkDecimal timeWorkedDecimal, + LEFT(tc.timeWorkSexagesimal,5) timeWorkedSexagesimal, + tb.type, + tb.businessFk, + tb.permissionRate, + d.isTeleworking FROM tmp.timeBusinessCalculate tb - JOIN user u ON u.id = tb.userFk + JOIN user u ON u.id = tb.userFk JOIN department d ON d.id = tb.departmentFk - JOIN postgresql.business b ON b.business_id = tb.businessFk - JOIN company c ON c.id = b.provider_id + JOIN business b ON b.id = tb.businessFk LEFT JOIN tmp.timeControlCalculate tc ON tc.userFk = tb.userFk AND tc.dated = tb.dated + LEFT JOIN worker w ON w.id = u.id + LEFT JOIN `user` u2 ON u2.id = w.bossFk JOIN (SELECT tb.userFk, - SUM(IF(tb.type IS NULL, - IF(tc.timeWorkDecimal > 0, FALSE, IF(tb.timeWorkDecimal > 0, TRUE, FALSE)), - TRUE))isTeleworkingWeek - FROM tmp.timeBusinessCalculate1 tb - LEFT JOIN tmp.timeControlCalculate1 tc ON tc.userFk = tb.userFk AND tc.dated = tb.dated - GROUP BY tb.userFk - HAVING isTeleworkingWeek > 0 + SUM(IF(tb.type IS NULL, + IF(tc.timeWorkDecimal > 0, FALSE, IF(tb.timeWorkDecimal > 0, TRUE, FALSE)), + TRUE))isTeleworkingWeek + FROM tmp.timeBusinessCalculate1 tb + LEFT JOIN tmp.timeControlCalculate1 tc ON tc.userFk = tb.userFk AND tc.dated = tb.dated + GROUP BY tb.userFk + HAVING isTeleworkingWeek > 0 )sub ON sub.userFk = u.id - WHERE d.hasToRefill AND - IFNULL(vWorkerFk,u.id) = u.id AND - c.code = 'VNL' - ORDER BY u.id, tb.dated; + WHERE d.hasToRefill + AND IFNULL(vWorkerFk, u.id) = u.id + AND b.companyCodeFk = 'VNL' + AND w.businessFk + ORDER BY u.id, tb.dated; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + + DECLARE CONTINUE HANDLER FOR SQLEXCEPTION + BEGIN + SET vError = TRUE; + + INSERT INTO tmp.error(workerFk) + SELECT vWorkerFk; + END; + DROP TABLE IF EXISTS tmp.timeControlCalculate; DROP TABLE IF EXISTS tmp.timeBusinessCalculate; DROP TEMPORARY TABLE IF EXISTS tmp.timeControlCalculate; DROP TEMPORARY TABLE IF EXISTS tmp.timeBusinessCalculate; DROP TEMPORARY TABLE IF EXISTS tmp.timeControlCalculate1; DROP TEMPORARY TABLE IF EXISTS tmp.timeBusinessCalculate1; + DROP TEMPORARY TABLE IF EXISTS tmp.error; + + CREATE TEMPORARY TABLE tmp.error (workerFk INT); SELECT CONCAT (MIN(dated), ' 00:00:00'), CONCAT (MAX(dated), ' 23:59:59') INTO vStarted, vEnded - FROM time - WHERE year = vYear AND + FROM time + WHERE year = vYear AND week = vWeek; - DELETE FROM workerTimeControl + DELETE FROM workerTimeControl WHERE IFNULL(vWorkerFk, userFk) = userFk AND - timed BETWEEN vStarted AND vEnded AND + timed BETWEEN vStarted AND vEnded AND isSendMail; UPDATE workerTimeControlMail - SET updated = NOW(), state = 'SENDED' - WHERE year = vYear AND + SET updated = util.VN_NOW(), state = 'SENDED' + WHERE year = vYear AND week = vWeek AND IFNULL(vWorkerFk, workerFk) = workerFk ; IF vWorkerFk IS NULL THEN CALL timeControl_calculateAll(vStarted,vEnded); - CALL timeBusiness_calculateAll(vStarted,vEnded); + CALL timeBusiness_calculateAll(vStarted,vEnded); ELSE CALL timeControl_calculateByUser(vWorkerFk,vStarted,vEnded); CALL timeBusiness_calculateByUser(vWorkerFk,vStarted,vEnded); @@ -88793,9 +75150,12 @@ proc: LOOP IF vDone THEN LEAVE proc; END IF; - + + START TRANSACTION; + SET vError = FALSE; + IF vTimeWorkDecimal>0 AND vTimeWorkedDecimal IS NULL AND IFNULL(vPermissionRate, TRUE) THEN - IF vTimeTable IS NULL THEN + IF vTimeTable IS NULL THEN INSERT INTO workerTimeControl (userFk, timed, manual, direction, isSendMail) SELECT vWorkerFk, CONCAT(vDated,' 08:00'), TRUE, 'in', TRUE; IF vTimeWorkDecimal >= 5 THEN @@ -88808,63 +75168,63 @@ proc: LOOP SELECT vWorkerFk,CONCAT(vDated,' ', LEFT (SEC_TO_TIME(28800 + (vTimeWorkDecimal * 3600)), 5)), TRUE, 'out', TRUE; ELSE SELECT SUM(TIME_TO_SEC(j.end)-TIME_TO_SEC(j.start))/3600 INTO vTimeTableDecimal - FROM postgresql.journey j - WHERE j.business_id = vBusinessFk AND - j.day_id = WEEKDAY(vDated)+1; + FROM postgresql.journey j + WHERE j.business_id = vBusinessFk AND + j.day_id = WEEKDAY(vDated)+1; IF vTimeWorkDecimal = vTimeTableDecimal THEN INSERT INTO workerTimeControl (userFk, timed, manual, isSendMail) SELECT vWorkerFk, CONCAT(vDated, ' ', j.start), TRUE, TRUE - FROM postgresql.journey j - WHERE j.business_id = vBusinessFk AND + FROM postgresql.journey j + WHERE j.business_id = vBusinessFk AND j.day_id = WEEKDAY(vDated)+1; - + INSERT INTO workerTimeControl (userFk, timed, manual, isSendMail) SELECT vWorkerFk, CONCAT(vDated, ' ', j.end), TRUE, TRUE - FROM postgresql.journey j - WHERE j.business_id = vBusinessFk AND - j.day_id = WEEKDAY(vDated)+1; + FROM postgresql.journey j + WHERE j.business_id = vBusinessFk AND + j.day_id = WEEKDAY(vDated)+1; ELSE INSERT INTO workerTimeControl (userFk, timed, manual, isSendMail) SELECT vWorkerFk, CONCAT(vDated, ' ', MIN(j.start)), TRUE, TRUE - FROM postgresql.journey j - WHERE j.business_id = vBusinessFk AND - j.day_id = WEEKDAY(vDated)+1; + FROM postgresql.journey j + WHERE j.business_id = vBusinessFk AND + j.day_id = WEEKDAY(vDated)+1; INSERT INTO workerTimeControl (userFk, timed, manual, isSendMail) SELECT vWorkerFk, CONCAT(vDated, ' ', SEC_TO_TIME(TIME_TO_SEC(MIN(j.start)) + (vTimeWorkDecimal * 3600))), TRUE, TRUE - FROM postgresql.journey j - WHERE j.business_id = vBusinessFk AND - j.day_id = WEEKDAY(vDated)+1; - END IF; - + FROM postgresql.journey j + WHERE j.business_id = vBusinessFk AND + j.day_id = WEEKDAY(vDated)+1; + END IF; + IF vTimeWorkDecimal >= 5 THEN INSERT INTO workerTimeControl (userFk, timed, manual, isSendMail) SELECT vWorkerFk, CONCAT(vDated, ' ', SEC_TO_TIME(TIME_TO_SEC(MIN(j.start)) + 3600)), TRUE, TRUE - FROM postgresql.journey j - WHERE j.business_id = vBusinessFk AND - j.day_id = WEEKDAY(vDated)+1; + FROM postgresql.journey j + WHERE j.business_id = vBusinessFk AND + j.day_id = WEEKDAY(vDated)+1; INSERT INTO workerTimeControl (userFk, timed, manual, isSendMail) SELECT vWorkerFk, CONCAT(vDated, ' ', SEC_TO_TIME(TIME_TO_SEC(MIN(j.start)) + 4800)), TRUE, TRUE - FROM postgresql.journey j - WHERE j.business_id = vBusinessFk AND - j.day_id = WEEKDAY(vDated)+1; + FROM postgresql.journey j + WHERE j.business_id = vBusinessFk AND + j.day_id = WEEKDAY(vDated)+1; END IF; - + UPDATE workerTimeControl wtc - JOIN (SELECT id FROM workerTimeControl - WHERE userFk = vWorkerFk AND + JOIN (SELECT id FROM workerTimeControl + WHERE userFk = vWorkerFk AND timed BETWEEN vDated AND CONCAT(vDated, ' 23:59:59') ORDER BY timed ASC LIMIT 1)sub on sub.id= wtc.id - SET direction = 'in' ; - + SET direction = 'in' ; + UPDATE workerTimeControl wtc - JOIN (SELECT id FROM workerTimeControl - WHERE userFk = vWorkerFk AND + JOIN (SELECT id FROM workerTimeControl + WHERE userFk = vWorkerFk AND timed BETWEEN vDated AND CONCAT(vDated, ' 23:59:59') - ORDER BY timed DESC + ORDER BY timed DESC LIMIT 1)sub on sub.id= wtc.id - SET direction = 'out' ; - + SET direction = 'out' ; + END IF; END IF; @@ -88883,26 +75243,27 @@ proc: LOOP ", IFNULL(vAbsenceType, IF (vTimeWorkedDecimal>0, "Presencial", IF(vTimeWorkDecimal>0, "Teletrabajo", " - "))), " ", IFNULL(vTimeWorkedSexagesimal,IF(IFNULL(vPermissionRate, TRUE), vTimeWorkDecimal, 0)), " ") INTO vBody - FROM workerTimeControl - WHERE userFk = vWorkerFk AND + FROM workerTimeControl + WHERE userFk = vWorkerFk AND timed BETWEEN vDated AND CONCAT(vDated," 23:59:59"); SET vTimeWorkDecimalTotal = vTimeWorkDecimalTotal + IFNULL(vTimeWorkedDecimal, IF( IFNULL(vPermissionRate, TRUE), vTimeWorkDecimal, 0)); SET vDone = FALSE; FETCH vCursor INTO vReceiver, vWorkerFk, vDated, vTimeWorkDecimal, vTimeWorkSexagesimal, vTimeTable, vTimeWorkedDecimal, vTimeWorkedSexagesimal, vAbsenceType, vBusinessFk, vPermissionRate, vIsTeleworking; - IF vWorkerFk <> vWorkerFkOld OR vDone THEN - SELECT CONCAT( IFNULL(nif, ''), ' - ', firstName, ' ', name ) INTO vWorkerInfo - FROM postgresql.person - WHERE id_trabajador = vWorkerFkOld; + IF vWorkerFk <> vWorkerFkOld OR vDone THEN + SELECT CONCAT_WS(' ', fi, firstName, lastName) INTO vWorkerInfo + FROM worker + WHERE id = vWorkerFkOld; + SET vHeader = CONCAT("


-

", vWorkerInfo , "

+

", vWorkerInfo , "

@@ -88923,16 +75284,18 @@ proc: LOOP
Según la información recogida en el sistema adjuntamos la tabla con los registros de las horas trabajadas en el período indicado. Si está conforme tiene que contestar indicando únicamente la palabra OK, en caso contrario puede contestar detallando la causa de la disconformidad. - Rogamos nos conteste lo antes posible. + Rogamos nos conteste lo antes posible.

"); - IF vIsTeleworkingOld THEN + IF vIsTeleworkingOld AND NOT vError THEN CALL mail_insert( - vReceiverOld, + vReceiverOld, 'timecontrol@verdnatura.es', - CONCAT('Registro de horas semana ', vWeek, ' año ', vYear) , + CONCAT('Registro de horas semana ', vWeek, ' año ', vYear) , CONCAT(vHeader, ' ' , vBody, ' ', vFooter) ); INSERT IGNORE INTO workerTimeControlMail (workerFk, year, week) VALUES(vWorkerFkOld, vYear, vWeek); + ELSE + ROLLBACK; END IF; SET vBody = ''; @@ -88941,13 +75304,24 @@ proc: LOOP SET vIsTeleworkingOld = vIsTeleworking; SET vReceiverOld = vReceiver; END IF; + COMMIT; END LOOP; CLOSE vCursor; + INSERT INTO mail (receiver, replyTo, subject, body) + SELECT CONCAT(u.name, '@verdnatura.es'), + CONCAT('Error registro de horas semana ', vWeek, ' año ', vYear) , + CONCAT('No se ha podido enviar el registro de horas al empleado/s: ', GROUP_CONCAT(DISTINCT CONCAT('
', w.id, ' ', w.firstName, ' ', w.lastName))) + FROM tmp.error e + JOIN worker w ON w.id = e.workerFk + JOIN user u ON u.id = w.bossFk + GROUP BY w.bossFk; + DROP TABLE tmp.timeControlCalculate; DROP TABLE tmp.timeBusinessCalculate; DROP TABLE tmp.timeControlCalculate1; DROP TABLE tmp.timeBusinessCalculate1; + DROP TABLE tmp.error; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -88960,29 +75334,19 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControl_sendMailByDepartment`(IN vWeek int, IN vYear int, IN vWorkerFk int) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControl_sendMailByDepartment`(IN vDatedFrom DATETIME, IN vDatedTo DATETIME, IN vWorkerFk INT) BEGIN - - /** - * Inserta el registro de horario semanalmente de PRODUCCION, CAMARA, TALLER NATURAL y TALLER ARTIFICIAL en vn.mail. - * - * @param vWeek - * @param vYear - * @param vWorkerFk -> En el caso de querer generarlo para todos los empleados deberá de informarse como NULL - */ - - DECLARE vDateStart DATETIME; - DECLARE vDateEnd DATETIME; - - SELECT CONCAT (MIN(dated), ' 00:00:00'), CONCAT (MAX(dated), ' 23:59:59') INTO vDateStart, vDateEnd - FROM time - WHERE year = vYear AND - week = vWeek; - +/** + * Inserta el registro de horario semanalmente de PRODUCCION, CAMARA, REPARTO, TALLER NATURAL y TALLER ARTIFICIAL en vn.mail. + * + * @param vDatedFrom + * @param vDatedTo + * @param vWorkerFk -> En el caso de querer generarlo para todos los empleados deberá de pasarse = NULL + */ SET session group_concat_max_len = 15000; DROP TEMPORARY TABLE IF EXISTS tmp.timeControlCalculate; @@ -88990,19 +75354,19 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.reportHours; IF vWorkerFk IS NULL THEN - CALL timeControl_calculateAll(vDateStart,vDateEnd); - CALL timeBusiness_calculateAll(vDateStart,vDateEnd); + CALL timeControl_calculateAll(vDatedFrom,vDatedTo); + CALL timeBusiness_calculateAll(vDatedFrom,vDatedTo); ELSE - CALL timeControl_calculateByUser(vWorkerFk,vDateStart,vDateEnd); - CALL timeBusiness_calculateByUser(vWorkerFk,vDateStart,vDateEnd); + CALL timeControl_calculateByUser(vWorkerFk,vDatedFrom,vDatedTo); + CALL timeBusiness_calculateByUser(vWorkerFk,vDatedFrom,vDatedTo); END IF; CREATE TEMPORARY TABLE tmp.reportHours - SELECT t.dated, + SELECT t.dated, IF (tm.hoursWeek IS NULL,'', GROUP_CONCAT(DATE_FORMAT(wtc.timed,'%H:%i') ORDER BY wtc.timed ASC SEPARATOR ' ') ) timeWorkDay, - IFNULL(TIME_FORMAT(tm.timeWorkSexagesimal, '%H:%i'),0) tm, - IFNULL(TIME_FORMAT(tc.timeWorkSexagesimal, '%H:%i'),0) tc, - IFNULL(TIME_FORMAT(SUBTIME(TIME_FORMAT(tc.timeWorkSexagesimal, '%H:%i'), tm.timeWorkSexagesimal), '%H:%i'),0) balance, + SEC_TO_TIME(IFNULL(tm.timeWorkSeconds, 0)) tm, + SEC_TO_TIME(IFNULL(tc.timeWorkSeconds, 0)) tc, + SEC_TO_TIME(IFNULL(tc.timeWorkSeconds, 0) - IFNULL(tm.timeWorkSeconds, 0)) balance, w.lastName, w.firstname, c.fi, @@ -89012,27 +75376,27 @@ BEGIN w.userFk, tm.hoursWeek, tm.type, - wl.started, - wl.ended, + b.started, + b.ended, d.name, tm.businessFk FROM time t LEFT JOIN tmp.timeBusinessCalculate tm ON tm.dated = t.dated LEFT JOIN tmp.timeControlCalculate tc ON tc.dated = tm.dated AND tc.userFk = tm.userFk LEFT JOIN vn.workerTimeControl wtc ON wtc.userFk = tm.userFk AND DATE(wtc.timed) = t.dated - LEFT JOIN workerLabour wl ON wl.workerFk = tm.userFk AND wl.businessFk = tm.businessFk - LEFT JOIN workCenter wc ON wc.id = wl.workCenterFk - LEFT JOIN department d ON d.id = wl.departmentFk + LEFT JOIN business b ON b.workerFk = tm.userFk AND b.id = tm.businessFk + LEFT JOIN workCenter wc ON wc.id = b.workcenterFk + LEFT JOIN department d ON d.id = b.departmentFk LEFT JOIN worker w ON w.id = tm.userFk LEFT JOIN client c ON c.id = w.id WHERE wc.name NOT IN ('VNH') AND d.hasToSendMail - AND wl.ended >= CURDATE() + AND w.businessFk GROUP BY tm.userFk,t.dated ORDER BY tm.userFk,t.dated; - + INSERT INTO vn.mail (receiver, replyTo, subject, body) - SELECT eu.email, 'laboral@verdnatura.es', CONCAT('Registro de horas semana ', WEEK(CURDATE())-1, ' año ', YEAR(CURDATE())) , + SELECT eu.email, 'laboral@verdnatura.es', CONCAT('Registro de horas semana ', WEEK(vDatedFrom), ' año ', YEAR(vDatedFrom)) , CONCAT(' @@ -89051,8 +75415,8 @@ BEGIN @@ -89082,14 +75446,14 @@ BEGIN '' ORDER BY rh.dated SEPARATOR ''), + '' ORDER BY rh.dated SEPARATOR ''), ' - - + +
- Según la información recogida en el sistema, adjuntamos tabla con los registros. Cualquier incidencia rogamos la comunique a laboral@verdnatura.es. -

+ Según la información recogida en el sistema, adjuntamos la tabla con los registros. Cualquier incidencia rogamos la comunique a laboral@verdnatura.es. +
De no recibir incidencia por su parte, se entenderá que el registro es correcto.
', CONCAT(UCASE(LEFT(DAYNAME(rh.dated), 1)), SUBSTRING(DAYNAME(rh.dated), 2)), ' ', IFNULL(rh.timeWorkDay,' '),' ', IFNULL(rh.type,' '), ' ', rh.tm, - ' ', rh.tc, - ' ', rh.balance, '
', SUBSTRING_INDEX(rh.tc, '.', 1), + ' ', SUBSTRING_INDEX(rh.balance, '.', 1), '
Total horas trabajadas: ', SUM(rh.tc),'', SUM(rh.balance),'', SUBSTRING_INDEX(SEC_TO_TIME(SUM(TIME_TO_SEC(rh.tc))), '.', 1),'', SUBSTRING_INDEX(SEC_TO_TIME(SUM(TIME_TO_SEC(rh.balance))), '.', 1),'
') @@ -89100,7 +75464,6 @@ BEGIN DROP TEMPORARY TABLE tmp.timeControlCalculate; DROP TEMPORARY TABLE tmp.timeBusinessCalculate; DROP TEMPORARY TABLE tmp.reportHours; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -89113,22 +75476,18 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControl_sendMailByDepartmentLauncher`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControl_sendMailByDepartmentLauncher`() BEGIN - DECLARE vWeek,vYear INT; + DECLARE vDatedFrom, vDatedTo DATETIME; - IF (DAYNAME(CURDATE()) = 'miércoles') THEN - SELECT week,year INTO vWeek,vYear - FROM vn.time - WHERE dated IN (DATE_ADD(CURDATE(), INTERVAL -10 DAY), DATE_ADD(CURDATE(), INTERVAL -4 DAY)) - GROUP BY year,week - LIMIT 1; - - CALL vn.workerTimeControl_sendMailByDepartment(vWeek, vYear, NULL); + IF (DAYNAME(util.VN_CURDATE()) = 'miércoles') THEN + SELECT DATE_SUB(util.VN_CURDATE(), INTERVAL 9 DAY), CONCAT(DATE_SUB(util.VN_CURDATE(), INTERVAL 3 DAY), ' 23:59:59') INTO vDatedFrom, vDatedTo; + + CALL vn.workerTimeControl_sendMailByDepartment(vDatedFrom, vDatedTo, NULL); END IF; END ;; DELIMITER ; @@ -89142,11 +75501,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerTimeControl_setOrder`(vUserFk INT, vStarted DATE, vFinished DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControl_setOrder`(vUserFk INT, vStarted DATE, vFinished DATE) BEGIN SET @order := 0; @@ -89164,184 +75523,195 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `workerTimeControl_weekCheckBreak` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerTimeControl_weekCheckBreak`(vStarted DATE, vEnded DATE) +BEGIN +/** + * Retorna los trabajadores que no han respetado el descanso semanal de 36/72 horas + * El sistema verificará el descanso corto en la siguiente semana + * o el largo en las 2 siguientes semanas a partir de las fechas dadas + * @param vStarted día inicio para verificar + * @param vEnded día final para verificar + * @return tmp.workerWithoutWeekBreak (workerFk) + */ + DECLARE vDone INT DEFAULT FALSE; + + IF(vStarted > vEnded) then + CALL util.throw ('Date end can not be greater then start'); + END IF; + + DROP TEMPORARY TABLE IF EXISTS tmp.workerWithoutWeekBreakInWeek; + CREATE TEMPORARY TABLE tmp.workerWithoutWeekBreakInWeek + (workerFk INT, + PRIMARY KEY(workerFk)) + ENGINE = MEMORY; + + + WHILE vStarted <= vEnded DO + + CALL workerTimeControl_checkBreak(vStarted); + INSERT IGNORE INTO tmp.workerWithoutWeekBreakInWeek + SELECT workerFk + FROM tmp.workerWithoutWeekBreak; + DROP TEMPORARY TABLE IF EXISTS tmp.workerWithoutWeekBreak; + SET vStarted = DATE_ADD(vStarted, INTERVAL 1 DAY); + + END WHILE; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `workerWeekControl` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerWeekControl`(vUserFk INT, vDated DATE, vTabletFk VARCHAR(100)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerWeekControl`(vUserFk INT, vDated DATE, vTabletFk VARCHAR(100)) BEGIN - -/* Devuelve la cantidad de descansos de 12h y de 36 horas que ha disfrutado el trabajador -* en la semana inmediatamente anterior a la fecha que pasa como parámetro. -* -* UPDATED PAK 2019/09/02 -* PENDING REVIEW +/* +* Devuelve la cantidad de descansos de 12h y de 36 horas que ha disfrutado el trabajador +* en la semana inmediatamente anterior a la fecha que pasa como parámetro. +* UPDATED PAK 2019/09/02 +* PENDING REVIEW */ + DECLARE vDescansos12h INT; + DECLARE vDescansos36h INT; + DECLARE vJornadas INT; + DECLARE vImpares INT; + DECLARE vHasSignedToday BOOLEAN; + DECLARE v12hoursInMinutes INT DEFAULT 719; + DECLARE v36hoursInMinutes INT DEFAULT 2159; + DECLARE vCantWork VARCHAR(50) DEFAULT ''; + DECLARE vDepartmentFk INT; + DECLARE isEnabled BOOLEAN DEFAULT TRUE; -DECLARE vDescansos12h INT; -DECLARE vDescansos36h INT; -DECLARE vJornadas INT; -DECLARE vImpares INT; -DECLARE vHasSignedToday BOOLEAN; -DECLARE v12hoursInMinutes INT DEFAULT 719; -DECLARE v36hoursInMinutes INT DEFAULT 2159; -DECLARE vCantWork VARCHAR(50) DEFAULT ''; -DECLARE vDepartmentFk INT; -DECLARE isEnabled BOOLEAN DEFAULT TRUE; + SELECT COUNT(*) INTO vHasSignedToday + FROM workerTimeControl WHERE timed >= vDated AND userFk = vUserFk; + SET @day := 0; + SET @lastTimed := util.VN_NOW(); -SELECT COUNT(*) INTO vHasSignedToday - FROM vn.workerTimeControl WHERE timed >= vDated AND userFk = vUserFk; + SELECT SUM(IF(interval_in_minutes >= v12hoursInMinutes,1,0)), SUM(FLOOR(interval_in_minutes/ v36hoursInMinutes)) , SUM(jornadas) + INTO vDescansos12h, vDescansos36h, vJornadas + FROM + ( + SELECT fichada_anterior, fichada_actual, interval_in_minutes, jornadas + FROM + ( + SELECT @lastTimed fichada_anterior, + timed, + CAST(time_to_sec(timediff(timed,@lastTimed )) / 60 AS UNSIGNED) as interval_in_minutes, + IF(day(timed) != @day, 1, 0) as jornadas, + @day := day(timed) dia_del_mes, + @lastTimed := timed fichada_actual + FROM + ( + SELECT day(timed) as dayNumber, dayname(timed) as dayName, timed + FROM + (SELECT TIMESTAMPADD(DAY, -11, util.VN_NOW()) as timed, vUserFk as userFk -- Fichada virtual para los en los que no se ha trabajado la semana anterior + UNION ALL + SELECT timed, userFk + FROM vn.workerTimeControl wtc + WHERE userFk = vUserFk + AND timed >= TIMESTAMPADD(DAY, -10,vDated) + UNION ALL + SELECT IF(vHasSignedToday, '2000-01-01 00:00', util.VN_NOW()) as timed, vUserFk + ) sub4 + ORDER BY timed + ) sub -SET @day := 0; -SET @lastTimed := NOW(); + ) sub2 + WHERE fichada_actual >= TIMESTAMPADD(WEEK, -1, vDated) + ) sub3 ; -SELECT SUM(IF(interval_in_minutes >= v12hoursInMinutes,1,0)), SUM(FLOOR(interval_in_minutes/ v36hoursInMinutes)) , SUM(jornadas) - INTO vDescansos12h, vDescansos36h, vJornadas - FROM - ( - SELECT fichada_anterior, fichada_actual, interval_in_minutes, jornadas - FROM - ( - SELECT @lastTimed fichada_anterior, - timed, - CAST(time_to_sec(timediff(timed,@lastTimed )) / 60 AS UNSIGNED) as interval_in_minutes, - IF(day(timed) != @day, 1, 0) as jornadas, - @day := day(timed) dia_del_mes, - @lastTimed := timed fichada_actual - FROM - ( - SELECT day(timed) as dayNumber, dayname(timed) as dayName, timed - FROM - (SELECT TIMESTAMPADD(DAY, -11, NOW()) as timed, vUserFk as userFk -- Fichada virtual para los en los que no se ha trabajado la semana anterior - UNION ALL - SELECT timed, userFk - FROM vn.workerTimeControl wtc - WHERE userFk = vUserFk - AND timed >= TIMESTAMPADD(DAY, -10,vDated) - UNION ALL - SELECT IF(vHasSignedToday, '2000-01-01 00:00', NOW()) as timed, vUserFk - ) sub4 - ORDER BY timed - ) sub - - ) sub2 - WHERE fichada_actual >= TIMESTAMPADD(WEEK, -1, vDated) - ) sub3 ; + SELECT IFNULL(SUM(impar),0) into vImpares + FROM ( + SELECT day(timed) as dayNumber, + count(*) mod 2 as impar + FROM vn.workerTimeControl wtc + WHERE userFk = vUserFk + AND timed >= TIMESTAMPADD(WEEK, -1,vDated) AND timed < vDated + GROUP BY dayNumber + ) sub; -SELECT IFNULL(SUM(impar),0) into vImpares -FROM ( - SELECT day(timed) as dayNumber, - count(*) mod 2 as impar - FROM vn.workerTimeControl wtc - WHERE userFk = vUserFk - AND timed >= TIMESTAMPADD(WEEK, -1,vDated) AND timed < vDated - GROUP BY dayNumber - ) sub; + -- Vacaciones + SELECT at2.name INTO vCantWork + FROM calendar c + JOIN business b ON b.id = c.businessFk + JOIN absenceType at2 ON at2.id = c.dayOffTypeFk + WHERE c.dated = util.VN_CURDATE() + AND at2.isAllowedToWork = FALSE + AND b.workerFk = vUserFk + LIMIT 1; --- Vacaciones -SELECT cs.type INTO vCantWork - FROM postgresql.calendar_employee ce - JOIN postgresql.business b USING(business_id) - JOIN postgresql.profile pr ON pr.profile_id = b.client_id - JOIN postgresql.person p ON p.person_id = pr.person_id - JOIN postgresql.calendar_state cs USING(calendar_state_id) - JOIN vn.worker w ON w.id = p.id_trabajador - WHERE ce.date = CURDATE() - AND cs.isAllowedToWork = FALSE - AND w.userFk = vUserFk - LIMIT 1; - --- Contrato en vigor -SELECT IF(COUNT(*),vCantWork,'Sin contrato') INTO vCantWork - FROM postgresql.business b - JOIN postgresql.profile pr ON pr.profile_id = b.client_id - JOIN postgresql.person p ON p.person_id = pr.person_id - JOIN vn.worker w ON w.id = p.id_trabajador - WHERE w.userFk = vUserFk - AND b.date_start <= vDated - AND IFNULL(b.date_end,vDated) >= vDated; - --- Departamento si vTabletFk es 0 no hacemos comprobacion (Madrid y Vilassar) -IF vTabletFk <> '0' THEN --- 1 Obtener el departamento del usuario - SELECT wtcu.departmentFk INTO vDepartmentFk - FROM vn.workerTimeControlUserInfo wtcu - WHERE wtcu.userFk = vUserFk; --- 2 Comprobar si la tablet pertenece al departamento - SELECT COUNT(td.tabletFk) INTO isEnabled - FROM vn.tabletDepartment td - WHERE td.tabletFk = vTabletFk AND td.departmentFk = vDepartmentFk; - -END IF; - + -- Contrato en vigor + SELECT IF(COUNT(*),vCantWork,'Sin contrato') INTO vCantWork + FROM business b + WHERE b.workerFk = vUserFk + AND b.started <= vDated + AND IFNULL(b.ended, vDated) >= vDated; - -IF vJornadas IS NOT NULL THEN - - SELECT 'Jornadas' as Item, vJornadas as Cantidad, 'Correcto' AS Análisis + -- Departamento si vTabletFk es 0 no hacemos comprobacion (Madrid y Vilassar) + IF vTabletFk <> '0' THEN + -- 1 Obtener el departamento del usuario + SELECT wtcu.departmentFk INTO vDepartmentFk + FROM workerTimeControlUserInfo wtcu + WHERE wtcu.userFk = vUserFk; + -- 2 Comprobar si la tablet pertenece al departamento + SELECT COUNT(td.tabletFk) INTO isEnabled + FROM tabletDepartment td + WHERE td.tabletFk = vTabletFk AND td.departmentFk = vDepartmentFk; - UNION ALL + END IF; - SELECT 'Descansos 12 h' as Item, vDescansos12h as Cantidad, IF(vDescansos12h >= vJornadas, 'Correcto','Error: 1 por jornada') as Análisis + IF vJornadas IS NOT NULL THEN - UNION ALL - - SELECT 'Descansos 36 h' as Item, vDescansos36h as Cantidad, IF(vDescansos36h / 2 >= FLOOR(vJornadas/10), 'Correcto','Error: mínimo 2 cada 14 dias') as Análisis - - UNION ALL - - SELECT 'Dias con fichadas impares' as Item, vImpares as Cantidad, IF(vImpares = 0, 'Correcto','Error') as Análisis - - UNION ALL - - SELECT IF (LENGTH(vCantWork),CONCAT('Dia no laborable: ', vCantWork),'Dia laborable') as Item, - '' as Cantidad, - IF(LENGTH(vCantWork),'Error', 'Correcto') as Análisis - - UNION ALL - - SELECT 'El fichador no pertenece a tu departamento.' as Item, '' as Cantidad, IF(isEnabled, 'Correcto','Error') as Análisis - - ; - -ELSE - - - SELECT 'Jornadas' as Item, vJornadas as Cantidad, 'Correcto' AS Análisis - - UNION ALL - - SELECT 'Descansos 12 h' as Item, vDescansos12h as Cantidad, 'Correcto' as Análisis - - UNION ALL - - SELECT 'Descansos 36 h' as Item, vDescansos36h as Cantidad, 'Correcto' as Análisis - - UNION ALL - - SELECT 'Dias con fichadas impares' as Item, vImpares as Cantidad, 'Correcto' as Análisis - - UNION ALL - - SELECT IF (LENGTH(vCantWork),CONCAT('Dia no laborable: ', vCantWork),'Dia laborable') as Item, - '' as Cantidad, IF(LENGTH(vCantWork),'Error', 'Correcto') as Análisis - - UNION ALL - - SELECT 'El fichador no pertenece a tu departamento.' as Item, '' as Cantidad, IF(isEnabled, 'Correcto','Error') as Análisis - ; - -END IF; + SELECT 'Jornadas' as Item, vJornadas as Cantidad, 'Correcto' AS Análisis + UNION ALL + SELECT 'Descansos 12 h' as Item, vDescansos12h as Cantidad, IF(vDescansos12h >= vJornadas, 'Correcto','Error: 1 por jornada') as Análisis + UNION ALL + SELECT 'Descansos 36 h' as Item, vDescansos36h as Cantidad, IF(vDescansos36h / 2 >= FLOOR(vJornadas/10), 'Correcto','Error: mínimo 2 cada 14 dias') as Análisis + UNION ALL + SELECT 'Dias con fichadas impares' as Item, vImpares as Cantidad, IF(vImpares = 0, 'Correcto','Error') as Análisis + UNION ALL + SELECT IF (LENGTH(vCantWork),CONCAT('Dia no laborable: ', vCantWork),'Dia laborable') as Item, + '' as Cantidad, + IF(LENGTH(vCantWork),'Error', 'Correcto') as Análisis + UNION ALL + SELECT 'El fichador no pertenece a tu departamento.' as Item, '' as Cantidad, IF(isEnabled, 'Correcto','Error') as Análisis; + ELSE + SELECT 'Jornadas' as Item, vJornadas as Cantidad, 'Correcto' AS Análisis + UNION ALL + SELECT 'Descansos 12 h' as Item, vDescansos12h as Cantidad, 'Correcto' as Análisis + UNION ALL + SELECT 'Descansos 36 h' as Item, vDescansos36h as Cantidad, 'Correcto' as Análisis + UNION ALL + SELECT 'Dias con fichadas impares' as Item, vImpares as Cantidad, 'Correcto' as Análisis + UNION ALL + SELECT IF (LENGTH(vCantWork),CONCAT('Dia no laborable: ', vCantWork),'Dia laborable') as Item, + '' as Cantidad, IF(LENGTH(vCantWork),'Error', 'Correcto') as Análisis + UNION ALL + SELECT 'El fichador no pertenece a tu departamento.' as Item, '' as Cantidad, IF(isEnabled, 'Correcto','Error') as Análisis; + END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -89352,13 +75722,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workerWeekTiming`(vUserFk INT, vDated DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerWeekTiming`(vUserFk INT, vDated DATE) BEGIN /* @@ -89372,7 +75742,7 @@ CALL vn.workerTimeControlSetOrder_by_User_and_dateRange(vUserFk,TIMESTAMPADD(DAY DROP TEMPORARY TABLE IF EXISTS tmp.workerWeekTiming; CREATE TEMPORARY TABLE tmp.workerWeekTiming SELECT orden `orden`, - max(hace7dias) 7_dias_antes, + max(hace7dias) 7_dias_antes, max(hace6dias) 6_dias_antes, max(hace5dias) 5_dias_antes, max(hace4dias) 4_dias_antes, @@ -89402,16 +75772,16 @@ SELECT orden `orden`, )sub2 GROUP BY orden ; - + DROP TEMPORARY TABLE IF EXISTS tmp.workerWeekTiming_Aux; CREATE TEMPORARY TABLE tmp.workerWeekTiming_Aux SELECT * FROM tmp.workerWeekTiming; INSERT INTO tmp.workerWeekTiming( 7_dias_antes,6_dias_antes,5_dias_antes,4_dias_antes,3_dias_antes,2_dias_antes,1_dia_antes,mismo_dia) VALUES('total','','','','','','',''); - + INSERT INTO tmp.workerWeekTiming( orden, 7_dias_antes,6_dias_antes,5_dias_antes,4_dias_antes,3_dias_antes,2_dias_antes,1_dia_antes, mismo_dia) -SELECT 0, +SELECT 0, IFNULL(DATE_FORMAT(SEC_TO_TIME(SUM(IF(orden MOD 2, - TIME_TO_SEC(7_dias_antes), TIME_TO_SEC(7_dias_antes)))),'%H:%i'),''), IFNULL(DATE_FORMAT(SEC_TO_TIME(SUM(IF(orden MOD 2, - TIME_TO_SEC(6_dias_antes), TIME_TO_SEC(6_dias_antes)))),'%H:%i'),''), IFNULL(DATE_FORMAT(SEC_TO_TIME(SUM(IF(orden MOD 2, - TIME_TO_SEC(5_dias_antes), TIME_TO_SEC(5_dias_antes)))),'%H:%i'),''), @@ -89421,7 +75791,7 @@ SELECT 0, IFNULL(DATE_FORMAT(SEC_TO_TIME(SUM(IF(orden MOD 2, - TIME_TO_SEC(1_dia_antes), TIME_TO_SEC(1_dia_antes)))),'%H:%i'),''), '' FROM tmp.workerWeekTiming_Aux; - + INSERT INTO tmp.workerWeekTiming_Aux( orden, 1_dia_antes) SELECT 0, ROUND(( IFNULL(TIME_TO_SEC(7_dias_antes),0) + @@ -89433,14 +75803,14 @@ SELECT 0, ROUND(( IFNULL(TIME_TO_SEC(1_dia_antes),0) ) / 3600,1) FROM tmp.workerWeekTiming - WHERE orden = 0; + WHERE orden = 0; INSERT INTO tmp.workerWeekTiming( 7_dias_antes,6_dias_antes,5_dias_antes,4_dias_antes,3_dias_antes,2_dias_antes,1_dia_antes,mismo_dia) SELECT '','','','','','',1_dia_antes,'' FROM tmp.workerWeekTiming_Aux WHERE orden = 0; - + SELECT 7_dias_antes,6_dias_antes,5_dias_antes,4_dias_antes,3_dias_antes,2_dias_antes,1_dia_antes,mismo_dia FROM tmp.workerWeekTiming; DROP TEMPORARY TABLE tmp.workerWeekTiming; @@ -89458,11 +75828,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `worker_calculateCommission`(vYear INT, vQuarter INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `worker_calculateCommission`(vYear INT, vQuarter INT) BEGIN DECLARE vPlusTeamAmount INT; @@ -89482,28 +75852,28 @@ BEGIN JOIN vn.worker wb ON ww.id = wb.bossFk GROUP BY wb.bossFk; */ - + SELECT plusTeamAmount, plusNewBornAmount, plusSalesAmount, minimumSalesByQuarter, plusTeamRange, plusNewBornRange, rankingSalesRange INTO vPlusTeamAmount, vPlusNewBornAmount, vPlusSalesAmount, vMinimumSalesByQuarter, vPlusTeamRange, vPlusNewBornRange, vRankingSalesRange FROM commissionConfig; -- Ventas DROP TEMPORARY TABLE IF EXISTS rankingSale; CREATE TEMPORARY TABLE rankingSale - (PRIMARY KEY(workerFk)) ENGINE = MEMORY - SELECT IF(SUM(v.importe) > vMinimumSalesByQuarter, + (PRIMARY KEY(workerFk)) ENGINE = MEMORY + SELECT IF(SUM(v.importe) > vMinimumSalesByQuarter, SUM(IFNULL(v.comision,0)), 0) as commission, SUM(v.importe) sales, v.Id_Trabajador workerFk - FROM bs.vendedores v + FROM bs.vendedores v WHERE v.año = vYear AND CEIL(mes/3) = vQuarter GROUP BY v.Id_Trabajador; - + -- Ranking ventas SET @position:= 0; DROP TEMPORARY TABLE IF EXISTS rankingSelling; CREATE TEMPORARY TABLE rankingSelling - (PRIMARY KEY(userFk)) ENGINE = MEMORY + (PRIMARY KEY(userFk)) ENGINE = MEMORY SELECT userFk, @position:= @position + 1 position FROM ( SELECT SUM(`v`.`importe`) AS `importe`, @@ -89520,29 +75890,29 @@ BEGIN ORDER BY SUM(`v`.`importe`) DESC LIMIT vRankingSalesRange ) t; - - CALL rankingTeamByQuarter(vYear, vQuarter); - + + CALL rankingTeamByQuarter(vYear, vQuarter); + -- comerciales que computan / total integrantes DROP TEMPORARY TABLE IF EXISTS teamNames; CREATE TEMPORARY TABLE teamNames - (PRIMARY KEY(departmentFk)) ENGINE = MEMORY + (PRIMARY KEY(departmentFk)) ENGINE = MEMORY SELECT DISTINCT departmentFk, teamPeople FROM tmp.rankingTeam; - - -- Ranking por equipos + + -- Ranking por equipos DROP TEMPORARY TABLE IF EXISTS rankingTeam; CREATE TEMPORARY TABLE rankingTeam - (PRIMARY KEY(departmentFk)) ENGINE = MEMORY + (PRIMARY KEY(departmentFk)) ENGINE = MEMORY SELECT DISTINCT departmentFk FROM teamNames LIMIT vPlusTeamRange; - + -- Ranking por nuevos clientes SET @position:= 0; DROP TEMPORARY TABLE IF EXISTS rankingNewBorn; CREATE TEMPORARY TABLE rankingNewBorn - (PRIMARY KEY(userFk)) ENGINE = MEMORY + (PRIMARY KEY(userFk)) ENGINE = MEMORY SELECT userFk, @position:= @position + 1 position FROM ( SELECT SUM(amount) AS total, @@ -89554,10 +75924,10 @@ BEGIN ORDER BY SUM(amount) DESC LIMIT vPlusNewBornRange ) t; - + -- Sumatorio de ventas - SELECT uBoss.`name` as team, - u.`name`, + SELECT uBoss.`name` as team, + u.`name`, r.commission, -- IF(rh.bossFk, 200 + (teamMembers * 30), 0) plusResponsibility, @plusRankingSellers := ((vRankingSalesRange + 1) - rs.position) * 40 plusRankingSellers, @@ -89575,11 +75945,11 @@ BEGIN LEFT JOIN rankingSelling rs ON rs.userFk = r.workerFk LEFT JOIN workerDepartment wd ON wd.workerFk = r.workerFk LEFT JOIN rankingTeam rt ON rt.departmentFk = wd.departmentFk AND r.commission - LEFT JOIN teamNames tn ON tn.departmentFk = wd.departmentFk + LEFT JOIN teamNames tn ON tn.departmentFk = wd.departmentFk LEFT JOIN vn.rankingNewBorn rnb ON rnb.userFk = r.workerFk; - + DROP TEMPORARY TABLE tmp.rankingTeam; - DROP TEMPORARY TABLE + DROP TEMPORARY TABLE rankingSelling, rankingTeam, teamNames, @@ -89591,641 +75961,32 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `worker_calculateCommission__` */; +/*!50003 DROP PROCEDURE IF EXISTS `worker_getFromHasMistake` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `worker_calculateCommission__`(vYear INT, vQuarter INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `worker_getFromHasMistake`(vDepartmentFk INT) BEGIN - DECLARE vQuarterFirstDayLastYear DATE; - DECLARE vQuarterFirstDay DATE; -/* - -- Jerarquia - DROP TEMPORARY TABLE IF EXISTS rankingHierarchy; - CREATE TEMPORARY TABLE rankingHierarchy - SELECT COUNT(*) - 1 teamMembers, wb.bossFk - FROM vn.worker ww - JOIN vn.worker wb ON ww.id = wb.bossFk - GROUP BY wb.bossFk; - */ - - -- Ranking ventas - SELECT MIN(dated) INTO vQuarterFirstDay - FROM `time` t - WHERE QUARTER(dated) = vQuarter AND t.`year` = vYear; - - SET vQuarterFirstDayLastYear = DATE_ADD(vQuarterFirstDay, INTERVAL -1 YEAR); - - SET @position:= 0; - DROP TEMPORARY TABLE IF EXISTS rankingSelling; - CREATE TEMPORARY TABLE rankingSelling - (PRIMARY KEY(userFk)) ENGINE = MEMORY - SELECT userFk, @position:= @position + 1 position - FROM ( - SELECT SUM(`v`.`importe`) AS `importe`, - `u`.`name` AS `name`, - `u`.`id` AS `userFk` - FROM - (`bs`.`vendedores` `v` - JOIN `account`.`user` `u` ON (`u`.`id` = `v`.`Id_Trabajador`)) - WHERE - `v`.`año` = vYear - AND CEIL(`v`.`mes` / 3) = vQuarter - AND `u`.`name` NOT IN ('ismaelalcolea' , 'ruben') - GROUP BY `v`.`Id_Trabajador` - ORDER BY SUM(`v`.`importe`) DESC - LIMIT 10 - ) t; - - CALL rankingTeamByQuarter(vYear, vQuarter); - - -- comerciales que computan / total integrantes - DROP TEMPORARY TABLE IF EXISTS teamNames; - CREATE TEMPORARY TABLE teamNames - (PRIMARY KEY(departmentFk)) ENGINE = MEMORY - SELECT DISTINCT departmentFk, teamPeople - FROM tmp.rankingTeam; - - -- Ranking por equipos - DROP TEMPORARY TABLE IF EXISTS rankingTeam; - CREATE TEMPORARY TABLE rankingTeam - (PRIMARY KEY(departmentFk)) ENGINE = MEMORY - SELECT DISTINCT departmentFk - FROM teamNames - LIMIT 3; - - -- Ranking por nuevos clientes - SET @position:= 0; - DROP TEMPORARY TABLE IF EXISTS rankingNewBorn; - CREATE TEMPORARY TABLE rankingNewBorn - (PRIMARY KEY(userFk)) ENGINE = MEMORY - SELECT userFk, @position:= @position + 1 position - FROM ( - SELECT SUM(amount) AS total, - n.userFk - FROM newBornSales n - WHERE n.dated >= vQuarterFirstDay - AND n.firstShipped >= vQuarterFirstDayLastYear - GROUP BY userFk - ORDER BY SUM(amount) DESC - LIMIT 10 - ) t; - - -- Ventas - DROP TEMPORARY TABLE IF EXISTS rankingSale; - CREATE TEMPORARY TABLE rankingSale - (PRIMARY KEY(workerFk)) ENGINE = MEMORY - SELECT IF(SUM(v.importe) > 120000, - SUM(IFNULL(v.comision,0)),0) as commission, - SUM(v.importe) sales, - v.Id_Trabajador workerFk - FROM bs.vendedores v - WHERE v.año = vYear AND CEIL(mes/3) = vQuarter - GROUP BY v.Id_Trabajador; - - -- Sumatorio de ventas - SELECT uBoss.`name` as team, - u.`name`, - r.commission, - -- IF(rh.bossFk, 200 + (teamMembers * 30), 0) plusResponsibility, - @plusRankingSellers := (11 - rs.position) * 40 plusRankingSellers, - @plusRankingTeam := IF(rt.departmentFk, 800, 0) plusRankingTeam, - @plusRankingNewBorn := (11 - rnb.position) * 40 plusRankingNewBorn, - IFNULL(r.commission,0) + IFNULL(@plusRankingSellers,0) + @plusRankingTeam + IFNULL(@plusRankingNewBorn, 0) total, - sales, rs.position, teamPeople, - vYear year, - vQuarter quarter - FROM rankingSale r - -- LEFT JOIN rankingHierarchy rh ON rh.bossFk = r.workerFk - JOIN account.user u ON u.id = r.workerFk - JOIN vn2008.jerarquia j ON j.worker_id = r.workerFk - LEFT JOIN `account`.`user` uBoss ON uBoss.id = j.boss_id - LEFT JOIN rankingSelling rs ON rs.userFk = r.workerFk - LEFT JOIN workerDepartment wd ON wd.workerFk = r.workerFk - LEFT JOIN rankingTeam rt ON rt.departmentFk = wd.departmentFk AND r.commission - LEFT JOIN teamNames tn ON tn.departmentFk = wd.departmentFk - LEFT JOIN vn.rankingNewBorn rnb ON rnb.userFk = r.workerFk; - - DROP TEMPORARY TABLE tmp.rankingTeam; - DROP TEMPORARY TABLE - rankingSelling, - rankingTeam, - teamNames, - rankingNewBorn, - rankingSale; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `worker_calculateSalaryRoleDelivery` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `worker_calculateSalaryRoleDelivery`(vWorkerFk INTEGER,vDateFrom DATE,vDateTo DATE) -BEGIN /** - * Calcula el salario de trabajadores para los departamentos de reparto, paletizado + * Obtiene los trabajadores de los departamentos que se les puede poner error + * @param vDepartmentFk id del departamento * - * @param vDateFrom - * @param vDateTo - * @param vWorkerFk - * @return tmp.workerSalaryRoleDelivery */ - DROP TEMPORARY TABLE IF EXISTS tmp.workerSalaryRoleDelivery; - CREATE TEMPORARY TABLE tmp.workerSalaryRoleDelivery - SELECT w.id workerFk, - r.created dated, - r.id, - SUM(t.packages) packages, - CAST(time_to_sec(TIMEDIFF( DATE_FORMAT(r.finished, '%H:%i:%s'),DATE_FORMAT(r.time, '%H:%i:%s'))) / (60 * 60) AS DECIMAL(10, 1)) hours , - r.kmEnd-r.kmStart km, - r.m3 m3Delivery, - CAST(r.m3/loadWorker AS DECIMAL(10,2)) m3Load, - CAST(rc.m3Distribution*r.m3 AS DECIMAL(10,2)) amountDelivery, - CASE loadWorker - WHEN 1 THEN CAST(r.m3/ loadWorker*rc.load1m3 AS DECIMAL(10,2)) - WHEN 2 THEN CAST(r.m3/ loadWorker*rc.load2m3 AS DECIMAL(10,2)) - WHEN 3 THEN CAST(r.m3/ loadWorker*rc.load3m3 AS DECIMAL(10,2)) - WHEN 4 THEN CAST(r.m3/ loadWorker*rc.load4m3 AS DECIMAL(10,2)) - WHEN 5 THEN CAST(r.m3/ loadWorker*rc.load5m3 AS DECIMAL(10,2)) - ELSE CAST(r.m3/ loadWorker*rc.load6m3 AS DECIMAL(10,2)) - END amountLoad, - IF(v.isKmTruckRate, rc.kmTruckRate, rc.kmRate)*(r.kmEnd-r.kmStart) amountKm, - CAST('' AS CHAR(45)) description, - CAST( 0 AS DECIMAL(10,2)) extra, - CAST( 0 AS DECIMAL(10,2)) maxSalary - FROM route r - LEFT JOIN ticket t ON t.routeFk = r.id - LEFT JOIN vehicle v ON v.id = r.vehicleFk - LEFT JOIN worker w ON w.id = r.workerFk - LEFT JOIN routeConfig rc ON TRUE - LEFT JOIN (SELECT rw.routeFk, COUNT(rw.workerFk) loadWorker - FROM routeLoadWorker rw - JOIN routeLoadWorker rw2 ON rw.routeFk = rw2.routeFk AND rw2.workerFk = vWorkerFk - GROUP BY rw2.routeFk - ) sub ON sub.routeFk=r.id - WHERE r.created BETWEEN vDateFrom AND vDateTo AND w.id = vWorkerFk - GROUP BY r.id; - - INSERT INTO tmp.workerSalaryRoleDelivery (workerFk, - dated, - id, - packages, - km, - m3Load, - amountLoad) - SELECT w.id , - r.created , - r.id, - SUM(t.packages) , - r.kmEnd-r.kmStart , - CAST(r.m3/loadWorker AS DECIMAL(10,2)) , - CASE loadWorker - WHEN 1 THEN CAST(r.m3/ loadWorker*rc.load1m3 AS DECIMAL(10,2)) - WHEN 2 THEN CAST(r.m3/ loadWorker*rc.load2m3 AS DECIMAL(10,2)) - WHEN 3 THEN CAST(r.m3/ loadWorker*rc.load3m3 AS DECIMAL(10,2)) - WHEN 4 THEN CAST(r.m3/ loadWorker*rc.load4m3 AS DECIMAL(10,2)) - WHEN 5 THEN CAST(r.m3/ loadWorker*rc.load5m3 AS DECIMAL(10,2)) - ELSE CAST(r.m3/ loadWorker*rc.load6m3 AS DECIMAL(10,2)) - END - FROM (SELECT rw.routeFk, COUNT(rw.workerFk) loadWorker - FROM routeLoadWorker rw - JOIN routeLoadWorker rw2 ON rw.routeFk = rw2.routeFk AND rw2.workerFk = vWorkerFk - GROUP BY rw2.routeFk) sub - LEFT JOIN route r ON sub.routeFk = r.id - LEFT JOIN ticket t ON t.routeFk = r.id - LEFT JOIN worker w ON w.id = r.workerFk - LEFT JOIN routeConfig rc ON TRUE - WHERE r.created BETWEEN vDateFrom AND vDateTo AND w.id <> vWorkerFk - GROUP BY r.id; + SELECT w.id,w.firstName, w.lastName,d.name + FROM worker w + JOIN workerDepartment wd ON wd.workerFk = w.id + JOIN department d ON d.id = wd.departmentFk + WHERE d.id = vDepartmentFk + ORDER BY firstName; - INSERT INTO tmp.workerSalaryRoleDelivery(workerFk, - dated, - description, - extra) - SELECT workerFk, - dated, - GROUP_CONCAT(ra.name) , - CAST(SUM(rc.price) AS DECIMAL(9,2)) - FROM routeComplement rc - JOIN routeAction ra ON rc.routeActionFk=ra.id - WHERE dated BETWEEN vDateFrom AND vDateTo AND workerFk=vWorkerFk - GROUP BY dated; - - CALL timeBusiness_calculateByWorker(vWorkerFk, vDateFrom, vDateTo); - - INSERT INTO tmp.workerSalaryRoleDelivery (workerFk, - dated, - description, - extra) - SELECT w.id, - tb.dated, - tb.type COLLATE utf8_general_ci, - CASE - WHEN tb.type = 'Vacaciones 1/2 día' OR tb.type = 'Permiso retribuido 1/2 día' - THEN CAST(((12 * blp.importepactado) / (52 * tb.hoursWeek)) * 4 AS DECIMAL(10,2)) - WHEN tb.type = 'Vacaciones' OR tb.type = 'Baja enfermedad común' OR tb.type = 'Permiso retribuido' OR tb.type = 'Festivo' - THEN CAST(((12 * blp.importepactado) / (52 * tb.hoursWeek)) * 8 AS DECIMAL(10,2)) - WHEN tb.type = 'Maternidad/Paternidad' - THEN 0 - END - FROM worker w - JOIN tmp.timeBusinessCalculate tb ON tb.userFk = w.id - JOIN postgresql.business_labour_payroll blp ON blp.business_id = tb.businessFk - JOIN time tm ON tm.dated = tb.dated - WHERE tb.dated BETWEEN vDateFrom AND vDateTo AND - w.id = vWorkerFk AND - tb.type IN ('Vacaciones 1/2 día', 'Vacaciones', 'Baja enfermedad común','Festivo','Permiso retribuido 1/2 día','Permiso retribuido', 'Maternidad/Paternidad') - GROUP BY tb.dated; - - INSERT INTO tmp.workerSalaryRoleDelivery (workerFk, - dated, - m3Delivery, - amountLoad, - description) - SELECT wdc.workerFk , - r.created, - SUM(r.m3) , - CASE - WHEN wdc.category = 1 - THEN CAST(SUM(r.m3) * rc.distributionM3Category1 AS DECIMAL (10,2)) - WHEN wdc.category = 2 - THEN CAST(SUM(r.m3) * rc.distributionM3Category2 AS DECIMAL (10,2)) - END amountLoad, - 'Gestión de la distribución' description - FROM route r - JOIN agencyMode am ON am.id= r.agencyModeFk - JOIN agency a ON a.id = am.agencyFk - JOIN workerDistributionCategory wdc ON wdc.workerFk = vWorkerFk - JOIN workerLabour wl ON r.created BETWEEN wl.started AND IFNULL(wl.ended, CURDATE()) AND wl.workerFk = wdc.workerFk AND a.workCenterFk = wl.workCenterFk - JOIN department v ON v.id = departmentFk - JOIN routeConfig rc - WHERE r.m3>0 AND created BETWEEN vDateFrom AND vDateTo AND - am.name NOT LIKE "REC_%" AND - v.name= "REPARTO" - GROUP BY r.created; - - INSERT INTO tmp.workerSalaryRoleDelivery (workerFk, - dated, - m3Delivery, - amountLoad, - description) - SELECT sub.workerFk, - r.created, - SUM(r.m3), - CAST( (SUM(r.m3)*sub.percentage /100) * rc.m3Palletization AS DECIMAL (10,2) ), - 'Gestión de paletizado' - FROM route r - JOIN agencyMode am ON am.id= r.agencyModeFk - JOIN agency a ON a.id = am.agencyFk - JOIN (SELECT percentage,workerFk ,dated - FROM routeUserPercentage ru - WHERE workerFk = vWorkerFk AND ru.dated <= vDateTo - ORDER BY dated DESC LIMIT 1 - ) sub - JOIN routeConfig rc - JOIN workerLabour wl ON r.created BETWEEN wl.started AND IFNULL(wl.ended, CURDATE()) AND - wl.workerFk = sub.workerFk - JOIN department v ON v.id = departmentFk - WHERE r.m3>0 AND - r.created BETWEEN vDateFrom AND vDateTo AND - am.name NOT LIKE "REC_%" AND - v.name= "PALETIZADO" - GROUP BY r.created; - - DROP TEMPORARY TABLE IF EXISTS tmp.daysToRateHoliday; - CREATE TEMPORARY TABLE tmp.daysToRateHoliday - SELECT * - FROM tmp.workerSalaryRoleDelivery tb - WHERE (tb.description IN ('Festivo') OR dayofweek(tb.dated)=1) AND tb.extra = 0 ; - -/* INSERT INTO tmp.workerSalaryRoleDelivery (workerFk,dated,id,packages,hours,km,m3Delivery,m3Load,amountDelivery,amountLoad,AmountKm,description, extra) - SELECT workerFk, - dated, - d.id, - packages, - hours, - km, - m3Delivery, - m3Load, - amountDelivery * r.rateHoliday, - amountLoad * r.rateHoliday, - AmountKm * r.rateHoliday, - CONCAT('Plus festivo: ',description), - extra - FROM tmp.daysToRateHoliday d - LEFT JOIN routeConfig r ON TRUE;*/ - - DROP TEMPORARY TABLE IF EXISTS tmp.daysToDelete; - CREATE TEMPORARY TABLE tmp.daysToDelete - SELECT dated - FROM tmp.workerSalaryRoleDelivery d - WHERE d.description IN ('Baja enfermedad común', 'Maternidad/Paternidad'); - - DELETE d - FROM tmp.workerSalaryRoleDelivery d - JOIN tmp.daysToDelete dd on dd.dated = d.dated - WHERE d.description NOT IN ('Baja enfermedad común', 'Maternidad/Paternidad'); - - INSERT INTO tmp.workerSalaryRoleDelivery (workerFk, - dated, - description, - extra, - maxSalary) - SELECT wdc.workerFk , - CONCAT(YEAR(t.dated),'-', MONTH(t.dated),'-01') , - CASE - WHEN wdc.category = 1 - THEN rc.plusCategory1Concept - WHEN wdc.category = 2 - THEN rc.plusCategory2Concept - END, - CASE - WHEN wdc.category = 1 - THEN CAST(rc.plusCategory1 AS DECIMAL (10,2)) - WHEN wdc.category = 2 - THEN CAST(rc.plusCategory2 AS DECIMAL (10,2)) - END, - CASE - WHEN wdc.category = 1 - THEN CAST(rc.maxSalaryCategory1 AS DECIMAL (10,2)) - WHEN wdc.category = 2 - THEN CAST(rc.maxSalaryCategory2 AS DECIMAL (10,2)) - END - FROM worker w - JOIN workerDistributionCategory wdc ON wdc.workerFk = w.id - JOIN routeConfig rc - JOIN time t on t.dated BETWEEN vDateFrom AND vDateTo - WHERE w.id = vWorkerFk - GROUP BY MONTH(t.dated), YEAR(t.dated); - - DROP TEMPORARY TABLE tmp.daysToRateHoliday; - DROP TEMPORARY TABLE tmp.daysToDelete; - DROP TEMPORARY TABLE tmp.timeBusinessCalculate; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `worker_calculateSalaryRoleDelivery__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `worker_calculateSalaryRoleDelivery__`(vWorkerFk INTEGER,vDateFrom DATE,vDateTo DATE) -BEGIN -/** - * Calcula el salario de trabajadores para los departamentos de reparto, paletizado - * - * @param vDateFrom - * @param vDateTo - * @param vWorkerFk - * @return tmp.workerSalaryRoleDelivery - */ - DROP TEMPORARY TABLE IF EXISTS tmp.workerSalaryRoleDelivery; - - CREATE TEMPORARY TABLE tmp.workerSalaryRoleDelivery - SELECT w.id workerFk, - r.created dated, - r.id, - SUM(t.packages) packages, - CAST(time_to_sec(TIMEDIFF( DATE_FORMAT(r.finished, '%H:%i:%s'),DATE_FORMAT(r.time, '%H:%i:%s'))) / (60 * 60) AS DECIMAL(10, 1)) hours , - r.kmEnd-r.kmStart km, - r.m3 m3Delivery, - CAST(r.m3/loadWorker AS DECIMAL(10,2)) m3Load, - CAST(rc.m3Distribution*m3 AS DECIMAL(10,2)) amountDelivery , - CASE loadWorker - WHEN 1 THEN CAST(r.m3/ loadWorker*rc.load1m3 AS DECIMAL(10,2)) - WHEN 2 THEN CAST(r.m3/ loadWorker*rc.load2m3 AS DECIMAL(10,2)) - WHEN 3 THEN CAST(r.m3/ loadWorker*rc.load3m3 AS DECIMAL(10,2)) - WHEN 4 THEN CAST(r.m3/ loadWorker*rc.load4m3 AS DECIMAL(10,2)) - WHEN 5 THEN CAST(r.m3/ loadWorker*rc.load5m3 AS DECIMAL(10,2)) - ELSE CAST(r.m3/ loadWorker*rc.load6m3 AS DECIMAL(10,2)) - END amountLoad, - rc.kmRate*(r.kmEnd-r.kmStart) amountKm, - w.code, - CAST('' AS CHAR(45)) description, - CAST( 0 AS DECIMAL(10,2)) extra - FROM ticket t - LEFT JOIN route r ON t.routeFk = r.id - LEFT JOIN worker w ON w.id = r.workerFk - LEFT JOIN routeConfig rc ON TRUE - LEFT JOIN (SELECT rw.routeFk, COUNT(rw.workerFk) loadWorker - FROM routeLoadWorker rw - JOIN routeLoadWorker rw2 ON rw.routeFk = rw2.routeFk AND rw2.workerFk = vWorkerFk - GROUP BY rw2.routeFk - ) sub ON sub.routeFk=r.id - WHERE r.created BETWEEN vDateFrom AND vDateTo AND w.id = vWorkerFk - GROUP BY r.id; - - INSERT INTO tmp.workerSalaryRoleDelivery - SELECT w.id workerFk, - r.created dated, - r.id, - SUM(t.packages) packages, - NULL hours, - r.kmEnd-r.kmStart km, - NULL m3Delivery, - CAST(r.m3/loadWorker AS DECIMAL(10,2)) m3Load, - NULL amountDelivery, - CASE loadWorker - WHEN 1 THEN CAST(r.m3/ loadWorker*rc.load1m3 AS DECIMAL(10,2)) - WHEN 2 THEN CAST(r.m3/ loadWorker*rc.load2m3 AS DECIMAL(10,2)) - WHEN 3 THEN CAST(r.m3/ loadWorker*rc.load3m3 AS DECIMAL(10,2)) - WHEN 4 THEN CAST(r.m3/ loadWorker*rc.load4m3 AS DECIMAL(10,2)) - WHEN 5 THEN CAST(r.m3/ loadWorker*rc.load5m3 AS DECIMAL(10,2)) - ELSE CAST(r.m3/ loadWorker*rc.load6m3 AS DECIMAL(10,2)) - END amountLoad, - NULL amountKm, - w.code, - NULL description, - NULL extra - FROM (SELECT rw.routeFk, COUNT(rw.workerFk) loadWorker - FROM routeLoadWorker rw - JOIN routeLoadWorker rw2 ON rw.routeFk = rw2.routeFk AND rw2.workerFk = vWorkerFk - GROUP BY rw2.routeFk) sub - LEFT JOIN route r ON sub.routeFk = r.id - LEFT JOIN ticket t ON t.routeFk = r.id - LEFT JOIN worker w ON w.id = r.workerFk - LEFT JOIN routeConfig rc ON TRUE - WHERE r.created BETWEEN vDateFrom AND vDateTo AND w.id <> vWorkerFk - GROUP BY r.id; - - INSERT INTO tmp.workerSalaryRoleDelivery - SELECT workerFk, - dated, - NULL id, - NULL packages, - NULL hours, - NULL km, - NULL m3Delivery, - NULL m3Load, - NULL amountDelivery, - NULL amountLoad, - NULL amountKm, - NULL workerCode, - GROUP_CONCAT(ra.name) description, - CAST(SUM(rc.price) AS DECIMAL(9,2)) extra - FROM routeComplement rc - JOIN routeAction ra ON rc.routeActionFk=ra.id - WHERE dated BETWEEN vDateFrom AND vDateTo AND workerFk=vWorkerFk - GROUP BY dated; - - CALL timeBusiness_calculateByWorker(vWorkerFk, vDateFrom, vDateTo); - - INSERT INTO tmp.workerSalaryRoleDelivery - SELECT w.id workerFk, - tb.dated, - NULL id, - NULL packages, - NULL hours, - NULL km, - NULL m3Delivery, - NULL m3Load, - NULL amountDelivery, - NULL amountLoad, - NULL amountKm, - NULL workerCode, - tb.type COLLATE utf8_general_ci description, - CASE - WHEN tb.type = 'Vacaciones 1/2 día' OR tb.type = 'Permiso retribuido 1/2 día' - THEN CAST(((12 * blp.importepactado) / (52 * tb.hoursWeek)) * 4 AS DECIMAL(10,2)) - WHEN tb.type = 'Vacaciones' OR tb.type = 'Baja enfermedad común' OR tb.type = 'Permiso retribuido' OR tb.type = 'Festivo' - THEN CAST(((12 * blp.importepactado) / (52 * tb.hoursWeek)) * 8 AS DECIMAL(10,2)) - END extra - FROM worker w - JOIN tmp.timeBusinessCalculate tb ON tb.userFk = w.id - JOIN postgresql.business_labour_payroll blp ON blp.business_id = tb.businessFk - JOIN time tm ON tm.dated = tb.dated - WHERE tb.dated BETWEEN vDateFrom AND vDateTo AND - w.id = vWorkerFk AND - tb.type IN ('Vacaciones 1/2 día', 'Vacaciones', 'Baja enfermedad común','Festivo','Permiso retribuido 1/2 día','Permiso retribuido') - GROUP BY tb.dated; - - INSERT INTO tmp.workerSalaryRoleDelivery - SELECT sub.workerFk workerFk, - r.created dated, - NULL id, - NULL packages, - NULL hours, - NULL km, - SUM(r.m3) m3Delivery, - NULL m3Load, - NULL amountDelivery, - CAST( (SUM(r.m3)*sub.percentage /100) * rc.m3Management AS DECIMAL (10,2) ) amountLoad, - NULL amountKm, - NULL workerCode, - 'Gestión de la distribución' description, - NULL extra - FROM route r - JOIN agencyMode am ON am.id= r.agencyModeFk - JOIN agency a ON a.id = am.agencyFk - JOIN (SELECT percentage,workerFk ,dated - FROM routeUserPercentage ru - WHERE workerFk = vWorkerFk AND ru.dated <= vDateTo - ORDER BY dated DESC LIMIT 1 - ) sub - JOIN workerLabour wl ON r.created BETWEEN wl.started AND IFNULL(wl.ended, CURDATE()) AND wl.workerFk = sub.workerFk AND a.workCenterFk = wl.workCenterFk - JOIN department v ON v.id = departmentFk - JOIN routeConfig rc - WHERE r.m3>0 AND created BETWEEN vDateFrom AND vDateTo AND - am.name NOT LIKE "REC_%" AND - v.name= "REPARTO" - GROUP BY r.created; - - INSERT INTO tmp.workerSalaryRoleDelivery - SELECT sub.workerFk workerFk, - r.created dated, - NULL id, - NULL packages, - NULL hours, - NULL km, - SUM(r.m3) m3Delivery, - NULL m3Load, - NULL amountDelivery, - CAST( (SUM(r.m3)*sub.percentage /100) * rc.m3Palletization AS DECIMAL (10,2) ) amountLoad, - NULL amountKm, - NULL workerCode, - 'Gestión de paletizado' description, - NULL extra - FROM route r - JOIN agencyMode am ON am.id= r.agencyModeFk - JOIN agency a ON a.id = am.agencyFk - JOIN (SELECT percentage,workerFk ,dated - FROM routeUserPercentage ru - WHERE workerFk = vWorkerFk AND ru.dated <= vDateTo - ORDER BY dated DESC LIMIT 1 - ) sub - JOIN routeConfig rc - JOIN workerLabour wl ON r.created BETWEEN wl.started AND IFNULL(wl.ended, CURDATE()) AND - wl.workerFk = sub.workerFk - JOIN department v ON v.id = departmentFk - WHERE r.m3>0 AND - r.created BETWEEN vDateFrom AND vDateTo AND - am.name NOT LIKE "REC_%" AND - v.name= "PALETIZADO" - GROUP BY r.created; - - DROP TEMPORARY TABLE IF EXISTS tmp.daysToRateHoliday; - CREATE TEMPORARY TABLE tmp.daysToRateHoliday - SELECT * - FROM tmp.workerSalaryRoleDelivery tb - WHERE (tb.description IN ('Festivo') OR dayofweek(tb.dated)=1) AND tb.extra = 0 ; - - INSERT INTO tmp.workerSalaryRoleDelivery (workerFk,dated,id,packages,hours,km,m3Delivery,m3Load,amountDelivery,amountLoad,AmountKm,code,description, extra) - SELECT workerFk, - dated, - d.id, - packages, - hours, - km, - m3Delivery, - m3Load, - amountDelivery * r.rateHoliday, - amountLoad * r.rateHoliday, - AmountKm * r.rateHoliday, - code, - CONCAT('Plus festivo: ',description), - extra - FROM tmp.daysToRateHoliday d - LEFT JOIN routeConfig r ON TRUE; - - DROP TEMPORARY TABLE IF EXISTS tmp.daysToDelete; - CREATE TEMPORARY TABLE tmp.daysToDelete - SELECT dated - FROM tmp.workerSalaryRoleDelivery d - WHERE d.description IN ('Baja enfermedad común'); - - DELETE d - FROM tmp.workerSalaryRoleDelivery d - JOIN tmp.daysToDelete dd on dd.dated = d.dated - WHERE d.description NOT IN ('Baja enfermedad común'); - - DROP TEMPORARY TABLE tmp.daysToRateHoliday; - DROP TEMPORARY TABLE tmp.daysToDelete; - DROP TEMPORARY TABLE tmp.timeBusinessCalculate; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -90236,13 +75997,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `worker_getHierarchy`(vBoss INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `worker_getHierarchy`(vBoss INT) BEGIN DECLARE EXIT HANDLER FOR 1062 BEGIN CALL util.throw('INFINITE_LOOP'); @@ -90253,7 +76014,7 @@ BEGIN (PRIMARY KEY (workerFk)) ENGINE = MEMORY SELECT vBoss AS workerFk; - + DROP TEMPORARY TABLE IF EXISTS tmp.workerHierarchyList; CREATE TEMPORARY TABLE tmp.workerHierarchyList (PRIMARY KEY (workerFk)) @@ -90264,7 +76025,7 @@ BEGIN WHILE (SELECT COUNT(*) FROM tmp.workerHierarchyList WHERE NOT isChecked) > 0 DO INSERT INTO tmp.workerHierarchyList - SELECT w.id, 0 + SELECT w.id, 0 FROM worker w JOIN workerHierarchy wh ON wh.workerFk = w.bossFk; @@ -90275,12 +76036,12 @@ BEGIN TRUNCATE workerHierarchy; INSERT INTO workerHierarchy - SELECT workerFk + SELECT workerFk FROM tmp.workerHierarchyList WHERE NOT isChecked; END WHILE; - + DROP TEMPORARY TABLE IF EXISTS workerHierarchy; END ;; DELIMITER ; @@ -90288,138 +76049,138 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `worker_getHierarch__` */; +/*!50003 DROP PROCEDURE IF EXISTS `worker_getSector` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `worker_getHierarch__`(vBoss INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `worker_getSector`() BEGIN --- eliminar no se usa - -- usar worker_getHierarchy - DECLARE EXIT HANDLER FOR 1062 BEGIN - CALL util.throw('INFINITE_LOOP'); - END; - DROP TEMPORARY TABLE IF EXISTS workerHierarch; - CREATE TEMPORARY TABLE workerHierarch - (PRIMARY KEY (workerFk)) - ENGINE = MEMORY - SELECT vBoss AS workerFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.workerHierarchList; - CREATE TEMPORARY TABLE tmp.workerHierarchList - (PRIMARY KEY (workerFk)) - ENGINE = MEMORY - SELECT vBoss AS workerFk, 0 AS isChecked; +/** + * Obtiene el sector del usuario conectado +*/ + SELECT s.id,s.description,s.warehouseFk + FROM sector s + JOIN worker w ON w.sectorFk = s.id + WHERE w.id = account.myUser_getId(); - WHILE (SELECT COUNT(*) FROM tmp.workerHierarchList WHERE NOT isChecked) > 0 DO - - INSERT INTO tmp.workerHierarchList - SELECT w.id, 0 - FROM worker w - JOIN workerHierarch wh ON wh.workerFk = w.bossFk; - - UPDATE tmp.workerHierarchList whl - JOIN workerHierarch wh ON wh.workerFk = whl.workerFk - SET whl.isChecked = 1; - - TRUNCATE workerHierarch; - - INSERT INTO workerHierarch - SELECT workerFk - FROM tmp.workerHierarchList - WHERE NOT isChecked; - - END WHILE; - - DROP TEMPORARY TABLE IF EXISTS workerHierarch; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `worker_getProductionErrors` */; +/*!50003 DROP PROCEDURE IF EXISTS `worker_updateBusiness` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `worker_getProductionErrors`(vAction VARCHAR(25), vDepartment VARCHAR(25), vStateCode VARCHAR(25) CHARSET utf8, vDatedFrom DATETIME, vDatedTo DATETIME) +CREATE DEFINER=`root`@`localhost` PROCEDURE `worker_updateBusiness`(vSelf INT) BEGIN - - DROP TEMPORARY TABLE IF EXISTS tmp.total; - - IF (vDepartment = 'Encajadores') - THEN - CREATE TEMPORARY TABLE tmp.total - ENGINE = MEMORY - SELECT e.workerFk, Count(DISTINCT t.id) AS ticketCount - FROM expedition e - JOIN ticket t ON e.ticketFk = t.id - WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo - GROUP BY e.workerFk; - ELSE - CREATE TEMPORARY TABLE tmp.total - ENGINE = MEMORY - SELECT st.workerFk, Count(DISTINCT t.id) AS ticketCount - FROM state ss - JOIN vn.saleTracking st ON st.stateFk = ss.id - JOIN vn.sale s ON s.id = st.saleFk - JOIN ticket t ON s.ticketFk = t.id - WHERE (t.shipped BETWEEN vDatedFrom AND vDatedTo) AND ss.code = vStateCode - GROUP BY st.workerFk; - END IF; - - SELECT sub1.id, sub1.firstName, sub1.lastName, CAST(sub1.totalTickets AS DECIMAL(10,0)) AS totalTickets, CAST(IFNULL(sub1.errors,0) + IFNULL(sub2.errors,0) AS DECIMAL(10,0)) AS errors, (IFNULL(sub1.errors,0) + IFNULL(sub2.errors,0))/sub1.totalTickets AS ratio, IF(vDepartment = 'Revisadores', NULL, volume) AS volume - FROM( - SELECT w.id, w.code, w.firstName, w.lastName, t.ticketCount AS totalTickets, sub.errors, sub2.volume - FROM tmp.total AS t - JOIN worker w ON w.id = t.workerFk - LEFT JOIN ( - SELECT COUNT(c.ticketFk) AS errors, cd.workerFk - FROM claimDevelopment cd - JOIN claim c ON cd.claimFk = c.id - JOIN ticket t ON c.ticketFk = t.id - JOIN claimResponsible cr ON cd.claimResponsibleFk = cr.id - WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo AND cr.description = vDepartment - GROUP BY cd.workerFk - )sub ON t.workerFk = sub.workerFk - LEFT JOIN ( -- Añadir volume - SELECT SUM(w.volume) AS volume, w.workerFk - FROM bs.workerProductivity w - INNER JOIN vn.`role` r ON r.id=w.roleFk - WHERE IF(vDepartment = 'Encajadores', r.name='packager', r.name='itemPicker') AND w.dated BETWEEN vDatedFrom AND vDatedTo - GROUP BY w.workerFk) sub2 ON w.id = sub2.workerFk - GROUP BY w.code) sub1 - LEFT JOIN( - SELECT sub1.workerFk, COUNT(id) AS errors - FROM ( - SELECT st.workerFk, t.id - FROM vn.saleMistake sm - JOIN vn.saleTracking st ON sm.saleFk = st.saleFk - JOIN state ss ON ss.id = st.stateFk - JOIN vncontrol.accion a ON a.accion_id = st.actionFk - JOIN vn.sale s ON s.id = sm.saleFk - JOIN vn.ticket t on t.id = s.ticketFk - WHERE (t.shipped BETWEEN vDatedFrom AND vDatedTo) AND a.accion = vAction AND ss.code = vStateCode - GROUP BY s.ticketFk - ) sub1 - GROUP BY sub1.workerFk) sub2 ON sub2.workerFk = sub1.id; - - DROP TEMPORARY TABLE tmp.total; - +/** + * Actualiza en la tabla @worker el contrato actual del trabajador. + * + * @param vSelf Id del trabajador + */ + UPDATE worker w + LEFT JOIN business b ON b.workerFk = w.id + AND util.VN_CURDATE() BETWEEN b.started AND IFNULL(b.ended, util.VN_CURDATE()) + SET w.businessFk = b.id + WHERE w.id = vSelf; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `worker_updateChangedBusiness` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `worker_updateChangedBusiness`() +BEGIN +/** + * Actualiza el contrato actual de todos los trabajadores cuyo contracto ha + * empezado/vencido. + */ + DECLARE vBusinessUpdated DATE; + DECLARE vCurdate DATE DEFAULT util.VN_CURDATE(); + DECLARE vWorkerFk INT; + DECLARE vDone BOOL; + + DECLARE vCursor CURSOR FOR + SELECT DISTINCT b.workerFk + FROM business b + WHERE b.started > vBusinessUpdated AND b.started <= vCurdate + OR b.ended >= vBusinessUpdated AND b.ended < vCurdate; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + SELECT businessUpdated INTO vBusinessUpdated + FROM workerConfig; + + OPEN vCursor; + + l: LOOP + SET vDone = FALSE; + + FETCH vCursor INTO vWorkerFk; + + IF vDone THEN + LEAVE l; + END IF; + + CALL worker_updateBusiness(vWorkerFk); + END LOOP; + + UPDATE workerConfig SET businessUpdated = vCurdate; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `worker_updateSector` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `worker_updateSector`(vSectorFk INT) +BEGIN + +/** + * ACtualiza el sector del usuario conectado + * + * @param vSectorFk id del sector +*/ + UPDATE worker + SET sectorFk = vSectorFk + WHERE id = account.myUser_getId(); + + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -90427,23 +76188,22 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `workingHours` */; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workingHours`(username varchar(255), logon boolean) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workingHours`(username varchar(255), logon boolean) BEGIN DECLARE userid int(11); - + SELECT vn.getUserId(username) INTO userid; SELECT username, userid; - IF userid IS NOT NULL THEN + IF userid IS NOT NULL THEN IF (logon) THEN CALL vn.workingHoursTimeIn(userid); ELSE @@ -90456,78 +76216,73 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `workingHoursTimeIn` */; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workingHoursTimeIn`(vUserId INT(11)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workingHoursTimeIn`(vUserId INT(11)) BEGIN INSERT INTO vn.workingHours (timeIn, userId) - VALUES (NOW(),vUserId); + VALUES (util.VN_NOW(),vUserId); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `workingHoursTimeOut` */; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `workingHoursTimeOut`(vUserId INT(11)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `workingHoursTimeOut`(vUserId INT(11)) BEGIN UPDATE vn.workingHours - SET timeOut = NOW() + SET timeOut = util.VN_NOW() WHERE userId = vUserId - AND DATE(timeIn) = CURDATE(); + AND DATE(timeIn) = util.VN_CURDATE(); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `wrongEqualizatedClient` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `wrongEqualizatedClient`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `wrongEqualizatedClient`() BEGIN SELECT clientFk, c.name, c.isActive, c.isTaxDataChecked, count(ie) as num FROM vn.client c - JOIN + JOIN ( - SELECT DISTINCT + SELECT DISTINCT `a`.`clientFk` , a.isEqualizated = 0 as ie - + FROM `vn`.`address` `a` ) sub ON sub.clientFk = c.id WHERE c.hasToInvoiceByAddress = FALSE - + GROUP BY clientFk HAVING num > 1 UNION ALL @@ -90543,64 +76298,24 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `xdiarioNextId__` */; +/*!50003 DROP PROCEDURE IF EXISTS `zoneClosure_recalc` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `xdiarioNextId__`() -BEGIN -/** - * @deprecated Use ledger_next - */ - DECLARE vNewAsien INT; - DECLARE EXIT HANDLER FOR SQLEXCEPTION - BEGIN - ROLLBACK; - RESIGNAL; - END; - - START TRANSACTION; - - SELECT bookFk + 1 INTO vNewAsien FROM config FOR UPDATE; - UPDATE config SET bookFk = vNewAsien; - COMMIT; - - SELECT vNewAsien; - - DROP TEMPORARY TABLE IF EXISTS tmp.xdiarioNextId; - CREATE TEMPORARY TABLE tmp.xdiarioNextId AS - SELECT vNewAsien ; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `zoneClosure_recalc` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zoneClosure_recalc`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `zoneClosure_recalc`() proc: BEGIN /** * Recalculates the delivery time (hour) for every zone in days + scope in future */ DECLARE vScope INT; DECLARE vCounter INT DEFAULT 0; - DECLARE vShipped DATE DEFAULT CURDATE(); + DECLARE vShipped DATE DEFAULT util.VN_CURDATE(); DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN @@ -90614,93 +76329,27 @@ proc: BEGIN SELECT scope INTO vScope FROM zoneConfig; - + DROP TEMPORARY TABLE IF EXISTS tmp.zone; CREATE TEMPORARY TABLE tmp.zone (INDEX (id)) ENGINE = MEMORY SELECT id FROM zone; - + TRUNCATE TABLE zoneClosure; - + WHILE vCounter <= vScope DO - + CALL zone_getOptionsForShipment(vShipped, TRUE); - + REPLACE zoneClosure(zoneFk, dated, `hour`) - SELECT zoneFk, vShipped, `hour` + SELECT zoneFk, vShipped, `hour` FROM tmp.zoneOption; - + SET vCounter = vCounter + 1; SET vShipped = TIMESTAMPADD(DAY, 1, vShipped); END WHILE; - - -- DROP TEMPORARY TABLE tmp.zone; - DO RELEASE_LOCK('vn.zoneClosure_recalc'); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `zoneClosure_recalc_beta__` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zoneClosure_recalc_beta__`() -proc: BEGIN -/** - * Recalculates the delivery time (hour) for every zone in days + scope in future - */ - DECLARE vScope INT; - DECLARE vCounter INT DEFAULT 0; - DECLARE vShipped DATE DEFAULT CURDATE(); - DECLARE CONTINUE HANDLER FOR SQLEXCEPTION - BEGIN - DO RELEASE_LOCK('vn.zoneClosure_recalc'); - RESIGNAL; - END; - - IF NOT GET_LOCK('vn.zoneClosure_recalc', 0) THEN - LEAVE proc; - END IF; - - SELECT scope INTO vScope - FROM zoneConfig; - - DROP TEMPORARY TABLE IF EXISTS tmp.zone; - CREATE TEMPORARY TABLE tmp.zone - (INDEX (id)) - ENGINE = MEMORY - SELECT id FROM zone; - - WHILE vCounter <= vScope DO - - DELETE FROM zoneClosure - WHERE dated = vShipped; - - SELECT vShipped; - - CALL zone_getOptionsForShipment_beta(vShipped, TRUE); - - REPLACE zoneClosure(zoneFk, dated, `hour`) - SELECT zoneFk, vShipped, `hour` - FROM tmp.zoneOption; - - SET vCounter = vCounter + 1; - SET vShipped = TIMESTAMPADD(DAY, 1, vShipped); - END WHILE; - - SELECT * - FROM tmp.zoneOption; - -- DROP TEMPORARY TABLE tmp.zone; DO RELEASE_LOCK('vn.zoneClosure_recalc'); END ;; @@ -90715,11 +76364,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zoneGeo_calcTree`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `zoneGeo_calcTree`() BEGIN /** * Calculates the #path, #lft, #rgt, #sons and #depth columns of @@ -90759,11 +76408,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zoneGeo_calcTreeRec`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `zoneGeo_calcTreeRec`( vSelf INT, vPath VARCHAR(255), vDepth INT, @@ -90794,7 +76443,7 @@ BEGIN OR (vSelf IS NOT NULL AND parentFk = vSelf); DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - + SET vSons = 0; OPEN vChildren; @@ -90805,11 +76454,11 @@ BEGIN IF vDone THEN LEAVE myLoop; END IF; - + SET vIndex = vIndex + 1; SET vLft = vIndex; SET vSons = vSons + 1; - + CALL zoneGeo_calcTreeRec( vChildFk, CONCAT(vPath, vChildFk, '/'), @@ -90841,11 +76490,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zoneGeo_checkName`(vName VARCHAR(255)) +CREATE DEFINER=`root`@`localhost` PROCEDURE `zoneGeo_checkName`(vName VARCHAR(255)) BEGIN IF vName = '' THEN SIGNAL SQLSTATE '45000' @@ -90863,11 +76512,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zoneGeo_delete`(vSelf INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `zoneGeo_delete`(vSelf INT) BEGIN /** * Deletes a node from the #zoneGeo table. Also sets a mark @@ -90889,11 +76538,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zoneGeo_doCalc`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `zoneGeo_doCalc`() proc: BEGIN /** * Recalculates the zones tree. @@ -90912,7 +76561,7 @@ proc: BEGIN SELECT isChanged INTO vIsChanged FROM zoneGeoRecalc; - + IF vIsChanged THEN UPDATE zoneGeoRecalc SET isChanged = FALSE; CALL vn.zoneGeo_calcTree; @@ -90931,11 +76580,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zoneGeo_setParent`(vSelf INT, vParentFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `zoneGeo_setParent`(vSelf INT, vParentFk INT) BEGIN /** * Updates the parent of a node. Also sets a mark @@ -90960,11 +76609,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zoneGeo_throwNotEditable`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `zoneGeo_throwNotEditable`() BEGIN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Column `geoFk` cannot be modified'; @@ -90974,128 +76623,33 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `zonePromo_Make__` */; +/*!50003 DROP PROCEDURE IF EXISTS `zone_excludeFromGeo` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zonePromo_Make__`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_excludeFromGeo`(vZoneGeo INT) BEGIN - - INSERT INTO vn.sale(ticketFk, itemFk, quantity, concept, price) - SELECT t.id , 98, - packages, '-- DIA DE COMPRA BONIFICADO --', zp.amount - FROM vn.ticket t - JOIN vn.zonePromo zp ON zp.zoneFk = t.zoneFk AND zp.dated = DATE(t.shipped) - WHERE zp.isDone = FALSE - AND zp.dated < CURDATE() - AND t.refFk IS NULL; - - UPDATE vn.zonePromo - SET isDone = TRUE - WHERE dated < CURDATE(); - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `zone_doCalcInitialize` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_doCalcInitialize`() -proc: BEGIN /** - * Initialize ticket + * Excluye zonas a partir un geoFk. + * + * @table tmp.zoneOption(zoneFk, hour, travelingDays, price, bonus, landed, shipped) The computed options + * @param vZoneGeo The zone geo + * @return tmp.zoneOption The computed options */ - DECLARE vDone BOOL; - DECLARE vLanded DATE; - DECLARE vZoneFk INT; - - DECLARE cCur CURSOR FOR - SELECT t.landed, t.zoneFk - FROM ticket t - WHERE shipped >= '2020-03-01' - AND zoneFk IS NOT NULL and zonePrice IS NULL - GROUP BY zoneFk, shipped; - - DECLARE CONTINUE HANDLER FOR NOT FOUND - SET vDone = TRUE; - - OPEN cCur; - - myLoop: LOOP - SET vDone = FALSE; - FETCH cCur INTO vLanded, vZoneFk; - - IF vDone THEN - LEAVE myLoop; - END IF; - - DROP TEMPORARY TABLE IF EXISTS tmp.zone; - CREATE TEMPORARY TABLE tmp.zone - (INDEX (id)) - ENGINE = MEMORY - SELECT vZoneFk id; - - CALL zone_getOptionsForLanding(vLanded, TRUE); - - UPDATE ticket t - LEFT JOIN tmp.zoneOption zo ON TRUE - SET zonePrice = zo.price, zoneBonus = zo.bonus - WHERE t.zoneFk = vZoneFk AND t.landed = vLanded - AND t.zonePrice IS NULL; - - END LOOP; - - CLOSE cCur; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `zone_ETD_byTime` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_ETD_byTime`() -BEGIN - - SET @m := 0; - - DROP TEMPORARY TABLE IF EXISTS tmpZone; - CREATE TEMPORARY TABLE tmpZone - SELECT remainingVolume, - hourTheoretical, - @m := @m + minutesLess totalMinutes - FROM zoneEstimatedDelivery ze - WHERE ze.remainingVolume - ORDER BY ze.hourTheoretical DESC; - - SELECT * FROM tmpZone; - - DROP TABLE tmpZone; - + DELETE t + FROM tmp.zoneOption t + JOIN zoneExclusion e ON e.zoneFk = t.zoneFk AND e.`dated` = t.landed + LEFT JOIN zoneExclusionGeo eg ON eg.zoneExclusionFk = e.id + JOIN zoneGeo zg1 ON zg1.id = eg.geoFk + JOIN zoneGeo zg2 ON zg2.id = vZoneGeo + WHERE zg2.`path` LIKE CONCAT(zg1.`path`, zg1.id,'/%') + OR zg2.id = zg1.id; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -91108,14 +76662,14 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_getAgency`(vAddress INT, vLanded DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_getAgency`(vAddress INT, vLanded DATE) BEGIN /** - * Devuelve el listado de agencias disponibles para la fecha + * Devuelve el listado de agencias disponibles para la fecha * y dirección pasadas. * * @param vAddress Id de dirección de envío, %NULL si es recogida @@ -91128,9 +76682,9 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.zoneGetAgency; CREATE TEMPORARY TABLE tmp.zoneGetAgency (INDEX (agencyModeFk)) ENGINE = MEMORY - SELECT am.name agencyMode, + SELECT am.name agencyMode, am.description, - z.agencyModeFk, + z.agencyModeFk, am.deliveryMethodFk, TIMESTAMPADD(DAY,-zo.travelingDays, vLanded) shipped, TRUE isIncluded, @@ -91140,7 +76694,7 @@ BEGIN JOIN zone z ON z.id = zo.zoneFk JOIN agencyMode am ON am.id = z.agencyModeFk GROUP BY agencyModeFk; - + DROP TEMPORARY TABLE tmp.zone, tmp.zoneOption; @@ -91154,13 +76708,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_getAvailable`(vAddress INT, vLanded DATE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_getAvailable`(vAddress INT, vLanded DATE) BEGIN CALL zone_getFromGeo(address_getGeo(vAddress)); CALL zone_getOptionsForLanding(vLanded, FALSE); @@ -91176,20 +76730,67 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `zone_getClosed` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_getClosed`() +proc:BEGIN +/** + * Devuelve una tabla con las zonas cerradas para hoy + * + * @table tmp.closedZones(zoneFk, warehouseFk); + */ + DROP TEMPORARY TABLE IF EXISTS tmp.closedZones; + + CREATE TEMPORARY TABLE tmp.closedZones ( + `zoneFk` int(11) NOT NULL, + `warehouseFk` smallint(6) unsigned NOT NULL, + PRIMARY KEY `zoneFk` (`zoneFk`,`warehouseFk`), + KEY `warehouseFk` (`warehouseFk`)) + ENGINE=MEMORY DEFAULT CHARSET=utf8; + + INSERT INTO tmp.closedZones(zoneFk, warehouseFk) + SELECT zoneFk, warehouseFk + FROM ( + SELECT t.zoneFk, t.warehouseFk, count(DISTINCT t.id) numTickets, pc.minTicketsToCloseZone + FROM vn.ticket t + JOIN vn.expedition e ON e.ticketFk = t.id + JOIN vn.`zone`z on z.id = t.zoneFk + JOIN vn.agencyMode am ON am.id = z.agencyModeFk + JOIN vn.agency a ON a.id = am.agencyFk + JOIN vn.productionConfig pc + WHERE a.isOwn + AND pc.isZoneClosedByExpeditionActivated + AND e.created >= util.VN_CURDATE() + GROUP BY t.zoneFk, t.warehouseFk + HAVING numTickets >= minTicketsToCloseZone) sub; + END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `zone_getCollisions` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_getCollisions`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_getCollisions`() BEGIN /** - * Calcula si para un mismo codigo postal y dia + * Calcula si para un mismo codigo postal y dia * hay mas de una zona configurada y manda correo * */ @@ -91198,18 +76799,18 @@ BEGIN DECLARE vIsDone INT DEFAULT FALSE; DECLARE vTableCollisions TEXT; DECLARE cur1 CURSOR FOR SELECT zoneFk from tmp.zoneOption; - + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vIsDone = TRUE; DROP TEMPORARY TABLE IF EXISTS tmp.zone; CREATE TEMPORARY TABLE tmp.zone - SELECT z.id + SELECT z.id FROM zone z JOIN agencyMode am ON am.id = z.agencyModeFk JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk - WHERE dm.code IN ('AGENCY','DELIVERY'); + WHERE dm.code IN ('AGENCY','DELIVERY'); - CALL zone_getOptionsForShipment(CURDATE(),FALSE); + CALL zone_getOptionsForShipment(util.VN_CURDATE(),FALSE); DROP TEMPORARY TABLE IF EXISTS tmp.zoneNodes; CREATE TEMPORARY TABLE tmp.zoneNodes ( @@ -91222,7 +76823,7 @@ BEGIN PRIMARY KEY zoneFkk (zoneFk, geoFk), INDEX(geoFk)) ENGINE = MEMORY; - + OPEN cur1; cur1Loop: LOOP SET vIsDone = FALSE; @@ -91230,40 +76831,40 @@ BEGIN IF vIsDone THEN LEAVE cur1Loop; END IF; - + CALL zone_getLeaves2(vZoneFk, NULL, NULL); - myLoop: LOOP + myLoop: LOOP SET vGeoFk = NULL; - SELECT geoFk INTO vGeoFk + SELECT geoFk INTO vGeoFk FROM tmp.zoneNodes zn WHERE NOT isChecked LIMIT 1; - + IF vGeoFk IS NULL THEN LEAVE myLoop; END IF; - + CALL zone_getLeaves2(vZoneFk, vGeoFk, NULL); UPDATE tmp.zoneNodes - SET isChecked = TRUE + SET isChecked = TRUE WHERE geoFk = vGeoFk; END LOOP; END LOOP; CLOSE cur1; - DELETE FROM tmp.zoneNodes + DELETE FROM tmp.zoneNodes WHERE sons > 0; - + DROP TEMPORARY TABLE IF EXISTS geoCollision; CREATE TEMPORARY TABLE geoCollision SELECT z.agencyModeFk, zn.geoFk, zw.warehouseFk FROM tmp.zoneNodes zn JOIN zone z ON z.id = zn.zoneFk - JOIN zoneWarehouse zw ON z.id = zw.zoneFk + JOIN zoneWarehouse zw ON z.id = zw.zoneFk GROUP BY z.agencyModeFk, zn.geoFk, zw.warehouseFk HAVING count(*) > 1; - + SELECT ' @@ -91273,39 +76874,39 @@ BEGIN ' INTO vTableCollisions; - - INSERT INTO mail (receiver,replyTo,subject,body) + + INSERT INTO mail (receiver,replyTo,subject,body) SELECT 'pepe@verdnatura.es' receiver, 'noreply@verdnatura.es' replyTo, - CONCAT('Colisiones en zonas ', CURDATE()) subject, + CONCAT('Colisiones en zonas ', util.VN_CURDATE()) subject, CONCAT(vTableCollisions, GROUP_CONCAT(sub.td SEPARATOR ''), '
C.PostalAlmacén Salix
') body - FROM(SELECT + FROM(SELECT CONCAT(' ', zn.name, ' ', zoneFk,' ', z.price,' ', z.name,' ', w.name, ' - ', CONCAT('' - 'https://salix.verdnatura.es/#!/zone/', + 'https://salix.verdnatura.es/#!/zone/', zoneFk, '/location?q=%7B%22search%22:%22', - zn.name, + zn.name, '%22%7D'),' ') td FROM tmp.zoneNodes zn JOIN zone z ON z.id = zn.zoneFk JOIN geoCollision gc ON gc.agencyModeFk = z.agencyModeFk AND zn.geoFk = gc.geoFk JOIN warehouse w ON w.id = gc.warehouseFk) sub; - - DROP TEMPORARY TABLE - geoCollision, + + DROP TEMPORARY TABLE + geoCollision, tmp.zone, tmp.zoneNodes; END ;; @@ -91318,13 +76919,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_getEvents`( +CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_getEvents`( vGeoFk INT, vAgencyModeFk INT) BEGIN @@ -91335,17 +76936,17 @@ BEGIN * @param vAgencyModeFk The agency mode id */ DECLARE vDeliveryMethodFk VARCHAR(255); - + DROP TEMPORARY TABLE IF EXISTS tZone; CREATE TEMPORARY TABLE tZone (id INT PRIMARY KEY) ENGINE = MEMORY; - + SELECT dm.`code` INTO vDeliveryMethodFk FROM agencyMode am JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk WHERE am.id = vAgencyModeFk; - + IF vDeliveryMethodFk = 'PICKUP' THEN INSERT INTO tZone SELECT id @@ -91362,24 +76963,28 @@ BEGIN WHERE z.agencyModeFk = vAgencyModeFk; ELSE INSERT INTO tZone - SELECT t.id + SELECT t.id FROM tmp.zone t JOIN zone z ON z.id = t.id - JOIN agencyMode am ON am.id = z.agencyModeFk + JOIN agencyMode am ON am.id = z.agencyModeFk JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk WHERE dm.`code` IN ('AGENCY', 'DELIVERY'); END IF; DROP TEMPORARY TABLE tmp.zone; END IF; - + SELECT e.zoneFk, e.`type`, e.dated, e.`started`, e.`ended`, e.weekDays FROM tZone t JOIN zoneEvent e ON e.zoneFk = t.id; SELECT e.zoneFk, e.dated FROM tZone t - JOIN zoneExclusion e ON e.zoneFk = t.id; - + JOIN zoneExclusion e ON e.zoneFk = t.id + LEFT JOIN zoneExclusionGeo eg ON eg.zoneExclusionFk = e.id + JOIN zoneGeo zg1 ON zg1.id = eg.geoFk + JOIN zoneGeo zg2 ON zg2.id = vGeoFk + WHERE eg.zoneExclusionFk IS NULL OR zg2.`path` LIKE CONCAT(zg1.`path`,'%'); + DROP TEMPORARY TABLE tZone; END ;; DELIMITER ; @@ -91391,13 +76996,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_getFromGeo`(vGeoFk INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_getFromGeo`(vGeoFk INT) BEGIN /** * Returns all zones which have the passed geo included. @@ -91408,18 +77013,18 @@ BEGIN DECLARE vChildFk INT DEFAULT vGeoFk; DECLARE vParentFk INT; DECLARE vLevel INT DEFAULT 1; - + DROP TEMPORARY TABLE IF EXISTS tNodes; CREATE TEMPORARY TABLE tNodes (PRIMARY KEY (id)) ENGINE = MEMORY SELECT vGeoFk id, vLevel `level`; - + myLoop: LOOP SELECT parentFk INTO vParentFk FROM zoneGeo WHERE id = vChildFk; - + SET vChildFk = vParentFk; SET vLevel = vLevel + 1; @@ -91427,7 +77032,7 @@ BEGIN SELECT vChildFk, vLevel FROM DUAL WHERE vChildFk IS NOT NULL; - + IF ROW_COUNT() = 0 THEN LEAVE myLoop; END IF; @@ -91444,6 +77049,7 @@ BEGIN FROM tNodes n JOIN zoneIncluded i ON i.geoFk = n.id ORDER BY zoneFk, n.`level` + LIMIT 10000000000000000000 ) t GROUP BY id HAVING isIncluded ) t; @@ -91459,43 +77065,54 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_getLanded`(vShipped DATE, vAddressFk INT, vAgencyModeFk INT, vWarehouseFk INT, vShowExpiredZones BOOLEAN) +CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_getLanded`(vShipped DATE, vAddressFk INT, vAgencyModeFk INT, vWarehouseFk INT, vShowExpiredZones BOOLEAN) BEGIN /** -* Devuelve una tabla temporal con el dia de recepcion para vShipped. -* -* @param vShipped Fecha de preparacion de mercancia -* @param vAddressFk Id de consignatario, %NULL para recogida -* @param vAgencyModeFk Id agencia -* @param vWarehouseFk vWarehouseFk -* @table tmp.zoneGetLanded Datos de recepción -*/ + * Devuelve una tabla temporal con el dia de recepcion para vShipped. + * Excluye las que tengan cajas preparadas + * + * @param vShipped Fecha de preparacion de mercancia + * @param vAddressFk Id de consignatario, %NULL para recogida + * @param vAgencyModeFk Id agencia + * @param vWarehouseFk vWarehouseFk + * @table tmp.zoneGetLanded Datos de recepción + */ + DECLARE vZoneGeo INT; - CALL zone_getFromGeo(address_getGeo(vAddressFk)); - CALL zone_getOptionsForShipment(vShipped, vShowExpiredZones); + SELECT address_getGeo(vAddressFk) INTO vZoneGeo; + + CALL vn.zone_getFromGeo(vZoneGeo); + CALL vn.zone_getOptionsForShipment(vShipped, vShowExpiredZones); + CALL vn.zone_excludeFromGeo(vZoneGeo); + CALL vn.zone_getClosed(); DROP TEMPORARY TABLE IF EXISTS tmp.zoneGetLanded; CREATE TEMPORARY TABLE tmp.zoneGetLanded ENGINE = MEMORY SELECT vWarehouseFk warehouseFk, - TIMESTAMPADD(DAY,zo.travelingDays, vShipped) landed, + TIMESTAMPADD(DAY,zo.travelingDays, vShipped) landed, zo.zoneFk FROM tmp.zoneOption zo - JOIN zone z ON z.id = zo.zoneFk - JOIN zoneWarehouse zw ON zw.zoneFk = z.id - WHERE agencyModeFk = vAgencyModeFk - AND zw.warehouseFk = vWarehouseFk; - + JOIN vn.`zone` z ON z.id = zo.zoneFk + JOIN vn.zoneWarehouse zw ON zw.zoneFk = z.id + LEFT JOIN tmp.closedZones cz + ON cz.warehouseFk = zw.warehouseFk + AND cz.zoneFk = zw.zoneFk + AND zo.shipped = util.VN_CURDATE() + WHERE z.agencyModeFk = vAgencyModeFk + AND zw.warehouseFk = vWarehouseFk + AND (ISNULL(cz.zoneFk) OR vShowExpiredZones); + DROP TEMPORARY TABLE - tmp.zone, - tmp.zoneOption; - + tmp.`zone`, + tmp.zoneOption, + tmp.closedZones; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -91508,12 +77125,12 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_getLeaves`(vSelf INT, vParentFk INT, vSearch VARCHAR(255)) -BEGIN +CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_getLeaves`(vSelf INT, vParentFk INT, vSearch VARCHAR(255)) +BEGIN /** * Devuelve las ubicaciones incluidas en la ruta y que sean hijos de parentFk. * @param vSelf Id de la zona @@ -91527,23 +77144,23 @@ BEGIN CREATE TEMPORARY TABLE tNodes (UNIQUE (id)) ENGINE = MEMORY - SELECT id - FROM zoneGeo + SELECT id + FROM zoneGeo LIMIT 0; IF vIsSearch THEN SET vIsNumber = vSearch REGEXP '^[0-9]+$'; - + INSERT INTO tNodes - SELECT id + SELECT id FROM zoneGeo WHERE (vIsNumber AND `name` = vSearch) OR (!vIsNumber AND `name` LIKE CONCAT('%', vSearch, '%')) LIMIT 1000; - + ELSEIF vParentFk IS NULL THEN INSERT INTO tNodes - SELECT geoFk + SELECT geoFk FROM zoneIncluded WHERE zoneFk = vSelf; END IF; @@ -91552,14 +77169,14 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tChilds; CREATE TEMPORARY TABLE tChilds ENGINE = MEMORY - SELECT id + SELECT id FROM tNodes; DROP TEMPORARY TABLE IF EXISTS tParents; CREATE TEMPORARY TABLE tParents ENGINE = MEMORY - SELECT id - FROM zoneGeo + SELECT id + FROM zoneGeo LIMIT 0; myLoop: LOOP @@ -91569,27 +77186,27 @@ BEGIN FROM zoneGeo g JOIN tChilds c ON c.id = g.id WHERE g.parentFk IS NOT NULL; - + INSERT IGNORE INTO tNodes - SELECT id + SELECT id FROM tParents; - + IF ROW_COUNT() = 0 THEN LEAVE myLoop; END IF; - + DELETE FROM tChilds; INSERT INTO tChilds - SELECT id + SELECT id FROM tParents; END LOOP; - + DROP TEMPORARY TABLE tChilds, tParents; END IF; IF !vIsSearch THEN INSERT IGNORE INTO tNodes - SELECT id + SELECT id FROM zoneGeo WHERE parentFk <=> vParentFk; END IF; @@ -91617,18 +77234,18 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_getLeaves2`(vSelf INT, vParentFk INT, vSearch VARCHAR(255)) -BEGIN +CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_getLeaves2`(vSelf INT, vParentFk INT, vSearch VARCHAR(255)) +BEGIN /** * Devuelve los geoFk incluidos en la ruta y que sean hijos de parentFk * @param vSelf Id de la zona * @param vParentFk Id del geo a calcular * @param vSearch cadena a buscar - * + * * @return tmp.zoneNodes(geoFk, name, parentFk, sons, isChecked, zoneFk) * */ @@ -91639,23 +77256,23 @@ BEGIN CREATE TEMPORARY TABLE tNodes (UNIQUE (id)) ENGINE = MEMORY - SELECT id - FROM zoneGeo + SELECT id + FROM zoneGeo LIMIT 0; IF vIsSearch THEN SET vIsNumber = vSearch REGEXP '^[0-9]+$'; INSERT INTO tNodes - SELECT id + SELECT id FROM zoneGeo WHERE (vIsNumber AND `name` = vSearch) OR (!vIsNumber AND `name` LIKE CONCAT('%', vSearch, '%')) LIMIT 1000; - + ELSEIF vParentFk IS NULL THEN INSERT INTO tNodes - SELECT geoFk + SELECT geoFk FROM zoneIncluded WHERE zoneFk = vSelf; END IF; @@ -91665,15 +77282,15 @@ BEGIN CREATE TEMPORARY TABLE tChilds (INDEX(id)) ENGINE = MEMORY - SELECT id + SELECT id FROM tNodes; DROP TEMPORARY TABLE IF EXISTS tParents; CREATE TEMPORARY TABLE tParents (INDEX(id)) ENGINE = MEMORY - SELECT id - FROM zoneGeo + SELECT id + FROM zoneGeo LIMIT 0; myLoop: LOOP @@ -91683,27 +77300,27 @@ BEGIN FROM zoneGeo g JOIN tChilds c ON c.id = g.id WHERE g.parentFk IS NOT NULL; - + INSERT IGNORE INTO tNodes - SELECT id + SELECT id FROM tParents; - + IF ROW_COUNT() = 0 THEN LEAVE myLoop; END IF; - + DELETE FROM tChilds; INSERT INTO tChilds - SELECT id + SELECT id FROM tParents; END LOOP; - + DROP TEMPORARY TABLE tChilds, tParents; END IF; IF !vIsSearch THEN INSERT IGNORE INTO tNodes - SELECT id + SELECT id FROM zoneGeo WHERE parentFk <=> vParentFk; END IF; @@ -91718,112 +77335,8 @@ BEGIN FROM zoneGeo g JOIN tNodes n ON n.id = g.id LEFT JOIN zoneIncluded i ON i.geoFk = g.id AND i.zoneFk = vSelf - WHERE i.isIncluded = TRUE + WHERE i.isIncluded = TRUE OR (i.isIncluded IS NULL AND vParentFk IS NOT NULL); - - DROP TEMPORARY TABLE tNodes; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `zone_getLeaves___` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_getLeaves___`( - vSelf INT, - vParentFk INT, - vSearch VARCHAR(255) -) -BEGIN - DECLARE vIsNumber BOOL; - DECLARE vIsSearch BOOL DEFAULT vSearch IS NOT NULL AND vSearch != ''; - - DROP TEMPORARY TABLE IF EXISTS tNodes; - CREATE TEMPORARY TABLE tNodes - (UNIQUE (id)) - ENGINE = MEMORY - SELECT id FROM zoneGeo LIMIT 0; - - IF vIsSearch THEN - SET vIsNumber = vSearch REGEXP '^[0-9]+$'; - - INSERT INTO tNodes - SELECT id FROM zoneGeo - WHERE (vIsNumber AND `name` = vSearch) - OR (!vIsNumber AND `name` LIKE CONCAT('%', vSearch, '%')) - LIMIT 1000; - ELSEIF vParentFk IS NULL THEN - INSERT INTO tNodes - SELECT geoFk FROM zoneIncluded - WHERE zoneFk = vSelf; - END IF; - - IF vParentFk IS NULL THEN - DROP TEMPORARY TABLE IF EXISTS tChilds; - CREATE TEMPORARY TABLE tChilds - ENGINE = MEMORY - SELECT id FROM tNodes; - - DROP TEMPORARY TABLE IF EXISTS tParents; - CREATE TEMPORARY TABLE tParents - ENGINE = MEMORY - SELECT id FROM zoneGeo LIMIT 0; - - myLoop: LOOP - DELETE FROM tParents; - INSERT INTO tParents - SELECT parentFk id - FROM zoneGeo g - JOIN tChilds c ON c.id = g.id - WHERE g.parentFk IS NOT NULL; - - INSERT IGNORE INTO tNodes - SELECT id FROM tParents; - - IF ROW_COUNT() = 0 THEN - LEAVE myLoop; - END IF; - - DELETE FROM tChilds; - INSERT INTO tChilds - SELECT id FROM tParents; - END LOOP; - - DROP TEMPORARY TABLE - tChilds, - tParents; - END IF; - - IF !vIsSearch THEN - INSERT IGNORE INTO tNodes - SELECT id FROM zoneGeo - WHERE parentFk <=> vParentFk; - END IF; - - - INSERT IGNORE INTO zoneNodes(geoFk, name, parentFk, sons, isChecked, zoneFk) - SELECT g.id, - g.`name`, - g.parentFk, - g.sons, - NOT g.sons OR type = 'country', - vSelf - FROM zoneGeo g - JOIN tNodes n ON n.id = g.id - LEFT JOIN zoneIncluded i - ON i.geoFk = g.id AND i.zoneFk = vSelf - WHERE (i.isIncluded = TRUE - OR (i.isIncluded IS NULL AND vParentFk IS NOT NULL)) - ; DROP TEMPORARY TABLE tNodes; END ;; @@ -91836,13 +77349,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_getOptionsForLanding`(vLanded DATE, vShowExpiredZones BOOLEAN) +CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_getOptionsForLanding`(vLanded DATE, vShowExpiredZones BOOLEAN) BEGIN /** * Gets computed options for the passed zones and delivery date. @@ -91850,7 +77363,7 @@ BEGIN * @table tmp.zone(id) The zones ids * @param vLanded The delivery date * @return tmp.zoneOption The computed options - */ + */ DROP TEMPORARY TABLE IF EXISTS tmp.zoneOption; CREATE TEMPORARY TABLE tmp.zoneOption ENGINE = MEMORY @@ -91860,6 +77373,7 @@ BEGIN travelingDays, price, bonus, + vLanded landed, TIMESTAMPADD(DAY, -travelingDays, vLanded) shipped FROM ( SELECT t.id zoneFk, @@ -91888,17 +77402,19 @@ BEGIN THEN 2 ELSE 3 END + LIMIT 10000000000000000000 ) t GROUP BY zoneFk; DELETE t FROM tmp.zoneOption t - JOIN zoneExclusion e - ON e.zoneFk = t.zoneFk AND e.`dated` = vLanded; + JOIN zoneExclusion e ON e.zoneFk = t.zoneFk AND e.`dated` = t.landed + LEFT JOIN zoneExclusionGeo eg ON eg.zoneExclusionFk = e.id + WHERE eg.zoneExclusionFk IS NULL; IF NOT vShowExpiredZones THEN DELETE FROM tmp.zoneOption - WHERE shipped < CURDATE() - OR (shipped = CURDATE() AND CURTIME() > `hour`); + WHERE shipped < util.VN_CURDATE() + OR (shipped = util.VN_CURDATE() AND util.VN_CURTIME() > `hour`); END IF; END ;; DELIMITER ; @@ -91912,11 +77428,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_getOptionsForShipment`(vShipped DATE, vShowExpiredZones BOOLEAN) +CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_getOptionsForShipment`(vShipped DATE, vShowExpiredZones BOOLEAN) BEGIN /** * Gets computed options for the passed zones and shipping date. @@ -91925,8 +77441,8 @@ BEGIN * @param vShipped The shipping date * @return tmp.zoneOption(zoneFk, hour, travelingDays, price, bonus, specificity) The computed options */ - DECLARE vHour TIME DEFAULT TIME(NOW()); - + DECLARE vHour TIME DEFAULT TIME(util.VN_NOW()); + DROP TEMPORARY TABLE IF EXISTS tLandings; CREATE TEMPORARY TABLE tLandings (INDEX (eventFk)) @@ -91948,7 +77464,8 @@ BEGIN l.travelingDays, IFNULL(e.price, z.price) price, IFNULL(e.bonus, z.bonus) bonus, - l.landed + l.landed, + vShipped shipped FROM tmp.zone t JOIN zone z ON z.id = t.id JOIN zoneEvent e ON e.zoneFk = t.id @@ -91971,137 +77488,22 @@ BEGIN THEN 2 ELSE 3 END + LIMIT 10000000000000000000 ) t GROUP BY zoneFk; DROP TEMPORARY TABLE tLandings; DELETE t FROM tmp.zoneOption t - JOIN zoneExclusion e - ON e.zoneFk = t.zoneFk AND e.`dated` = t.landed; + JOIN zoneExclusion e ON e.zoneFk = t.zoneFk AND e.`dated` = t.landed + LEFT JOIN zoneExclusionGeo eg ON eg.zoneExclusionFk = e.id + WHERE eg.zoneExclusionFk IS NULL; IF NOT vShowExpiredZones THEN DELETE FROM tmp.zoneOption - WHERE vShipped < CURDATE() - OR (vShipped = CURDATE() AND CURTIME() > `hour`); + WHERE vShipped < util.VN_CURDATE() + OR (vShipped = util.VN_CURDATE() AND util.VN_CURTIME() > `hour`); END IF; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `zone_getOptionsForShipment_beta` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_getOptionsForShipment_beta`(vShipped DATE, vShowExpiredZones BOOLEAN) -BEGIN -/** - * Gets computed options for the passed zones and shipping date. - * - * @table tmp.zones(id) The zones ids - * @param vShipped The shipping date - * @return tmp.zoneOption(zoneFk, hour, travelingDays, price, bonus, specificity) The computed options - */ - DECLARE vHour TIME DEFAULT TIME(NOW()); - - DROP TEMPORARY TABLE IF EXISTS tLandings; - CREATE TEMPORARY TABLE tLandings - (INDEX (eventFk)) - ENGINE = MEMORY - SELECT e.id eventFk, - @travelingDays := IFNULL(e.travelingDays, z.travelingDays) travelingDays, - TIMESTAMPADD(DAY, @travelingDays, vShipped) landed - FROM tmp.zone t - JOIN zone z ON z.id = t.id - JOIN zoneEvent e ON e.zoneFk = t.id; - - SELECT * FROM tLandings - JOIN vn.zoneEvent ze ON ze.id = eventFk - WHERE ze.zoneFk = 25; - - DROP TEMPORARY TABLE IF EXISTS tmp.zoneOption; - CREATE TEMPORARY TABLE tmp.zoneOption - ENGINE = MEMORY - SELECT * - FROM ( - SELECT t.id zoneFk, - TIME(IFNULL(e.`hour`, z.`hour`)) `hour`, - l.travelingDays, - IFNULL(e.price, z.price) price, - IFNULL(e.bonus, z.bonus) bonus, - l.landed - FROM tmp.zone t - JOIN zone z ON z.id = t.id - JOIN zoneEvent e ON e.zoneFk = t.id - JOIN tLandings l ON l.eventFk = e.id - WHERE ( - e.`type` = 'day' - AND e.`dated` = l.landed - ) OR ( - e.`type` != 'day' - AND e.weekDays & (1 << WEEKDAY(l.landed)) - AND (e.`started` IS NULL OR l.landed >= e.`started`) - AND (e.`ended` IS NULL OR l.landed <= e.`ended`) - ) - ORDER BY - zoneFk, - CASE - WHEN e.`type` = 'day' - THEN -1 - WHEN e.`type` = 'range' - THEN 2 - ELSE 3 - END - ) t - GROUP BY zoneFk; - - SELECT e.id, e.type, (e.`dated` = l.landed), e.`dated` , l.landed, t.id zoneFk, - TIME(IFNULL(e.`hour`, z.`hour`)) `hour`, - l.travelingDays, - IFNULL(e.price, z.price) price, - IFNULL(e.bonus, z.bonus) bonus, - l.landed - FROM tmp.zone t - JOIN zone z ON z.id = t.id - JOIN zoneEvent e ON e.zoneFk = t.id - JOIN tLandings l ON l.eventFk = e.id - WHERE zoneFk = 25 - ORDER BY - zoneFk, - CASE - WHEN e.`type` = 'day' - THEN 1 - WHEN e.`type` = 'range' - THEN 2 - ELSE 3 - END; - - SELECT * FROm tmp.zoneOption WHERE zoneFk = 25; - - DROP TEMPORARY TABLE tLandings; - - DELETE t FROM tmp.zoneOption t - JOIN zoneExclusion e - ON e.zoneFk = t.zoneFk AND e.`dated` = t.landed; - - SELECT * FROm tmp.zoneOption WHERE zoneFk = 25; - - IF NOT vShowExpiredZones THEN - DELETE FROM tmp.zoneOption - WHERE vShipped < CURDATE() - OR (vShipped = CURDATE() AND CURTIME() > `hour`); - END IF; - - - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -92112,46 +77514,115 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_getShipped`(vLanded DATE, vAddressFk INT, vAgencyModeFk INT, vShowExpiredZones BOOLEAN) +CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_getShipped`(vLanded DATE, vAddressFk INT, vAgencyModeFk INT, vShowExpiredZones BOOLEAN) BEGIN /** * Devuelve la mínima fecha de envío para cada warehouse - * + * Excluye aquellas zonas que ya tienen cajas preparadas en ese almacén + * * @param vLanded La fecha de recepcion * @param vAddressFk Id del consignatario * @param vAgencyModeFk Id de la agencia * @return tmp.zoneGetShipped - */ - CALL zone_getFromGeo(address_getGeo(vAddressFk)); - CALL zone_getOptionsForLanding(vLanded, vShowExpiredZones); - + */ + DECLARE vZoneGeo INT; + + SELECT address_getGeo(vAddressFk) INTO vZoneGeo; + + CALL vn.zone_getFromGeo(vZoneGeo); + CALL vn.zone_getOptionsForLanding(vLanded, vShowExpiredZones); + CALL vn.zone_excludeFromGeo(vZoneGeo); + CALL vn.zone_getClosed(); + DROP TEMPORARY TABLE IF EXISTS tmp.zoneGetShipped; CREATE TEMPORARY TABLE tmp.zoneGetShipped ENGINE = MEMORY SELECT * FROM ( - SELECT zo.zoneFk, - TIMESTAMPADD(DAY,-zo.travelingDays, vLanded) shipped, - zo.`hour`, + SELECT zo.zoneFk, + zo.shipped, + zo.`hour`, zw.warehouseFk, - z.agencyModeFk, - zo.price, - zo.bonus + z.agencyModeFk, + zo.price, + zo.bonus FROM tmp.zoneOption zo - JOIN zoneWarehouse zw ON zw.zoneFk = zo.zoneFk - JOIN zone z ON z.id = zo.zoneFk + JOIN vn.zoneWarehouse zw ON zw.zoneFk = zo.zoneFk + JOIN vn.`zone` z ON z.id = zo.zoneFk + LEFT JOIN tmp.closedZones cz + ON cz.warehouseFk = zw.warehouseFk + AND cz.zoneFk = zw.zoneFk + AND zo.shipped = util.VN_CURDATE() WHERE z.agencyModeFk = vAgencyModeFk - ORDER BY shipped) t + AND (ISNULL(cz.zoneFk) OR vShowExpiredZones) + ORDER BY shipped + LIMIT 10000000000000000000) t GROUP BY warehouseFk; - + DROP TEMPORARY TABLE - tmp.zone, - tmp.zoneOption; + tmp.`zone`, + tmp.zoneOption, + tmp.closedZones; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `zone_getState` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_getState`(vDated DATE) +BEGIN +/** + * Devuelve las zonas y el estado para la fecha solicitada + * + * @param vDated Fecha en cuestión + */ + DROP TEMPORARY TABLE IF EXISTS tmp.zone; + + CREATE TEMPORARY TABLE tmp.zone ( + id INT PRIMARY KEY) + ENGINE=MEMORY; + + INSERT INTO tmp.zone(id) + SELECT id + FROM vn.zone; + + CALL vn.zone_getOptionsForShipment(vDated, TRUE); + + CALL vn.zone_getClosed(); + + SELECT zo.zoneFk, + zo.`hour`etd, + (zo.`hour` <= TIME(util.VN_NOW())) isLate, + !ISNULL(cz.zoneFk) isFull, + zw.warehouseFk, + zo.landed + FROM tmp.zoneOption zo + JOIN vn.zone z ON z.id = zo.zoneFk + JOIN vn.zoneWarehouse zw ON zw.zoneFk = z.id + LEFT JOIN tmp.closedZones cz + ON cz.warehouseFk = zw.warehouseFk + AND cz.zoneFk = zo.zoneFk; + + DROP TEMPORARY TABLE + tmp.closedZones, + tmp.zoneOption, + tmp.zone; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -92162,32 +77633,32 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `zone_getWarehouse`(vAddress INT, vLanded DATE, vWarehouse INT) +CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_getWarehouse`(vAddress INT, vLanded DATE, vWarehouse INT) BEGIN /** * Devuelve el listado de agencias disponibles para la fecha, * dirección y almacén pasados. - * + * * @param vAddress * @param vWarehouse warehouse * @param vLanded Fecha de recogida * @select Listado de agencias disponibles */ - + CALL zone_getFromGeo(address_getGeo(vAddress)); CALL zone_getOptionsForLanding(vLanded, FALSE); - - SELECT am.id agencyModeFk, - am.name agencyMode, - am.description, + + SELECT am.id agencyModeFk, + am.name agencyMode, + am.description, am.deliveryMethodFk, - TIMESTAMPADD(DAY, -zo.travelingDays, vLanded) shipped, + TIMESTAMPADD(DAY, -zo.travelingDays, vLanded) shipped, zw.warehouseFk, z.id zoneFk FROM tmp.zoneOption zo @@ -92197,11 +77668,11 @@ BEGIN WHERE zw.warehouseFk = vWarehouse GROUP BY z.agencyModeFk ORDER BY agencyMode; - + DROP TEMPORARY TABLE tmp.zone, tmp.zoneOption; - + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -92214,17 +77685,17 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `zone_upcomingDeliveries`() BEGIN DECLARE vForwardDays INT; - + SELECT forwardDays INTO vForwardDays FROM zoneConfig; - CALL util.time_createTable(CURDATE(), DATE_ADD(CURDATE(), INTERVAL vForwardDays DAY)); + CALL util.time_createTable(util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL vForwardDays DAY)); DROP TEMPORARY TABLE IF EXISTS tLandings; CREATE TEMPORARY TABLE tLandings @@ -92236,9 +77707,9 @@ BEGIN ti.dated shipped FROM zone z JOIN zoneEvent e ON e.zoneFk = z.id - JOIN tmp.time ti ON ti.dated BETWEEN curdate() AND TIMESTAMPADD(DAY, vForwardDays, curdate()); + JOIN tmp.time ti ON ti.dated BETWEEN util.VN_CURDATE() AND TIMESTAMPADD(DAY, vForwardDays, util.VN_CURDATE()); - DROP TEMPORARY TABLE IF EXISTS tmp.zoneOption; + DROP TEMPORARY TABLE IF EXISTS tmp.zoneOption; CREATE TEMPORARY TABLE tmp.zoneOption ENGINE = MEMORY SELECT * @@ -92271,13 +77742,15 @@ BEGIN THEN 2 ELSE 3 END + LIMIT 10000000000000000000 ) t GROUP BY zoneFk, landed; DELETE t FROM tmp.zoneOption t - JOIN zoneExclusion e - ON e.zoneFk = t.zoneFk AND e.`dated` = t.landed; - + JOIN zoneExclusion e ON e.zoneFk = t.zoneFk AND e.`dated` = t.landed + LEFT JOIN zoneExclusionGeo eg ON eg.zoneExclusionFk = e.id + WHERE eg.zoneExclusionFk IS NULL; + SELECT MAX(zo.`hour`) `hour`, zg.`name`, zo.shipped, zo.zoneFk FROM tmp.zoneOption zo JOIN `zone` z ON z.id = zo.zoneFk @@ -92288,7 +77761,7 @@ BEGIN WHERE dm.code = 'DELIVERY' GROUP BY shipped, zg.`name` ORDER BY shipped, zg.`name`; - + DROP TEMPORARY TABLE tmp.time, tLandings; END ;; DELIMITER ; @@ -92301,7 +77774,7 @@ DELIMITER ; -- Current Database: `vncontrol` -- -CREATE DATABASE /*!32312 IF NOT EXISTS*/ `vncontrol` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `vncontrol` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci */; USE `vncontrol`; @@ -92314,9 +77787,9 @@ DROP TABLE IF EXISTS `accion`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `accion` ( `accion_id` int(11) NOT NULL AUTO_INCREMENT, - `accion` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `accion` varchar(15) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`accion_id`) -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -92333,7 +77806,7 @@ CREATE TABLE `fallo__` ( KEY `accion` (`accion_id`,`queja_id`), KEY `fallo` (`queja_id`), CONSTRAINT `accion` FOREIGN KEY (`accion_id`) REFERENCES `accion` (`accion_id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -92346,9 +77819,9 @@ DROP TABLE IF EXISTS `inter`; CREATE TABLE `inter` ( `inter_id` int(11) NOT NULL AUTO_INCREMENT, `state_id` tinyint(3) unsigned NOT NULL, - `fallo_id` int(10) unsigned NOT NULL DEFAULT '21', - `nota` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `fallo_id` int(10) unsigned NOT NULL DEFAULT 21, + `nota` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `odbc_date` timestamp NULL DEFAULT current_timestamp(), `Id_Ticket` int(11) DEFAULT NULL, `Id_Trabajador` int(11) DEFAULT NULL, `Id_Supervisor` int(10) unsigned DEFAULT NULL, @@ -92361,18 +77834,18 @@ CREATE TABLE `inter` ( CONSTRAINT `inter_ibfk_1` FOREIGN KEY (`Id_Ticket`) REFERENCES `vn`.`ticket` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `inter_state` FOREIGN KEY (`state_id`) REFERENCES `vn`.`state` (`id`) ON UPDATE CASCADE, CONSTRAINT `responsable` FOREIGN KEY (`Id_Supervisor`) REFERENCES `vn`.`worker` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDBDEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDBDEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `ticketTracking_beforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vncontrol`.`ticketTracking_beforeInsert` BEFORE INSERT ON `inter` FOR EACH ROW BEGIN @@ -92380,64 +77853,18 @@ BEGIN DECLARE vZoneFk INT; DECLARE vHasStowAway BOOLEAN; DECLARE vBoardingStateFk INT; - + SELECT s.code INTO vState FROM vn.state s WHERE s.id = NEW.state_id; - + SELECT t.zonefk INTO vZoneFk FROM vn.ticket t - WHERE t.id = NEW.Id_Ticket; - + WHERE t.id = NEW.Id_Ticket; + IF vState = 'OK' AND vZoneFk IS NULL THEN CALL util.throw("ASSIGN_ZONE_FIRST"); - END IF; - - IF vState IN ('OK','FREE') THEN - - SELECT COUNT(*) INTO vHasStowAway - FROM vn.stowaway - WHERE shipFk = NEW.Id_Ticket; - - IF vHasStowAway THEN - - SELECT id INTO vBoardingStateFk - FROM vn.state - WHERE `code`= 'BOARDING'; - - SET NEW.state_id = vBoardingStateFk; - - END IF; - END IF; - -END */;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vncontrol`.`ticketTracking_afterInsert` - AFTER INSERT ON `inter` - FOR EACH ROW -BEGIN - - DECLARE vNumTicketsPrepared INT; - - REPLACE vn.ticketLastState(ticketFk, ticketTrackingFk, name) - SELECT NEW.Id_Ticket, NEW.inter_id, `name` - FROM vn.state - WHERE id = NEW.state_id; - END */;; DELIMITER ; @@ -92450,32 +77877,60 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vncontrol`.`ticketTracking_afterUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vncontrol`.`ticketTracking_afterInsert` + AFTER INSERT ON `inter` + FOR EACH ROW +BEGIN + + DECLARE vNumTicketsPrepared INT; + + REPLACE vn.ticketLastState(ticketFk, ticketTrackingFk, name) + SELECT NEW.Id_Ticket, NEW.inter_id, `name` + FROM vn.state + WHERE id = NEW.state_id; + + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vncontrol`.`ticketTracking_afterUpdate` AFTER UPDATE ON `inter` FOR EACH ROW BEGIN DECLARE vTicketFk INT; DECLARE vTicketTrackingFk INT; DECLARE vStateName VARCHAR(15); - + IF NEW.state_id <> OLD.state_id THEN REPLACE vn.ticketLastState(ticketFk, ticketTrackingFk, name) SELECT NEW.Id_Ticket, NEW.inter_id, `name` FROM vn.state WHERE id = NEW.state_id; END IF; - + IF NEW.Id_Ticket <> OLD.Id_Ticket THEN SELECT i.Id_Ticket, i.inter_id, s.`name` - INTO vTicketFk, vTicketTrackingFk, vStateName - FROM vncontrol.inter i - JOIN vn.state s ON i.state_id = s.id - WHERE Id_Ticket = NEW.Id_Ticket - ORDER BY odbc_date DESC + INTO vTicketFk, vTicketTrackingFk, vStateName + FROM vncontrol.inter i + JOIN vn.state s ON i.state_id = s.id + WHERE Id_Ticket = NEW.Id_Ticket + ORDER BY odbc_date DESC LIMIT 1; IF vTicketFk > 0 THEN @@ -92494,11 +77949,11 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vncontrol`.`ticketTracking_afterDelete` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `vncontrol`.`ticketTracking_afterDelete` AFTER DELETE ON `inter` FOR EACH ROW BEGIN @@ -92513,11 +77968,11 @@ BEGIN END; SELECT i.Id_Ticket, i.inter_id, s.`name` - INTO vTicketFk, vTicketTrackingFk, vStateName - FROM vncontrol.inter i - JOIN vn.state s ON i.state_id = s.id - WHERE Id_Ticket = OLD.Id_Ticket - ORDER BY odbc_date DESC + INTO vTicketFk, vTicketTrackingFk, vStateName + FROM vncontrol.inter i + JOIN vn.state s ON i.state_id = s.id + WHERE Id_Ticket = OLD.Id_Ticket + ORDER BY odbc_date DESC LIMIT 1; IF vTicketFk > 0 THEN @@ -92542,15 +77997,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `clean`() +CREATE DEFINER=`root`@`localhost` PROCEDURE `clean`() BEGIN - DECLARE vDate DATETIME DEFAULT TIMESTAMPADD(MONTH, -2, CURDATE()); + DECLARE vDate DATETIME DEFAULT TIMESTAMPADD(MONTH, -2, util.VN_CURDATE()); DELETE i FROM inter i JOIN vn.ticket t ON i.Id_Ticket = t.id WHERE t.shipped <= vDate; END ;; @@ -92579,8 +78034,8 @@ USE `account`; /*!50001 SET character_set_results = utf8mb4 */; /*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `accountDovecot` AS select `u`.`name` AS `name`,`u`.`password` AS `password` from (`user` `u` join `account` `a` on((`a`.`id` = `u`.`id`))) where `u`.`active` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `accountDovecot` AS select `u`.`name` AS `name`,`u`.`password` AS `password` from (`user` `u` join `account` `a` on(`a`.`id` = `u`.`id`)) where `u`.`active` <> 0 */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -92594,11 +78049,11 @@ USE `account`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `emailUser` AS select `u`.`id` AS `userFk`,concat(`u`.`name`,'@',`mc`.`domain`) AS `email` from (`user` `u` join `mailConfig` `mc`) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -92615,10 +78070,10 @@ USE `account`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myRole` AS select `r`.`inheritsFrom` AS `id` from (`roleRole` `r` join `user` `u` on((`u`.`role` = `r`.`role`))) where (`u`.`id` = `myUser_getId`()) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myRole` AS select `r`.`inheritsFrom` AS `id` from (`roleRole` `r` join `user` `u` on(`u`.`role` = `r`.`role`)) where `u`.`id` = `myUser_getId`() */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -92632,12 +78087,12 @@ USE `account`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myUser` AS select `u`.`id` AS `id`,`u`.`name` AS `name`,`u`.`active` AS `active`,`u`.`email` AS `email`,`u`.`nickname` AS `nickname`,`u`.`lang` AS `lang`,`u`.`role` AS `role`,`u`.`recoverPass` AS `recoverPass` from `user` `u` where (`u`.`name` = `myUserGetName`()) */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myUser` AS select `u`.`id` AS `id`,`u`.`name` AS `name`,`u`.`active` AS `active`,`u`.`email` AS `email`,`u`.`nickname` AS `nickname`,`u`.`lang` AS `lang`,`u`.`role` AS `role`,`u`.`recoverPass` AS `recoverPass` from `user` `u` where `u`.`name` = `myUser_getName`() */ /*!50002 WITH CASCADED CHECK OPTION */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -92658,12 +78113,12 @@ USE `bs`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `bajasLaborales` AS select `p`.`firstname` AS `firstname`,`p`.`name` AS `name`,`b`.`business_id` AS `business_id`,max(`ce`.`date`) AS `lastDate`,max(ifnull(`b`.`date_end`,curdate())) AS `endContract`,`cs`.`type` AS `type`,cast(count(0) as decimal(10,0)) AS `dias`,`w`.`userFk` AS `userFk` from (((((`postgresql`.`calendar_employee` `ce` join `postgresql`.`business` `b` on((`b`.`business_id` = `ce`.`business_id`))) join `postgresql`.`profile` `pr` on((`pr`.`profile_id` = `b`.`client_id`))) join `postgresql`.`person` `p` on((`p`.`person_id` = `pr`.`person_id`))) join `postgresql`.`calendar_state` `cs` on((`cs`.`calendar_state_id` = `ce`.`calendar_state_id`))) join `vn`.`worker` `w` on((`w`.`id` = `p`.`id_trabajador`))) where ((`ce`.`date` >= (curdate() + interval -(1) year)) and (`cs`.`type` not in ('Vacaciones','Vacaciones 1/2 día','Compensar','Festivo'))) group by `p`.`firstname`,`p`.`name`,`cs`.`type` having (`endContract` >= curdate()) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `bajasLaborales` AS select `w`.`firstName` AS `firstname`,`w`.`lastName` AS `name`,`b`.`id` AS `businessFk`,max(`ce`.`date`) AS `lastDate`,max(ifnull(`b`.`ended`,util.VN_CURDATE())) AS `endContract`,`at`.`name` AS `type`,cast(count(0) as decimal(10,0)) AS `dias`,`w`.`id` AS `userFk` from (((`postgresql`.`calendar_employee` `ce` join `vn`.`business` `b` on(`b`.`id` = `ce`.`businessFk`)) join `vn`.`worker` `w` on(`w`.`id` = `b`.`workerFk`)) join `vn`.`absenceType` `at` on(`at`.`id` = `ce`.`calendar_state_id`)) where `ce`.`date` >= util.VN_CURDATE() + interval -1 year and `at`.`name` not in ('Vacaciones','Vacaciones 1/2 día','Compensar','Festivo') group by `w`.`firstName`,`w`.`lastName`,`at`.`name` having `endContract` >= util.VN_CURDATE() */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -92679,105 +78134,10 @@ USE `bs`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `lastIndicators` AS select `i`.`updated` AS `updated`,`i`.`lastYearSales` AS `lastYearSales`,(`i`.`lastYearSales` - `yi`.`lastYearSales`) AS `incLastYearSales`,`i`.`totalGreuge` AS `totalGreuge`,(`i`.`totalGreuge` - `yi`.`totalGreuge`) AS `incTotalGreuge`,`i`.`latePaymentRate` AS `latePaymentRate`,(`i`.`latePaymentRate` - `yi`.`latePaymentRate`) AS `incLatePaymentRate`,`i`.`countEmployee` AS `countEmployee`,(`i`.`countEmployee` - `yi`.`countEmployee`) AS `incCountEmployee`,`i`.`averageMana` AS `averageMana`,(`i`.`averageMana` - `yi`.`averageMana`) AS `incAverageMana`,`i`.`bankingPool` AS `bankingPool`,(`i`.`bankingPool` - `yi`.`bankingPool`) AS `incbankingPool`,`i`.`lastMonthActiveClients` AS `lastMonthActiveClients`,(`i`.`lastMonthActiveClients` - `yi`.`lastMonthActiveClients`) AS `incLastMonthActiveClients`,`i`.`lastMonthLostClients` AS `lastMonthLostClients`,(`i`.`lastMonthLostClients` - `yi`.`lastMonthLostClients`) AS `incLastMonthLostClients`,`i`.`lastMonthNewClients` AS `lastMonthNewClients`,(`i`.`lastMonthNewClients` - `yi`.`lastMonthNewClients`) AS `incLastMonthNewClients`,`i`.`lastMonthWebBuyingRate` AS `lastMonthWebBuyingRate`,(`i`.`lastMonthWebBuyingRate` - `yi`.`lastMonthWebBuyingRate`) AS `incLastMonthWebBuyingRate`,`i`.`productionHours__` AS `productionHours__`,`i`.`dailyWorkersCost__` AS `dailyWorkersCost__`,`i`.`volumeM3__` AS `volumeM3__`,`i`.`salesValue__` AS `salesValue__`,`i`.`valueM3__` AS `valueM3__`,`i`.`hoursM3__` AS `hoursM3__`,`i`.`workerCostM3__` AS `workerCostM3__`,`i`.`salesWorkersCostRate__` AS `salesWorkersCostRate__`,`i`.`thisWeekSales` AS `thisWeekSales`,`i`.`lastYearWeekSales` AS `lastYearWeekSales` from (`indicators` `i` join `indicators` `yi` on((`yi`.`updated` = (select (max(`indicators`.`updated`) + interval -(1) day) from `indicators`)))) where (`i`.`updated` = (select max(`indicators`.`updated`) from `indicators`)) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `m3Silla__` --- - -/*!50001 DROP TABLE IF EXISTS `m3Silla__`*/; -/*!50001 DROP VIEW IF EXISTS `m3Silla__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `m3Silla__` AS select `m3`.`fecha` AS `fecha`,`m3`.`year` AS `year`,`m3`.`month` AS `month`,`m3`.`week` AS `week`,`m3`.`day` AS `day`,`m3`.`dayName` AS `dayName`,cast(sum(`m3`.`m3`) as decimal(10,0)) AS `Volumen`,cast(sum(`m3`.`euros`) as decimal(10,0)) AS `Euros` from `m3` where (`m3`.`warehouseFk` in (1,44)) group by `m3`.`fecha` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `manaCustomer` --- - -/*!50001 DROP TABLE IF EXISTS `manaCustomer`*/; -/*!50001 DROP VIEW IF EXISTS `manaCustomer`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `manaCustomer` AS select `cmc`.`clientFk` AS `Id_Cliente`,`cmc`.`mana` AS `Mana`,`cmc`.`dated` AS `dated` from `vn`.`clientManaCache` `cmc` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `manaSpellersExcluded` --- - -/*!50001 DROP TABLE IF EXISTS `manaSpellersExcluded`*/; -/*!50001 DROP VIEW IF EXISTS `manaSpellersExcluded`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `manaSpellersExcluded` AS select `m`.`Id_Trabajador` AS `workerFk` from `bs`.`mana_spellers_excluded` `m` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `mana_spellers` --- - -/*!50001 DROP TABLE IF EXISTS `mana_spellers`*/; -/*!50001 DROP VIEW IF EXISTS `mana_spellers`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `mana_spellers` AS select `wm`.`workerFk` AS `Id_Trabajador`,`wm`.`size` AS `size`,`wm`.`amount` AS `used`,`wm`.`pricesModifierRate` AS `prices_modifier_rate`,`wm`.`isPricesModifierActivated` AS `prices_modifier_activated`,`wm`.`minRate` AS `minRate`,`wm`.`maxRate` AS `maxRate` from `vn`.`workerMana` `wm` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `mana_spellers_excluded` --- - -/*!50001 DROP TABLE IF EXISTS `mana_spellers_excluded`*/; -/*!50001 DROP VIEW IF EXISTS `mana_spellers_excluded`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `mana_spellers_excluded` AS select `wme`.`workerFk` AS `Id_Trabajador` from `vn`.`workerManaExcluded` `wme` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `lastIndicators` AS select `i`.`updated` AS `updated`,`i`.`lastYearSales` AS `lastYearSales`,`i`.`lastYearSales` - `yi`.`lastYearSales` AS `incLastYearSales`,`i`.`totalGreuge` AS `totalGreuge`,`i`.`totalGreuge` - `yi`.`totalGreuge` AS `incTotalGreuge`,`i`.`latePaymentRate` AS `latePaymentRate`,`i`.`latePaymentRate` - `yi`.`latePaymentRate` AS `incLatePaymentRate`,`i`.`countEmployee` AS `countEmployee`,`i`.`countEmployee` - `yi`.`countEmployee` AS `incCountEmployee`,`i`.`averageMana` AS `averageMana`,`i`.`averageMana` - `yi`.`averageMana` AS `incAverageMana`,`i`.`bankingPool` AS `bankingPool`,`i`.`bankingPool` - `yi`.`bankingPool` AS `incbankingPool`,`i`.`lastMonthActiveClients` AS `lastMonthActiveClients`,`i`.`lastMonthActiveClients` - `yi`.`lastMonthActiveClients` AS `incLastMonthActiveClients`,`i`.`lastMonthLostClients` AS `lastMonthLostClients`,`i`.`lastMonthLostClients` - `yi`.`lastMonthLostClients` AS `incLastMonthLostClients`,`i`.`lastMonthNewClients` AS `lastMonthNewClients`,`i`.`lastMonthNewClients` - `yi`.`lastMonthNewClients` AS `incLastMonthNewClients`,`i`.`lastMonthWebBuyingRate` AS `lastMonthWebBuyingRate`,`i`.`lastMonthWebBuyingRate` - `yi`.`lastMonthWebBuyingRate` AS `incLastMonthWebBuyingRate`,`i`.`productionHours__` AS `productionHours__`,`i`.`dailyWorkersCost__` AS `dailyWorkersCost__`,`i`.`volumeM3__` AS `volumeM3__`,`i`.`salesValue__` AS `salesValue__`,`i`.`valueM3__` AS `valueM3__`,`i`.`hoursM3__` AS `hoursM3__`,`i`.`workerCostM3__` AS `workerCostM3__`,`i`.`salesWorkersCostRate__` AS `salesWorkersCostRate__`,`i`.`thisWeekSales` AS `thisWeekSales`,`i`.`lastYearWeekSales` AS `lastYearWeekSales` from (`indicators` `i` join `indicators` `yi` on(`yi`.`updated` = (select max(`indicators`.`updated`) + interval -1 day from `indicators`))) where `i`.`updated` = (select max(`indicators`.`updated`) from `indicators`) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -92793,10 +78153,10 @@ USE `bs`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `packingSpeed` AS select hour(`e`.`created`) AS `hora`,minute(`e`.`created`) AS `minuto`,ifnull(`p`.`volume`,((`p`.`width` * `p`.`height`) * `p`.`depth`)) AS `cm3`,`t`.`warehouseFk` AS `warehouse_id`,`e`.`created` AS `odbc_date` from ((`vn`.`expedition` `e` join `vn`.`packaging` `p` on((`p`.`id` = `e`.`packagingFk`))) join `vn`.`ticket` `t` on((`t`.`id` = `e`.`ticketFk`))) where (`e`.`created` between curdate() and `util`.`dayend`(curdate())) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `packingSpeed` AS select hour(`e`.`created`) AS `hora`,minute(`e`.`created`) AS `minuto`,ifnull(`p`.`volume`,`p`.`width` * `p`.`height` * `p`.`depth`) AS `cm3`,`t`.`warehouseFk` AS `warehouse_id`,`e`.`created` AS `odbc_date` from ((`vn`.`expedition` `e` join `vn`.`packaging` `p` on(`p`.`id` = `e`.`packagingFk`)) join `vn`.`ticket` `t` on(`t`.`id` = `e`.`ticketFk`)) where `e`.`created` between `util`.`VN_CURDATE`() and `util`.`dayend`(`util`.`VN_CURDATE`()) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -92810,12 +78170,12 @@ USE `bs`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `s1_ticketDetail` AS select `s`.`ticketFk` AS `ticketFk`,cast(sum((`s`.`price` * `s`.`quantity`)) as decimal(10,2)) AS `ticketAmount`,count(`s`.`id`) AS `ticketLines`,cast(sum(`sv`.`volume`) as decimal(10,2)) AS `ticketM3`,cast(`t`.`shipped` as date) AS `shipped` from ((`vn`.`ticket` `t` join `vn`.`sale` `s` on((`s`.`ticketFk` = `t`.`id`))) join `vn`.`saleVolume` `sv` on((`sv`.`saleFk` = `s`.`id`))) where (`t`.`shipped` between '2021-09-01' and '2021-10-31 23:59') group by `s`.`ticketFk` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `s1_ticketDetail` AS select `s`.`ticketFk` AS `ticketFk`,cast(sum(`s`.`price` * `s`.`quantity`) as decimal(10,2)) AS `ticketAmount`,count(`s`.`id`) AS `ticketLines`,cast(sum(`sv`.`volume`) as decimal(10,2)) AS `ticketM3`,cast(`t`.`shipped` as date) AS `shipped` from ((`vn`.`ticket` `t` join `vn`.`sale` `s` on(`s`.`ticketFk` = `t`.`id`)) join `vn`.`saleVolume` `sv` on(`sv`.`saleFk` = `s`.`id`)) where `t`.`shipped` between '2021-09-01' and '2021-10-31 23:59' group by `s`.`ticketFk` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -92829,22 +78189,22 @@ USE `bs`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `s21_saleDetail` AS select dayofmonth(`t`.`shipped`) AS `dia`,year(`t`.`shipped`) AS `año`,month(`t`.`shipped`) AS `mes`,`s`.`concept` AS `concepto`,`s`.`quantity` AS `unidades`,`s`.`price` AS `precio`,(`s`.`quantity` * `s`.`price`) AS `venta`,`it`.`name` AS `familia`,`w`.`code` AS `comprador`,`s`.`itemFk` AS `itemFk`,`s`.`ticketFk` AS `ticketFk`,`sv`.`volume` AS `volume` from ((((((`vn`.`sale` `s` join `vn`.`item` `i` on((`i`.`id` = `s`.`itemFk`))) join `vn`.`itemType` `it` on((`it`.`id` = `i`.`typeFk`))) join `vn`.`worker` `w` on((`w`.`id` = `it`.`workerFk`))) join `vn`.`ticket` `t` on((`t`.`id` = `s`.`ticketFk`))) join `vn`.`client` `c` on((`c`.`id` = `t`.`clientFk`))) join `vn`.`saleVolume` `sv` on((`sv`.`saleFk` = `s`.`id`))) where (((`t`.`shipped` between '2020-10-21' and '2020-10-28') or (`t`.`shipped` between '2019-10-21' and '2019-10-28') or (`t`.`shipped` between '2021-09-1' and '2021-10-28')) and (`t`.`warehouseFk` in (1,60)) and `c`.`isRelevant` and (`s`.`quantity` > 0)) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `s21_saleDetail` AS select dayofmonth(`t`.`shipped`) AS `dia`,year(`t`.`shipped`) AS `año`,month(`t`.`shipped`) AS `mes`,`s`.`concept` AS `concepto`,`s`.`quantity` AS `unidades`,`s`.`price` AS `precio`,`s`.`quantity` * `s`.`price` AS `venta`,`it`.`name` AS `familia`,`w`.`code` AS `comprador`,`s`.`itemFk` AS `itemFk`,`s`.`ticketFk` AS `ticketFk`,`sv`.`volume` AS `volume` from ((((((`vn`.`sale` `s` join `vn`.`item` `i` on(`i`.`id` = `s`.`itemFk`)) join `vn`.`itemType` `it` on(`it`.`id` = `i`.`typeFk`)) join `vn`.`worker` `w` on(`w`.`id` = `it`.`workerFk`)) join `vn`.`ticket` `t` on(`t`.`id` = `s`.`ticketFk`)) join `vn`.`client` `c` on(`c`.`id` = `t`.`clientFk`)) join `vn`.`saleVolume` `sv` on(`sv`.`saleFk` = `s`.`id`)) where (`t`.`shipped` between '2020-10-21' and '2020-10-28' or `t`.`shipped` between '2019-10-21' and '2019-10-28' or `t`.`shipped` between '2021-09-1' and '2021-10-28') and `t`.`warehouseFk` in (1,60) and `c`.`isRelevant` <> 0 and `s`.`quantity` > 0 */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; -- --- Final view structure for view `v_ventas__` +-- Final view structure for view `vendedores` -- -/*!50001 DROP TABLE IF EXISTS `v_ventas__`*/; -/*!50001 DROP VIEW IF EXISTS `v_ventas__`*/; +/*!50001 DROP TABLE IF EXISTS `vendedores`*/; +/*!50001 DROP VIEW IF EXISTS `vendedores`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; @@ -92852,27 +78212,27 @@ USE `bs`; /*!50001 SET character_set_results = utf8mb4 */; /*!50001 SET collation_connection = utf8mb4_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `v_ventas__` AS select (`bs`.`ventas`.`importe` * `Movimientos`.`Cantidad`) AS `importe`,`bs`.`ventas`.`recargo` AS `recargo`,`time`.`year` AS `year`,`time`.`month` AS `month`,`time`.`week` AS `week`,`time`.`day` AS `day` from ((`bs`.`ventas` join `vn2008`.`time` on((`time`.`date` = `bs`.`ventas`.`fecha`))) join `vn2008`.`Movimientos` on((`bs`.`ventas`.`Id_Movimiento` = `Movimientos`.`Id_Movimiento`))) group by `time`.`date` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `vendedores` AS select `sp`.`workerFk` AS `Id_Trabajador`,`sp`.`year` AS `año`,`sp`.`month` AS `mes`,`sp`.`amount` AS `importe`,`sp`.`commission` AS `comision`,`sp`.`leasedCommission` AS `comisionArrendada`,`sp`.`cededCommission` AS `comisionCedida`,`sp`.`newCommission` AS `comisionNuevos`,`sp`.`leasedReplacement` AS `sustitucionArrendada`,`sp`.`itemTypeBorrowed` AS `itemTypeBorrowed`,`sp`.`portfolioWeight` AS `portfolioWeight`,`sp`.`updated` AS `updated` from `salesPerson` `sp` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; -- --- Final view structure for view `workerMana` +-- Final view structure for view `ventas` -- -/*!50001 DROP TABLE IF EXISTS `workerMana`*/; -/*!50001 DROP VIEW IF EXISTS `workerMana`*/; +/*!50001 DROP TABLE IF EXISTS `ventas`*/; +/*!50001 DROP VIEW IF EXISTS `ventas`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerMana` AS select `m`.`Id_Trabajador` AS `workerFk`,`m`.`used` AS `amount` from `bs`.`mana_spellers` `m` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ventas` AS select `s`.`saleFk` AS `Id_Movimiento`,`s`.`amount` AS `importe`,`s`.`surcharge` AS `recargo`,`s`.`dated` AS `fecha`,`s`.`typeFk` AS `tipo_id`,`s`.`clientFk` AS `Id_Cliente`,`s`.`companyFk` AS `empresa_id`,`s`.`margin` AS `margen` from `sale` `s` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -92889,6 +78249,25 @@ USE `cache`; USE `edi`; +-- +-- Final view structure for view `ektRecent` +-- + +/*!50001 DROP TABLE IF EXISTS `ektRecent`*/; +/*!50001 DROP VIEW IF EXISTS `ektRecent`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ektRecent` AS select `e`.`id` AS `id`,`e`.`barcode` AS `barcode`,`e`.`entryYear` AS `entryYear`,`e`.`batchNumber` AS `batchNumber`,`e`.`deliveryNumber` AS `deliveryNumber`,`e`.`vendorOrderNumber` AS `vendorOrderNumber`,`e`.`fec` AS `fec`,`e`.`hor` AS `hor`,`e`.`util.VN_NOW` AS `util.VN_NOW`,`e`.`ptj` AS `ptj`,`e`.`ref` AS `ref`,`e`.`item` AS `item`,`e`.`pac` AS `pac`,`e`.`qty` AS `qty`,`e`.`ori` AS `ori`,`e`.`cat` AS `cat`,`e`.`agj` AS `agj`,`e`.`kop` AS `kop`,`e`.`ptd` AS `ptd`,`e`.`sub` AS `sub`,`e`.`pro` AS `pro`,`e`.`pri` AS `pri`,`e`.`package` AS `package`,`e`.`auction` AS `auction`,`e`.`klo` AS `klo`,`e`.`k1` AS `k1`,`e`.`k2` AS `k2`,`e`.`k3` AS `k3`,`e`.`k4` AS `k4`,`e`.`s1` AS `s1`,`e`.`s2` AS `s2`,`e`.`s3` AS `s3`,`e`.`s4` AS `s4`,`e`.`s5` AS `s5`,`e`.`s6` AS `s6`,`e`.`ok` AS `ok`,`e`.`trolleyFk` AS `trolleyFk`,`e`.`putOrderFk` AS `putOrderFk`,`e`.`scanned` AS `scanned`,`e`.`cps` AS `cps`,`e`.`dp` AS `dp`,`e`.`sender` AS `sender`,`ec`.`usefulAuctionLeftSegmentLength` AS `usefulAuctionLeftSegmentLength`,`ec`.`standardBarcodeLength` AS `standardBarcodeLength`,`ec`.`floridayBarcodeLength` AS `floridayBarcodeLength`,`ec`.`floramondoBarcodeLength` AS `floramondoBarcodeLength`,`ec`.`defaultKlo` AS `defaultKlo`,`ec`.`ektRecentScopeDays` AS `ektRecentScopeDays` from (`ekt` `e` join `ektConfig` `ec`) where `e`.`entryYear` = year(`util`.`VN_CURDATE`()) and `e`.`fec` >= `util`.`VN_CURDATE`() + interval -`ec`.`ektRecentScopeDays` day */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + -- -- Final view structure for view `errorList` -- @@ -92898,12 +78277,31 @@ USE `edi`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `errorList` AS select `po`.`id` AS `id`,`c`.`name` AS `name`,`i`.`longName` AS `longName`,`po`.`quantity` AS `quantity`,left(`po`.`error`,4) AS `stock`,`po`.`error` AS `error`,`po`.`deliveryInformationID` AS `deliveryInformationID`,`po`.`supplyResponseID` AS `supplyResponseID`,`po`.`OrderTradeLineDateTime` AS `OrderTradeLineDateTime`,`po`.`EndUserPartyGLN` AS `EndUserPartyGLN` from ((`edi`.`putOrder` `po` left join `vn`.`client` `c` on((`c`.`id` = `po`.`EndUserPartyGLN`))) left join `vn`.`item` `i` on((`i`.`supplyResponseFk` = `po`.`supplyResponseID`))) where ((`po`.`OrderTradeLineDateTime` > (curdate() + interval -(12) hour)) and (`po`.`OrderStatus` = 3) and (left(`po`.`error`,4) <> '(0) ')) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `errorList` AS select `po`.`id` AS `id`,`c`.`name` AS `name`,`i`.`longName` AS `longName`,`po`.`quantity` AS `quantity`,left(`po`.`error`,4) AS `stock`,`po`.`error` AS `error`,`po`.`deliveryInformationID` AS `deliveryInformationID`,`po`.`supplyResponseID` AS `supplyResponseID`,`po`.`OrderTradeLineDateTime` AS `OrderTradeLineDateTime`,`po`.`EndUserPartyGLN` AS `EndUserPartyGLN` from ((`edi`.`putOrder` `po` left join `vn`.`client` `c` on(`c`.`id` = `po`.`EndUserPartyGLN`)) left join `vn`.`item` `i` on(`i`.`supplyResponseFk` = `po`.`supplyResponseID`)) where `po`.`OrderTradeLineDateTime` > `util`.`VN_CURDATE`() + interval -12 hour and `po`.`OrderStatus` = 3 and left(`po`.`error`,4) <> '(0) ' */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `supplyOffer` +-- + +/*!50001 DROP TABLE IF EXISTS `supplyOffer`*/; +/*!50001 DROP VIEW IF EXISTS `supplyOffer`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `supplyOffer` AS select `sr`.`vmpID` AS `vmpID`,`di`.`ID` AS `diId`,`sr`.`ID` AS `srId`,`sr`.`Item_ArticleCode` AS `Item_ArticleCode`,`sr`.`VBNOmschrijving` AS `product_name`,`s`.`company_name` AS `company_name`,cast(`sr`.`Price` as decimal(10,3)) AS `Price`,`sr`.`Quality` AS `Quality`,`sr`.`s1` AS `s1`,`sr`.`s2` AS `s2`,`sr`.`s3` AS `s3`,`sr`.`s4` AS `s4`,`sr`.`s5` AS `s5`,`sr`.`s6` AS `s6`,`sr`.`NumberOfUnits` AS `NumberOfUnits`,least(if(`sr`.`EmbalageCode` = 800,`sr`.`EmbalageCode` * 10 + `sr`.`NumberOfItemsPerCask`,`sr`.`EmbalageCode`),ifnull(`idt`.`bucket_id`,'999')) AS `EmbalageCode`,`di`.`LatestDeliveryDateTime` AS `LatestDeliveryDateTime`,`di`.`EarliestDespatchDateTime` AS `EarliestDespatchDateTime`,`di`.`FirstOrderDateTime` AS `FirstOrderDateTime`,`di`.`LatestOrderDateTime` AS `LatestOrderDateTime`,`sr`.`NumberOfItemsPerCask` AS `NumberOfItemsPerCask`,`sr`.`NumberOfLayersPerTrolley` AS `NumberOfLayersPerTrolley`,`sr`.`MinimumNumberToOrder` AS `MinimumNumberToOrder`,`sr`.`MaximumNumberToOrder` AS `MaximumNumberToOrder`,`sr`.`IncrementalOrderableQuantity` AS `IncrementalOrderableQuantity`,`sr`.`PackingPrice` AS `PackingPrice`,`sr`.`MarketPlaceID` AS `MarketPlaceID`,`sr`.`PictureReference` AS `PictureReference`,`sr`.`updated` AS `supplyResponseUpdated`,`i`.`group_id` AS `group_id`,`mp`.`name` AS `marketPlace`,`di`.`DeliveryPrice` AS `DeliveryPrice`,`di`.`ChargeAmount` AS `ChargeAmount`,`di`.`MinimumQuantity` AS `MinimumQuantity`,`di`.`MaximumQuantity Integer` AS `MaximumQuantity`,cast(`sr`.`MinimumNumberToOrder` * case `sr`.`MinimumOrderUnitType` when 1 then 1 when 2 then `sr`.`NumberOfItemsPerCask` / `sr`.`NumberBunchesPerCask` when 3 then `sr`.`NumberOfItemsPerCask` when 4 then floor(128 * 56 / (`b`.`x_size` * `b`.`y_size`)) * `sr`.`NumberOfItemsPerCask` when 5 then floor(128 * 56 / (`b`.`x_size` * `b`.`y_size`)) * `sr`.`NumberOfItemsPerCask` * `sr`.`NumberOfLayersPerTrolley` end as decimal(10,0)) AS `OrderUnit`,cast(`sr`.`IncrementalOrderableQuantity` * case `sr`.`IncrementalOrderableQuantityType` when 1 then 1 when 2 then `sr`.`NumberOfItemsPerCask` / `sr`.`NumberBunchesPerCask` when 3 then `sr`.`NumberOfItemsPerCask` when 4 then floor(128 * 56 / (`b`.`x_size` * `b`.`y_size`)) * `sr`.`NumberOfItemsPerCask` when 5 then floor(128 * 56 / (`b`.`x_size` * `b`.`y_size`)) * `sr`.`NumberOfItemsPerCask` * `sr`.`NumberOfLayersPerTrolley` end as decimal(10,0)) AS `IncrementalOrderUnit`,`mp`.`isEarlyBird` AS `isEarlyBird`,`v`.`isVNHSupplier` AS `isVNHSupplier`,`igo`.`expenseFk` AS `expenseFk`,`igo`.`intrastatFk` AS `intrastatFk`,`igo`.`originFk` AS `originFk`,ifnull(`idt`.`itemTypeFk`,`igo`.`itemTypeFk`) AS `itemTypeFk` from (((((((((`edi`.`deliveryInformation` `di` join `edi`.`supplyResponse` `sr` on(`sr`.`ID` = `di`.`supplyResponseID`)) left join `edi`.`supplier` `s` on(`s`.`glnAddressCode` = `sr`.`SupplierGLN`)) join `edi`.`bucket` `b` on(`b`.`bucket_id` = `sr`.`EmbalageCode`)) join `edi`.`item` `i` on(`i`.`id` = `sr`.`Item_ArticleCode`)) join `edi`.`marketPlace` `mp` on(`mp`.`id` = `sr`.`MarketPlaceID`)) join `vn`.`floramondoConfig` `fm`) left join `edi`.`item_defaultType` `idt` on(`idt`.`item_id` = `i`.`id`)) join `edi`.`VMPSettings` `v` on(`v`.`VMPID` = `sr`.`vmpID`)) join `edi`.`item_groupToOffer` `igo` on(`igo`.`group_code` = `i`.`group_id`)) where `v`.`isBlocked` = 0 and `s`.`isBanned` = 0 and `sr`.`NumberOfUnits` > 0 and current_timestamp() between `di`.`FirstOrderDateTime` and `di`.`LatestOrderDateTime` and `mp`.`isOffered` = 1 and `di`.`LatestDeliveryDateTime` between cast(`fm`.`nextLanded` as date) and concat(cast(`fm`.`nextLanded` as date),' ',`fm`.`MaxLatestDeliveryHour`) and `sr`.`NumberOfItemsPerCask` > 1 group by `sr`.`ID` having `EmbalageCode` <> 999 */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -92923,12 +78321,12 @@ USE `hedera`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `mainAccountBank` AS select `e`.`name` AS `name`,`a`.`iban` AS `iban` from ((`hedera`.`mainAccount` `c` join `vn`.`supplierAccount` `a` on((`a`.`id` = `c`.`accountFk`))) join `vn`.`bankEntity` `e` on((`e`.`id` = `a`.`bankEntityFk`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `mainAccountBank` AS select `e`.`name` AS `name`,`a`.`iban` AS `iban` from ((`hedera`.`mainAccount` `c` join `vn`.`supplierAccount` `a` on(`a`.`id` = `c`.`accountFk`)) join `vn`.`bankEntity` `e` on(`e`.`id` = `a`.`bankEntityFk`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -92944,10 +78342,10 @@ USE `hedera`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myAddress` AS select `t`.`id` AS `id`,`t`.`clientFk` AS `clientFk`,`t`.`street` AS `street`,`t`.`city` AS `city`,`t`.`postalCode` AS `postalCode`,`t`.`provinceFk` AS `provinceFk`,`t`.`nickname` AS `nickname`,`t`.`isDefaultAddress` AS `isDefaultAddress`,`t`.`isActive` AS `isActive`,`t`.`longitude` AS `longitude`,`t`.`latitude` AS `latitude`,`t`.`warehouseFk` AS `warehouseFk`,`t`.`agencyModeFk` AS `agencyModeFk` from `vn`.`address` `t` where (`t`.`clientFk` = `account`.`myUser_getId`()) */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myAddress` AS select `t`.`id` AS `id`,`t`.`clientFk` AS `clientFk`,`t`.`street` AS `street`,`t`.`city` AS `city`,`t`.`postalCode` AS `postalCode`,`t`.`provinceFk` AS `provinceFk`,`t`.`nickname` AS `nickname`,`t`.`isDefaultAddress` AS `isDefaultAddress`,`t`.`isActive` AS `isActive`,`t`.`longitude` AS `longitude`,`t`.`latitude` AS `latitude`,`t`.`agencyModeFk` AS `agencyModeFk` from `vn`.`address` `t` where `t`.`clientFk` = `account`.`myUser_getId`() */ /*!50002 WITH CASCADED CHECK OPTION */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -92964,10 +78362,10 @@ USE `hedera`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myBasket` AS select `o`.`id` AS `id`,`o`.`date_make` AS `made`,`o`.`date_send` AS `sent`,`o`.`customer_id` AS `clientFk`,`o`.`delivery_method_id` AS `deliveryMethodFk`,`o`.`agency_id` AS `agencyModeFk`,`o`.`address_id` AS `addressFk`,`o`.`company_id` AS `companyFk`,`o`.`note` AS `notes` from `hedera`.`order` `o` where (`o`.`id` = `MYBASKET_GETID`()) */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myBasket` AS select `o`.`id` AS `id`,`o`.`date_make` AS `made`,`o`.`date_send` AS `sent`,`o`.`customer_id` AS `clientFk`,`o`.`delivery_method_id` AS `deliveryMethodFk`,`o`.`agency_id` AS `agencyModeFk`,`o`.`address_id` AS `addressFk`,`o`.`company_id` AS `companyFk`,`o`.`note` AS `notes` from `hedera`.`order` `o` where `o`.`id` = `MYBASKET_GETID`() */ /*!50002 WITH CASCADED CHECK OPTION */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -92984,10 +78382,10 @@ USE `hedera`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myBasketDefaults` AS select coalesce(`dm`.`code`,`cm`.`code`) AS `deliveryMethod`,coalesce(`ad`.`agencyModeFk`,`oc`.`defaultAgencyFk`) AS `agencyModeFk`,`c`.`defaultAddressFk` AS `addressFk`,`oc`.`defaultAgencyFk` AS `defaultAgencyFk` from ((((((`hedera`.`orderConfig` `oc` join `vn`.`agencyMode` `ca` on((`ca`.`id` = `oc`.`defaultAgencyFk`))) join `vn`.`deliveryMethod` `cm` on((`cm`.`id` = `ca`.`deliveryMethodFk`))) left join `vn`.`client` `c` on((`c`.`id` = `account`.`myUser_getId`()))) left join `vn`.`address` `ad` on((`ad`.`id` = `c`.`defaultAddressFk`))) left join `vn`.`agencyMode` `a` on((`a`.`id` = `ad`.`agencyModeFk`))) left join `vn`.`deliveryMethod` `dm` on((`dm`.`id` = `a`.`deliveryMethodFk`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myBasketDefaults` AS select coalesce(`dm`.`code`,`cm`.`code`) AS `deliveryMethod`,coalesce(`ad`.`agencyModeFk`,`oc`.`defaultAgencyFk`) AS `agencyModeFk`,`c`.`defaultAddressFk` AS `addressFk`,`oc`.`defaultAgencyFk` AS `defaultAgencyFk` from ((((((`hedera`.`orderConfig` `oc` join `vn`.`agencyMode` `ca` on(`ca`.`id` = `oc`.`defaultAgencyFk`)) join `vn`.`deliveryMethod` `cm` on(`cm`.`id` = `ca`.`deliveryMethodFk`)) left join `vn`.`client` `c` on(`c`.`id` = `account`.`myUser_getId`())) left join `vn`.`address` `ad` on(`ad`.`id` = `c`.`defaultAddressFk`)) left join `vn`.`agencyMode` `a` on(`a`.`id` = `ad`.`agencyModeFk`)) left join `vn`.`deliveryMethod` `dm` on(`dm`.`id` = `a`.`deliveryMethodFk`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93003,10 +78401,10 @@ USE `hedera`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myBasketItem` AS select `r`.`id` AS `id`,`r`.`orderFk` AS `orderFk`,`r`.`warehouseFk` AS `warehouseFk`,`r`.`itemFk` AS `itemFk`,`r`.`amount` AS `amount`,`r`.`price` AS `price` from `hedera`.`orderRow` `r` where (`r`.`orderFk` = `MYBASKET_GETID`()) */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myBasketItem` AS select `r`.`id` AS `id`,`r`.`orderFk` AS `orderFk`,`r`.`warehouseFk` AS `warehouseFk`,`r`.`itemFk` AS `itemFk`,`r`.`amount` AS `amount`,`r`.`price` AS `price` from `hedera`.`orderRow` `r` where `r`.`orderFk` = `MYBASKET_GETID`() */ /*!50002 WITH CASCADED CHECK OPTION */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -93023,10 +78421,10 @@ USE `hedera`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myClient` AS select `c`.`id` AS `id`,`c`.`isToBeMailed` AS `isToBeMailed`,`c`.`defaultAddressFk` AS `defaultAddressFk`,`c`.`credit` AS `credit` from `vn`.`client` `c` where (`c`.`id` = `account`.`myUser_getId`()) */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myClient` AS select `c`.`id` AS `id`,`c`.`isToBeMailed` AS `isToBeMailed`,`c`.`defaultAddressFk` AS `defaultAddressFk`,`c`.`credit` AS `credit` from `vn`.`client` `c` where `c`.`id` = `account`.`myUser_getId`() */ /*!50002 WITH CASCADED CHECK OPTION */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -93043,10 +78441,10 @@ USE `hedera`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myInvoice` AS select `i`.`id` AS `id`,`i`.`ref` AS `ref`,`i`.`issued` AS `issued`,`i`.`amount` AS `amount`,`i`.`hasPdf` AS `hasPdf` from `vn`.`invoiceOut` `i` where (`i`.`clientFk` = `account`.`myUser_getId`()) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myInvoice` AS select `i`.`id` AS `id`,`i`.`ref` AS `ref`,`i`.`issued` AS `issued`,`i`.`amount` AS `amount`,`i`.`hasPdf` AS `hasPdf` from `vn`.`invoiceOut` `i` where `i`.`clientFk` = `account`.`myUser_getId`() */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93060,12 +78458,12 @@ USE `hedera`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myMenu` AS select `t`.`id` AS `id`,`t`.`path` AS `path`,`t`.`description` AS `description`,`t`.`parentFk` AS `parentFk` from (`hedera`.`menu` `t` join `account`.`myRole` `r` on((`r`.`id` = `t`.`roleFk`))) order by `t`.`parentFk`,`t`.`displayOrder`,`t`.`id` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myMenu` AS select `t`.`id` AS `id`,`t`.`path` AS `path`,`t`.`description` AS `description`,`t`.`parentFk` AS `parentFk` from (`hedera`.`menu` `t` join `account`.`myRole` `r` on(`r`.`id` = `t`.`roleFk`)) order by `t`.`parentFk`,`t`.`displayOrder`,`t`.`id` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93081,10 +78479,10 @@ USE `hedera`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myOrder` AS select `o`.`id` AS `id`,`o`.`date_send` AS `landed`,`o`.`customer_id` AS `clientFk`,`o`.`delivery_method_id` AS `deliveryMethodFk`,`o`.`agency_id` AS `agencyModeFk`,`o`.`address_id` AS `addressFk`,`o`.`company_id` AS `companyFk`,`o`.`note` AS `note`,`o`.`source_app` AS `sourceApp`,`o`.`confirmed` AS `isConfirmed`,`o`.`date_make` AS `created`,`o`.`first_row_stamp` AS `firstRowStamp`,`o`.`confirm_date` AS `confirmed` from `hedera`.`order` `o` where (`o`.`customer_id` = `account`.`myUser_getId`()) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myOrder` AS select `o`.`id` AS `id`,`o`.`date_send` AS `landed`,`o`.`customer_id` AS `clientFk`,`o`.`delivery_method_id` AS `deliveryMethodFk`,`o`.`agency_id` AS `agencyModeFk`,`o`.`address_id` AS `addressFk`,`o`.`company_id` AS `companyFk`,`o`.`note` AS `note`,`o`.`source_app` AS `sourceApp`,`o`.`confirmed` AS `isConfirmed`,`o`.`date_make` AS `created`,`o`.`first_row_stamp` AS `firstRowStamp`,`o`.`confirm_date` AS `confirmed` from `hedera`.`order` `o` where `o`.`customer_id` = `account`.`myUser_getId`() */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93098,12 +78496,12 @@ USE `hedera`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myOrderRow` AS select `orw`.`id` AS `id`,`orw`.`order_id` AS `Fk`,`orw`.`item_id` AS `itemFk`,`orw`.`warehouse_id` AS `warehouseFk`,`orw`.`shipment` AS `shipped`,`orw`.`amount` AS `amount`,`orw`.`price` AS `price`,`orw`.`rate` AS `rate`,`orw`.`created` AS `created`,`orw`.`Id_Movimiento` AS `saleFk` from (`hedera`.`order_row` `orw` join `hedera`.`myOrder` `o` on((`o`.`id` = `orw`.`order_id`))) */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myOrderRow` AS select `orw`.`id` AS `id`,`orw`.`order_id` AS `Fk`,`orw`.`item_id` AS `itemFk`,`orw`.`warehouse_id` AS `warehouseFk`,`orw`.`shipment` AS `shipped`,`orw`.`amount` AS `amount`,`orw`.`price` AS `price`,`orw`.`rate` AS `rate`,`orw`.`created` AS `created`,`orw`.`Id_Movimiento` AS `saleFk` from (`hedera`.`order_row` `orw` join `hedera`.`myOrder` `o` on(`o`.`id` = `orw`.`order_id`)) */ /*!50002 WITH CASCADED CHECK OPTION */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -93118,12 +78516,12 @@ USE `hedera`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myOrderTicket` AS select `o`.`id` AS `orderFk`,`ot`.`ticketFk` AS `ticketFk` from (`hedera`.`myOrder` `o` join `hedera`.`orderTicket` `ot` on((`ot`.`orderFk` = `o`.`id`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myOrderTicket` AS select `o`.`id` AS `orderFk`,`ot`.`ticketFk` AS `ticketFk` from (`hedera`.`myOrder` `o` join `hedera`.`orderTicket` `ot` on(`ot`.`orderFk` = `o`.`id`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93139,10 +78537,10 @@ USE `hedera`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myTicket` AS select `t`.`id` AS `id`,`t`.`clientFk` AS `clientFk`,`t`.`warehouseFk` AS `warehouseFk`,`t`.`shipped` AS `shipped`,`t`.`landed` AS `landed`,`t`.`nickname` AS `nickname`,`t`.`agencyModeFk` AS `agencyModeFk`,`t`.`refFk` AS `refFk`,`t`.`addressFk` AS `addressFk`,`t`.`location` AS `location`,`t`.`companyFk` AS `companyFk` from `vn`.`ticket` `t` where (`t`.`clientFk` = `account`.`myUser_getId`()) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myTicket` AS select `t`.`id` AS `id`,`t`.`clientFk` AS `clientFk`,`t`.`warehouseFk` AS `warehouseFk`,`t`.`shipped` AS `shipped`,`t`.`landed` AS `landed`,`t`.`nickname` AS `nickname`,`t`.`agencyModeFk` AS `agencyModeFk`,`t`.`refFk` AS `refFk`,`t`.`addressFk` AS `addressFk`,`t`.`location` AS `location`,`t`.`companyFk` AS `companyFk` from `vn`.`ticket` `t` where `t`.`clientFk` = `account`.`myUser_getId`() */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93156,12 +78554,12 @@ USE `hedera`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myTicketRow` AS select `s`.`id` AS `id`,`s`.`itemFk` AS `itemFk`,`s`.`ticketFk` AS `ticketFk`,`s`.`concept` AS `concept`,`s`.`quantity` AS `quantity`,`s`.`price` AS `price`,`s`.`discount` AS `discount`,`s`.`reserved` AS `reserved`,`s`.`isPicked` AS `isPicked` from (`vn`.`sale` `s` join `hedera`.`myTicket` `t` on((`s`.`ticketFk` = `t`.`id`))) */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myTicketRow` AS select `s`.`id` AS `id`,`s`.`itemFk` AS `itemFk`,`s`.`ticketFk` AS `ticketFk`,`s`.`concept` AS `concept`,`s`.`quantity` AS `quantity`,`s`.`price` AS `price`,`s`.`discount` AS `discount`,`s`.`reserved` AS `reserved`,`s`.`isPicked` AS `isPicked` from (`vn`.`sale` `s` join `hedera`.`myTicket` `t` on(`s`.`ticketFk` = `t`.`id`)) */ /*!50002 WITH CASCADED CHECK OPTION */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -93176,12 +78574,12 @@ USE `hedera`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myTicketService` AS select `s`.`id` AS `id`,`s`.`description` AS `description`,`s`.`quantity` AS `quantity`,`s`.`price` AS `price`,`s`.`taxClassFk` AS `taxClassFk`,`s`.`ticketFk` AS `ticketFk`,`s`.`ticketServiceTypeFk` AS `ticketServiceTypeFk` from (`vn`.`ticketService` `s` join `hedera`.`myTicket` `t` on((`s`.`ticketFk` = `t`.`id`))) */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myTicketService` AS select `s`.`id` AS `id`,`s`.`description` AS `description`,`s`.`quantity` AS `quantity`,`s`.`price` AS `price`,`s`.`taxClassFk` AS `taxClassFk`,`s`.`ticketFk` AS `ticketFk`,`s`.`ticketServiceTypeFk` AS `ticketServiceTypeFk` from (`vn`.`ticketService` `s` join `hedera`.`myTicket` `t` on(`s`.`ticketFk` = `t`.`id`)) */ /*!50002 WITH CASCADED CHECK OPTION */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -93198,10 +78596,10 @@ USE `hedera`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myTicketState` AS select `t`.`id` AS `id`,`t`.`clientFk` AS `clientFk`,`t`.`warehouseFk` AS `warehouseFk`,`t`.`shipped` AS `shipped`,`t`.`landed` AS `landed`,`t`.`nickname` AS `nickname`,`t`.`agencyModeFk` AS `agencyModeFk`,`t`.`refFk` AS `refFk`,`t`.`addressFk` AS `addressFk`,`t`.`location` AS `location`,`t`.`companyFk` AS `companyFk`,`ts`.`alertLevel` AS `alertLevel`,`ts`.`code` AS `code` from (`vn`.`ticket` `t` left join `vn`.`ticketState` `ts` on((`ts`.`ticketFk` = `t`.`id`))) where (`t`.`clientFk` = `account`.`myUser_getId`()) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myTicketState` AS select `t`.`id` AS `id`,`t`.`clientFk` AS `clientFk`,`t`.`warehouseFk` AS `warehouseFk`,`t`.`shipped` AS `shipped`,`t`.`landed` AS `landed`,`t`.`nickname` AS `nickname`,`t`.`agencyModeFk` AS `agencyModeFk`,`t`.`refFk` AS `refFk`,`t`.`addressFk` AS `addressFk`,`t`.`location` AS `location`,`t`.`companyFk` AS `companyFk`,`ts`.`alertLevel` AS `alertLevel`,`ts`.`code` AS `code` from (`vn`.`ticket` `t` left join `vn`.`ticketState` `ts` on(`ts`.`ticketFk` = `t`.`id`)) where `t`.`clientFk` = `account`.`myUser_getId`() */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93217,10 +78615,10 @@ USE `hedera`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myTpvTransaction` AS select `t`.`id` AS `id`,`t`.`merchantFk` AS `merchantFk`,`t`.`clientFk` AS `clientFk`,`t`.`receiptFk` AS `receiptFk`,`t`.`amount` AS `amount`,`t`.`response` AS `response`,`t`.`status` AS `status`,`t`.`created` AS `created` from `hedera`.`tpvTransaction` `t` where (`t`.`clientFk` = `account`.`myUser_getId`()) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `myTpvTransaction` AS select `t`.`id` AS `id`,`t`.`merchantFk` AS `merchantFk`,`t`.`clientFk` AS `clientFk`,`t`.`receiptFk` AS `receiptFk`,`t`.`amount` AS `amount`,`t`.`response` AS `response`,`t`.`status` AS `status`,`t`.`created` AS `created` from `hedera`.`tpvTransaction` `t` where `t`.`clientFk` = `account`.`myUser_getId`() */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93236,9 +78634,9 @@ USE `hedera`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `orderTicket` AS select `b`.`orderFk` AS `orderFk`,`b`.`ticketFk` AS `ticketFk` from `vn`.`orderTicket` `b` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -93253,11 +78651,11 @@ USE `hedera`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `order_component` AS select `t`.`rowFk` AS `order_row_id`,`t`.`componentFk` AS `component_id`,`t`.`price` AS `price` from `orderRowComponent` `t` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -93272,11 +78670,11 @@ USE `hedera`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `order_row` AS select `t`.`id` AS `id`,`t`.`orderFk` AS `order_id`,`t`.`itemFk` AS `item_id`,`t`.`warehouseFk` AS `warehouse_id`,`t`.`shipment` AS `shipment`,`t`.`amount` AS `amount`,`t`.`price` AS `price`,`t`.`rate` AS `rate`,`t`.`created` AS `created`,`t`.`saleFk` AS `Id_Movimiento` from `orderRow` `t` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -93303,11 +78701,11 @@ USE `pbx`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `cdrConf` AS select `c`.`call_date` AS `calldate`,`c`.`clid` AS `clid`,`c`.`src` AS `src`,`c`.`dst` AS `dst`,`c`.`dcontext` AS `dcontext`,`c`.`channel` AS `channel`,`c`.`dst_channel` AS `dstchannel`,`c`.`last_app` AS `lastapp`,`c`.`last_data` AS `lastdata`,`c`.`duration` AS `duration`,`c`.`billsec` AS `billsec`,`c`.`disposition` AS `disposition`,`c`.`ama_flags` AS `amaflags`,`c`.`account_code` AS `accountcode`,`c`.`unique_id` AS `uniqueid`,`c`.`user_field` AS `userfield` from `cdr` `c` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -93322,11 +78720,11 @@ USE `pbx`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `followmeConf` AS select `f`.`extension` AS `name`,`c`.`music` AS `music`,`c`.`context` AS `context`,`c`.`takeCall` AS `takecall`,`c`.`declineCall` AS `declinecall` from (`followme` `f` join `followmeConfig` `c`) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -93341,11 +78739,11 @@ USE `pbx`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `followmeNumberConf` AS select `f`.`extension` AS `name`,1 AS `ordinal`,`f`.`phone` AS `phonenumber`,`c`.`timeout` AS `timeout` from (`followme` `f` join `followmeConfig` `c`) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -93360,12 +78758,12 @@ USE `pbx`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `queueConf` AS select `q`.`name` AS `name`,`c`.`strategy` AS `strategy`,`c`.`timeout` AS `timeout`,`c`.`retry` AS `retry`,`c`.`weight` AS `weight`,`c`.`maxLen` AS `maxlen`,`c`.`ringInUse` AS `ringinuse` from (`queue` `q` join `queueConfig` `c` on((`q`.`config` = `c`.`id`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `queueConf` AS select `q`.`name` AS `name`,`c`.`strategy` AS `strategy`,`c`.`timeout` AS `timeout`,`c`.`retry` AS `retry`,`c`.`weight` AS `weight`,`c`.`maxLen` AS `maxlen`,`c`.`ringInUse` AS `ringinuse` from (`queue` `q` join `queueConfig` `c` on(`q`.`config` = `c`.`id`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93383,7 +78781,7 @@ USE `pbx`; /*!50001 SET character_set_results = utf8mb4 */; /*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `queueMemberConf` AS select `m`.`id` AS `uniqueid`,`m`.`queue` AS `queue_name`,concat('SIP/',`m`.`extension`) AS `interface`,0 AS `paused` from `queueMember` `m` union all select `p`.`id` AS `id`,`p`.`queue` AS `queue`,concat('Local/',`p`.`phone`,'@outgoing') AS `phone`,0 AS `paused` from `queuePhone` `p` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -93400,10 +78798,10 @@ USE `pbx`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `sipConf` AS select `s`.`user_id` AS `id`,`s`.`extension` AS `name`,NULL AS `callbackextension`,`s`.`md5Secret` AS `md5secret`,`u`.`nickname` AS `callerid`,`c`.`host` AS `host`,`c`.`deny` AS `deny`,`c`.`permit` AS `permit`,`c`.`type` AS `type`,`c`.`context` AS `context`,`c`.`incomingLimit` AS `incominglimit`,`c`.`pickupGroup` AS `pickupgroup`,`c`.`careInvite` AS `careinvite`,`c`.`insecure` AS `insecure`,`c`.`transport` AS `transport`,`c`.`nat` AS `nat`,`r`.`ipAddr` AS `ipaddr`,`r`.`regSeconds` AS `regseconds`,`r`.`port` AS `port`,`r`.`defaultUser` AS `defaultuser`,`r`.`userAgent` AS `useragent`,`r`.`lastMs` AS `lastms`,`r`.`fullContact` AS `fullcontact`,`r`.`regServer` AS `regserver` from (((`pbx`.`sip` `s` join `account`.`user` `u` on((`u`.`id` = `s`.`user_id`))) left join `pbx`.`sipReg` `r` on((`s`.`user_id` = `r`.`userId`))) join `pbx`.`sipConfig` `c`) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `sipConf` AS select `s`.`user_id` AS `id`,`s`.`extension` AS `name`,NULL AS `callbackextension`,`s`.`md5Secret` AS `md5secret`,`u`.`nickname` AS `callerid`,`c`.`host` AS `host`,`c`.`deny` AS `deny`,`c`.`permit` AS `permit`,`c`.`type` AS `type`,`c`.`context` AS `context`,`c`.`incomingLimit` AS `incominglimit`,`c`.`pickupGroup` AS `pickupgroup`,`c`.`careInvite` AS `careinvite`,`c`.`insecure` AS `insecure`,`c`.`transport` AS `transport`,`c`.`nat` AS `nat`,`r`.`ipAddr` AS `ipaddr`,`r`.`regSeconds` AS `regseconds`,`r`.`port` AS `port`,`r`.`defaultUser` AS `defaultuser`,`r`.`userAgent` AS `useragent`,`r`.`lastMs` AS `lastms`,`r`.`fullContact` AS `fullcontact`,`r`.`regServer` AS `regserver` from (((`pbx`.`sip` `s` join `account`.`user` `u` on(`u`.`id` = `s`.`user_id`)) left join `pbx`.`sipReg` `r` on(`s`.`user_id` = `r`.`userId`)) join `pbx`.`sipConfig` `c`) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93427,27 +78825,8 @@ USE `postgresql`; /*!50001 SET character_set_results = utf8mb4 */; /*!50001 SET collation_connection = utf8mb4_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `calendar_employee` AS select `ce`.`id` AS `id`,`ce`.`businessFk` AS `business_id`,`ce`.`dayOffTypeFk` AS `calendar_state_id`,`ce`.`dated` AS `date` from `vn`.`calendar` `ce` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `person` --- - -/*!50001 DROP TABLE IF EXISTS `person`*/; -/*!50001 DROP VIEW IF EXISTS `person`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `person` AS select `p`.`id` AS `person_id`,`p`.`surnames` AS `name`,`p`.`nickname` AS `nickname`,`p`.`fi` AS `nif`,`p`.`birth` AS `birth`,`p`.`firstname` AS `firstname`,`p`.`p2` AS `p2`,`p`.`readerId` AS `nis`,`p`.`workerFk` AS `id_trabajador`,`p`.`isDisable` AS `isDisable`,`p`.`isFreelance` AS `isFreelance`,`p`.`isSsDiscounted` AS `isSsDiscounted`,`p`.`sex` AS `sex` from `vn`.`person` `p` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `calendar_employee` AS select `ce`.`id` AS `id`,`ce`.`businessFk` AS `businessFk`,`ce`.`dayOffTypeFk` AS `calendar_state_id`,`ce`.`dated` AS `date` from `vn`.`calendar` `ce` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93469,10 +78848,10 @@ USE `sage`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `clientLastTwoMonths` AS select `vn`.`invoiceOut`.`clientFk` AS `clientFk`,`vn`.`invoiceOut`.`companyFk` AS `companyFk` from `vn`.`invoiceOut` where (`vn`.`invoiceOut`.`issued` > (curdate() - interval 2 month)) union select `vn`.`receipt`.`clientFk` AS `clientFk`,`vn`.`receipt`.`companyFk` AS `companyFk` from `vn`.`receipt` where (`vn`.`receipt`.`payed` > (curdate() - interval 2 month)) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `clientLastTwoMonths` AS select `vn`.`invoiceOut`.`clientFk` AS `clientFk`,`vn`.`invoiceOut`.`companyFk` AS `companyFk` from `vn`.`invoiceOut` where `vn`.`invoiceOut`.`issued` > `util`.`VN_CURDATE`() - interval 2 month union select `vn`.`receipt`.`clientFk` AS `clientFk`,`vn`.`receipt`.`companyFk` AS `companyFk` from `vn`.`receipt` where `vn`.`receipt`.`payed` > `util`.`VN_CURDATE`() - interval 2 month */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93488,29 +78867,29 @@ USE `sage`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `invoiceInList` AS select `vn`.`invoiceIn`.`id` AS `id`,`vn`.`invoiceIn`.`supplierRef` AS `supplierRef`,`vn`.`invoiceIn`.`serial` AS `serial`,`vn`.`invoiceIn`.`supplierFk` AS `supplierFk`,`vn`.`invoiceIn`.`issued` AS `issued`,if((`vn`.`invoiceIn`.`expenceFkDeductible` > 0),1,0) AS `isVatDeductible`,`vn`.`invoiceIn`.`serialNumber` AS `serialNumber` from `vn`.`invoiceIn` where (`vn`.`invoiceIn`.`issued` >= (date_format(curdate(),'%Y-01-01') + interval -(1) year)) union all select `vn`.`dua`.`id` AS `id`,`vn`.`dua`.`code` AS `code`,'D' AS `D`,`c`.`id` AS `supplierFk`,`vn`.`dua`.`issued` AS `issued`,0 AS `FALSE`,`vn`.`dua`.`id` AS `serialNumber` from (`vn`.`dua` join `vn`.`company` `c` on((`c`.`code` = 'VNL'))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `invoiceInList` AS select `vn`.`invoiceIn`.`id` AS `id`,`vn`.`invoiceIn`.`supplierRef` AS `supplierRef`,`vn`.`invoiceIn`.`serial` AS `serial`,`vn`.`invoiceIn`.`supplierFk` AS `supplierFk`,`vn`.`invoiceIn`.`issued` AS `issued`,if(`vn`.`invoiceIn`.`expenceFkDeductible` > 0,1,0) AS `isVatDeductible`,`vn`.`invoiceIn`.`serialNumber` AS `serialNumber` from `vn`.`invoiceIn` where `vn`.`invoiceIn`.`issued` >= date_format(`util`.`VN_CURDATE`(),'%Y-01-01') + interval -1 year union all select `vn`.`dua`.`id` AS `id`,`vn`.`dua`.`code` AS `code`,'D' AS `D`,`c`.`id` AS `supplierFk`,`vn`.`dua`.`issued` AS `issued`,0 AS `FALSE`,`vn`.`dua`.`id` AS `serialNumber` from (`vn`.`dua` join `vn`.`company` `c` on(`c`.`code` = 'VNL')) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; -- --- Final view structure for view `providerLastThreeMonths` +-- Final view structure for view `supplierLastThreeMonths` -- -/*!50001 DROP TABLE IF EXISTS `providerLastThreeMonths`*/; -/*!50001 DROP VIEW IF EXISTS `providerLastThreeMonths`*/; +/*!50001 DROP TABLE IF EXISTS `supplierLastThreeMonths`*/; +/*!50001 DROP VIEW IF EXISTS `supplierLastThreeMonths`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `providerLastThreeMonths` AS select `vn`.`invoiceIn`.`supplierFk` AS `supplierFk`,`vn`.`invoiceIn`.`companyFk` AS `companyFk` from `vn`.`invoiceIn` where (`vn`.`invoiceIn`.`issued` > (curdate() - interval 3 month)) union select `vn`.`payment`.`supplierFk` AS `supplierFk`,`vn`.`payment`.`companyFk` AS `companyFk` from `vn`.`payment` where (`vn`.`payment`.`received` > (curdate() + interval -(3) month)) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `supplierLastThreeMonths` AS select `vn`.`invoiceIn`.`supplierFk` AS `supplierFk`,`vn`.`invoiceIn`.`companyFk` AS `companyFk` from `vn`.`invoiceIn` where `vn`.`invoiceIn`.`issued` > `util`.`VN_CURDATE`() - interval 3 month union select `vn`.`payment`.`supplierFk` AS `supplierFk`,`vn`.`payment`.`companyFk` AS `companyFk` from `vn`.`payment` where `vn`.`payment`.`received` > `util`.`VN_CURDATE`() + interval -3 month */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93530,11 +78909,11 @@ USE `salix`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `Account` AS select `u`.`id` AS `id`,`u`.`name` AS `name`,`u`.`password` AS `password`,`u`.`role` AS `roleFk`,`u`.`active` AS `active`,`u`.`email` AS `email`,`u`.`created` AS `created`,`u`.`updated` AS `updated` from `account`.`user` `u` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -93549,11 +78928,11 @@ USE `salix`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `Role` AS select `r`.`id` AS `id`,`r`.`name` AS `name`,`r`.`description` AS `description`,`r`.`created` AS `created`,`r`.`modified` AS `modified` from `account`.`role` `r` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -93568,12 +78947,12 @@ USE `salix`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `RoleMapping` AS select ((`u`.`id` * 1000) + `r`.`inheritsFrom`) AS `id`,'USER' AS `principalType`,`u`.`id` AS `principalId`,`r`.`inheritsFrom` AS `roleId` from (`account`.`user` `u` join `account`.`roleRole` `r` on((`r`.`role` = `u`.`role`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `RoleMapping` AS select `u`.`id` * 1000 + `r`.`inheritsFrom` AS `id`,'USER' AS `principalType`,`u`.`id` AS `principalId`,`r`.`inheritsFrom` AS `roleId` from (`account`.`user` `u` join `account`.`roleRole` `r` on(`r`.`role` = `u`.`role`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93587,11 +78966,11 @@ USE `salix`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `User` AS select `account`.`user`.`id` AS `id`,`account`.`user`.`realm` AS `realm`,`account`.`user`.`name` AS `username`,`account`.`user`.`bcryptPassword` AS `password`,`account`.`user`.`email` AS `email`,`account`.`user`.`emailVerified` AS `emailVerified`,`account`.`user`.`verificationToken` AS `verificationToken` from `account`.`user` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -93609,6 +78988,25 @@ USE `stock`; USE `util`; +-- +-- Final view structure for view `eventLogGrouped` +-- + +/*!50001 DROP TABLE IF EXISTS `eventLogGrouped`*/; +/*!50001 DROP VIEW IF EXISTS `eventLogGrouped`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb3 */; +/*!50001 SET character_set_results = utf8mb3 */; +/*!50001 SET collation_connection = utf8mb3_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `eventLogGrouped` AS select max(`t`.`date`) AS `lastHappened`,count(0) AS `nErrors`,`t`.`event` AS `event`,`t`.`error` AS `error` from `eventLog` `t` group by `t`.`event`,`t`.`error` order by max(`t`.`date`) desc */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + -- -- Current Database: `vn` -- @@ -93616,77 +79014,39 @@ USE `util`; USE `vn`; -- --- Final view structure for view `__coolerPathDetail` +-- Final view structure for view `NewView` -- -/*!50001 DROP TABLE IF EXISTS `__coolerPathDetail`*/; -/*!50001 DROP VIEW IF EXISTS `__coolerPathDetail`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `__coolerPathDetail` AS select `c`.`cooler_path_detail_id` AS `id`,`c`.`cooler_path_id` AS `coolerPathFk`,`c`.`pasillo` AS `hallway` from `vn2008`.`cooler_path_detail` `c` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `absenceType` --- - -/*!50001 DROP TABLE IF EXISTS `absenceType`*/; -/*!50001 DROP VIEW IF EXISTS `absenceType`*/; +/*!50001 DROP TABLE IF EXISTS `NewView`*/; +/*!50001 DROP VIEW IF EXISTS `NewView`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `absenceType` AS select `cs`.`calendar_state_id` AS `id`,`cs`.`type` AS `name`,`cs`.`rgb` AS `rgb`,`cs`.`code` AS `code`,`cs`.`permissionRate` AS `permissionRate`,`cs`.`holidayEntitlementRate` AS `holidayEntitlementRate`,`cs`.`discountRate` AS `discountRate` from `postgresql`.`calendar_state` `cs` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `NewView` AS select `c`.`id` AS `clientFk`,max(`t`.`shipped`) AS `lastShipped`,`pc`.`notBuyingMonths` AS `notBuyingMonths` from ((`client` `c` join `productionConfig` `pc`) left join `ticket` `t` on(`c`.`id` = `t`.`clientFk` and `t`.`shipped` < `util`.`VN_CURDATE`() + interval -`pc`.`rookieDays` day)) group by `c`.`id` having `lastShipped` is null or `lastShipped` < `util`.`VN_CURDATE`() + interval -`notBuyingMonths` month */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; -- --- Final view structure for view `accounting` +-- Final view structure for view `agencyTerm` -- -/*!50001 DROP TABLE IF EXISTS `accounting`*/; -/*!50001 DROP VIEW IF EXISTS `accounting`*/; +/*!50001 DROP TABLE IF EXISTS `agencyTerm`*/; +/*!50001 DROP VIEW IF EXISTS `agencyTerm`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET character_set_client = utf8mb3 */; +/*!50001 SET character_set_results = utf8mb3 */; +/*!50001 SET collation_connection = utf8mb3_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `accounting` AS select `b`.`id` AS `id`,`b`.`bank` AS `bank`,`b`.`account` AS `account`,`b`.`cash` AS `accountingTypeFk`,`b`.`entityFk` AS `entityFk`,`b`.`isActive` AS `isActive`,`b`.`currencyFk` AS `currencyFk` from `bank` `b` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `agencyProvince__` --- - -/*!50001 DROP TABLE IF EXISTS `agencyProvince__`*/; -/*!50001 DROP VIEW IF EXISTS `agencyProvince__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `agencyProvince__` AS select `a`.`province_id` AS `provinceFk`,`a`.`agency_id` AS `agencyFk`,`a`.`zona` AS `zone`,`a`.`warehouse_id` AS `warehouseFk`,`a`.`isVolumetric` AS `isVolumetric` from `vn2008`.`Agencias_province` `a` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `agencyTerm` AS select `sat`.`agencyFk` AS `agencyFk`,`sat`.`minimumPackages` AS `minimumPackages`,`sat`.`kmPrice` AS `kmPrice`,`sat`.`packagePrice` AS `packagePrice`,`sat`.`routePrice` AS `routePrice`,`sat`.`minimumKm` AS `minimumKm`,`sat`.`minimumM3` AS `minimumM3`,`sat`.`m3Price` AS `m3Price` from `supplierAgencyTerm` `sat` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93700,50 +79060,50 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `annualAverageInvoiced` AS select `cec`.`clientFk` AS `clientFk`,`cec`.`invoiced` AS `invoiced` from `bs`.`clientAnnualConsumption` `cec` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; -- --- Final view structure for view `awb__` +-- Final view structure for view `awbVolume` -- -/*!50001 DROP TABLE IF EXISTS `awb__`*/; -/*!50001 DROP VIEW IF EXISTS `awb__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `awb__` AS select `a`.`id` AS `id`,`a`.`codigo` AS `code`,`a`.`bultos` AS `package`,`a`.`peso` AS `weight`,`a`.`MYSQL_TIME` AS `created`,`a`.`transitario_id` AS `transitoryFk`,`a`.`iva_id` AS `taxFk`,`a`.`gestdoc_id` AS `docFk`,`a`.`importe` AS `amount`,`a`.`carguera_id` AS `freightFk`,`a`.`m3` AS `m3`,`a`.`stems` AS `stems`,`a`.`flight_id` AS `flightFk`,`a`.`volume_weight` AS `volumeWeight`,`a`.`hb` AS `hb`,`a`.`rate` AS `rate`,`a`.`booked` AS `booked`,`a`.`issued` AS `issued`,`a`.`operated` AS `operated`,`a`.`bookEntried` AS `bookEntried`,`a`.`invoiceInFk` AS `invoiceInFk`,`a`.`isChecked` AS `isChecked` from `vn2008`.`awb` `a` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `bankPolicy` --- - -/*!50001 DROP TABLE IF EXISTS `bankPolicy`*/; -/*!50001 DROP VIEW IF EXISTS `bankPolicy`*/; +/*!50001 DROP TABLE IF EXISTS `awbVolume`*/; +/*!50001 DROP VIEW IF EXISTS `awbVolume`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `bankPolicy` AS select `bp`.`poliza_id` AS `id`,`bp`.`referencia` AS `ref`,`bp`.`importe` AS `amount`,`bp`.`com_dispuesto` AS `balanceInterestDrawn`,`bp`.`com_no_dispuesto` AS `commissionAvailableBalances`,`bp`.`com_anual` AS `openingCommission`,`bp`.`apertura` AS `started`,`bp`.`cierre` AS `ended`,`bp`.`Id_Banco` AS `bankFk`,`bp`.`empresa_id` AS `companyFk`,`bp`.`supplierFk` AS `supplierFk`,`bp`.`description` AS `description`,`bp`.`hasGuarantee` AS `hasGuarantee`,`bp`.`dmsFk` AS `dmsFk`,`bp`.`notaryFk` AS `notaryFk`,`bp`.`currencyFk` AS `currencyFk`,`bp`.`amortizationTypeFk` AS `amortizationTypeFk`,`bp`.`periodicityTypeFk` AS `periodicityTypeFk`,`bp`.`insuranceExpired` AS `insuranceExpired` from `vn2008`.`Bancos_poliza` `bp` order by `bp`.`poliza_id` desc */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `awbVolume` AS select `d`.`awbFk` AS `awbFk`,`b`.`stickers` * `i`.`density` * if(`p`.`volume` > 0,`p`.`volume`,`p`.`width` * `p`.`depth` * if(`p`.`height` = 0,`i`.`size` + 10,`p`.`height`)) / (`vc`.`aerealVolumetricDensity` * 1000) AS `volume`,`b`.`id` AS `buyFk` from ((((((((`buy` `b` join `item` `i` on(`b`.`itemFk` = `i`.`id`)) join `itemType` `it` on(`i`.`typeFk` = `it`.`id`)) join `packaging` `p` on(`p`.`id` = `b`.`packageFk`)) join `entry` `e` on(`b`.`entryFk` = `e`.`id`)) join `travel` `t` on(`t`.`id` = `e`.`travelFk`)) join `duaEntry` `de` on(`de`.`entryFk` = `e`.`id`)) join `dua` `d` on(`d`.`id` = `de`.`duaFk`)) join `volumeConfig` `vc`) where `t`.`shipped` > makedate(year(`util`.`VN_CURDATE`()) - 1,1) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `bank` +-- + +/*!50001 DROP TABLE IF EXISTS `bank`*/; +/*!50001 DROP VIEW IF EXISTS `bank`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `bank` AS select `a`.`id` AS `id`,`a`.`bank` AS `bank`,`a`.`account` AS `account`,`a`.`accountingTypeFk` AS `cash`,`a`.`entityFk` AS `entityFk`,`a`.`isActive` AS `isActive`,`a`.`currencyFk` AS `currencyFk`,`a`.`code` AS `code` from `accounting` `a` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93759,10 +79119,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `businessCalendar` AS select `ce`.`id` AS `id`,`ce`.`business_id` AS `businessFk`,`ce`.`calendar_state_id` AS `absenceTypeFk`,`ce`.`date` AS `dated` from `postgresql`.`calendar_employee` `ce` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `businessCalendar` AS select `ce`.`id` AS `id`,`ce`.`businessFk` AS `businessFk`,`ce`.`calendar_state_id` AS `absenceTypeFk`,`ce`.`date` AS `dated` from `postgresql`.`calendar_employee` `ce` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93776,12 +79136,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `buyer` AS select distinct `u`.`id` AS `userFk`,`u`.`nickname` AS `nickname` from (`account`.`user` `u` join `vn`.`itemType` `it` on((`it`.`workerFk` = `u`.`id`))) where `u`.`active` order by `u`.`nickname` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `buyer` AS select distinct `u`.`id` AS `userFk`,`u`.`nickname` AS `nickname` from (`account`.`user` `u` join `vn`.`itemType` `it` on(`it`.`workerFk` = `u`.`id`)) where `u`.`active` <> 0 order by `u`.`nickname` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93795,69 +79155,31 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `buyerSales` AS select `v`.`importe` AS `importe`,`w`.`code` AS `comprador`,`t`.`year` AS `año`,`t`.`week` AS `semana` from (((`bs`.`ventas` `v` join `vn`.`time` `t` on((`t`.`dated` = `v`.`fecha`))) join `vn`.`itemType` `it` on((`it`.`id` = `v`.`tipo_id`))) join `vn`.`worker` `w` on((`w`.`id` = `it`.`workerFk`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `buyerSales` AS select `v`.`importe` AS `importe`,`w`.`code` AS `comprador`,`t`.`year` AS `año`,`t`.`week` AS `semana` from (((`bs`.`ventas` `v` join `vn`.`time` `t` on(`t`.`dated` = `v`.`fecha`)) join `vn`.`itemType` `it` on(`it`.`id` = `v`.`tipo_id`)) join `vn`.`worker` `w` on(`w`.`id` = `it`.`workerFk`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; -- --- Final view structure for view `calendar__` +-- Final view structure for view `clientLost` -- -/*!50001 DROP TABLE IF EXISTS `calendar__`*/; -/*!50001 DROP VIEW IF EXISTS `calendar__`*/; +/*!50001 DROP TABLE IF EXISTS `clientLost`*/; +/*!50001 DROP VIEW IF EXISTS `clientLost`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `calendar__` AS select `ce`.`id` AS `id`,`ce`.`business_id` AS `businessFk`,`ce`.`calendar_state_id` AS `dayOffTypeFk`,`ce`.`date` AS `dated` from `postgresql`.`calendar_employee` `ce` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `claimRatio__` --- - -/*!50001 DROP TABLE IF EXISTS `claimRatio__`*/; -/*!50001 DROP VIEW IF EXISTS `claimRatio__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `claimRatio__` AS select `claims_ratio`.`Id_Cliente` AS `clientFk`,`claims_ratio`.`Consumo` AS `yearSale`,`claims_ratio`.`Reclamaciones` AS `claimAmount`,`claims_ratio`.`Ratio` AS `claimingRate`,`claims_ratio`.`recobro` AS `priceIncreasing`,`claims_ratio`.`inflacion` AS `packingRate` from `bi`.`claims_ratio` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `clientManaCache__` --- - -/*!50001 DROP TABLE IF EXISTS `clientManaCache__`*/; -/*!50001 DROP VIEW IF EXISTS `clientManaCache__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `clientManaCache__` AS select `mc`.`Id_Cliente` AS `clientFk`,`mc`.`Mana` AS `mana`,`mc`.`dated` AS `dated` from `bs`.`manaCustomer` `mc` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `clientLost` AS select `c`.`id` AS `clientFk`,max(`t`.`shipped`) AS `lastShipped`,`pc`.`notBuyingMonths` AS `notBuyingMonths` from ((`client` `c` join `productionConfig` `pc`) left join `ticket` `t` on(`c`.`id` = `t`.`clientFk` and `t`.`shipped` < `util`.`VN_CURDATE`() + interval -`pc`.`rookieDays` day)) group by `c`.`id` having `lastShipped` is null or `lastShipped` < `util`.`VN_CURDATE`() + interval -`notBuyingMonths` month */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93873,29 +79195,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `clientPhoneBook` AS select `c`.`id` AS `clientFk`,trim(`c`.`phone`) AS `phone` from `client` `c` where (`c`.`phone` and `c`.`isActive`) union select `c`.`id` AS `clientFk`,trim(`c`.`mobile`) AS `phone` from `client` `c` where (`c`.`mobile` and `c`.`isActive`) union select `a`.`clientFk` AS `clientFk`,trim(`a`.`phone`) AS `phone` from (`address` `a` join `client` `c` on((`c`.`id` = `a`.`clientFk`))) where (`a`.`phone` and `c`.`isActive`) union select `a`.`clientFk` AS `clientFk`,trim(`a`.`mobile`) AS `phone` from (`address` `a` join `client` `c` on((`c`.`id` = `a`.`clientFk`))) where (`a`.`mobile` and `c`.`isActive`) union select `cc`.`clientFk` AS `clientFk`,trim(`cc`.`phone`) AS `phone` from (`clientContact` `cc` left join `client` `c` on((`c`.`id` = `cc`.`clientFk`))) where (`c`.`phone` and `c`.`isActive`) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `clientRisk__` --- - -/*!50001 DROP TABLE IF EXISTS `clientRisk__`*/; -/*!50001 DROP VIEW IF EXISTS `clientRisk__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `clientRisk__` AS select `c`.`customer_id` AS `clientFk`,`c`.`company_id` AS `companyFk`,`c`.`amount` AS `amount` from `bi`.`customer_risk__` `c` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `clientPhoneBook` AS select `c`.`id` AS `clientFk`,trim(`c`.`phone`) AS `phone` from `client` `c` where `c`.`phone` <> 0 and `c`.`isActive` <> 0 union select `c`.`id` AS `clientFk`,trim(`c`.`mobile`) AS `phone` from `client` `c` where `c`.`mobile` <> 0 and `c`.`isActive` <> 0 union select `a`.`clientFk` AS `clientFk`,trim(`a`.`phone`) AS `phone` from (`address` `a` join `client` `c` on(`c`.`id` = `a`.`clientFk`)) where `a`.`phone` <> 0 and `c`.`isActive` <> 0 union select `a`.`clientFk` AS `clientFk`,trim(`a`.`mobile`) AS `phone` from (`address` `a` join `client` `c` on(`c`.`id` = `a`.`clientFk`)) where `a`.`mobile` <> 0 and `c`.`isActive` <> 0 union select `cc`.`clientFk` AS `clientFk`,trim(`cc`.`phone`) AS `phone` from (`clientContact` `cc` left join `client` `c` on(`c`.`id` = `cc`.`clientFk`)) where `c`.`phone` <> 0 and `c`.`isActive` <> 0 */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -93909,145 +79212,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `cmr_list` AS select `cmr`.`id` AS `cmrFk`,`cmr`.`ticketFk` AS `ticketFk`,`cmr`.`truckPlate` AS `truckPlate`,`cmr`.`observations` AS `observations`,`cmr`.`senderInstruccions` AS `senderInstruccions`,`cmr`.`paymentInstruccions` AS `paymentInstruccions`,`cmr`.`specialAgreements` AS `specialAgreements`,`cmr`.`created` AS `created`,`cmr`.`packagesList` AS `packagesList`,`aTo`.`nickname` AS `clientName`,`aTo`.`postalCode` AS `clientPostalCode`,`aTo`.`street` AS `clientStreet`,`aTo`.`city` AS `clientCity`,`pTo`.`name` AS `clientProvince`,`cTo`.`country` AS `clientCountry`,`su`.`name` AS `companyName`,`su`.`street` AS `companyStreet`,`su`.`postCode` AS `companyPostCode`,`su`.`city` AS `companyCity`,`cSu`.`country` AS `companyCountry`,concat(`aFrom`.`street`,' ',`aFrom`.`postalCode`,' ',`aFrom`.`city`,' (',`cFrom`.`country`,')') AS `warehouseAddress`,`cmr`.`created` AS `shipped`,`aTo`.`nickname` AS `clientOficialName`,`cmr`.`supplierFk` AS `supplierFk`,`aSu`.`name` AS `carrierName`,`aSu`.`street` AS `carrierStreet`,`aSu`.`postCode` AS `carrierPostCode`,`aSu`.`city` AS `carrierCity`,`cAs`.`country` AS `carrierCountry`,ifnull(`aTo`.`phone`,`client`.`phone`) AS `phone`,ifnull(`aTo`.`mobile`,`client`.`mobile`) AS `mobile`,`aTo`.`id` AS `addressFk`,`c`.`stamp` AS `stamp`,`cmr`.`merchandiseDetail` AS `merchandiseDetail` from ((((((((((((`cmr` left join `address` `aTo` on((`aTo`.`id` = `cmr`.`addressToFk`))) left join `province` `pTo` on((`pTo`.`id` = `aTo`.`provinceFk`))) left join `country` `cTo` on((`cTo`.`id` = `pTo`.`countryFk`))) left join `client` on((`client`.`id` = `aTo`.`clientFk`))) left join `supplier` `su` on((`su`.`id` = `cmr`.`companyFk`))) left join `country` `cSu` on((`cSu`.`id` = `su`.`countryFk`))) left join `address` `aFrom` on((`aFrom`.`id` = `cmr`.`addressFromFk`))) left join `province` `pFrom` on((`pFrom`.`id` = `aFrom`.`provinceFk`))) left join `country` `cFrom` on((`cFrom`.`id` = `pFrom`.`countryFk`))) left join `supplier` `aSu` on((`aSu`.`id` = `cmr`.`supplierFk`))) left join `country` `cAs` on((`cAs`.`id` = `aSu`.`countryFk`))) join `company` `c` on((`c`.`id` = `cmr`.`companyFk`))) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `collectionReportSource` --- - -/*!50001 DROP TABLE IF EXISTS `collectionReportSource`*/; -/*!50001 DROP VIEW IF EXISTS `collectionReportSource`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `collectionReportSource` AS select `tc`.`collectionFk` AS `collectionFk`,`tc`.`ticketFk` AS `ticketFk`,`s`.`itemFk` AS `itemFk`,`s`.`concept` AS `concept`,`i`.`size` AS `size`,`s`.`quantity` AS `quantity`,`ip`.`code` AS `nicho`,`tc`.`level` AS `level` from (((((`collection` `c` join `ticketCollection` `tc` on((`tc`.`collectionFk` = `c`.`id`))) join `ticket` `t` on((`t`.`id` = `tc`.`ticketFk`))) join `sale` `s` on((`s`.`ticketFk` = `t`.`id`))) join `item` `i` on((`i`.`id` = `s`.`itemFk`))) left join `itemPlacement` `ip` on(((`ip`.`itemFk` = `s`.`itemFk`) and (`ip`.`warehouseFk` = `t`.`warehouseFk`)))) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `collectionSmartTag` --- - -/*!50001 DROP TABLE IF EXISTS `collectionSmartTag`*/; -/*!50001 DROP VIEW IF EXISTS `collectionSmartTag`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `collectionSmartTag` AS select `st`.`code` AS `code`,`tc`.`ticketFk` AS `ticketFk`,`tc`.`level` AS `level`,`tc`.`wagon` AS `wagon`,`st`.`shelvingFk` AS `shelvingFk`,`tc`.`collectionFk` AS `collectionFk`,`am`.`name` AS `agencyFk`,`t`.`clientFk` AS `clientFk` from (((((`ticketCollection` `tc` join `smartTag` `st` on((`st`.`code` = (`tc`.`smartTagFk` collate utf8_general_ci)))) join `ticket` `t` on((`t`.`id` = `tc`.`ticketFk`))) join `collection` `c` on((`c`.`id` = `tc`.`collectionFk`))) join `worker` `w` on((`w`.`id` = `c`.`workerFk`))) join `agencyMode` `am` on((`am`.`id` = `t`.`agencyModeFk`))) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `collectionSmartTag2` --- - -/*!50001 DROP TABLE IF EXISTS `collectionSmartTag2`*/; -/*!50001 DROP VIEW IF EXISTS `collectionSmartTag2`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `collectionSmartTag2` AS select `st`.`code` AS `code`,`tc`.`ticketFk` AS `ticketFk`,`tc`.`level` AS `level`,`tc`.`wagon` AS `wagon`,`st`.`shelvingFk` AS `shelvingFk`,`tc`.`collectionFk` AS `collectionFk`,`am`.`name` AS `agencyFk`,`t`.`clientFk` AS `clientFk`,`u`.`name` AS `worker`,`t`.`shipped` AS `shipped`,`t`.`landed` AS `landed` from ((((((`vn`.`ticketCollection` `tc` join `vn`.`smartTag` `st` on((`st`.`code` = (`tc`.`smartTagFk` collate utf8_general_ci)))) join `vn`.`ticket` `t` on((`t`.`id` = `tc`.`ticketFk`))) join `vn`.`collection` `c` on((`c`.`id` = `tc`.`collectionFk`))) join `vn`.`worker` `w` on((`w`.`id` = `c`.`workerFk`))) join `vn`.`agencyMode` `am` on((`am`.`id` = `t`.`agencyModeFk`))) join `account`.`user` `u` on((`u`.`id` = `w`.`id`))) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `componentRate__` --- - -/*!50001 DROP TABLE IF EXISTS `componentRate__`*/; -/*!50001 DROP VIEW IF EXISTS `componentRate__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `componentRate__` AS select `t`.`Id_Componente` AS `id`,`t`.`Componente` AS `name`,`t`.`tarifa_componentes_series_id` AS `componentTypeRate`,`t`.`tarifa_class` AS `classRate`,`t`.`tax` AS `tax`,`t`.`is_renewable` AS `isRenewable`,`t`.`code` AS `code` from `bi`.`tarifa_componentes` `t` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `componentTypeRate__` --- - -/*!50001 DROP TABLE IF EXISTS `componentTypeRate__`*/; -/*!50001 DROP VIEW IF EXISTS `componentTypeRate__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `componentTypeRate__` AS select `t`.`tarifa_componentes_series_id` AS `id`,`t`.`Serie` AS `type`,`t`.`base` AS `base` from `bi`.`tarifa_componentes_series` `t` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `componentType__` --- - -/*!50001 DROP TABLE IF EXISTS `componentType__`*/; -/*!50001 DROP VIEW IF EXISTS `componentType__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `componentType__` AS select `t`.`tarifa_componentes_series_id` AS `id`,`t`.`Serie` AS `type`,`t`.`base` AS `isBase`,`t`.`margen` AS `isMargin` from `bi`.`tarifa_componentes_series` `t` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `component__` --- - -/*!50001 DROP TABLE IF EXISTS `component__`*/; -/*!50001 DROP VIEW IF EXISTS `component__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `component__` AS select `t`.`Id_Componente` AS `id`,`t`.`Componente` AS `name`,`t`.`tarifa_componentes_series_id` AS `typeFk`,`t`.`tarifa_class` AS `classRate`,`t`.`tax` AS `tax`,`t`.`is_renewable` AS `isRenewable`,`t`.`code` AS `code` from `bi`.`tarifa_componentes` `t` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `cmr_list` AS select `cmr`.`id` AS `cmrFk`,`cmr`.`ticketFk` AS `ticketFk`,`cmr`.`truckPlate` AS `truckPlate`,`cmr`.`observations` AS `observations`,`cmr`.`senderInstruccions` AS `senderInstruccions`,`cmr`.`paymentInstruccions` AS `paymentInstruccions`,`cmr`.`specialAgreements` AS `specialAgreements`,`cmr`.`created` AS `created`,`cmr`.`packagesList` AS `packagesList`,`aTo`.`nickname` AS `clientName`,`aTo`.`postalCode` AS `clientPostalCode`,`aTo`.`street` AS `clientStreet`,`aTo`.`city` AS `clientCity`,`pTo`.`name` AS `clientProvince`,`cTo`.`country` AS `clientCountry`,`su`.`name` AS `companyName`,`su`.`street` AS `companyStreet`,`su`.`postCode` AS `companyPostCode`,`su`.`city` AS `companyCity`,`cSu`.`country` AS `companyCountry`,concat(`aFrom`.`street`,' ',`aFrom`.`postalCode`,' ',`aFrom`.`city`,' (',`cFrom`.`country`,')') AS `warehouseAddress`,`cmr`.`created` AS `shipped`,`aTo`.`nickname` AS `clientOficialName`,`cmr`.`supplierFk` AS `supplierFk`,`aSu`.`name` AS `carrierName`,`aSu`.`street` AS `carrierStreet`,`aSu`.`postCode` AS `carrierPostCode`,`aSu`.`city` AS `carrierCity`,`cAs`.`country` AS `carrierCountry`,ifnull(`aTo`.`phone`,`client`.`phone`) AS `phone`,ifnull(`aTo`.`mobile`,`client`.`mobile`) AS `mobile`,`aTo`.`id` AS `addressFk`,`c`.`stamp` AS `stamp`,`cmr`.`merchandiseDetail` AS `merchandiseDetail` from ((((((((((((`cmr` left join `address` `aTo` on(`aTo`.`id` = `cmr`.`addressToFk`)) left join `province` `pTo` on(`pTo`.`id` = `aTo`.`provinceFk`)) left join `country` `cTo` on(`cTo`.`id` = `pTo`.`countryFk`)) left join `client` on(`client`.`id` = `aTo`.`clientFk`)) left join `supplier` `su` on(`su`.`id` = `cmr`.`companyFk`)) left join `country` `cSu` on(`cSu`.`id` = `su`.`countryFk`)) left join `address` `aFrom` on(`aFrom`.`id` = `cmr`.`addressFromFk`)) left join `province` `pFrom` on(`pFrom`.`id` = `aFrom`.`provinceFk`)) left join `country` `cFrom` on(`cFrom`.`id` = `pFrom`.`countryFk`)) left join `supplier` `aSu` on(`aSu`.`id` = `cmr`.`supplierFk`)) left join `country` `cAs` on(`cAs`.`id` = `aSu`.`countryFk`)) join `company` `c` on(`c`.`id` = `cmr`.`companyFk`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94061,11 +79231,11 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `defaulter` AS select `d`.`clientFk` AS `clientFk`,`d`.`created` AS `created`,`d`.`amount` AS `amount`,`d`.`defaulterSinced` AS `defaulterSinced`,`d`.`hasChanged` AS `hasChanged` from `bs`.`defaulter` `d` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -94080,12 +79250,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `departmentTree` AS select `node`.`id` AS `id`,concat(repeat(repeat(' ',5),(count(`parent`.`id`) - 1)),`node`.`name`) AS `dep` from (`department` `node` join `department` `parent`) where (`node`.`lft` between `parent`.`lft` and `parent`.`rgt`) group by `node`.`id` order by `node`.`lft` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `departmentTree` AS select `node`.`id` AS `id`,concat(convert(repeat(repeat(' ',5),count(`parent`.`id`) - 1) using utf8mb3),`node`.`name`) AS `dep` from (`department` `node` join `department` `parent`) where `node`.`lft` between `parent`.`lft` and `parent`.`rgt` group by `node`.`id` order by `node`.`lft` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94099,11 +79269,11 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `ediGenus` AS select `g`.`genus_id` AS `id`,`g`.`latin_genus_name` AS `latinGenusName`,`g`.`entry_date` AS `entried`,`g`.`expiry_date` AS `dued`,`g`.`change_date_time` AS `modified` from `edi`.`genus` `g` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -94118,31 +79288,31 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `ediSpecie` AS select `s`.`specie_id` AS `id`,`s`.`genus_id` AS `genusFk`,`s`.`latin_species_name` AS `latinSpeciesName`,`s`.`entry_date` AS `entried`,`s`.`expiry_date` AS `dued`,`s`.`change_date_time` AS `modified` from `edi`.`specie` `s` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; -- --- Final view structure for view `entryList` +-- Final view structure for view `ektSubAddress` -- -/*!50001 DROP TABLE IF EXISTS `entryList`*/; -/*!50001 DROP VIEW IF EXISTS `entryList`*/; +/*!50001 DROP TABLE IF EXISTS `ektSubAddress`*/; +/*!50001 DROP VIEW IF EXISTS `ektSubAddress`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `entryList` AS select `e`.`id` AS `entryFk`,if(`tr`.`isReceived`,' x','') AS `isHere`,`tr`.`landed` AS `landed`,ifnull(`s`.`nickname`,`s`.`name`) AS `supplier`,`e`.`ref` AS `entryRef`,`a`.`name` AS `agency`,`tr`.`ref` AS `travelRef`,`tr`.`appointment` AS `appointment`,`e`.`supplierFk` AS `supplierFk`,`tr`.`warehouseInFk` AS `warehouseInFk` from (((`entry` `e` join `travel` `tr` on((`tr`.`id` = `e`.`travelFk`))) join `supplier` `s` on((`s`.`id` = `e`.`supplierFk`))) left join `agency` `a` on((`tr`.`agencyFk` = `a`.`id`))) where (`tr`.`landed` between (curdate() + interval -(1) week) and (curdate() + interval 3 month)) order by (`tr`.`landed` < (curdate() + interval 2 day)) desc,`tr`.`landed` desc,ifnull(`s`.`nickname`,`s`.`name`),`e`.`id` desc */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ektSubAddress` AS select `eea`.`sub` AS `sub`,`a`.`clientFk` AS `clientFk`,`a`.`nickname` AS `nickname`,`eea`.`addressFk` AS `addressFk` from (`ektEntryAssign` `eea` join `address` `a` on(`a`.`id` = `eea`.`addressFk`)) group by `eea`.`sub` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94156,31 +79326,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `exchangeInsuranceEntry` AS select max(`tr`.`landed`) AS `dated`,cast(sum(((`b`.`buyingValue` + `b`.`freightValue`) * `b`.`quantity`)) as decimal(10,2)) AS `Dolares`,cast((sum(((`b`.`buyingValue` + `b`.`freightValue`) * `b`.`quantity`)) / sum(((((100 + `e`.`commission`) / 100) * (`b`.`buyingValue` + `b`.`freightValue`)) * `b`.`quantity`))) as decimal(10,4)) AS `rate` from ((`entry` `e` join `buy` `b` on((`e`.`id` = `b`.`entryFk`))) join `travel` `tr` on((`tr`.`id` = `e`.`travelFk`))) where ((`tr`.`landed` between '2016-01-31' and curdate()) and (`e`.`commission` < 0) and (`e`.`currencyFk` = 2)) group by month(`tr`.`landed`),year(`tr`.`landed`) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `exchangeInsuranceIn` --- - -/*!50001 DROP TABLE IF EXISTS `exchangeInsuranceIn`*/; -/*!50001 DROP VIEW IF EXISTS `exchangeInsuranceIn`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `exchangeInsuranceIn` AS select `exchangeInsuranceInPrevious`.`dated` AS `dated`,sum(`exchangeInsuranceInPrevious`.`amount`) AS `amount`,cast((sum((`exchangeInsuranceInPrevious`.`amount` * `exchangeInsuranceInPrevious`.`rate`)) / sum(`exchangeInsuranceInPrevious`.`amount`)) as decimal(10,4)) AS `rate` from `vn`.`exchangeInsuranceInPrevious` group by `exchangeInsuranceInPrevious`.`dated` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `exchangeInsuranceEntry` AS select max(`tr`.`landed`) AS `dated`,cast(sum((`b`.`buyingValue` + `b`.`freightValue`) * `b`.`quantity`) as decimal(10,2)) AS `Dolares`,cast(sum((`b`.`buyingValue` + `b`.`freightValue`) * `b`.`quantity`) / sum((100 + `e`.`commission`) / 100 * (`b`.`buyingValue` + `b`.`freightValue`) * `b`.`quantity`) as decimal(10,4)) AS `rate` from ((`entry` `e` join `buy` `b` on(`e`.`id` = `b`.`entryFk`)) join `travel` `tr` on(`tr`.`id` = `e`.`travelFk`)) where `tr`.`landed` between '2016-01-31' and `util`.`VN_CURDATE`() and `e`.`commission` < 0 and `e`.`currencyFk` = 2 group by month(`tr`.`landed`),year(`tr`.`landed`) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94196,29 +79347,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `exchangeInsuranceOut` AS select `p`.`received` AS `received`,sum(`p`.`divisa`) AS `divisa`,(sum(`p`.`divisa`) / sum(`p`.`amount`)) AS `rate` from ((`payment` `p` join `bank` `b` on((`b`.`id` = `p`.`bankFk`))) join `accountingType` `at2` on((`at2`.`id` = `b`.`cash`))) where ((`p`.`currencyFk` = 2) and (`at2`.`code` = 'wireTransfer') and (`p`.`supplierFk` <> 2213)) group by `p`.`received` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `exchangeReportSourcePrevious` --- - -/*!50001 DROP TABLE IF EXISTS `exchangeReportSourcePrevious`*/; -/*!50001 DROP VIEW IF EXISTS `exchangeReportSourcePrevious`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `exchangeReportSourcePrevious` AS select `exchangeInsuranceIn`.`dated` AS `dated`,`exchangeInsuranceIn`.`amount` AS `amountIn`,`exchangeInsuranceIn`.`rate` AS `rateIn`,0.00 AS `amountOut`,0.00 AS `rateOut`,0.00 AS `amountEntry`,0.00 AS `rateEntry` from `vn`.`exchangeInsuranceIn` union all select `exchangeInsuranceOut`.`received` AS `received`,0.00 AS `amountIn`,0.00 AS `ratedIn`,`exchangeInsuranceOut`.`divisa` AS `amountOut`,`exchangeInsuranceOut`.`rate` AS `ratedOut`,0.00 AS `amountEntry`,0.00 AS `rateEntry` from `vn`.`exchangeInsuranceOut` union all select `exchangeInsuranceEntry`.`dated` AS `dated`,0.00 AS `amountIn`,0.00 AS `ratedIn`,0.00 AS `amountOut`,0.00 AS `ratedOut`,`exchangeInsuranceEntry`.`Dolares` AS `amountEntry`,`exchangeInsuranceEntry`.`rate` AS `rateEntry` from `vn`.`exchangeInsuranceEntry` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `exchangeInsuranceOut` AS select `p`.`received` AS `received`,sum(`p`.`divisa`) AS `divisa`,sum(`p`.`divisa`) / sum(`p`.`amount`) AS `rate` from ((`payment` `p` join `bank` `b` on(`b`.`id` = `p`.`bankFk`)) join `accountingType` `at2` on(`at2`.`id` = `b`.`cash`)) where `p`.`currencyFk` = 2 and `at2`.`code` = 'wireTransfer' and `p`.`supplierFk` <> 2213 group by `p`.`received` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94232,31 +79364,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `expeditionCommon` AS select `et`.`id` AS `truckFk`,`et`.`ETD` AS `etd`,ifnull(ucase(`et`.`description`),'SIN ESCANEAR') AS `description`,`es`.`palletFk` AS `palletFk`,`t`.`routeFk` AS `routeFk`,`es`.`id` AS `scanFk`,`e`.`id` AS `expeditionFk`,`r`.`expeditionTruckFk` AS `expeditionTruckFk`,`t`.`warehouseFk` AS `warehouseFk`,`e`.`created` AS `lastPacked`,`t`.`id` AS `ticketFk` from (((((`expeditionTruck` `et` left join `routesMonitor` `r` on((`et`.`id` = `r`.`expeditionTruckFk`))) left join `ticket` `t` on((`r`.`routeFk` = `t`.`routeFk`))) left join `expedition` `e` on((`t`.`id` = `e`.`ticketFk`))) left join `expeditionScan` `es` on((`e`.`id` = `es`.`expeditionFk`))) left join `expeditionPallet` `ep` on((`es`.`palletFk` = `ep`.`id`))) where (`et`.`ETD` >= curdate()) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `expeditionPallet_Print` --- - -/*!50001 DROP TABLE IF EXISTS `expeditionPallet_Print`*/; -/*!50001 DROP VIEW IF EXISTS `expeditionPallet_Print`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `expeditionPallet_Print` AS select `et2`.`description` AS `truck`,`t`.`routeFk` AS `routeFk`,`r`.`description` AS `zone`,count(`es`.`id`) AS `eti`,`ep`.`id` AS `palletFk`,(`et`.`id` <=> `rm`.`expeditionTruckFk`) AS `isMatch`,`t`.`warehouseFk` AS `warehouseFk`,if((`r`.`created` > (curdate() + interval 1 day)),ucase(dayname(`r`.`created`)),NULL) AS `nombreDia` from (((((((`vn`.`expeditionTruck` `et` join `vn`.`expeditionPallet` `ep` on((`ep`.`truckFk` = `et`.`id`))) join `vn`.`expeditionScan` `es` on((`es`.`palletFk` = `ep`.`id`))) join `vn`.`expedition` `e` on((`e`.`id` = `es`.`expeditionFk`))) join `vn`.`ticket` `t` on((`t`.`id` = `e`.`ticketFk`))) join `vn`.`route` `r` on((`r`.`id` = `t`.`routeFk`))) left join `vn2008`.`Rutas_monitor` `rm` on((`rm`.`Id_Ruta` = `r`.`id`))) left join `vn`.`expeditionTruck` `et2` on((`et2`.`id` = `rm`.`expeditionTruckFk`))) where (`ep`.`isPrint` = 0) group by `ep`.`id`,`t`.`routeFk` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `expeditionCommon` AS select `et`.`id` AS `truckFk`,`et`.`ETD` AS `etd`,ifnull(ucase(`et`.`description`),'SIN ESCANEAR') AS `description`,`es`.`palletFk` AS `palletFk`,`t`.`routeFk` AS `routeFk`,`es`.`id` AS `scanFk`,`e`.`id` AS `expeditionFk`,`r`.`expeditionTruckFk` AS `expeditionTruckFk`,`t`.`warehouseFk` AS `warehouseFk`,`e`.`created` AS `lastPacked`,`t`.`id` AS `ticketFk` from (((((`expeditionTruck` `et` left join `routesMonitor` `r` on(`et`.`id` = `r`.`expeditionTruckFk`)) left join `ticket` `t` on(`r`.`routeFk` = `t`.`routeFk`)) left join `expedition` `e` on(`t`.`id` = `e`.`ticketFk`)) left join `expeditionScan` `es` on(`e`.`id` = `es`.`expeditionFk`)) left join `expeditionPallet` `ep` on(`es`.`palletFk` = `ep`.`id`)) where `et`.`ETD` >= `util`.`VN_CURDATE`() */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94270,12 +79383,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `expeditionRoute_Monitor` AS select `r`.`id` AS `routeFk`,count(distinct if(isnull(`e`.`id`),`t`.`id`,NULL)) AS `tickets`,count(distinct `e`.`id`) AS `expeditions`,count(distinct `es`.`id`) AS `scanned`,max(`e`.`created`) AS `lastPacked`,`r`.`created` AS `created` from ((((((`route` `r` left join `routesMonitor` `rm` on((`r`.`id` = `rm`.`routeFk`))) left join `expeditionTruck` `et` on((`et`.`id` = `rm`.`expeditionTruckFk`))) join `ticket` `t` on((`t`.`routeFk` = `r`.`id`))) left join `expedition` `e` on((`e`.`ticketFk` = `t`.`id`))) left join `expeditionScan` `es` on((`es`.`expeditionFk` = `e`.`id`))) left join `stowaway` `st` on((`st`.`id` = `t`.`id`))) where ((`r`.`created` >= `util`.`yesterday`()) and isnull(`st`.`id`)) group by `r`.`id` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `expeditionRoute_Monitor` AS select `r`.`id` AS `routeFk`,count(distinct if(`e`.`id` is null,`t`.`id`,NULL)) AS `tickets`,count(distinct `e`.`id`) AS `expeditions`,count(distinct `es`.`id`) AS `scanned`,max(`e`.`created`) AS `lastPacked`,`r`.`created` AS `created` from ((((((`route` `r` left join `routesMonitor` `rm` on(`r`.`id` = `rm`.`routeFk`)) left join `expeditionTruck` `et` on(`et`.`id` = `rm`.`expeditionTruckFk`)) join `ticket` `t` on(`t`.`routeFk` = `r`.`id`)) left join `expedition` `e` on(`e`.`ticketFk` = `t`.`id`)) left join `expeditionScan` `es` on(`es`.`expeditionFk` = `e`.`id`)) left join `stowaway` `st` on(`st`.`id` = `t`.`id`)) where `r`.`created` >= `util`.`yesterday`() and `st`.`id` is null group by `r`.`id` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94289,12 +79402,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `expeditionRoute_freeTickets` AS select `t`.`routeFk` AS `routeFk`,`tss`.`ticket` AS `ticket`,`s`.`name` AS `code`,`w`.`name` AS `almacen`,`tss`.`updated` AS `updated`,`p`.`code` AS `parkingCode` from ((((((`vn`.`ticketState` `tss` join `vn`.`ticket` `t` on((`t`.`id` = `tss`.`ticket`))) join `vn`.`warehouse` `w` on((`w`.`id` = `t`.`warehouseFk`))) join `vn`.`state` `s` on((`s`.`id` = `tss`.`state`))) left join `vn`.`stowaway` `st` on((`st`.`id` = `t`.`id`))) left join `vn`.`ticketParking` `tp` on((`tp`.`ticketFk` = `t`.`id`))) left join `vn`.`parking` `p` on((`p`.`id` = `tp`.`parkingFk`))) where ((ifnull(`t`.`packages`,0) = 0) and isnull(`st`.`id`)) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `expeditionRoute_freeTickets` AS select `t`.`routeFk` AS `routeFk`,`tss`.`ticket` AS `ticket`,`s`.`name` AS `code`,`w`.`name` AS `almacen`,`tss`.`updated` AS `updated`,`p`.`code` AS `parkingCode` from ((((((`vn`.`ticketState` `tss` join `vn`.`ticket` `t` on(`t`.`id` = `tss`.`ticket`)) join `vn`.`warehouse` `w` on(`w`.`id` = `t`.`warehouseFk`)) join `vn`.`state` `s` on(`s`.`id` = `tss`.`state`)) left join `vn`.`stowaway` `st` on(`st`.`id` = `t`.`id`)) left join `vn`.`ticketParking` `tp` on(`tp`.`ticketFk` = `t`.`id`)) left join `vn`.`parking` `p` on(`p`.`id` = `tp`.`parkingFk`)) where ifnull(`t`.`packages`,0) = 0 and `st`.`id` is null */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94308,12 +79421,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `expeditionScan_Monitor` AS select `et`.`id` AS `truckFk`,`et`.`ETD` AS `ETD`,`et`.`description` AS `description`,`ep`.`id` AS `palletFk`,`ep`.`position` AS `position`,`ep`.`built` AS `built`,`es`.`id` AS `scanFk`,`es`.`expeditionFk` AS `expeditionFk`,`es`.`scanned` AS `scanned` from ((`expeditionTruck` `et` left join `expeditionPallet` `ep` on((`ep`.`truckFk` = `et`.`id`))) left join `expeditionScan` `es` on((`es`.`palletFk` = `ep`.`id`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `expeditionScan_Monitor` AS select `et`.`id` AS `truckFk`,`et`.`ETD` AS `ETD`,`et`.`description` AS `description`,`ep`.`id` AS `palletFk`,`ep`.`position` AS `position`,`ep`.`built` AS `built`,`es`.`id` AS `scanFk`,`es`.`expeditionFk` AS `expeditionFk`,`es`.`scanned` AS `scanned` from ((`expeditionTruck` `et` left join `expeditionPallet` `ep` on(`ep`.`truckFk` = `et`.`id`)) left join `expeditionScan` `es` on(`es`.`palletFk` = `ep`.`id`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94329,29 +79442,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `expeditionSticker` AS select `e`.`id` AS `expeditionFk`,`e`.`ticketFk` AS `ticketFk`,`t`.`addressFk` AS `addressFk`,`t`.`clientFk` AS `clientFk`,`a`.`street` AS `street`,`a`.`postalCode` AS `postalCode`,`a`.`city` AS `city`,`a`.`nickname` AS `nickname`,concat('R(',convert(right(`t`.`routeFk`,3) using utf8mb4),')') AS `routeFk`,`rm`.`beachFk` AS `beachFk`,if(`t`.`routeFk`,replace(`am`.`name`,'ZONA ','Z'),`z`.`name`) AS `zona`,`p`.`name` AS `province`,ifnull(`c`.`mobile`,ifnull(`a`.`mobile`,ifnull(`c`.`phone`,`a`.`phone`))) AS `phone`,`w`.`code` AS `workerCode` from ((((((((((`expedition` `e` join `ticket` `t` on((`t`.`id` = `e`.`ticketFk`))) join `address` `a` on((`a`.`id` = `t`.`addressFk`))) join `province` `p` on((`p`.`id` = `a`.`provinceFk`))) left join `routesMonitor` `rm` on((`rm`.`routeFk` = `t`.`routeFk`))) left join `beach` `b` on((`b`.`id` = `rm`.`beachFk`))) left join `zone` `z` on((`z`.`id` = `t`.`zoneFk`))) left join `route` `r` on((`r`.`id` = `t`.`routeFk`))) left join `agencyMode` `am` on((`am`.`id` = `r`.`agencyModeFk`))) join `client` `c` on((`c`.`id` = `a`.`clientFk`))) join `worker` `w` on((`w`.`id` = `e`.`workerFk`))) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `expeditionSticker__` --- - -/*!50001 DROP TABLE IF EXISTS `expeditionSticker__`*/; -/*!50001 DROP VIEW IF EXISTS `expeditionSticker__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `expeditionSticker__` AS select `e`.`id` AS `expeditionFk`,`e`.`ticketFk` AS `ticketFk`,`t`.`addressFk` AS `addressFk`,`t`.`clientFk` AS `clientFk`,`a`.`street` AS `street`,`a`.`postalCode` AS `postalCode`,`a`.`city` AS `city`,`a`.`nickname` AS `nickname`,concat('R(',convert(right(`t`.`routeFk`,4) using utf8mb4),')') AS `routeFk`,`rm`.`beachFk` AS `beachFk`,if(`t`.`routeFk`,replace(`z`.`name`,'ZONA ','Z'),`am`.`name`) AS `zona`,`p`.`name` AS `province`,ifnull(`a`.`mobile`,`a`.`phone`) AS `phone` from (((((((`expedition` `e` join `ticket` `t` on((`t`.`id` = `e`.`ticketFk`))) join `address` `a` on((`a`.`id` = `t`.`addressFk`))) join `province` `p` on((`p`.`id` = `a`.`provinceFk`))) left join `routesMonitor` `rm` on((`rm`.`routeFk` = `t`.`routeFk`))) left join `beach` `b` on((`b`.`id` = `rm`.`beachFk`))) left join `zone` `z` on((`z`.`id` = `t`.`zoneFk`))) join `agencyMode` `am` on((`t`.`agencyModeFk` = `am`.`id`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `expeditionSticker` AS select `e`.`id` AS `expeditionFk`,`e`.`ticketFk` AS `ticketFk`,`t`.`addressFk` AS `addressFk`,`t`.`clientFk` AS `clientFk`,`a`.`street` AS `street`,`a`.`postalCode` AS `postalCode`,`a`.`city` AS `city`,`a`.`nickname` AS `nickname`,concat('R(',right(`t`.`routeFk`,3),')') AS `routeFk`,`rm`.`beachFk` AS `beachFk`,if(`t`.`routeFk`,ifnull(`et`.`description`,replace(`am`.`name`,'ZONA ','Z')),`z`.`name`) AS `zona`,`p`.`name` AS `province`,ifnull(`c`.`mobile`,ifnull(`a`.`mobile`,ifnull(`c`.`phone`,`a`.`phone`))) AS `phone`,`w`.`code` AS `workerCode` from (((((((((((`expedition` `e` join `ticket` `t` on(`t`.`id` = `e`.`ticketFk`)) join `address` `a` on(`a`.`id` = `t`.`addressFk`)) join `province` `p` on(`p`.`id` = `a`.`provinceFk`)) left join `routesMonitor` `rm` on(`rm`.`routeFk` = `t`.`routeFk`)) left join `expeditionTruck` `et` on(`et`.`id` = `rm`.`expeditionTruckFk`)) left join `beach` `b` on(`b`.`code` = `rm`.`beachFk`)) left join `zone` `z` on(`z`.`id` = `t`.`zoneFk`)) left join `route` `r` on(`r`.`id` = `t`.`routeFk`)) left join `agencyMode` `am` on(`am`.`id` = `r`.`agencyModeFk`)) join `client` `c` on(`c`.`id` = `a`.`clientFk`)) join `worker` `w` on(`w`.`id` = `e`.`workerFk`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94367,10 +79461,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `expeditionTicket_NoBoxes` AS select `t`.`id` AS `ticketFk`,`t`.`warehouseFk` AS `warehouseFk`,`t`.`routeFk` AS `routeFk`,`et`.`description` AS `description` from (((`ticket` `t` left join `expedition` `e` on((`e`.`ticketFk` = `t`.`id`))) join `routesMonitor` `rm` on((`rm`.`routeFk` = `t`.`routeFk`))) join `expeditionTruck` `et` on((`et`.`id` = `rm`.`expeditionTruckFk`))) where (isnull(`e`.`id`) and (`et`.`ETD` > curdate())) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `expeditionTicket_NoBoxes` AS select `t`.`id` AS `ticketFk`,`t`.`warehouseFk` AS `warehouseFk`,`t`.`routeFk` AS `routeFk`,`et`.`description` AS `description` from (((`ticket` `t` left join `expedition` `e` on(`e`.`ticketFk` = `t`.`id`)) join `routesMonitor` `rm` on(`rm`.`routeFk` = `t`.`routeFk`)) join `expeditionTruck` `et` on(`et`.`id` = `rm`.`expeditionTruckFk`)) where `e`.`id` is null and `et`.`ETD` > `util`.`VN_CURDATE`() */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94384,12 +79478,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `expeditionTimeExpended` AS select `e`.`ticketFk` AS `ticketFk`,min(`e`.`created`) AS `started`,max(`e`.`created`) AS `finished`,max(`e`.`counter`) AS `cajas`,`w`.`code` AS `code`,`t`.`warehouseFk` AS `warehouseFk` from ((`expedition` `e` join `worker` `w` on((`w`.`id` = `e`.`workerFk`))) join `ticket` `t` on((`t`.`id` = `e`.`ticketFk`))) where (`e`.`created` > curdate()) group by `e`.`ticketFk` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `expeditionTimeExpended` AS select `e`.`ticketFk` AS `ticketFk`,min(`e`.`created`) AS `started`,max(`e`.`created`) AS `finished`,max(`e`.`counter`) AS `cajas`,`w`.`code` AS `code`,`t`.`warehouseFk` AS `warehouseFk` from ((`expedition` `e` join `worker` `w` on(`w`.`id` = `e`.`workerFk`)) join `ticket` `t` on(`t`.`id` = `e`.`ticketFk`)) where `e`.`created` > `util`.`VN_CURDATE`() group by `e`.`ticketFk` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94403,12 +79497,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `expeditionTruck_Control` AS select `e`.`truckFk` AS `id`,`e`.`etd` AS `ETD`,`e`.`description` AS `description`,count(distinct if(isnull(`e`.`expeditionFk`),`e`.`ticketFk`,NULL)) AS `ticketsSinBultos`,count(distinct `e`.`palletFk`) AS `pallets`,count(distinct `e`.`routeFk`) AS `routes`,count(distinct `e`.`scanFk`) AS `scans`,count(distinct `e`.`expeditionFk`) AS `expeditions`,sum((`e`.`truckFk` <> `e`.`expeditionTruckFk`)) AS `fallos`,max(`e`.`lastPacked`) AS `lastPacked` from `expeditionCommon` `e` group by `e`.`truckFk` order by `fallos` desc,`e`.`etd` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `expeditionTruck_Control` AS select `e`.`truckFk` AS `id`,`e`.`etd` AS `ETD`,`e`.`description` AS `description`,count(distinct if(`e`.`expeditionFk` is null,`e`.`ticketFk`,NULL)) AS `ticketsSinBultos`,count(distinct `e`.`palletFk`) AS `pallets`,count(distinct `e`.`routeFk`) AS `routes`,count(distinct `e`.`scanFk`) AS `scans`,count(distinct `e`.`expeditionFk`) AS `expeditions`,sum(`e`.`truckFk` <> `e`.`expeditionTruckFk`) AS `fallos`,max(`e`.`lastPacked`) AS `lastPacked` from `expeditionCommon` `e` group by `e`.`truckFk` order by sum(`e`.`truckFk` <> `e`.`expeditionTruckFk`) desc,`e`.`etd` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94422,12 +79516,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `expeditionTruck_Control_Detail` AS select `e`.`truckFk` AS `id`,`e`.`etd` AS `ETD`,`e`.`description` AS `destino`,`e`.`palletFk` AS `pallet`,count(distinct `e`.`routeFk`) AS `routes`,count(distinct `e`.`scanFk`) AS `scans`,count(distinct `e`.`expeditionTruckFk`) AS `destinos`,sum((`e`.`truckFk` <> `e`.`expeditionTruckFk`)) AS `fallos`,max(`e`.`lastPacked`) AS `lastPacked` from `expeditionCommon` `e` group by `e`.`truckFk`,`e`.`palletFk` order by `fallos` desc,`e`.`etd`,`e`.`truckFk` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `expeditionTruck_Control_Detail` AS select `e`.`truckFk` AS `id`,`e`.`etd` AS `ETD`,`e`.`description` AS `destino`,`e`.`palletFk` AS `pallet`,count(distinct `e`.`routeFk`) AS `routes`,count(distinct `e`.`scanFk`) AS `scans`,count(distinct `e`.`expeditionTruckFk`) AS `destinos`,sum(`e`.`truckFk` <> `e`.`expeditionTruckFk`) AS `fallos`,max(`e`.`lastPacked`) AS `lastPacked` from `expeditionCommon` `e` group by `e`.`truckFk`,`e`.`palletFk` order by sum(`e`.`truckFk` <> `e`.`expeditionTruckFk`) desc,`e`.`etd`,`e`.`truckFk` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94441,12 +79535,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `expeditionTruck_Control_Detail_Pallet` AS select `e`.`truckFk` AS `id`,`e`.`etd` AS `ETD`,`e`.`description` AS `destino`,`e`.`palletFk` AS `pallet`,`e`.`routeFk` AS `route`,count(distinct `e`.`scanFk`) AS `scans`,`et`.`description` AS `destinos`,sum((`e`.`truckFk` <> `e`.`expeditionTruckFk`)) AS `fallos`,`e`.`expeditionTruckFk` AS `expeditionTruckFk`,max(`e`.`lastPacked`) AS `lastPacked` from (`expeditionCommon` `e` left join `expeditionTruck` `et` on((`et`.`id` = `e`.`expeditionTruckFk`))) group by `e`.`truckFk`,`e`.`palletFk`,`e`.`routeFk` order by `fallos` desc,`e`.`palletFk` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `expeditionTruck_Control_Detail_Pallet` AS select `e`.`truckFk` AS `id`,`e`.`etd` AS `ETD`,`e`.`description` AS `destino`,`e`.`palletFk` AS `pallet`,`e`.`routeFk` AS `route`,count(distinct `e`.`scanFk`) AS `scans`,`et`.`description` AS `destinos`,sum(`e`.`truckFk` <> `e`.`expeditionTruckFk`) AS `fallos`,`e`.`expeditionTruckFk` AS `expeditionTruckFk`,max(`e`.`lastPacked`) AS `lastPacked` from (`expeditionCommon` `e` left join `expeditionTruck` `et` on(`et`.`id` = `e`.`expeditionTruckFk`)) group by `e`.`truckFk`,`e`.`palletFk`,`e`.`routeFk` order by sum(`e`.`truckFk` <> `e`.`expeditionTruckFk`) desc,`e`.`palletFk` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94460,12 +79554,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `firstTicketShipped` AS select min(`ticket`.`shipped`) AS `shipped`,`ticket`.`clientFk` AS `clientFk` from `ticket` where (`ticket`.`shipped` > '2001-01-01') group by `ticket`.`clientFk` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `firstTicketShipped` AS select min(`ticket`.`shipped`) AS `shipped`,`ticket`.`clientFk` AS `clientFk` from `ticket` where `ticket`.`shipped` > '2001-01-01' group by `ticket`.`clientFk` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94479,88 +79573,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `floraHollandBuyedItems` AS select `b`.`itemFk` AS `itemFk`,`i`.`longName` AS `longName`,`b`.`quantity` AS `quantity`,`b`.`buyingValue` AS `buyingValue`,`tr`.`landed` AS `landed`,`e`.`companyFk` AS `companyFk` from (((((`buy` `b` join `item` `i` on((`b`.`itemFk` = `i`.`id`))) join `itemType` `it` on((`it`.`id` = `i`.`typeFk`))) join `itemCategory` `ic` on((`ic`.`id` = `it`.`categoryFk`))) join `entry` `e` on((`e`.`id` = `b`.`entryFk`))) join `travel` `tr` on(((`tr`.`id` = `e`.`travelFk`) and (`ic`.`id` not in (8,6)) and (`b`.`buyingValue` <> 0) and (`b`.`quantity` <> 0) and (`e`.`supplierFk` in (1664,1665,1666,1465,1433))))) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `holidayDetail__` --- - -/*!50001 DROP TABLE IF EXISTS `holidayDetail__`*/; -/*!50001 DROP VIEW IF EXISTS `holidayDetail__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `holidayDetail__` AS select `cll`.`calendar_labour_legend_id` AS `id`,`cll`.`descripcion` AS `description` from `postgresql`.`calendar_labour_legend__` `cll` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `holidayLegend__` --- - -/*!50001 DROP TABLE IF EXISTS `holidayLegend__`*/; -/*!50001 DROP VIEW IF EXISTS `holidayLegend__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `holidayLegend__` AS select `cll`.`calendar_labour_legend_id` AS `id`,`cll`.`descripcion` AS `description` from `postgresql`.`calendar_labour_legend__` `cll` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `holidayType__` --- - -/*!50001 DROP TABLE IF EXISTS `holidayType__`*/; -/*!50001 DROP VIEW IF EXISTS `holidayType__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `holidayType__` AS select `cf`.`calendar_free_id` AS `id`,`cf`.`type` AS `name`,`cf`.`rgb` AS `rgb` from `postgresql`.`calendar_free__` `cf` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `holiday__` --- - -/*!50001 DROP TABLE IF EXISTS `holiday__`*/; -/*!50001 DROP VIEW IF EXISTS `holiday__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `holiday__` AS select `cl`.`calendar_labour_legend_id` AS `holidayDetailFk`,`cl`.`calendar_free_id` AS `holidayTypeFk`,`cl`.`workcenter_id` AS `workCenterFk`,`cl`.`day` AS `dated` from `postgresql`.`calendar_labour__` `cl` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `floraHollandBuyedItems` AS select `b`.`itemFk` AS `itemFk`,`i`.`longName` AS `longName`,`b`.`quantity` AS `quantity`,`b`.`buyingValue` AS `buyingValue`,`tr`.`landed` AS `landed`,`e`.`companyFk` AS `companyFk` from (((((`buy` `b` join `item` `i` on(`b`.`itemFk` = `i`.`id`)) join `itemType` `it` on(`it`.`id` = `i`.`typeFk`)) join `itemCategory` `ic` on(`ic`.`id` = `it`.`categoryFk`)) join `entry` `e` on(`e`.`id` = `b`.`entryFk`)) join `travel` `tr` on(`tr`.`id` = `e`.`travelFk` and `ic`.`id` not in (8,6) and `b`.`buyingValue` <> 0 and `b`.`quantity` <> 0 and `e`.`supplierFk` in (1664,1665,1666,1465,1433))) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94574,12 +79592,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `inkL10n` AS select `k`.`id` AS `id`,ifnull(`i`.`name`,`k`.`name`) AS `name` from (`ink` `k` left join `inkI18n` `i` on(((`i`.`inkFk` = `k`.`id`) and (`i`.`lang` = `util`.`lang`())))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `inkL10n` AS select `k`.`id` AS `id`,ifnull(`i`.`name`,`k`.`name`) AS `name` from (`ink` `k` left join `inkI18n` `i` on(`i`.`inkFk` = `k`.`id` and `i`.`lang` = `util`.`lang`())) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94593,88 +79611,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `invoiceCorrectionDataSource` AS select `s`.`itemFk` AS `itemFk`,`s`.`quantity` AS `quantity`,`s`.`concept` AS `concept`,`s`.`price` AS `price`,`s`.`discount` AS `discount`,`t`.`refFk` AS `refFk`,`s`.`id` AS `saleFk`,`t`.`shipped` AS `shipped` from (`sale` `s` join `ticket` `t` on((`t`.`id` = `s`.`ticketFk`))) where (`t`.`shipped` > (curdate() + interval -(1) year)) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `invoiceInAwb__` --- - -/*!50001 DROP TABLE IF EXISTS `invoiceInAwb__`*/; -/*!50001 DROP VIEW IF EXISTS `invoiceInAwb__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `invoiceInAwb__` AS select `a`.`recibida_id` AS `invoiceInFk`,`a`.`awb_id` AS `awbFk`,`a`.`dua` AS `dua` from `vn2008`.`awb_recibida` `a` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `invoiceInDueDay__` --- - -/*!50001 DROP TABLE IF EXISTS `invoiceInDueDay__`*/; -/*!50001 DROP VIEW IF EXISTS `invoiceInDueDay__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `invoiceInDueDay__` AS select `r`.`id` AS `id`,`r`.`recibida_id` AS `invoiceInFk`,`r`.`fecha` AS `dueDated`,`r`.`banco_id` AS `bankFk`,`r`.`cantidad` AS `amount`,`r`.`divisa` AS `foreignValue`,`r`.`stamp` AS `created` from `vn2008`.`recibida_vencimiento` `r` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `invoiceInIntrastat__` --- - -/*!50001 DROP TABLE IF EXISTS `invoiceInIntrastat__`*/; -/*!50001 DROP VIEW IF EXISTS `invoiceInIntrastat__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `invoiceInIntrastat__` AS select `r`.`recibida_id` AS `invoiceInFk`,`r`.`Codintrastat` AS `intrastatFk`,`r`.`importe` AS `amount` from `vn2008`.`recibida_intrastat` `r` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `invoiceIn__` --- - -/*!50001 DROP TABLE IF EXISTS `invoiceIn__`*/; -/*!50001 DROP VIEW IF EXISTS `invoiceIn__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `invoiceIn__` AS select `r`.`id` AS `id`,`r`.`num_recibida` AS `serialNumber`,`r`.`serie` AS `serial`,`r`.`proveedor_id` AS `supplierFk`,`r`.`fecha` AS `issued`,`r`.`sref` AS `supplierRef`,`r`.`contabilizada` AS `isBooked`,`r`.`moneda_id` AS `currencyFk`,`r`.`MYSQL_TIME` AS `created`,`r`.`empresa_id` AS `companyFk`,`r`.`gestdoc_id` AS `docFk`,`r`.`dateBooking` AS `booked`,`r`.`dateOperation` AS `operated`,`r`.`cplusInvoiceType472Fk` AS `cplusInvoiceType472Fk`,`r`.`cplusRectificationTypeFk` AS `cplusRectificationTypeFk`,`r`.`cplusSubjectOpFk` AS `cplusSubjectOpFk`,`r`.`cplusTaxBreakFk` AS `cplusTaxBreakFk`,`r`.`cplusTrascendency472Fk` AS `cplusTrascendency472Fk`,`r`.`bookEntried` AS `bookEntried`,`r`.`isVatDeductible` AS `isVatDeductible`,`r`.`withholdingSageFk` AS `withholdingSageFk` from `vn2008`.`recibida` `r` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `invoiceCorrectionDataSource` AS select `s`.`itemFk` AS `itemFk`,`s`.`quantity` AS `quantity`,`s`.`concept` AS `concept`,`s`.`price` AS `price`,`s`.`discount` AS `discount`,`t`.`refFk` AS `refFk`,`s`.`id` AS `saleFk`,`t`.`shipped` AS `shipped` from (`sale` `s` join `ticket` `t` on(`t`.`id` = `s`.`ticketFk`)) where `t`.`shipped` > `util`.`VN_CURDATE`() + interval -3 year */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94690,10 +79632,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemBotanicalWithGenus` AS select `ib`.`itemFk` AS `itemFk`,concat(`g`.`name`,' ',ifnull(`s`.`name`,'')) AS `ediBotanic` from ((`itemBotanical` `ib` left join `specie` `s` on((`s`.`id` = `ib`.`specieFk`))) left join `genus` `g` on((`g`.`id` = `ib`.`genusFk`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemBotanicalWithGenus` AS select `ib`.`itemFk` AS `itemFk`,concat(`g`.`name`,' ',ifnull(`s`.`name`,'')) AS `ediBotanic` from ((`itemBotanical` `ib` left join `specie` `s` on(`s`.`id` = `ib`.`specieFk`)) left join `genus` `g` on(`g`.`id` = `ib`.`genusFk`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94707,12 +79649,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemCategoryL10n` AS select `c`.`id` AS `id`,ifnull(`i`.`name`,`c`.`name`) AS `name` from (`itemCategory` `c` left join `itemCategoryI18n` `i` on(((`i`.`categoryFk` = `c`.`id`) and (`i`.`lang` = `util`.`lang`())))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemCategoryL10n` AS select `c`.`id` AS `id`,ifnull(`i`.`name`,`c`.`name`) AS `name` from (`itemCategory` `c` left join `itemCategoryI18n` `i` on(`i`.`categoryFk` = `c`.`id` and `i`.`lang` = `util`.`lang`())) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94726,12 +79668,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemColor` AS select `it`.`itemFk` AS `itemFk`,`it`.`value` AS `color` from (`itemTag` `it` join `tag` `t` on((`t`.`id` = `it`.`tagFk`))) where (`t`.`code` = 'COLOR') */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemColor` AS select `it`.`itemFk` AS `itemFk`,`it`.`value` AS `color` from (`itemTag` `it` join `tag` `t` on(`t`.`id` = `it`.`tagFk`)) where `t`.`code` = 'COLOR' */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94747,10 +79689,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemEntryIn` AS select `t`.`warehouseInFk` AS `warehouseInFk`,`t`.`landed` AS `landed`,`b`.`itemFk` AS `itemFk`,`b`.`quantity` AS `quantity`,`t`.`isReceived` AS `isReceived`,`e`.`isRaid` AS `isVirtualStock`,`e`.`id` AS `entryFk` from ((`buy` `b` join `entry` `e` on((`b`.`entryFk` = `e`.`id`))) join `travel` `t` on((`e`.`travelFk` = `t`.`id`))) where ((`e`.`isInventory` = 0) and (`b`.`quantity` <> 0)) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemEntryIn` AS select `t`.`warehouseInFk` AS `warehouseInFk`,`t`.`landed` AS `landed`,`b`.`itemFk` AS `itemFk`,`b`.`quantity` AS `quantity`,`t`.`isReceived` AS `isReceived`,`e`.`isRaid` AS `isVirtualStock`,`e`.`id` AS `entryFk` from ((`buy` `b` join `entry` `e` on(`b`.`entryFk` = `e`.`id`)) join `travel` `t` on(`e`.`travelFk` = `t`.`id`)) where `e`.`isExcludedFromAvailable` = 0 and `b`.`quantity` <> 0 */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94766,10 +79708,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemEntryOut` AS select `t`.`warehouseOutFk` AS `warehouseOutFk`,`t`.`shipped` AS `shipped`,`b`.`itemFk` AS `itemFk`,-(`b`.`quantity`) AS `quantity`,`t`.`isDelivered` AS `isDelivered`,`e`.`id` AS `entryFk` from ((`buy` `b` join `entry` `e` on((`b`.`entryFk` = `e`.`id`))) join `travel` `t` on((`e`.`travelFk` = `t`.`id`))) where ((`e`.`isInventory` = 0) and (`e`.`isRaid` = 0) and (`b`.`quantity` <> 0)) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemEntryOut` AS select `t`.`warehouseOutFk` AS `warehouseOutFk`,`t`.`shipped` AS `shipped`,`b`.`itemFk` AS `itemFk`,-`b`.`quantity` AS `quantity`,`t`.`isDelivered` AS `isDelivered`,`e`.`id` AS `entryFk` from ((`buy` `b` join `entry` `e` on(`b`.`entryFk` = `e`.`id`)) join `travel` `t` on(`e`.`travelFk` = `t`.`id`)) where `e`.`isExcludedFromAvailable` = 0 and `e`.`isRaid` = 0 and `b`.`quantity` <> 0 */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94783,12 +79725,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemInk` AS select `i`.`longName` AS `longName`,`i`.`inkFk` AS `inkFk`,`ink`.`name` AS `color` from (`item` `i` join `ink` on((`ink`.`id` = `i`.`inkFk`))) where `ink`.`isRealColor` group by `i`.`longName` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemInk` AS select `i`.`longName` AS `longName`,`i`.`inkFk` AS `inkFk`,`ink`.`name` AS `color` from (`item` `i` join `ink` on(`ink`.`id` = `i`.`inkFk`)) where `ink`.`isRealColor` <> 0 group by `i`.`longName` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94802,12 +79744,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemPlacementSupplyList` AS select `ips`.`id` AS `id`,`ips`.`itemFk` AS `itemFk`,`ips`.`quantity` AS `quantity`,`ips`.`priority` AS `priority`,ifnull(`isps`.`created`,`ips`.`created`) AS `created`,`ips`.`userFk` AS `userFk`,`ips`.`repoUserFk` AS `repoUserFk`,(`ips`.`quantity` - sum(ifnull(`isps`.`quantity`,0))) AS `saldo`,concat(`i`.`longName`,' ',`i`.`size`) AS `longName`,`i`.`subName` AS `subName`,`i`.`size` AS `size`,`w`.`code` AS `workerCode`,`rw`.`code` AS `repoCode`,`ips`.`sectorFk` AS `sectorFk` from ((((`itemPlacementSupply` `ips` join `item` `i` on((`i`.`id` = `ips`.`itemFk`))) left join `worker` `w` on((`w`.`userFk` = `ips`.`userFk`))) left join `worker` `rw` on((`rw`.`userFk` = `ips`.`repoUserFk`))) left join `itemShelvingPlacementSupply` `isps` on((`isps`.`itemPlacementSupplyFk` = `ips`.`id`))) where (`ips`.`created` >= curdate()) group by `ips`.`priority`,`ips`.`id`,`ips`.`sectorFk` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemPlacementSupplyList` AS select `ips`.`id` AS `id`,`ips`.`itemFk` AS `itemFk`,`ips`.`quantity` AS `quantity`,`ips`.`priority` AS `priority`,ifnull(`isps`.`created`,`ips`.`created`) AS `created`,`ips`.`userFk` AS `userFk`,`ips`.`repoUserFk` AS `repoUserFk`,`ips`.`quantity` - sum(ifnull(`isps`.`quantity`,0)) AS `saldo`,concat(`i`.`longName`,' ',`i`.`size`) AS `longName`,`i`.`subName` AS `subName`,`i`.`size` AS `size`,`w`.`code` AS `workerCode`,`rw`.`code` AS `repoCode`,`ips`.`sectorFk` AS `sectorFk` from ((((`itemPlacementSupply` `ips` join `item` `i` on(`i`.`id` = `ips`.`itemFk`)) left join `worker` `w` on(`w`.`userFk` = `ips`.`userFk`)) left join `worker` `rw` on(`rw`.`userFk` = `ips`.`repoUserFk`)) left join `itemShelvingPlacementSupply` `isps` on(`isps`.`itemPlacementSupplyFk` = `ips`.`id`)) where `ips`.`created` >= `util`.`VN_CURDATE`() group by `ips`.`priority`,`ips`.`id`,`ips`.`sectorFk` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94821,12 +79763,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemProductor` AS select `it`.`itemFk` AS `itemFk`,`it`.`value` AS `productor` from (`itemTag` `it` join `tag` `t` on((`t`.`id` = `it`.`tagFk`))) where (`t`.`code` = 'PRODUCER') */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemProductor` AS select `it`.`itemFk` AS `itemFk`,`it`.`value` AS `productor` from (`itemTag` `it` join `tag` `t` on(`t`.`id` = `it`.`tagFk`)) where `t`.`code` = 'PRODUCER' */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94840,12 +79782,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemSearch` AS select `s`.`itemFk` AS `itemFk`,`s`.`concept` AS `concept`,`s`.`quantity` AS `quantity`,`t`.`nickname` AS `nickname`,`t`.`shipped` AS `shipped` from ((`sale` `s` join `ticket` `t` on((`t`.`id` = `s`.`ticketFk`))) join `warehouse` `w` on((`w`.`id` = `t`.`warehouseFk`))) where ((`t`.`shipped` between `util`.`yesterday`() and `util`.`tomorrow`()) and (`w`.`name` in ('VNH','Floramondo'))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemSearch` AS select `s`.`itemFk` AS `itemFk`,`s`.`concept` AS `concept`,`s`.`quantity` AS `quantity`,`t`.`nickname` AS `nickname`,`t`.`shipped` AS `shipped` from ((`sale` `s` join `ticket` `t` on(`t`.`id` = `s`.`ticketFk`)) join `warehouse` `w` on(`w`.`id` = `t`.`warehouseFk`)) where `t`.`shipped` between `util`.`yesterday`() and `util`.`tomorrow`() and `w`.`name` in ('VNH','Floramondo') */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94859,12 +79801,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemShelvingAvailable` AS select `s`.`id` AS `saleFk`,`tst`.`updated` AS `Modificado`,`s`.`ticketFk` AS `ticketFk`,0 AS `isPicked`,`s`.`itemFk` AS `itemFk`,`s`.`quantity` AS `quantity`,`s`.`concept` AS `concept`,`i`.`size` AS `size`,`st`.`name` AS `Estado`,`st`.`sectorProdPriority` AS `sectorProdPriority`,`stock`.`visible` AS `available`,`stock`.`sectorFk` AS `sectorFk`,`stock`.`shelvingFk` AS `matricula`,`stock`.`parkingFk` AS `parking`,`stock`.`itemShelvingFk` AS `itemShelving`,`am`.`name` AS `Agency`,`t`.`shipped` AS `shipped`,`stock`.`grouping` AS `grouping`,`stock`.`packing` AS `packing`,`z`.`hour` AS `hour`,`st`.`isPreviousPreparable` AS `isPreviousPreparable`,`sv`.`physicalVolume` AS `physicalVolume`,`t`.`warehouseFk` AS `warehouseFk` from (((((((((`vn`.`sale` `s` join `vn`.`ticket` `t` on((`t`.`id` = `s`.`ticketFk`))) join `vn`.`agencyMode` `am` on((`am`.`id` = `t`.`agencyModeFk`))) join `vn`.`ticketStateToday` `tst` on((`tst`.`ticket` = `t`.`id`))) join `vn`.`state` `st` on((`st`.`id` = `tst`.`state`))) join `vn`.`item` `i` on((`i`.`id` = `s`.`itemFk`))) join `vn`.`itemShelvingStock` `stock` on((`stock`.`itemFk` = `i`.`id`))) left join `vn`.`saleTracking` `stk` on((`stk`.`saleFk` = `s`.`id`))) left join `vn`.`zone` `z` on((`z`.`id` = `t`.`zoneFk`))) left join `vn`.`saleVolume` `sv` on((`sv`.`saleFk` = `s`.`id`))) where ((`t`.`shipped` between `util`.`yesterday`() and `util`.`dayend`(curdate())) and isnull(`stk`.`id`) and (`stock`.`visible` > 0) and isnull(`stk`.`saleFk`) and `st`.`isPreviousPreparable`) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemShelvingAvailable` AS select `s`.`id` AS `saleFk`,`tst`.`updated` AS `Modificado`,`s`.`ticketFk` AS `ticketFk`,0 AS `isPicked`,`s`.`itemFk` AS `itemFk`,`s`.`quantity` AS `quantity`,`s`.`concept` AS `concept`,`i`.`size` AS `size`,`st`.`name` AS `Estado`,`st`.`sectorProdPriority` AS `sectorProdPriority`,`stock`.`visible` AS `available`,`stock`.`sectorFk` AS `sectorFk`,`stock`.`shelvingFk` AS `matricula`,`stock`.`parkingFk` AS `parking`,`stock`.`itemShelvingFk` AS `itemShelving`,`am`.`name` AS `Agency`,`t`.`shipped` AS `shipped`,`stock`.`grouping` AS `grouping`,`stock`.`packing` AS `packing`,`z`.`hour` AS `hour`,`st`.`isPreviousPreparable` AS `isPreviousPreparable`,`sv`.`physicalVolume` AS `physicalVolume`,`t`.`warehouseFk` AS `warehouseFk` from (((((((((`vn`.`sale` `s` join `vn`.`ticket` `t` on(`t`.`id` = `s`.`ticketFk`)) join `vn`.`agencyMode` `am` on(`am`.`id` = `t`.`agencyModeFk`)) join `vn`.`ticketStateToday` `tst` on(`tst`.`ticket` = `t`.`id`)) join `vn`.`state` `st` on(`st`.`id` = `tst`.`state`)) join `vn`.`item` `i` on(`i`.`id` = `s`.`itemFk`)) join `vn`.`itemShelvingStock` `stock` on(`stock`.`itemFk` = `i`.`id`)) left join `vn`.`saleTracking` `stk` on(`stk`.`saleFk` = `s`.`id`)) left join `vn`.`zone` `z` on(`z`.`id` = `t`.`zoneFk`)) left join `vn`.`saleVolume` `sv` on(`sv`.`saleFk` = `s`.`id`)) where `t`.`shipped` between `util`.`yesterday`() and `util`.`dayend`(`util`.`VN_CURDATE`()) and `stk`.`id` is null and `stock`.`visible` > 0 and `stk`.`saleFk` is null and `st`.`isPreviousPreparable` <> 0 */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94878,12 +79820,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemShelvingList` AS select `ish`.`shelvingFk` AS `shelvingFk`,`ish`.`visible` AS `visible`,`ish`.`created` AS `created`,`pk`.`code` AS `parking`,`ish`.`itemFk` AS `itemFk`,`i`.`longName` AS `longName`,`i`.`size` AS `size`,`i`.`subName` AS `subName`,`sh`.`parked` AS `parked` from (((`itemShelving` `ish` join `shelving` `sh` on((`sh`.`code` = `ish`.`shelvingFk`))) join `item` `i` on((`i`.`id` = `ish`.`itemFk`))) left join `parking` `pk` on((`pk`.`id` = `sh`.`parkingFk`))) order by `ish`.`created` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemShelvingList` AS select `ish`.`shelvingFk` AS `shelvingFk`,`ish`.`visible` AS `visible`,`ish`.`created` AS `created`,`pk`.`code` AS `parking`,`ish`.`itemFk` AS `itemFk`,`i`.`longName` AS `longName`,`i`.`size` AS `size`,`i`.`subName` AS `subName`,`sh`.`parked` AS `parked`,`pk`.`sectorFk` AS `sectorFk` from (((`itemShelving` `ish` join `shelving` `sh` on(`sh`.`code` = `ish`.`shelvingFk`)) join `item` `i` on(`i`.`id` = `ish`.`itemFk`)) left join `parking` `pk` on(`pk`.`id` = `sh`.`parkingFk`)) order by `ish`.`created` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94897,31 +79839,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemShelvingPlacementSupplyStock` AS select `ish`.`id` AS `itemShelvingFk`,`ish`.`itemFk` AS `itemFk`,`ish`.`quantity` AS `quantity`,`ish`.`packing` AS `packing`,`ish`.`visible` AS `stock`,`i`.`longName` AS `longName`,`i`.`size` AS `size`,`i`.`subName` AS `subName`,`sh`.`code` AS `shelving`,`p`.`code` AS `parking`,`ish`.`created` AS `created`,ifnull(`sh`.`priority`,1) AS `priority`,`p`.`id` AS `parkingFk`,`p`.`sectorFk` AS `sectorFk` from (((`itemShelving` `ish` join `shelving` `sh` on((`sh`.`code` = `ish`.`shelvingFk`))) left join `parking` `p` on((`p`.`id` = `sh`.`parkingFk`))) join `item` `i` on((`i`.`id` = `ish`.`itemFk`))) group by `ish`.`id` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `itemShelvingPlacementSupplyStock__` --- - -/*!50001 DROP TABLE IF EXISTS `itemShelvingPlacementSupplyStock__`*/; -/*!50001 DROP VIEW IF EXISTS `itemShelvingPlacementSupplyStock__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemShelvingPlacementSupplyStock__` AS select `ish`.`id` AS `itemShelvingFk`,`ish`.`itemFk` AS `itemFk`,`ish`.`quantity` AS `quantity`,`ish`.`packing` AS `packing`,`ish`.`visible` AS `stock`,`i`.`longName` AS `longName`,`i`.`size` AS `size`,`i`.`subName` AS `subName`,`sh`.`code` AS `shelving`,`p`.`code` AS `parking`,`ish`.`created` AS `created`,ifnull(`sh`.`priority`,1) AS `priority` from (((((`itemShelving` `ish` join `shelving` `sh` on((`sh`.`code` = `ish`.`shelvingFk`))) left join `parking` `p` on((`p`.`id` = `sh`.`parkingFk`))) join `item` `i` on((`i`.`id` = `ish`.`itemFk`))) left join `itemShelvingSale` `iss` on((`iss`.`itemShelvingFk` = `ish`.`id`))) left join `itemShelvingPlacementSupply` `isps` on((`isps`.`itemShelvingFk` = `ish`.`id`))) group by `ish`.`id` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemShelvingPlacementSupplyStock` AS select `ish`.`id` AS `itemShelvingFk`,`ish`.`itemFk` AS `itemFk`,`ish`.`packing` AS `packing`,`ish`.`visible` AS `stock`,`i`.`longName` AS `longName`,`i`.`size` AS `size`,`i`.`subName` AS `subName`,`sh`.`code` AS `shelving`,`p`.`code` AS `parking`,`ish`.`created` AS `created`,ifnull(`sh`.`priority`,1) AS `priority`,`p`.`id` AS `parkingFk`,`p`.`sectorFk` AS `sectorFk` from (((`itemShelving` `ish` join `shelving` `sh` on(`sh`.`code` = `ish`.`shelvingFk`)) left join `parking` `p` on(`p`.`id` = `sh`.`parkingFk`)) join `item` `i` on(`i`.`id` = `ish`.`itemFk`)) group by `ish`.`id` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94935,12 +79858,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemShelvingSaleSum` AS select `iss`.`id` AS `id`,`iss`.`itemShelvingFk` AS `itemShelvingFk`,`iss`.`saleFk` AS `saleFk`,sum(`iss`.`quantity`) AS `quantity`,`iss`.`created` AS `created`,`p`.`sectorFk` AS `sectorFk` from (((`itemShelvingSale` `iss` join `itemShelving` `ish` on((`ish`.`id` = `iss`.`itemShelvingFk`))) join `shelving` `sh` on((`sh`.`code` = `ish`.`shelvingFk`))) join `parking` `p` on((`p`.`id` = `sh`.`parkingFk`))) group by `iss`.`saleFk` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemShelvingSaleSum` AS select `iss`.`id` AS `id`,`iss`.`itemShelvingFk` AS `itemShelvingFk`,`iss`.`saleFk` AS `saleFk`,sum(`iss`.`quantity`) AS `quantity`,`iss`.`created` AS `created`,`p`.`sectorFk` AS `sectorFk` from (((`itemShelvingSale` `iss` join `itemShelving` `ish` on(`ish`.`id` = `iss`.`itemShelvingFk`)) join `shelving` `sh` on(`sh`.`code` = `ish`.`shelvingFk`)) join `parking` `p` on(`p`.`id` = `sh`.`parkingFk`)) group by `iss`.`saleFk` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94956,10 +79879,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemShelvingStock` AS select `ish`.`itemFk` AS `itemFk`,sum(`ish`.`visible`) AS `visible`,min(`ish`.`packing`) AS `packing`,min(`ish`.`grouping`) AS `grouping`,`s`.`description` AS `sector`,sum(`ish`.`visible`) AS `visibleOriginal`,0 AS `removed`,`p`.`sectorFk` AS `sectorFk`,`s`.`warehouseFk` AS `warehouseFk`,`ish`.`shelvingFk` AS `shelvingFk`,`p`.`code` AS `parkingCode`,`sh`.`parkingFk` AS `parkingFk`,`ish`.`id` AS `itemShelvingFk`,`ish`.`created` AS `created` from (((`itemShelving` `ish` left join `shelving` `sh` on((`sh`.`code` = `ish`.`shelvingFk`))) left join `parking` `p` on((`p`.`id` = `sh`.`parkingFk`))) left join `sector` `s` on((`s`.`id` = `p`.`sectorFk`))) where ((`ish`.`visible` <> 0) and `p`.`sectorFk`) group by `ish`.`itemFk`,`p`.`sectorFk` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemShelvingStock` AS select `ish`.`itemFk` AS `itemFk`,sum(`ish`.`visible`) AS `visible`,min(`ish`.`packing`) AS `packing`,min(`ish`.`grouping`) AS `grouping`,`s`.`description` AS `sector`,sum(`ish`.`visible`) AS `visibleOriginal`,0 AS `removed`,`p`.`sectorFk` AS `sectorFk`,`s`.`warehouseFk` AS `warehouseFk`,`ish`.`shelvingFk` AS `shelvingFk`,`p`.`code` AS `parkingCode`,`sh`.`parkingFk` AS `parkingFk`,`ish`.`id` AS `itemShelvingFk`,`ish`.`created` AS `created`,`s`.`isPreviousPrepared` AS `isPreviousPrepared` from (((`itemShelving` `ish` left join `shelving` `sh` on(`sh`.`code` = `ish`.`shelvingFk`)) left join `parking` `p` on(`p`.`id` = `sh`.`parkingFk`)) left join `sector` `s` on(`s`.`id` = `p`.`sectorFk`)) where `ish`.`visible` <> 0 and `p`.`sectorFk` <> 0 group by `ish`.`itemFk`,`p`.`sectorFk` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94973,12 +79896,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemShelvingStockFull` AS select `ish`.`itemFk` AS `itemFk`,`ish`.`visible` AS `quantity`,`ish`.`packing` AS `packing`,`ish`.`grouping` AS `grouping`,`s`.`description` AS `sector`,`issr`.`removed` AS `removed`,`p`.`sectorFk` AS `sectorFk`,`s`.`warehouseFk` AS `warehouseFk`,`ish`.`shelvingFk` AS `shelvingFk`,`p`.`code` AS `parkingCode`,`sh`.`parkingFk` AS `parkingFk`,`ish`.`id` AS `itemShelvingFk`,`ish`.`created` AS `created` from ((((`itemShelving` `ish` join `shelving` `sh` on((`sh`.`code` = `ish`.`shelvingFk`))) join `parking` `p` on((`p`.`id` = `sh`.`parkingFk`))) join `sector` `s` on((`s`.`id` = `p`.`sectorFk`))) left join `itemShelvingStockRemoved` `issr` on((`issr`.`itemShelvingFk` = `ish`.`id`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemShelvingStockFull` AS select `ish`.`itemFk` AS `itemFk`,`ish`.`visible` AS `quantity`,`ish`.`packing` AS `packing`,`ish`.`grouping` AS `grouping`,`s`.`description` AS `sector`,`issr`.`removed` AS `removed`,`p`.`sectorFk` AS `sectorFk`,`s`.`warehouseFk` AS `warehouseFk`,`ish`.`shelvingFk` AS `shelvingFk`,`p`.`code` AS `parkingCode`,`sh`.`parkingFk` AS `parkingFk`,`ish`.`id` AS `itemShelvingFk`,`ish`.`created` AS `created` from ((((`itemShelving` `ish` join `shelving` `sh` on(`sh`.`code` = `ish`.`shelvingFk`)) join `parking` `p` on(`p`.`id` = `sh`.`parkingFk`)) join `sector` `s` on(`s`.`id` = `p`.`sectorFk`)) left join `itemShelvingStockRemoved` `issr` on(`issr`.`itemShelvingFk` = `ish`.`id`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -94994,10 +79917,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemShelvingStockRemoved` AS select `ish`.`id` AS `itemShelvingFk`,`ish`.`itemFk` AS `itemFk`,0 AS `removed` from ((`itemShelving` `ish` left join `itemShelvingSale` `iss` on((`iss`.`itemShelvingFk` = `ish`.`id`))) left join `itemShelvingPlacementSupply` `isps` on((`isps`.`itemShelvingFk` = `ish`.`id`))) group by `ish`.`id` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemShelvingStockRemoved` AS select `ish`.`id` AS `itemShelvingFk`,`ish`.`itemFk` AS `itemFk`,0 AS `removed` from ((`itemShelving` `ish` left join `itemShelvingSale` `iss` on(`iss`.`itemShelvingFk` = `ish`.`id`)) left join `itemShelvingPlacementSupply` `isps` on(`isps`.`itemShelvingFk` = `ish`.`id`)) group by `ish`.`id` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95011,12 +79934,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemShelvingStock_byWarehouse` AS select `ish`.`itemFk` AS `itemFk`,sum(`ish`.`visible`) AS `visible`,`s`.`warehouseFk` AS `warehouseFk` from (((`itemShelving` `ish` join `shelving` `sh` on((`sh`.`code` = `ish`.`shelvingFk`))) join `parking` `p` on((`p`.`id` = `sh`.`parkingFk`))) join `sector` `s` on((`s`.`id` = `p`.`sectorFk`))) group by `ish`.`itemFk`,`s`.`warehouseFk` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemShelvingStock_byWarehouse` AS select `ish`.`itemFk` AS `itemFk`,sum(`ish`.`visible`) AS `visible`,`s`.`warehouseFk` AS `warehouseFk` from (((`itemShelving` `ish` join `shelving` `sh` on(`sh`.`code` = `ish`.`shelvingFk`)) join `parking` `p` on(`p`.`id` = `sh`.`parkingFk`)) join `sector` `s` on(`s`.`id` = `p`.`sectorFk`)) group by `ish`.`itemFk`,`s`.`warehouseFk` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95030,11 +79953,11 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `itemTagged` AS select distinct `itemTag`.`itemFk` AS `itemFk` from `itemTag` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -95051,10 +79974,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemTicketOut` AS select `t`.`warehouseFk` AS `warehouseFk`,`t`.`shipped` AS `shipped`,`s`.`itemFk` AS `itemFk`,-(`s`.`quantity`) AS `quantity`,`s`.`isPicked` AS `isPicked`,`s`.`reserved` AS `reserved`,`t`.`refFk` AS `refFk`,`s`.`id` AS `saleFk`,`s`.`ticketFk` AS `ticketFk` from (`sale` `s` join `ticket` `t` on((`s`.`ticketFk` = `t`.`id`))) where (`s`.`quantity` <> 0) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemTicketOut` AS select `t`.`warehouseFk` AS `warehouseFk`,`t`.`shipped` AS `shipped`,`s`.`itemFk` AS `itemFk`,-`s`.`quantity` AS `quantity`,`s`.`isPicked` AS `isPicked`,`s`.`reserved` AS `reserved`,`t`.`refFk` AS `refFk`,`s`.`id` AS `saleFk`,`s`.`ticketFk` AS `ticketFk` from (`sale` `s` join `ticket` `t` on(`s`.`ticketFk` = `t`.`id`)) where `s`.`quantity` <> 0 */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95068,12 +79991,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemTypeL10n` AS select `t`.`id` AS `id`,ifnull(`i`.`name`,`t`.`name`) AS `name` from (`itemType` `t` left join `itemTypeI18n` `i` on(((`i`.`typeFk` = `t`.`id`) and (`i`.`lang` = `util`.`LANG`())))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemTypeL10n` AS select `t`.`id` AS `id`,ifnull(`i`.`name`,`t`.`name`) AS `name` from (`itemType` `t` left join `itemTypeI18n` `i` on(`i`.`typeFk` = `t`.`id` and `i`.`lang` = `util`.`LANG`())) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95087,12 +80010,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `item_Free_Id` AS select (`i1`.`id` + 1) AS `newId` from (`item` `i1` left join `item` `i2` on(((`i1`.`id` + 1) = `i2`.`id`))) where (isnull(`i2`.`id`) and (`i1`.`id` > 400000)) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `item_Free_Id` AS select `i1`.`id` + 1 AS `newId` from (`item` `i1` left join `item` `i2` on(`i1`.`id` + 1 = `i2`.`id`)) where `i2`.`id` is null and `i1`.`id` > 400000 */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95108,10 +80031,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `labelInfo` AS select `i`.`id` AS `itemId`,`i`.`name` AS `itemName`,`b`.`stickers` AS `stickers`,`b`.`printedStickers` AS `life`,`i`.`inkFk` AS `colorCode`,`i`.`stems` AS `stems`,`i`.`category` AS `category`,`i`.`subName` AS `productor`,`b`.`packing` AS `packing`,`clb`.`warehouse_id` AS `warehouse_id`,`i`.`size` AS `size`,`b`.`isPickedOff` AS `isPickedOff`,`e`.`evaNotes` AS `notes`,`w`.`name` AS `wh_in`,`e`.`id` AS `entryId`,`b`.`id` AS `buyId` from (((((`vn`.`buy` `b` join `vn`.`item` `i` on((`i`.`id` = `b`.`itemFk`))) join `cache`.`last_buy` `clb` on((`clb`.`item_id` = `i`.`id`))) join `vn`.`entry` `e` on((`e`.`id` = `b`.`entryFk`))) left join `vn`.`travel` `tr` on((`tr`.`id` = `e`.`travelFk`))) join `vn`.`warehouse` `w` on((`w`.`id` = `tr`.`warehouseInFk`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `labelInfo` AS select `i`.`id` AS `itemId`,`i`.`name` AS `itemName`,`b`.`stickers` AS `stickers`,`b`.`printedStickers` AS `life`,`i`.`inkFk` AS `colorCode`,`i`.`stems` AS `stems`,`i`.`category` AS `category`,`i`.`subName` AS `productor`,`b`.`packing` AS `packing`,`clb`.`warehouse_id` AS `warehouse_id`,`i`.`size` AS `size`,`b`.`isPickedOff` AS `isPickedOff`,`e`.`evaNotes` AS `notes`,`w`.`name` AS `wh_in`,`e`.`id` AS `entryId`,`b`.`id` AS `buyId` from (((((`vn`.`buy` `b` join `vn`.`item` `i` on(`i`.`id` = `b`.`itemFk`)) join `cache`.`last_buy` `clb` on(`clb`.`item_id` = `i`.`id`)) join `vn`.`entry` `e` on(`e`.`id` = `b`.`entryFk`)) left join `vn`.`travel` `tr` on(`tr`.`id` = `e`.`travelFk`)) join `vn`.`warehouse` `w` on(`w`.`id` = `tr`.`warehouseInFk`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95125,12 +80048,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `lastHourProduction` AS select `t`.`warehouseFk` AS `warehouseFk`,cast(sum((ifnull(`p`.`volume`,((`p`.`width` * `p`.`height`) * `p`.`depth`)) / 1000000)) as decimal(5,1)) AS `m3` from (((`warehouse` `w` join `ticket` `t` on((`t`.`warehouseFk` = `w`.`id`))) left join `expedition` `e` on((`t`.`id` = `e`.`ticketFk`))) left join `packaging` `p` on((`p`.`id` = `e`.`packagingFk`))) where (`e`.`created` between (now() - interval 1 hour) and now()) group by `t`.`warehouseFk` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `lastHourProduction` AS select `t`.`warehouseFk` AS `warehouseFk`,cast(sum(ifnull(`p`.`volume`,`p`.`width` * `p`.`height` * `p`.`depth`) / 1000000) as decimal(5,1)) AS `m3` from (((`warehouse` `w` join `ticket` `t` on(`t`.`warehouseFk` = `w`.`id`)) left join `expedition` `e` on(`t`.`id` = `e`.`ticketFk`)) left join `packaging` `p` on(`p`.`id` = `e`.`packagingFk`)) where `e`.`created` between current_timestamp() - interval 1 hour and current_timestamp() group by `t`.`warehouseFk` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95146,10 +80069,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `lastPurchases` AS select `tr`.`landed` AS `landed`,`w`.`id` AS `warehouseFk`,`w`.`name` AS `warehouse`,`i`.`longName` AS `longName`,`i`.`subName` AS `subName`,`e`.`id` AS `entryFk`,`b`.`stickers` AS `stickers`,`b`.`packing` AS `packing`,`e`.`ref` AS `ref`,`b`.`itemFk` AS `itemFk`,`ek`.`pro` AS `pro`,`ek`.`ref` AS `ektRef`,`ek`.`agj` AS `agj` from (((((`vn`.`buy` `b` join `vn`.`entry` `e` on((`e`.`id` = `b`.`entryFk`))) join `vn`.`item` `i` on((`i`.`id` = `b`.`itemFk`))) join `vn`.`travel` `tr` on((`tr`.`id` = `e`.`travelFk`))) join `vn`.`warehouse` `w` on((`w`.`id` = `tr`.`warehouseInFk`))) left join `edi`.`ekt` `ek` on((`ek`.`id` = `b`.`ektFk`))) where ((`tr`.`landed` between `util`.`yesterday`() and `util`.`tomorrow`()) and (`e`.`isRaid` = 0) and (`b`.`stickers` > 0)) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `lastPurchases` AS select `tr`.`landed` AS `landed`,`w`.`id` AS `warehouseFk`,`w`.`name` AS `warehouse`,`i`.`longName` AS `longName`,`i`.`subName` AS `subName`,`e`.`id` AS `entryFk`,`b`.`stickers` AS `stickers`,`b`.`packing` AS `packing`,`e`.`ref` AS `ref`,`b`.`itemFk` AS `itemFk`,`ek`.`pro` AS `pro`,`ek`.`ref` AS `ektRef`,`ek`.`agj` AS `agj` from (((((`vn`.`buy` `b` join `vn`.`entry` `e` on(`e`.`id` = `b`.`entryFk`)) join `vn`.`item` `i` on(`i`.`id` = `b`.`itemFk`)) join `vn`.`travel` `tr` on(`tr`.`id` = `e`.`travelFk`)) join `vn`.`warehouse` `w` on(`w`.`id` = `tr`.`warehouseInFk`)) left join `edi`.`ekt` `ek` on(`ek`.`id` = `b`.`ektFk`)) where `tr`.`landed` between `util`.`yesterday`() and `util`.`tomorrow`() and `e`.`isRaid` = 0 and `b`.`stickers` > 0 */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95165,10 +80088,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `lastTopClaims` AS select `s`.`itemFk` AS `itemFk`,`i`.`longName` AS `itemName`,`it`.`name` AS `itemTypeName`,count(0) AS `claimsNumber`,round(sum(((((`cb`.`quantity` * `s`.`price`) * (1 - ((`c`.`responsibility` - 1) / 4))) * (100 - `s`.`discount`)) / 100)),2) AS `claimedAmount`,round(sum((((`cb`.`quantity` * `s`.`price`) * (100 - `s`.`discount`)) / 100)),2) AS `totalAmount` from ((((`claim` `c` join `claimBeginning` `cb` on((`cb`.`claimFk` = `c`.`id`))) join `sale` `s` on((`s`.`id` = `cb`.`saleFk`))) join `item` `i` on((`i`.`id` = `s`.`itemFk`))) join `itemType` `it` on((`it`.`id` = `i`.`typeFk`))) where (`c`.`created` >= (curdate() + interval -(1) week)) group by `s`.`itemFk` having (((`claimedAmount` > 100) and (`claimsNumber` > 2)) or (`claimsNumber` > 4)) order by `claimsNumber` desc */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `lastTopClaims` AS select `s`.`itemFk` AS `itemFk`,`i`.`longName` AS `itemName`,`it`.`name` AS `itemTypeName`,count(0) AS `claimsNumber`,round(sum(`cb`.`quantity` * `s`.`price` * (1 - (`c`.`responsibility` - 1) / 4) * (100 - `s`.`discount`) / 100),2) AS `claimedAmount`,round(sum(`cb`.`quantity` * `s`.`price` * (100 - `s`.`discount`) / 100),2) AS `totalAmount` from ((((`claim` `c` join `claimBeginning` `cb` on(`cb`.`claimFk` = `c`.`id`)) join `sale` `s` on(`s`.`id` = `cb`.`saleFk`)) join `item` `i` on(`i`.`id` = `s`.`itemFk`)) join `itemType` `it` on(`it`.`id` = `i`.`typeFk`)) where `c`.`created` >= `util`.`VN_CURDATE`() + interval -1 week group by `s`.`itemFk` having `claimedAmount` > 100 and `claimsNumber` > 2 or `claimsNumber` > 4 order by count(0) desc */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95182,12 +80105,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `mistake` AS select `wr`.`code` AS `revisador`,`s`.`concept` AS `concept`,`w`.`code` AS `sacador`,`w`.`firstName` AS `firstName`,`w`.`lastName` AS `lastName`,`mt`.`description` AS `description`,cast(`iss`.`created` as date) AS `created`,`w`.`id` AS `workerFk` from (((((`saleMistake` `sm` join `mistakeType` `mt` on((`mt`.`id` = `sm`.`typeFk`))) join `worker` `wr` on((`wr`.`id` = `sm`.`userFk`))) join `sale` `s` on((`s`.`id` = `sm`.`saleFk`))) join `itemShelvingSale` `iss` on((`iss`.`saleFk` = `sm`.`saleFk`))) join `worker` `w` on((`w`.`id` = `iss`.`userFk`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `mistake` AS select `wr`.`code` AS `revisador`,`s`.`concept` AS `concept`,`w`.`code` AS `sacador`,`w`.`firstName` AS `firstName`,`w`.`lastName` AS `lastName`,`mt`.`description` AS `description`,cast(`iss`.`created` as date) AS `created`,`w`.`id` AS `workerFk` from (((((`saleMistake` `sm` join `mistakeType` `mt` on(`mt`.`id` = `sm`.`typeFk`)) join `worker` `wr` on(`wr`.`id` = `sm`.`userFk`)) join `sale` `s` on(`s`.`id` = `sm`.`saleFk`)) join `itemShelvingSale` `iss` on(`iss`.`saleFk` = `sm`.`saleFk`)) join `worker` `w` on(`w`.`id` = `iss`.`userFk`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95201,12 +80124,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `mistakeRatio` AS select `wr`.`code` AS `revisador`,`w`.`code` AS `sacador`,`w`.`firstName` AS `firstName`,`w`.`lastName` AS `lastName`,`mt`.`description` AS `description`,cast(`iss`.`created` as date) AS `created`,`w`.`id` AS `workerFk`,`sm`.`saleFk` AS `saleFk` from ((((`itemShelvingSale` `iss` join `worker` `w` on((`w`.`id` = `iss`.`userFk`))) left join `saleMistake` `sm` on((`iss`.`saleFk` = `sm`.`saleFk`))) left join `mistakeType` `mt` on((`mt`.`id` = `sm`.`typeFk`))) left join `worker` `wr` on((`wr`.`id` = `sm`.`userFk`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `mistakeRatio` AS select `wr`.`code` AS `revisador`,`w`.`code` AS `sacador`,`w`.`firstName` AS `firstName`,`w`.`lastName` AS `lastName`,`mt`.`description` AS `description`,cast(`iss`.`created` as date) AS `created`,`w`.`id` AS `workerFk`,`sm`.`saleFk` AS `saleFk` from ((((`itemShelvingSale` `iss` join `worker` `w` on(`w`.`id` = `iss`.`userFk`)) left join `saleMistake` `sm` on(`iss`.`saleFk` = `sm`.`saleFk`)) left join `mistakeType` `mt` on(`mt`.`id` = `sm`.`typeFk`)) left join `worker` `wr` on(`wr`.`id` = `sm`.`userFk`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95222,29 +80145,29 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `newBornSales` AS select `v`.`importe` AS `amount`,`v`.`Id_Cliente` AS `clientFk`,`c`.`salesPersonFk` AS `userFk`,`v`.`fecha` AS `dated`,`cn`.`firstShipped` AS `firstShipped` from ((((`bs`.`clientNewBorn` `cn` join `bs`.`ventas` `v` on((((`cn`.`firstShipped` + interval 1 year) > `v`.`fecha`) and (`v`.`Id_Cliente` = `cn`.`clientFk`)))) join `vn`.`client` `c` on((`c`.`id` = `v`.`Id_Cliente`))) join `account`.`user` `u` on((`u`.`id` = `c`.`salesPersonFk`))) join `account`.`role` `r` on((`r`.`id` = `u`.`role`))) where ((`r`.`name` = 'salesPerson') and (`u`.`name` not in ('ismaelalcolea','ruben'))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `newBornSales` AS select `v`.`importe` AS `amount`,`v`.`Id_Cliente` AS `clientFk`,`c`.`salesPersonFk` AS `userFk`,`v`.`fecha` AS `dated`,`cn`.`firstShipped` AS `firstShipped` from ((((`bs`.`clientNewBorn` `cn` join `bs`.`ventas` `v` on(`cn`.`firstShipped` + interval 1 year > `v`.`fecha` and `v`.`Id_Cliente` = `cn`.`clientFk`)) join `vn`.`client` `c` on(`c`.`id` = `v`.`Id_Cliente`)) join `account`.`user` `u` on(`u`.`id` = `c`.`salesPersonFk`)) join `account`.`role` `r` on(`r`.`id` = `u`.`role`)) where `r`.`name` = 'salesPerson' and `u`.`name` not in ('ismaelalcolea','ruben') */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; -- --- Final view structure for view `newBornSales__` +-- Final view structure for view `operatorWorkerCode` -- -/*!50001 DROP TABLE IF EXISTS `newBornSales__`*/; -/*!50001 DROP VIEW IF EXISTS `newBornSales__`*/; +/*!50001 DROP TABLE IF EXISTS `operatorWorkerCode`*/; +/*!50001 DROP VIEW IF EXISTS `operatorWorkerCode`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `newBornSales__` AS select `v`.`importe` AS `amount`,`v`.`Id_Cliente` AS `clientFk`,`c`.`salesPersonFk` AS `userFk`,`v`.`fecha` AS `dated`,`cn`.`firstShipped` AS `firstShipped` from (((`bs`.`clientNewBorn` `cn` join `bs`.`ventas` `v` on((((`cn`.`firstShipped` + interval 1 year) > `v`.`fecha`) and (`v`.`Id_Cliente` = `cn`.`clientFk`)))) join `vn`.`client` `c` on((`c`.`id` = `v`.`Id_Cliente`))) join `account`.`user` `u` on((`u`.`id` = `c`.`salesPersonFk`))) where ((`u`.`role` = 18) and (`u`.`name` not in ('ismaelalcolea','ruben'))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `operatorWorkerCode` AS select `o`.`workerFk` AS `workerFk`,concat(`w`.`firstName`,' ',`w`.`lastName`) AS `fullName`,`w`.`code` AS `code`,`o`.`numberOfWagons` AS `numberOfWagons` from ((`worker` `w` join `operator` `o` on(`o`.`workerFk` = `w`.`id`)) join `sector` `s` on(`w`.`sectorFk` = `s`.`id`)) where `w`.`sectorFk` is not null and `s`.`code` in ('H2','H2','PEQUES_H','ALTILLO COMP','ALTILLO ARTI') */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95258,12 +80181,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `originL10n` AS select `o`.`id` AS `id`,ifnull(`i`.`name`,`o`.`name`) AS `name` from (`origin` `o` left join `originI18n` `i` on(((`i`.`originFk` = `o`.`id`) and (`i`.`lang` = `util`.`lang`())))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `originL10n` AS select `o`.`id` AS `id`,ifnull(`i`.`name`,`o`.`name`) AS `name` from (`origin` `o` left join `originI18n` `i` on(`i`.`originFk` = `o`.`id` and `i`.`lang` = `util`.`lang`())) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95279,48 +80202,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `packageEquivalentItem` AS select `p`.`itemFk` AS `itemFk`,`p2`.`itemFk` AS `equivalentFk` from ((`packageEquivalent` `pe` join `packaging` `p` on((`p`.`id` = `pe`.`packagingFk`))) join `packaging` `p2` on((`p2`.`id` = `pe`.`equivalentFk`))) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `packingSite` --- - -/*!50001 DROP TABLE IF EXISTS `packingSite`*/; -/*!50001 DROP VIEW IF EXISTS `packingSite`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `packingSite` AS select `h`.`code` AS `hostFk`,`h`.`printerFk` AS `printerFk`,concat(`h`.`itemPackingTypeFk`,`h`.`packingSite`) AS `code` from `host` `h` where (`h`.`itemPackingTypeFk` is not null) order by `h`.`itemPackingTypeFk`,`h`.`packingSite` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `payment__` --- - -/*!50001 DROP TABLE IF EXISTS `payment__`*/; -/*!50001 DROP VIEW IF EXISTS `payment__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `payment__` AS select `p`.`id` AS `id`,`p`.`fecha` AS `received`,`p`.`dueDated` AS `dueDated`,`p`.`id_proveedor` AS `supplierFk`,`p`.`importe` AS `amount`,`p`.`id_moneda` AS `currencyFk`,`p`.`divisa` AS `divisa`,`p`.`id_banco` AS `bankFk`,`p`.`pay_met_id` AS `payMethodFk`,`p`.`empresa_id` AS `companyFk`,`p`.`pago_sdc_id` AS `exchangeInsuranceFk`,`p`.`conciliado` AS `isConciliated` from `vn2008`.`pago` `p` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `packageEquivalentItem` AS select `p`.`itemFk` AS `itemFk`,`p2`.`itemFk` AS `equivalentFk` from ((`packageEquivalent` `pe` join `packaging` `p` on(`p`.`id` = `pe`.`packagingFk`)) join `packaging` `p2` on(`p2`.`id` = `pe`.`equivalentFk`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95334,31 +80219,31 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `personMedia` AS select `p`.`id_trabajador` AS `workerFk`,`m`.`value` AS `mediaValue` from ((((`postgresql`.`person` `p` join `postgresql`.`profile` `po` on((`po`.`person_id` = `p`.`person_id`))) join `postgresql`.`profile_media` `pom` on((`pom`.`profile_id` = `po`.`profile_id`))) join `postgresql`.`media` `m` on((`m`.`media_id` = `pom`.`media_id`))) join `postgresql`.`media_type` `mt` on((`mt`.`media_type_id` = `m`.`media_type_id`))) where (`mt`.`name` = 'movil personal') */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `personMedia` AS select `c`.`id` AS `workerFk`,ifnull(`c`.`mobile`,`c`.`phone`) AS `mediaValue` from (`client` `c` join `worker` `w` on(`w`.`id` = `c`.`id`)) having `mediaValue` is not null */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; -- --- Final view structure for view `printer__` +-- Final view structure for view `phoneBook` -- -/*!50001 DROP TABLE IF EXISTS `printer__`*/; -/*!50001 DROP VIEW IF EXISTS `printer__`*/; +/*!50001 DROP TABLE IF EXISTS `phoneBook`*/; +/*!50001 DROP VIEW IF EXISTS `phoneBook`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `printer__` AS select `i`.`Id_Impresora` AS `id`,`i`.`Ruta` AS `path`,`i`.`Impresora` AS `name`,`i`.`referencia` AS `reference`,`i`.`isLabeler` AS `isLabeler`,`i`.`description` AS `description` from `vn2008`.`Impresoras__` `i` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `phoneBook` AS select 'C' AS `Tipo`,`client`.`id` AS `Id`,`client`.`name` AS `Cliente`,`client`.`phone` AS `Telefono` from `client` where `client`.`phone` is not null union select 'C' AS `Tipo`,`client`.`id` AS `Id`,`client`.`name` AS `Cliente`,`client`.`mobile` AS `Movil` from `client` where `client`.`mobile` is not null union select 'C' AS `Tipo`,`clientContact`.`clientFk` AS `clientFk`,`clientContact`.`name` AS `name`,`clientContact`.`phone` AS `phone` from `clientContact` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95372,12 +80257,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `productionVolume` AS select hour(`e`.`created`) AS `hora`,minute(`e`.`created`) AS `minuto`,ifnull(`p`.`volume`,ifnull(((`p`.`width` * `p`.`height`) * `p`.`depth`),94500)) AS `cm3`,`t`.`warehouseFk` AS `warehouseFk`,`e`.`created` AS `created` from (((`expedition` `e` left join `packaging` `p` on((`p`.`itemFk` = `e`.`itemFk`))) join `ticket` `t` on((`t`.`id` = `e`.`ticketFk`))) join `client` `c` on((`c`.`id` = `t`.`clientFk`))) where ((`e`.`created` between curdate() and `util`.`dayend`(curdate())) and `c`.`isRelevant`) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `productionVolume` AS select hour(`e`.`created`) AS `hora`,minute(`e`.`created`) AS `minuto`,ifnull(`p`.`volume`,ifnull(`p`.`width` * `p`.`height` * `p`.`depth`,94500)) AS `cm3`,`t`.`warehouseFk` AS `warehouseFk`,`e`.`created` AS `created` from (((`expedition` `e` left join `packaging` `p` on(`p`.`id` = `e`.`packagingFk`)) join `ticket` `t` on(`t`.`id` = `e`.`ticketFk`)) join `client` `c` on(`c`.`id` = `t`.`clientFk`)) where `e`.`created` between `util`.`VN_CURDATE`() and `util`.`dayend`(`util`.`VN_CURDATE`()) and `c`.`isRelevant` <> 0 */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95393,67 +80278,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `productionVolume_LastHour` AS select cast(sum((`productionVolume`.`cm3` / 1000000)) as decimal(10,0)) AS `m3`,`productionVolume`.`warehouseFk` AS `warehouseFk` from `productionVolume` where ((`productionVolume`.`created` > (now() + interval -(1) hour)) and (`productionVolume`.`warehouseFk` in (1,44,60))) group by `productionVolume`.`warehouseFk` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `rankingNewBornByQuarter__` --- - -/*!50001 DROP TABLE IF EXISTS `rankingNewBornByQuarter__`*/; -/*!50001 DROP VIEW IF EXISTS `rankingNewBornByQuarter__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `rankingNewBornByQuarter__` AS select sum(`v`.`importe`) AS `total`,`u`.`name` AS `name`,now() AS `time_sec`,`u`.`id` AS `userFk` from (((`bs`.`clientNewBorn` `cn` join `bs`.`ventas` `v` on((((`cn`.`firstShipped` + interval 1 year) > `v`.`fecha`) and (`v`.`Id_Cliente` = `cn`.`clientFk`)))) join `vn`.`client` `c` on((`c`.`id` = `v`.`Id_Cliente`))) join `account`.`user` `u` on((`u`.`id` = `c`.`salesPersonFk`))) where ((`v`.`fecha` >= '2020-07-01') and (`cn`.`firstShipped` >= '2019-07-01') and (`u`.`role` = 18) and (`u`.`name` not in ('ismaelalcolea','ruben'))) group by `u`.`id` order by sum(`v`.`importe`) desc limit 20 */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `rankingSellingByQuarter__` --- - -/*!50001 DROP TABLE IF EXISTS `rankingSellingByQuarter__`*/; -/*!50001 DROP VIEW IF EXISTS `rankingSellingByQuarter__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `rankingSellingByQuarter__` AS select sum(`v`.`importe`) AS `importe`,`u`.`name` AS `name`,`u`.`id` AS `userFk`,now() AS `time_sec` from (`bs`.`vendedores` `v` join `account`.`user` `u` on((`u`.`id` = `v`.`Id_Trabajador`))) where ((`v`.`año` = year(curdate())) and (quarter(concat(year(curdate()),'-',`v`.`mes`,'-01')) = quarter(curdate())) and (`u`.`name` not in ('ismaelalcolea','ruben'))) group by `v`.`Id_Trabajador` order by sum(`v`.`importe`) desc limit 15 */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `rate__` --- - -/*!50001 DROP TABLE IF EXISTS `rate__`*/; -/*!50001 DROP VIEW IF EXISTS `rate__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `rate__` AS select `r`.`tarifa_id` AS `id`,`r`.`fecha` AS `dated`,`r`.`warehouse_id` AS `warehouseFk`,`r`.`t0` AS `rate0`,`r`.`t1` AS `rate1`,`r`.`t2` AS `rate2`,`r`.`t3` AS `rate3` from `vn2008`.`tarifas` `r` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `productionVolume_LastHour` AS select cast(sum(`productionVolume`.`cm3` / 1000000) as decimal(10,0)) AS `m3`,`productionVolume`.`warehouseFk` AS `warehouseFk` from `productionVolume` where `productionVolume`.`created` > current_timestamp() + interval -1 hour and `productionVolume`.`warehouseFk` in (1,44,60) group by `productionVolume`.`warehouseFk` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95467,16 +80295,35 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `role` AS select `account`.`role`.`id` AS `id`,`account`.`role`.`name` AS `name`,`account`.`role`.`description` AS `description`,`account`.`role`.`hasLogin` AS `hasLogin` from `account`.`role` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; +-- +-- Final view structure for view `routesReduced` +-- + +/*!50001 DROP TABLE IF EXISTS `routesReduced`*/; +/*!50001 DROP VIEW IF EXISTS `routesReduced`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `routesReduced` AS select `et`.`description` AS `description`,`rm`.`name` AS `name`,`t`.`routeFk` AS `routeFk`,`et`.`ETD` AS `ETD`,`rm`.`bufferFk` AS `bufferFk`,`rm`.`beachFk` AS `beachFk`,`i`.`itemPackingTypeFk` AS `itempackingTypeFk` from (((((((`vn`.`expeditionTruck` `et` join `vn`.`routesMonitor` `rm` on(`rm`.`expeditionTruckFk` = `et`.`id`)) join `vn`.`ticket` `t` on(`t`.`routeFk` = `rm`.`routeFk`)) join `vn`.`ticketState` `ts` on(`ts`.`ticketFk` = `t`.`id`)) join `vn`.`state` `st` on(`st`.`id` = `ts`.`stateFk`)) join `vn`.`sale` `s` on(`s`.`ticketFk` = `t`.`id`)) join `vn`.`item` `i` on(`i`.`id` = `s`.`itemFk`)) join `vn`.`config` `c`) where `et`.`ETD` > `util`.`yesterday`() group by `t`.`routeFk` order by `et`.`ETD`,`t`.`routeFk` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + -- -- Final view structure for view `saleCost` -- @@ -95486,12 +80333,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `saleCost` AS select `s`.`itemFk` AS `itemFk`,`s`.`ticketFk` AS `ticketFk`,`s`.`concept` AS `concept`,`s`.`quantity` AS `quantity`,`s`.`discount` AS `discount`,`s`.`price` AS `price`,`c`.`name` AS `component`,`sc`.`value` AS `coste` from (((`sale` `s` join `saleComponent` `sc` on((`sc`.`saleFk` = `s`.`id`))) join `component` `c` on((`c`.`id` = `sc`.`componentFk`))) join `componentType` `ct` on((`ct`.`id` = `c`.`typeFk`))) where (`ct`.`type` = 'coste') */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `saleCost` AS select `s`.`itemFk` AS `itemFk`,`s`.`ticketFk` AS `ticketFk`,`s`.`concept` AS `concept`,`s`.`quantity` AS `quantity`,`s`.`discount` AS `discount`,`s`.`price` AS `price`,`c`.`name` AS `component`,`sc`.`value` AS `coste` from (((`sale` `s` join `saleComponent` `sc` on(`sc`.`saleFk` = `s`.`id`)) join `component` `c` on(`c`.`id` = `sc`.`componentFk`)) join `componentType` `ct` on(`ct`.`id` = `c`.`typeFk`)) where `ct`.`type` = 'coste' */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95507,29 +80354,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `saleMistakeList` AS select `st`.`saleFk` AS `saleFk`,`st`.`workerFk` AS `workerFk`,concat(`w2`.`firstName`,' ',`w2`.`lastName`) AS `sacador`,`st`.`created` AS `created`,concat(`w`.`firstName`,' ',`w`.`lastName`) AS `revisador`,`mt`.`description` AS `description`,`sm`.`created` AS `controlled` from (((((`vn`.`saleTracking` `st` join `vn`.`worker` `w2` on((`w2`.`id` = `st`.`workerFk`))) join `vncontrol`.`accion` `a` on(((`a`.`accion_id` = `st`.`actionFk`) and (`a`.`accion` = 'SACAR')))) left join `vn`.`saleMistake` `sm` on((`st`.`saleFk` = `sm`.`saleFk`))) left join `vn`.`mistakeType` `mt` on((`mt`.`id` = `sm`.`typeFk`))) left join `vn`.`worker` `w` on((`w`.`id` = `sm`.`userFk`))) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `saleMistake_list__` --- - -/*!50001 DROP TABLE IF EXISTS `saleMistake_list__`*/; -/*!50001 DROP VIEW IF EXISTS `saleMistake_list__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `saleMistake_list__` AS select `st`.`saleFk` AS `saleFk`,concat(`w2`.`firstName`,' ',`w2`.`lastName`) AS `sacador`,`st`.`created` AS `created`,concat(`w`.`firstName`,' ',`w`.`lastName`) AS `revisador`,`mt`.`description` AS `description`,`sm`.`created` AS `controlled` from (((((`vn`.`saleTracking` `st` join `vn`.`worker` `w2` on((`w2`.`id` = `st`.`workerFk`))) join `vncontrol`.`accion` `a` on(((`a`.`accion_id` = `st`.`actionFk`) and (`a`.`accion` = 'SACAR')))) left join `vn`.`saleMistake` `sm` on((`st`.`saleFk` = `sm`.`saleFk`))) left join `vn`.`mistakeType` `mt` on((`mt`.`id` = `sm`.`typeFk`))) left join `vn`.`worker` `w` on((`w`.`id` = `sm`.`userFk`))) where (`st`.`created` > '2020-10-01') */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `saleMistakeList` AS select `st`.`saleFk` AS `saleFk`,`st`.`workerFk` AS `workerFk`,concat(`w2`.`firstName`,' ',`w2`.`lastName`) AS `sacador`,`st`.`created` AS `created`,concat(`w`.`firstName`,' ',`w`.`lastName`) AS `revisador`,`mt`.`description` AS `description`,`sm`.`created` AS `controlled` from (((((`vn`.`saleTracking` `st` join `vn`.`worker` `w2` on(`w2`.`id` = `st`.`workerFk`)) join `vncontrol`.`accion` `a` on(`a`.`accion_id` = `st`.`actionFk` and `a`.`accion` = 'SACAR')) left join `vn`.`saleMistake` `sm` on(`st`.`saleFk` = `sm`.`saleFk`)) left join `vn`.`mistakeType` `mt` on(`mt`.`id` = `sm`.`typeFk`)) left join `vn`.`worker` `w` on(`w`.`id` = `sm`.`userFk`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95545,10 +80373,29 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `saleMistake_list__2` AS select `st`.`saleFk` AS `saleFk`,`st`.`workerFk` AS `workerFk`,concat(`w2`.`firstName`,' ',`w2`.`lastName`) AS `sacador`,`st`.`created` AS `created`,concat(`w`.`firstName`,' ',`w`.`lastName`) AS `revisador`,`mt`.`description` AS `description`,`sm`.`created` AS `controlled` from (((((`vn`.`saleTracking` `st` join `vn`.`worker` `w2` on((`w2`.`id` = `st`.`workerFk`))) join `vncontrol`.`accion` `a` on(((`a`.`accion_id` = `st`.`actionFk`) and (`a`.`accion` = 'SACAR')))) left join `vn`.`saleMistake` `sm` on((`st`.`saleFk` = `sm`.`saleFk`))) left join `vn`.`mistakeType` `mt` on((`mt`.`id` = `sm`.`typeFk`))) left join `vn`.`worker` `w` on((`w`.`id` = `sm`.`userFk`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `saleMistake_list__2` AS select `st`.`saleFk` AS `saleFk`,`st`.`workerFk` AS `workerFk`,concat(`w2`.`firstName`,' ',`w2`.`lastName`) AS `sacador`,`st`.`created` AS `created`,concat(`w`.`firstName`,' ',`w`.`lastName`) AS `revisador`,`mt`.`description` AS `description`,`sm`.`created` AS `controlled` from (((((`vn`.`saleTracking` `st` join `vn`.`worker` `w2` on(`w2`.`id` = `st`.`workerFk`)) join `vncontrol`.`accion` `a` on(`a`.`accion_id` = `st`.`actionFk` and `a`.`accion` = 'SACAR')) left join `vn`.`saleMistake` `sm` on(`st`.`saleFk` = `sm`.`saleFk`)) left join `vn`.`mistakeType` `mt` on(`mt`.`id` = `sm`.`typeFk`)) left join `vn`.`worker` `w` on(`w`.`id` = `sm`.`userFk`)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `saleSaleTracking` +-- + +/*!50001 DROP TABLE IF EXISTS `saleSaleTracking`*/; +/*!50001 DROP VIEW IF EXISTS `saleSaleTracking`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `saleSaleTracking` AS select distinct `st`.`saleFk` AS `saleFk` from `saleTracking` `st` where `st`.`created` >= `util`.`VN_CURDATE`() + interval -1 day */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95562,12 +80409,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `saleValue` AS select `wh`.`name` AS `warehouse`,`c`.`name` AS `client`,`c`.`typeFk` AS `clientTypeFk`,`u`.`name` AS `buyer`,`it`.`id` AS `itemTypeFk`,`it`.`name` AS `family`,`s`.`itemFk` AS `itemFk`,`s`.`concept` AS `concept`,`s`.`quantity` AS `quantity`,(((`b`.`buyingValue` + `b`.`freightValue`) + `b`.`comissionValue`) + `b`.`packageValue`) AS `cost`,((((`b`.`buyingValue` + `b`.`freightValue`) + `b`.`comissionValue`) + `b`.`packageValue`) * `s`.`quantity`) AS `value`,`tm`.`year` AS `year`,`tm`.`week` AS `week` from (((((((((`vn`.`sale` `s` join `vn`.`item` `i` on((`i`.`id` = `s`.`itemFk`))) join `vn`.`itemType` `it` on((`it`.`id` = `i`.`typeFk`))) join `account`.`user` `u` on((`u`.`id` = `it`.`workerFk`))) join `vn`.`ticket` `t` on((`t`.`id` = `s`.`ticketFk`))) join `vn`.`client` `c` on((`c`.`id` = `t`.`clientFk`))) join `vn`.`warehouse` `wh` on((`wh`.`id` = `t`.`warehouseFk`))) join `vn`.`time` `tm` on((`tm`.`dated` = cast(`t`.`shipped` as date)))) join `cache`.`last_buy` `lb` on(((`lb`.`item_id` = `i`.`id`) and (`lb`.`warehouse_id` = `wh`.`id`)))) join `vn`.`buy` `b` on((`b`.`id` = `lb`.`buy_id`))) where (`wh`.`isManaged` <> 0) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `saleValue` AS select `wh`.`name` AS `warehouse`,`c`.`name` AS `client`,`c`.`typeFk` AS `clientTypeFk`,`u`.`name` AS `buyer`,`it`.`id` AS `itemTypeFk`,`it`.`name` AS `family`,`s`.`itemFk` AS `itemFk`,`s`.`concept` AS `concept`,`s`.`quantity` AS `quantity`,`b`.`buyingValue` + `b`.`freightValue` + `b`.`comissionValue` + `b`.`packageValue` AS `cost`,(`b`.`buyingValue` + `b`.`freightValue` + `b`.`comissionValue` + `b`.`packageValue`) * `s`.`quantity` AS `value`,`tm`.`year` AS `year`,`tm`.`week` AS `week` from (((((((((`vn`.`sale` `s` join `vn`.`item` `i` on(`i`.`id` = `s`.`itemFk`)) join `vn`.`itemType` `it` on(`it`.`id` = `i`.`typeFk`)) join `account`.`user` `u` on(`u`.`id` = `it`.`workerFk`)) join `vn`.`ticket` `t` on(`t`.`id` = `s`.`ticketFk`)) join `vn`.`client` `c` on(`c`.`id` = `t`.`clientFk`)) join `vn`.`warehouse` `wh` on(`wh`.`id` = `t`.`warehouseFk`)) join `vn`.`time` `tm` on(`tm`.`dated` = cast(`t`.`shipped` as date))) join `cache`.`last_buy` `lb` on(`lb`.`item_id` = `i`.`id` and `lb`.`warehouse_id` = `wh`.`id`)) join `vn`.`buy` `b` on(`b`.`id` = `lb`.`buy_id`)) where `wh`.`isManaged` <> 0 */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95581,12 +80428,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `saleVolume` AS select `s`.`ticketFk` AS `ticketFk`,`s`.`id` AS `saleFk`,round(((`ic`.`cm3delivery` * `s`.`quantity`) / 1000),0) AS `litros`,`t`.`routeFk` AS `routeFk`,`t`.`shipped` AS `shipped`,`t`.`landed` AS `landed`,((`s`.`quantity` * `ic`.`cm3delivery`) / 1000000) AS `volume`,((`s`.`quantity` * `ic`.`grams`) / 1000) AS `physicalWeight`,(((`s`.`quantity` * `ic`.`cm3delivery`) * greatest(`i`.`density`,167)) / 1000000) AS `weight`,((`s`.`quantity` * `ic`.`cm3delivery`) / 1000000) AS `physicalVolume`,(((`s`.`quantity` * `ic`.`cm3delivery`) * ifnull(`t`.`zonePrice`,`z`.`price`)) / (`vc`.`standardFlowerBox` * 1000)) AS `freight`,`t`.`zoneFk` AS `zoneFk`,`t`.`clientFk` AS `clientFk`,`s`.`isPicked` AS `isPicked`,(((`s`.`quantity` * `s`.`price`) * (100 - `s`.`discount`)) / 100) AS `eurosValue` from (((((`sale` `s` join `item` `i` on((`i`.`id` = `s`.`itemFk`))) join `ticket` `t` on((`t`.`id` = `s`.`ticketFk`))) join `zone` `z` on((`z`.`id` = `t`.`zoneFk`))) join `volumeConfig` `vc`) join `itemCost` `ic` on(((`ic`.`itemFk` = `s`.`itemFk`) and (`ic`.`warehouseFk` = `t`.`warehouseFk`)))) where (`s`.`quantity` > 0) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `saleVolume` AS select `s`.`ticketFk` AS `ticketFk`,`s`.`id` AS `saleFk`,round(`ic`.`cm3delivery` * `s`.`quantity` / 1000,0) AS `litros`,`t`.`routeFk` AS `routeFk`,`t`.`shipped` AS `shipped`,`t`.`landed` AS `landed`,`s`.`quantity` * `ic`.`cm3delivery` / 1000000 AS `volume`,`s`.`quantity` * `ic`.`grams` / 1000 AS `physicalWeight`,`s`.`quantity` * `ic`.`cm3delivery` * greatest(`ic`.`grams` / `ic`.`cm3delivery`,`vc`.`aerealVolumetricDensity`) / 1000000 AS `weight`,`s`.`quantity` * `ic`.`cm3delivery` / 1000000 AS `physicalVolume`,`s`.`quantity` * `ic`.`cm3delivery` * ifnull(`t`.`zonePrice`,`z`.`price`) / (`vc`.`standardFlowerBox` * 1000) AS `freight`,`t`.`zoneFk` AS `zoneFk`,`t`.`clientFk` AS `clientFk`,`s`.`isPicked` AS `isPicked`,`s`.`quantity` * `s`.`price` * (100 - `s`.`discount`) / 100 AS `eurosValue`,`i`.`itemPackingTypeFk` AS `itemPackingTypeFk` from (((((`sale` `s` join `item` `i` on(`i`.`id` = `s`.`itemFk`)) join `ticket` `t` on(`t`.`id` = `s`.`ticketFk`)) join `zone` `z` on(`z`.`id` = `t`.`zoneFk`)) join `volumeConfig` `vc`) join `itemCost` `ic` on(`ic`.`itemFk` = `s`.`itemFk` and `ic`.`warehouseFk` = `t`.`warehouseFk`)) where `s`.`quantity` > 0 */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95600,12 +80447,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `saleVolume_Today_VNH` AS select `t`.`nickname` AS `Cliente`,`p`.`name` AS `Provincia`,`c`.`country` AS `Pais`,cast(sum(`sv`.`volume`) as decimal(5,1)) AS `volume` from (((((`saleVolume` `sv` join `ticket` `t` on((`t`.`id` = `sv`.`ticketFk`))) join `address` `a` on((`a`.`id` = `t`.`addressFk`))) join `province` `p` on((`p`.`id` = `a`.`provinceFk`))) join `country` `c` on((`c`.`id` = `p`.`countryFk`))) join `warehouse` `w` on((`w`.`id` = `t`.`warehouseFk`))) where ((`w`.`name` = 'VNH') and (`t`.`shipped` between curdate() and `util`.`dayend`(curdate()))) group by `t`.`nickname`,`p`.`name` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `saleVolume_Today_VNH` AS select `t`.`nickname` AS `Cliente`,`p`.`name` AS `Provincia`,`c`.`country` AS `Pais`,cast(sum(`sv`.`volume`) as decimal(5,1)) AS `volume` from (((((`saleVolume` `sv` join `ticket` `t` on(`t`.`id` = `sv`.`ticketFk`)) join `address` `a` on(`a`.`id` = `t`.`addressFk`)) join `province` `p` on(`p`.`id` = `a`.`provinceFk`)) join `country` `c` on(`c`.`id` = `p`.`countryFk`)) join `warehouse` `w` on(`w`.`id` = `t`.`warehouseFk`)) where `w`.`name` = 'VNH' and `t`.`shipped` between `util`.`VN_CURDATE`() and `util`.`dayend`(`util`.`VN_CURDATE`()) group by `t`.`nickname`,`p`.`name` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95619,12 +80466,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `sale_freightComponent` AS select `t`.`id` AS `ticketFk`,(`sc`.`value` * `s`.`quantity`) AS `amount`,`t`.`shipped` AS `shipped` from ((((`ticket` `t` straight_join `sale` `s` on((`t`.`id` = `s`.`ticketFk`))) join `saleComponent` `sc` on((`sc`.`saleFk` = `s`.`id`))) join `component` `c` on((`c`.`id` = `sc`.`componentFk`))) join `componentType` `ct` on(((`ct`.`id` = `c`.`typeFk`) and (`ct`.`type` = 'agencia')))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `sale_freightComponent` AS select `t`.`id` AS `ticketFk`,`sc`.`value` * `s`.`quantity` AS `amount`,`t`.`shipped` AS `shipped` from ((((`ticket` `t` straight_join `sale` `s` on(`t`.`id` = `s`.`ticketFk`)) join `saleComponent` `sc` on(`sc`.`saleFk` = `s`.`id`)) join `component` `c` on(`c`.`id` = `sc`.`componentFk`)) join `componentType` `ct` on(`ct`.`id` = `c`.`typeFk` and `ct`.`type` = 'agencia')) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95640,10 +80487,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `salesPersonSince` AS select `p`.`id_trabajador` AS `workerFk`,min(`b`.`date_start`) AS `started` from ((((`postgresql`.`person` `p` join `postgresql`.`profile` `pr` on((`pr`.`person_id` = `p`.`person_id`))) left join `postgresql`.`business` `b` on((`pr`.`profile_id` = `b`.`client_id`))) left join `postgresql`.`business_labour` `bl` on((`b`.`business_id` = `bl`.`business_id`))) join `postgresql`.`professional_category` `pc` on((`pc`.`professional_category_id` = `bl`.`professional_category_id`))) where (`pc`.`category_name` = 'Aux ventas') group by `p`.`id_trabajador` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `salesPersonSince` AS select `b`.`workerFk` AS `workerFk`,min(`b`.`started`) AS `started` from ((`vn`.`business` `b` join `vn`.`worker` `w` on(`w`.`id` = `b`.`workerFk`)) left join `postgresql`.`professional_category` `pc` on(`pc`.`professional_category_id` = `b`.`workerBusinessProfessionalCategoryFk`)) where `pc`.`category_name` = 'Aux ventas' group by `b`.`workerFk` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95657,12 +80504,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `salesPreparedLastHour` AS select `t`.`warehouseFk` AS `warehouseFk`,`st`.`saleFk` AS `saleFk`,`st`.`isChecked` AS `isChecked`,`st`.`originalQuantity` AS `originalQuantity`,`a`.`accion` AS `accion`,`st`.`created` AS `created`,`e`.`code` AS `code`,`w`.`firstName` AS `firstname`,`w`.`lastName` AS `lastName`,`w`.`code` AS `workerCode`,((`ic`.`cm3delivery` * `s`.`quantity`) / 1000) AS `litros`,`s`.`concept` AS `concept`,`d`.`name` AS `departmentName` from (((((((((`vn`.`saleTracking` `st` left join `vn`.`salesPreviousPreparated` `prevPrepSales` on((`prevPrepSales`.`saleFk` = `st`.`saleFk`))) join `vn`.`sale` `s` on((`s`.`id` = `st`.`saleFk`))) join `vn`.`ticket` `t` on((`t`.`id` = `s`.`ticketFk`))) join `vn`.`itemCost` `ic` on(((`ic`.`warehouseFk` = `t`.`warehouseFk`) and (`ic`.`itemFk` = `s`.`itemFk`)))) join `vn`.`worker` `w` on((`w`.`id` = `st`.`workerFk`))) join `vn`.`state` `e` on((`e`.`id` = `st`.`stateFk`))) join `vncontrol`.`accion` `a` on((`a`.`accion_id` = `st`.`actionFk`))) join `vn`.`workerDepartment` `wd` on((`wd`.`workerFk` = `st`.`workerFk`))) join `vn`.`department` `d` on((`d`.`id` = `wd`.`departmentFk`))) where ((`st`.`created` > (now() + interval -(1) hour)) and isnull(`prevPrepSales`.`saleFk`) and (not((`d`.`name` like 'EQUIPO%')))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `salesPreparedLastHour` AS select `t`.`warehouseFk` AS `warehouseFk`,`st`.`saleFk` AS `saleFk`,`st`.`isChecked` AS `isChecked`,`st`.`originalQuantity` AS `originalQuantity`,`a`.`accion` AS `accion`,`st`.`created` AS `created`,`e`.`code` AS `code`,`w`.`firstName` AS `firstname`,`w`.`lastName` AS `lastName`,`w`.`code` AS `workerCode`,`ic`.`cm3delivery` * `s`.`quantity` / 1000 AS `litros`,`s`.`concept` AS `concept`,`d`.`name` AS `departmentName` from (((((((((`vn`.`saleTracking` `st` left join `vn`.`salesPreviousPreparated` `prevPrepSales` on(`prevPrepSales`.`saleFk` = `st`.`saleFk`)) join `vn`.`sale` `s` on(`s`.`id` = `st`.`saleFk`)) join `vn`.`ticket` `t` on(`t`.`id` = `s`.`ticketFk`)) join `vn`.`itemCost` `ic` on(`ic`.`warehouseFk` = `t`.`warehouseFk` and `ic`.`itemFk` = `s`.`itemFk`)) join `vn`.`worker` `w` on(`w`.`id` = `st`.`workerFk`)) join `vn`.`state` `e` on(`e`.`id` = `st`.`stateFk`)) join `vncontrol`.`accion` `a` on(`a`.`accion_id` = `st`.`actionFk`)) join `vn`.`workerDepartment` `wd` on(`wd`.`workerFk` = `st`.`workerFk`)) join `vn`.`department` `d` on(`d`.`id` = `wd`.`departmentFk`)) where `st`.`created` > current_timestamp() + interval -1 hour and `prevPrepSales`.`saleFk` is null and `d`.`name` not like 'EQUIPO%' */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95676,31 +80523,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `salesPreviousPreparated` AS select `st`.`saleFk` AS `saleFk` from (`saleTracking` `st` join `state` `e` on((`e`.`id` = `st`.`stateFk`))) where ((`st`.`created` > curdate()) and (`e`.`code` like 'PREVIOUS_PREPARATION')) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `salesToPrePrepare__` --- - -/*!50001 DROP TABLE IF EXISTS `salesToPrePrepare__`*/; -/*!50001 DROP VIEW IF EXISTS `salesToPrePrepare__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `salesToPrePrepare__` AS select `m`.`ticketFk` AS `Id_Ticket`,`mk`.`Id_Movimiento` AS `Id_Movimiento`,`mk`.`Id_Movimiento_mark` AS `Id_Movimiento_mark`,`mk`.`Id_Trabajador` AS `Id_Trabjador`,`mk`.`valor` AS `isChecked`,`mk`.`odbc_date` AS `created`,`m`.`itemFk` AS `Id_Article`,`m`.`concept` AS `Concepte`,`art`.`subName` AS `subName`,ifnull(`m`.`quantity`,0) AS `Cantidad`,ifnull(`m`.`originalQuantity`,`m`.`quantity`) AS `original_quantity`,hour(`t`.`shipped`) AS `Hora`,hour(`t`.`shipped`) AS `Departure`,minute(`t`.`shipped`) AS `Minuto`,`am`.`agencyFk` AS `agency_id`,`t`.`warehouseFk` AS `warehouse_id`,`a`.`provinceFk` AS `province_id`,`is`.`quantity` AS `picked`,`t`.`CodigoTrabajador` AS `trabajador`,`is`.`sectorFk` AS `sectorFk`,`mk`.`stateFk` AS `stateFk` from ((((((((`vn2008`.`Movimientos_mark` `mk` join `vn`.`state` `st` on((`st`.`id` = `mk`.`stateFk`))) join `vn`.`sale` `m` on((`m`.`id` = `mk`.`Id_Movimiento`))) join `vn`.`ticket` `t` on((`m`.`ticketFk` = `t`.`id`))) join `vn`.`agencyMode` `am` on((`am`.`id` = `t`.`agencyModeFk`))) join `vn`.`address` `a` on((`a`.`id` = `t`.`addressFk`))) left join `vn`.`itemShelvingSaleSum` `is` on((`is`.`saleFk` = `mk`.`Id_Movimiento`))) join `vn2008`.`Articles` `art` on((`art`.`Id_Article` = `m`.`itemFk`))) left join `vn2008`.`Trabajadores` `t` on((`t`.`Id_Trabajador` = `mk`.`Id_Trabajador`))) where (`st`.`code` like 'PREVIOUS_PREPARATION') */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `salesPreviousPreparated` AS select `st`.`saleFk` AS `saleFk` from (`saleTracking` `st` join `state` `e` on(`e`.`id` = `st`.`stateFk`)) where `st`.`created` > `util`.`VN_CURDATE`() and `e`.`code` like 'PREVIOUS_PREPARATION' */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95716,10 +80544,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `supplierPackaging` AS select `e`.`supplierFk` AS `supplierFk`,`b`.`itemFk` AS `itemFk`,`i`.`longName` AS `longName`,`s`.`name` AS `supplier`,`b`.`entryFk` AS `entryFk`,`tr`.`landed` AS `landed`,-(least(`b`.`quantity`,0)) AS `out`,greatest(`b`.`quantity`,0) AS `in`,`w`.`name` AS `warehouse`,`b`.`buyingValue` AS `buyingValue` from ((((((`buy` `b` join `item` `i` on((`i`.`id` = `b`.`itemFk`))) join `packaging` `p` on((`p`.`itemFk` = `i`.`id`))) join `entry` `e` on((`e`.`id` = `b`.`entryFk`))) join `supplier` `s` on((`s`.`id` = `e`.`supplierFk`))) join `travel` `tr` on((`tr`.`id` = `e`.`travelFk`))) join `warehouse` `w` on((`w`.`id` = `tr`.`warehouseInFk`))) where `p`.`isPackageReturnable` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `supplierPackaging` AS select `e`.`supplierFk` AS `supplierFk`,`b`.`itemFk` AS `itemFk`,`i`.`longName` AS `longName`,`s`.`name` AS `supplier`,`b`.`entryFk` AS `entryFk`,`tr`.`landed` AS `landed`,-least(`b`.`quantity`,0) AS `out`,greatest(`b`.`quantity`,0) AS `in`,`w`.`name` AS `warehouse`,`b`.`buyingValue` AS `buyingValue` from ((((((`buy` `b` join `item` `i` on(`i`.`id` = `b`.`itemFk`)) join `packaging` `p` on(`p`.`itemFk` = `i`.`id`)) join `entry` `e` on(`e`.`id` = `b`.`entryFk`)) join `supplier` `s` on(`s`.`id` = `e`.`supplierFk`)) join `travel` `tr` on(`tr`.`id` = `e`.`travelFk`)) join `warehouse` `w` on(`w`.`id` = `tr`.`warehouseInFk`)) where `p`.`isPackageReturnable` <> 0 */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95733,31 +80561,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `tagL10n` AS select `t`.`id` AS `id`,ifnull(`i`.`name`,`t`.`name`) AS `name` from (`tag` `t` left join `tagI18n` `i` on(((`i`.`tagFk` = `t`.`id`) and (`i`.`lang` = `util`.`LANG`())))) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `ticketLabel_Source` --- - -/*!50001 DROP TABLE IF EXISTS `ticketLabel_Source`*/; -/*!50001 DROP VIEW IF EXISTS `ticketLabel_Source`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `ticketLabel_Source` AS select concat(`tc`.`collectionFk`,' ',`tc`.`wagon`,'-',`tc`.`level`) AS `level`,`t`.`id` AS `Id_Ticket`,(case when (`t`.`routeFk` is not null) then if(`agr`.`showAgencyName`,concat(right(left(`agr`.`name`,(locate(' ',`agr`.`name`) - 1)),2),'- R',right(`t`.`routeFk`,3)),`agr`.`name`) else if((`am`.`deliveryMethodFk` = 2),`zo`.`name`,`am`.`name`) end) AS `Agencia`,`t`.`clientFk` AS `Id_Cliente`,`t`.`notes` AS `Notas`,'CDT' AS `Sacador`,1 AS `ncarro`,if(hour(`t`.`shipped`),date_format(`t`.`shipped`,'%H:%i'),date_format(`zo`.`hour`,'%H:%i')) AS `horaagencia`,`t`.`shipped` AS `fecha`,if(((now() + interval 1 hour) > `ze`.`etc`),'!!!','') AS `urgente` from (((((((`vn`.`ticket` `t` join `vn`.`agencyMode` `am` on((`t`.`agencyModeFk` = `am`.`id`))) left join `vn`.`address` `a` on((`a`.`id` = `t`.`addressFk`))) left join `vn`.`route` `r` on((`t`.`routeFk` = `r`.`id`))) left join `vn`.`zoneEstimatedDelivery` `ze` on((`ze`.`zoneFk` = `t`.`zoneFk`))) left join `vn`.`ticketCollection` `tc` on((`tc`.`ticketFk` = `t`.`id`))) left join `vn`.`agencyMode` `agr` on((`r`.`agencyModeFk` = `agr`.`id`))) left join `vn`.`zone` `zo` on((`t`.`zoneFk` = `zo`.`id`))) where (`t`.`shipped` between `util`.`yesterday`() and `util`.`dayend`(curdate())) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `tagL10n` AS select `t`.`id` AS `id`,ifnull(`i`.`name`,`t`.`name`) AS `name` from (`tag` `t` left join `tagI18n` `i` on(`i`.`tagFk` = `t`.`id` and `i`.`lang` = `util`.`LANG`())) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95773,9 +80582,9 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `ticketLastUpdated` AS select `ticketLastUpdatedList`.`ticketFk` AS `ticketFk`,max(`ticketLastUpdatedList`.`created`) AS `lastUpdated` from `vn`.`ticketLastUpdatedList` group by `ticketLastUpdatedList`.`ticketFk` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -95792,48 +80601,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `ticketLastUpdatedList` AS select `s`.`ticketFk` AS `ticketFk`,`st`.`created` AS `created` from (`vn`.`saleTracking` `st` join `vn`.`sale` `s` on((`s`.`id` = `st`.`saleFk`))) where (`st`.`created` > curdate()) union all select `i`.`Id_Ticket` AS `Id_Ticket`,`i`.`odbc_date` AS `odbc_date` from `vncontrol`.`inter` `i` where (`i`.`odbc_date` > curdate()) union all select `s`.`ticketFk` AS `ticketFk`,`iss`.`created` AS `created` from (`vn`.`itemShelvingSale` `iss` join `vn`.`sale` `s` on((`s`.`id` = `iss`.`saleFk`))) where (`iss`.`created` > curdate()) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `ticketLocation` --- - -/*!50001 DROP TABLE IF EXISTS `ticketLocation`*/; -/*!50001 DROP VIEW IF EXISTS `ticketLocation`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `ticketLocation` AS select `tl`.`Id_Ticket` AS `ticketFk`,`tl`.`longitude` AS `longitude`,`tl`.`latitude` AS `latitude` from `vn2008`.`ticket_location` `tl` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `ticketMRW` --- - -/*!50001 DROP TABLE IF EXISTS `ticketMRW`*/; -/*!50001 DROP VIEW IF EXISTS `ticketMRW`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `ticketMRW` AS select `Tickets`.`Id_Agencia` AS `id_Agencia`,`Tickets`.`empresa_id` AS `empresa_id`,`Consignatarios`.`consignatario` AS `Consignatario`,`Consignatarios`.`domicilio` AS `DOMICILIO`,`Consignatarios`.`poblacion` AS `POBLACION`,`Consignatarios`.`codPostal` AS `CODPOSTAL`,`Consignatarios`.`telefono` AS `telefono`,ifnull(ifnull(ifnull(ifnull(`Consignatarios`.`movil`,`Clientes`.`movil`),`Consignatarios`.`telefono`),`Clientes`.`telefono`),0) AS `movil`,`Clientes`.`if` AS `IF`,`Tickets`.`Id_Ticket` AS `Id_Ticket`,`Tickets`.`warehouse_id` AS `warehouse_id`,`Consignatarios`.`id_consigna` AS `Id_Consigna`,`Paises`.`Codigo` AS `CodigoPais`,`Tickets`.`Fecha` AS `Fecha`,`province`.`province_id` AS `province_id`,`Tickets`.`landing` AS `landing` from ((((`vn2008`.`Clientes` join `vn2008`.`Consignatarios` on((`Clientes`.`id_cliente` = `Consignatarios`.`Id_cliente`))) join `vn2008`.`Tickets` on((`Consignatarios`.`id_consigna` = `Tickets`.`Id_Consigna`))) join `vn2008`.`province` on((`Consignatarios`.`province_id` = `province`.`province_id`))) join `vn2008`.`Paises` on((`province`.`Paises_Id` = `Paises`.`Id`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ticketLastUpdatedList` AS select `s`.`ticketFk` AS `ticketFk`,`st`.`created` AS `created` from (`vn`.`saleTracking` `st` join `vn`.`sale` `s` on(`s`.`id` = `st`.`saleFk`)) where `st`.`created` > `util`.`VN_CURDATE`() union all select `i`.`Id_Ticket` AS `Id_Ticket`,`i`.`odbc_date` AS `odbc_date` from `vncontrol`.`inter` `i` where `i`.`odbc_date` > `util`.`VN_CURDATE`() union all select `s`.`ticketFk` AS `ticketFk`,`iss`.`created` AS `created` from (`vn`.`itemShelvingSale` `iss` join `vn`.`sale` `s` on(`s`.`id` = `iss`.`saleFk`)) where `iss`.`created` > `util`.`VN_CURDATE`() */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95847,12 +80618,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `ticketNotInvoiced` AS select `t`.`companyFk` AS `companyFk`,`cm`.`code` AS `companyCode`,`t`.`clientFk` AS `clientFk`,`c`.`name` AS `clientName`,`t`.`shipped` AS `shipped`,cast(sum((((`s`.`quantity` * `s`.`price`) * (100 - `s`.`discount`)) / 100)) as decimal(10,2)) AS `value` from (((`ticket` `t` join `sale` `s` on((`s`.`ticketFk` = `t`.`id`))) join `client` `c` on((`c`.`id` = `t`.`clientFk`))) join `company` `cm` on((`cm`.`id` = `t`.`companyFk`))) where (isnull(`t`.`refFk`) and (`t`.`shipped` > '2017-01-01')) group by `t`.`id` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ticketNotInvoiced` AS select `t`.`companyFk` AS `companyFk`,`cm`.`code` AS `companyCode`,`t`.`clientFk` AS `clientFk`,`c`.`name` AS `clientName`,`t`.`shipped` AS `shipped`,cast(sum(`s`.`quantity` * `s`.`price` * (100 - `s`.`discount`) / 100) as decimal(10,2)) AS `value` from (((`ticket` `t` join `sale` `s` on(`s`.`ticketFk` = `t`.`id`)) join `client` `c` on(`c`.`id` = `t`.`clientFk`)) join `company` `cm` on(`cm`.`id` = `t`.`companyFk`)) where `t`.`refFk` is null and `t`.`shipped` > '2017-01-01' group by `t`.`id` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95866,12 +80637,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `ticketPackingList` AS select `t`.`nickname` AS `nickname`,`t`.`id` AS `ticketFk`,`am`.`name` AS `agencyMode`,`am`.`flag` AS `flag`,`p`.`name` AS `province`,`s`.`itemFk` AS `itemFk`,`s`.`concept` AS `concept`,`s`.`quantity` AS `quantity`,`sv`.`litros` AS `litros` from (((((`ticket` `t` join `address` `a` on((`a`.`id` = `t`.`addressFk`))) join `province` `p` on((`p`.`id` = `a`.`provinceFk`))) join `agencyMode` `am` on((`am`.`id` = `t`.`agencyModeFk`))) left join `sale` `s` on((`s`.`ticketFk` = `t`.`id`))) left join `saleVolume` `sv` on((`sv`.`saleFk` = `s`.`id`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ticketPackingList` AS select `t`.`nickname` AS `nickname`,`t`.`id` AS `ticketFk`,`am`.`name` AS `agencyMode`,`am`.`flag` AS `flag`,`p`.`name` AS `province`,`s`.`itemFk` AS `itemFk`,`s`.`concept` AS `concept`,`s`.`quantity` AS `quantity`,`sv`.`litros` AS `litros`,`to`.`description` AS `observaciones` from (((((((`ticket` `t` join `address` `a` on(`a`.`id` = `t`.`addressFk`)) join `province` `p` on(`p`.`id` = `a`.`provinceFk`)) join `agencyMode` `am` on(`am`.`id` = `t`.`agencyModeFk`)) left join `sale` `s` on(`s`.`ticketFk` = `t`.`id`)) left join `saleVolume` `sv` on(`sv`.`saleFk` = `s`.`id`)) join `observationType` `ot` on(`ot`.`code` = 'packager')) left join `ticketObservation` `to` on(`to`.`ticketFk` = `t`.`id` and `ot`.`id` = `to`.`observationTypeFk`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95885,12 +80656,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `ticketPreviousPreparingList` AS select `t`.`id` AS `ticketFk`,`w`.`code` AS `code`,count(`st`.`id`) AS `saleLines`,sum((`st`.`isChecked` <> 0)) AS `alreadyMadeSaleLines`,(sum((`st`.`isChecked` <> 0)) / count(`st`.`id`)) AS `madeRate`,`st`.`created` AS `created`,`i`.`sectorFk` AS `sectorFk`,`p`.`code` AS `parking` from (((((((`ticket` `t` join `sale` `s` on((`s`.`ticketFk` = `t`.`id`))) join `item` `i` on((`i`.`id` = `s`.`itemFk`))) join `saleTracking` `st` on((`st`.`saleFk` = `s`.`id`))) join `state` on((`state`.`id` = `st`.`stateFk`))) left join `worker` `w` on((`w`.`id` = `st`.`workerFk`))) left join `ticketParking` `tp` on((`tp`.`ticketFk` = `t`.`id`))) left join `parking` `p` on((`p`.`id` = `tp`.`parkingFk`))) where ((`state`.`code` = 'PREVIOUS_PREPARATION') and (`t`.`shipped` >= (curdate() + interval -(1) day))) group by `s`.`ticketFk`,`i`.`sectorFk` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ticketPreviousPreparingList` AS select `s`.`ticketFk` AS `ticketFk`,`w`.`code` AS `code`,count(`s`.`id`) AS `saleLines`,sum(`s`.`isPicked` <> 0) AS `alreadyMadeSaleLines`,sum(`s`.`isPicked` <> 0) / count(`s`.`id`) AS `madeRate`,`sg`.`created` AS `created`,`p`.`code` AS `parking`,`iss`.`sectorFk` AS `sectorFk`,`al`.`code` AS `alertCode` from (((((((`vn`.`saleGroup` `sg` join `vn`.`saleGroupDetail` `sgd` on(`sgd`.`saleGroupFk` = `sg`.`id`)) join `vn`.`sale` `s` on(`s`.`id` = `sgd`.`saleFk`)) join `vn`.`ticketState` `tls` on(`tls`.`ticketFk` = `s`.`ticketFk`)) join `vn`.`alertLevel` `al` on(`al`.`id` = `tls`.`alertLevel`)) join `vn`.`worker` `w` on(`w`.`id` = `sg`.`userFk`)) left join `vn`.`parking` `p` on(`p`.`id` = `sg`.`parkingFk`)) join `vn`.`itemShelvingStock` `iss` on(`iss`.`itemFk` = `s`.`itemFk`)) where `sg`.`created` >= `util`.`VN_CURDATE`() + interval 0.1 day group by `sg`.`id` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95906,10 +80677,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `ticketState` AS select `i`.`odbc_date` AS `updated`,`i`.`state_id` AS `stateFk`,`i`.`Id_Trabajador` AS `workerFk`,`tls`.`ticketFk` AS `ticketFk`,`s`.`id` AS `state`,`s`.`order` AS `productionOrder`,`s`.`alertLevel` AS `alertLevel`,`s`.`code` AS `code`,`tls`.`ticketFk` AS `ticket`,`i`.`Id_Trabajador` AS `worker`,`s`.`isPreviousPreparable` AS `isPreviousPreparable`,`s`.`isPicked` AS `isPicked` from ((`vn`.`ticketLastState` `tls` join `vncontrol`.`inter` `i` on((`i`.`inter_id` = `tls`.`ticketTrackingFk`))) join `vn`.`state` `s` on((`s`.`id` = `i`.`state_id`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ticketState` AS select `i`.`odbc_date` AS `updated`,`i`.`state_id` AS `stateFk`,`i`.`Id_Trabajador` AS `workerFk`,`tls`.`ticketFk` AS `ticketFk`,`s`.`id` AS `state`,`s`.`order` AS `productionOrder`,`s`.`alertLevel` AS `alertLevel`,`s`.`code` AS `code`,`tls`.`ticketFk` AS `ticket`,`i`.`Id_Trabajador` AS `worker`,`s`.`isPreviousPreparable` AS `isPreviousPreparable`,`s`.`isPicked` AS `isPicked` from ((`vn`.`ticketLastState` `tls` join `vncontrol`.`inter` `i` on(`i`.`inter_id` = `tls`.`ticketTrackingFk`)) join `vn`.`state` `s` on(`s`.`id` = `i`.`state_id`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95923,12 +80694,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `ticketStateToday` AS select `ts`.`ticket` AS `ticket`,`ts`.`state` AS `state`,`ts`.`productionOrder` AS `productionOrder`,`ts`.`alertLevel` AS `alertLevel`,`ts`.`worker` AS `worker`,`ts`.`code` AS `code`,`ts`.`updated` AS `updated`,`ts`.`isPicked` AS `isPicked` from (`vn`.`ticketState` `ts` join `vn`.`ticket` `t` on((`t`.`id` = `ts`.`ticket`))) where (`t`.`shipped` between curdate() and `MIDNIGHT`(curdate())) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ticketStateToday` AS select `ts`.`ticket` AS `ticket`,`ts`.`state` AS `state`,`ts`.`productionOrder` AS `productionOrder`,`ts`.`alertLevel` AS `alertLevel`,`ts`.`worker` AS `worker`,`ts`.`code` AS `code`,`ts`.`updated` AS `updated`,`ts`.`isPicked` AS `isPicked` from (`vn`.`ticketState` `ts` join `vn`.`ticket` `t` on(`t`.`id` = `ts`.`ticket`)) where `t`.`shipped` between `util`.`VN_CURDATE`() and `MIDNIGHT`(`util`.`VN_CURDATE`()) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95942,31 +80713,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `ticketTracking` AS select `i`.`inter_id` AS `id`,`i`.`state_id` AS `stateFk`,`i`.`odbc_date` AS `created`,`i`.`Id_Ticket` AS `ticketFk`,`i`.`Id_Trabajador` AS `workerFk` from `vncontrol`.`inter` `i` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `time__` --- - -/*!50001 DROP TABLE IF EXISTS `time__`*/; -/*!50001 DROP VIEW IF EXISTS `time__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `time__` AS select `t`.`date` AS `dated`,`t`.`period` AS `period`,`t`.`month` AS `month`,`t`.`year` AS `year`,`t`.`day` AS `day`,`t`.`week` AS `week`,`t`.`yearMonth` AS `yearMonth` from `vn2008`.`time` `t` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ticketTracking` AS select `i`.`inter_id` AS `id`,`i`.`state_id` AS `stateFk`,`i`.`odbc_date` AS `created`,`i`.`Id_Ticket` AS `ticketFk`,`i`.`Id_Trabajador` AS `workerFk` from `vncontrol`.`inter` `i` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95980,12 +80732,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `tr2` AS select `travel`.`id` AS `id`,`travel`.`shipped` AS `shipped`,`travel`.`shipmentHour` AS `shipmentHour`,`travel`.`landed` AS `landed`,`travel`.`landingHour` AS `landingHour`,`travel`.`warehouseInFk` AS `warehouseInFk`,`travel`.`warehouseOutFk` AS `warehouseOutFk`,`travel`.`agencyFk` AS `agencyFk`,`travel`.`ref` AS `ref`,`travel`.`isDelivered` AS `isDelivered`,`travel`.`isReceived` AS `isReceived`,`travel`.`m3` AS `m3`,`travel`.`kg` AS `kg`,`travel`.`cargoSupplierFk` AS `cargoSupplierFk`,`travel`.`totalEntries` AS `totalEntries` from `travel` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `tr2` AS select `travel`.`id` AS `id`,`travel`.`shipped` AS `shipped`,`travel`.`shipmentHour` AS `shipmentHour`,`travel`.`landed` AS `landed`,`travel`.`landingHour` AS `landingHour`,`travel`.`warehouseInFk` AS `warehouseInFk`,`travel`.`warehouseOutFk` AS `warehouseOutFk`,`travel`.`agencyModeFk` AS `agencyFk`,`travel`.`ref` AS `ref`,`travel`.`isDelivered` AS `isDelivered`,`travel`.`isReceived` AS `isReceived`,`travel`.`m3` AS `m3`,`travel`.`kg` AS `kg`,`travel`.`cargoSupplierFk` AS `cargoSupplierFk`,`travel`.`totalEntries` AS `totalEntries` from `travel` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -95999,12 +80751,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `traceabilityBuy` AS select `b`.`id` AS `buyFk`,`b`.`quantity` AS `quantity`,`tr`.`landed` AS `landed`,`w`.`name` AS `warehouseName`,`b`.`entryFk` AS `entryFk`,`s`.`name` AS `supplierName`,ifnull(`b`.`itemOriginalFk`,`b`.`itemFk`) AS `itemFk` from ((((`buy` `b` join `entry` `e` on((`e`.`id` = `b`.`entryFk`))) join `travel` `tr` on((`tr`.`id` = `e`.`travelFk`))) join `supplier` `s` on((`s`.`id` = `e`.`supplierFk`))) join `warehouse` `w` on((`w`.`id` = `tr`.`warehouseInFk`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `traceabilityBuy` AS select `b`.`id` AS `buyFk`,`b`.`quantity` AS `quantity`,`tr`.`landed` AS `landed`,`w`.`name` AS `warehouseName`,`b`.`entryFk` AS `entryFk`,`s`.`name` AS `supplierName`,ifnull(`b`.`itemOriginalFk`,`b`.`itemFk`) AS `itemFk` from ((((`buy` `b` join `entry` `e` on(`e`.`id` = `b`.`entryFk`)) join `travel` `tr` on(`tr`.`id` = `e`.`travelFk`)) join `supplier` `s` on(`s`.`id` = `e`.`supplierFk`)) join `warehouse` `w` on(`w`.`id` = `tr`.`warehouseInFk`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -96018,12 +80770,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `traceabilitySale` AS select `s`.`ticketFk` AS `ticketFk`,`sb`.`buyFk` AS `buyFk`,`t`.`shipped` AS `shipped`,`t`.`nickname` AS `nickname`,`s`.`quantity` AS `quantity`,concat(`w`.`firstName`,' ',`w`.`lastName`) AS `worker` from (((`saleBuy` `sb` join `sale` `s` on((`s`.`id` = `sb`.`saleFk`))) join `ticket` `t` on((`t`.`id` = `s`.`ticketFk`))) join `worker` `w` on((`w`.`id` = `sb`.`workerFk`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `traceabilitySale` AS select `s`.`ticketFk` AS `ticketFk`,`sb`.`buyFk` AS `buyFk`,`t`.`shipped` AS `shipped`,`t`.`nickname` AS `nickname`,`s`.`quantity` AS `quantity`,concat(`w`.`firstName`,' ',`w`.`lastName`) AS `worker` from (((`saleBuy` `sb` join `sale` `s` on(`s`.`id` = `sb`.`saleFk`)) join `ticket` `t` on(`t`.`id` = `s`.`ticketFk`)) join `worker` `w` on(`w`.`id` = `sb`.`workerFk`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -96037,11 +80789,11 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `user` AS select `account`.`user`.`id` AS `id`,`account`.`user`.`name` AS `name`,`account`.`user`.`password` AS `password`,`account`.`user`.`role` AS `role`,`account`.`user`.`active` AS `active`,`account`.`user`.`recoverPass` AS `recoverPass`,`account`.`user`.`lastPassChange` AS `lastPassChange` from `account`.`user` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; @@ -96056,12 +80808,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerBusinessDated` AS select `t`.`dated` AS `dated`,`b`.`business_id` AS `business_id`,`w`.`id` AS `workerFk` from ((((`vn`.`time` `t` left join `postgresql`.`business` `b` on((`t`.`dated` between `b`.`date_start` and ifnull(`b`.`date_end`,curdate())))) left join `postgresql`.`profile` `pr` on((`b`.`client_id` = `pr`.`profile_id`))) left join `postgresql`.`person` `p` on((`pr`.`person_id` = `p`.`person_id`))) left join `vn`.`worker` `w` on((`p`.`id_trabajador` = `w`.`id`))) where (`t`.`dated` > (curdate() + interval -(2) year)) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `workerBusinessDated` AS select `t`.`dated` AS `dated`,`b`.`id` AS `businessFk`,`b`.`workerFk` AS `workerFk` from (`time` `t` left join `business` `b` on(`t`.`dated` between `b`.`started` and ifnull(`b`.`ended`,util.VN_CURDATE()))) where `t`.`dated` > util.VN_CURDATE() + interval -2 year */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -96075,12 +80827,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerCalendar` AS select `ce`.`business_id` AS `businessFk`,`p`.`id_trabajador` AS `workerFk`,`ce`.`calendar_state_id` AS `absenceTypeFk`,`ce`.`date` AS `dated` from (((`postgresql`.`person` `p` join `postgresql`.`profile` `pr` on((`pr`.`person_id` = `p`.`person_id`))) join `postgresql`.`business` `b` on((`b`.`client_id` = `pr`.`profile_id`))) join `postgresql`.`calendar_employee` `ce` on((`ce`.`business_id` = `b`.`business_id`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `workerCalendar` AS select `b`.`id` AS `businessFk`,`b`.`workerFk` AS `workerFk`,`ce`.`calendar_state_id` AS `absenceTypeFk`,`ce`.`date` AS `dated` from (`vn`.`business` `b` join `postgresql`.`calendar_employee` `ce` on(`ce`.`businessFk` = `b`.`id`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -96096,29 +80848,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerDepartment` AS select `p`.`id_trabajador` AS `workerFk`,`d`.`id` AS `departmentFk` from (((`postgresql`.`person` `p` join `postgresql`.`profile` `pr` on((`pr`.`person_id` = `p`.`person_id`))) left join (`postgresql`.`business` `b` left join `postgresql`.`business_labour` `bl` on((`b`.`business_id` = `bl`.`business_id`))) on((`pr`.`profile_id` = `b`.`client_id`))) join `vn`.`department` `d` on((`d`.`id` = `bl`.`department_id`))) where ((isnull(`b`.`date_end`) and (`b`.`date_start` <= curdate())) or ((`b`.`date_end` >= curdate()) and (`b`.`date_start` <= curdate()))) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `workerDepartmentTest` --- - -/*!50001 DROP TABLE IF EXISTS `workerDepartmentTest`*/; -/*!50001 DROP VIEW IF EXISTS `workerDepartmentTest`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerDepartmentTest` AS select `p`.`workerFk` AS `workerFk`,`d`.`id` AS `departmentFk` from ((((`vn`.`person` `p` join `postgresql`.`profile` `pr` on((`pr`.`person_id` = `p`.`id`))) join `postgresql`.`business` `b` on((`b`.`client_id` = `pr`.`profile_id`))) join `postgresql`.`business_labour` `bl` on((`b`.`business_id` = `bl`.`business_id`))) join `vn`.`department` `d` on((`d`.`id` = `bl`.`department_id`))) where (curdate() between `b`.`date_start` and ifnull(`b`.`date_end`,curdate())) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `workerDepartment` AS select `b`.`workerFk` AS `workerFk`,`b`.`departmentFk` AS `departmentFk` from `business` `b` where `b`.`ended` is null and `b`.`started` <= util.VN_CURDATE() or `b`.`ended` >= util.VN_CURDATE() and `b`.`started` <= util.VN_CURDATE() */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -96132,31 +80865,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerLabour` AS select `b`.`business_id` AS `businessFk`,`p`.`id_trabajador` AS `workerFk`,`bl`.`workcenter_id` AS `workCenterFk`,`b`.`date_start` AS `started`,`b`.`date_end` AS `ended`,`d`.`id` AS `departmentFk` from ((((`postgresql`.`person` `p` join `postgresql`.`profile` `pr` on((`pr`.`person_id` = `p`.`person_id`))) join `postgresql`.`business` `b` on((`b`.`client_id` = `pr`.`profile_id`))) join `postgresql`.`business_labour` `bl` on((`b`.`business_id` = `bl`.`business_id`))) join `vn`.`department` `d` on((`d`.`id` = `bl`.`department_id`))) order by `b`.`date_start` desc */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `workerMana__` --- - -/*!50001 DROP TABLE IF EXISTS `workerMana__`*/; -/*!50001 DROP VIEW IF EXISTS `workerMana__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerMana__` AS select `ms`.`Id_Trabajador` AS `workerFk`,`ms`.`size` AS `size`,`ms`.`used` AS `amount`,`ms`.`prices_modifier_rate` AS `pricesModifierRate`,`ms`.`prices_modifier_activated` AS `isPricesModifierActivated`,`ms`.`minRate` AS `minRate`,`ms`.`maxRate` AS `maxRate` from `bs`.`mana_spellers` `ms` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `workerLabour` AS select `b`.`id` AS `businessFk`,`b`.`workerFk` AS `workerFk`,`b`.`workcenterFk` AS `workCenterFk`,`b`.`started` AS `started`,`b`.`ended` AS `ended`,`b`.`departmentFk` AS `departmentFk`,`b`.`payedHolidays` AS `payedHolidays` from `business` `b` order by `b`.`started` desc */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -96170,12 +80884,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerMedia` AS select `p`.`id_trabajador` AS `workerFk`,`m`.`value` AS `mediaValue` from ((((`postgresql`.`person` `p` join `postgresql`.`profile` `po` on((`po`.`person_id` = `p`.`person_id`))) join `postgresql`.`profile_media` `pom` on((`pom`.`profile_id` = `po`.`profile_id`))) join `postgresql`.`media` `m` on((`m`.`media_id` = `pom`.`media_id`))) join `postgresql`.`media_type` `mt` on((`mt`.`media_type_id` = `m`.`media_type_id`))) where (`mt`.`name` = 'movil empresa') */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `workerMedia` AS select `w`.`id` AS `workerFk`,`w`.`phone` AS `mediaValue` from `worker` `w` where `w`.`phone` is not null */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -96189,12 +80903,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerSpeedExpedition` AS select `sv`.`ticketFk` AS `ticketFk`,sum(`sv`.`litros`) AS `litros`,sum(if((`sub`.`started` > (now() + interval -(1) hour)),`sv`.`litros`,0)) AS `literLastHour`,cast(((60 * sum(`sv`.`litros`)) / time_to_sec(timediff(max(`sub`.`finished`),min(`sub`.`started`)))) as decimal(10,1)) AS `litersByMinute`,`sub`.`code` AS `workerCode`,`sub`.`cajas` AS `cajas`,`sub`.`warehouseFk` AS `warehouseFk` from (`saleVolume` `sv` join `expeditionTimeExpended` `sub` on((`sub`.`ticketFk` = `sv`.`ticketFk`))) group by `workerCode` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `workerSpeedExpedition` AS select `sv`.`ticketFk` AS `ticketFk`,sum(`sv`.`litros`) AS `litros`,sum(if(`sub`.`started` > current_timestamp() + interval -1 hour,`sv`.`litros`,0)) AS `literLastHour`,cast(60 * sum(`sv`.`litros`) / time_to_sec(timediff(max(`sub`.`finished`),min(`sub`.`started`))) as decimal(10,1)) AS `litersByMinute`,`sub`.`code` AS `workerCode`,`sub`.`cajas` AS `cajas`,`sub`.`warehouseFk` AS `warehouseFk` from (`saleVolume` `sv` join `expeditionTimeExpended` `sub` on(`sub`.`ticketFk` = `sv`.`ticketFk`)) group by `sub`.`code` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -96208,12 +80922,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerSpeedSaleTracking` AS select `salesPreparedLastHour`.`warehouseFk` AS `warehouseFk`,`salesPreparedLastHour`.`accion` AS `accion`,`salesPreparedLastHour`.`workerCode` AS `workerCode`,sum(`salesPreparedLastHour`.`litros`) AS `sumaLitros`,min(`salesPreparedLastHour`.`created`) AS `started`,max(`salesPreparedLastHour`.`created`) AS `finished`,sum(if((`salesPreparedLastHour`.`created` >= (now() + interval -(1) hour)),`salesPreparedLastHour`.`litros`,0)) AS `sumaLitrosLastHour`,cast(((60 * sum(`salesPreparedLastHour`.`litros`)) / time_to_sec(timediff(max(`salesPreparedLastHour`.`created`),min(`salesPreparedLastHour`.`created`)))) as decimal(10,1)) AS `litersByMinute`,`salesPreparedLastHour`.`departmentName` AS `departmentName` from `vn`.`salesPreparedLastHour` group by `salesPreparedLastHour`.`warehouseFk`,`salesPreparedLastHour`.`accion`,`salesPreparedLastHour`.`workerCode` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `workerSpeedSaleTracking` AS select `salesPreparedLastHour`.`warehouseFk` AS `warehouseFk`,`salesPreparedLastHour`.`accion` AS `accion`,`salesPreparedLastHour`.`workerCode` AS `workerCode`,sum(`salesPreparedLastHour`.`litros`) AS `sumaLitros`,min(`salesPreparedLastHour`.`created`) AS `started`,max(`salesPreparedLastHour`.`created`) AS `finished`,sum(if(`salesPreparedLastHour`.`created` >= current_timestamp() + interval -1 hour,`salesPreparedLastHour`.`litros`,0)) AS `sumaLitrosLastHour`,cast(60 * sum(`salesPreparedLastHour`.`litros`) / time_to_sec(timediff(max(`salesPreparedLastHour`.`created`),min(`salesPreparedLastHour`.`created`))) as decimal(10,1)) AS `litersByMinute`,`salesPreparedLastHour`.`departmentName` AS `departmentName` from `vn`.`salesPreparedLastHour` group by `salesPreparedLastHour`.`warehouseFk`,`salesPreparedLastHour`.`accion`,`salesPreparedLastHour`.`workerCode` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -96229,10 +80943,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerTeamCollegues` AS select distinct `w`.`workerFk` AS `workerFk`,`t`.`workerFk` AS `collegueFk` from (`workerTeam` `w` join `workerTeam` `t` on((`w`.`team` = `t`.`team`))) */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `workerTeamCollegues` AS select distinct `w`.`workerFk` AS `workerFk`,`t`.`workerFk` AS `collegueFk` from (`workerTeam` `w` join `workerTeam` `t` on(`w`.`team` = `t`.`team`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -96248,48 +80962,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerTimeControlUserInfo` AS select `u`.`id` AS `userFk`,`w`.`firstName` AS `name`,`w`.`lastName` AS `surname`,`u`.`name` AS `user`,`u`.`password` AS `password`,`u`.`bcryptPassword` AS `bcryptPassword`,`wd`.`departmentFk` AS `departmentFk`,left(`c`.`fi`,8) AS `dni` from (((`account`.`user` `u` join `vn`.`worker` `w` on((`w`.`userFk` = `u`.`id`))) join `vn`.`client` `c` on((`c`.`id` = `u`.`id`))) left join `vn`.`workerDepartment` `wd` on((`wd`.`workerFk` = `w`.`id`))) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `workerTimeControlWorking` --- - -/*!50001 DROP TABLE IF EXISTS `workerTimeControlWorking`*/; -/*!50001 DROP VIEW IF EXISTS `workerTimeControlWorking`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerTimeControlWorking` AS select `wtc`.`userFk` AS `userFk`,`wtc`.`timed` AS `timed`,`w`.`firstName` AS `name`,`w`.`lastName` AS `surname`,`pm`.`mediaValue` AS `phone`,`wm`.`mediaValue` AS `workerPhone`,`d`.`name` AS `department`,`wc`.`name` AS `workerCenter`,count(`wtc`.`order`) AS `maxOrder` from (((((((`vn`.`workerTimeControl` `wtc` join `vn`.`worker` `w` on((`w`.`userFk` = `wtc`.`userFk`))) left join `vn`.`personMedia` `pm` on((`pm`.`workerFk` = `w`.`id`))) left join `vn`.`workerMedia` `wm` on((`wm`.`workerFk` = `w`.`id`))) left join `vn`.`workerDepartment` `wd` on((`wd`.`workerFk` = `w`.`id`))) left join `vn`.`department` `d` on((`d`.`id` = `wd`.`departmentFk`))) left join `vn`.`workerLabour` `wl` on((`wl`.`businessFk` = (select `wl2`.`businessFk` from `vn`.`workerLabour` `wl2` where (`wl2`.`workerFk` = `w`.`id`) order by `wl2`.`started` desc limit 1)))) left join `vn`.`workCenter` `wc` on((`wc`.`id` = `wl`.`workCenterFk`))) where (cast(`wtc`.`timed` as date) = curdate()) group by `wtc`.`userFk` having ((`maxOrder` % 2) = 1) order by `wtc`.`timed` desc */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `workerTimeControl_Journey__` --- - -/*!50001 DROP TABLE IF EXISTS `workerTimeControl_Journey__`*/; -/*!50001 DROP VIEW IF EXISTS `workerTimeControl_Journey__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerTimeControl_Journey__` AS select `wtc`.`userFk` AS `userFk`,cast(`wtc`.`timed` as date) AS `dated`,cast(sum((if((`wtc`.`order` % 2),-(1),1) * (hour(`wtc`.`timed`) + (minute(`wtc`.`timed`) / 60)))) as decimal(10,2)) AS `Journey`,dayname(`wtc`.`timed`) AS `dayName`,`w`.`lastName` AS `name`,`w`.`firstName` AS `firstname` from (`workerTimeControl` `wtc` join `worker` `w` on((`w`.`userFk` = `wtc`.`userFk`))) group by cast(`wtc`.`timed` as date),`wtc`.`userFk` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `workerTimeControlUserInfo` AS select `u`.`id` AS `userFk`,`w`.`firstName` AS `name`,`w`.`lastName` AS `surname`,`u`.`name` AS `user`,`u`.`password` AS `password`,`u`.`bcryptPassword` AS `bcryptPassword`,`wd`.`departmentFk` AS `departmentFk`,left(`c`.`fi`,8) AS `dni` from (((`account`.`user` `u` join `vn`.`worker` `w` on(`w`.`userFk` = `u`.`id`)) join `vn`.`client` `c` on(`c`.`id` = `u`.`id`)) left join `vn`.`workerDepartment` `wd` on(`wd`.`workerFk` = `w`.`id`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -96303,31 +80979,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerTimeJourneyNG` AS select `wtc`.`userFk` AS `userFk`,cast(`wtc`.`timed` as date) AS `dated`,(if((`wtc`.`order` % 2),-(1),1) * (hour(`wtc`.`timed`) + (minute(`wtc`.`timed`) / 60))) AS `Journey`,dayname(`wtc`.`timed`) AS `dayName`,`w`.`lastName` AS `name`,`w`.`firstName` AS `firstname` from (`workerTimeControl` `wtc` join `worker` `w` on((`w`.`userFk` = `wtc`.`userFk`))) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `workerWithoutDevice__` --- - -/*!50001 DROP TABLE IF EXISTS `workerWithoutDevice__`*/; -/*!50001 DROP VIEW IF EXISTS `workerWithoutDevice__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerWithoutDevice__` AS select `c`.`workerFk` AS `workerFk`,`cl`.`name` AS `Trabajador`,count(distinct `c`.`id`) AS `Colecciones` from ((`collection` `c` join `client` `cl` on((`cl`.`id` = `c`.`workerFk`))) left join `deviceProductionUser` `dpu` on((`dpu`.`userFk` = `c`.`workerFk`))) where ((`c`.`created` > curdate()) and isnull(`dpu`.`userFk`)) group by `c`.`workerFk` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `workerTimeJourneyNG` AS select `wtc`.`userFk` AS `userFk`,cast(`wtc`.`timed` as date) AS `dated`,if(`wtc`.`order` MOD 2,-1,1) * (hour(`wtc`.`timed`) + minute(`wtc`.`timed`) / 60) AS `Journey`,dayname(`wtc`.`timed`) AS `dayName`,`w`.`lastName` AS `name`,`w`.`firstName` AS `firstname` from (`workerTimeControl` `wtc` join `worker` `w` on(`w`.`userFk` = `wtc`.`userFk`)) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -96343,10 +81000,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `workerWithoutTractor` AS select `c`.`workerFk` AS `workerFk`,`cl`.`name` AS `Trabajador`,count(distinct `c`.`id`) AS `Colecciones`,max(`c`.`created`) AS `created` from ((`collection` `c` join `client` `cl` on((`cl`.`id` = `c`.`workerFk`))) left join `machineWorker` `mw` on(((`mw`.`workerFk` = `c`.`workerFk`) and (`mw`.`inTimed` > curdate())))) where ((`c`.`created` > curdate()) and isnull(`mw`.`workerFk`)) group by `c`.`workerFk` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `workerWithoutTractor` AS select `c`.`workerFk` AS `workerFk`,`cl`.`name` AS `Trabajador`,count(distinct `c`.`id`) AS `Colecciones`,max(`c`.`created`) AS `created` from ((`collection` `c` join `client` `cl` on(`cl`.`id` = `c`.`workerFk`)) left join `machineWorker` `mw` on(`mw`.`workerFk` = `c`.`workerFk` and `mw`.`inTimed` > `util`.`VN_CURDATE`())) where `c`.`created` > `util`.`VN_CURDATE`() and `mw`.`workerFk` is null group by `c`.`workerFk` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -96362,29 +81019,10 @@ USE `vn`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; +/*!50001 SET collation_connection = utf8mb4_unicode_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `zoneEstimatedDelivery` AS select `t`.`zoneFk` AS `zoneFk`,cast((curdate() + interval ((hour(ifnull(`zc`.`hour`,`z`.`hour`)) * 60) + minute(ifnull(`zc`.`hour`,`z`.`hour`))) minute) as time) AS `hourTheoretical`,cast(sum(`sv`.`volume`) as decimal(5,1)) AS `totalVolume`,cast(sum(if((`s`.`alertLevel` < 2),`sv`.`volume`,0)) as decimal(5,1)) AS `remainingVolume`,greatest(ifnull(`lhp`.`m3`,0),ifnull(`dl`.`minSpeed`,0)) AS `speed`,cast((`zc`.`hour` + interval ((-(sum(if((`s`.`alertLevel` < 2),`sv`.`volume`,0))) * 60) / greatest(ifnull(`lhp`.`m3`,0),ifnull(`dl`.`minSpeed`,0))) minute) as time) AS `hourEffective`,floor(((-(sum(if((`s`.`alertLevel` < 2),`sv`.`volume`,0))) * 60) / greatest(ifnull(`lhp`.`m3`,0),ifnull(`dl`.`minSpeed`,0)))) AS `minutesLess`,cast((`zc`.`hour` + interval ((-(sum(if((`s`.`alertLevel` < 2),`sv`.`volume`,0))) * 60) / greatest(ifnull(`lhp`.`m3`,0),ifnull(`dl`.`minSpeed`,0))) minute) as time) AS `etc` from (((((((((`vn`.`ticket` `t` join `vn`.`ticketStateToday` `tst` on((`tst`.`ticket` = `t`.`id`))) join `vn`.`state` `s` on((`s`.`id` = `tst`.`state`))) join `vn`.`saleVolume` `sv` on((`sv`.`ticketFk` = `t`.`id`))) left join `vn`.`lastHourProduction` `lhp` on((`lhp`.`warehouseFk` = `t`.`warehouseFk`))) join `vn`.`warehouse` `w` on((`w`.`id` = `t`.`warehouseFk`))) join `vn`.`warehouseAlias` `wa` on((`wa`.`id` = `w`.`aliasFk`))) join `vn`.`zone` `z` on((`z`.`id` = `t`.`zoneFk`))) left join `vn`.`zoneClosure` `zc` on(((`zc`.`zoneFk` = `t`.`zoneFk`) and (`zc`.`dated` = curdate())))) left join `cache`.`departure_limit` `dl` on(((`dl`.`warehouse_id` = `t`.`warehouseFk`) and (`dl`.`fecha` = curdate())))) where (`w`.`hasProduction` and (cast(`t`.`shipped` as date) = curdate())) group by `t`.`zoneFk` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - --- --- Final view structure for view `zone_ETD__` --- - -/*!50001 DROP TABLE IF EXISTS `zone_ETD__`*/; -/*!50001 DROP VIEW IF EXISTS `zone_ETD__`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `zone_ETD__` AS select `zed`.`zoneFk` AS `zoneFk`,`zed`.`hourTheoretical` AS `HoraTeórica`,`zed`.`totalVolume` AS `volumenTotal`,`zed`.`remainingVolume` AS `volumenPendiente`,`zed`.`speed` AS `velocidad`,`zed`.`hourEffective` AS `HoraPráctica`,`zed`.`minutesLess` AS `minutesLess`,`zed`.`etc` AS `etc` from `vn`.`zoneEstimatedDelivery` `zed` */; +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `zoneEstimatedDelivery` AS select `t`.`zoneFk` AS `zoneFk`,cast(`util`.`VN_CURDATE`() + interval hour(ifnull(`zc`.`hour`,`z`.`hour`)) * 60 + minute(ifnull(`zc`.`hour`,`z`.`hour`)) minute as time) AS `hourTheoretical`,cast(sum(`sv`.`volume`) as decimal(5,1)) AS `totalVolume`,cast(sum(if(`s`.`alertLevel` < 2,`sv`.`volume`,0)) as decimal(5,1)) AS `remainingVolume`,greatest(ifnull(`lhp`.`m3`,0),ifnull(`dl`.`minSpeed`,0)) AS `speed`,cast(`zc`.`hour` + interval -sum(if(`s`.`alertLevel` < 2,`sv`.`volume`,0)) * 60 / greatest(ifnull(`lhp`.`m3`,0),ifnull(`dl`.`minSpeed`,0)) minute as time) AS `hourEffective`,floor(-sum(if(`s`.`alertLevel` < 2,`sv`.`volume`,0)) * 60 / greatest(ifnull(`lhp`.`m3`,0),ifnull(`dl`.`minSpeed`,0))) AS `minutesLess`,cast(`zc`.`hour` + interval -sum(if(`s`.`alertLevel` < 2,`sv`.`volume`,0)) * 60 / greatest(ifnull(`lhp`.`m3`,0),ifnull(`dl`.`minSpeed`,0)) minute as time) AS `etc` from (((((((((`vn`.`ticket` `t` join `vn`.`ticketStateToday` `tst` on(`tst`.`ticket` = `t`.`id`)) join `vn`.`state` `s` on(`s`.`id` = `tst`.`state`)) join `vn`.`saleVolume` `sv` on(`sv`.`ticketFk` = `t`.`id`)) left join `vn`.`lastHourProduction` `lhp` on(`lhp`.`warehouseFk` = `t`.`warehouseFk`)) join `vn`.`warehouse` `w` on(`w`.`id` = `t`.`warehouseFk`)) join `vn`.`warehouseAlias` `wa` on(`wa`.`id` = `w`.`aliasFk`)) join `vn`.`zone` `z` on(`z`.`id` = `t`.`zoneFk`)) left join `vn`.`zoneClosure` `zc` on(`zc`.`zoneFk` = `t`.`zoneFk` and `zc`.`dated` = `util`.`VN_CURDATE`())) left join `cache`.`departure_limit` `dl` on(`dl`.`warehouse_id` = `t`.`warehouseFk` and `dl`.`fecha` = `util`.`VN_CURDATE`())) where `w`.`hasProduction` <> 0 and cast(`t`.`shipped` as date) = `util`.`VN_CURDATE`() group by `t`.`zoneFk` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -96404,4 +81042,5 @@ USE `vncontrol`; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-01-13 7:46:58 +-- Dump completed on 2022-09-16 10:44:31 + diff --git a/db/export-data.sh b/db/export-data.sh index 135047f04..bbbeb7152 100755 --- a/db/export-data.sh +++ b/db/export-data.sh @@ -14,6 +14,8 @@ echo "" > "$DUMPED_FILE" TABLES=( util config + version + versionLog ) dump_tables ${TABLES[@]} @@ -63,6 +65,7 @@ TABLES=( ticketUpdateAction time volumeConfig + workCenter ) dump_tables ${TABLES[@]} @@ -74,10 +77,20 @@ dump_tables ${TABLES[@]} TABLES=( hedera + browser imageCollection + imageCollectionSize + language + link + location + menu + message + metatag + newsTag + restPriv + social tpvError tpvResponse - imageCollectionSize ) dump_tables ${TABLES[@]} @@ -89,7 +102,6 @@ TABLES=( media_type professional_category profile_type - workcenter ) dump_tables ${TABLES[@]} @@ -99,4 +111,4 @@ TABLES=( TiposTransacciones TiposRetencion ) -dump_tables ${TABLES[@]} \ No newline at end of file +dump_tables ${TABLES[@]} diff --git a/db/export-structure.sh b/db/export-structure.sh index c5c65ef34..88508f098 100755 --- a/db/export-structure.sh +++ b/db/export-structure.sh @@ -25,7 +25,6 @@ IGNORETABLES=( --ignore-table=bs.productionIndicators --ignore-table=bs.VentasPorCliente --ignore-table=bs.v_ventas - --ignore-table=edi.supplyOffer --ignore-table=postgresql.currentWorkersStats --ignore-table=vn.accounting__ --ignore-table=vn.agencyModeZone @@ -50,6 +49,7 @@ IGNORETABLES=( --ignore-table=vn.grantGroup --ignore-table=vn.invoiceCorrection__ --ignore-table=vn.itemTaxCountrySpain + --ignore-table=vn.itemShelvingPlacementSupplyStock__ --ignore-table=vn.itemFreeNumber__ --ignore-table=vn.mail__ --ignore-table=vn.manaSpellers @@ -60,7 +60,6 @@ IGNORETABLES=( --ignore-table=vn.plantpassportAuthority__ --ignore-table=vn.preparationException --ignore-table=vn.priceFixed__ - --ignore-table=vn.printer --ignore-table=vn.printingQueue --ignore-table=vn.printServerQueue__ --ignore-table=vn.promissoryNote @@ -97,5 +96,12 @@ mysqldump \ --databases \ ${SCHEMAS[@]} \ ${IGNORETABLES[@]} \ + | sed 's/\bCURDATE\b/util.VN_CURDATE/ig'\ + | sed 's/\bCURTIME\b/util.VN_CURTIME/ig' \ + | sed 's/\bNOW\b/util.VN_NOW/ig' \ + | sed 's/\bCURRENT_DATE\b/util.VN_CURDATE/ig' \ + | sed 's/\bCURRENT_TIME\b/util.VN_CURTIME/ig' \ + | sed 's/\bLOCALTIME\b/util.VN_NOW/ig' \ + | sed 's/\bLOCALTIMESTAMP\b/util.VN_NOW/ig' \ | sed 's/ AUTO_INCREMENT=[0-9]* //g' \ - > dump/structure.sql + > dump/structure.sql \ No newline at end of file diff --git a/db/tests/vn/orderConfirmWithUser.spec.js b/db/tests/vn/orderConfirmWithUser.spec.js deleted file mode 100644 index f2a3d0c4e..000000000 --- a/db/tests/vn/orderConfirmWithUser.spec.js +++ /dev/null @@ -1,37 +0,0 @@ -const app = require('vn-loopback/server/server'); -const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; - -// #1885 -xdescribe('order_confirmWithUser()', () => { - it('should confirm an order', async() => { - let stmts = []; - let stmt; - - stmts.push('START TRANSACTION'); - - let params = { - orderFk: 10, - userId: 9 - }; - // problema: la funcion order_confirmWithUser tiene una transacción, por tanto esta nunca hace rollback - stmt = new ParameterizedSQL('CALL hedera.order_confirmWithUser(?, ?)', [ - params.orderFk, - params.userId - ]); - stmts.push(stmt); - - stmt = new ParameterizedSQL('SELECT confirmed FROM hedera.order WHERE id = ?', [ - params.orderFk - ]); - let orderIndex = stmts.push(stmt) - 1; - - stmts.push('ROLLBACK'); - - let sql = ParameterizedSQL.join(stmts, ';'); - let result = await app.models.Ticket.rawStmt(sql); - - savedDescription = result[orderIndex][0].confirmed; - - expect(savedDescription).toBeTruthy(); - }); -}); diff --git a/db/tests/vn/workerTimeControlCheck.spec.js b/db/tests/vn/workerTimeControlCheck.spec.js index 6838665f1..9140628e6 100644 --- a/db/tests/vn/workerTimeControlCheck.spec.js +++ b/db/tests/vn/workerTimeControlCheck.spec.js @@ -239,7 +239,7 @@ xdescribe('worker workerTimeControl_check()', () => { stmts.push('START TRANSACTION'); - stmt = new ParameterizedSQL(`INSERT INTO postgresql.calendar_employee(business_id,calendar_state_id,date) + stmt = new ParameterizedSQL(`INSERT INTO postgresql.calendar_employee(businessFk,calendar_state_id,date) VALUES (?,1,CURDATE())`, [ workerId @@ -282,7 +282,7 @@ xdescribe('worker workerTimeControl_check()', () => { stmts.push('START TRANSACTION'); - stmt = new ParameterizedSQL(`UPDATE postgresql.business SET date_end=DATE_ADD(CURDATE(), INTERVAL -1 DAY) WHERE business_id=?`, [ + stmt = new ParameterizedSQL(`UPDATE vn.business SET ended = DATE_ADD(CURDATE(), INTERVAL -1 DAY) WHERE id = ?`, [ workerId ]); stmts.push(stmt); diff --git a/db/tests/vn/zone_getLanded.spec.js b/db/tests/vn/zone_getLanded.spec.js index 6673879e4..5f82156d3 100644 --- a/db/tests/vn/zone_getLanded.spec.js +++ b/db/tests/vn/zone_getLanded.spec.js @@ -5,8 +5,9 @@ describe('zone zone_getLanded()', () => { it(`should return data for a shipped in the past`, async() => { let stmts = []; let stmt; - stmts.push('START TRANSACTION'); + const date = new Date(); + date.setHours(0, 0, 0, 0); let params = { addressFk: 121, @@ -14,7 +15,8 @@ describe('zone zone_getLanded()', () => { warehouseFk: 1, showExpiredZones: true}; - stmt = new ParameterizedSQL('CALL zone_getLanded(DATE_ADD(CURDATE(), INTERVAL -1 DAY), ?, ?, ?, ?)', [ + stmt = new ParameterizedSQL('CALL zone_getLanded(DATE_ADD(?, INTERVAL -1 DAY), ?, ?, ?, ?)', [ + date, params.addressFk, params.agencyModeFk, params.warehouseFk, @@ -38,6 +40,8 @@ describe('zone zone_getLanded()', () => { it(`should return data for a shipped tomorrow`, async() => { let stmts = []; let stmt; + const date = new Date(); + date.setHours(0, 0, 0, 0); stmts.push('START TRANSACTION'); @@ -47,7 +51,8 @@ describe('zone zone_getLanded()', () => { warehouseFk: 1, showExpiredZones: false}; - stmt = new ParameterizedSQL('CALL zone_getLanded(DATE_ADD(CURDATE(), INTERVAL +2 DAY), ?, ?, ?, ?)', [ + stmt = new ParameterizedSQL('CALL zone_getLanded(DATE_ADD(?, INTERVAL +2 DAY), ?, ?, ?, ?)', [ + date, params.addressFk, params.agencyModeFk, params.warehouseFk, diff --git a/docker-compose.yml b/docker-compose.yml index 1d80a4b62..4fc5dc811 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -32,6 +32,7 @@ services: - /mnt/appdata/pdfs:/var/lib/salix/pdfs - /mnt/appdata/dms:/var/lib/salix/dms - /mnt/appdata/image:/var/lib/salix/image + - /mnt/appdata/vn-access:/var/lib/salix/vn-access deploy: replicas: ${BACK_REPLICAS:?} placement: diff --git a/e2e/helpers/extensions.js b/e2e/helpers/extensions.js index 789c800b5..7bf56e2c8 100644 --- a/e2e/helpers/extensions.js +++ b/e2e/helpers/extensions.js @@ -181,12 +181,12 @@ let actions = { }, reloadSection: async function(state) { - await this.click('vn-icon[icon="preview"]'); + await this.click('vn-icon[icon="launch"]'); await this.accessToSection(state); }, forceReloadSection: async function(sectionRoute) { - await this.waitToClick('vn-icon[icon="preview"]'); + await this.waitToClick('vn-icon[icon="launch"]'); await this.waitToClick('button[response="accept"]'); await this.waitForSelector('vn-card.summary'); await this.waitToClick(`vn-left-menu li > a[ui-sref="${sectionRoute}"]`); diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js index f0a5c37b5..f0d726ed6 100644 --- a/e2e/helpers/selectors.js +++ b/e2e/helpers/selectors.js @@ -51,13 +51,12 @@ export default { accountDescriptor: { menuButton: 'vn-user-descriptor vn-icon-button[icon="more_vert"]', deleteAccount: '.vn-menu [name="deleteUser"]', - changeRole: '.vn-menu [name="changeRole"]', setPassword: '.vn-menu [name="setPassword"]', activateAccount: '.vn-menu [name="enableAccount"]', activateUser: '.vn-menu [name="activateUser"]', + deactivateUser: '.vn-menu [name="deactivateUser"]', newPassword: 'vn-textfield[ng-model="$ctrl.newPassword"]', repeatPassword: 'vn-textfield[ng-model="$ctrl.repeatPassword"]', - newRole: 'vn-autocomplete[ng-model="$ctrl.newRole"]', activeAccountIcon: 'vn-icon[icon="contact_mail"]', activeUserIcon: 'vn-icon[icon="icon-disabled"]', acceptButton: 'button[response="accept"]', @@ -101,6 +100,52 @@ export default { email: 'vn-user-mail-forwarding vn-textfield[ng-model="data.forwardTo"]', save: 'vn-user-mail-forwarding vn-submit' }, + accountAcl: { + addAcl: 'vn-acl-index button vn-icon[icon="add"]', + thirdAcl: 'vn-acl-index vn-list> a:nth-child(3)', + deleteThirdAcl: 'vn-acl-index vn-list > a:nth-child(3) > vn-item-section > vn-icon-button[icon="delete"]', + role: 'vn-acl-create vn-autocomplete[ng-model="$ctrl.acl.principalId"]', + model: 'vn-acl-create vn-autocomplete[ng-model="$ctrl.acl.model"]', + property: 'vn-acl-create vn-autocomplete[ng-model="$ctrl.acl.property"]', + accessType: 'vn-acl-create vn-autocomplete[ng-model="$ctrl.acl.accessType"]', + permission: 'vn-acl-create vn-autocomplete[ng-model="$ctrl.acl.permission"]', + save: 'vn-acl-create vn-submit' + }, + accountConnections: { + firstConnection: 'vn-connections vn-list > a:nth-child(1)', + deleteFirstConnection: 'vn-connections vn-list > a:nth-child(1) > vn-item-section > vn-icon-button[icon="exit_to_app"]' + }, + accountAccounts: { + syncRoles: 'vn-account-accounts vn-button[label="Synchronize roles"]', + syncUser: 'vn-account-accounts vn-button[label="Synchronize user"]', + syncAll: 'vn-account-accounts vn-button[label="Synchronize all"]', + syncUserName: 'vn-textfield[ng-model="$ctrl.syncUser"]', + syncUserPassword: 'vn-textfield[ng-model="$ctrl.syncPassword"]', + buttonAccept: 'button[response="accept"]' + }, + accountLdap: { + checkEnable: 'vn-account-ldap vn-check[ng-model="watcher.hasData"]', + server: 'vn-account-ldap vn-textfield[ng-model="$ctrl.config.server"]', + rdn: 'vn-account-ldap vn-textfield[ng-model="$ctrl.config.rdn"]', + password: 'vn-account-ldap vn-textfield[ng-model="$ctrl.config.password"]', + userDn: 'vn-account-ldap vn-textfield[ng-model="$ctrl.config.userDn"]', + groupDn: 'vn-account-ldap vn-textfield[ng-model="$ctrl.config.groupDn"]', + save: 'vn-account-ldap vn-submit' + }, + accountSamba: { + checkEnable: 'vn-account-samba vn-check[ng-model="watcher.hasData"]', + adDomain: 'vn-account-samba vn-textfield[ng-model="$ctrl.config.adDomain"]', + adController: 'vn-account-samba vn-textfield[ng-model="$ctrl.config.adController"]', + adUser: 'vn-account-samba vn-textfield[ng-model="$ctrl.config.adUser"]', + adPassword: 'vn-account-samba vn-textfield[ng-model="$ctrl.config.adPassword"]', + verifyCert: 'vn-account-samba vn-check[ng-model="$ctrl.config.verifyCert"]', + save: 'vn-account-samba vn-submit' + }, + accountPrivileges: { + checkHasGrant: 'vn-user-privileges vn-check[ng-model="$ctrl.user.hasGrant"]', + role: 'vn-user-privileges vn-autocomplete[ng-model="$ctrl.user.roleFk"]', + save: 'vn-user-privileges vn-submit' + }, clientsIndex: { createClientButton: `vn-float-button` }, @@ -234,6 +279,7 @@ export default { clientWebAccess: { enableWebAccessCheckbox: 'vn-check[label="Enable web access"]', userName: 'vn-client-web-access vn-textfield[ng-model="$ctrl.account.name"]', + email: 'vn-client-web-access vn-textfield[ng-model="$ctrl.account.email"]', saveButton: 'button[type=submit]' }, clientNotes: { @@ -305,12 +351,12 @@ export default { anyCreditInsuranceLine: 'vn-client-credit-insurance-insurance-index vn-tbody > vn-tr', }, clientDefaulter: { - anyClient: 'vn-client-defaulter-index vn-tbody > vn-tr', - firstClientName: 'vn-client-defaulter-index vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(2) > span', - firstSalesPersonName: 'vn-client-defaulter-index vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(3) > span', - firstObservation: 'vn-client-defaulter-index vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(6) > vn-textarea[ng-model="defaulter.observation"]', - allDefaulterCheckbox: 'vn-client-defaulter-index vn-thead vn-multi-check', - addObservationButton: 'vn-client-defaulter-index vn-button[icon="icon-notes"]', + anyClient: 'vn-client-defaulter tbody > tr', + firstClientName: 'vn-client-defaulter tbody > tr:nth-child(1) > td:nth-child(2) > span', + firstSalesPersonName: 'vn-client-defaulter tbody > tr:nth-child(1) > td:nth-child(3) > span', + firstObservation: 'vn-client-defaulter tbody > tr:nth-child(1) > td:nth-child(6) > vn-textarea[ng-model="defaulter.observation"]', + allDefaulterCheckbox: 'vn-client-defaulter thead vn-multi-check', + addObservationButton: 'vn-client-defaulter vn-button[icon="icon-notes"]', observation: '.vn-dialog.shown vn-textarea[ng-model="$ctrl.defaulter.observation"]', saveButton: 'button[response="accept"]' }, @@ -321,6 +367,12 @@ export default { deleteFirstPhone: 'vn-client-contact vn-icon[icon="delete"]', saveButton: 'button[type=submit]' }, + clientUnpaid: { + hasDataCheckBox: 'vn-client-unpaid vn-check[ng-model="watcher.hasData"]', + dated: 'vn-client-unpaid vn-date-picker[ng-model="$ctrl.clientUnpaid.dated"]', + amount: 'vn-client-unpaid vn-input-number[ng-model="$ctrl.clientUnpaid.amount"]', + saveButton: 'vn-submit[label="Save"]' + }, itemsIndex: { createItemButton: `vn-float-button`, firstSearchResult: 'vn-item-index tbody tr:nth-child(1)', @@ -343,19 +395,28 @@ export default { originCheckbox: '.vn-popover.shown vn-horizontal:nth-child(3) > vn-check[label="Origin"]', buyerCheckbox: '.vn-popover.shown vn-horizontal:nth-child(3) > vn-check[label="Buyer"]', densityCheckbox: '.vn-popover.shown vn-horizontal:nth-child(3) > vn-check[label="Density"]', + openAdvancedSearchButton: 'vn-searchbar .append vn-icon[icon="arrow_drop_down"]', + advancedSearchItemType: 'vn-item-search-panel vn-autocomplete[ng-model="filter.typeFk"]', + advancedSearchButton: 'vn-item-search-panel button[type=submit]', + advancedSmartTableButton: 'vn-item-index vn-button[icon="search"]', + advancedSmartTableGrouping: 'vn-item-index vn-textfield[name=grouping]', + weightByPieceCheckbox: '.vn-popover.shown vn-horizontal:nth-child(3) > vn-check[label="Weight/Piece"]', saveFieldsButton: '.vn-popover.shown vn-button[label="Save"] > button' }, itemFixedPrice: { - add: 'vn-fixed-price vn-icon[icon="add_circle"]', - fourthFixedPrice: 'vn-fixed-price vn-tr:nth-child(4)', - fourthItemID: 'vn-fixed-price vn-tr:nth-child(4) vn-autocomplete[ng-model="price.itemFk"]', - fourthWarehouse: 'vn-fixed-price vn-tr:nth-child(4) vn-autocomplete[ng-model="price.warehouseFk"]', - fourthPPU: 'vn-fixed-price vn-tr:nth-child(4) > vn-td-editable:nth-child(4)', - fourthPPP: 'vn-fixed-price vn-tr:nth-child(4) > vn-td-editable:nth-child(5)', - fourthMinPrice: 'vn-fixed-price vn-tr:nth-child(4) > vn-td-editable:nth-child(6)', - fourthStarted: 'vn-fixed-price vn-tr:nth-child(4) vn-date-picker[ng-model="price.started"]', - fourthEnded: 'vn-fixed-price vn-tr:nth-child(4) vn-date-picker[ng-model="price.ended"]', - fourthDeleteIcon: 'vn-fixed-price vn-tr:nth-child(4) > vn-td:nth-child(9) > vn-icon-button[icon="delete"]' + add: 'vn-fixed-price vn-icon-button[icon="add_circle"]', + firstItemID: 'vn-fixed-price tr:nth-child(2) vn-autocomplete[ng-model="price.itemFk"]', + fourthFixedPrice: 'vn-fixed-price tr:nth-child(5)', + fourthItemID: 'vn-fixed-price tr:nth-child(5) vn-autocomplete[ng-model="price.itemFk"]', + fourthWarehouse: 'vn-fixed-price tr:nth-child(5) vn-autocomplete[ng-model="price.warehouseFk"]', + fourthPPU: 'vn-fixed-price tr:nth-child(5) > td:nth-child(4)', + fourthPPP: 'vn-fixed-price tr:nth-child(5) > td:nth-child(5)', + fourthHasMinPrice: 'vn-fixed-price tr:nth-child(5) > td:nth-child(6) > vn-check[ng-model="price.hasMinPrice"]', + fourthMinPrice: 'vn-fixed-price tr:nth-child(5) > td:nth-child(6) > vn-input-number[ng-model="price.minPrice"]', + fourthStarted: 'vn-fixed-price tr:nth-child(5) vn-date-picker[ng-model="price.started"]', + fourthEnded: 'vn-fixed-price tr:nth-child(5) vn-date-picker[ng-model="price.ended"]', + fourthDeleteIcon: 'vn-fixed-price tr:nth-child(5) > td:nth-child(9) > vn-icon-button[icon="delete"]', + orderColumnId: 'vn-fixed-price th[field="itemFk"]' }, itemCreateView: { temporalName: 'vn-item-create vn-textfield[ng-model="$ctrl.item.provisionalName"]', @@ -391,7 +452,6 @@ export default { name: 'vn-item-basic-data vn-textfield[ng-model="$ctrl.item.name"]', relevancy: 'vn-item-basic-data vn-input-number[ng-model="$ctrl.item.relevancy"]', origin: 'vn-autocomplete[ng-model="$ctrl.item.originFk"]', - compression: 'vn-item-basic-data vn-input-number[ng-model="$ctrl.item.compression"]', generic: 'vn-autocomplete[ng-model="$ctrl.item.genericFk"]', isFragile: 'vn-check[ng-model="$ctrl.item.isFragile"]', longName: 'vn-textfield[ng-model="$ctrl.item.longName"]', @@ -495,7 +555,8 @@ export default { searchResultDate: 'vn-ticket-summary [label=Landed] span', topbarSearch: 'vn-searchbar', moreMenu: 'vn-ticket-index vn-icon-button[icon=more_vert]', - sixthWeeklyTicket: 'vn-ticket-weekly-index vn-table vn-tr:nth-child(6)', + fourthWeeklyTicket: 'vn-ticket-weekly-index vn-table vn-tbody vn-tr:nth-child(4)', + fiveWeeklyTicket: 'vn-ticket-weekly-index vn-table vn-tbody vn-tr:nth-child(5)', weeklyTicket: 'vn-ticket-weekly-index vn-table > div > vn-tbody > vn-tr', firstWeeklyTicketDeleteIcon: 'vn-ticket-weekly-index vn-tr:nth-child(1) vn-icon-button[icon="delete"]', firstWeeklyTicketAgency: 'vn-ticket-weekly-index vn-tr:nth-child(1) [ng-model="weekly.agencyModeFk"]', @@ -515,8 +576,6 @@ export default { isDeletedIcon: 'vn-ticket-descriptor vn-icon[icon="icon-deletedTicket"]', goBackToModuleIndexButton: 'vn-ticket-descriptor a[ui-sref="ticket.index"]', moreMenu: 'vn-ticket-descriptor vn-ticket-descriptor-menu > vn-icon-button[icon=more_vert]', - moreMenuAddStowaway: '.vn-menu [name="addStowaway"]', - moreMenuDeleteStowawayButton: '.vn-menu [name="deleteStowaway"]', moreMenuAddToTurn: '.vn-menu [name="addTurn"]', moreMenuDeleteTicket: '.vn-menu [name="deleteTicket"]', moreMenuRestoreTicket: '.vn-menu [name="restoreTicket"]', @@ -529,8 +588,6 @@ export default { sendSMSbutton: 'button[response="accept"]', changeShippedHourDialog: '.vn-dialog.shown', changeShippedHour: '.vn-dialog.shown vn-input-time[ng-model="$ctrl.newShipped"]', - addStowawayDialogFirstTicket: '.vn-dialog.shown vn-table vn-tbody vn-tr', - shipButton: 'vn-ticket-descriptor vn-icon[icon="icon-stowaway"]', thursdayButton: '.vn-popup.shown vn-tool-bar > vn-button:nth-child(4)', saturdayButton: '.vn-popup.shown vn-tool-bar > vn-button:nth-child(6)', acceptDialog: '.vn-dialog.shown button[response="accept"]', @@ -538,7 +595,6 @@ export default { descriptorDeliveryDate: 'vn-ticket-descriptor slot-body > .attributes > vn-label-value:nth-child(4) > section > span', descriptorDeliveryAgency: 'vn-ticket-descriptor slot-body > .attributes > vn-label-value:nth-child(5) > section > span', acceptInvoiceOutButton: '.vn-confirm.shown button[response="accept"]', - acceptDeleteStowawayButton: '.vn-dialog.shown button[response="accept"]' }, ticketNotes: { firstNoteRemoveButton: 'vn-icon[icon="delete"]', @@ -548,7 +604,14 @@ export default { submitNotesButton: 'button[type=submit]' }, ticketExpedition: { - secondExpeditionRemoveButton: 'vn-ticket-expedition vn-table div > vn-tbody > vn-tr:nth-child(2) > vn-td:nth-child(1) > vn-icon-button[icon="delete"]', + firstSaleCheckbox: 'vn-ticket-expedition vn-tr:nth-child(1) vn-check[ng-model="expedition.checked"]', + thirdSaleCheckbox: 'vn-ticket-expedition vn-tr:nth-child(3) vn-check[ng-model="expedition.checked"]', + deleteExpeditionButton: 'vn-ticket-expedition vn-tool-bar > vn-button[icon="delete"]', + moveExpeditionButton: 'vn-ticket-expedition vn-tool-bar > vn-button[icon="keyboard_arrow_down"]', + moreMenuWithoutRoute: 'vn-item[name="withoutRoute"]', + moreMenuWithRoute: 'vn-item[name="withRoute"]', + newRouteId: '.vn-dialog.shown vn-textfield[ng-model="$ctrl.newRoute"]', + saveButton: '.vn-dialog.shown [response="accept"]', expeditionRow: 'vn-ticket-expedition vn-table vn-tbody > vn-tr' }, ticketPackages: { @@ -570,7 +633,7 @@ export default { moreMenuUnmarkReseved: 'vn-item[name="unreserve"]', moreMenuUpdateDiscount: 'vn-item[name="discount"]', moreMenuRecalculatePrice: 'vn-item[name="calculatePrice"]', - moreMenuPayBack: 'vn-item[name="payBack"]', + moreMenuRefund: 'vn-item[name="refund"]', moreMenuUpdateDiscountInput: 'vn-input-number[ng-model="$ctrl.edit.discount"] input', transferQuantityInput: '.vn-popover.shown vn-table > div > vn-tbody > vn-tr > vn-td-editable > span > text', transferQuantityCell: '.vn-popover.shown vn-table > div > vn-tbody > vn-tr > vn-td-editable', @@ -585,6 +648,7 @@ export default { firstSalePriceInput: '.vn-popover.shown input[ng-model="$ctrl.field"]', firstSaleDiscount: 'vn-ticket-sale vn-table vn-tr:nth-child(1) > vn-td:nth-child(10) > span', firstSaleDiscountInput: '.vn-popover.shown [ng-model="$ctrl.field"]', + saveSaleDiscountButton: '.vn-popover.shown vn-button[label="Save"]', firstSaleImport: 'vn-ticket-sale:nth-child(1) vn-td:nth-child(11)', firstSaleReservedIcon: 'vn-ticket-sale vn-tr:nth-child(1) > vn-td:nth-child(2) > vn-icon:nth-child(3)', firstSaleColour: 'vn-ticket-sale vn-tr:nth-child(1) vn-fetched-tags section', @@ -679,19 +743,19 @@ export default { claimSummary: { header: 'vn-claim-summary > vn-card > h5', state: 'vn-claim-summary vn-label-value[label="State"] > section > span', - observation: 'vn-claim-summary vn-textarea[ng-model="$ctrl.summary.claim.observation"]', - firstSaleItemId: 'vn-claim-summary vn-horizontal > vn-auto:nth-child(4) vn-table > div > vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(1) > span', + observation: 'vn-claim-summary vn-horizontal.text', + firstSaleItemId: 'vn-claim-summary vn-horizontal > vn-auto:nth-child(5) vn-table > div > vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(1) > span', firstSaleDescriptorImage: '.vn-popover.shown vn-item-descriptor img', itemDescriptorPopover: '.vn-popover.shown vn-item-descriptor', itemDescriptorPopoverItemDiaryButton: '.vn-popover vn-item-descriptor vn-quick-link[icon="icon-transaction"] > a', - firstDevelopmentWorker: 'vn-claim-summary vn-horizontal > vn-auto:nth-child(5) vn-table > div > vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(4) > span', + firstDevelopmentWorker: 'vn-claim-summary vn-horizontal > vn-auto:nth-child(4) vn-table > div > vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(4) > span', firstDevelopmentWorkerGoToClientButton: '.vn-popover vn-worker-descriptor vn-quick-link[icon="person"] > a', - firstActionTicketId: 'vn-claim-summary > vn-card > vn-horizontal > vn-auto:nth-child(6) vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > span', + firstActionTicketId: 'vn-claim-summary > vn-card > vn-horizontal > vn-auto:nth-child(5) vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > span', firstActionTicketDescriptor: '.vn-popover.shown vn-ticket-descriptor' }, claimBasicData: { claimState: 'vn-claim-basic-data vn-autocomplete[ng-model="$ctrl.claim.claimStateFk"]', - observation: 'vn-textarea[ng-model="$ctrl.claim.observation"]', + packages: 'vn-input-number[ng-model="$ctrl.claim.packages"]', hasToPickUpCheckbox: 'vn-claim-basic-data vn-check[ng-model="$ctrl.claim.hasToPickUp"]', saveButton: `button[type=submit]` }, @@ -720,13 +784,16 @@ export default { secondClaimRedelivery: 'vn-claim-development vn-horizontal:nth-child(2) vn-autocomplete[ng-model="claimDevelopment.claimRedeliveryFk"]', saveDevelopmentButton: 'button[type=submit]' }, + claimNote: { + addNoteFloatButton: 'vn-float-button', + note: 'vn-textarea[ng-model="$ctrl.note.text"]', + saveButton: 'button[type=submit]', + firstNoteText: 'vn-claim-note .text' + }, claimAction: { importClaimButton: 'vn-claim-action vn-button[label="Import claim"]', - importTicketButton: 'vn-claim-action vn-button[label="Import ticket"]', - secondImportableTicket: '.vn-popover.shown .content > div > vn-table > div > vn-tbody > vn-tr:nth-child(2)', - firstLineDestination: 'vn-claim-action vn-tr:nth-child(1) vn-autocomplete[ng-model="saleClaimed.claimDestinationFk"]', - secondLineDestination: 'vn-claim-action vn-tr:nth-child(2) vn-autocomplete[ng-model="saleClaimed.claimDestinationFk"]', - firstDeleteLine: 'vn-claim-action vn-tr:nth-child(1) vn-icon-button[icon="delete"]', + anyLine: 'vn-claim-action vn-tbody > vn-tr', + firstDeleteLine: 'vn-claim-action tr:nth-child(1) vn-icon-button[icon="delete"]', isPaidWithManaCheckbox: 'vn-claim-action vn-check[ng-model="$ctrl.claim.isChargedToMana"]' }, ordersIndex: { @@ -786,14 +853,16 @@ export default { confirmButton: '.vn-confirm.shown button[response="accept"]', }, routeIndex: { - anyResult: 'vn-table a', - firstRouteCheckbox: 'a:nth-child(1) vn-td:nth-child(1) > vn-check', + anyResult: 'vn-route-index tbody > tr', + firstRouteCheckbox: 'vn-route-index tbody > tr:nth-child(1) > td:nth-child(1) > vn-check', addNewRouteButton: 'vn-route-index a[ui-sref="route.create"]', cloneButton: 'vn-route-index button > vn-icon[icon="icon-clone"]', submitClonationButton: 'tpl-buttons > button[response="accept"]', openAdvancedSearchButton: 'vn-searchbar .append vn-icon[icon="arrow_drop_down"]', searchAgencyAutocomlete: 'vn-route-search-panel vn-autocomplete[ng-model="filter.agencyModeFk"]', advancedSearchButton: 'vn-route-search-panel button[type=submit]', + previewButton: 'vn-route-index tbody > tr:nth-child(7) > td:nth-child(11) > vn-icon-button[icon="preview"]', + }, createRouteView: { worker: 'vn-route-create vn-autocomplete[ng-model="$ctrl.route.workerFk"]', @@ -813,6 +882,8 @@ export default { firstTicketDescriptor: '.vn-popover.shown vn-ticket-descriptor', firstAlias: 'vn-route-summary vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(3) > span', firstClientDescriptor: '.vn-popover.shown vn-client-descriptor', + goToRouteSummaryButton: 'vn-route-summary > vn-card > h5 > a', + }, routeBasicData: { worker: 'vn-route-basic-data vn-autocomplete[ng-model="$ctrl.route.workerFk"]', @@ -857,51 +928,16 @@ export default { dialogTimeInput: '.vn-dialog.shown vn-input-time[ng-model="$ctrl.newTimeEntry.timed"]', dialogTimeDirection: '.vn-dialog.shown vn-autocomplete[ng-model="$ctrl.newTimeEntry.direction"]', mondayAddTimeButton: 'vn-worker-time-control vn-table > div > vn-tfoot > vn-tr:nth-child(2) > vn-td:nth-child(1) > vn-icon-button', - tuesdayAddTimeButton: 'vn-worker-time-control vn-table > div > vn-tfoot > vn-tr:nth-child(2) > vn-td:nth-child(2) > vn-icon-button', - wednesdayAddTimeButton: 'vn-worker-time-control vn-table > div > vn-tfoot > vn-tr:nth-child(2) > vn-td:nth-child(3) > vn-icon-button', - thursdayAddTimeButton: 'vn-worker-time-control vn-table > div > vn-tfoot > vn-tr:nth-child(2) > vn-td:nth-child(4) > vn-icon-button', - fridayAddTimeButton: 'vn-worker-time-control vn-table > div > vn-tfoot > vn-tr:nth-child(2) > vn-td:nth-child(5) > vn-icon-button', - saturdayAddTimeButton: 'vn-worker-time-control vn-table > div > vn-tfoot > vn-tr:nth-child(2) > vn-td:nth-child(6) > vn-icon-button', - sundayAddTimeButton: 'vn-worker-time-control vn-table > div > vn-tfoot > vn-tr:nth-child(2) > vn-td:nth-child(7) > vn-icon-button', firstEntryOfMonday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(1) > section:nth-child(1) > vn-chip > div:nth-child(2)', - firstEntryOfTuesday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > section:nth-child(1) > vn-chip > div:nth-child(2)', - firstEntryOfWednesday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(3) > section:nth-child(1) > vn-chip > div:nth-child(2)', - firstEntryOfThursday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(4) > section:nth-child(1) > vn-chip > div:nth-child(2)', - firstEntryOfFriday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(5) > section:nth-child(1) > vn-chip > div:nth-child(2)', - firstEntryOfSaturday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(6) > section:nth-child(1) > vn-chip > div:nth-child(2)', - firstEntryOfSunday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(7) > section:nth-child(1) > vn-chip > div:nth-child(2)', + firstEntryOfMondayDelete: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(1) > section:nth-child(1) > vn-chip > vn-icon[icon="cancel"]', secondEntryOfMonday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(1) > section:nth-child(2) > vn-chip > div:nth-child(2)', - secondEntryOfTuesday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > section:nth-child(2) > vn-chip > div:nth-child(2)', - secondEntryOfWednesday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(3) > section:nth-child(2) > vn-chip > div:nth-child(2)', - secondEntryOfThursday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(4) > section:nth-child(2) > vn-chip > div:nth-child(2)', - secondEntryOfFriday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(5) > section:nth-child(2) > vn-chip > div:nth-child(2)', - secondEntryOfSaturday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(6) > section:nth-child(2) > vn-chip > div:nth-child(2)', - secondEntryOfSunday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(7) > section:nth-child(2) > vn-chip > div:nth-child(2)', - thirdEntryOfMonday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(1) > section:nth-child(3) > vn-chip > div:nth-child(2)', - thirdEntryOfMondayDelete: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(1) > section:nth-child(3) > vn-chip > vn-icon[icon="cancel"]', - thirdEntryOfTuesday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > section:nth-child(3) > vn-chip > div:nth-child(2)', - thirdEntryOfWednesday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(3) > section:nth-child(3) > vn-chip > div:nth-child(2)', - thirdEntryOfThursday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(4) > section:nth-child(3) > vn-chip > div:nth-child(2)', - thirdEntryOfFriday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(5) > section:nth-child(3) > vn-chip > div:nth-child(2)', - thirdEntryOfSaturday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(6) > section:nth-child(3) > vn-chip > div:nth-child(2)', - thirdEntryOfSunday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(7) > section:nth-child(3) > vn-chip > div:nth-child(2)', - fourthEntryOfMonday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(1) > section:nth-child(4) > vn-chip > div:nth-child(2)', - fourthEntryOfTuesday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > section:nth-child(4) > vn-chip > div:nth-child(2)', - fourthEntryOfWednesday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(3) > section:nth-child(4) > vn-chip > div:nth-child(2)', - fourthEntryOfThursday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(4) > section:nth-child(4) > vn-chip > div:nth-child(2)', - fourthEntryOfFriday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(5) > section:nth-child(4) > vn-chip > div:nth-child(2)', - fourthEntryOfSaturday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(6) > section:nth-child(4) > vn-chip > div:nth-child(2)', - fourthEntryOfSunday: 'vn-worker-time-control vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(7) > section:nth-child(4) > vn-chip > div:nth-child(2)', mondayWorkedHours: 'vn-worker-time-control vn-table > div > vn-tfoot > vn-tr:nth-child(1) > vn-td:nth-child(1)', - tuesdayWorkedHours: 'vn-worker-time-control vn-table > div > vn-tfoot > vn-tr:nth-child(1) > vn-td:nth-child(2)', - wednesdayWorkedHours: 'vn-worker-time-control vn-table > div > vn-tfoot > vn-tr:nth-child(1) > vn-td:nth-child(3)', - thursdayWorkedHours: 'vn-worker-time-control vn-table > div > vn-tfoot > vn-tr:nth-child(1) > vn-td:nth-child(4)', - fridayWorkedHours: 'vn-worker-time-control vn-table > div > vn-tfoot > vn-tr:nth-child(1) > vn-td:nth-child(5)', - saturdayWorkedHours: 'vn-worker-time-control vn-table > div > vn-tfoot > vn-tr:nth-child(1) > vn-td:nth-child(6)', - sundayWorkedHours: 'vn-worker-time-control vn-table > div > vn-tfoot > vn-tr:nth-child(1) > vn-td:nth-child(7)', weekWorkedHours: 'vn-worker-time-control vn-side-menu vn-label-value > section > span', nextMonthButton: 'vn-worker-time-control vn-side-menu vn-calendar vn-button[icon=keyboard_arrow_right]', + previousMonthButton: 'vn-worker-time-control vn-side-menu vn-calendar vn-button[icon=keyboard_arrow_left]', + monthName: 'vn-worker-time-control vn-side-menu vn-calendar div > .title', secondWeekDay: 'vn-worker-time-control vn-side-menu vn-calendar .day:nth-child(8) > .day-number', + thrirdWeekDay: 'vn-worker-time-control vn-side-menu vn-calendar .day:nth-child(15) > .day-number', navigateBackToIndex: 'vn-worker-descriptor [name="goToModuleIndex"]' }, workerCalendar: { @@ -958,7 +994,7 @@ export default { supplierRef: 'vn-invoice-in-summary vn-label-value:nth-child(2) > section > span' }, invoiceInDescriptor: { - summaryIcon: 'vn-invoice-in-descriptor a[title="Preview"]', + summaryIcon: 'vn-invoice-in-descriptor a[title="Go to module summary"]', moreMenu: 'vn-invoice-in-descriptor vn-icon-button[icon=more_vert]', moreMenuDeleteInvoiceIn: '.vn-menu [name="deleteInvoice"]', moreMenuCloneInvoiceIn: '.vn-menu [name="cloneInvoice"]', @@ -976,8 +1012,8 @@ export default { save: 'vn-invoice-in-basic-data button[type=submit]' }, invoiceInTax: { - addTaxButton: 'vn-invoice-in-tax vn-icon-button[icon="add_circle"]', - thirdExpence: 'vn-invoice-in-tax vn-horizontal:nth-child(3) > vn-autocomplete[ng-model="invoiceInTax.expenseFk"]', + addTaxButton: 'vn-invoice-in-tax vn-icon-button[vn-tooltip="Add tax"]', + thirdExpense: 'vn-invoice-in-tax vn-horizontal:nth-child(3) > vn-autocomplete[ng-model="invoiceInTax.expenseFk"]', thirdTaxableBase: 'vn-invoice-in-tax vn-horizontal:nth-child(3) > vn-input-number[ng-model="invoiceInTax.taxableBase"]', thirdTaxType: 'vn-invoice-in-tax vn-horizontal:nth-child(3) > vn-autocomplete[ng-model="invoiceInTax.taxTypeSageFk"]', thirdTransactionType: 'vn-invoice-in-tax vn-horizontal:nth-child(3) > vn-autocomplete[ng-model="invoiceInTax.transactionTypeSageFk"]', @@ -1000,9 +1036,9 @@ export default { save: 'vn-travel-create vn-submit > button' }, travelExtraCommunity: { - anySearchResult: 'vn-travel-extra-community > vn-data-viewer div > vn-tbody > vn-tr', - firstTravelReference: 'vn-travel-extra-community vn-tbody:nth-child(2) vn-td-editable[name="reference"]', - firstTravelLockedKg: 'vn-travel-extra-community vn-tbody:nth-child(2) vn-td-editable[name="lockedKg"]', + anySearchResult: 'vn-travel-extra-community > vn-card div > tbody > tr[ng-attr-id="{{::travel.id}}"]', + firstTravelReference: 'vn-travel-extra-community tbody:nth-child(2) vn-td-editable[name="reference"]', + firstTravelLockedKg: 'vn-travel-extra-community tbody:nth-child(2) vn-td-editable[name="lockedKg"]', removeContinentFilter: 'vn-searchbar > form > vn-textfield > div.container > div.prepend > prepend > div > span:nth-child(3) > vn-icon > i' }, travelBasicData: { @@ -1079,7 +1115,8 @@ export default { anyBuyLine: 'vn-entry-summary tr.dark-row' }, entryBasicData: { - reference: 'vn-entry-basic-data vn-textfield[ng-model="$ctrl.entry.ref"]', + reference: 'vn-entry-basic-data vn-textfield[ng-model="$ctrl.entry.reference"]', + invoiceNumber: 'vn-entry-basic-data vn-textfield[ng-model="$ctrl.entry.invoiceNumber"]', notes: 'vn-entry-basic-data vn-textfield[ng-model="$ctrl.entry.notes"]', observations: 'vn-entry-basic-data vn-textarea[ng-model="$ctrl.entry.observation"]', supplier: 'vn-entry-basic-data vn-autocomplete[ng-model="$ctrl.entry.supplierFk"]', @@ -1088,7 +1125,7 @@ export default { company: 'vn-entry-basic-data vn-autocomplete[ng-model="$ctrl.entry.companyFk"]', ordered: 'vn-entry-basic-data vn-check[ng-model="$ctrl.entry.isOrdered"]', confirmed: 'vn-entry-basic-data vn-check[ng-model="$ctrl.entry.isConfirmed"]', - inventory: 'vn-entry-basic-data vn-check[ng-model="$ctrl.entry.isInventory"]', + inventory: 'vn-entry-basic-data vn-check[ng-model="$ctrl.entry.isExcludedFromAvailable"]', raid: 'vn-entry-basic-data vn-check[ng-model="$ctrl.entry.isRaid"]', booked: 'vn-entry-basic-data vn-check[ng-model="$ctrl.entry.isBooked"]', save: 'vn-entry-basic-data button[type=submit]', @@ -1127,7 +1164,7 @@ export default { entryLatestBuys: { firstBuy: 'vn-entry-latest-buys tbody > tr:nth-child(1)', allBuysCheckBox: 'vn-entry-latest-buys thead vn-check', - secondBuyCheckBox: 'vn-entry-latest-buys tbody tr:nth-child(2) vn-check[ng-model="buy.$checked"]', + secondBuyCheckBox: 'vn-entry-latest-buys tbody tr:nth-child(2) vn-check[ng-model="buy.checked"]', editBuysButton: 'vn-entry-latest-buys vn-button[icon="edit"]', fieldAutocomplete: 'vn-autocomplete[ng-model="$ctrl.editedColumn.field"]', newValueInput: 'vn-textfield[ng-model="$ctrl.editedColumn.newValue"]', diff --git a/e2e/helpers/tests.js b/e2e/helpers/tests.js new file mode 100644 index 000000000..aac9963dd --- /dev/null +++ b/e2e/helpers/tests.js @@ -0,0 +1,87 @@ +require('@babel/register')({presets: ['@babel/env']}); +require('core-js/stable'); +require('regenerator-runtime/runtime'); + +const axios = require('axios'); +const Docker = require('../../db/docker.js'); +const e2eConfig = require('./config.js'); +const log = require('fancy-log'); + +process.on('warning', warning => { + console.log(warning.name); + console.log(warning.message); + console.log(warning.stack); +}); + +async function test() { + if (process.argv[2] === 'show') + process.env.E2E_SHOW = true; + + const container = new Docker('salix-db'); + + await container.run(); + + const Jasmine = require('jasmine'); + const jasmine = new Jasmine(); + + const specFiles = [ + `./e2e/paths/01*/*[sS]pec.js`, + `./e2e/paths/02*/*[sS]pec.js`, + `./e2e/paths/03*/*[sS]pec.js`, + `./e2e/paths/04*/*[sS]pec.js`, + `./e2e/paths/05*/*[sS]pec.js`, + `./e2e/paths/06*/*[sS]pec.js`, + `./e2e/paths/07*/*[sS]pec.js`, + `./e2e/paths/08*/*[sS]pec.js`, + `./e2e/paths/09*/*[sS]pec.js`, + `./e2e/paths/10*/*[sS]pec.js`, + `./e2e/paths/11*/*[sS]pec.js`, + `./e2e/paths/12*/*[sS]pec.js`, + `./e2e/paths/13*/*[sS]pec.js`, + `./e2e/paths/**/*[sS]pec.js` + ]; + + jasmine.loadConfig({ + spec_dir: '.', + spec_files: specFiles, + helpers: [], + random: false, + }); + + await backendStatus(); + + jasmine.jasmine.DEFAULT_TIMEOUT_INTERVAL = 30000; + await jasmine.execute(); +} + +async function backendStatus() { + log('Awaiting backend connection...'); + + const milliseconds = 1000; + const maxAttempts = 10; + + return new Promise(resolve => { + let timer; + let attempts = 1; + timer = setInterval(async() => { + try { + attempts++; + const url = `${e2eConfig.url}/api/Applications/status`; + const {data} = await axios.get(url); + + if (data == true) { + clearInterval(timer); + log('Backend connection stablished!'); + resolve(attempts); + } + } catch (error) { + if (error && attempts >= maxAttempts) { + log('Could not connect to backend'); + process.exit(); + } + } + }, milliseconds); + }); +} + +test(); diff --git a/e2e/paths/01-salix/03_smartTable_searchBar_integrations.spec.js b/e2e/paths/01-salix/03_smartTable_searchBar_integrations.spec.js new file mode 100644 index 000000000..4fc280209 --- /dev/null +++ b/e2e/paths/01-salix/03_smartTable_searchBar_integrations.spec.js @@ -0,0 +1,77 @@ +import selectors from '../../helpers/selectors.js'; +import getBrowser from '../../helpers/puppeteer'; + +describe('SmartTable SearchBar integration', () => { + let browser; + let page; + beforeAll(async() => { + browser = await getBrowser(); + page = browser.page; + await page.loginAndModule('salesPerson', 'item'); + await page.waitToClick(selectors.globalItems.searchButton); + }); + + afterAll(async() => { + await browser.close(); + }); + + describe('as filters', () => { + it('should search by type in searchBar', async() => { + await page.waitToClick(selectors.itemsIndex.openAdvancedSearchButton); + await page.autocompleteSearch(selectors.itemsIndex.advancedSearchItemType, 'Anthurium'); + await page.waitToClick(selectors.itemsIndex.advancedSearchButton); + await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 3); + }); + + it('should reload page and have same results', async() => { + await page.reload({ + waitUntil: 'networkidle2' + }); + + await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 3); + }); + + it('should search by grouping in smartTable', async() => { + await page.waitToClick(selectors.itemsIndex.advancedSmartTableButton); + await page.write(selectors.itemsIndex.advancedSmartTableGrouping, '1'); + await page.keyboard.press('Enter'); + await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 2); + }); + + it('should now reload page and have same results', async() => { + await page.reload({ + waitUntil: 'networkidle2' + }); + + await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 2); + }); + }); + + describe('as orders', () => { + it('should order by first id', async() => { + await page.loginAndModule('developer', 'item'); + await page.accessToSection('item.fixedPrice'); + await page.doSearch(); + + const result = await page.waitToGetProperty(selectors.itemFixedPrice.firstItemID, 'value'); + + expect(result).toEqual('1'); + }); + + it('should order by last id', async() => { + await page.waitToClick(selectors.itemFixedPrice.orderColumnId); + const result = await page.waitToGetProperty(selectors.itemFixedPrice.firstItemID, 'value'); + + expect(result).toEqual('13'); + }); + + it('should reload page and have same order', async() => { + await page.reload({ + waitUntil: 'networkidle2' + }); + const result = await page.waitToGetProperty(selectors.itemFixedPrice.firstItemID, 'value'); + + expect(result).toEqual('13'); + }); + }); +}); diff --git a/e2e/paths/02-client/03_edit_fiscal_data.spec.js b/e2e/paths/02-client/03_edit_fiscal_data.spec.js index 4ae1d4eca..2a56cb535 100644 --- a/e2e/paths/02-client/03_edit_fiscal_data.spec.js +++ b/e2e/paths/02-client/03_edit_fiscal_data.spec.js @@ -276,7 +276,7 @@ describe('Client Edit fiscalData path', () => { // confirm invoice by address checkbox gets checked if the EQtax differs between addresses step 2 it(`should click on the 1st edit icon to access the address details and uncheck EQtax checkbox`, async() => { await page.waitToClick(selectors.clientAddresses.firstEditAddress); - await page.waitForTextInField(selectors.clientAddresses.city, 'Silla'); + await page.waitForTextInField(selectors.clientAddresses.city, 'Gotham'); await page.waitToClick(selectors.clientAddresses.equalizationTaxCheckbox); await page.waitToClick(selectors.clientAddresses.saveButton); const message = await page.waitForSnackbar(); diff --git a/e2e/paths/02-client/05_add_address.spec.js b/e2e/paths/02-client/05_add_address.spec.js index c35237ab4..0581635d0 100644 --- a/e2e/paths/02-client/05_add_address.spec.js +++ b/e2e/paths/02-client/05_add_address.spec.js @@ -45,7 +45,7 @@ describe('Client Add address path', () => { expect(province).toContain('Province five'); }); - it(`should receive an error after clicking save button as consignee, incoterms and customsAgent are empty`, async() => { + it(`should throw after clicking save button as consignee, incoterms and customsAgent are empty`, async() => { await page.write(selectors.clientAddresses.consignee, 'Bruce Bunner'); await page.write(selectors.clientAddresses.streetAddress, '320 Park Avenue New York'); await page.waitToClick(selectors.clientAddresses.saveButton); diff --git a/e2e/paths/02-client/07_edit_web_access.spec.js b/e2e/paths/02-client/07_edit_web_access.spec.js index bcd476f6b..3d9ccee62 100644 --- a/e2e/paths/02-client/07_edit_web_access.spec.js +++ b/e2e/paths/02-client/07_edit_web_access.spec.js @@ -1,3 +1,4 @@ +/* eslint max-len: ["error", { "code": 150 }]*/ import selectors from '../../helpers/selectors'; import getBrowser from '../../helpers/puppeteer'; @@ -7,8 +8,8 @@ describe('Client Edit web access path', () => { beforeAll(async() => { browser = await getBrowser(); page = browser.page; - await page.loginAndModule('employee', 'client'); - await page.accessToSearchResult('Bruce Banner'); + await page.loginAndModule('salesPerson', 'client'); + await page.accessToSearchResult('max'); await page.accessToSection('client.card.webAccess'); }); @@ -26,7 +27,16 @@ describe('Client Edit web access path', () => { it(`should update the name`, async() => { await page.clearInput(selectors.clientWebAccess.userName); - await page.write(selectors.clientWebAccess.userName, 'Hulk'); + await page.write(selectors.clientWebAccess.userName, 'Legion'); + await page.waitToClick(selectors.clientWebAccess.saveButton); + const message = await page.waitForSnackbar(); + + expect(message.text).toContain('Data saved!'); + }); + + it(`should update the email`, async() => { + await page.clearInput(selectors.clientWebAccess.email); + await page.write(selectors.clientWebAccess.email, 'legion@marvel.com'); await page.waitToClick(selectors.clientWebAccess.saveButton); const message = await page.waitForSnackbar(); @@ -43,30 +53,36 @@ describe('Client Edit web access path', () => { it('should confirm web access name have been updated', async() => { const result = await page.waitToGetProperty(selectors.clientWebAccess.userName, 'value'); - expect(result).toEqual('Hulk'); + expect(result).toEqual('Legion'); + }); + + it('should confirm web access email have been updated', async() => { + const result = await page.waitToGetProperty(selectors.clientWebAccess.email, 'value'); + + expect(result).toEqual('legion@marvel.com'); }); it(`should navigate to the log section`, async() => { await page.accessToSection('client.card.log'); }); - it(`should confirm the last log is showing the updated client name and no modifications on the active checkbox`, async() => { + it(`should confirm the last log shows the updated client name and no modifications on active checkbox`, async() => { let lastModificationPreviousValue = await page .waitToGetProperty(selectors.clientLog.lastModificationPreviousValue, 'innerText'); let lastModificationCurrentValue = await page .waitToGetProperty(selectors.clientLog.lastModificationCurrentValue, 'innerText'); - expect(lastModificationPreviousValue).toEqual('name BruceBanner active false'); - expect(lastModificationCurrentValue).toEqual('name Hulk active false'); + expect(lastModificationPreviousValue).toEqual('name MaxEisenhardt active false'); + expect(lastModificationCurrentValue).toEqual('name Legion active false'); }); - it(`should confirm the penultimate log is showing the updated avtive field and no modifications on the client name`, async() => { + it(`should confirm the penultimate log shows the updated active and no modifications on client name`, async() => { let penultimateModificationPreviousValue = await page .waitToGetProperty(selectors.clientLog.penultimateModificationPreviousValue, 'innerText'); let penultimateModificationCurrentValue = await page .waitToGetProperty(selectors.clientLog.penultimateModificationCurrentValue, 'innerText'); - expect(penultimateModificationPreviousValue).toEqual('name BruceBanner active true'); - expect(penultimateModificationCurrentValue).toEqual('name BruceBanner active false'); + expect(penultimateModificationPreviousValue).toEqual('name MaxEisenhardt active true'); + expect(penultimateModificationCurrentValue).toEqual('name MaxEisenhardt active false'); }); }); diff --git a/e2e/paths/02-client/12_lock_of_verified_data.spec.js b/e2e/paths/02-client/12_lock_of_verified_data.spec.js index 701531c76..139af0cea 100644 --- a/e2e/paths/02-client/12_lock_of_verified_data.spec.js +++ b/e2e/paths/02-client/12_lock_of_verified_data.spec.js @@ -111,7 +111,7 @@ describe('Client lock verified data path', () => { await page.waitToClick(selectors.clientFiscalData.saveButton); const message = await page.waitForSnackbar(); - expect(message.text).toContain(`You can't make changes on a client with verified data`); + expect(message.text).toContain(`Not enough privileges to edit a client with verified data`); }); }); @@ -135,7 +135,7 @@ describe('Client lock verified data path', () => { await page.waitToClick(selectors.clientFiscalData.saveButton); const message = await page.waitForSnackbar(); - expect(message.text).toContain('Data saved!'); + expect(message.text).toContain(`Data saved!`); }); it('should now confirm the social name have been edited once and for all', async() => { diff --git a/e2e/paths/02-client/21_defaulter.spec.js b/e2e/paths/02-client/21_defaulter.spec.js index 89b5c5761..0eb16441f 100644 --- a/e2e/paths/02-client/21_defaulter.spec.js +++ b/e2e/paths/02-client/21_defaulter.spec.js @@ -9,7 +9,7 @@ describe('Client defaulter path', () => { browser = await getBrowser(); page = browser.page; await page.loginAndModule('insurance', 'client'); - await page.accessToSection('client.defaulter.index'); + await page.accessToSection('client.defaulter'); }); afterAll(async() => { @@ -28,12 +28,12 @@ describe('Client defaulter path', () => { const salesPersonName = await page.waitToGetProperty(selectors.clientDefaulter.firstSalesPersonName, 'innerText'); - expect(clientName).toEqual('Ororo Munroe'); - expect(salesPersonName).toEqual('salesPerson'); + expect(clientName).toEqual('Bruce Banner'); + expect(salesPersonName).toEqual('developer'); }); it('should first observation not changed', async() => { - const expectedObservation = 'Madness, as you know, is like gravity, all it takes is a little push'; + const expectedObservation = 'Meeting with Black Widow 21st 9am'; const result = await page.waitToGetProperty(selectors.clientDefaulter.firstObservation, 'value'); expect(result).toContain(expectedObservation); @@ -52,7 +52,7 @@ describe('Client defaulter path', () => { it('shoul checked all defaulters', async() => { await page.loginAndModule('insurance', 'client'); - await page.accessToSection('client.defaulter.index'); + await page.accessToSection('client.defaulter'); await page.waitToClick(selectors.clientDefaulter.allDefaulterCheckbox); }); @@ -65,6 +65,7 @@ describe('Client defaulter path', () => { it('should first observation changed', async() => { const message = await page.waitForSnackbar(); + await page.waitForSelector(selectors.clientDefaulter.firstObservation); const result = await page.waitToGetProperty(selectors.clientDefaulter.firstObservation, 'value'); expect(message.text).toContain('Observation saved!'); diff --git a/e2e/paths/02-client/22_unpaid.spec.js b/e2e/paths/02-client/22_unpaid.spec.js new file mode 100644 index 000000000..441dba96f --- /dev/null +++ b/e2e/paths/02-client/22_unpaid.spec.js @@ -0,0 +1,41 @@ +import selectors from '../../helpers/selectors.js'; +import getBrowser from '../../helpers/puppeteer'; + +describe('Client unpaid path', () => { + let browser; + let page; + + beforeAll(async() => { + browser = await getBrowser(); + page = browser.page; + await page.loginAndModule('administrative', 'client'); + await page.accessToSearchResult('Charles Xavier'); + await page.accessToSection('client.card.unpaid'); + await page.waitForState('client.card.unpaid'); + }); + + afterAll(async() => { + await browser.close(); + }); + + it('should set cliet unpaid', async() => { + await page.waitToClick(selectors.clientUnpaid.hasDataCheckBox); + + await page.pickDate(selectors.clientUnpaid.dated); + await page.write(selectors.clientUnpaid.amount, '500'); + }); + + it('should save unpaid', async() => { + await page.waitToClick(selectors.clientUnpaid.saveButton); + const message = await page.waitForSnackbar(); + + expect(message.text).toContain('Data saved!'); + }); + + it('should confirm the unpaid have been saved', async() => { + await page.reloadSection('client.card.unpaid'); + const result = await page.waitToGetProperty(selectors.clientUnpaid.amount, 'value'); + + expect(result).toEqual('500'); + }); +}); diff --git a/e2e/paths/03-worker/04_time_control.spec.js b/e2e/paths/03-worker/04_time_control.spec.js index 3f5653aee..be8df3cf0 100644 --- a/e2e/paths/03-worker/04_time_control.spec.js +++ b/e2e/paths/03-worker/04_time_control.spec.js @@ -1,3 +1,4 @@ +/* eslint max-len: ["error", { "code": 150 }]*/ import selectors from '../../helpers/selectors.js'; import getBrowser from '../../helpers/puppeteer'; @@ -16,402 +17,99 @@ describe('Worker time control path', () => { await browser.close(); }); - describe('as salesBoss', () => { - describe('on Monday', () => { - it('should scan in Hank Pym', async() => { - const scanTime = '07:00'; + const eightAm = '08:00'; + const fourPm = '16:00'; + const hankPymId = 1107; - await page.waitToClick(selectors.workerTimeControl.mondayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'in'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.firstEntryOfMonday, 'innerText'); + it('should go to the next month', async() => { + const date = new Date(); + date.setMonth(date.getMonth() + 1); + const month = date.toLocaleString('default', {month: 'long'}); - expect(result).toEqual(scanTime); - }); + await page.waitToClick(selectors.workerTimeControl.nextMonthButton); + const result = await page.waitToGetProperty(selectors.workerTimeControl.monthName, 'innerText'); - it(`should scan out Hank Pym for break`, async() => { - const scanTime = '10:00'; - - await page.waitToClick(selectors.workerTimeControl.mondayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.secondEntryOfMonday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should scan in Hank Pym for a wrong hour and forget to scan in from the break`, async() => { - const scanTime = '18:00'; - - await page.waitToClick(selectors.workerTimeControl.mondayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.thirdEntryOfMonday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should delete the wrong entry for Hank Pym`, async() => { - const wrongScanTime = '18:00'; - - await page.waitForTextInElement(selectors.workerTimeControl.thirdEntryOfMonday, wrongScanTime); - await page.waitToClick(selectors.workerTimeControl.thirdEntryOfMondayDelete); - await page.respondToDialog('accept'); - const message = await page.waitForSnackbar(); - - expect(message.text).toContain('Entry removed'); - }); - - it(`should scan out Hank Pym to leave early`, async() => { - const scanTime = '14:00'; - - await page.waitToClick(selectors.workerTimeControl.mondayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'out'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.thirdEntryOfMonday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should add the break's scan in for Hank Pym and be in the right order`, async() => { - const scanTime = '10:20'; - - await page.waitToClick(selectors.workerTimeControl.mondayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.fourthEntryOfMonday, 'innerText'); - - expect(result).toEqual('14:00'); - }); - - it(`should the third entry be the scan in from break`, async() => { - const scanTime = '10:20'; - - const result = await page - .waitToGetProperty(selectors.workerTimeControl.thirdEntryOfMonday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should check Hank Pym worked 7 hours`, async() => { - await page.waitForTextInElement(selectors.workerTimeControl.mondayWorkedHours, '07:00 h.'); - }); - }); - - describe('on Tuesday', () => { - it('should happily scan in Hank Pym', async() => { - const scanTime = '08:00'; - - await page.waitToClick(selectors.workerTimeControl.tuesdayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'in'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.firstEntryOfTuesday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should happily scan out Hank Pym for break`, async() => { - const scanTime = '10:00'; - - await page.waitToClick(selectors.workerTimeControl.tuesdayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.secondEntryOfTuesday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should happily scan in Hank Pym from the break`, async() => { - const scanTime = '10:20'; - - await page.waitToClick(selectors.workerTimeControl.tuesdayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.thirdEntryOfTuesday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should happily scan out Hank Pym for the day`, async() => { - const scanTime = '16:00'; - - await page.waitToClick(selectors.workerTimeControl.tuesdayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'out'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.fourthEntryOfTuesday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should check Hank Pym worked 8 happy hours`, async() => { - await page.waitForTextInElement(selectors.workerTimeControl.tuesdayWorkedHours, '08:00 h.'); - }); - }); - - describe('on Wednesday', () => { - it('should cheerfully scan in Hank Pym', async() => { - const scanTime = '09:00'; - - await page.waitToClick(selectors.workerTimeControl.wednesdayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'in'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.firstEntryOfWednesday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should cheerfully scan out Hank Pym for break`, async() => { - const scanTime = '10:00'; - - await page.waitToClick(selectors.workerTimeControl.wednesdayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.secondEntryOfWednesday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should cheerfully scan in Hank Pym from the break`, async() => { - const scanTime = '10:20'; - - await page.waitToClick(selectors.workerTimeControl.wednesdayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.thirdEntryOfWednesday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should cheerfully scan out Hank Pym for the day`, async() => { - const scanTime = '17:00'; - - await page.waitToClick(selectors.workerTimeControl.wednesdayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'out'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.fourthEntryOfWednesday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should check Hank Pym worked 8 cheerfull hours`, async() => { - await page.waitForTextInElement(selectors.workerTimeControl.wednesdayWorkedHours, '08:00 h.'); - }); - }); - - describe('on Thursday', () => { - it('should joyfully scan in Hank Pym', async() => { - const scanTime = '09:59'; - - await page.waitToClick(selectors.workerTimeControl.thursdayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'in'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.firstEntryOfThursday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should joyfully scan out Hank Pym for break`, async() => { - const scanTime = '10:00'; - await page.waitToClick(selectors.workerTimeControl.thursdayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.secondEntryOfThursday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should joyfully scan in Hank Pym from the break`, async() => { - const scanTime = '10:20'; - await page.waitToClick(selectors.workerTimeControl.thursdayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.thirdEntryOfThursday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should joyfully scan out Hank Pym for the day`, async() => { - const scanTime = '17:59'; - await page.waitToClick(selectors.workerTimeControl.thursdayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'out'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.fourthEntryOfThursday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should check Hank Pym worked 8 joyfull hours`, async() => { - await page.waitForTextInElement(selectors.workerTimeControl.thursdayWorkedHours, '08:00 h.'); - }); - }); - - describe('on Friday', () => { - it('should smilingly scan in Hank Pym', async() => { - const scanTime = '07:30'; - await page.waitToClick(selectors.workerTimeControl.fridayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'in'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.firstEntryOfFriday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should smilingly scan out Hank Pym for break`, async() => { - const scanTime = '10:00'; - await page.waitToClick(selectors.workerTimeControl.fridayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.secondEntryOfFriday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should smilingly scan in Hank Pym from the break`, async() => { - const scanTime = '10:20'; - await page.waitToClick(selectors.workerTimeControl.fridayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'intermediate'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.thirdEntryOfFriday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should smilingly scan out Hank Pym for the day`, async() => { - const scanTime = '15:30'; - await page.waitToClick(selectors.workerTimeControl.fridayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'out'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.fourthEntryOfFriday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should check Hank Pym worked 8 hours with a smile on his face`, async() => { - await page.waitForTextInElement(selectors.workerTimeControl.fridayWorkedHours, '08:00 h.'); - }); - }); + expect(result).toContain(month); }); - describe('as HHRR', () => { - describe('on Saturday', () => { - it('should log in as hr and pick the worker module', async() => { - await page.loginAndModule('hr', 'worker'); - }); + it('should go to current month', async() => { + const date = new Date(); + const month = date.toLocaleString('default', {month: 'long'}); - it('should search for a worker and access to its summary', async() => { - await page.accessToSearchResult('HankPym'); - await page.waitForState('worker.card.summary'); - }); + await page.waitToClick(selectors.workerTimeControl.previousMonthButton); + const result = await page.waitToGetProperty(selectors.workerTimeControl.monthName, 'innerText'); - it('should access to the time control section', async() => { - await page.accessToSection('worker.card.timeControl'); - await page.waitForState('worker.card.timeControl'); - }); - - it('should lovingly scan in Hank Pym', async() => { - const scanTime = '06:00'; - await page.waitForTimeout(1000); // without this timeout the dialog doesn't pop up - await page.waitToClick(selectors.workerTimeControl.saturdayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'in'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.firstEntryOfSaturday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should lovingly scan out Hank Pym for the day with no break to leave a bit early`, async() => { - const scanTime = '13:40'; - await page.waitToClick(selectors.workerTimeControl.saturdayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'out'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.secondEntryOfSaturday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should check Hank Pym worked 8 hours with all his will`, async() => { - await page.waitForTextInElement(selectors.workerTimeControl.saturdayWorkedHours, '08:00 h.'); - }); - }); - - describe('on Sunday', () => { - it('should gladly scan in Hank Pym', async() => { - const scanTime = '05:00'; - await page.waitToClick(selectors.workerTimeControl.sundayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'in'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.firstEntryOfSunday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should gladly scan out Hank Pym for the day with no break to leave a bit early`, async() => { - const scanTime = '12:40'; - await page.waitToClick(selectors.workerTimeControl.sundayAddTimeButton); - await page.pickTime(selectors.workerTimeControl.dialogTimeInput, scanTime); - await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'out'); - await page.respondToDialog('accept'); - const result = await page.waitToGetProperty(selectors.workerTimeControl.secondEntryOfSunday, 'innerText'); - - expect(result).toEqual(scanTime); - }); - - it(`should check Hank Pym worked 8 glad hours`, async() => { - await page.waitForTextInElement(selectors.workerTimeControl.sundayWorkedHours, '08:00 h.'); - }); - - it(`should check Hank Pym doesn't have hours set on the next months first week`, async() => { - await page.waitToClick(selectors.workerTimeControl.nextMonthButton); - await page.waitToClick(selectors.workerTimeControl.secondWeekDay); - await page.waitForTextInElement(selectors.workerTimeControl.weekWorkedHours, '00:00 h.'); - }); - - it(`should check he didn't scan in this week yet`, async() => { - await page.waitToClick(selectors.workerTimeControl.navigateBackToIndex); - await page.accessToSearchResult('salesBoss'); - await page.accessToSection('worker.card.timeControl'); - - const wholeWeekHours = await page - .waitToGetProperty(selectors.workerTimeControl.weekWorkedHours, 'innerText'); - - expect(wholeWeekHours).toEqual('00:00 h.'); - }); - }); + expect(result).toContain(month); }); - describe('after all this amazing week', () => { - it('should log in Hank', async() => { - await page.loginAndModule('HankPym', 'worker'); - await page.accessToSearchResult('HankPym'); - await page.accessToSection('worker.card.timeControl'); - }); + it('should go 1 month in the past', async() => { + const date = new Date(); + date.setMonth(date.getMonth() - 1); + const timestamp = Math.round(date.getTime() / 1000); + const month = date.toLocaleString('default', {month: 'long'}); - it('should check his weekly hours are alright', async() => { - await page.waitForTextInElement(selectors.workerTimeControl.weekWorkedHours, '55:00 h.'); - }); + await page.loginAndModule('salesBoss', 'worker'); + await page.goto(`http://localhost:5000/#!/worker/${hankPymId}/time-control?timestamp=${timestamp}`); + await page.waitToClick(selectors.workerTimeControl.secondWeekDay); + + const result = await page.waitToGetProperty(selectors.workerTimeControl.monthName, 'innerText'); + + expect(result).toContain(month); + }); + + it(`should return error when insert 'out' of first entry`, async() => { + await page.waitToClick(selectors.workerTimeControl.mondayAddTimeButton); + await page.pickTime(selectors.workerTimeControl.dialogTimeInput, eightAm); + await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'out'); + await page.respondToDialog('accept'); + const message = await page.waitForSnackbar(); + + expect(message.text).toBeDefined(); + }); + + it(`should insert 'in' monday`, async() => { + await page.waitToClick(selectors.workerTimeControl.mondayAddTimeButton); + await page.pickTime(selectors.workerTimeControl.dialogTimeInput, eightAm); + await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'in'); + await page.respondToDialog('accept'); + const result = await page.waitToGetProperty(selectors.workerTimeControl.firstEntryOfMonday, 'innerText'); + + expect(result).toEqual(eightAm); + }); + + it(`should insert 'out' monday`, async() => { + await page.waitToClick(selectors.workerTimeControl.mondayAddTimeButton); + await page.pickTime(selectors.workerTimeControl.dialogTimeInput, fourPm); + await page.autocompleteSearch(selectors.workerTimeControl.dialogTimeDirection, 'out'); + await page.respondToDialog('accept'); + const result = await page.waitToGetProperty(selectors.workerTimeControl.secondEntryOfMonday, 'innerText'); + + expect(result).toEqual(fourPm); + }); + + it(`should check Hank Pym worked 8:20 hours`, async() => { + await page.waitForTextInElement(selectors.workerTimeControl.mondayWorkedHours, '08:20 h.'); + await page.waitForTextInElement(selectors.workerTimeControl.weekWorkedHours, '08:20 h.'); + }); + + it('should remove first entry of monday', async() => { + await page.waitForTextInElement(selectors.workerTimeControl.firstEntryOfMonday, eightAm); + await page.waitForTextInElement(selectors.workerTimeControl.secondEntryOfMonday, fourPm); + await page.waitToClick(selectors.workerTimeControl.firstEntryOfMondayDelete); + await page.respondToDialog('accept'); + const message = await page.waitForSnackbar(); + + expect(message.text).toContain('Entry removed'); + }); + + it(`should be the 'out' the first entry of monday`, async() => { + const result = await page.waitToGetProperty(selectors.workerTimeControl.firstEntryOfMonday, 'innerText'); + + expect(result).toEqual(fourPm); + }); + + it('should change week of month', async() => { + await page.waitToClick(selectors.workerTimeControl.thrirdWeekDay); + await page.waitForTextInElement(selectors.workerTimeControl.mondayWorkedHours, '00:00 h.'); }); }); diff --git a/e2e/paths/03-worker/05_calendar.spec.js b/e2e/paths/03-worker/05_calendar.spec.js index 08ef71f13..e97b7fe7c 100644 --- a/e2e/paths/03-worker/05_calendar.spec.js +++ b/e2e/paths/03-worker/05_calendar.spec.js @@ -9,7 +9,7 @@ describe('Worker calendar path', () => { browser = await getBrowser(); page = browser.page; await page.loginAndModule('hr', 'worker'); - await page.accessToSearchResult('Hank Pym'); + await page.accessToSearchResult('Charles Xavier'); await page.accessToSection('worker.card.calendar'); }); @@ -18,12 +18,6 @@ describe('Worker calendar path', () => { }); describe('as hr', () => { - it('should check 5 total holidays have been used so far before testing anything', async() => { - const result = await page.waitToGetProperty(selectors.workerCalendar.totalHolidaysUsed, 'innerText'); - - expect(result).toContain(' 5 '); - }); - it('should set two days as holidays on the calendar and check the total holidays increased by 1.5', async() => { await page.waitToClick(selectors.workerCalendar.holidays); await page.waitForTimeout(reasonableTimeBetweenClicks); @@ -56,14 +50,14 @@ describe('Worker calendar path', () => { const result = await page.waitToGetProperty(selectors.workerCalendar.totalHolidaysUsed, 'innerText'); - expect(result).toContain(' 6.5 '); + expect(result).toContain(' 1.5 '); }); }); describe(`as salesBoss`, () => { - it(`should log in and get to Hank's calendar`, async() => { + it(`should log in and get to Charles Xavier's calendar`, async() => { await page.loginAndModule('salesBoss', 'worker'); - await page.accessToSearchResult('Hank Pym'); + await page.accessToSearchResult('Charles Xavier'); await page.accessToSection('worker.card.calendar'); }); @@ -101,14 +95,14 @@ describe('Worker calendar path', () => { it('should check the total holidays used are back to what it was', async() => { const result = await page.waitToGetProperty(selectors.workerCalendar.totalHolidaysUsed, 'innerText'); - expect(result).toContain(' 5 '); + expect(result).toContain(' 0 '); }); }); - describe(`as Hank`, () => { + describe(`as Charles Xavier`, () => { it(`should log in and get to his calendar`, async() => { - await page.loginAndModule('HankPym', 'worker'); - await page.accessToSearchResult('Hank Pym'); + await page.loginAndModule('CharlesXavier', 'worker'); + await page.accessToSearchResult('Charles Xavier'); await page.accessToSection('worker.card.calendar'); }); @@ -122,7 +116,7 @@ describe('Worker calendar path', () => { it('should check the total holidays used are now the initial ones', async() => { const result = await page.waitToGetProperty(selectors.workerCalendar.totalHolidaysUsed, 'innerText'); - expect(result).toContain(' 5 '); + expect(result).toContain(' 0 '); }); it('should use the year selector to go to the previous year', async() => { diff --git a/e2e/paths/04-item/02_basic_data.spec.js b/e2e/paths/04-item/02_basic_data.spec.js index 0bbb6ad12..a663ea3bb 100644 --- a/e2e/paths/04-item/02_basic_data.spec.js +++ b/e2e/paths/04-item/02_basic_data.spec.js @@ -30,8 +30,6 @@ describe('Item Edit basic data path', () => { await page.autocompleteSearch(selectors.itemBasicData.origin, 'Spain'); await page.clearInput(selectors.itemBasicData.relevancy); await page.write(selectors.itemBasicData.relevancy, '1'); - await page.clearInput(selectors.itemBasicData.compression); - await page.write(selectors.itemBasicData.compression, '2'); await page.clearInput(selectors.itemBasicData.generic); await page.autocompleteSearch(selectors.itemBasicData.generic, '16'); await page.waitToClick(selectors.itemBasicData.isActiveCheckbox); @@ -96,13 +94,6 @@ describe('Item Edit basic data path', () => { expect(result).toEqual('Spain'); }); - it(`should confirm the item compression was edited`, async() => { - const result = await page - .waitToGetProperty(selectors.itemBasicData.compression, 'value'); - - expect(result).toEqual('2'); - }); - it(`should confirm the item generic was edited`, async() => { const result = await page .waitToGetProperty(selectors.itemBasicData.generic, 'value'); diff --git a/e2e/paths/04-item/09_index.spec.js b/e2e/paths/04-item/09_index.spec.js index f9262863d..6e0a4bd5c 100644 --- a/e2e/paths/04-item/09_index.spec.js +++ b/e2e/paths/04-item/09_index.spec.js @@ -31,7 +31,7 @@ describe('Item index path', () => { await page.waitToClick(selectors.itemsIndex.intrastadCheckbox); await page.waitToClick(selectors.itemsIndex.originCheckbox); await page.waitToClick(selectors.itemsIndex.buyerCheckbox); - await page.waitToClick(selectors.itemsIndex.densityCheckbox); + await page.waitToClick(selectors.itemsIndex.weightByPieceCheckbox); await page.waitToClick(selectors.itemsIndex.saveFieldsButton); const message = await page.waitForSnackbar(); @@ -64,7 +64,7 @@ describe('Item index path', () => { await page.waitToClick(selectors.itemsIndex.intrastadCheckbox); await page.waitToClick(selectors.itemsIndex.originCheckbox); await page.waitToClick(selectors.itemsIndex.buyerCheckbox); - await page.waitToClick(selectors.itemsIndex.densityCheckbox); + await page.waitToClick(selectors.itemsIndex.weightByPieceCheckbox); await page.waitToClick(selectors.itemsIndex.saveFieldsButton); const message = await page.waitForSnackbar(); diff --git a/e2e/paths/04-item/13_fixedPrice.spec.js b/e2e/paths/04-item/13_fixedPrice.spec.js index d68092904..fc7aac3d0 100644 --- a/e2e/paths/04-item/13_fixedPrice.spec.js +++ b/e2e/paths/04-item/13_fixedPrice.spec.js @@ -16,33 +16,17 @@ describe('Item fixed prices path', () => { }); it('should click on the add new foxed price button', async() => { + await page.doSearch(); await page.waitToClick(selectors.itemFixedPrice.add); await page.waitForSelector(selectors.itemFixedPrice.fourthFixedPrice); }); it('should fill the fixed price data', async() => { const now = new Date(); - const searchValue = 'Chest ammo box'; - await page.waitToClick(selectors.itemFixedPrice.fourthItemID); - await page.write('body > div > div > div.content > div.filter.ng-scope > vn-textfield', searchValue); - try { - await page.waitForFunction(searchValue => { - const element = document.querySelector('li.active'); - if (element) - return element.innerText.toLowerCase().includes(searchValue.toLowerCase()); - }, {}, searchValue); - } catch (error) { - const builtSelector = await page.selectorFormater(selectors.ticketSales.moreMenuState); - const inputValue = await page.evaluate(() => { - return document.querySelector('.vn-drop-down.shown vn-textfield input').value; - }); - throw new Error(`${builtSelector} value is ${inputValue}! ${error}`); - } - await page.keyboard.press('Enter'); await page.autocompleteSearch(selectors.itemFixedPrice.fourthWarehouse, 'Warehouse one'); - await page.writeOnEditableTD(selectors.itemFixedPrice.fourthPPU, '20'); - await page.writeOnEditableTD(selectors.itemFixedPrice.fourthPPP, '10'); - await page.writeOnEditableTD(selectors.itemFixedPrice.fourthMinPrice, '5'); + await page.write(selectors.itemFixedPrice.fourthPPU, '1'); + await page.write(selectors.itemFixedPrice.fourthPPP, '1'); + await page.write(selectors.itemFixedPrice.fourthMinPrice, '1'); await page.pickDate(selectors.itemFixedPrice.fourthStarted, now); await page.pickDate(selectors.itemFixedPrice.fourthEnded, now); const message = await page.waitForSnackbar(); @@ -53,7 +37,9 @@ describe('Item fixed prices path', () => { it('should reload the section and check the created price has the expected ID', async() => { await page.accessToSection('item.index'); await page.accessToSection('item.fixedPrice'); - const result = await page.getProperty('vn-fixed-price > div > vn-card > vn-table > div > vn-tbody > vn-tr:nth-child(4) > vn-td:nth-child(1) > span', 'innerText'); + await page.doSearch(); + + const result = await page.waitToGetProperty(selectors.itemFixedPrice.fourthItemID, 'value'); expect(result).toContain('13'); }); diff --git a/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js b/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js index 5078d5b91..d776f417d 100644 --- a/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js +++ b/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js @@ -175,7 +175,8 @@ describe('Ticket Edit sale path', () => { it('should update the discount', async() => { await page.waitToClick(selectors.ticketSales.firstSaleDiscount); await page.waitForSelector(selectors.ticketSales.firstSaleDiscountInput); - await page.type(selectors.ticketSales.firstSaleDiscountInput, '50\u000d'); + await page.type(selectors.ticketSales.firstSaleDiscountInput, '50'); + await page.waitToClick(selectors.ticketSales.saveSaleDiscountButton); const message = await page.waitForSnackbar(); expect(message.text).toContain('Data saved!'); @@ -212,10 +213,10 @@ describe('Ticket Edit sale path', () => { await page.accessToSection('ticket.card.sale'); }); - it('should select the third sale and create a pay back', async() => { + it('should select the third sale and create a refund', async() => { await page.waitToClick(selectors.ticketSales.firstSaleCheckbox); await page.waitToClick(selectors.ticketSales.moreMenu); - await page.waitToClick(selectors.ticketSales.moreMenuPayBack); + await page.waitToClick(selectors.ticketSales.moreMenuRefund); await page.waitForState('ticket.card.sale'); }); diff --git a/e2e/paths/05-ticket/02_expeditions_and_log.spec.js b/e2e/paths/05-ticket/02_expeditions_and_log.spec.js index 0e6482c94..f970247e5 100644 --- a/e2e/paths/05-ticket/02_expeditions_and_log.spec.js +++ b/e2e/paths/05-ticket/02_expeditions_and_log.spec.js @@ -18,7 +18,8 @@ describe('Ticket expeditions and log path', () => { }); it(`should delete a former expedition and confirm the remaining expedition are the expected ones`, async() => { - await page.waitToClick(selectors.ticketExpedition.secondExpeditionRemoveButton); + await page.waitToClick(selectors.ticketExpedition.thirdSaleCheckbox); + await page.waitToClick(selectors.ticketExpedition.deleteExpeditionButton); await page.waitToClick(selectors.globalItems.acceptButton); await page.reloadSection('ticket.card.expedition'); diff --git a/e2e/paths/05-ticket/05_tracking_state.spec.js b/e2e/paths/05-ticket/05_tracking_state.spec.js index 7978cf85c..949c9a8e6 100644 --- a/e2e/paths/05-ticket/05_tracking_state.spec.js +++ b/e2e/paths/05-ticket/05_tracking_state.spec.js @@ -25,7 +25,7 @@ describe('Ticket Create new tracking state path', () => { }); it(`should create a new state`, async() => { - await page.autocompleteSearch(selectors.createStateView.state, '¿Fecha?'); + await page.autocompleteSearch(selectors.createStateView.state, 'OK'); await page.waitToClick(selectors.createStateView.saveStateButton); const message = await page.waitForSnackbar(); diff --git a/e2e/paths/05-ticket/06_basic_data_steps.spec.js b/e2e/paths/05-ticket/06_basic_data_steps.spec.js index fa118c25d..46cbf29b8 100644 --- a/e2e/paths/05-ticket/06_basic_data_steps.spec.js +++ b/e2e/paths/05-ticket/06_basic_data_steps.spec.js @@ -42,7 +42,7 @@ describe('Ticket Edit basic data path', () => { expect(disabled).toBeFalsy(); }); - it(`should check the zone is for Silla247`, async() => { + it(`should check the zone is for Gotham247`, async() => { let zone = await page .waitToGetProperty(selectors.ticketBasicData.zone, 'value'); @@ -63,7 +63,7 @@ describe('Ticket Edit basic data path', () => { let zone = await page .waitToGetProperty(selectors.ticketBasicData.agency, 'value'); - expect(zone).toContain('Silla247Expensive'); + expect(zone).toContain('Gotham247Expensive'); }); it(`should click next`, async() => { @@ -92,7 +92,7 @@ describe('Ticket Edit basic data path', () => { }); it(`should split ticket without negatives`, async() => { - const newAgency = 'Silla247'; + const newAgency = 'Gotham247'; const newDate = new Date(); newDate.setDate(newDate.getDate() - 1); diff --git a/e2e/paths/05-ticket/09_weekly.spec.js b/e2e/paths/05-ticket/09_weekly.spec.js index 2392de28f..d04138ee5 100644 --- a/e2e/paths/05-ticket/09_weekly.spec.js +++ b/e2e/paths/05-ticket/09_weekly.spec.js @@ -45,7 +45,7 @@ describe('Ticket descriptor path', () => { it('should confirm the ticket 11 was added to thursday', async() => { await page.accessToSection('ticket.weekly.index'); - const result = await page.waitToGetProperty(selectors.ticketsIndex.sixthWeeklyTicket, 'value'); + const result = await page.waitToGetProperty(selectors.ticketsIndex.fourthWeeklyTicket, 'value'); expect(result).toEqual('Thursday'); }); @@ -80,7 +80,7 @@ describe('Ticket descriptor path', () => { it('should confirm the ticket 11 was added on saturday', async() => { await page.accessToSection('ticket.weekly.index'); - const result = await page.waitToGetProperty(selectors.ticketsIndex.sixthWeeklyTicket, 'value'); + const result = await page.waitToGetProperty(selectors.ticketsIndex.fiveWeeklyTicket, 'value'); expect(result).toEqual('Saturday'); }); @@ -108,7 +108,7 @@ describe('Ticket descriptor path', () => { }); it('should update the agency then remove it afterwards', async() => { - await page.autocompleteSearch(selectors.ticketsIndex.firstWeeklyTicketAgency, 'Silla247'); + await page.autocompleteSearch(selectors.ticketsIndex.firstWeeklyTicketAgency, 'Gotham247'); let message = await page.waitForSnackbar(); expect(message.text).toContain('Data saved!'); diff --git a/e2e/paths/05-ticket/12_descriptor.spec.js b/e2e/paths/05-ticket/12_descriptor.spec.js index 3429acc89..ca6fb8290 100644 --- a/e2e/paths/05-ticket/12_descriptor.spec.js +++ b/e2e/paths/05-ticket/12_descriptor.spec.js @@ -75,59 +75,6 @@ describe('Ticket descriptor path', () => { }); }); - describe('Add stowaway', () => { - it('should search for a ticket', async() => { - await page.accessToSearchResult('16'); - await page.waitForState('ticket.card.summary'); - }); - - it('should open the add stowaway dialog', async() => { - await page.waitForFunction(() => { - let element = document.querySelector('vn-ticket-descriptor-menu'); - return element.$ctrl.canShowStowaway === true; - }); - await page.waitToClick(selectors.ticketDescriptor.moreMenu); - await page.waitToClick(selectors.ticketDescriptor.moreMenuAddStowaway); - await page.waitForSelector(selectors.ticketDescriptor.addStowawayDialogFirstTicket); - const isVisible = await page.isVisible(selectors.ticketDescriptor.addStowawayDialogFirstTicket); - - expect(isVisible).toBeTruthy(); - }); - - it('should add a ticket as stowaway', async() => { - await page.waitToClick(selectors.ticketDescriptor.addStowawayDialogFirstTicket); - const message = await page.waitForSnackbar(); - - expect(message.text).toContain('Data saved!'); - }); - - it(`should check the state of the stowaway ticket is embarked`, async() => { - await page.waitForState('ticket.card.summary'); - const state = await page.waitToGetProperty(selectors.ticketDescriptor.stateLabelValue, 'innerText'); - - expect(state).toEqual('State Embarcando'); - }); - - it(`should navigate back to the added ticket using the descriptors ship button`, async() => { - await page.waitToClick(selectors.ticketDescriptor.shipButton); - await page.waitForState('ticket.card.summary'); - }); - - it('should delete the stowaway', async() => { - await page.waitToClick(selectors.ticketDescriptor.moreMenu); - await page.waitForContentLoaded(); - await page.waitToClick(selectors.ticketDescriptor.moreMenuDeleteStowawayButton); - await page.waitToClick(selectors.ticketDescriptor.acceptDeleteStowawayButton); - const message = await page.waitForSnackbar(); - - expect(message.text).toContain('Data saved!'); - }); - - it(`should confirm the ship buton doesn't exisist any more`, async() => { - await page.waitForSelector(selectors.ticketDescriptor.shipButton, {hidden: true}); - }); - }); - describe('Make invoice', () => { it('should login as administrative role then search for a ticket', async() => { const invoiceableTicketId = '14'; diff --git a/e2e/paths/05-ticket/13_services.spec.js b/e2e/paths/05-ticket/13_services.spec.js index 03e57b588..50df23582 100644 --- a/e2e/paths/05-ticket/13_services.spec.js +++ b/e2e/paths/05-ticket/13_services.spec.js @@ -23,9 +23,9 @@ describe('Ticket services path', () => { await page.waitForClassPresent(selectors.ticketService.firstAddServiceTypeButton, 'disabled'); await page.waitToClick(selectors.ticketService.addServiceButton); await page.waitForSelector(selectors.ticketService.firstAddServiceTypeButton); - const result = await page.isDisabled(selectors.ticketService.firstAddServiceTypeButton); + const disabled = await page.isDisabled(selectors.ticketService.firstAddServiceTypeButton); - expect(result).toBe(true); + expect(disabled).toBe(true); }); it('should receive an error if you attempt to save a service without access rights', async() => { diff --git a/e2e/paths/05-ticket/14_create_ticket.spec.js b/e2e/paths/05-ticket/14_create_ticket.spec.js index bfaa08775..48b4ebdd0 100644 --- a/e2e/paths/05-ticket/14_create_ticket.spec.js +++ b/e2e/paths/05-ticket/14_create_ticket.spec.js @@ -6,7 +6,6 @@ describe('Ticket create path', () => { let page; let nextMonth = new Date(); nextMonth.setMonth(nextMonth.getMonth() + 1); - let stowawayTicketId; beforeAll(async() => { browser = await getBrowser(); @@ -27,7 +26,7 @@ describe('Ticket create path', () => { await page.autocompleteSearch(selectors.createTicketView.client, 'Clark Kent'); await page.pickDate(selectors.createTicketView.deliveryDate, nextMonth); await page.autocompleteSearch(selectors.createTicketView.warehouse, 'Warehouse Two'); - await page.autocompleteSearch(selectors.createTicketView.agency, 'Silla247'); + await page.autocompleteSearch(selectors.createTicketView.agency, 'Gotham247'); await page.waitToClick(selectors.createTicketView.createButton); const message = await page.waitForSnackbar(); @@ -36,8 +35,6 @@ describe('Ticket create path', () => { it('should check the url is now the summary of the ticket', async() => { await page.waitForState('ticket.card.summary'); - stowawayTicketId = await page.waitToGetProperty(selectors.ticketSummary.descriptorTicketId, 'innerText'); - stowawayTicketId = stowawayTicketId.substring(1); }); it('should again open the new ticket form', async() => { @@ -50,7 +47,7 @@ describe('Ticket create path', () => { await page.autocompleteSearch(selectors.createTicketView.client, 'Clark Kent'); await page.pickDate(selectors.createTicketView.deliveryDate, nextMonth); await page.autocompleteSearch(selectors.createTicketView.warehouse, 'Warehouse One'); - await page.autocompleteSearch(selectors.createTicketView.agency, 'Silla247'); + await page.autocompleteSearch(selectors.createTicketView.agency, 'Gotham247'); await page.waitToClick(selectors.createTicketView.createButton); const message = await page.waitForSnackbar(); @@ -61,15 +58,6 @@ describe('Ticket create path', () => { await page.waitForState('ticket.card.summary'); }); - it('should make the previously created ticket the stowaway of the current ticket', async() => { - await page.waitToClick(selectors.ticketDescriptor.moreMenu); - await page.waitToClick(selectors.ticketDescriptor.moreMenuAddStowaway); - await page.waitToClick(selectors.ticketDescriptor.addStowawayDialogFirstTicket); - const message = await page.waitForSnackbar(); - - expect(message.text).toContain('Data saved!'); - }); - it('should delete the current ticket', async() => { await page.waitToClick(selectors.ticketDescriptor.moreMenu); await page.waitToClick(selectors.ticketDescriptor.moreMenuDeleteTicket); @@ -78,11 +66,4 @@ describe('Ticket create path', () => { expect(message.text).toContain('Ticket deleted. You can undo this action within the first hour'); }); - - it('should search for the stowaway ticket of the previously deleted ticket', async() => { - await page.accessToSearchResult(stowawayTicketId); - const result = await page.countElement(selectors.ticketDescriptor.shipButton); - - expect(result).toBe(0); - }); }); diff --git a/e2e/paths/05-ticket/20_moveExpedition.spec.js b/e2e/paths/05-ticket/20_moveExpedition.spec.js new file mode 100644 index 000000000..cf1c5ded3 --- /dev/null +++ b/e2e/paths/05-ticket/20_moveExpedition.spec.js @@ -0,0 +1,50 @@ +import selectors from '../../helpers/selectors.js'; +import getBrowser from '../../helpers/puppeteer'; + +describe('Ticket expeditions', () => { + let browser; + let page; + + beforeAll(async() => { + browser = await getBrowser(); + page = browser.page; + await page.loginAndModule('production', 'ticket'); + await page.accessToSearchResult('1'); + await page.accessToSection('ticket.card.expedition'); + }); + + afterAll(async() => { + await browser.close(); + }); + + it(`should move one expedition to new ticket withoute route`, async() => { + await page.waitToClick(selectors.ticketExpedition.thirdSaleCheckbox); + await page.waitToClick(selectors.ticketExpedition.moveExpeditionButton); + await page.waitToClick(selectors.ticketExpedition.moreMenuWithoutRoute); + await page.waitToClick(selectors.ticketExpedition.saveButton); + await page.waitForState('ticket.card.summary'); + await page.accessToSection('ticket.card.expedition'); + + await page.waitForSelector(selectors.ticketExpedition.expeditionRow, {}); + const result = await page + .countElement(selectors.ticketExpedition.expeditionRow); + + expect(result).toEqual(1); + }); + + it(`should move one expedition to new ticket with route`, async() => { + await page.waitToClick(selectors.ticketExpedition.firstSaleCheckbox); + await page.waitToClick(selectors.ticketExpedition.moveExpeditionButton); + await page.waitToClick(selectors.ticketExpedition.moreMenuWithRoute); + await page.write(selectors.ticketExpedition.newRouteId, '1'); + await page.waitToClick(selectors.ticketExpedition.saveButton); + await page.waitForState('ticket.card.summary'); + await page.accessToSection('ticket.card.expedition'); + + await page.waitForSelector(selectors.ticketExpedition.expeditionRow, {}); + const result = await page + .countElement(selectors.ticketExpedition.expeditionRow); + + expect(result).toEqual(1); + }); +}); diff --git a/e2e/paths/06-claim/01_basic_data.spec.js b/e2e/paths/06-claim/01_basic_data.spec.js index 5dfd54c4e..0a08cad9f 100644 --- a/e2e/paths/06-claim/01_basic_data.spec.js +++ b/e2e/paths/06-claim/01_basic_data.spec.js @@ -22,8 +22,8 @@ describe('Claim edit basic data path', () => { it(`should edit claim state and observation fields`, async() => { await page.autocompleteSearch(selectors.claimBasicData.claimState, 'Gestionado'); - await page.clearTextarea(selectors.claimBasicData.observation); - await page.write(selectors.claimBasicData.observation, 'edited observation'); + await page.clearInput(selectors.claimBasicData.packages); + await page.write(selectors.claimBasicData.packages, '2'); await page.waitToClick(selectors.claimBasicData.saveButton); const message = await page.waitForSnackbar(); @@ -57,17 +57,17 @@ describe('Claim edit basic data path', () => { expect(hasToPickUpCheckbox).toBe('checked'); }); - it('should confirm the claim observation was edited', async() => { + it('should confirm the claim packages was edited', async() => { const result = await page - .waitToGetProperty(selectors.claimBasicData.observation, 'value'); + .waitToGetProperty(selectors.claimBasicData.packages, 'value'); - expect(result).toEqual('edited observation'); + expect(result).toEqual('2'); }); it(`should edit the claim to leave it untainted`, async() => { await page.autocompleteSearch(selectors.claimBasicData.claimState, 'Pendiente'); - await page.clearTextarea(selectors.claimBasicData.observation); - await page.write(selectors.claimBasicData.observation, 'Observation one'); + await page.clearInput(selectors.claimBasicData.packages); + await page.write(selectors.claimBasicData.packages, '0'); await page.waitToClick(selectors.claimBasicData.saveButton); const message = await page.waitForSnackbar(); diff --git a/e2e/paths/06-claim/02_development.spec.js b/e2e/paths/06-claim/02_development.spec.js index 77aae1f2c..b7352dcc2 100644 --- a/e2e/paths/06-claim/02_development.spec.js +++ b/e2e/paths/06-claim/02_development.spec.js @@ -66,7 +66,7 @@ describe('Claim development', () => { .waitToGetProperty(selectors.claimDevelopment.firstClaimRedelivery, 'value'); expect(reason).toEqual('Calor'); - expect(result).toEqual('Cocido'); + expect(result).toEqual('Baboso/Cocido'); expect(responsible).toEqual('Calidad general'); expect(worker).toEqual('adminAssistantNick'); expect(redelivery).toEqual('Cliente'); diff --git a/e2e/paths/06-claim/04_claim_action.spec.js b/e2e/paths/06-claim/04_claim_action.spec.js index 1170e0c9c..62a0ac232 100644 --- a/e2e/paths/06-claim/04_claim_action.spec.js +++ b/e2e/paths/06-claim/04_claim_action.spec.js @@ -24,22 +24,6 @@ describe('Claim action path', () => { expect(message.text).toContain('Data saved!'); }); - it('should import the second importable ticket', async() => { - await page.waitToClick(selectors.claimAction.importTicketButton); - await page.waitToClick(selectors.claimAction.secondImportableTicket); - const message = await page.waitForSnackbar(); - - expect(message.text).toContain('Data saved!'); - }); - - it('should edit the second line destination field', async() => { - await page.waitForContentLoaded(); - await page.autocompleteSearch(selectors.claimAction.secondLineDestination, 'Bueno'); - const message = await page.waitForSnackbar(); - - expect(message.text).toContain('Data saved!'); - }); - it('should delete the first line', async() => { await page.waitToClick(selectors.claimAction.firstDeleteLine); const message = await page.waitForSnackbar(); @@ -47,18 +31,11 @@ describe('Claim action path', () => { expect(message.text).toContain('Data saved!'); }); - it('should refresh the view to check the remaining line is the expected one', async() => { + it('should refresh the view to check not have lines', async() => { await page.reloadSection('claim.card.action'); - const result = await page.waitToGetProperty(selectors.claimAction.firstLineDestination, 'value'); + const result = await page.countElement(selectors.claimAction.anyLine); - expect(result).toEqual('Bueno'); - }); - - it('should delete the current first line', async() => { - await page.waitToClick(selectors.claimAction.firstDeleteLine); - const message = await page.waitForSnackbar(); - - expect(message.text).toContain('Data saved!'); + expect(result).toEqual(0); }); it('should check the "is paid with mana" checkbox', async() => { diff --git a/e2e/paths/06-claim/05_summary.spec.js b/e2e/paths/06-claim/05_summary.spec.js index cea5edb55..00b021f88 100644 --- a/e2e/paths/06-claim/05_summary.spec.js +++ b/e2e/paths/06-claim/05_summary.spec.js @@ -1,3 +1,4 @@ + import selectors from '../../helpers/selectors.js'; import getBrowser from '../../helpers/puppeteer'; @@ -36,9 +37,9 @@ describe('Claim summary path', () => { }); it('should display the observation', async() => { - const result = await page.waitToGetProperty(selectors.claimSummary.observation, 'value'); + const result = await page.waitToGetProperty(selectors.claimSummary.observation, 'innerText'); - expect(result).toContain('observation four'); + expect(result).toContain('Wisi forensibus mnesarchum in cum. Per id impetus abhorreant'); }); it('should display the claimed line(s)', async() => { diff --git a/e2e/paths/06-claim/07_note.spec.js b/e2e/paths/06-claim/07_note.spec.js new file mode 100644 index 000000000..830f77cbe --- /dev/null +++ b/e2e/paths/06-claim/07_note.spec.js @@ -0,0 +1,46 @@ +import selectors from '../../helpers/selectors'; +import getBrowser from '../../helpers/puppeteer'; + +describe('Claim Add note path', () => { + let browser; + let page; + beforeAll(async() => { + browser = await getBrowser(); + page = browser.page; + await page.loginAndModule('salesPerson', 'claim'); + await page.accessToSearchResult('2'); + await page.accessToSection('claim.card.note.index'); + }); + + afterAll(async() => { + await browser.close(); + }); + + it(`should reach the claim note index`, async() => { + await page.waitForState('claim.card.note.index'); + }); + + it(`should click on the add new note button`, async() => { + await page.waitToClick(selectors.claimNote.addNoteFloatButton); + await page.waitForState('claim.card.note.create'); + }); + + it(`should create a new note`, async() => { + await page.waitForSelector(selectors.claimNote.note); + await page.type(`${selectors.claimNote.note} textarea`, 'The delivery was unsuccessful'); + await page.waitToClick(selectors.claimNote.saveButton); + const message = await page.waitForSnackbar(); + + expect(message.text).toContain('Data saved!'); + }); + + it(`should redirect back to the claim notes page`, async() => { + await page.waitForState('claim.card.note.index'); + }); + + it('should confirm the note was created', async() => { + const result = await page.waitToGetProperty(selectors.claimNote.firstNoteText, 'innerText'); + + expect(result).toEqual('The delivery was unsuccessful'); + }); +}); diff --git a/e2e/paths/07-order/01_summary.spec.js b/e2e/paths/07-order/01_summary.spec.js index 9b9e37998..922d5eeee 100644 --- a/e2e/paths/07-order/01_summary.spec.js +++ b/e2e/paths/07-order/01_summary.spec.js @@ -34,7 +34,7 @@ describe('Order summary path', () => { it('should check the summary contains the order consignee', async() => { const result = await page.waitToGetProperty(selectors.orderSummary.consignee, 'innerText'); - expect(result).toEqual('address 26 - Silla (Province one)'); + expect(result).toEqual('address 26 - Gotham (Province one)'); }); it('should check the summary contains the order subtotal', async() => { diff --git a/e2e/paths/08-route/01_summary.spec.js b/e2e/paths/08-route/01_summary.spec.js index 02cc71f2f..44f66ba2d 100644 --- a/e2e/paths/08-route/01_summary.spec.js +++ b/e2e/paths/08-route/01_summary.spec.js @@ -9,7 +9,8 @@ describe('Route summary path', () => { browser = await getBrowser(); page = browser.page; await page.loginAndModule('employee', 'route'); - await page.waitToClick('vn-route-index vn-tbody > a:nth-child(1)'); + await page.waitToClick(selectors.routeIndex.previewButton); + await page.waitToClick(selectors.routeSummary.goToRouteSummaryButton); }); afterAll(async() => { @@ -34,6 +35,8 @@ describe('Route summary path', () => { }); it('should click on the first ticket ID making the descriptor popover visible', async() => { + await page.waitForState('route.card.summary'); + await page.waitForTimeout(250); await page.waitToClick(selectors.routeSummary.firstTicketID); await page.waitForSelector(selectors.routeSummary.firstTicketDescriptor); const visible = await page.isVisible(selectors.routeSummary.firstTicketDescriptor); diff --git a/e2e/paths/09-invoice-in/04_tax.spec.js b/e2e/paths/09-invoice-in/04_tax.spec.js index 364a25d7e..b1dbe2008 100644 --- a/e2e/paths/09-invoice-in/04_tax.spec.js +++ b/e2e/paths/09-invoice-in/04_tax.spec.js @@ -19,7 +19,7 @@ describe('InvoiceIn tax path', () => { it('should add a new tax', async() => { await page.waitToClick(selectors.invoiceInTax.addTaxButton); - await page.autocompleteSearch(selectors.invoiceInTax.thirdExpence, '6210000567'); + await page.autocompleteSearch(selectors.invoiceInTax.thirdExpense, '6210000567'); await page.write(selectors.invoiceInTax.thirdTaxableBase, '100'); await page.autocompleteSearch(selectors.invoiceInTax.thirdTaxType, '6'); await page.autocompleteSearch(selectors.invoiceInTax.thirdTransactionType, 'Operaciones exentas'); @@ -37,9 +37,9 @@ describe('InvoiceIn tax path', () => { expect(result).toEqual('Taxable base €1,323.16'); }); - it('should navigate back to the tax section and check the reciently added line contains the expected expense', async() => { + it('should navigate back to tax section, check the reciently added line contains the expected expense', async() => { await page.accessToSection('invoiceIn.card.tax'); - const result = await page.waitToGetProperty(selectors.invoiceInTax.thirdExpence, 'value'); + const result = await page.waitToGetProperty(selectors.invoiceInTax.thirdExpense, 'value'); expect(result).toEqual('6210000567: Alquiler VNH'); }); diff --git a/e2e/paths/09-invoice-out/03_manualInvoice.spec.js b/e2e/paths/09-invoice-out/03_manualInvoice.spec.js index 396f84bfb..fa7cbed29 100644 --- a/e2e/paths/09-invoice-out/03_manualInvoice.spec.js +++ b/e2e/paths/09-invoice-out/03_manualInvoice.spec.js @@ -22,7 +22,7 @@ describe('InvoiceOut manual invoice path', () => { }); it('should create an invoice from a ticket', async() => { - await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceTicket, '7'); + await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceTicket, '15'); await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceSerial, 'Global nacional'); await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceTaxArea, 'national'); await page.waitToClick(selectors.invoiceOutIndex.saveInvoice); @@ -50,7 +50,7 @@ describe('InvoiceOut manual invoice path', () => { }); it('should create an invoice from a client', async() => { - await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceClient, 'Charles Xavier'); + await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceClient, 'Max Eisenhardt'); await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceSerial, 'Global nacional'); await page.autocompleteSearch(selectors.invoiceOutIndex.manualInvoiceTaxArea, 'national'); await page.waitToClick(selectors.invoiceOutIndex.saveInvoice); diff --git a/e2e/paths/10-travel/03_descriptor.spec.js b/e2e/paths/10-travel/03_descriptor.spec.js index 619228f35..f459ef043 100644 --- a/e2e/paths/10-travel/03_descriptor.spec.js +++ b/e2e/paths/10-travel/03_descriptor.spec.js @@ -134,7 +134,7 @@ describe('Travel descriptor path', () => { }); it('should navigate to the summary and then clone the travel and its entries using the descriptor menu to get redirected to the cloned travel basic data', async() => { - await page.waitToClick('vn-icon[icon="preview"]'); // summary icon + await page.waitToClick('vn-icon[icon="launch"]'); await page.waitForState('travel.card.summary'); await page.waitForTimeout(1000); await page.waitToClick(selectors.travelDescriptor.dotMenu); diff --git a/e2e/paths/10-travel/04_extra_community.spec.js b/e2e/paths/10-travel/04_extra_community.spec.js index e4a859192..c5975c958 100644 --- a/e2e/paths/10-travel/04_extra_community.spec.js +++ b/e2e/paths/10-travel/04_extra_community.spec.js @@ -22,6 +22,10 @@ describe('Travel extra community path', () => { await page.writeOnEditableTD(selectors.travelExtraCommunity.firstTravelReference, 'edited reference'); await page.waitForSpinnerLoad(); await page.writeOnEditableTD(selectors.travelExtraCommunity.firstTravelLockedKg, '1500'); + + const message = await page.waitForSnackbar(); + + expect(message.text).toContain('Data saved!'); }); it('should reload the index and confirm the reference and locked kg were edited', async() => { diff --git a/e2e/paths/12-entry/02_descriptor.spec.js b/e2e/paths/12-entry/02_descriptor.spec.js index 699d00517..997a6065c 100644 --- a/e2e/paths/12-entry/02_descriptor.spec.js +++ b/e2e/paths/12-entry/02_descriptor.spec.js @@ -29,7 +29,7 @@ describe('Entry descriptor path', () => { it('should click the travels button to be redirected to the travels index filtered by the current agency', async() => { await page.waitToClick(selectors.entryDescriptor.travelsQuicklink); await page.expectURL('/travel/index'); - await page.expectURL('agencyFk'); + await page.expectURL('agencyModeFk'); }); it('should go back to the entry summary', async() => { diff --git a/e2e/paths/12-entry/05_basicData.spec.js b/e2e/paths/12-entry/05_basicData.spec.js index c1aa14019..3b5f40c35 100644 --- a/e2e/paths/12-entry/05_basicData.spec.js +++ b/e2e/paths/12-entry/05_basicData.spec.js @@ -19,6 +19,7 @@ describe('Entry basic data path', () => { it('should edit the basic data', async() => { await page.write(selectors.entryBasicData.reference, 'new movement 8'); + await page.write(selectors.entryBasicData.invoiceNumber, 'new movement 8'); await page.write(selectors.entryBasicData.notes, 'new notes'); await page.write(selectors.entryBasicData.observations, ' edited'); await page.autocompleteSearch(selectors.entryBasicData.supplier, 'Plants nick'); @@ -45,6 +46,13 @@ describe('Entry basic data path', () => { expect(result).toEqual('new movement 8'); }); + it('should confirm the invoiceNumber was edited', async() => { + await page.reloadSection('entry.card.basicData'); + const result = await page.waitToGetProperty(selectors.entryBasicData.invoiceNumber, 'value'); + + expect(result).toEqual('new movement 8'); + }); + it('should confirm the note was edited', async() => { const result = await page.waitToGetProperty(selectors.entryBasicData.notes, 'value'); diff --git a/e2e/paths/13-supplier/03_fiscal_data.spec.js b/e2e/paths/13-supplier/03_fiscal_data.spec.js index 0238c8704..4f9581e32 100644 --- a/e2e/paths/13-supplier/03_fiscal_data.spec.js +++ b/e2e/paths/13-supplier/03_fiscal_data.spec.js @@ -31,7 +31,7 @@ describe('Supplier fiscal data path', () => { await page.clearInput(selectors.supplierFiscalData.taxNumber); await page.write(selectors.supplierFiscalData.taxNumber, 'Wrong tax number'); await page.clearInput(selectors.supplierFiscalData.account); - await page.write(selectors.supplierFiscalData.account, 'edited account number'); + await page.write(selectors.supplierFiscalData.account, '0123456789'); await page.autocompleteSearch(selectors.supplierFiscalData.sageWihholding, 'retencion estimacion objetiva'); await page.autocompleteSearch(selectors.supplierFiscalData.sageTaxType, 'operaciones no sujetas'); @@ -70,7 +70,7 @@ describe('Supplier fiscal data path', () => { it('should check the account was edited', async() => { const result = await page.waitToGetProperty(selectors.supplierFiscalData.account, 'value'); - expect(result).toEqual('edited account number'); + expect(result).toEqual('0123456789'); }); it('should check the sageWihholding was edited', async() => { diff --git a/e2e/paths/14-account/01_create_and_basic_data.spec.js b/e2e/paths/14-account/01_create_and_basic_data.spec.js index 42d5b2f68..54e4d1f12 100644 --- a/e2e/paths/14-account/01_create_and_basic_data.spec.js +++ b/e2e/paths/14-account/01_create_and_basic_data.spec.js @@ -36,8 +36,7 @@ describe('Account create and basic data path', () => { await page.waitForState('account.card.basicData'); }); - it('should reload the section and check the name is as expected', async() => { - await page.reloadSection('account.card.basicData'); + it('should check the name is as expected', async() => { const result = await page.waitToGetProperty(selectors.accountBasicData.name, 'value'); expect(result).toEqual('Remy'); @@ -63,27 +62,6 @@ describe('Account create and basic data path', () => { }); describe('Descriptor option', () => { - describe('Edit role', () => { - it('should edit the role using the descriptor menu', async() => { - await page.waitToClick(selectors.accountDescriptor.menuButton); - await page.waitToClick(selectors.accountDescriptor.changeRole); - await page.autocompleteSearch(selectors.accountDescriptor.newRole, 'adminBoss'); - await page.waitToClick(selectors.accountDescriptor.acceptButton); - const message = await page.waitForSnackbar(); - - expect(message.text).toContain('Role changed succesfully!'); - }); - - it('should reload the roles section to see now there are more roles', async() => { - // when role updates db takes time to return changes, without this timeout the result would have been 3 - await page.waitForTimeout(1000); - await page.reloadSection('account.card.roles'); - const rolesCount = await page.countElement(selectors.accountRoles.anyResult); - - expect(rolesCount).toEqual(35); - }); - }); - describe('activate account', () => { it(`should check the active account icon isn't present in the descriptor`, async() => { await page.waitForNumberOfElements(selectors.accountDescriptor.activeAccountIcon, 0); @@ -103,25 +81,39 @@ describe('Account create and basic data path', () => { }); }); - // creating the account without the active property set to true seems to be creating an active user anyways - // describe('activate user', () => { - // it(`should check the inactive user icon is present in the descriptor`, async() => { - // await page.waitForSelector(selectors.accountDescriptor.activeUserIcon, {visible: true}); - // }); + describe('deactivate user', () => { + it(`should check the inactive user icon isn't present in the descriptor just yet`, async() => { + await page.waitForNumberOfElements(selectors.accountDescriptor.activeUserIcon, 0); + }); - // it('should activate the user using the descriptor menu', async() => { - // await page.waitToClick(selectors.accountDescriptor.menuButton); - // await page.waitToClick(selectors.accountDescriptor.activateUser); - // await page.waitToClick(selectors.accountDescriptor.acceptButton); - // const message = await page.waitForSnackbar(); + it('should deactivate the user using the descriptor menu', async() => { + await page.waitToClick(selectors.accountDescriptor.menuButton); + await page.waitToClick(selectors.accountDescriptor.deactivateUser); + await page.waitToClick(selectors.accountDescriptor.acceptButton); + const message = await page.waitForSnackbar(); - // expect(message.text).toContain('user enabled?'); - // }); + expect(message.text).toContain('User deactivated!'); + }); - // it('should check the inactive user icon is not present anymore', async() => { - // await page.waitForNumberOfElements(selectors.accountDescriptor.activeUserIcon, 0); - // }); - // }); + it('should check the inactive user icon is now present', async() => { + await page.waitForNumberOfElements(selectors.accountDescriptor.activeUserIcon, 1); + }); + }); + + describe('activate user', () => { + it('should activate the user using the descriptor menu', async() => { + await page.waitToClick(selectors.accountDescriptor.menuButton); + await page.waitToClick(selectors.accountDescriptor.activateUser); + await page.waitToClick(selectors.accountDescriptor.acceptButton); + const message = await page.waitForSnackbar(); + + expect(message.text).toContain('User activated!'); + }); + + it('should check the inactive user icon is not present anymore', async() => { + await page.waitForNumberOfElements(selectors.accountDescriptor.activeUserIcon, 0); + }); + }); describe('mail forwarding', () => { it('should activate the mail forwarding and set the recipent email', async() => { @@ -137,10 +129,12 @@ describe('Account create and basic data path', () => { describe('Set password', () => { it('should set the password using the descriptor menu', async() => { + const newPassword = 'quantum.12345'; + await page.waitToClick(selectors.accountDescriptor.menuButton); await page.waitToClick(selectors.accountDescriptor.setPassword); - await page.write(selectors.accountDescriptor.newPassword, 'quantum.crypt0graphy'); - await page.write(selectors.accountDescriptor.repeatPassword, 'quantum.crypt0graphy'); + await page.write(selectors.accountDescriptor.newPassword, newPassword); + await page.write(selectors.accountDescriptor.repeatPassword, newPassword); await page.waitToClick(selectors.accountDescriptor.acceptButton); const message = await page.waitForSnackbar(); diff --git a/e2e/paths/14-account/02_alias_create_and_basic_data.spec.js b/e2e/paths/14-account/02_alias_create_and_basic_data.spec.js index 0514899bc..dd35dd740 100644 --- a/e2e/paths/14-account/02_alias_create_and_basic_data.spec.js +++ b/e2e/paths/14-account/02_alias_create_and_basic_data.spec.js @@ -56,7 +56,7 @@ describe('Account Alias create and basic data path', () => { expect(result).toContain('psykers'); }); - it('should search for the IT alias group then access to the users section then check the role listed is the expected one', async() => { + it('should search IT alias then access the user section to check the role listed is the expected one', async() => { await page.accessToSearchResult('IT'); await page.accessToSection('account.alias.card.users'); const rolesCount = await page.countElement(selectors.accountAliasUsers.anyResult); diff --git a/e2e/paths/14-account/04_acl.spec.js b/e2e/paths/14-account/04_acl.spec.js new file mode 100644 index 000000000..c400dbfb2 --- /dev/null +++ b/e2e/paths/14-account/04_acl.spec.js @@ -0,0 +1,60 @@ +import selectors from '../../helpers/selectors.js'; +import getBrowser from '../../helpers/puppeteer'; + +describe('Account ACL path', () => { + let browser; + let page; + + beforeAll(async() => { + browser = await getBrowser(); + page = browser.page; + await page.loginAndModule('developer', 'account'); + await page.accessToSection('account.acl'); + }); + + afterAll(async() => { + await browser.close(); + }); + + it('should go to create new acl', async() => { + await page.waitToClick(selectors.accountAcl.addAcl); + await page.waitForState('account.acl.create'); + }); + + it('should create new acl', async() => { + await page.autocompleteSearch(selectors.accountAcl.role, 'sysadmin'); + await page.autocompleteSearch(selectors.accountAcl.model, 'UserAccount'); + await page.autocompleteSearch(selectors.accountAcl.accessType, '*'); + await page.autocompleteSearch(selectors.accountAcl.permission, 'ALLOW'); + await page.waitToClick(selectors.accountAcl.save); + const message = await page.waitForSnackbar(); + + expect(message.text).toContain('Data saved!'); + }); + + it('should navigate to edit', async() => { + await page.doSearch(); + await page.waitToClick(selectors.accountAcl.thirdAcl); + await page.waitForState('account.acl.edit'); + }); + + it('should edit the third acl', async() => { + await page.autocompleteSearch(selectors.accountAcl.model, 'Supplier'); + await page.autocompleteSearch(selectors.accountAcl.accessType, 'READ'); + await page.waitToClick(selectors.accountAcl.save); + const message = await page.waitForSnackbar(); + + expect(message.text).toContain('Data saved!'); + }); + + it('should delete the third result', async() => { + const result = await page.waitToGetProperty(selectors.accountAcl.thirdAcl, 'innerText'); + await page.waitToClick(selectors.accountAcl.deleteThirdAcl); + await page.waitToClick(selectors.globalItems.acceptButton); + const message = await page.waitForSnackbar(); + const newResult = await page.waitToGetProperty(selectors.accountAcl.thirdAcl, 'innerText'); + + expect(message.text).toContain('ACL removed'); + expect(result).not.toEqual(newResult); + }); +}); diff --git a/e2e/paths/14-account/05_connections.spec.js b/e2e/paths/14-account/05_connections.spec.js new file mode 100644 index 000000000..89b286101 --- /dev/null +++ b/e2e/paths/14-account/05_connections.spec.js @@ -0,0 +1,33 @@ +import selectors from '../../helpers/selectors.js'; +import getBrowser from '../../helpers/puppeteer'; + +describe('Account Connections path', () => { + let browser; + let page; + const account = 'sysadmin'; + + beforeAll(async() => { + browser = await getBrowser(); + page = browser.page; + await page.loginAndModule(account, 'account'); + await page.accessToSection('account.connections'); + }); + + afterAll(async() => { + await browser.close(); + }); + + it('should check this is the last connection', async() => { + const firstResult = await page.waitToGetProperty(selectors.accountConnections.firstConnection, 'innerText'); + + expect(firstResult).toContain(account); + }); + + it('should kill this connection and then get redirected to the login page', async() => { + await page.waitToClick(selectors.accountConnections.deleteFirstConnection); + await page.waitToClick(selectors.globalItems.acceptButton); + const message = await page.waitForSnackbar(); + + expect(message.text).toContain('Your session has expired, please login again'); + }); +}); diff --git a/e2e/paths/14-account/06_accounts.spec.js b/e2e/paths/14-account/06_accounts.spec.js new file mode 100644 index 000000000..83893e0cf --- /dev/null +++ b/e2e/paths/14-account/06_accounts.spec.js @@ -0,0 +1,49 @@ +import selectors from '../../helpers/selectors.js'; +import getBrowser from '../../helpers/puppeteer'; + +describe('Account Accounts path', () => { + let browser; + let page; + + beforeAll(async() => { + browser = await getBrowser(); + page = browser.page; + await page.loginAndModule('sysadmin', 'account'); + await page.accessToSection('account.accounts'); + }); + + afterAll(async() => { + await browser.close(); + }); + + it('should sync roles', async() => { + await page.waitToClick(selectors.accountAccounts.syncRoles); + const message = await page.waitForSnackbar(); + + expect(message.text).toContain('Roles synchronized!'); + }); + + it('should sync user', async() => { + await page.waitToClick(selectors.accountAccounts.syncUser); + await page.write(selectors.accountAccounts.syncUserName, 'sysadmin'); + await page.write(selectors.accountAccounts.syncUserPassword, 'nightmare'); + + await page.waitToClick(selectors.accountAccounts.buttonAccept); + + const message = await page.waitForSnackbar(); + + expect(message.text).toContain('User synchronized!'); + }); + + it('should relogin', async() => { + await page.loginAndModule('sysadmin', 'account'); + await page.accessToSection('account.accounts'); + }); + + it('should sync all', async() => { + await page.waitToClick(selectors.accountAccounts.syncAll); + const message = await page.waitForSnackbar(); + + expect(message.text).toContain('Synchronizing in the background'); + }); +}); diff --git a/e2e/paths/14-account/07_ldap.spec.js b/e2e/paths/14-account/07_ldap.spec.js new file mode 100644 index 000000000..eb22f695c --- /dev/null +++ b/e2e/paths/14-account/07_ldap.spec.js @@ -0,0 +1,41 @@ +import selectors from '../../helpers/selectors.js'; +import getBrowser from '../../helpers/puppeteer'; + +describe('Account LDAP path', () => { + let browser; + let page; + + beforeAll(async() => { + browser = await getBrowser(); + page = browser.page; + await page.loginAndModule('sysadmin', 'account'); + await page.accessToSection('account.ldap'); + }); + + afterAll(async() => { + await browser.close(); + }); + + it('should set data and save', async() => { + await page.waitToClick(selectors.accountLdap.checkEnable); + await page.write(selectors.accountLdap.server, '1234'); + await page.write(selectors.accountLdap.rdn, '1234'); + await page.write(selectors.accountLdap.password, 'nightmare'); + await page.write(selectors.accountLdap.userDn, 'sysadmin'); + await page.write(selectors.accountLdap.groupDn, '1234'); + await page.waitToClick(selectors.accountLdap.save); + + const message = await page.waitForSnackbar(); + + expect(message.text).toContain('Data saved!'); + }); + + it('should reset data', async() => { + await page.waitToClick(selectors.accountLdap.checkEnable); + await page.waitToClick(selectors.accountLdap.save); + + const message = await page.waitForSnackbar(); + + expect(message.text).toContain('Data saved!'); + }); +}); diff --git a/e2e/paths/14-account/08_samba.spec.js b/e2e/paths/14-account/08_samba.spec.js new file mode 100644 index 000000000..6e7ef9bbf --- /dev/null +++ b/e2e/paths/14-account/08_samba.spec.js @@ -0,0 +1,41 @@ +import selectors from '../../helpers/selectors.js'; +import getBrowser from '../../helpers/puppeteer'; + +describe('Account Samba path', () => { + let browser; + let page; + + beforeAll(async() => { + browser = await getBrowser(); + page = browser.page; + await page.loginAndModule('sysadmin', 'account'); + await page.accessToSection('account.samba'); + }); + + afterAll(async() => { + await browser.close(); + }); + + it('should set data and save', async() => { + await page.waitToClick(selectors.accountSamba.checkEnable); + await page.write(selectors.accountSamba.adDomain, '1234'); + await page.write(selectors.accountSamba.adController, '1234'); + await page.write(selectors.accountSamba.adUser, 'nightmare'); + await page.write(selectors.accountSamba.adPassword, 'sysadmin'); + await page.waitToClick(selectors.accountSamba.verifyCert); + await page.waitToClick(selectors.accountSamba.save); + + const message = await page.waitForSnackbar(); + + expect(message.text).toContain('Data saved!'); + }); + + it('should reset data', async() => { + await page.waitToClick(selectors.accountSamba.checkEnable); + await page.waitToClick(selectors.accountSamba.save); + + const message = await page.waitForSnackbar(); + + expect(message.text).toContain('Data saved!'); + }); +}); diff --git a/e2e/paths/14-account/09_privileges.spec.js b/e2e/paths/14-account/09_privileges.spec.js new file mode 100644 index 000000000..e4b8fb24c --- /dev/null +++ b/e2e/paths/14-account/09_privileges.spec.js @@ -0,0 +1,112 @@ +import selectors from '../../helpers/selectors.js'; +import getBrowser from '../../helpers/puppeteer'; + +describe('Account privileges path', () => { + let browser; + let page; + + beforeAll(async() => { + browser = await getBrowser(); + page = browser.page; + await page.loginAndModule('developer', 'account'); + await page.accessToSearchResult('1101'); + await page.accessToSection('account.card.privileges'); + }); + + afterAll(async() => { + await browser.close(); + }); + + describe('as developer', () => { + it('should throw error when give privileges', async() => { + await page.waitToClick(selectors.accountPrivileges.checkHasGrant); + await page.waitToClick(selectors.accountPrivileges.save); + + const message = await page.waitForSnackbar(); + + expect(message.text).toContain(`You don't have grant privilege`); + }); + + it('should throw error when change role', async() => { + await page.autocompleteSearch(selectors.accountPrivileges.role, 'employee'); + await page.waitToClick(selectors.accountPrivileges.save); + + const message = await page.waitForSnackbar(); + + expect(message.text).toContain(`You don't have grant privilege`); + }); + }); + + describe('as sysadmin', () => { + beforeAll(async() => { + await page.loginAndModule('sysadmin', 'account'); + await page.accessToSearchResult('9'); + await page.accessToSection('account.card.privileges'); + }); + + it('should give privileges', async() => { + await page.waitToClick(selectors.accountPrivileges.checkHasGrant); + await page.waitToClick(selectors.accountPrivileges.save); + const message = await page.waitForSnackbar(); + + await page.reloadSection('account.card.privileges'); + const result = await page.checkboxState(selectors.accountPrivileges.checkHasGrant); + + expect(message.text).toContain(`Data saved!`); + expect(result).toBe('checked'); + }); + + it('should throw error when change role and not own role', async() => { + await page.autocompleteSearch(selectors.accountPrivileges.role, 'itBoss'); + await page.waitToClick(selectors.accountPrivileges.save); + + const message = await page.waitForSnackbar(); + + expect(message.text).toContain(`You don't own the role and you can't assign it to another user`); + }); + + it('should change role to employee', async() => { + await page.autocompleteSearch(selectors.accountPrivileges.role, 'employee'); + await page.waitToClick(selectors.accountPrivileges.save); + const message = await page.waitForSnackbar(); + + await page.reloadSection('account.card.privileges'); + const result = await page.waitToGetProperty(selectors.accountPrivileges.role, 'value'); + + expect(message.text).toContain(`Data saved!`); + expect(result).toContain('employee'); + }); + + it('should return role to developer', async() => { + await page.autocompleteSearch(selectors.accountPrivileges.role, 'developer'); + await page.waitToClick(selectors.accountPrivileges.save); + const message = await page.waitForSnackbar(); + + await page.reloadSection('account.card.privileges'); + const result = await page.waitToGetProperty(selectors.accountPrivileges.role, 'value'); + + expect(message.text).toContain(`Data saved!`); + expect(result).toContain('developer'); + }); + }); + + describe('as developer again', () => { + it('should remove privileges', async() => { + await page.accessToSearchResult('9'); + await page.accessToSection('account.card.privileges'); + + await page.waitToClick(selectors.accountPrivileges.checkHasGrant); + await page.waitToClick(selectors.accountPrivileges.save); + const message = await page.waitForSnackbar(); + + expect(message.text).toContain(`Data saved!`); + }); + + it('should logIn in developer', async() => { + await page.reloadSection('account.card.privileges'); + const result = await page.checkboxState(selectors.accountPrivileges.checkHasGrant); + + expect(result).toBe('unchecked'); + }); + }); +}); diff --git a/front/core/components/crud-model/crud-model.js b/front/core/components/crud-model/crud-model.js index 4994e1547..1095985dc 100644 --- a/front/core/components/crud-model/crud-model.js +++ b/front/core/components/crud-model/crud-model.js @@ -99,6 +99,18 @@ export default class CrudModel extends ModelProxy { return this.refresh(); } + /** + * Applies a new filter to the model. + * + * @param {Object} params Custom parameters + * @return {Promise} The request promise + */ + + applyParams(params) { + this.userParams = params; + return this.refresh(); + } + removeFilter() { return this.applyFilter(null, null); } diff --git a/front/core/components/input-file/index.html b/front/core/components/input-file/index.html index 5ec7e1da4..14d138cfe 100644 --- a/front/core/components/input-file/index.html +++ b/front/core/components/input-file/index.html @@ -3,7 +3,7 @@ ng-transclude="prepend" class="prepend"> -
+
+ accept="{{$ctrl.accept}}">
diff --git a/front/core/components/input-file/style.scss b/front/core/components/input-file/style.scss index 44d11f774..72470c4fe 100644 --- a/front/core/components/input-file/style.scss +++ b/front/core/components/input-file/style.scss @@ -4,4 +4,13 @@ .value { cursor: pointer; } + .control { + & > input[type=file] { + opacity: 0; + } + & > section { + position: absolute; + bottom: 0; + } + } } \ No newline at end of file diff --git a/front/core/components/input-time/index.js b/front/core/components/input-time/index.js index d77ccbec2..0d01fbd32 100644 --- a/front/core/components/input-time/index.js +++ b/front/core/components/input-time/index.js @@ -23,12 +23,15 @@ export default class InputTime extends Field { let date = null; let value = this.input.value; + if (this.field && !this.modelDate) + this.modelDate = this.field; + if (value) { let split = value.split(':').map(i => parseInt(i) || null); - date = this.field instanceof Date - ? this.field - : new Date(this.field || null); + date = this.modelDate + ? new Date(this.modelDate) + : new Date(); date.setHours(split[0], split[1], 0, 0); } diff --git a/front/core/components/multi-check/locale/en.yml b/front/core/components/multi-check/locale/en.yml new file mode 100644 index 000000000..ea52dcf8f --- /dev/null +++ b/front/core/components/multi-check/locale/en.yml @@ -0,0 +1 @@ +SelectAllRows: Select the {{rows}} row(s) \ No newline at end of file diff --git a/front/core/components/multi-check/locale/es.yml b/front/core/components/multi-check/locale/es.yml new file mode 100644 index 000000000..5365c3392 --- /dev/null +++ b/front/core/components/multi-check/locale/es.yml @@ -0,0 +1,3 @@ +SelectAllRows: Seleccionar las {{rows}} fila(s) +All: Se han seleccionado +row(s) have been selected.: fila(s). \ No newline at end of file diff --git a/front/core/components/multi-check/multi-check.html b/front/core/components/multi-check/multi-check.html index fb950aaff..fe485e19b 100644 --- a/front/core/components/multi-check/multi-check.html +++ b/front/core/components/multi-check/multi-check.html @@ -2,4 +2,25 @@ ng-model="$ctrl.checked" indeterminate="$ctrl.isIndeterminate" translate-attr="{title: 'Check all'}"> - \ No newline at end of file + + + + + + All + + {{$ctrl.rows}} + + row(s) have been selected. + + {{$ctrl.allRowsText}} + + + \ No newline at end of file diff --git a/front/core/components/multi-check/multi-check.js b/front/core/components/multi-check/multi-check.js index afa1bc3c4..041603f13 100644 --- a/front/core/components/multi-check/multi-check.js +++ b/front/core/components/multi-check/multi-check.js @@ -106,6 +106,9 @@ export default class MultiCheck extends FormInput { this.toggle(); this.emit('change', value); + + if (!value) + this.checkedDummyCount = null; } /** @@ -132,12 +135,48 @@ export default class MultiCheck extends FormInput { areAllUnchecked() { if (!this.model || !this.model.data) return; + this.checkedDummyCount = null; const data = this.model.data; return data.every(item => { return item[this.checkField] === false; }); } + countRows() { + if (!this.model || !this.model.data) return; + + const data = this.model.data; + const params = { + filter: { + limit: null + } + }; + if (this.model.userFilter) + Object.assign(params.filter, this.model.userFilter); + if (this.model.userParams) + Object.assign(params, this.model.userParams); + + this.rows = data.length; + this.$http.get(this.model.url, {params}) + .then(res => { + this.allRowsCount = res.data.length; + this.allRowsText = this.$t('SelectAllRows', { + rows: this.allRowsCount + }); + }); + } + + checkDummy() { + if (this.checkedDummyCount) + return this.checkedDummyCount = null; + + this.checkedDummyCount = this.allRowsCount; + } + + isCheckedDummy() { + return this.checked && this.checkDummyEnabled; + } + /** * Toggles checked property on * all instances @@ -158,7 +197,9 @@ ngModule.vnComponent('vnMultiCheck', { checkField: '@?', checkAll: '=?', checked: '=?', - disabled: ' { let controller; let $element; + let $httpBackend; + let $httpParamSerializer; beforeEach(ngModule('vnCore')); - beforeEach(inject($componentController => { + beforeEach(inject(($componentController, _$httpBackend_, _$httpParamSerializer_) => { + $httpBackend = _$httpBackend_; + $httpParamSerializer = _$httpParamSerializer_; $element = angular.element(`
`); controller = $componentController('vnMultiCheck', {$element: $element}); controller._model = crudModel; @@ -26,6 +30,14 @@ describe('Component vnMultiCheck', () => { expect(controller._checked).toEqual(crudModel); expect(controller.toggle).toHaveBeenCalledWith(); }); + + it(`should set checkedDummyCount to null`, () => { + jest.spyOn(controller, 'toggle'); + controller.checkedDummyCount = 12; + controller.checked = null; + + expect(controller.checkedDummyCount).toBeNull(); + }); }); describe('toggle()', () => { @@ -132,4 +144,76 @@ describe('Component vnMultiCheck', () => { expect(thirdRow.checked).toBeTruthy(); }); }); + + describe('countRows()', () => { + it(`should count visible rows and all rows of model`, () => { + controller.model.url = 'modelUrl/filter'; + const data = controller.model.data; + const filter = { + limit: null + }; + const serializedParams = $httpParamSerializer({filter}); + + const response = [ + {id: 1, name: 'My item 1'}, + {id: 2, name: 'My item 2'}, + {id: 3, name: 'My item 3'}, + {id: 4, name: 'My item 4'}, + {id: 5, name: 'My item 5'}, + {id: 6, name: 'My item 6'} + ]; + + controller.countRows(); + $httpBackend.expectGET(`modelUrl/filter?${serializedParams}`).respond(response); + $httpBackend.flush(); + + expect(controller.rows).toEqual(data.length); + expect(controller.allRowsCount).toEqual(response.length); + expect(controller.allRowsCount).toBeGreaterThan(controller.rows); + }); + }); + + describe('checkDummy()', () => { + const allRows = 1234; + it(`should set the checked dummy count to all rows count if there was no count yet`, () => { + controller.checkedDummyCount = null; + controller.allRowsCount = allRows; + controller.checkDummy(); + + expect(controller.checkedDummyCount).toEqual(controller.allRowsCount); + }); + + it(`should remove the dummy count if there was an existing one`, () => { + controller.checkedDummyCount = allRows; + controller.checkDummy(); + + expect(controller.checkedDummyCount).toBeNull(); + }); + }); + + describe('isCheckedDummy()', () => { + it(`should return true only if is checked and checked dummy is enabled`, () => { + controller.checked = true; + controller.checkDummyEnabled = true; + const isCheckedDummy = controller.isCheckedDummy(); + + expect(isCheckedDummy).toEqual(true); + }); + + it(`should return false if not checked`, () => { + controller.checked = false; + controller.checkDummyEnabled = true; + const isCheckedDummy = controller.isCheckedDummy(); + + expect(isCheckedDummy).toEqual(false); + }); + + it(`should return false if checked dummy is disabled`, () => { + controller.checked = true; + controller.checkDummyEnabled = false; + const isCheckedDummy = controller.isCheckedDummy(); + + expect(isCheckedDummy).toEqual(false); + }); + }); }); diff --git a/front/core/components/multi-check/style.scss b/front/core/components/multi-check/style.scss index 79c2397bc..15f462e8f 100644 --- a/front/core/components/multi-check/style.scss +++ b/front/core/components/multi-check/style.scss @@ -1,5 +1,10 @@ +@import "variables"; vn-multi-check { .vn-check { margin-bottom: 12px } +} + +.bold{ + font-weight: bold; } \ No newline at end of file diff --git a/front/core/components/searchbar/searchbar.js b/front/core/components/searchbar/searchbar.js index 89b5d7df6..10ec1f608 100644 --- a/front/core/components/searchbar/searchbar.js +++ b/front/core/components/searchbar/searchbar.js @@ -139,8 +139,12 @@ export default class Searchbar extends Component { } removeParam(index) { + const field = this.params[index].key; + this.filterSanitizer(field); + this.params.splice(index, 1); - this.doSearch(this.fromBar(), 'bar'); + this.toRemove = field; + this.doSearch(this.fromBar(), 'removeBar'); } fromBar() { @@ -163,7 +167,7 @@ export default class Searchbar extends Component { let keys = Object.keys(filter); keys.forEach(key => { - if (key == 'search') return; + if (key == 'search' || key == 'tableQ' || key == 'tableOrder') return; let value = filter[key]; let chip; @@ -198,6 +202,7 @@ export default class Searchbar extends Component { let promise = this.onSearch({$params: filter}); promise = promise || this.$q.resolve(); promise.then(data => this.onFilter(filter, source, data)); + this.toBar(filter); } onFilter(filter, source, data) { @@ -238,8 +243,11 @@ export default class Searchbar extends Component { } else { state = this.searchState; - if (filter) + if (filter) { + if (this.tableQ) + filter.tableQ = this.tableQ; params = {q: JSON.stringify(filter)}; + } if (this.$state.is(state)) opts = {location: 'replace'}; } @@ -247,6 +255,12 @@ export default class Searchbar extends Component { this.filter = filter; + if (source == 'removeBar') { + delete params[this.toRemove]; + delete this.model.userParams[this.toRemove]; + this.model.refresh(); + } + if (!filter && this.model) this.model.clear(); if (source != 'state') @@ -269,9 +283,14 @@ export default class Searchbar extends Component { this.model.clear(); return; } + if (Object.keys(filter).length === 0) { + this.filterSanitizer('search'); + if (this.model.userParams) + delete this.model.userParams['search']; + } let where = null; - let params = null; + let params = {}; if (this.exprBuilder) { where = buildFilter(filter, @@ -283,9 +302,89 @@ export default class Searchbar extends Component { params = this.fetchParams({$params: params}); } + this.tableQ = null; + + const hasParams = this.$params.q && Object.keys(JSON.parse(this.$params.q)).length; + if (hasParams) { + const stateFilter = JSON.parse(this.$params.q); + for (let param in stateFilter) { + if (param != 'tableQ' && param != 'orderQ') + this.filterSanitizer(param); + } + + for (let param in this.suggestedFilter) { + this.filterSanitizer(param); + delete stateFilter[param]; + } + + this.tableQ = stateFilter.tableQ; + for (let param in stateFilter.tableQ) + params[param] = stateFilter.tableQ[param]; + + Object.assign(stateFilter, params); + return this.model.applyParams(params) + .then(() => this.model.data); + } + return this.model.applyFilter(where ? {where} : null, params) .then(() => this.model.data); } + + filterSanitizer(field) { + if (!field) return; + const userFilter = this.model.userFilter; + const userParams = this.model.userParams; + const where = userFilter && userFilter.where; + + if (this.model.userParams) + delete this.model.userParams[field]; + + if (this.exprBuilder) { + const param = this.exprBuilder({ + param: field, + value: null + }); + if (param) [field] = Object.keys(param); + } + + if (!where) return; + + const whereKeys = Object.keys(where); + for (let key of whereKeys) { + removeProp(where, field, key); + + if (Object.keys(where).length == 0) + delete userFilter.where; + } + + function removeProp(obj, targetProp, prop) { + if (prop == targetProp) + delete obj[prop]; + + if (prop === 'and' || prop === 'or' && obj[prop]) { + const arrayCopy = obj[prop].slice(); + for (let param of arrayCopy) { + const [key] = Object.keys(param); + const index = obj[prop].findIndex(param => { + return Object.keys(param)[0] == key; + }); + if (key == targetProp) + obj[prop].splice(index, 1); + + if (param[key] instanceof Array) + removeProp(param, field, key); + + if (Object.keys(param).length == 0) + obj[prop].splice(index, 1); + } + + if (obj[prop].length == 0) + delete obj[prop]; + } + } + + return {userFilter, userParams}; + } } ngModule.vnComponent('vnSearchbar', { diff --git a/front/core/components/searchbar/searchbar.spec.js b/front/core/components/searchbar/searchbar.spec.js index e4f58d294..ed8fd9d07 100644 --- a/front/core/components/searchbar/searchbar.spec.js +++ b/front/core/components/searchbar/searchbar.spec.js @@ -6,7 +6,7 @@ describe('Component vnSearchbar', () => { let $state; let $params; let $scope; - let filter = {id: 1, search: 'needle'}; + const filter = {id: 1, search: 'needle'}; beforeEach(ngModule('vnCore', $stateProvider => { $stateProvider @@ -70,8 +70,8 @@ describe('Component vnSearchbar', () => { describe('filter() setter', () => { it(`should update the bar params and search`, () => { - let withoutHours = new Date(2000, 1, 1); - let withHours = new Date(withoutHours.getTime()); + const withoutHours = new Date(2000, 1, 1); + const withHours = new Date(withoutHours.getTime()); withHours.setHours(12, 30, 15, 10); controller.filter = { @@ -83,8 +83,8 @@ describe('Component vnSearchbar', () => { myObjectProp: {myProp: 1} }; - let chips = {}; - for (let param of controller.params || []) + const chips = {}; + for (const param of controller.params || []) chips[param.key] = param.chip; expect(controller.searchString).toBe('needle'); @@ -172,13 +172,22 @@ describe('Component vnSearchbar', () => { describe('removeParam()', () => { it(`should remove the parameter from the filter`, () => { jest.spyOn(controller, 'doSearch'); + controller.model = { + refresh: jest.fn(), + userParams: { + id: 1 + } + }; + + controller.model.applyParams = jest.fn().mockReturnValue(Promise.resolve()); + jest.spyOn(controller.model, 'applyParams'); controller.filter = filter; controller.removeParam(0); expect(controller.doSearch).toHaveBeenCalledWith({ search: 'needle' - }, 'bar'); + }, 'removeBar'); }); }); @@ -199,7 +208,7 @@ describe('Component vnSearchbar', () => { it(`should go to the summary state when one result`, () => { jest.spyOn($state, 'go'); - let data = [{id: 1}]; + const data = [{id: 1}]; controller.baseState = 'foo'; controller.onFilter(filter, 'any', data); @@ -214,7 +223,7 @@ describe('Component vnSearchbar', () => { $scope.$apply(); jest.spyOn($state, 'go'); - let data = [{id: 1}]; + const data = [{id: 1}]; controller.baseState = 'foo'; controller.onFilter(filter, 'any', data); @@ -229,7 +238,7 @@ describe('Component vnSearchbar', () => { $scope.$apply(); jest.spyOn($state, 'go'); - let data = [{id: 1}]; + const data = [{id: 1}]; controller.baseState = 'foo'; controller.onFilter(filter, 'any', data); @@ -247,7 +256,7 @@ describe('Component vnSearchbar', () => { controller.onFilter(filter, 'any'); $scope.$apply(); - let queryParams = {q: JSON.stringify(filter)}; + const queryParams = {q: JSON.stringify(filter)}; expect($state.go).toHaveBeenCalledWith('search.state', queryParams, undefined); expect(controller.filter).toEqual(filter); diff --git a/front/core/components/smart-table/index.html b/front/core/components/smart-table/index.html index c2af9b41e..752019313 100644 --- a/front/core/components/smart-table/index.html +++ b/front/core/components/smart-table/index.html @@ -10,9 +10,9 @@
-
- {{model.data.length}} - results +
+ {{model.data.length}} + results
- - +
+ + +
Shown columns
-
@@ -99,4 +102,5 @@ - \ No newline at end of file + + diff --git a/front/core/components/smart-table/index.js b/front/core/components/smart-table/index.js index b0b4d90dc..8d2c3c153 100644 --- a/front/core/components/smart-table/index.js +++ b/front/core/components/smart-table/index.js @@ -15,9 +15,17 @@ export default class SmartTable extends Component { this.$inputsScope; this.columns = []; this.autoSave = false; + this.autoState = true; this.transclude(); } + $onChanges() { + if (this.model) { + this.defaultFilter(); + this.defaultOrder(); + } + } + $onDestroy() { const styleElement = document.querySelector('style[id="smart-table"]'); if (this.$.css && styleElement) @@ -32,6 +40,9 @@ export default class SmartTable extends Component { this._options = options; if (!options) return; + if (options.defaultSearch) + this.displaySearch(); + const activeButtons = options.activeButtons; const missingId = activeButtons && activeButtons.shownColumns && !this.viewConfigId; if (missingId) @@ -44,10 +55,8 @@ export default class SmartTable extends Component { set model(value) { this._model = value; - if (value) { + if (value) this.$.model = value; - this.defaultOrder(); - } } getDefaultViewConfig() { @@ -157,8 +166,36 @@ export default class SmartTable extends Component { } } + defaultFilter() { + if (this.disabledTableFilter || !this.$params.q) return; + + const stateFilter = JSON.parse(this.$params.q).tableQ; + if (!stateFilter || !this.exprBuilder) return; + + const columns = this.columns.map(column => column.field); + + this.displaySearch(); + if (!this.$inputsScope.searchProps) + this.$inputsScope.searchProps = {}; + + for (let param in stateFilter) { + if (columns.includes(param)) { + const whereParams = {[param]: stateFilter[param]}; + Object.assign(this.$inputsScope.searchProps, whereParams); + this.addFilter(param, stateFilter[param]); + } + } + } + defaultOrder() { - const order = this.model.order; + if (this.disabledTableOrder) return; + + let stateOrder; + if (this.$params.q) + stateOrder = JSON.parse(this.$params.q).tableOrder; + + const order = stateOrder ? stateOrder : this.model.order; + if (!order) return; const orderFields = order.split(', '); @@ -192,6 +229,9 @@ export default class SmartTable extends Component { this.setPriority(column.element, priority); } } + + this.model.order = order; + this.refresh(); } registerColumns() { @@ -315,6 +355,8 @@ export default class SmartTable extends Component { for (let column of columns) { const field = column.getAttribute('field'); const cell = document.createElement('td'); + cell.setAttribute('centered', ''); + if (field) { let input; let options; @@ -328,6 +370,15 @@ export default class SmartTable extends Component { continue; } + input = this.$compile(` + `)(this.$inputsScope); + if (options && options.autocomplete) { let props = ``; @@ -343,16 +394,29 @@ export default class SmartTable extends Component { on-change="$ctrl.searchByColumn('${field}')" clear-disabled="true" />`)(this.$inputsScope); - } else { + } + + if (options && options.checkbox) { input = this.$compile(` - `)(this.$inputsScope); } + + if (options && options.datepicker) { + input = this.$compile(` + `)(this.$inputsScope); + } + cell.appendChild(input[0]); } searchRow.appendChild(cell); @@ -368,29 +432,54 @@ export default class SmartTable extends Component { } searchByColumn(field) { - const searchCriteria = this.$inputsScope.searchProps[field]; - const emptySearch = searchCriteria == '' || null; - const filters = this.filterSanitizer(field); if (filters && filters.userFilter) this.model.userFilter = filters.userFilter; + this.addFilter(field, this.$inputsScope.searchProps[field]); + } - if (!emptySearch) - this.addFilter(field, this.$inputsScope.searchProps[field]); - else this.model.refresh(); + searchPropsSanitizer() { + if (!this.$inputsScope || !this.$inputsScope.searchProps) return null; + let searchProps = this.$inputsScope.searchProps; + const searchPropsArray = Object.entries(searchProps); + searchProps = searchPropsArray.filter( + ([key, value]) => value && value != '' + ); + + return Object.fromEntries(searchProps); } addFilter(field, value) { - let where = {[field]: value}; + if (value == '') value = null; - if (this.exprBuilder) { - where = buildFilter(where, (param, value) => - this.exprBuilder({param, value}) - ); + let stateFilter = {tableQ: {}}; + if (this.$params.q) { + stateFilter = JSON.parse(this.$params.q); + if (!stateFilter.tableQ) + stateFilter.tableQ = {}; + delete stateFilter.tableQ[field]; } - this.model.addFilter({where}); + const whereParams = {[field]: value}; + if (value) { + let where = {[field]: value}; + if (this.exprBuilder) { + where = buildFilter(whereParams, (param, value) => + this.exprBuilder({param, value}) + ); + } + this.model.addFilter({where}); + } + + const searchProps = this.searchPropsSanitizer(); + + Object.assign(stateFilter.tableQ, searchProps); + + const params = {q: JSON.stringify(stateFilter)}; + + this.$state.go(this.$state.current.name, params, {location: 'replace'}); + this.refresh(); } applySort() { @@ -400,7 +489,18 @@ export default class SmartTable extends Component { if (order) this.model.order = order; - this.model.refresh(); + let stateFilter = {tableOrder: {}}; + if (this.$params.q) { + stateFilter = JSON.parse(this.$params.q); + if (!stateFilter.tableOrder) + stateFilter.tableOrder = {}; + } + + stateFilter.tableOrder = order; + + const params = {q: JSON.stringify(stateFilter)}; + this.$state.go(this.$state.current.name, params, {location: 'replace'}); + this.refresh(); } filterSanitizer(field) { @@ -485,6 +585,12 @@ export default class SmartTable extends Component { return this.model.save() .then(() => this.vnApp.showSuccess(this.$t('Data saved!'))); } + + refresh() { + this.isRefreshing = true; + this.model.refresh() + .then(() => this.isRefreshing = false); + } } SmartTable.$inject = ['$element', '$scope', '$transclude']; @@ -494,7 +600,8 @@ ngModule.vnComponent('smartTable', { controller: SmartTable, transclude: { table: '?slotTable', - actions: '?slotActions' + actions: '?slotActions', + pagination: '?slotPagination' }, bindings: { model: ' { $httpBackend = _$httpBackend_; $element = $compile(``)($rootScope); controller = $element.controller('smartTable'); + controller.model = { + refresh: jest.fn().mockReturnValue(new Promise(resolve => resolve())), + addFilter: jest.fn(), + userParams: {} + }; })); afterEach(() => { @@ -83,7 +88,7 @@ describe('Component smartTable', () => { describe('defaultOrder', () => { it('should insert a new object to the controller sortCriteria with a sortType value of "ASC"', () => { const element = document.createElement('div'); - controller.model = {order: 'id'}; + controller.model.order = 'id'; controller.columns = [ {field: 'id', element: element}, {field: 'test1', element: element}, @@ -101,7 +106,8 @@ describe('Component smartTable', () => { it('should add new entries to the controller sortCriteria with a sortType values of "ASC" and "DESC"', () => { const element = document.createElement('div'); - controller.model = {order: 'test1, id DESC'}; + controller.model.order = 'test1, id DESC'; + controller.columns = [ {field: 'id', element: element}, {field: 'test1', element: element}, @@ -125,8 +131,6 @@ describe('Component smartTable', () => { describe('addFilter()', () => { it('should call the model addFilter() with a basic where filter if exprBuilder() was not received', () => { - controller.model = {addFilter: jest.fn()}; - controller.addFilter('myField', 'myValue'); const expectedFilter = { @@ -140,7 +144,6 @@ describe('Component smartTable', () => { it('should call the model addFilter() with a built where filter resultant of exprBuilder()', () => { controller.exprBuilder = jest.fn().mockReturnValue({builtField: 'builtValue'}); - controller.model = {addFilter: jest.fn()}; controller.addFilter('myField', 'myValue'); @@ -155,35 +158,48 @@ describe('Component smartTable', () => { }); describe('applySort()', () => { - it('should call the model refresh() without making changes on the model order', () => { - controller.model = {refresh: jest.fn()}; + it('should call the $state go and model refresh without making changes on the model order', () => { + controller.$state = { + go: jest.fn(), + current: { + name: 'section' + } + }; + jest.spyOn(controller, 'refresh'); controller.applySort(); expect(controller.model.order).toBeUndefined(); - expect(controller.model.refresh).toHaveBeenCalled(); + expect(controller.$state.go).toHaveBeenCalled(); + expect(controller.refresh).toHaveBeenCalled(); }); - it('should call the model.refresh() after setting model order according to the controller sortCriteria', () => { - controller.model = {refresh: jest.fn()}; + it('should call the $state go and model refresh after setting model order according to the controller sortCriteria', () => { const orderBy = {field: 'myField', sortType: 'ASC'}; + controller.$state = { + go: jest.fn(), + current: { + name: 'section' + } + }; + jest.spyOn(controller, 'refresh'); + controller.sortCriteria = [orderBy]; controller.applySort(); expect(controller.model.order).toEqual(`${orderBy.field} ${orderBy.sortType}`); - expect(controller.model.refresh).toHaveBeenCalled(); + expect(controller.$state.go).toHaveBeenCalled(); + expect(controller.refresh).toHaveBeenCalled(); }); }); describe('filterSanitizer()', () => { it('should remove the where filter after leaving no fields in it', () => { - controller.model = { - userFilter: { - where: {fieldToRemove: 'valueToRemove'} - }, - userParams: {} + controller.model.userFilter = { + where: {fieldToRemove: 'valueToRemove'} }; + controller.model.userParams = {}; const result = controller.filterSanitizer('fieldToRemove'); @@ -193,23 +209,21 @@ describe('Component smartTable', () => { }); it('should remove the where filter after leaving no fields and "empty ands/ors" in it', () => { - controller.model = { - userFilter: { - where: { - and: [ - {aFieldToRemove: 'aValueToRemove'}, - {aFieldToRemove: 'aValueToRemove'}, - { - or: [ - {aFieldToRemove: 'aValueToRemove'}, - {aFieldToRemove: 'aValueToRemove'}, - ] - } - ] - } - }, - userParams: {} - }; + controller.model.userFilter = { + where: { + and: [ + {aFieldToRemove: 'aValueToRemove'}, + {aFieldToRemove: 'aValueToRemove'}, + { + or: [ + {aFieldToRemove: 'aValueToRemove'}, + {aFieldToRemove: 'aValueToRemove'}, + ] + } + ] + } + }, + controller.model.userParams = {}; const result = controller.filterSanitizer('aFieldToRemove'); @@ -219,24 +233,22 @@ describe('Component smartTable', () => { }); it('should not remove the where filter after leaving no empty "ands/ors" in it', () => { - controller.model = { - userFilter: { - where: { - and: [ - {aFieldToRemove: 'aValueToRemove'}, - {aFieldToRemove: 'aValueToRemove'}, - { - or: [ - {aFieldToRemove: 'aValueToRemove'}, - {aFieldToRemove: 'aValueToRemove'}, - ] - } - ], - or: [{dontKillMe: 'thanks'}] - } - }, - userParams: {} + controller.model.userFilter = { + where: { + and: [ + {aFieldToRemove: 'aValueToRemove'}, + {aFieldToRemove: 'aValueToRemove'}, + { + or: [ + {aFieldToRemove: 'aValueToRemove'}, + {aFieldToRemove: 'aValueToRemove'}, + ] + } + ], + or: [{dontKillMe: 'thanks'}] + } }; + controller.model.userParams = {}; const result = controller.filterSanitizer('aFieldToRemove'); @@ -249,7 +261,7 @@ describe('Component smartTable', () => { describe('saveAll()', () => { it('should throw an error if there are no changes to save in the model', () => { jest.spyOn(controller.vnApp, 'showError'); - controller.model = {isChanged: false}; + controller.model.isChanged = false; controller.saveAll(); expect(controller.vnApp.showError).toHaveBeenCalledWith('No changes to save'); @@ -258,10 +270,8 @@ describe('Component smartTable', () => { it('should call the showSuccess() if there are changes to save in the model', done => { jest.spyOn(controller.vnApp, 'showSuccess'); - controller.model = { - save: jest.fn().mockReturnValue(Promise.resolve()), - isChanged: true - }; + controller.model.save = jest.fn().mockReturnValue(Promise.resolve()); + controller.model.isChanged = true; controller.saveAll().then(() => { expect(controller.vnApp.showSuccess).toHaveBeenCalledWith('Data saved!'); @@ -269,4 +279,43 @@ describe('Component smartTable', () => { }).catch(done.fail); }); }); + + describe('defaultFilter()', () => { + it('should call model refresh and model addFilter with filter', () => { + controller.exprBuilder = jest.fn().mockReturnValue({builtField: 'builtValue'}); + + controller.$params = { + q: '{"tableQ": {"fieldName":"value"}}' + }; + controller.columns = [ + {field: 'fieldName'} + ]; + controller.$inputsScope = { + searchProps: {} + }; + jest.spyOn(controller, 'refresh'); + + controller.defaultFilter(); + + expect(controller.model.addFilter).toHaveBeenCalled(); + expect(controller.refresh).toHaveBeenCalled(); + }); + }); + + describe('searchPropsSanitizer()', () => { + it('should searchProps sanitize', () => { + controller.$inputsScope = { + searchProps: { + filterOne: '1', + filterTwo: '' + } + }; + const searchPropsExpected = { + filterOne: '1' + }; + const newSearchProps = controller.searchPropsSanitizer(); + + expect(newSearchProps).toEqual(searchPropsExpected); + }); + }); }); diff --git a/front/core/components/textfield/textfield.js b/front/core/components/textfield/textfield.js index f166dae1c..14567d255 100644 --- a/front/core/components/textfield/textfield.js +++ b/front/core/components/textfield/textfield.js @@ -6,8 +6,98 @@ export default class Textfield extends Field { super($element, $scope, $compile); this.buildInput('text'); } + + set maxLength(value) { + this.input.maxLength = value; + } + + get maxLength() { + return this.input.maxLength; + } + + set insertable(value) { + if (this._insertable === value) + return; + + if (this._insertable) + this.input.removeEventListener('keypress', this.keyPressListener); + + if (value) { + this.keyPressListener = async e => await this.onKeyPress(e); + this.input.addEventListener('keypress', this.keyPressListener); + } + + this._insertable = value; + } + + get insertable() { + return this._insertable; + } + + async onKeyPress(e) { + if (e.key == 'Enter') + return; // If the enter key is pressed dismiss it + + let maxLength = this.maxLength; + + // Call the function that obtains the current cursor position + let pointerPosition = getCaretPosition(e.target); + + // If the cursor position is on the last allowed character, + // prevent any keystroke from doing anything + if (pointerPosition >= maxLength) { + e.preventDefault(); + e.stopPropagation(); + return; + } + + // In case by any ways the input is longer than the max especified size, cut it to it. + let currentArrValue = e.target.value.slice(0, maxLength); + + // Transform said input to a array with each character on one position + currentArrValue = currentArrValue.split(''); + + // Cut the array in 2 parts, one with everything right of the caret, + // and one with everything left to it + let rightToTheCaret = currentArrValue.slice(pointerPosition); + + let leftToTheCaret = currentArrValue.slice(0, pointerPosition); + + // Remove the first number on the array that was right of the caret + rightToTheCaret.shift(); + + // The part that was left to the caret is not modified in any way and is put back into the textField + e.target.value = leftToTheCaret.join(''); + + // Add one millisecond of delay to give the UI time to update, + // so that it detects the changes on the textField + await new Promise(r => setTimeout(r, 1)); + + // Add the values that should be right to the Caret back in the textField + e.target.value = e.target.value + rightToTheCaret.join(''); + + // Update the current pointer position so that it moves 1 position to the right + pointerPosition++; + e.target.setSelectionRange(pointerPosition, pointerPosition); + + return false; + } +} + +function getCaretPosition(targetElement) { + let caretPosition = 0; + + if (targetElement.selectionStart || targetElement.selectionStart == 0) // Firefox Support + caretPosition = targetElement.selectionStart; + + return caretPosition; } ngModule.vnComponent('vnTextfield', { - controller: Textfield + controller: Textfield, + bindings: { + maxLength: ' { + return res.data.url + route; + }); + } } ngModule.service('vnApp', App); diff --git a/front/core/services/email.js b/front/core/services/email.js index 633b13a26..02aa9051b 100644 --- a/front/core/services/email.js +++ b/front/core/services/email.js @@ -10,24 +10,12 @@ class Email { /** * Sends an email displaying a notification when it's sent. * - * @param {String} template The email report name + * @param {String} path The email report name * @param {Object} params The email parameters * @return {Promise} Promise resolved when it's sent */ - send(template, params) { - return this.$http.get(`email/${template}`, {params}) - .then(() => this.vnApp.showMessage(this.$t('Notification sent!'))); - } - - /** - * Sends an email displaying a notification when it's sent. - * - * @param {String} template The email report name - * @param {Object} params The email parameters - * @return {Promise} Promise resolved when it's sent - */ - sendCsv(template, params) { - return this.$http.get(`csv/${template}/send`, {params}) + send(path, params) { + return this.$http.post(path, params) .then(() => this.vnApp.showMessage(this.$t('Notification sent!'))); } } diff --git a/front/core/services/interceptor.js b/front/core/services/interceptor.js index b7cf3a0ec..3f3d9912b 100644 --- a/front/core/services/interceptor.js +++ b/front/core/services/interceptor.js @@ -30,14 +30,17 @@ function interceptor($q, vnApp, vnToken, $translate) { }, response(response) { vnApp.popLoader(); + const newVersion = response.headers('salix-version'); + vnApp.setVersion(newVersion); + return response; }, responseError(rejection) { vnApp.popLoader(); - let err = new HttpError(rejection.statusText); + const err = new HttpError(rejection.statusText); Object.assign(err, rejection); return $q.reject(err); - } + }, }; } ngModule.factory('vnInterceptor', interceptor); diff --git a/front/core/services/report.js b/front/core/services/report.js index c58a0ee0e..d6eb28ea4 100644 --- a/front/core/services/report.js +++ b/front/core/services/report.js @@ -10,30 +10,16 @@ class Report { * Shows a report in another window, automatically adds the authorization * token to params. * - * @param {String} report The report name + * @param {String} path The report name * @param {Object} params The report parameters */ - show(report, params) { + show(path, params) { params = Object.assign({ - authorization: this.vnToken.token + access_token: this.vnToken.token }, params); const serializedParams = this.$httpParamSerializer(params); - window.open(`api/report/${report}?${serializedParams}`); - } - - /** - * Shows a report in another window, automatically adds the authorization - * token to params. - * - * @param {String} report The report name - * @param {Object} params The report parameters - */ - showCsv(report, params) { - params = Object.assign({ - authorization: this.vnToken.token - }, params); - const serializedParams = this.$httpParamSerializer(params); - window.open(`api/csv/${report}/download?${serializedParams}`); + const query = serializedParams ? `?${serializedParams}` : ''; + window.open(`api/${path}${query}`); } } Report.$inject = ['$httpParamSerializer', 'vnToken']; diff --git a/front/core/styles/icons/salixfont.css b/front/core/styles/icons/salixfont.css index 6f513cb1b..2dee94c3b 100644 --- a/front/core/styles/icons/salixfont.css +++ b/front/core/styles/icons/salixfont.css @@ -23,10 +23,21 @@ -moz-osx-font-smoothing: grayscale; } - +.icon-agency-term:before { + content: "\e950"; +} +.icon-defaulter:before { + content: "\e94b"; +} .icon-100:before { content: "\e95a"; } +.icon-history:before { + content: "\e968"; +} +.icon-Person:before { + content: "\e901"; +} .icon-accessory:before { content: "\e90a"; } @@ -74,7 +85,6 @@ } .icon-bucket:before { content: "\e97a"; - color: #000; } .icon-buscaman:before { content: "\e93b"; @@ -84,32 +94,26 @@ } .icon-calc_volum .path1:before { content: "\e915"; - color: rgb(0, 0, 0); } .icon-calc_volum .path2:before { content: "\e916"; margin-left: -1em; - color: rgb(0, 0, 0); } .icon-calc_volum .path3:before { content: "\e917"; margin-left: -1em; - color: rgb(0, 0, 0); } .icon-calc_volum .path4:before { content: "\e918"; margin-left: -1em; - color: rgb(0, 0, 0); } .icon-calc_volum .path5:before { content: "\e919"; margin-left: -1em; - color: rgb(0, 0, 0); } .icon-calc_volum .path6:before { content: "\e91a"; margin-left: -1em; - color: rgb(255, 255, 255); } .icon-calendar:before { content: "\e93d"; @@ -144,9 +148,6 @@ .icon-credit:before { content: "\e927"; } -.icon-defaulter:before { - content: "\e94b"; -} .icon-deletedTicket:before { content: "\e935"; } @@ -213,9 +214,6 @@ .icon-headercol:before { content: "\e958"; } -.icon-history:before { - content: "\e968"; -} .icon-info:before { content: "\e952"; } @@ -288,9 +286,6 @@ .icon-pbx:before { content: "\e93c"; } -.icon-Person:before { - content: "\e901"; -} .icon-pets:before { content: "\e947"; } @@ -348,9 +343,6 @@ .icon-splur:before { content: "\e970"; } -.icon-stowaway:before { - content: "\e94f"; -} .icon-supplier:before { content: "\e925"; } diff --git a/front/core/styles/icons/salixfont.eot b/front/core/styles/icons/salixfont.eot index 9325d3dae..48cc86413 100644 Binary files a/front/core/styles/icons/salixfont.eot and b/front/core/styles/icons/salixfont.eot differ diff --git a/front/core/styles/icons/salixfont.svg b/front/core/styles/icons/salixfont.svg index 22c33c181..96a584734 100644 --- a/front/core/styles/icons/salixfont.svg +++ b/front/core/styles/icons/salixfont.svg @@ -15,7 +15,7 @@ - + @@ -85,8 +85,7 @@ - - + diff --git a/front/core/styles/icons/salixfont.ttf b/front/core/styles/icons/salixfont.ttf index 05df06213..4b090731c 100644 Binary files a/front/core/styles/icons/salixfont.ttf and b/front/core/styles/icons/salixfont.ttf differ diff --git a/front/core/styles/icons/salixfont.woff b/front/core/styles/icons/salixfont.woff index 70fca2294..502fed118 100644 Binary files a/front/core/styles/icons/salixfont.woff and b/front/core/styles/icons/salixfont.woff differ diff --git a/front/module-import.js b/front/module-import.js index ab1eb73d6..bc547deeb 100755 --- a/front/module-import.js +++ b/front/module-import.js @@ -21,6 +21,7 @@ export default function moduleImport(moduleName) { case 'entry' : return import('entry/front'); case 'account' : return import('account/front'); case 'supplier' : return import('supplier/front'); + case 'shelving' : return import('shelving/front'); case 'monitor' : return import('monitor/front'); } } diff --git a/front/package-lock.json b/front/package-lock.json index a2f192f01..4b8fc8718 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -1,78 +1,232 @@ { "name": "salix-front", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "salix-front", + "version": "1.0.0", + "license": "GPL-3.0", + "dependencies": { + "@uirouter/angularjs": "^1.0.20", + "angular": "^1.7.5", + "angular-animate": "^1.7.8", + "angular-moment": "^1.3.0", + "angular-translate": "^2.18.1", + "angular-translate-loader-partial": "^2.18.1", + "croppie": "^2.6.5", + "js-yaml": "^3.13.1", + "mg-crud": "^1.1.2", + "oclazyload": "^0.6.3", + "require-yaml": "0.0.1", + "validator": "^6.3.0" + } + }, + "node_modules/@uirouter/angularjs": { + "version": "1.0.30", + "resolved": "https://registry.npmjs.org/@uirouter/angularjs/-/angularjs-1.0.30.tgz", + "integrity": "sha512-qkc3RFZc91S5K0gc/QVAXc9LGDPXjR04vDgG/11j8+yyZEuQojXxKxdLhKIepiPzqLmGRVqzBmBc27gtqaEeZg==", + "dependencies": { + "@uirouter/core": "6.0.8" + }, + "engines": { + "node": ">=4.0.0" + }, + "peerDependencies": { + "angular": ">=1.2.0" + } + }, + "node_modules/@uirouter/core": { + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@uirouter/core/-/core-6.0.8.tgz", + "integrity": "sha512-Gc/BAW47i4L54p8dqYCJJZuv2s3tqlXQ0fvl6Zp2xrblELPVfxmjnc0eurx3XwfQdaqm3T6uls6tQKkof/4QMw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/angular": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/angular/-/angular-1.8.3.tgz", + "integrity": "sha512-5qjkWIQQVsHj4Sb5TcEs4WZWpFeVFHXwxEBHUhrny41D8UrBAd6T/6nPPAsLngJCReIOqi95W3mxdveveutpZw==", + "deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward." + }, + "node_modules/angular-animate": { + "version": "1.8.2", + "license": "MIT" + }, + "node_modules/angular-moment": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "moment": ">=2.8.0 <3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/angular-translate": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/angular-translate/-/angular-translate-2.19.0.tgz", + "integrity": "sha512-Z/Fip5uUT2N85dPQ0sMEe1JdF5AehcDe4tg/9mWXNDVU531emHCg53ZND9Oe0dyNiGX5rWcJKmsL1Fujus1vGQ==", + "dependencies": { + "angular": "^1.8.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/angular-translate-loader-partial": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/angular-translate-loader-partial/-/angular-translate-loader-partial-2.19.0.tgz", + "integrity": "sha512-NnMw13LMV4bPQmJK7/pZOZAnPxe0M5OtUHchADs5Gye7V7feonuEnrZ8e1CKhBlv9a7IQyWoqcBa4Lnhg8gk5w==", + "dependencies": { + "angular-translate": "~2.19.0" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/croppie": { + "version": "2.6.5", + "license": "MIT" + }, + "node_modules/esprima": { + "version": "4.0.1", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/mg-crud": { + "version": "1.1.2", + "license": "MIT", + "dependencies": { + "angular": "^1.6.1" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/oclazyload": { + "version": "0.6.3", + "license": "MIT" + }, + "node_modules/require-yaml": { + "version": "0.0.1", + "license": "BSD", + "dependencies": { + "js-yaml": "" + } + }, + "node_modules/require-yaml/node_modules/argparse": { + "version": "2.0.1", + "license": "Python-2.0" + }, + "node_modules/require-yaml/node_modules/js-yaml": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "license": "BSD-3-Clause" + }, + "node_modules/validator": { + "version": "6.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + } + }, "dependencies": { "@uirouter/angularjs": { - "version": "1.0.29", - "resolved": "https://registry.npmjs.org/@uirouter/angularjs/-/angularjs-1.0.29.tgz", - "integrity": "sha512-RImWnBarNixkMto0o8stEaGwZmvhv5cnuOLXyMU2pY8MP2rgEF74ZNJTLeJCW14LR7XDUxVH8Mk8bPI6lxedmQ==", + "version": "1.0.30", + "resolved": "https://registry.npmjs.org/@uirouter/angularjs/-/angularjs-1.0.30.tgz", + "integrity": "sha512-qkc3RFZc91S5K0gc/QVAXc9LGDPXjR04vDgG/11j8+yyZEuQojXxKxdLhKIepiPzqLmGRVqzBmBc27gtqaEeZg==", "requires": { - "@uirouter/core": "6.0.7" + "@uirouter/core": "6.0.8" } }, "@uirouter/core": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/@uirouter/core/-/core-6.0.7.tgz", - "integrity": "sha512-KUTJxL+6q0PiBnFx4/Z+Hsyg0pSGiaW5yZQeJmUxknecjpTbnXkLU8H2EqRn9N2B+qDRa7Jg8RcgeNDPY72O1w==" + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@uirouter/core/-/core-6.0.8.tgz", + "integrity": "sha512-Gc/BAW47i4L54p8dqYCJJZuv2s3tqlXQ0fvl6Zp2xrblELPVfxmjnc0eurx3XwfQdaqm3T6uls6tQKkof/4QMw==" }, "angular": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/angular/-/angular-1.8.2.tgz", - "integrity": "sha512-IauMOej2xEe7/7Ennahkbb5qd/HFADiNuLSESz9Q27inmi32zB0lnAsFeLEWcox3Gd1F6YhNd1CP7/9IukJ0Gw==" + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/angular/-/angular-1.8.3.tgz", + "integrity": "sha512-5qjkWIQQVsHj4Sb5TcEs4WZWpFeVFHXwxEBHUhrny41D8UrBAd6T/6nPPAsLngJCReIOqi95W3mxdveveutpZw==" }, "angular-animate": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/angular-animate/-/angular-animate-1.8.2.tgz", - "integrity": "sha512-Jbr9+grNMs9Kj57xuBU3Ju3NOPAjS1+g2UAwwDv7su1lt0/PLDy+9zEwDiu8C8xJceoTbmBNKiWGPJGBdCQLlA==" + "version": "1.8.2" }, "angular-moment": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/angular-moment/-/angular-moment-1.3.0.tgz", - "integrity": "sha512-KG8rvO9MoaBLwtGnxTeUveSyNtrL+RNgGl1zqWN36+HDCCVGk2DGWOzqKWB6o+eTTbO3Opn4hupWKIElc8XETA==", "requires": { "moment": ">=2.8.0 <3.0.0" } }, "angular-translate": { - "version": "2.18.4", - "resolved": "https://registry.npmjs.org/angular-translate/-/angular-translate-2.18.4.tgz", - "integrity": "sha512-KohNrkH6J9PK+VW0L/nsRTcg5Fw70Ajwwe3Jbfm54Pf9u9Fd+wuingoKv+h45mKf38eT+Ouu51FPua8VmZNoCw==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/angular-translate/-/angular-translate-2.19.0.tgz", + "integrity": "sha512-Z/Fip5uUT2N85dPQ0sMEe1JdF5AehcDe4tg/9mWXNDVU531emHCg53ZND9Oe0dyNiGX5rWcJKmsL1Fujus1vGQ==", "requires": { "angular": "^1.8.0" } }, "angular-translate-loader-partial": { - "version": "2.18.4", - "resolved": "https://registry.npmjs.org/angular-translate-loader-partial/-/angular-translate-loader-partial-2.18.4.tgz", - "integrity": "sha512-bsjR+FbB0sdA2528E/ugwKdlPPQhA1looxLxI3otayBTFXBpED33besfSZhYAISLgNMSL038vSssfRUen9qD8w==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/angular-translate-loader-partial/-/angular-translate-loader-partial-2.19.0.tgz", + "integrity": "sha512-NnMw13LMV4bPQmJK7/pZOZAnPxe0M5OtUHchADs5Gye7V7feonuEnrZ8e1CKhBlv9a7IQyWoqcBa4Lnhg8gk5w==", "requires": { - "angular-translate": "~2.18.4" + "angular-translate": "~2.19.0" } }, "argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { "sprintf-js": "~1.0.2" } }, "croppie": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/croppie/-/croppie-2.6.5.tgz", - "integrity": "sha512-IlChnVUGG5T3w2gRZIaQgBtlvyuYnlUWs2YZIXXR3H9KrlO1PtBT3j+ykxvy9eZIWhk+V5SpBmhCQz5UXKrEKQ==" + "version": "2.6.5" }, "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "version": "4.0.1" }, "js-yaml": { "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -80,39 +234,29 @@ }, "mg-crud": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/mg-crud/-/mg-crud-1.1.2.tgz", - "integrity": "sha1-p6AWGzWSPK7/8ZpIBpS2V1vDggw=", "requires": { "angular": "^1.6.1" } }, "moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" }, "oclazyload": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/oclazyload/-/oclazyload-0.6.3.tgz", - "integrity": "sha1-Kjirv/QJDAihEBZxkZRbWfLoJ5w=" + "version": "0.6.3" }, "require-yaml": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/require-yaml/-/require-yaml-0.0.1.tgz", - "integrity": "sha1-LhsY2RPDuqcqWk03O28Tjd0sMr0=", "requires": { - "js-yaml": "^4.1.0" + "js-yaml": "" }, "dependencies": { "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "version": "2.0.1" }, "js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "requires": { "argparse": "^2.0.1" } @@ -120,14 +264,10 @@ } }, "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "version": "1.0.3" }, "validator": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-6.3.0.tgz", - "integrity": "sha1-R84j7Y1Ord+p1LjvAHG2zxB418g=" + "version": "6.3.0" } } } diff --git a/front/salix/components/descriptor-popover/style.scss b/front/salix/components/descriptor-popover/style.scss index 6ae8675bf..7203c8e8e 100644 --- a/front/salix/components/descriptor-popover/style.scss +++ b/front/salix/components/descriptor-popover/style.scss @@ -4,8 +4,14 @@ vn-descriptor-content > .descriptor { width: 256px; - & > .header > a:first-child { - visibility: hidden; - } + & > .header { + a:first-child { + display: none; + } + vn-icon-button:nth-child(2) { + display: block; + } + } + } } diff --git a/front/salix/components/descriptor/index.html b/front/salix/components/descriptor/index.html index 5b4c6f12c..e7a5b6297 100644 --- a/front/salix/components/descriptor/index.html +++ b/front/salix/components/descriptor/index.html @@ -12,10 +12,15 @@ name="goToModuleIndex"> + + - + vn-icon-button:nth-child(2) { + display: none; + } } & > .body { display: block; @@ -104,7 +107,7 @@ vn-descriptor-content { align-items: center; justify-content: center; padding: 0 $spacing-sm; - margin: 0 $spacing-sm; + margin: 0 $spacing-xs; & > vn-icon { font-size: 1.75rem; diff --git a/front/salix/components/layout/index.html b/front/salix/components/layout/index.html index cd13c565e..5a525ef77 100644 --- a/front/salix/components/layout/index.html +++ b/front/salix/components/layout/index.html @@ -19,6 +19,14 @@
+ + -
diff --git a/front/salix/components/layout/index.js b/front/salix/components/layout/index.js index 986f61622..372e8e828 100644 --- a/front/salix/components/layout/index.js +++ b/front/salix/components/layout/index.js @@ -26,6 +26,10 @@ export class Layout extends Component { const token = this.vnToken.token; return `/api/Images/user/160x160/${userId}/download?access_token=${token}`; } + + refresh() { + window.location.reload(); + } } Layout.$inject = ['$element', '$scope', 'vnModules']; diff --git a/front/salix/components/layout/style.scss b/front/salix/components/layout/style.scss index 36522bc3a..612366228 100644 --- a/front/salix/components/layout/style.scss +++ b/front/salix/components/layout/style.scss @@ -60,6 +60,9 @@ vn-layout { font-size: 1.05rem; padding: 0; } + .vn-icon-button.refresh { + color: $color-alert; + } } & > vn-side-menu > .menu { display: flex; diff --git a/front/salix/locale/es.yml b/front/salix/locale/es.yml index 5e877c372..d92c32b33 100644 --- a/front/salix/locale/es.yml +++ b/front/salix/locale/es.yml @@ -13,8 +13,11 @@ Preview: Vista previa Profile: Perfil Push on applications menu: Para abrir un módulo pulsa en el menú de aplicaciones Go to module index: Ir al índice del módulo +Go to module summary: Ir a la vista previa del módulo +Show summary: Mostrar vista previa What is new: Novedades de la versión Settings: Ajustes +There is a new version, click here to reload: Hay una nueva versión, pulse aquí para recargar # Actions @@ -48,6 +51,7 @@ Entries: Entradas Users: Usuarios Suppliers: Proveedores Monitors: Monitores +Shelvings: Carros # Common diff --git a/gulpfile.js b/gulpfile.js index 102a8a0bf..d7e7d8e86 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -3,8 +3,6 @@ const gulp = require('gulp'); const PluginError = require('plugin-error'); const argv = require('minimist')(process.argv.slice(2)); const log = require('fancy-log'); -const got = require('got'); -const e2eConfig = require('./e2e/helpers/config.js'); const Docker = require('./db/docker.js'); // Configuration @@ -67,187 +65,6 @@ back.description = `Starts backend and database service`; const defaultTask = gulp.parallel(front, back); defaultTask.description = `Starts all application services`; - -// Backend tests - Private method - -async function launchBackTest(done) { - let err; - let dataSources = require('./loopback/server/datasources.json'); - - const container = new Docker(); - await container.run(argv.ci); - - dataSources = JSON.parse(JSON.stringify(dataSources)); - - Object.assign(dataSources.vn, { - host: container.dbConf.host, - port: container.dbConf.port - }); - - let bootOptions = {dataSources}; - - let app = require(`./loopback/server/server`); - - try { - app.boot(bootOptions); - - await new Promise((resolve, reject) => { - const jasmine = require('gulp-jasmine'); - - const options = { - verbose: false, - includeStackTrace: false, - errorOnFail: false, - timeout: 5000, - config: {} - }; - - if (argv.ci) { - const reporters = require('jasmine-reporters'); - options.reporter = new reporters.JUnitXmlReporter(); - } - - let backSpecFiles = [ - 'back/**/*.spec.js', - 'loopback/**/*.spec.js', - 'modules/*/back/**/*.spec.js' - ]; - - gulp.src(backSpecFiles) - .pipe(jasmine(options)) - .on('end', resolve) - .on('error', reject) - .resume(); - }); - } catch (e) { - err = e; - } - await app.disconnect(); - await container.rm(); - done(); - if (err) - throw err; -} -launchBackTest.description = ` - Runs the backend tests once using a random container, can receive --ci arg to save reports on a xml file`; - -// Backend tests - -function backTest(done) { - const nodemon = require('gulp-nodemon'); - - nodemon({ - exec: ['node --tls-min-v1.0 ./node_modules/gulp/bin/gulp.js'], - args: ['launchBackTest'], - watch: backSources, - done: done - }); -} -backTest.description = `Watches for changes in modules to execute backTest task`; - -// End to end tests -function e2eSingleRun() { - require('@babel/register')({presets: ['@babel/env']}); - require('core-js/stable'); - require('regenerator-runtime/runtime'); - - const jasmine = require('gulp-jasmine'); - const SpecReporter = require('jasmine-spec-reporter').SpecReporter; - - if (argv.show || argv.s) - process.env.E2E_SHOW = true; - - const specFiles = [ - `${__dirname}/e2e/paths/01*/*[sS]pec.js`, - `${__dirname}/e2e/paths/02*/*[sS]pec.js`, - `${__dirname}/e2e/paths/03*/*[sS]pec.js`, - `${__dirname}/e2e/paths/04*/*[sS]pec.js`, - `${__dirname}/e2e/paths/05*/*[sS]pec.js`, - `${__dirname}/e2e/paths/06*/*[sS]pec.js`, - `${__dirname}/e2e/paths/07*/*[sS]pec.js`, - `${__dirname}/e2e/paths/08*/*[sS]pec.js`, - `${__dirname}/e2e/paths/09*/*[sS]pec.js`, - `${__dirname}/e2e/paths/10*/*[sS]pec.js`, - `${__dirname}/e2e/paths/11*/*[sS]pec.js`, - `${__dirname}/e2e/paths/12*/*[sS]pec.js`, - `${__dirname}/e2e/paths/13*/*[sS]pec.js`, - `${__dirname}/e2e/paths/**/*[sS]pec.js` - ]; - - return gulp.src(specFiles).pipe(jasmine({ - errorOnFail: false, - timeout: 30000, - config: { - random: false, - // TODO: Waiting for this option to be implemented - // https://github.com/jasmine/jasmine/issues/1533 - stopSpecOnExpectationFailure: false - }, - reporter: [ - new SpecReporter({ - spec: { - displayStacktrace: 'none', - displaySuccessful: true, - displayFailedSpec: true, - displaySpecDuration: true, - }, - summary: { - displayStacktrace: 'raw', - displayPending: false - }, - colors: { - enabled: true, - successful: 'brightGreen', - failed: 'brightRed' - }, - // stacktrace: { - // filter: stacktrace => { - // const lines = stacktrace.split('\n'); - // const filtered = []; - // for (let i = 1; i < lines.length; i++) { - // if (/e2e\/paths/.test(lines[i])) - // filtered.push(lines[i]); - // } - // return filtered.join('\n'); - // } - // } - }) - ] - })); -} - -e2e = gulp.series(docker, async function isBackendReady() { - const attempts = await backendStatus(); - log(`Backend ready after ${attempts} attempt(s)`); - - return attempts; -}, e2eSingleRun); -e2e.description = `Restarts database and runs the e2e tests`; - -async function backendStatus() { - const milliseconds = 250; - return new Promise(resolve => { - let timer; - let attempts = 1; - timer = setInterval(async() => { - try { - const url = `${e2eConfig.url}/api/Applications/status`; - const {body} = await got.get(url); - - if (body == 'true') { - clearInterval(timer); - resolve(attempts); - } else - attempts++; - } catch (error) { - if (error || attempts > 100) // 250ms * 100 => 25s timeout - throw new Error('Could not connect to backend'); - } - }, milliseconds); - }); -} -backendStatus.description = `Performs a simple requests to check the backend status`; - function install() { const install = require('gulp-install'); const print = require('gulp-print'); @@ -431,9 +248,6 @@ module.exports = { back, backOnly, backWatch, - backTest, - launchBackTest, - e2e, i, install, build, @@ -444,6 +258,5 @@ module.exports = { locales, localesRoutes, watch, - docker, - backendStatus, + docker }; diff --git a/jest-front.js b/jest-front.js index 7a692f57c..6d7532260 100644 --- a/jest-front.js +++ b/jest-front.js @@ -13,6 +13,7 @@ import './modules/route/front/module.js'; import './modules/ticket/front/module.js'; import './modules/travel/front/module.js'; import './modules/worker/front/module.js'; +import './modules/shelving/front/module.js'; core.run(vnInterceptor => { vnInterceptor.setApiPath(null); diff --git a/jest.front.config.js b/jest.front.config.js index dbea13950..a03c61d11 100644 --- a/jest.front.config.js +++ b/jest.front.config.js @@ -47,5 +47,6 @@ module.exports = { '^.+\\.js?$': 'babel-jest', '^.+\\.html$': 'html-loader-jest' }, + reporters: ['default', 'jest-junit'] }; diff --git a/loopback/common/methods/vn-model/specs/rewriteDbError.spec.js b/loopback/common/methods/vn-model/specs/rewriteDbError.spec.js index e2f842a15..1c4d53266 100644 --- a/loopback/common/methods/vn-model/specs/rewriteDbError.spec.js +++ b/loopback/common/methods/vn-model/specs/rewriteDbError.spec.js @@ -24,6 +24,6 @@ describe('Model rewriteDbError()', () => { error = e; } - expect(error.message).toEqual(`The tag can't be repeated`); + expect(error.message).toEqual(`The tag or priority can't be repeated for an item`); }); }); diff --git a/loopback/common/models/field-acl.json b/loopback/common/models/field-acl.json index 25ed949b9..a3f74aca2 100644 --- a/loopback/common/models/field-acl.json +++ b/loopback/common/models/field-acl.json @@ -9,19 +9,19 @@ "properties": { "id": { "id": true, - "type": "Number" + "type": "number" }, "model": { - "type": "String" + "type": "string" }, "property":{ - "type": "String" + "type": "string" }, "actionType":{ - "type": "String" + "type": "string" }, "role":{ - "type": "String" + "type": "string" } } } diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 7d675cb13..f03441c0f 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -12,7 +12,6 @@ "That payment method requires an IBAN": "That payment method requires an IBAN", "That payment method requires a BIC": "That payment method requires a BIC", "The default consignee can not be unchecked": "The default consignee can not be unchecked", - "You can't make changes on a client with verified data": "You can't make changes on a client with verified data", "Enter an integer different to zero": "Enter an integer different to zero", "Package cannot be blank": "Package cannot be blank", "The new quantity should be smaller than the old one": "The new quantity should be smaller than the old one", @@ -55,7 +54,6 @@ "You can't delete a confirmed order": "You can't delete a confirmed order", "Value has an invalid format": "Value has an invalid format", "The postcode doesn't exist. Please enter a correct one": "The postcode doesn't exist. Please enter a correct one", - "Can't create stowaway for this ticket": "Can't create stowaway for this ticket", "Swift / BIC can't be empty": "Swift / BIC can't be empty", "Deleted sales from ticket": "I have deleted the following lines from the ticket [{{ticketId}}]({{{ticketUrl}}}): {{{deletions}}}", "Added sale to ticket": "I have added the following line to the ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}", @@ -70,7 +68,7 @@ "Sent units from ticket": "I sent *{{quantity}}* units of [{{concept}} ({{itemId}})]({{{itemUrl}}}) to *\"{{nickname}}\"* coming from ticket id [{{ticketId}}]({{{ticketUrl}}})", "Claim will be picked": "The product from the claim [({{claimId}})]({{{claimUrl}}}) from the client *{{clientName}}* will be picked", "Claim state has changed to incomplete": "The state of the claim [({{claimId}})]({{{claimUrl}}}) from client *{{clientName}}* has changed to *incomplete*", - "This ticket is not an stowaway anymore": "The ticket id [{{ticketId}}]({{{ticketUrl}}}) is not an stowaway anymore", + "Claim state has changed to canceled": "The state of the claim [({{claimId}})]({{{claimUrl}}}) from client *{{clientName}}* has changed to *canceled*", "Customs agent is required for a non UEE member": "Customs agent is required for a non UEE member", "Incoterms is required for a non UEE member": "Incoterms is required for a non UEE member", "Client checked as validated despite of duplication": "Client checked as validated despite of duplication from client id {{clientId}}", @@ -120,5 +118,23 @@ "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}}", "The type of business must be filled in basic data": "The type of business must be filled in basic data", - "The worker has hours recorded that day": "The worker has hours recorded that day" -} \ No newline at end of file + "The worker has hours recorded that day": "The worker has hours recorded that day", + "isWithoutNegatives": "isWithoutNegatives", + "routeFk": "routeFk", + "Not enough privileges to edit a client with verified data": "Not enough privileges to edit a client with verified data", + "Can't change the password of another worker": "Can't change the password of another worker", + "No hay un contrato en vigor": "There is no existing contract", + "No está permitido trabajar": "Not allowed to work", + "Dirección incorrecta": "Wrong direction", + "No se permite fichar a futuro": "It is not allowed to sign in the future", + "Descanso diario 12h.": "Daily rest 12h.", + "Fichadas impares": "Odd signs", + "Descanso diario 9h.": "Daily rest 9h.", + "Descanso semanal 36h. / 72h.": "Weekly rest 36h. / 72h.", + "Password does not meet requirements": "Password does not meet requirements", + "You don't have privileges to change the zone": "You don't have privileges to change the zone or for these parameters there are more than one shipping options, talk to agencies", + "Not enough privileges to edit a client": "Not enough privileges to edit a client", + "Claim pickup order sent": "Claim pickup order sent [({{claimId}})]({{{claimUrl}}}) to client *{{clientName}}*", + "You don't have grant privilege": "You don't have grant privilege", + "You don't own the role and you can't assign it to another user": "You don't own the role and you can't assign it to another user" +} diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 856ee57d8..b85edb5fe 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -44,13 +44,13 @@ "is not a valid date": "No es una fecha valida", "Barcode must be unique": "El código de barras debe ser único", "The warehouse can't be repeated": "El almacén no puede repetirse", - "The tag can't be repeated": "El tag no puede repetirse", + "The tag or priority can't be repeated for an item": "El tag o prioridad no puede repetirse para un item", "The observation type can't be repeated": "El tipo de observación no puede repetirse", "A claim with that sale already exists": "Ya existe una reclamación para esta línea", "You don't have enough privileges to change that field": "No tienes permisos para cambiar ese campo", "Warehouse cannot be blank": "El almacén no puede quedar en blanco", "Agency cannot be blank": "La agencia no puede quedar en blanco", - "You can't make changes on a client with verified data": "No puedes hacer cambios en un cliente con datos comprobados", + "Not enough privileges to edit a client with verified data": "No tienes permisos para hacer cambios en un cliente con datos comprobados", "This address doesn't exist": "Este consignatario no existe", "You must delete the claim id %d first": "Antes debes borrar la reclamación %d", "You don't have enough privileges": "No tienes suficientes permisos", @@ -96,12 +96,11 @@ "This postcode already exists": "Este código postal ya existe", "Concept cannot be blank": "El concepto no puede quedar en blanco", "File doesn't exists": "El archivo no existe", - "You don't have privileges to change the zone or for these parameters there are more than one shipping options, talk to agencies": "No tienes permisos para cambiar la zona o para esos parámetros hay más de una opción de envío, hable con las agencias", + "You don't have privileges to change the zone": "No tienes permisos para cambiar la zona o para esos parámetros hay más de una opción de envío, hable con las agencias", "This ticket is already on weekly tickets": "Este ticket ya está en tickets programados", "Ticket id cannot be blank": "El id de ticket no puede quedar en blanco", "Weekday cannot be blank": "El día de la semana no puede quedar en blanco", "You can't delete a confirmed order": "No puedes borrar un pedido confirmado", - "Can't create stowaway for this ticket": "No se puede crear un polizon para este ticket", "The social name has an invalid format": "El nombre fiscal tiene un formato incorrecto", "Invalid quantity": "Cantidad invalida", "This postal code is not valid": "This postal code is not valid", @@ -137,7 +136,7 @@ "Sent units from ticket": "Envio *{{quantity}}* unidades de [{{concept}} ({{itemId}})]({{{itemUrl}}}) a *\"{{nickname}}\"* provenientes del ticket id [{{ticketId}}]({{{ticketUrl}}})", "Claim will be picked": "Se recogerá el género de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}*", "Claim state has changed to incomplete": "Se ha cambiado el estado de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}* a *incompleta*", - "This ticket is not an stowaway anymore": "El ticket id [{{ticketId}}]({{{ticketUrl}}}) ha dejado de ser un polizón", + "Claim state has changed to canceled": "Se ha cambiado el estado de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}* a *anulado*", "Client checked as validated despite of duplication": "Cliente comprobado a pesar de que existe el cliente id {{clientId}}", "ORDER_ROW_UNAVAILABLE": "No hay disponibilidad de este producto", "Distance must be lesser than 1000": "La distancia debe ser inferior a 1000", @@ -147,13 +146,14 @@ "Choose a date range or days forward": "Selecciona un rango de fechas o días en adelante", "ORDER_ALREADY_CONFIRMED": "ORDER_ALREADY_CONFIRMED", "Invalid password": "Invalid password", - "Password does not meet requirements": "Password does not meet requirements", + "Password does not meet requirements": "La contraseña no cumple los requisitos", "Role already assigned": "Role already assigned", "Invalid role name": "Invalid role name", "Role name must be written in camelCase": "Role name must be written in camelCase", "Email already exists": "Email already exists", "User already exists": "User already exists", "Absence change notification on the labour calendar": "Notificacion de cambio de ausencia en el calendario laboral", + "Record of hours week": "Registro de horas semana {{week}} año {{year}} ", "Created absence": "El empleado {{author}} ha añadido una ausencia de tipo '{{absenceType}}' a {{employee}} para el día {{dated}}.", "Deleted absence": "El empleado {{author}} ha eliminado una ausencia de tipo '{{absenceType}}' a {{employee}} del día {{dated}}.", "I have deleted the ticket id": "He eliminado el ticket id [{{id}}]({{{url}}})", @@ -209,7 +209,7 @@ "Wasn't able to invoice the following clients": "No se han podido facturar los siguientes clientes", "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", + "You can't change the credit set to zero from a financialBoss": "No puedes cambiar el cŕedito establecido a cero por un jefe de finanzas", "Amounts do not match": "Las cantidades no coinciden", "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", @@ -218,6 +218,30 @@ "The worker has a marked absence that day": "El trabajador tiene marcada una ausencia ese día", "You can not modify is pay method checked": "No se puede modificar el campo método de pago validado", "Can't transfer claimed sales": "No puedes transferir lineas reclamadas", - "You don't have privileges to create pay back": "No tienes permisos para crear un abono", - "The item is required": "El artículo es requerido" -} \ No newline at end of file + "You don't have privileges to create refund": "No tienes permisos para crear un abono", + "The item is required": "El artículo es requerido", + "The agency is already assigned to another autonomous": "La agencia ya está asignada a otro autónomo", + "date in the future": "Fecha en el futuro", + "reference duplicated": "Referencia duplicada", + "This ticket is already a refund": "Este ticket ya es un abono", + "isWithoutNegatives": "isWithoutNegatives", + "routeFk": "routeFk", + "Can't change the password of another worker": "No se puede cambiar la contraseña de otro trabajador", + "No hay un contrato en vigor": "No hay un contrato en vigor", + "No se permite fichar a futuro": "No se permite fichar a futuro", + "No está permitido trabajar": "No está permitido trabajar", + "Fichadas impares": "Fichadas impares", + "Descanso diario 12h.": "Descanso diario 12h.", + "Descanso semanal 36h. / 72h.": "Descanso semanal 36h. / 72h.", + "Dirección incorrecta": "Dirección incorrecta", + "Modifiable user details only by an administrator": "Detalles de usuario modificables solo por un administrador", + "Modifiable password only via recovery or by an administrator": "Contraseña modificable solo a través de la recuperación o por un administrador", + "Not enough privileges to edit a client": "No tienes suficientes privilegios para editar un cliente", + "This route does not exists": "Esta ruta no existe", + "Claim pickup order sent": "Reclamación Orden de recogida enviada [({{claimId}})]({{{claimUrl}}}) al cliente *{{clientName}}*", + "You don't have grant privilege": "No tienes privilegios para dar privilegios", + "You don't own the role and you can't assign it to another user": "No eres el propietario del rol y no puedes asignarlo a otro usuario", + "Already has this status": "Ya tiene este estado", + "There aren't records for this week": "No existen registros para esta semana", + "Empty data source": "Origen de datos vacio" +} diff --git a/loopback/server/boot/print.js b/loopback/server/boot/print.js index 0f6af4d56..7558c3ef8 100644 --- a/loopback/server/boot/print.js +++ b/loopback/server/boot/print.js @@ -1,3 +1,3 @@ module.exports = function(app) { - require('../../../print/boot.js')(app); + require('vn-print').boot(app); }; diff --git a/loopback/server/datasources.json b/loopback/server/datasources.json index 0df03882c..4db642058 100644 --- a/loopback/server/datasources.json +++ b/loopback/server/datasources.json @@ -15,7 +15,8 @@ "legacyUtcDateProcessing": false, "timezone": "local", "connectTimeout": 40000, - "acquireTimeout": 20000 + "acquireTimeout": 20000, + "waitForConnections": true }, "osticket": { "connector": "memory", @@ -38,7 +39,9 @@ "multipart/x-zip", "image/png", "image/jpeg", - "image/jpg" + "image/jpg", + "image/webp", + "video/mp4" ] }, "dmsStorage": { @@ -58,7 +61,8 @@ "multipart/x-zip", "image/png", "image/jpeg", - "image/jpg" + "image/jpg", + "image/webp" ] }, "imageStorage": { @@ -70,7 +74,8 @@ "allowedContentTypes": [ "image/png", "image/jpeg", - "image/jpg" + "image/jpg", + "image/webp" ] }, "invoiceStorage": { @@ -83,5 +88,29 @@ "application/octet-stream", "application/pdf" ] + }, + "claimStorage": { + "name": "claimStorage", + "connector": "loopback-component-storage", + "provider": "filesystem", + "root": "./storage/dms", + "maxFileSize": "31457280", + "allowedContentTypes": [ + "image/png", + "image/jpeg", + "image/jpg", + "image/webp", + "video/mp4" + ] + }, + "accessStorage": { + "name": "accessStorage", + "connector": "loopback-component-storage", + "provider": "filesystem", + "root": "./storage/access", + "maxFileSize": "524288000", + "allowedContentTypes": [ + "application/x-7z-compressed" + ] } } \ No newline at end of file diff --git a/loopback/server/middleware.json b/loopback/server/middleware.json index 60bedcdb3..d65b8b34a 100644 --- a/loopback/server/middleware.json +++ b/loopback/server/middleware.json @@ -31,7 +31,8 @@ "loopback#token": {} }, "auth:after": { - "./middleware/current-user": {} + "./middleware/current-user": {}, + "./middleware/salix-version": {} }, "parse": { "body-parser#json":{} diff --git a/loopback/server/middleware/salix-version.js b/loopback/server/middleware/salix-version.js new file mode 100644 index 000000000..988a3b39c --- /dev/null +++ b/loopback/server/middleware/salix-version.js @@ -0,0 +1,8 @@ +const packageJson = require('../../../package.json'); + +module.exports = function(options) { + return function(req, res, next) { + res.set('Salix-Version', packageJson.version); + next(); + }; +}; diff --git a/print/methods/csv/csv.js b/loopback/util/csv.js similarity index 85% rename from print/methods/csv/csv.js rename to loopback/util/csv.js index d8725582d..e79c18da8 100644 --- a/print/methods/csv/csv.js +++ b/loopback/util/csv.js @@ -1,3 +1,9 @@ +/** + * Transforms an object to a raw data CSV file. + * + * @param {Object} rows Data + * @return {String} Formatted CSV data + */ function toCSV(rows) { const [columns] = rows; let content = Object.keys(columns).join('\t'); diff --git a/modules/account/back/methods/user-account/sync.js b/modules/account/back/methods/user-account/sync.js index 7c50dc236..86491d72e 100644 --- a/modules/account/back/methods/user-account/sync.js +++ b/modules/account/back/methods/user-account/sync.js @@ -26,7 +26,6 @@ module.exports = Self => { Self.sync = async function(userName, password, force) { let $ = Self.app.models; - let user = await $.Account.findOne({ fields: ['id'], where: {name: userName} diff --git a/modules/account/back/models/ldap-config.js b/modules/account/back/models/ldap-config.js index 819659066..a2a2684a9 100644 --- a/modules/account/back/models/ldap-config.js +++ b/modules/account/back/models/ldap-config.js @@ -5,6 +5,8 @@ const crypto = require('crypto'); const nthash = require('smbhash').nthash; module.exports = Self => { + const shouldSync = process.env.NODE_ENV !== 'test'; + Self.getSynchronizer = async function() { return await Self.findOne({ fields: [ @@ -30,6 +32,7 @@ module.exports = Self => { }, async syncUser(userName, info, password) { + let { client, accountConfig @@ -130,13 +133,14 @@ module.exports = Self => { })); } - if (changes.length) + if (shouldSync && changes.length) await client.modify(dn, changes); - } else + } else if (shouldSync) await client.add(dn, newEntry); } else { try { - await client.del(dn); + if (shouldSync) + await client.del(dn); console.log(` -> User '${userName}' removed from LDAP`); } catch (e) { if (e.name !== 'NoSuchObjectError') throw e; @@ -196,17 +200,19 @@ module.exports = Self => { for (let group of groups) { try { let dn = `cn=${group},${groupDn}`; - await client.modify(dn, new ldap.Change({ - operation, - modification: {memberUid: userName} - })); + if (shouldSync) { + await client.modify(dn, new ldap.Change({ + operation, + modification: {memberUid: userName} + })); + } } catch (err) { if (err.name !== 'NoSuchObjectError') throw err; } } } - + await applyOperations(deleteGroups, 'delete'); await applyOperations(addGroups, 'add'); }, @@ -266,8 +272,10 @@ module.exports = Self => { filter: 'objectClass=posixGroup' }; let reqs = []; - await client.searchForeach(this.groupDn, opts, - o => reqs.push(client.del(o.dn))); + await client.searchForeach(this.groupDn, opts, object => { + if (shouldSync) + reqs.push(client.del(object.dn)); + }); await Promise.all(reqs); // Recreate roles @@ -291,7 +299,8 @@ module.exports = Self => { } let dn = `cn=${role.name},${this.groupDn}`; - reqs.push(client.add(dn, newEntry)); + if (shouldSync) + reqs.push(client.add(dn, newEntry)); } await Promise.all(reqs); } diff --git a/modules/account/back/models/role-config.js b/modules/account/back/models/role-config.js index b5cfb7b83..ba7bf9d52 100644 --- a/modules/account/back/models/role-config.js +++ b/modules/account/back/models/role-config.js @@ -1,7 +1,13 @@ module.exports = Self => { Self.getSynchronizer = async function() { - return await Self.findOne({fields: ['id']}); + let NODE_ENV = process.env.NODE_ENV; + if (!NODE_ENV || NODE_ENV == 'development') + return null; + + return await Self.findOne({ + fields: ['id', 'rolePrefix', 'userPrefix', 'userHost'] + }); }; Object.assign(Self.prototype, { @@ -14,17 +20,16 @@ module.exports = Self => { }, async syncUser(userName, info, password) { - const mysqlHost = '%'; - let mysqlUser = userName; - if (this.dbType == 'MySQL') mysqlUser = `!${mysqlUser}`; + if (this.dbType == 'MySQL') + mysqlUser = this.userPrefix + mysqlUser; const [row] = await Self.rawSql( `SELECT COUNT(*) AS nRows FROM mysql.user WHERE User = ? AND Host = ?`, - [mysqlUser, mysqlHost] + [mysqlUser, this.userHost] ); let userExists = row.nRows > 0; @@ -35,11 +40,10 @@ module.exports = Self => { FROM mysql.global_priv WHERE User = ? AND Host = ?`, - [mysqlUser, mysqlHost] + [mysqlUser, this.userHost] ); const priv = row && JSON.parse(row.priv); - const role = priv && priv.default_role; - isUpdatable = !row || (role && role.startsWith('z-')); + isUpdatable = !row || (priv && priv.autogenerated); } if (!isUpdatable) { @@ -51,31 +55,33 @@ module.exports = Self => { if (password) { if (!userExists) { await Self.rawSql('CREATE USER ?@? IDENTIFIED BY ?', - [mysqlUser, mysqlHost, password] + [mysqlUser, this.userHost, password]); + await Self.rawSql( + `UPDATE mysql.global_priv + SET Priv = JSON_SET(Priv, '$.autogenerated' , TRUE) + WHERE User = ? AND Host = ?`, + [mysqlUser, this.userHost] ); userExists = true; } else { switch (this.dbType) { case 'MariaDB': await Self.rawSql('ALTER USER ?@? IDENTIFIED BY ?', - [mysqlUser, mysqlHost, password] - ); + [mysqlUser, this.userHost, password]); break; default: await Self.rawSql('SET PASSWORD FOR ?@? = PASSWORD(?)', - [mysqlUser, mysqlHost, password] - ); + [mysqlUser, this.userHost, password]); } } } if (userExists && this.dbType == 'MariaDB') { - let role = `z-${info.user.role().name}`; + let role = `${this.rolePrefix}${info.user.role().name}`; try { await Self.rawSql('REVOKE ALL, GRANT OPTION FROM ?@?', - [mysqlUser, mysqlHost] - ); + [mysqlUser, this.userHost]); } catch (err) { if (err.code == 'ER_REVOKE_GRANTS') console.warn(`${err.code}: ${err.sqlMessage}: ${err.sql}`); @@ -83,21 +89,18 @@ module.exports = Self => { throw err; } await Self.rawSql('GRANT ? TO ?@?', - [role, mysqlUser, mysqlHost] - ); + [role, mysqlUser, this.userHost]); if (role) { await Self.rawSql('SET DEFAULT ROLE ? FOR ?@?', - [role, mysqlUser, mysqlHost] - ); + [role, mysqlUser, this.userHost]); } else { await Self.rawSql('SET DEFAULT ROLE NONE FOR ?@?', - [mysqlUser, mysqlHost] - ); + [mysqlUser, this.userHost]); } } } else if (userExists) - await Self.rawSql('DROP USER ?@?', [mysqlUser, mysqlHost]); + await Self.rawSql('DROP USER ?@?', [mysqlUser, this.userHost]); } }); }; diff --git a/modules/account/back/models/role-config.json b/modules/account/back/models/role-config.json index c2abfcc38..f4138bea8 100644 --- a/modules/account/back/models/role-config.json +++ b/modules/account/back/models/role-config.json @@ -16,6 +16,18 @@ }, "mysqlPassword": { "type": "string" + }, + "rolePrefix": { + "type": "string" + }, + "userPrefix": { + "type": "string" + }, + "userHost": { + "type": "string" + }, + "tplUser": { + "type": "string" } } } diff --git a/modules/account/back/models/samba-config.js b/modules/account/back/models/samba-config.js index 5fd62a68b..168b5ffb4 100644 --- a/modules/account/back/models/samba-config.js +++ b/modules/account/back/models/samba-config.js @@ -60,16 +60,19 @@ module.exports = Self => { return `cn=Users,${dnBase}`; }, - async syncUser(userName, info, password) { + async syncUser(userName, info, password) { let {sshClient} = this; - + let sambaUser = await this.adClient.searchOne(this.usersDn(), { scope: 'sub', attributes: ['userAccountControl'], filter: `(&(objectClass=user)(sAMAccountName=${userName}))` }); let isEnabled = sambaUser - && !(sambaUser.userAccountControl & UserAccountControlFlags.ACCOUNTDISABLE); + && !(sambaUser.userAccountControl & UserAccountControlFlags.ACCOUNTDISABLE); + + if (process.env.NODE_ENV === 'test') + return; if (info.hasAccount) { if (!sambaUser) { diff --git a/modules/account/back/models/samba-config.json b/modules/account/back/models/samba-config.json index 1bde4cdb6..732c9b071 100644 --- a/modules/account/back/models/samba-config.json +++ b/modules/account/back/models/samba-config.json @@ -29,7 +29,7 @@ "type": "string" }, "verifyCert": { - "type": "Boolean" + "type": "boolean" } } } diff --git a/modules/account/back/models/sip-config.json b/modules/account/back/models/sip-config.json index 088f18224..6c5ba3db3 100644 --- a/modules/account/back/models/sip-config.json +++ b/modules/account/back/models/sip-config.json @@ -11,7 +11,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true } } diff --git a/modules/account/back/models/sip.json b/modules/account/back/models/sip.json index 7a7cb8605..21671f4bf 100644 --- a/modules/account/back/models/sip.json +++ b/modules/account/back/models/sip.json @@ -8,7 +8,7 @@ }, "properties": { "userFk": { - "type": "Number", + "type": "number", "id": true, "description": "The user id", "mysql": { @@ -16,7 +16,7 @@ } }, "extension": { - "type": "String", + "type": "string", "required": true } }, diff --git a/modules/account/front/descriptor/index.html b/modules/account/front/descriptor/index.html index d01e953c2..7a7ba43f3 100644 --- a/modules/account/front/descriptor/index.html +++ b/modules/account/front/descriptor/index.html @@ -1,6 +1,7 @@ + description="$ctrl.user.nickname" + summary="$ctrl.$.summary"> Delete - - Change role - - @@ -127,22 +120,6 @@ question="Are you sure you want to continue?" message="User will be deactivated">
- - - - - - - - - - Change password + + + diff --git a/modules/account/front/descriptor/index.js b/modules/account/front/descriptor/index.js index 3f27b1f76..b802b2349 100644 --- a/modules/account/front/descriptor/index.js +++ b/modules/account/front/descriptor/index.js @@ -30,20 +30,6 @@ class Controller extends Descriptor { .then(() => this.vnApp.showSuccess(this.$t('User removed'))); } - onChangeRole() { - this.newRole = this.user.role.id; - this.$.changeRole.show(); - } - - onChangeRoleAccept() { - const params = {roleFk: this.newRole}; - return this.$http.patch(`Accounts/${this.id}`, params) - .then(() => { - this.emit('change'); - this.vnApp.showSuccess(this.$t('Role changed succesfully!')); - }); - } - onChangePassClick(askOldPass) { this.$http.get('UserPasswords/findOne') .then(res => { diff --git a/modules/account/front/descriptor/index.spec.js b/modules/account/front/descriptor/index.spec.js index 8ee67a304..f5e7aa7d4 100644 --- a/modules/account/front/descriptor/index.spec.js +++ b/modules/account/front/descriptor/index.spec.js @@ -30,17 +30,6 @@ describe('component vnUserDescriptor', () => { }); }); - describe('onChangeRoleAccept()', () => { - it('should call backend method to change role', () => { - $httpBackend.expectPATCH('Accounts/1').respond(); - controller.onChangeRoleAccept(); - $httpBackend.flush(); - - expect(controller.vnApp.showSuccess).toHaveBeenCalled(); - expect(controller.emit).toHaveBeenCalledWith('change'); - }); - }); - describe('onPassChange()', () => { it('should throw an error when password is empty', () => { expect(() => { diff --git a/modules/account/front/index.js b/modules/account/front/index.js index 50e04c9fa..0cd0c4955 100644 --- a/modules/account/front/index.js +++ b/modules/account/front/index.js @@ -18,3 +18,4 @@ import './roles'; import './ldap'; import './samba'; import './accounts'; +import './privileges'; diff --git a/modules/account/front/privileges/index.html b/modules/account/front/privileges/index.html new file mode 100644 index 000000000..e3e44898a --- /dev/null +++ b/modules/account/front/privileges/index.html @@ -0,0 +1,42 @@ + + + +
+ + + + + + + + + + + + + + + + +
diff --git a/modules/account/front/privileges/index.js b/modules/account/front/privileges/index.js new file mode 100644 index 000000000..00ba772df --- /dev/null +++ b/modules/account/front/privileges/index.js @@ -0,0 +1,9 @@ +import ngModule from '../module'; +import Section from 'salix/components/section'; + +export default class Controller extends Section {} + +ngModule.component('vnUserPrivileges', { + template: require('./index.html'), + controller: Controller +}); diff --git a/modules/account/front/privileges/locale/es.yml b/modules/account/front/privileges/locale/es.yml new file mode 100644 index 000000000..d66a7a6cf --- /dev/null +++ b/modules/account/front/privileges/locale/es.yml @@ -0,0 +1,2 @@ +Privileges: Privilegios +Has grant: Puede delegar privilegios diff --git a/modules/account/front/role/summary/index.js b/modules/account/front/role/summary/index.js index 0a08fe8b2..4f321fa98 100644 --- a/modules/account/front/role/summary/index.js +++ b/modules/account/front/role/summary/index.js @@ -6,7 +6,6 @@ class Controller extends Component { this._role = value; this.$.summary = null; if (!value) return; - this.$http.get(`Roles/${value.id}`) .then(res => this.$.summary = res.data); } diff --git a/modules/account/front/routes.json b/modules/account/front/routes.json index 66b26f427..b96c931c9 100644 --- a/modules/account/front/routes.json +++ b/modules/account/front/routes.json @@ -19,7 +19,8 @@ {"state": "account.card.basicData", "icon": "settings"}, {"state": "account.card.roles", "icon": "group"}, {"state": "account.card.mailForwarding", "icon": "forward"}, - {"state": "account.card.aliases", "icon": "email"} + {"state": "account.card.aliases", "icon": "email"}, + {"state": "account.card.privileges", "icon": "badge"} ], "role": [ {"state": "account.role.card.basicData", "icon": "settings"}, @@ -99,6 +100,13 @@ "description": "Mail aliases", "acl": ["marketing", "hr"] }, + { + "url": "/privileges", + "state": "account.card.privileges", + "component": "vn-user-privileges", + "description": "Privileges", + "acl": ["hr"] + }, { "url": "/role?q", "state": "account.role", @@ -249,4 +257,4 @@ "acl": ["developer"] } ] -} \ No newline at end of file +} diff --git a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js index de812417a..22a48f83e 100644 --- a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js +++ b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js @@ -1,6 +1,6 @@ module.exports = Self => { Self.remoteMethodCtx('importToNewRefundTicket', { - description: 'Imports lines from claimBeginning to a new ticket with specific shipped, landed dates, agency and company', + description: 'Import lines of claimBeginning to new ticket with shipped, landed dates, agency and company', accessType: 'WRITE', accepts: [{ arg: 'id', diff --git a/modules/claim/back/methods/claim-end/deleteClamedSales.js b/modules/claim/back/methods/claim-end/deleteClamedSales.js new file mode 100644 index 000000000..a6142c0fd --- /dev/null +++ b/modules/claim/back/methods/claim-end/deleteClamedSales.js @@ -0,0 +1,49 @@ +module.exports = Self => { + Self.remoteMethodCtx('deleteClamedSales', { + description: 'Deletes the claimed sales', + accessType: 'WRITE', + accepts: [{ + arg: 'sales', + type: ['object'], + required: true, + description: 'The sales to remove' + }], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/deleteClamedSales`, + verb: 'POST' + } + }); + + Self.deleteClamedSales = async(ctx, sales, options) => { + const models = Self.app.models; + const myOptions = {}; + const tx = await Self.beginTransaction({}); + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) + myOptions.transaction = tx; + + try { + const promises = []; + for (let sale of sales) { + const deletedSale = models.ClaimEnd.destroyById(sale.id, myOptions); + promises.push(deletedSale); + } + + const deletedSales = await Promise.all(promises); + + if (tx) await tx.commit(); + + return deletedSales; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/claim/back/methods/claim-end/filter.js b/modules/claim/back/methods/claim-end/filter.js new file mode 100644 index 000000000..0dda16a3a --- /dev/null +++ b/modules/claim/back/methods/claim-end/filter.js @@ -0,0 +1,69 @@ + +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; + +module.exports = Self => { + Self.remoteMethodCtx('filter', { + description: 'Find all instances of the model matched by filter from the data source.', + accessType: 'READ', + accepts: [ + { + arg: 'filter', + type: 'object', + description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string', + http: {source: 'query'} + }, { + arg: 'search', + type: 'string', + description: `If it's and integer searchs by id, otherwise it searchs by client id`, + http: {source: 'query'} + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/filter`, + verb: 'GET' + } + }); + + Self.filter = async(ctx, filter, options) => { + const conn = Self.dataSource.connector; + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const stmts = []; + + const stmt = new ParameterizedSQL( + `SELECT * + FROM ( + SELECT + ce.id, + ce.claimFk, + s.itemFk, + s.ticketFk, + ce.claimDestinationFk, + t.landed, + s.quantity, + s.concept, + s.price, + s.discount, + s.quantity * s.price * ((100 - s.discount) / 100) total + FROM vn.claimEnd ce + LEFT JOIN vn.sale s ON s.id = ce.saleFk + LEFT JOIN vn.ticket t ON t.id = s.ticketFk + ) ce` + ); + + stmt.merge(conn.makeSuffix(filter)); + const itemsIndex = stmts.push(stmt) - 1; + + const sql = ParameterizedSQL.join(stmts, ';'); + const result = await conn.executeStmt(sql, myOptions); + + return itemsIndex === 0 ? result : result[itemsIndex]; + }; +}; diff --git a/modules/claim/back/methods/claim-end/importTicketSales.js b/modules/claim/back/methods/claim-end/importTicketSales.js deleted file mode 100644 index 6dd64be36..000000000 --- a/modules/claim/back/methods/claim-end/importTicketSales.js +++ /dev/null @@ -1,61 +0,0 @@ -module.exports = Self => { - Self.remoteMethodCtx('importTicketSales', { - description: 'Imports lines from claimBeginning to a new ticket with specific shipped, landed dates, agency and company', - accessType: 'WRITE', - accepts: [{ - arg: 'params', - type: 'object', - http: {source: 'body'} - }], - returns: { - type: ['Object'], - root: true - }, - http: { - path: `/importTicketSales`, - verb: 'POST' - } - }); - - Self.importTicketSales = async(ctx, params, options) => { - let models = Self.app.models; - let userId = ctx.req.accessToken.userId; - - let tx; - const myOptions = {}; - - if (typeof options == 'object') - Object.assign(myOptions, options); - - if (!myOptions.transaction) { - tx = await Self.beginTransaction({}); - myOptions.transaction = tx; - } - - try { - const worker = await models.Worker.findOne({where: {userFk: userId}}, myOptions); - - let ticketSales = await models.Sale.find({ - where: {ticketFk: params.ticketFk} - }, myOptions); - - let claimEnds = []; - ticketSales.forEach(sale => { - claimEnds.push({ - saleFk: sale.id, - claimFk: params.claimFk, - workerFk: worker.id - }); - }); - - const createdClaimEnds = await Self.create(claimEnds, myOptions); - - if (tx) await tx.commit(); - - return createdClaimEnds; - } catch (e) { - if (tx) await tx.rollback(); - throw e; - } - }; -}; diff --git a/modules/claim/back/methods/claim-end/specs/importTicketSales.spec.js b/modules/claim/back/methods/claim-end/specs/importTicketSales.spec.js deleted file mode 100644 index 93f11e21f..000000000 --- a/modules/claim/back/methods/claim-end/specs/importTicketSales.spec.js +++ /dev/null @@ -1,26 +0,0 @@ -const app = require('vn-loopback/server/server'); - -describe('Claim importTicketSales()', () => { - it('should import sales to a claim actions from an specific ticket', async() => { - const ctx = {req: {accessToken: {userId: 5}}}; - - const tx = await app.models.Entry.beginTransaction({}); - try { - const options = {transaction: tx}; - - const claimEnds = await app.models.ClaimEnd.importTicketSales(ctx, { - claimFk: 1, - ticketFk: 1 - }, options); - - expect(claimEnds.length).toEqual(4); - expect(claimEnds[0].saleFk).toEqual(1); - expect(claimEnds[2].saleFk).toEqual(3); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); -}); diff --git a/modules/claim/back/methods/claim/claimPickupEmail.js b/modules/claim/back/methods/claim/claimPickupEmail.js new file mode 100644 index 000000000..c688d6ded --- /dev/null +++ b/modules/claim/back/methods/claim/claimPickupEmail.js @@ -0,0 +1,92 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('claimPickupEmail', { + description: 'Sends the the claim pickup order email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The claim id', + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id to send to the recipient preferred language', + required: false + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/:id/claim-pickup-email', + verb: 'POST' + } + }); + + Self.claimPickupEmail = async ctx => { + const models = Self.app.models; + const userId = ctx.req.accessToken.userId; + const $t = ctx.req.__; // $translate + const origin = ctx.req.headers.origin; + + const args = Object.assign({}, ctx.args); + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const claim = await models.Claim.findById(args.id, { + fields: ['id', 'clientFk'], + include: { + relation: 'client', + scope: { + fields: ['name', 'salesPersonFk'] + } + } + }); + + const message = $t('Claim pickup order sent', { + claimId: args.id, + clientName: claim.client().name, + claimUrl: `${origin}/#!/claim/${args.id}/summary`, + }); + + const salesPersonId = claim.client().salesPersonFk; + if (salesPersonId) + await models.Chat.sendCheckingPresence(ctx, salesPersonId, message); + + await models.ClaimLog.create({ + originFk: args.id, + userFk: userId, + action: 'insert', + description: 'Claim-pickup-order sent', + changedModel: 'Mail' + }); + + const email = new Email('claim-pickup-order', params); + + return email.send(); + }; +}; diff --git a/modules/claim/back/methods/claim/claimPickupPdf.js b/modules/claim/back/methods/claim/claimPickupPdf.js new file mode 100644 index 000000000..0e3abe908 --- /dev/null +++ b/modules/claim/back/methods/claim/claimPickupPdf.js @@ -0,0 +1,55 @@ +const { Report } = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('claimPickupPdf', { + description: 'Returns the claim pickup order pdf', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The claim id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/claim-pickup-pdf', + verb: 'GET' + } + }); + + Self.claimPickupPdf = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const report = new Report('claim-pickup-order', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="doc-${id}.pdf"`]; + }; +}; diff --git a/modules/claim/back/methods/claim/downloadFile.js b/modules/claim/back/methods/claim/downloadFile.js new file mode 100644 index 000000000..750356b0b --- /dev/null +++ b/modules/claim/back/methods/claim/downloadFile.js @@ -0,0 +1,59 @@ +const UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.remoteMethodCtx('downloadFile', { + description: 'Get the claim file', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'Number', + description: 'The document id', + http: {source: 'path'} + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, + { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, + { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: `/:id/downloadFile`, + verb: 'GET' + } + }); + + Self.downloadFile = async function(ctx, id) { + const models = Self.app.models; + const ClaimContainer = models.ClaimContainer; + const dms = await models.Dms.findById(id); + const pathHash = ClaimContainer.getHash(dms.id); + try { + await ClaimContainer.getFile(pathHash, dms.file); + } catch (e) { + if (e.code != 'ENOENT') + throw e; + + const error = new UserError(`File doesn't exists`); + error.statusCode = 404; + + throw error; + } + + const stream = ClaimContainer.downloadStream(pathHash, dms.file); + + return [stream, dms.contentType, `filename="${dms.file}"`]; + }; +}; diff --git a/modules/claim/back/methods/claim/filter.js b/modules/claim/back/methods/claim/filter.js index f4b0c26a2..e86830200 100644 --- a/modules/claim/back/methods/claim/filter.js +++ b/modules/claim/back/methods/claim/filter.js @@ -27,7 +27,7 @@ module.exports = Self => { http: {source: 'query'} }, { - arg: 'client', + arg: 'clientName', type: 'string', description: 'The worker name', http: {source: 'query'} @@ -94,19 +94,19 @@ module.exports = Self => { ? {'cl.id': value} : { or: [ - {'c.name': {like: `%${value}%`}} + {'cl.clientName': {like: `%${value}%`}} ] }; - case 'client': - return {'c.name': {like: `%${value}%`}}; - case 'id': - return {'cl.id': value}; + case 'clientName': + return {'cl.clientName': {like: `%${value}%`}}; case 'clientFk': - return {'c.id': value}; + return {'cl.clientFk': value}; + case 'id': case 'claimStateFk': - return {'cl.claimStateFk': value}; + case 'priority': + return {[`cl.${param}`]: value}; case 'salesPersonFk': - return {'c.salesPersonFk': value}; + return {'cl.salesPersonFk': value}; case 'attenderFk': return {'cl.workerFk': value}; case 'created': @@ -123,12 +123,24 @@ module.exports = Self => { const stmts = []; const stmt = new ParameterizedSQL( - `SELECT cl.id, c.name, cl.clientFk, cl.workerFk, u.name AS userName, cs.description, cl.created - FROM claim cl - LEFT JOIN client c ON c.id = cl.clientFk - LEFT JOIN worker w ON w.id = cl.workerFk - LEFT JOIN account.user u ON u.id = w.userFk - LEFT JOIN claimState cs ON cs.id = cl.claimStateFk` + `SELECT * + FROM ( + SELECT + cl.id, + cl.clientFk, + c.name AS clientName, + cl.workerFk, + u.name AS workerName, + cs.description, + cl.created, + cs.priority, + cl.claimStateFk, + c.salesPersonFk + FROM claim cl + LEFT JOIN client c ON c.id = cl.clientFk + LEFT JOIN worker w ON w.id = cl.workerFk + LEFT JOIN account.user u ON u.id = w.userFk + LEFT JOIN claimState cs ON cs.id = cl.claimStateFk ) cl` ); stmt.merge(conn.makeSuffix(filter)); diff --git a/modules/claim/back/methods/claim/getSummary.js b/modules/claim/back/methods/claim/getSummary.js index 512e4a77f..ca376f853 100644 --- a/modules/claim/back/methods/claim/getSummary.js +++ b/modules/claim/back/methods/claim/getSummary.js @@ -1,5 +1,5 @@ module.exports = Self => { - Self.remoteMethod('getSummary', { + Self.remoteMethodCtx('getSummary', { description: 'Return the claim summary', accessType: 'READ', accepts: [{ @@ -19,7 +19,7 @@ module.exports = Self => { } }); - Self.getSummary = async(id, options) => { + Self.getSummary = async(ctx, id, options) => { const myOptions = {}; if (typeof options == 'object') @@ -47,7 +47,7 @@ module.exports = Self => { { relation: 'claimState', scope: { - fields: ['id', 'description'] + fields: ['id', 'code', 'description'] } }, { @@ -84,6 +84,20 @@ module.exports = Self => { }; promises.push(Self.app.models.ClaimBeginning.find(filter, myOptions)); + // Claim observations + filter = { + where: {claimFk: id}, + include: [ + { + relation: 'worker', + scope: { + fields: ['id', 'firstName', 'lastName'] + } + } + ] + }; + promises.push(Self.app.models.ClaimObservation.find(filter, myOptions)); + // Claim developments filter = { where: {claimFk: id}, @@ -135,10 +149,12 @@ module.exports = Self => { const res = await Promise.all(promises); + summary.isEditable = await Self.isEditable(ctx, id, myOptions); [summary.claim] = res[0]; summary.salesClaimed = res[1]; - summary.developments = res[2]; - summary.actions = res[3]; + summary.observations = res[2]; + summary.developments = res[3]; + summary.actions = res[4]; return summary; }; diff --git a/modules/claim/back/methods/claim/regularizeClaim.js b/modules/claim/back/methods/claim/regularizeClaim.js index d1fe7c13e..ab8ea58a4 100644 --- a/modules/claim/back/methods/claim/regularizeClaim.js +++ b/modules/claim/back/methods/claim/regularizeClaim.js @@ -1,6 +1,7 @@ module.exports = Self => { Self.remoteMethodCtx('regularizeClaim', { - description: 'Imports lines from claimBeginning to a new ticket with specific shipped, landed dates, agency and company', + description: `Imports lines from claimBeginning to a new ticket + with specific shipped, landed dates, agency and company`, accessType: 'WRITE', accepts: [{ arg: 'id', @@ -85,7 +86,6 @@ module.exports = Self => { }; ticketFk = await createTicket(ctx, myOptions); } - await models.Sale.create({ ticketFk: ticketFk, itemFk: sale.itemFk, diff --git a/modules/claim/back/methods/claim/specs/createFromSales.spec.js b/modules/claim/back/methods/claim/specs/createFromSales.spec.js index 097dcc0d9..9151c361e 100644 --- a/modules/claim/back/methods/claim/specs/createFromSales.spec.js +++ b/modules/claim/back/methods/claim/specs/createFromSales.spec.js @@ -57,7 +57,7 @@ describe('Claim createFromSales()', () => { const todayMinusEightDays = new Date(); todayMinusEightDays.setDate(todayMinusEightDays.getDate() - 8); - const ticket = await models.Ticket.findById(ticketId, options); + const ticket = await models.Ticket.findById(ticketId, null, options); await ticket.updateAttribute('landed', todayMinusEightDays, options); const claim = await models.Claim.createFromSales(ctx, ticketId, newSale, options); @@ -88,7 +88,7 @@ describe('Claim createFromSales()', () => { const todayMinusEightDays = new Date(); todayMinusEightDays.setDate(todayMinusEightDays.getDate() - 8); - const ticket = await models.Ticket.findById(ticketId, options); + const ticket = await models.Ticket.findById(ticketId, null, options); await ticket.updateAttribute('landed', todayMinusEightDays, options); await models.Claim.createFromSales(ctx, ticketId, newSale, options); diff --git a/modules/claim/back/methods/claim/specs/downloadFile.spec.js b/modules/claim/back/methods/claim/specs/downloadFile.spec.js new file mode 100644 index 000000000..3e46a9bc3 --- /dev/null +++ b/modules/claim/back/methods/claim/specs/downloadFile.spec.js @@ -0,0 +1,13 @@ +const app = require('vn-loopback/server/server'); + +describe('claim downloadFile()', () => { + const dmsId = 7; + + it('should return a response for an employee with image content-type', async() => { + const workerId = 1107; + const ctx = {req: {accessToken: {userId: workerId}}}; + const result = await app.models.Claim.downloadFile(ctx, dmsId); + + expect(result[1]).toEqual('image/jpeg'); + }); +}); diff --git a/modules/claim/back/methods/claim/specs/getSummary.spec.js b/modules/claim/back/methods/claim/specs/getSummary.spec.js index 541f42cfb..c4d01ecdc 100644 --- a/modules/claim/back/methods/claim/specs/getSummary.spec.js +++ b/modules/claim/back/methods/claim/specs/getSummary.spec.js @@ -3,17 +3,25 @@ const app = require('vn-loopback/server/server'); describe('claim getSummary()', () => { it('should return summary with claim, salesClaimed, developments and actions defined ', async() => { const tx = await app.models.Claim.beginTransaction({}); - + const ctx = { + req: { + accessToken: { + userId: 9 + } + } + }; try { const options = {transaction: tx}; - const result = await app.models.Claim.getSummary(1, options); + const result = await app.models.Claim.getSummary(ctx, 1, options); const keys = Object.keys(result); expect(keys).toContain('claim'); expect(keys).toContain('salesClaimed'); expect(keys).toContain('developments'); + expect(keys).toContain('observations'); expect(keys).toContain('actions'); + expect(keys).toContain('isEditable'); await tx.rollback(); } catch (e) { diff --git a/modules/claim/back/methods/claim/specs/regularizeClaim.spec.js b/modules/claim/back/methods/claim/specs/regularizeClaim.spec.js index 8ea310772..bf26d2255 100644 --- a/modules/claim/back/methods/claim/specs/regularizeClaim.spec.js +++ b/modules/claim/back/methods/claim/specs/regularizeClaim.spec.js @@ -1,9 +1,10 @@ -const app = require('vn-loopback/server/server'); +const models = require('vn-loopback/server/server').models; describe('claim regularizeClaim()', () => { + const userId = 18; const ctx = { req: { - accessToken: {userId: 18}, + accessToken: {userId: userId}, headers: {origin: 'http://localhost'} } }; @@ -11,8 +12,9 @@ describe('claim regularizeClaim()', () => { return params.nickname; }; - const chatModel = app.models.Chat; - const claimFk = 1; + const chatModel = models.Chat; + const claimId = 1; + const ticketId = 1; const pendentState = 1; const resolvedState = 3; const trashDestination = 2; @@ -21,27 +23,40 @@ describe('claim regularizeClaim()', () => { let claimEnds = []; let trashTicket; + async function importTicket(ticketId, claimId, userId, options) { + const ticketSales = await models.Sale.find({ + where: {ticketFk: ticketId} + }, options); + const claimEnds = []; + for (let sale of ticketSales) { + claimEnds.push({ + saleFk: sale.id, + claimFk: claimId, + workerFk: userId + }); + } + + return await models.ClaimEnd.create(claimEnds, options); + } + it('should send a chat message with value "Trash" and then change claim state to resolved', async() => { - const tx = await app.models.Claim.beginTransaction({}); + const tx = await models.Claim.beginTransaction({}); try { const options = {transaction: tx}; spyOn(chatModel, 'sendCheckingPresence').and.callThrough(); - claimEnds = await app.models.ClaimEnd.importTicketSales(ctx, { - claimFk: claimFk, - ticketFk: 1 - }, options); + claimEnds = await importTicket(ticketId, claimId, userId, options); for (claimEnd of claimEnds) await claimEnd.updateAttributes({claimDestinationFk: trashDestination}, options); - let claimBefore = await app.models.Claim.findById(claimFk, null, options); - await app.models.Claim.regularizeClaim(ctx, claimFk, options); - let claimAfter = await app.models.Claim.findById(claimFk, null, options); + let claimBefore = await models.Claim.findById(claimId, null, options); + await models.Claim.regularizeClaim(ctx, claimId, options); + let claimAfter = await models.Claim.findById(claimId, null, options); - trashTicket = await app.models.Ticket.findOne({where: {addressFk: 12}}, options); + trashTicket = await models.Ticket.findOne({where: {addressFk: 12}}, options); expect(trashTicket.addressFk).toEqual(trashAddress); expect(claimBefore.claimStateFk).toEqual(pendentState); @@ -57,22 +72,19 @@ describe('claim regularizeClaim()', () => { }); it('should send a chat message with value "Bueno" and then change claim state to resolved', async() => { - const tx = await app.models.Claim.beginTransaction({}); + const tx = await models.Claim.beginTransaction({}); try { const options = {transaction: tx}; spyOn(chatModel, 'sendCheckingPresence').and.callThrough(); - claimEnds = await app.models.ClaimEnd.importTicketSales(ctx, { - claimFk: claimFk, - ticketFk: 1 - }, options); + claimEnds = await importTicket(ticketId, claimId, userId, options); for (claimEnd of claimEnds) await claimEnd.updateAttributes({claimDestinationFk: okDestination}, options); - await app.models.Claim.regularizeClaim(ctx, claimFk, options); + await models.Claim.regularizeClaim(ctx, claimId, options); expect(chatModel.sendCheckingPresence).toHaveBeenCalledWith(ctx, 18, 'Bueno'); expect(chatModel.sendCheckingPresence).toHaveBeenCalledTimes(4); @@ -85,22 +97,19 @@ describe('claim regularizeClaim()', () => { }); it('should send a chat message to the salesPerson when claim isPickUp is enabled', async() => { - const tx = await app.models.Claim.beginTransaction({}); + const tx = await models.Claim.beginTransaction({}); try { const options = {transaction: tx}; spyOn(chatModel, 'sendCheckingPresence').and.callThrough(); - claimEnds = await app.models.ClaimEnd.importTicketSales(ctx, { - claimFk: claimFk, - ticketFk: 1 - }, options); + claimEnds = await importTicket(ticketId, claimId, userId, options); for (claimEnd of claimEnds) await claimEnd.updateAttributes({claimDestinationFk: okDestination}, options); - await app.models.Claim.regularizeClaim(ctx, claimFk, options); + await models.Claim.regularizeClaim(ctx, claimId, options); expect(chatModel.sendCheckingPresence).toHaveBeenCalledWith(ctx, 18, 'Bueno'); expect(chatModel.sendCheckingPresence).toHaveBeenCalledTimes(4); diff --git a/modules/claim/back/methods/claim/specs/updateClaim.spec.js b/modules/claim/back/methods/claim/specs/updateClaim.spec.js index de7209c18..8d888eb40 100644 --- a/modules/claim/back/methods/claim/specs/updateClaim.spec.js +++ b/modules/claim/back/methods/claim/specs/updateClaim.spec.js @@ -47,7 +47,7 @@ describe('Update Claim', () => { expect(error.message).toEqual(`You don't have enough privileges to change that field`); }); - it(`should success to update the claim within privileges `, async() => { + it(`should success to update the claimState to 'canceled' and send a rocket message`, async() => { const tx = await app.models.Claim.beginTransaction({}); try { @@ -55,13 +55,15 @@ describe('Update Claim', () => { const newClaim = await app.models.Claim.create(originalData, options); + const chatModel = app.models.Chat; + spyOn(chatModel, 'sendCheckingPresence').and.callThrough(); + const canceledState = 4; const claimManagerId = 72; const ctx = { req: { - accessToken: { - userId: claimManagerId - } + accessToken: {userId: claimManagerId}, + headers: {origin: 'http://localhost'} }, args: { observation: 'valid observation', @@ -69,11 +71,56 @@ describe('Update Claim', () => { hasToPickUp: false } }; + ctx.req.__ = (value, params) => { + return params.nickname; + }; await app.models.Claim.updateClaim(ctx, newClaim.id, options); let updatedClaim = await app.models.Claim.findById(newClaim.id, null, options); expect(updatedClaim.observation).toEqual(ctx.args.observation); + expect(chatModel.sendCheckingPresence).toHaveBeenCalled(); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it(`should success to update the claimState to 'incomplete' and send a rocket message`, async() => { + const tx = await app.models.Claim.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const newClaim = await app.models.Claim.create(originalData, options); + + const chatModel = app.models.Chat; + spyOn(chatModel, 'sendCheckingPresence').and.callThrough(); + + const incompleteState = 5; + const claimManagerId = 72; + const ctx = { + req: { + accessToken: {userId: claimManagerId}, + headers: {origin: 'http://localhost'} + }, + args: { + observation: 'valid observation', + claimStateFk: incompleteState, + hasToPickUp: false + } + }; + ctx.req.__ = (value, params) => { + return params.nickname; + }; + await app.models.Claim.updateClaim(ctx, newClaim.id, options); + + let updatedClaim = await app.models.Claim.findById(newClaim.id, null, options); + + expect(updatedClaim.observation).toEqual(ctx.args.observation); + expect(chatModel.sendCheckingPresence).toHaveBeenCalled(); await tx.rollback(); } catch (e) { diff --git a/modules/claim/back/methods/claim/specs/uploadFile.spec.js b/modules/claim/back/methods/claim/specs/uploadFile.spec.js new file mode 100644 index 000000000..952d80d27 --- /dev/null +++ b/modules/claim/back/methods/claim/specs/uploadFile.spec.js @@ -0,0 +1,18 @@ +const app = require('vn-loopback/server/server'); + +describe('claim uploadFile()', () => { + it(`should return an error for a user without enough privileges`, async() => { + const clientId = 1101; + const ticketDmsTypeId = 14; + const ctx = {req: {accessToken: {userId: clientId}}, args: {dmsTypeId: ticketDmsTypeId}}; + + let error; + await app.models.Claim.uploadFile(ctx).catch(e => { + error = e; + }).finally(() => { + expect(error.message).toEqual(`You don't have enough privileges`); + }); + + expect(error).toBeDefined(); + }); +}); diff --git a/modules/claim/back/methods/claim/updateClaim.js b/modules/claim/back/methods/claim/updateClaim.js index a646db355..cc9937c19 100644 --- a/modules/claim/back/methods/claim/updateClaim.js +++ b/modules/claim/back/methods/claim/updateClaim.js @@ -28,6 +28,10 @@ module.exports = Self => { { arg: 'hasToPickUp', type: 'boolean' + }, + { + arg: 'packages', + type: 'number' }], returns: { type: 'object', @@ -92,9 +96,12 @@ module.exports = Self => { // When claimState has been changed if (args.claimStateFk) { const newState = await models.ClaimState.findById(args.claimStateFk, null, options); - - if (newState.code == 'incomplete') - notifyStateChange(ctx, salesPerson.id, claim); + if (newState.hasToNotify) { + if (newState.code == 'incomplete') + notifyStateChange(ctx, salesPerson.id, claim, newState.code); + if (newState.code == 'canceled') + notifyStateChange(ctx, claim.workerFk, claim, newState.code); + } } if (tx) await tx.commit(); @@ -121,11 +128,12 @@ module.exports = Self => { return canUpdate; } - async function notifyStateChange(ctx, workerId, claim) { - const origin = ctx.req.headers.origin; + async function notifyStateChange(ctx, workerId, claim, state) { const models = Self.app.models; + const origin = ctx.req.headers.origin; const $t = ctx.req.__; // $translate - const message = $t('Claim state has changed to incomplete', { + + const message = $t(`Claim state has changed to ${state}`, { claimId: claim.id, clientName: claim.client().name, claimUrl: `${origin}/#!/claim/${claim.id}/summary` diff --git a/modules/claim/back/methods/claim/updateClaimDestination.js b/modules/claim/back/methods/claim/updateClaimDestination.js new file mode 100644 index 000000000..190883c6d --- /dev/null +++ b/modules/claim/back/methods/claim/updateClaimDestination.js @@ -0,0 +1,55 @@ + +module.exports = Self => { + Self.remoteMethod('updateClaimDestination', { + description: 'Update a claim with privileges', + accessType: 'WRITE', + accepts: [{ + arg: 'rows', + type: ['object'], + required: true, + description: `the sales which will be modified the claimDestinationFk` + }, { + arg: 'claimDestinationFk', + type: 'number', + required: true + }], + returns: { + type: 'object', + root: true + }, + http: { + path: `/updateClaimDestination`, + verb: 'post' + } + }); + + Self.updateClaimDestination = async(rows, claimDestinationFk, options) => { + const tx = await Self.beginTransaction({}); + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) + myOptions.transaction = tx; + + try { + const models = Self.app.models; + const promises = []; + for (let row of rows) { + const claimEnd = await models.ClaimEnd.findById(row.id, null, myOptions); + const updatedClaimEnd = claimEnd.updateAttribute('claimDestinationFk', claimDestinationFk, myOptions); + promises.push(updatedClaimEnd); + } + + const updatedSales = await Promise.all(promises); + + if (tx) await tx.commit(); + + return updatedSales; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/claim/back/methods/claim/uploadFile.js b/modules/claim/back/methods/claim/uploadFile.js index 81ad40219..3d0737cf8 100644 --- a/modules/claim/back/methods/claim/uploadFile.js +++ b/modules/claim/back/methods/claim/uploadFile.js @@ -1,6 +1,10 @@ +const UserError = require('vn-loopback/util/user-error'); +const fs = require('fs-extra'); +const path = require('path'); + module.exports = Self => { Self.remoteMethodCtx('uploadFile', { - description: 'Upload and attach a document', + description: 'Upload and attach a file', accessType: 'WRITE', accepts: [{ arg: 'id', @@ -53,22 +57,54 @@ module.exports = Self => { }); Self.uploadFile = async(ctx, id, options) => { - let tx; + const tx = await Self.beginTransaction({}); const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); - if (!myOptions.transaction) { - tx = await Self.beginTransaction({}); + if (!myOptions.transaction) myOptions.transaction = tx; - } + const models = Self.app.models; const promises = []; + const TempContainer = models.TempContainer; + const ClaimContainer = models.ClaimContainer; + const fileOptions = {}; + const args = ctx.args; + let srcFile; try { - const uploadedFiles = await models.Dms.uploadFile(ctx, myOptions); - uploadedFiles.forEach(dms => { + const hasWriteRole = await models.DmsType.hasWriteRole(ctx, args.dmsTypeId, myOptions); + if (!hasWriteRole) + throw new UserError(`You don't have enough privileges`); + + // Upload file to temporary path + const tempContainer = await TempContainer.container('dms'); + const uploaded = await TempContainer.upload(tempContainer.name, ctx.req, ctx.result, fileOptions); + const files = Object.values(uploaded.files).map(file => { + return file[0]; + }); + + const addedDms = []; + for (const uploadedFile of files) { + const newDms = await createDms(ctx, uploadedFile, myOptions); + const pathHash = ClaimContainer.getHash(newDms.id); + + const file = await TempContainer.getFile(tempContainer.name, uploadedFile.name); + srcFile = path.join(file.client.root, file.container, file.name); + + const claimContainer = await ClaimContainer.container(pathHash); + const dstFile = path.join(claimContainer.client.root, pathHash, newDms.file); + + await fs.move(srcFile, dstFile, { + overwrite: true + }); + + addedDms.push(newDms); + } + + addedDms.forEach(dms => { const newClaimDms = models.ClaimDms.create({ claimFk: id, dmsFk: dms.id @@ -83,7 +119,34 @@ module.exports = Self => { return resolvedPromises; } catch (e) { if (tx) await tx.rollback(); + + if (fs.existsSync(srcFile)) + await fs.unlink(srcFile); + throw e; } }; + + async function createDms(ctx, file, myOptions) { + const models = Self.app.models; + const myUserId = ctx.req.accessToken.userId; + const args = ctx.args; + + const newDms = await models.Dms.create({ + workerFk: myUserId, + dmsTypeFk: args.dmsTypeId, + companyFk: args.companyId, + warehouseFk: args.warehouseId, + reference: args.reference, + description: args.description, + contentType: file.type, + hasFile: args.hasFile + }, myOptions); + + let fileName = file.name; + const extension = models.DmsContainer.getFileExtension(fileName); + fileName = `${newDms.id}.${extension}`; + + return newDms.updateAttribute('file', fileName, myOptions); + } }; diff --git a/modules/claim/back/model-config.json b/modules/claim/back/model-config.json index 16d34543c..83d88039c 100644 --- a/modules/claim/back/model-config.json +++ b/modules/claim/back/model-config.json @@ -2,6 +2,9 @@ "Claim": { "dataSource": "vn" }, + "ClaimContainer": { + "dataSource": "claimStorage" + }, "ClaimBeginning": { "dataSource": "vn" }, @@ -37,5 +40,11 @@ }, "ClaimLog": { "dataSource": "vn" - } + }, + "ClaimObservation": { + "dataSource": "vn" + }, + "ClaimRma": { + "dataSource": "vn" + } } diff --git a/modules/claim/back/models/claim-beginning.json b/modules/claim/back/models/claim-beginning.json index 50506122a..afa21f817 100644 --- a/modules/claim/back/models/claim-beginning.json +++ b/modules/claim/back/models/claim-beginning.json @@ -1,6 +1,11 @@ { "name": "ClaimBeginning", - "base": "VnModel", + "base": "Loggable", + "log": { + "model": "ClaimLog", + "relation": "claim", + "showField": "quantity" + }, "options": { "mysql": { "table": "claimBeginning" @@ -8,12 +13,12 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "quantity": { - "type": "Number", + "type": "number", "required": true } }, diff --git a/modules/claim/back/models/claim-container.json b/modules/claim/back/models/claim-container.json new file mode 100644 index 000000000..446be77b9 --- /dev/null +++ b/modules/claim/back/models/claim-container.json @@ -0,0 +1,10 @@ +{ + "name": "ClaimContainer", + "base": "Container", + "acls": [{ + "accessType": "READ", + "principalType": "ROLE", + "principalId": "$everyone", + "permission": "ALLOW" + }] +} \ No newline at end of file diff --git a/modules/claim/back/models/claim-destination.json b/modules/claim/back/models/claim-destination.json index 8782fb815..60f948899 100644 --- a/modules/claim/back/models/claim-destination.json +++ b/modules/claim/back/models/claim-destination.json @@ -8,12 +8,12 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "description": { - "type": "String", + "type": "string", "required": true } }, diff --git a/modules/claim/back/models/claim-development.json b/modules/claim/back/models/claim-development.json index 94c677304..02061fab7 100644 --- a/modules/claim/back/models/claim-development.json +++ b/modules/claim/back/models/claim-development.json @@ -1,6 +1,10 @@ { "name": "ClaimDevelopment", - "base": "VnModel", + "base": "Loggable", + "log": { + "model": "ClaimLog", + "relation": "claim" + }, "options": { "mysql": { "table": "claimDevelopment" @@ -8,7 +12,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, diff --git a/modules/claim/back/models/claim-dms.json b/modules/claim/back/models/claim-dms.json index 9ef964886..a215b6bb7 100644 --- a/modules/claim/back/models/claim-dms.json +++ b/modules/claim/back/models/claim-dms.json @@ -17,7 +17,7 @@ ], "properties": { "dmsFk": { - "type": "Number", + "type": "number", "id": true, "required": true } diff --git a/modules/claim/back/models/claim-end.js b/modules/claim/back/models/claim-end.js index 73531cdfc..75ecda59a 100644 --- a/modules/claim/back/models/claim-end.js +++ b/modules/claim/back/models/claim-end.js @@ -1,3 +1,4 @@ module.exports = Self => { - require('../methods/claim-end/importTicketSales')(Self); + require('../methods/claim-end/filter')(Self); + require('../methods/claim-end/deleteClamedSales')(Self); }; diff --git a/modules/claim/back/models/claim-end.json b/modules/claim/back/models/claim-end.json index 8f835ee84..12d79f71b 100644 --- a/modules/claim/back/models/claim-end.json +++ b/modules/claim/back/models/claim-end.json @@ -1,6 +1,10 @@ { "name": "ClaimEnd", - "base": "VnModel", + "base": "Loggable", + "log": { + "model": "ClaimLog", + "relation": "claim" + }, "options": { "mysql": { "table": "claimEnd" @@ -8,7 +12,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" } diff --git a/modules/claim/back/models/claim-log.json b/modules/claim/back/models/claim-log.json index 28b3f88ec..519cfe1ea 100644 --- a/modules/claim/back/models/claim-log.json +++ b/modules/claim/back/models/claim-log.json @@ -9,40 +9,40 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "forceId": false }, "originFk": { - "type": "Number", + "type": "number", "required": true }, "userFk": { - "type": "Number" + "type": "number" }, "action": { - "type": "String", + "type": "string", "required": true }, "changedModel": { - "type": "String" + "type": "string" }, "oldInstance": { - "type": "Object" + "type": "object" }, "newInstance": { - "type": "Object" + "type": "object" }, "creationDate": { - "type": "Date" + "type": "date" }, "changedModelId": { - "type": "Number" + "type": "number" }, "changedModelValue": { - "type": "String" + "type": "string" }, "description": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/modules/claim/back/models/claim-observation.json b/modules/claim/back/models/claim-observation.json new file mode 100644 index 000000000..e882ad09d --- /dev/null +++ b/modules/claim/back/models/claim-observation.json @@ -0,0 +1,43 @@ +{ + "name": "ClaimObservation", + "base": "Loggable", + "log": { + "model": "ClaimLog", + "relation": "claim" + }, + "options": { + "mysql": { + "table": "claimObservation" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "claimFk": { + "type": "number", + "required": true + }, + "text": { + "type": "string", + "required": true + }, + "created": { + "type": "date" + } + }, + "relations": { + "worker": { + "type": "belongsTo", + "model": "Worker", + "foreignKey": "workerFk" + }, + "claim": { + "type": "belongsTo", + "model": "Claim", + "foreignKey": "claimFk" + } + } +} \ No newline at end of file diff --git a/modules/claim/back/models/claim-ratio.json b/modules/claim/back/models/claim-ratio.json index 196db72f6..605da98c6 100644 --- a/modules/claim/back/models/claim-ratio.json +++ b/modules/claim/back/models/claim-ratio.json @@ -9,23 +9,23 @@ "validateUpsert": true, "properties": { "clientFk": { - "type": "Number", + "type": "number", "id": true }, "yearSale": { - "type": "Number" + "type": "number" }, "claimAmount": { - "type": "Number" + "type": "number" }, "claimingRate": { - "type": "Number" + "type": "number" }, "priceIncreasing": { - "type": "Number" + "type": "number" }, "packingRate": { - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/claim/back/models/claim-reason.json b/modules/claim/back/models/claim-reason.json index 562acc14e..8d51b8079 100644 --- a/modules/claim/back/models/claim-reason.json +++ b/modules/claim/back/models/claim-reason.json @@ -8,12 +8,12 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "description": { - "type": "String" + "type": "string" } }, "acls": [ diff --git a/modules/claim/back/models/claim-redelivery.json b/modules/claim/back/models/claim-redelivery.json index 8611a3a44..d153c7a8e 100644 --- a/modules/claim/back/models/claim-redelivery.json +++ b/modules/claim/back/models/claim-redelivery.json @@ -8,12 +8,12 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "description": { - "type": "String", + "type": "string", "required": true } }, diff --git a/modules/claim/back/models/claim-responsible.json b/modules/claim/back/models/claim-responsible.json index 6bd06605b..bdc5df0ec 100644 --- a/modules/claim/back/models/claim-responsible.json +++ b/modules/claim/back/models/claim-responsible.json @@ -8,16 +8,16 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "description": { - "type": "String", + "type": "string", "required": true }, "responsability": { - "type": "Number", + "type": "number", "required": true } }, diff --git a/modules/claim/back/models/claim-result.json b/modules/claim/back/models/claim-result.json index 468f271de..2c9630696 100644 --- a/modules/claim/back/models/claim-result.json +++ b/modules/claim/back/models/claim-result.json @@ -8,12 +8,12 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "description": { - "type": "String" + "type": "string" } }, "acls": [ diff --git a/modules/claim/back/models/claim-rma.js b/modules/claim/back/models/claim-rma.js new file mode 100644 index 000000000..6a93613bd --- /dev/null +++ b/modules/claim/back/models/claim-rma.js @@ -0,0 +1,9 @@ +const LoopBackContext = require('loopback-context'); + +module.exports = Self => { + Self.observe('before save', async function(ctx) { + const changes = ctx.data || ctx.instance; + const loopBackContext = LoopBackContext.getCurrentContext(); + changes.workerFk = loopBackContext.active.accessToken.userId; + }); +}; diff --git a/modules/claim/back/models/claim-rma.json b/modules/claim/back/models/claim-rma.json new file mode 100644 index 000000000..27c3c9729 --- /dev/null +++ b/modules/claim/back/models/claim-rma.json @@ -0,0 +1,30 @@ +{ + "name": "ClaimRma", + "base": "VnModel", + "options": { + "mysql": { + "table": "claimRma" + } + }, + "properties": { + "id": { + "id": true, + "type": "number", + "description": "Identifier" + }, + "code": { + "type": "string", + "required": true + }, + "created": { + "type": "date" + } + }, + "relations": { + "worker": { + "type": "belongsTo", + "model": "Worker", + "foreignKey": "workerFk" + } + } +} diff --git a/modules/claim/back/models/claim-state.json b/modules/claim/back/models/claim-state.json index 287a525ad..2fd6d4845 100644 --- a/modules/claim/back/models/claim-state.json +++ b/modules/claim/back/models/claim-state.json @@ -1,6 +1,11 @@ { "name": "ClaimState", - "base": "VnModel", + "base": "Loggable", + "log": { + "model": "ClaimLog", + "relation": "claim", + "showField": "description" + }, "options": { "mysql": { "table": "claimState" @@ -8,20 +13,24 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "code": { - "type": "String", + "type": "string", "required": true }, "description": { - "type": "String", + "type": "string", "required": true }, "priority": { - "type": "Number", + "type": "number", + "required": true + }, + "hasToNotify": { + "type": "boolean", "required": true } }, diff --git a/modules/claim/back/models/claim.js b/modules/claim/back/models/claim.js index fba11cfb6..c9d7ee7d4 100644 --- a/modules/claim/back/models/claim.js +++ b/modules/claim/back/models/claim.js @@ -7,4 +7,8 @@ module.exports = Self => { require('../methods/claim/uploadFile')(Self); require('../methods/claim/updateClaimAction')(Self); require('../methods/claim/isEditable')(Self); + require('../methods/claim/updateClaimDestination')(Self); + require('../methods/claim/downloadFile')(Self); + require('../methods/claim/claimPickupPdf')(Self); + require('../methods/claim/claimPickupEmail')(Self); }; diff --git a/modules/claim/back/models/claim.json b/modules/claim/back/models/claim.json index 3cb64e31d..14c4f3452 100644 --- a/modules/claim/back/models/claim.json +++ b/modules/claim/back/models/claim.json @@ -1,6 +1,10 @@ { "name": "Claim", - "base": "VnModel", + "base": "Loggable", + "log": { + "model": "ClaimLog", + "showField": "id" + }, "options": { "mysql": { "table": "claim" @@ -8,7 +12,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, @@ -39,6 +43,12 @@ }, "workerFk": { "type": "number" + }, + "packages": { + "type": "number" + }, + "rma": { + "type": "string" } }, "relations": { @@ -47,6 +57,12 @@ "model": "ClaimState", "foreignKey": "claimStateFk" }, + "rmas": { + "type": "hasMany", + "model": "ClaimRma", + "foreignKey": "code", + "primaryKey": "rma" + }, "client": { "type": "belongsTo", "model": "Client", diff --git a/modules/claim/front/action/index.html b/modules/claim/front/action/index.html index eeac01d78..35e788290 100644 --- a/modules/claim/front/action/index.html +++ b/modules/claim/front/action/index.html @@ -1,168 +1,188 @@ - - - -
- - - - - - - - - - -
- - - - - Id - Ticket - Destination - Landed - Quantity - Description - Price - Disc. - Total - - - - + +
+ + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + +
+ + + IdTicket + Destination + + Landed + + Quantity + + Description + + Price + + Disc. + Total
+ - {{::saleClaimed.sale.itemFk | zeroFill:6}} - - - - - {{::saleClaimed.sale.ticketFk}} - - - + {{::saleClaimed.itemFk | zeroFill:6}} + + + + {{::saleClaimed.ticketFk}} + + - - {{::saleClaimed.sale.ticket.landed | date: 'dd/MM/yyyy'}} - {{::saleClaimed.sale.quantity}} - {{::saleClaimed.sale.concept}} - {{::saleClaimed.sale.price | currency: 'EUR':2}} - {{::saleClaimed.sale.discount}} % - - {{saleClaimed.sale.quantity * saleClaimed.sale.price * - ((100 - saleClaimed.sale.discount) / 100) | currency: 'EUR':2}} - - + {{::saleClaimed.landed | date: 'dd/MM/yyyy'}}{{::saleClaimed.quantity}}{{::saleClaimed.concept}}{{::saleClaimed.price | currency: 'EUR':2}}{{::saleClaimed.discount}} %{{saleClaimed.total | currency: 'EUR':2}} - - - - - - - - - +
+
+ + + + +
- - - - -
- - - - ID - F. envio - Agencia - Almacen - - - - - {{::ticket.id}} - {{::ticket.shipped | date: 'dd/MM/yyyy'}} - {{::ticket.agencyMode.name}} - {{::ticket.warehouse.name}} - - - -
-
- - - \ No newline at end of file + + + + + +
+
{{$ctrl.$t('Change destination to all selected rows', {total: $ctrl.checked.length})}}
+ + + + +
+
+ + + + +
diff --git a/modules/claim/front/action/index.js b/modules/claim/front/action/index.js index cddc6873f..10b629f27 100644 --- a/modules/claim/front/action/index.js +++ b/modules/claim/front/action/index.js @@ -5,6 +5,7 @@ import './style.scss'; export default class Controller extends Section { constructor($element, $) { super($element, $); + this.newDestination; this.filter = { include: [ {relation: 'sale', @@ -21,6 +22,81 @@ export default class Controller extends Section { }; this.getResolvedState(); this.maxResponsibility = 5; + this.smartTableOptions = { + activeButtons: { + search: true + }, + columns: [ + { + field: 'claimDestinationFk', + autocomplete: { + url: 'ClaimDestinations', + showField: 'description', + valueField: 'id' + } + }, + { + field: 'landed', + searchable: false + } + ] + }; + } + + exprBuilder(param, value) { + switch (param) { + case 'itemFk': + case 'ticketFk': + case 'claimDestinationFk': + case 'quantity': + case 'price': + case 'discount': + case 'total': + return {[param]: value}; + case 'concept': + return {[param]: {like: `%${value}%`}}; + case 'landed': + return {[param]: {between: this.dateRange(value)}}; + } + } + + dateRange(value) { + const minHour = new Date(value); + minHour.setHours(0, 0, 0, 0); + const maxHour = new Date(value); + maxHour.setHours(23, 59, 59, 59); + + return [minHour, maxHour]; + } + + get checked() { + const salesClaimed = this.$.model.data || []; + + const checkedSalesClaimed = []; + for (let saleClaimed of salesClaimed) { + if (saleClaimed.$checked) + checkedSalesClaimed.push(saleClaimed); + } + + return checkedSalesClaimed; + } + + updateDestination(saleClaimed, claimDestinationFk) { + const data = {rows: [saleClaimed], claimDestinationFk: claimDestinationFk}; + this.$http.post(`Claims/updateClaimDestination`, data).then(() => { + this.vnApp.showSuccess(this.$t('Data saved!')); + }).catch(e => { + this.$.model.refresh(); + throw e; + }); + } + + removeSales(saleClaimed) { + const params = {sales: [saleClaimed]}; + this.$http.post(`ClaimEnds/deleteClamedSales`, params).then(() => { + this.$.model.refresh(); + this.vnApp.showSuccess(this.$t('Data saved!')); + }); } getResolvedState() { @@ -54,42 +130,12 @@ export default class Controller extends Section { calculateTotals() { this.claimedTotal = 0; this.salesClaimed.forEach(sale => { - const price = sale.sale.quantity * sale.sale.price; - const discount = (sale.sale.discount * (sale.sale.quantity * sale.sale.price)) / 100; + const price = sale.quantity * sale.price; + const discount = (sale.discount * (sale.quantity * sale.price)) / 100; this.claimedTotal += price - discount; }); } - showLastTickets(event) { - let pastWeek = new Date(); - pastWeek.setDate(-7); - - let filter = { - include: [ - {relation: 'agencyMode', fields: ['name']}, - {relation: 'warehouse', fields: ['name']} - ], - where: { - created: {gt: pastWeek}, - clientFk: this.claim.clientFk - } - }; - this.$.lastTicketsModel.filter = filter; - this.$.lastTicketsModel.refresh(); - this.$.lastTicketsPopover.show(event); - } - - importTicketLines(ticketFk) { - let data = {claimFk: this.$params.id, ticketFk: ticketFk}; - - let query = `ClaimEnds/importTicketSales`; - this.$http.post(query, data).then(() => { - this.vnApp.showSuccess(this.$t('Data saved!')); - this.$.lastTicketsPopover.hide(); - this.$.model.refresh(); - }); - } - regularize() { const query = `Claims/${this.$params.id}/regularizeClaim`; return this.$http.post(query).then(() => { @@ -155,6 +201,24 @@ export default class Controller extends Section { onSave() { this.vnApp.showSuccess(this.$t('Data saved!')); } + + onResponse() { + const rowsToEdit = []; + for (let row of this.checked) + rowsToEdit.push({id: row.id}); + + const data = { + rows: rowsToEdit, + claimDestinationFk: this.newDestination + }; + + const query = `Claims/updateClaimDestination`; + this.$http.post(query, data) + .then(() => { + this.$.model.refresh(); + this.vnApp.showSuccess(this.$t('Data saved!')); + }); + } } ngModule.vnComponent('vnClaimAction', { diff --git a/modules/claim/front/action/index.spec.js b/modules/claim/front/action/index.spec.js index 9fb9b75eb..458d5e831 100644 --- a/modules/claim/front/action/index.spec.js +++ b/modules/claim/front/action/index.spec.js @@ -43,9 +43,9 @@ describe('claim', () => { describe('calculateTotals()', () => { it('should calculate the total price of the items claimed', () => { controller.salesClaimed = [ - {sale: {quantity: 5, price: 2, discount: 0}}, - {sale: {quantity: 10, price: 2, discount: 0}}, - {sale: {quantity: 10, price: 2, discount: 0}} + {quantity: 5, price: 2, discount: 0}, + {quantity: 10, price: 2, discount: 0}, + {quantity: 10, price: 2, discount: 0} ]; controller.calculateTotals(); @@ -67,35 +67,6 @@ describe('claim', () => { }); }); - describe('showLastTickets()', () => { - it('should get a list of tickets and call lastTicketsPopover show() method', () => { - jest.spyOn(controller.$.lastTicketsModel, 'refresh'); - jest.spyOn(controller.$.lastTicketsPopover, 'show'); - - controller.showLastTickets({}); - - expect(controller.$.lastTicketsModel.refresh).toHaveBeenCalled(); - expect(controller.$.lastTicketsPopover.show).toHaveBeenCalled(); - }); - }); - - describe('importTicketLines()', () => { - it('should perform a post query and add lines from an existent ticket', () => { - jest.spyOn(controller.$.model, 'refresh'); - jest.spyOn(controller.vnApp, 'showSuccess'); - jest.spyOn(controller.$.lastTicketsPopover, 'hide'); - - let data = {claimFk: 1, ticketFk: 1}; - $httpBackend.expect('POST', `ClaimEnds/importTicketSales`, data).respond({}); - controller.importTicketLines(1); - $httpBackend.flush(); - - expect(controller.$.model.refresh).toHaveBeenCalledWith(); - expect(controller.vnApp.showSuccess).toHaveBeenCalled(); - expect(controller.$.lastTicketsPopover.hide).toHaveBeenCalledWith(); - }); - }); - describe('regularize()', () => { it('should perform a post query and reload the claim card', () => { jest.spyOn(controller.card, 'reload'); @@ -180,5 +151,17 @@ describe('claim', () => { expect(controller.vnApp.showMessage).toHaveBeenCalledWith('Greuge added'); }); }); + + describe('onResponse()', () => { + it('should perform a post query and show a success message', () => { + jest.spyOn(controller.vnApp, 'showSuccess'); + + $httpBackend.expect('POST', `Claims/updateClaimDestination`).respond({}); + controller.onResponse(); + $httpBackend.flush(); + + expect(controller.vnApp.showSuccess).toHaveBeenCalled(); + }); + }); }); }); diff --git a/modules/claim/front/action/locale/es.yml b/modules/claim/front/action/locale/es.yml index 3ff25dca5..97640d9dc 100644 --- a/modules/claim/front/action/locale/es.yml +++ b/modules/claim/front/action/locale/es.yml @@ -3,10 +3,11 @@ Action: Actuaciones Total claimed: Total Reclamado Import claim: Importar reclamacion Imports claim details: Importa detalles de la reclamacion -Import ticket: Importar ticket -Imports ticket lines: Importa las lineas de un ticket Regularize: Regularizar Do you want to insert greuges?: Desea insertar greuges? Insert greuges on client card: Insertar greuges en la ficha del cliente Greuge added: Greuge añadido -ClaimGreugeDescription: Reclamación id {{claimId}} \ No newline at end of file +ClaimGreugeDescription: Reclamación id {{claimId}} +Change destination: Cambiar destino +Change destination to all selected rows: Cambiar destino a {{total}} fila(s) seleccionada(s) +Add observation to all selected clients: Añadir observación a {{total}} cliente(s) seleccionado(s) diff --git a/modules/claim/front/action/style.scss b/modules/claim/front/action/style.scss index bac316287..cda6779c8 100644 --- a/modules/claim/front/action/style.scss +++ b/modules/claim/front/action/style.scss @@ -6,7 +6,7 @@ vn-claim-action { align-content: center; vn-tool-bar { - flex: 1 + flex: none } .vn-check { @@ -39,4 +39,8 @@ vn-claim-action { max-height: 350px; } } + + .right { + margin-left: 370px; + } } \ No newline at end of file diff --git a/modules/claim/front/basic-data/index.html b/modules/claim/front/basic-data/index.html index a39ecc56e..16e134c60 100644 --- a/modules/claim/front/basic-data/index.html +++ b/modules/claim/front/basic-data/index.html @@ -19,7 +19,7 @@ readonly="true"> @@ -43,22 +43,20 @@ order="priority ASC" vn-focus> - - - - - + + + title="{{'When checked will notify to the salesPerson' | translate}}"> diff --git a/modules/claim/front/basic-data/locale/es.yml b/modules/claim/front/basic-data/locale/es.yml index 174eb4b62..5250d266c 100644 --- a/modules/claim/front/basic-data/locale/es.yml +++ b/modules/claim/front/basic-data/locale/es.yml @@ -5,4 +5,5 @@ Responsability: Responsabilidad Company: Empresa Sales/Client: Comercial/Cliente Pick up: Recoger -When checked will notify a pickup to the salesPerson: Cuando se marque enviará una notificación de recogida al comercial \ No newline at end of file +When checked will notify to the salesPerson: Cuando se marque enviará una notificación de recogida al comercial +Packages received: Bultos recibidos diff --git a/modules/claim/front/descriptor/index.html b/modules/claim/front/descriptor/index.html index 1337c6242..0bbacf94b 100644 --- a/modules/claim/front/descriptor/index.html +++ b/modules/claim/front/descriptor/index.html @@ -1,6 +1,7 @@ + description="$ctrl.claim.client.name" + summary="$ctrl.$.summary"> Send Pickup order @@ -96,4 +99,7 @@ - \ No newline at end of file + + + + \ No newline at end of file diff --git a/modules/claim/front/descriptor/index.js b/modules/claim/front/descriptor/index.js index 674ac91e1..0dddadbe1 100644 --- a/modules/claim/front/descriptor/index.js +++ b/modules/claim/front/descriptor/index.js @@ -11,17 +11,15 @@ class Controller extends Descriptor { } showPickupOrder() { - this.vnReport.show('claim-pickup-order', { - recipientId: this.claim.clientFk, - claimId: this.claim.id + this.vnReport.show(`Claims/${this.claim.id}/claim-pickup-pdf`, { + recipientId: this.claim.clientFk }); } sendPickupOrder() { - return this.vnEmail.send('claim-pickup-order', { + return this.vnEmail.send(`Claims/${this.claim.id}/claim-pickup-email`, { recipient: this.claim.client.email, - recipientId: this.claim.clientFk, - claimId: this.claim.id + recipientId: this.claim.clientFk }); } diff --git a/modules/claim/front/descriptor/index.spec.js b/modules/claim/front/descriptor/index.spec.js index 669a73954..e6785d3d8 100644 --- a/modules/claim/front/descriptor/index.spec.js +++ b/modules/claim/front/descriptor/index.spec.js @@ -24,12 +24,13 @@ describe('Item Component vnClaimDescriptor', () => { window.open = jasmine.createSpy('open'); const params = { - recipientId: claim.clientFk, - claimId: claim.id + recipientId: claim.clientFk }; controller.showPickupOrder(); - expect(controller.vnReport.show).toHaveBeenCalledWith('claim-pickup-order', params); + const expectedPath = `Claims/${claim.id}/claim-pickup-pdf`; + + expect(controller.vnReport.show).toHaveBeenCalledWith(expectedPath, params); }); }); @@ -39,12 +40,13 @@ describe('Item Component vnClaimDescriptor', () => { const params = { recipient: claim.client.email, - recipientId: claim.clientFk, - claimId: claim.id + recipientId: claim.clientFk }; controller.sendPickupOrder(); - expect(controller.vnEmail.send).toHaveBeenCalledWith('claim-pickup-order', params); + const expectedPath = `Claims/${claim.id}/claim-pickup-email`; + + expect(controller.vnEmail.send).toHaveBeenCalledWith(expectedPath, params); }); }); diff --git a/modules/claim/front/detail/index.html b/modules/claim/front/detail/index.html index 33be3e197..a2a08a5db 100644 --- a/modules/claim/front/detail/index.html +++ b/modules/claim/front/detail/index.html @@ -78,6 +78,11 @@ + + - - - - - - Id - Client - Created - Worker - State - - - - - - {{::claim.id}} - - - {{::claim.name}} - - - {{::claim.created | date:'dd/MM/yyyy'}} - - - {{::claim.userName}} - - - - - {{::claim.description}} - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + +
+ Id + + Client + + Created + + Worker + + State +
{{::claim.id}} + + {{::claim.clientName}} + + {{::claim.created | date:'dd/MM/yyyy'}} + + {{::claim.workerName}} + + + + {{::claim.description}} + + + + +
+
+
+
@@ -62,6 +77,7 @@ + claim="$ctrl.claimSelected" + parent-reload="$ctrl.reload()"> diff --git a/modules/claim/front/index/index.js b/modules/claim/front/index/index.js index fe4b6def7..084618e16 100644 --- a/modules/claim/front/index/index.js +++ b/modules/claim/front/index/index.js @@ -1,7 +1,60 @@ import ngModule from '../module'; import Section from 'salix/components/section'; -export default class Controller extends Section { +class Controller extends Section { + constructor($element, $) { + super($element, $); + + this.smartTableOptions = { + activeButtons: { + search: true + }, + columns: [ + { + field: 'clientName', + autocomplete: { + url: 'Clients', + showField: 'name', + valueField: 'name' + } + }, + { + field: 'workerFk', + autocomplete: { + url: 'Workers/activeWithInheritedRole', + where: `{role: 'salesPerson'}`, + searchFunction: '{firstName: $search}', + showField: 'name', + valueField: 'id', + } + }, + { + field: 'claimStateFk', + autocomplete: { + url: 'ClaimStates', + showField: 'description', + valueField: 'id', + } + }, + { + field: 'created', + searchable: false + } + ] + }; + } + + exprBuilder(param, value) { + switch (param) { + case 'clientName': + return {'cl.clientName': {like: `%${value}%`}}; + case 'clientFk': + case 'claimStateFk': + case 'workerFk': + return {[`cl.${param}`]: value}; + } + } + stateColor(claim) { switch (claim.description) { case 'Pendiente': @@ -17,6 +70,10 @@ export default class Controller extends Section { this.claimSelected = claim; this.$.summary.show(); } + + reload() { + this.$.model.refresh(); + } } ngModule.vnComponent('vnClaimIndex', { diff --git a/modules/claim/front/locale/es.yml b/modules/claim/front/locale/es.yml index dcbb2c484..5abdc1535 100644 --- a/modules/claim/front/locale/es.yml +++ b/modules/claim/front/locale/es.yml @@ -6,6 +6,7 @@ Client Id: Id cliente Claimed ticket: Ticket reclamado Delete claim: Eliminar reclamación Observation: Observación +Observations: Observaciones Responsible: Responsable Remove sale: Eliminar linea Claim Id: Id reclamación diff --git a/modules/claim/front/log/index.html b/modules/claim/front/log/index.html new file mode 100644 index 000000000..500a626d6 --- /dev/null +++ b/modules/claim/front/log/index.html @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/modules/claim/front/log/index.js b/modules/claim/front/log/index.js new file mode 100644 index 000000000..0143a612b --- /dev/null +++ b/modules/claim/front/log/index.js @@ -0,0 +1,7 @@ +import ngModule from '../module'; +import Section from 'salix/components/section'; + +ngModule.vnComponent('vnClaimLog', { + template: require('./index.html'), + controller: Section, +}); diff --git a/modules/claim/front/main/index.js b/modules/claim/front/main/index.js index 77b051897..0c5c7d728 100644 --- a/modules/claim/front/main/index.js +++ b/modules/claim/front/main/index.js @@ -1,9 +1,7 @@ import ngModule from '../module'; import ModuleMain from 'salix/components/module-main'; -export default class Claim extends ModuleMain {} - ngModule.vnComponent('vnClaim', { - controller: Claim, + controller: ModuleMain, template: require('./index.html') }); diff --git a/modules/claim/front/note/create/index.html b/modules/claim/front/note/create/index.html new file mode 100644 index 000000000..304a8c004 --- /dev/null +++ b/modules/claim/front/note/create/index.html @@ -0,0 +1,30 @@ + + +
+ + + + + + + + + + + + +
\ No newline at end of file diff --git a/modules/claim/front/note/create/index.js b/modules/claim/front/note/create/index.js new file mode 100644 index 000000000..40ae9309b --- /dev/null +++ b/modules/claim/front/note/create/index.js @@ -0,0 +1,22 @@ +import ngModule from '../../module'; +import Section from 'salix/components/section'; + +export default class Controller extends Section { + constructor($element, $) { + super($element, $); + this.note = { + claimFk: parseInt(this.$params.id), + workerFk: window.localStorage.currentUserWorkerId, + text: null + }; + } + + cancel() { + this.$state.go('claim.card.note.index', {id: this.$params.id}); + } +} + +ngModule.vnComponent('vnClaimNoteCreate', { + template: require('./index.html'), + controller: Controller +}); diff --git a/modules/claim/front/note/index/index.html b/modules/claim/front/note/index/index.html new file mode 100644 index 000000000..8ffe19c2b --- /dev/null +++ b/modules/claim/front/note/index/index.html @@ -0,0 +1,32 @@ + + + + +
+ + {{::note.worker.firstName}} {{::note.worker.lastName}} + {{::note.created | date:'dd/MM/yyyy HH:mm'}} + + + {{::note.text}} + +
+
+
+ + + \ No newline at end of file diff --git a/modules/claim/front/note/index/index.js b/modules/claim/front/note/index/index.js new file mode 100644 index 000000000..5a2fd96d3 --- /dev/null +++ b/modules/claim/front/note/index/index.js @@ -0,0 +1,25 @@ +import ngModule from '../../module'; +import Section from 'salix/components/section'; +import './style.scss'; + +export default class Controller extends Section { + constructor($element, $) { + super($element, $); + this.filter = { + order: 'created DESC', + }; + this.include = { + relation: 'worker', + scope: { + fields: ['id', 'firstName', 'lastName'] + } + }; + } +} + +Controller.$inject = ['$element', '$scope']; + +ngModule.vnComponent('vnClaimNote', { + template: require('./index.html'), + controller: Controller, +}); diff --git a/modules/claim/front/note/index/style.scss b/modules/claim/front/note/index/style.scss new file mode 100644 index 000000000..44ae2cee7 --- /dev/null +++ b/modules/claim/front/note/index/style.scss @@ -0,0 +1,5 @@ +vn-client-note { + .note:last-child { + margin-bottom: 0; + } +} \ No newline at end of file diff --git a/modules/claim/front/photos/index.html b/modules/claim/front/photos/index.html index 9cc6c649c..9e00ee02f 100644 --- a/modules/claim/front/photos/index.html +++ b/modules/claim/front/photos/index.html @@ -1,6 +1,7 @@
+ zoom-image="{{$ctrl.getImagePath(photo.dmsFk)}}" + ng-if="photo.dms.contentType != 'video/mp4'">
+
diff --git a/modules/claim/front/photos/index.js b/modules/claim/front/photos/index.js index 2b77c6abc..62e439a91 100644 --- a/modules/claim/front/photos/index.js +++ b/modules/claim/front/photos/index.js @@ -6,6 +6,13 @@ class Controller extends Section { constructor($element, $, vnFile) { super($element, $); this.vnFile = vnFile; + this.filter = { + include: [ + { + relation: 'dms' + } + ] + }; } deleteDms(index) { @@ -13,7 +20,7 @@ class Controller extends Section { return this.$http.post(`ClaimDms/${dmsFk}/removeFile`) .then(() => { this.$.model.remove(index); - this.vnApp.showSuccess(this.$t('Photo deleted')); + this.vnApp.showSuccess(this.$t('File deleted')); }); } @@ -81,13 +88,13 @@ class Controller extends Section { data: this.dms.files }; this.$http(options).then(() => { - this.vnApp.showSuccess(this.$t('Photo uploaded!')); + this.vnApp.showSuccess(this.$t('File uploaded!')); this.$.model.refresh(); }); } getImagePath(dmsId) { - return this.vnFile.getPath(`/api/dms/${dmsId}/downloadFile`); + return this.vnFile.getPath(`/api/Claims/${dmsId}/downloadFile`); } } diff --git a/modules/claim/front/photos/locale/es.yml b/modules/claim/front/photos/locale/es.yml index 8ccc1dba4..d2ee9ffbd 100644 --- a/modules/claim/front/photos/locale/es.yml +++ b/modules/claim/front/photos/locale/es.yml @@ -1,5 +1,5 @@ Are you sure you want to continue?: ¿Seguro que quieres continuar? Drag & Drop photos here...: Arrastra y suelta fotos aquí... -Photo deleted: Foto eliminada -Photo uploaded!: Foto subida! -Select photo: Seleccionar foto \ No newline at end of file +File deleted: Archivo eliminado +File uploaded!: Archivo subido! +Select file: Seleccionar fichero \ No newline at end of file diff --git a/modules/claim/front/photos/style.scss b/modules/claim/front/photos/style.scss index d747dd9b8..101cb0da2 100644 --- a/modules/claim/front/photos/style.scss +++ b/modules/claim/front/photos/style.scss @@ -29,4 +29,19 @@ vn-claim-photos { height: 288px; } } -} \ No newline at end of file + + .video { + width: 100%; + height: 100%; + object-fit: cover; + cursor: pointer; + box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), + 0 3px 1px -2px rgba(0,0,0,.2), + 0 1px 5px 0 rgba(0,0,0,.12); + border: 2px solid transparent; + + } + .video:hover { + border: 2px solid $color-primary + } +} diff --git a/modules/claim/front/routes.json b/modules/claim/front/routes.json index ced6f4a6f..a8b958c5f 100644 --- a/modules/claim/front/routes.json +++ b/modules/claim/front/routes.json @@ -12,8 +12,10 @@ {"state": "claim.card.basicData", "icon": "settings"}, {"state": "claim.card.detail", "icon": "icon-details"}, {"state": "claim.card.photos", "icon": "image"}, + {"state": "claim.card.note.index", "icon": "insert_drive_file"}, {"state": "claim.card.development", "icon": "icon-traceability"}, - {"state": "claim.card.action", "icon": "icon-actions"} + {"state": "claim.card.action", "icon": "icon-actions"}, + {"state": "claim.card.log", "icon": "history"} ] }, "keybindings": [ @@ -26,17 +28,20 @@ "abstract": true, "component": "vn-claim", "description": "Claims" - }, { + }, + { "url": "/index?q", "state": "claim.index", "component": "vn-claim-index", "description": "Claims" - }, { + }, + { "url": "/:id", "state": "claim.card", "abstract": true, "component": "vn-claim-card" - }, { + }, + { "url": "/summary", "state": "claim.card.summary", "component": "vn-claim-summary", @@ -44,7 +49,8 @@ "params": { "claim": "$ctrl.claim" } - }, { + }, + { "url": "/basic-data", "state": "claim.card.basicData", "component": "vn-claim-basic-data", @@ -53,7 +59,8 @@ "claim": "$ctrl.claim" }, "acl": ["salesPerson"] - }, { + }, + { "url": "/detail", "state": "claim.card.detail", "component": "vn-claim-detail", @@ -62,7 +69,32 @@ "claim": "$ctrl.claim" }, "acl": ["salesPerson"] - }, { + }, + { + "url": "/note", + "state": "claim.card.note", + "component": "ui-view", + "abstract": true, + "acl": ["salesPerson"] + }, + { + "url": "/index", + "state": "claim.card.note.index", + "component": "vn-claim-note", + "description": "Notes", + "params": { + "claim": "$ctrl.claim" + }, + "acl": ["salesPerson"] + }, + { + "url": "/create", + "state": "claim.card.note.create", + "component": "vn-claim-note-create", + "description": "New note", + "acl": ["salesPerson"] + }, + { "url": "/development", "state": "claim.card.development", "component": "vn-claim-development", @@ -71,8 +103,9 @@ "claim": "$ctrl.claim" }, "acl": ["claimManager"] - }, { - "url": "/action", + }, + { + "url": "/action?q", "state": "claim.card.action", "component": "vn-claim-action", "description": "Action", @@ -80,7 +113,8 @@ "claim": "$ctrl.claim" }, "acl": ["claimManager"] - }, { + }, + { "url": "/photos", "state": "claim.card.photos", "component": "vn-claim-photos", @@ -88,6 +122,13 @@ "params": { "claim": "$ctrl.claim" } + }, + { + "url" : "/log", + "state": "claim.card.log", + "component": "vn-claim-log", + "description": "Log", + "acl": ["claimManager"] } ] -} \ No newline at end of file +} diff --git a/modules/claim/front/search-panel/index.html b/modules/claim/front/search-panel/index.html index 6efd6603b..eec8cd727 100644 --- a/modules/claim/front/search-panel/index.html +++ b/modules/claim/front/search-panel/index.html @@ -12,13 +12,13 @@ + ng-model="filter.clientName"> @@ -28,7 +28,7 @@ url="Workers/activeWithRole" search-function="{firstName: $search}" value-field="id" - where="{role: {inq: ['salesPerson', 'officeBoss']}}" + where="{role: {inq: ['salesTeamBoss', 'salesPerson', 'officeBoss']}}" label="Salesperson"> {{firstName}} {{name}} @@ -38,7 +38,7 @@ url="Workers/activeWithRole" search-function="{firstName: $search}" value-field="id" - where="{role: 'salesPerson'}" + where="{role: {inq: ['salesTeamBoss', 'salesPerson']}}" label="Attended by"> {{firstName}} {{name}} diff --git a/modules/claim/front/summary/index.html b/modules/claim/front/summary/index.html index 8eea89a2b..6adbfd684 100644 --- a/modules/claim/front/summary/index.html +++ b/modules/claim/front/summary/index.html @@ -1,10 +1,12 @@ -
- {{::$ctrl.summary.claim.id}} - {{::$ctrl.summary.claim.client.name}} + +
- - - - - - +

+ + Basic data + +

+ + + + + -
- - - - - - - - + + + + +

+ + Observations + +

+

+ Observations +

+
+ + {{::note.worker.firstName}} {{::note.worker.lastName}} + {{::note.created | date:'dd/MM/yyyy HH:mm'}} + + + {{::note.text}} + +
+

- Detail

-

Detail @@ -84,7 +112,7 @@ - {{::saleClaimed.sale.itemFk | zeroFill:6}} @@ -97,7 +125,7 @@ {{::saleClaimed.sale.price | currency: 'EUR':2}} {{::saleClaimed.sale.discount}} % - {{saleClaimed.sale.quantity * saleClaimed.sale.price * + {{saleClaimed.sale.quantity * saleClaimed.sale.price * ((100 - saleClaimed.sale.discount) / 100) | currency: 'EUR':2}} @@ -109,22 +137,27 @@

Photos

-
+ zoom-image="{{$ctrl.getImagePath(photo.dmsFk)}}" + ng-if="photo.dms.contentType != 'video/mp4'">
+

- Development

-

Development @@ -146,8 +179,8 @@ {{::development.claimResult.description}} {{::development.claimResponsible.description}} - {{::development.worker.user.nickname}} @@ -160,17 +193,33 @@

- Action

Action

+ + + + + + @@ -189,14 +238,14 @@ - {{::action.sale.itemFk | zeroFill:6}} - {{::action.sale.ticket.id}} @@ -223,9 +272,9 @@ vn-id="item-descriptor" warehouse-fk="$ctrl.vnConfig.warehouseFk"> - - - \ No newline at end of file + diff --git a/modules/claim/front/summary/index.js b/modules/claim/front/summary/index.js index bda830d6a..7cd4805e9 100644 --- a/modules/claim/front/summary/index.js +++ b/modules/claim/front/summary/index.js @@ -6,11 +6,36 @@ class Controller extends Summary { constructor($element, $, vnFile) { super($element, $); this.vnFile = vnFile; + this.filter = { + include: [ + { + relation: 'dms' + } + ] + }; } $onChanges() { if (this.claim && this.claim.id) - this.getSummary(); + this.loadData(); + } + + loadData() { + return this.$http.get(`Claims/${this.claim.id}/getSummary`).then(res => { + if (res && res.data) + this.summary = res.data; + }); + } + + reload() { + this.loadData() + .then(() => { + if (this.card) + this.card.reload(); + + if (this.parentReload) + this.parentReload(); + }); } get isSalesPerson() { @@ -29,8 +54,10 @@ class Controller extends Summary { this._claim = value; // Get DMS on summary load - if (value) + if (value) { this.$.$applyAsync(() => this.loadDms()); + this.loadData(); + } } loadDms() { @@ -40,15 +67,24 @@ class Controller extends Summary { this.$.model.refresh(); } - getSummary() { - this.$http.get(`Claims/${this.claim.id}/getSummary`).then(response => { - this.summary = response.data; - }); - } - getImagePath(dmsId) { return this.vnFile.getPath(`/api/dms/${dmsId}/downloadFile`); } + + changeState(value) { + const params = { + id: this.claim.id, + claimStateFk: value + }; + + this.$http.patch(`Claims/updateClaim/${this.claim.id}`, params) + .then(() => { + this.reload(); + }) + .then(() => { + this.vnApp.showSuccess(this.$t('Data saved!')); + }); + } } Controller.$inject = ['$element', '$scope', 'vnFile']; @@ -57,6 +93,11 @@ ngModule.vnComponent('vnClaimSummary', { template: require('./index.html'), controller: Controller, bindings: { - claim: '<' + claim: '<', + model: ' { controller.$.model = crudModel; })); - describe('getSummary()', () => { + describe('loadData()', () => { it('should perform a query to set summary', () => { - $httpBackend.expect('GET', `Claims/1/getSummary`).respond(200, 24); - controller.getSummary(); + $httpBackend.when('GET', `Claims/1/getSummary`).respond(200, 24); + controller.loadData(); $httpBackend.flush(); expect(controller.summary).toEqual(24); }); }); + describe('changeState()', () => { + it('should make an HTTP post query, then call the showSuccess()', () => { + jest.spyOn(controller.vnApp, 'showSuccess').mockReturnThis(); + + const expectedParams = {id: 1, claimStateFk: 1}; + $httpBackend.when('GET', `Claims/1/getSummary`).respond(200, 24); + $httpBackend.expect('PATCH', `Claims/updateClaim/1`, expectedParams).respond(200); + controller.changeState(1); + $httpBackend.flush(); + + expect(controller.vnApp.showSuccess).toHaveBeenCalled(); + }); + }); + describe('$onChanges()', () => { - it('should call getSummary when item.id is defined', () => { - jest.spyOn(controller, 'getSummary'); + it('should call loadData when $onChanges is called', () => { + jest.spyOn(controller, 'loadData'); controller.$onChanges(); - expect(controller.getSummary).toHaveBeenCalledWith(); + expect(controller.loadData).toHaveBeenCalledWith(); }); }); }); diff --git a/modules/claim/front/summary/style.scss b/modules/claim/front/summary/style.scss index e0542dea0..5b4e32f7a 100644 --- a/modules/claim/front/summary/style.scss +++ b/modules/claim/front/summary/style.scss @@ -7,4 +7,22 @@ vn-claim-summary { .photo .image { border-radius: 3px; } + vn-textarea *{ + height: 80px; + } + + .video { + width: 100%; + height: 100%; + object-fit: cover; + cursor: pointer; + box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), + 0 3px 1px -2px rgba(0,0,0,.2), + 0 1px 5px 0 rgba(0,0,0,.12); + border: 2px solid transparent; + + } + .video:hover { + border: 2px solid $color-primary + } } \ No newline at end of file diff --git a/modules/client/back/methods/client/campaignMetricsEmail.js b/modules/client/back/methods/client/campaignMetricsEmail.js new file mode 100644 index 000000000..bb57f90a0 --- /dev/null +++ b/modules/client/back/methods/client/campaignMetricsEmail.js @@ -0,0 +1,69 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('campaignMetricsEmail', { + description: 'Sends the campaign metrics email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id to send to the recipient preferred language', + required: false + }, + { + arg: 'from', + type: 'string', + required: true + }, + { + arg: 'to', + type: 'string', + required: true + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/:id/campaign-metrics-email', + verb: 'POST' + } + }); + + Self.campaignMetricsEmail = async ctx => { + const args = Object.assign({}, ctx.args); + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const email = new Email('campaign-metrics', params); + + return email.send(); + }; +}; diff --git a/modules/client/back/methods/client/campaignMetricsPdf.js b/modules/client/back/methods/client/campaignMetricsPdf.js new file mode 100644 index 000000000..14194d62b --- /dev/null +++ b/modules/client/back/methods/client/campaignMetricsPdf.js @@ -0,0 +1,66 @@ +const {Report} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('campaignMetricsPdf', { + description: 'Returns the campaign metrics pdf', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + }, + { + arg: 'from', + type: 'string', + required: true + }, + { + arg: 'to', + type: 'string', + required: true + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/campaign-metrics-pdf', + verb: 'GET' + } + }); + + Self.campaignMetricsPdf = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const report = new Report('campaign-metrics', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="doc-${id}.pdf"`]; + }; +}; diff --git a/modules/client/back/methods/client/checkDuplicated.js b/modules/client/back/methods/client/checkDuplicated.js new file mode 100644 index 000000000..522cd088f --- /dev/null +++ b/modules/client/back/methods/client/checkDuplicated.js @@ -0,0 +1,63 @@ +module.exports = Self => { + Self.remoteMethod('checkDuplicatedData', { + description: 'Checks if a client has same email, mobile or phone than other client and send an email', + accepts: [{ + arg: 'id', + type: 'number', + required: true, + description: 'The client id' + }], + returns: { + type: 'object', + root: true + }, + http: { + verb: 'GET', + path: '/:id/checkDuplicatedData' + } + }); + + Self.checkDuplicatedData = async function(id, options) { + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const client = await Self.app.models.Client.findById(id, myOptions); + + const findParams = []; + if (client.email) { + const emails = client.email.split(','); + for (let email of emails) + findParams.push({email: email}); + } + + if (client.phone) + findParams.push({phone: client.phone}); + + if (client.mobile) + findParams.push({mobile: client.mobile}); + + const filterObj = { + where: { + and: [ + {or: findParams}, + {id: {neq: client.id}} + ] + } + }; + + const clientSameData = await Self.findOne(filterObj, myOptions); + + if (clientSameData) { + await Self.app.models.Mail.create({ + receiver: 'direccioncomercial@verdnatura.es', + subject: `Cliente con email/teléfono/móvil duplicados`, + body: 'El cliente ' + client.id + ' comparte alguno de estos datos con el cliente ' + clientSameData.id + + '\n- Email: ' + client.email + + '\n- Teléfono: ' + client.phone + + '\n- Móvil: ' + client.mobile + }, myOptions); + } + }; +}; diff --git a/modules/client/back/methods/client/clientDebtStatementEmail.js b/modules/client/back/methods/client/clientDebtStatementEmail.js new file mode 100644 index 000000000..8bcdc900f --- /dev/null +++ b/modules/client/back/methods/client/clientDebtStatementEmail.js @@ -0,0 +1,64 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('clientDebtStatementEmail', { + description: 'Sends the client debt statement email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id to send to the recipient preferred language', + required: false + }, + { + arg: 'from', + type: 'string', + required: true + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/:id/client-debt-statement-email', + verb: 'POST' + } + }); + + Self.clientDebtStatementEmail = async ctx => { + const args = Object.assign({}, ctx.args); + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const email = new Email('client-debt-statement', params); + + return email.send(); + }; +}; diff --git a/modules/client/back/methods/client/clientDebtStatementHtml.js b/modules/client/back/methods/client/clientDebtStatementHtml.js new file mode 100644 index 000000000..bfed696bc --- /dev/null +++ b/modules/client/back/methods/client/clientDebtStatementHtml.js @@ -0,0 +1,65 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('clientDebtStatementHtml', { + description: 'Returns the client debt statement email preview', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + }, + { + arg: 'from', + type: 'string', + required: true + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/client-debt-statement-html', + verb: 'GET' + } + }); + + Self.clientDebtStatementHtml = async(ctx, id) => { + const {accessToken} = ctx.req; + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + params.isPreview = true; + params.access_token = accessToken.id; + + const report = new Email('client-debt-statement', params); + const html = await report.render(); + + return [html, 'text/html', `filename="mail-${id}.pdf"`]; + }; +}; diff --git a/modules/client/back/methods/client/clientDebtStatementPdf.js b/modules/client/back/methods/client/clientDebtStatementPdf.js new file mode 100644 index 000000000..8e2dca314 --- /dev/null +++ b/modules/client/back/methods/client/clientDebtStatementPdf.js @@ -0,0 +1,61 @@ +const {Report} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('clientDebtStatementPdf', { + description: 'Returns the client debt statement pdf', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + }, + { + arg: 'from', + type: 'string', + required: true + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/client-debt-statement-pdf', + verb: 'GET' + } + }); + + Self.clientDebtStatementPdf = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const report = new Report('client-debt-statement', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="doc-${id}.pdf"`]; + }; +}; diff --git a/modules/client/back/methods/client/clientWelcomeEmail.js b/modules/client/back/methods/client/clientWelcomeEmail.js new file mode 100644 index 000000000..318ee18e6 --- /dev/null +++ b/modules/client/back/methods/client/clientWelcomeEmail.js @@ -0,0 +1,59 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('clientWelcomeEmail', { + description: 'Sends the client welcome email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id to send to the recipient preferred language', + required: false + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/:id/client-welcome-email', + verb: 'POST' + } + }); + + Self.clientWelcomeEmail = async ctx => { + const args = Object.assign({}, ctx.args); + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const email = new Email('client-welcome', params); + + return email.send(); + }; +}; diff --git a/modules/client/back/methods/client/clientWelcomeHtml.js b/modules/client/back/methods/client/clientWelcomeHtml.js new file mode 100644 index 000000000..dfb560326 --- /dev/null +++ b/modules/client/back/methods/client/clientWelcomeHtml.js @@ -0,0 +1,58 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('clientWelcomeHtml', { + description: 'Returns the client welcome email preview', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/client-welcome-html', + verb: 'GET' + } + }); + + Self.clientWelcomeHtml = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + params.isPreview = true; + + const report = new Email('client-welcome', params); + const html = await report.render(); + + return [html, 'text/html', `filename="mail-${id}.pdf"`]; + }; +}; diff --git a/modules/client/back/methods/client/consumptionSendQueued.js b/modules/client/back/methods/client/consumptionSendQueued.js new file mode 100644 index 000000000..77e0e34f2 --- /dev/null +++ b/modules/client/back/methods/client/consumptionSendQueued.js @@ -0,0 +1,80 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethod('consumptionSendQueued', { + description: 'Send all queued invoices', + accessType: 'WRITE', + accepts: [], + returns: { + type: 'object', + root: true + }, + http: { + path: '/consumption-send-queued', + verb: 'POST' + } + }); + + Self.consumptionSendQueued = async() => { + const queues = await Self.rawSql(` + SELECT + id, + params + FROM clientConsumptionQueue + WHERE status = ''`); + + for (const queue of queues) { + try { + const params = JSON.parse(queue.params); + + const clients = await Self.rawSql(` + SELECT + c.id AS clientFk, + c.email AS clientEmail, + eu.email salesPersonEmail + FROM client c + JOIN account.emailUser eu ON eu.userFk = c.salesPersonFk + JOIN ticket t ON t.clientFk = c.id + JOIN sale s ON s.ticketFk = t.id + JOIN item i ON i.id = s.itemFk + JOIN itemType it ON it.id = i.typeFk + WHERE c.id IN(?) + AND it.isPackaging = FALSE + AND DATE(t.shipped) BETWEEN ? AND ? + GROUP BY c.id`, [params.clients, params.from, params.to]); + + for (const client of clients) { + const args = { + id: client.clientFk, + recipient: client.clientEmail, + replyTo: client.salesPersonEmail, + from: params.from, + to: params.to + }; + + const email = new Email('campaign-metrics', args); + await email.send(); + } + + await Self.rawSql(` + UPDATE clientConsumptionQueue + SET status = 'printed', + printed = ? + WHERE id = ?`, + [new Date(), queue.id]); + } catch (error) { + await Self.rawSql(` + UPDATE clientConsumptionQueue + SET status = ? + WHERE id = ?`, + [error.message, queue.id]); + + throw error; + } + } + + return { + message: 'Success' + }; + }; +}; diff --git a/modules/client/back/methods/client/createReceipt.js b/modules/client/back/methods/client/createReceipt.js index 131a1d61f..a75ee8844 100644 --- a/modules/client/back/methods/client/createReceipt.js +++ b/modules/client/back/methods/client/createReceipt.js @@ -51,6 +51,9 @@ module.exports = function(Self) { Self.createReceipt = async(ctx, options) => { const models = Self.app.models; const args = ctx.args; + const date = new Date(); + date.setHours(0, 0, 0, 0); + let tx; const myOptions = {}; @@ -92,8 +95,9 @@ module.exports = function(Self) { throw new UserError('Invalid account'); await Self.rawSql( - `CALL vn.ledger_doCompensation(CURDATE(), ?, ?, ?, ?, ?, ?)`, + `CALL vn.ledger_doCompensation(?, ?, ?, ?, ?, ?, ?)`, [ + date, args.compensationAccount, args.bankFk, accountingType.receiptDescription + originalClient.accountingAccount, @@ -106,9 +110,10 @@ module.exports = function(Self) { } else if (accountingType.isAutoConciliated == true) { const description = `${originalClient.id} : ${originalClient.socialName} - ${accountingType.receiptDescription}`; const [xdiarioNew] = await Self.rawSql( - `SELECT xdiario_new(?, CURDATE(), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ledger;`, + `SELECT xdiario_new(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ledger;`, [ null, + date, bank.account, originalClient.accountingAccount, description, @@ -126,9 +131,10 @@ module.exports = function(Self) { ); await Self.rawSql( - `SELECT xdiario_new(?, CURDATE(), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);`, + `SELECT xdiario_new(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);`, [ xdiarioNew.ledger, + date, originalClient.accountingAccount, bank.account, description, diff --git a/modules/client/back/methods/client/creditRequestEmail.js b/modules/client/back/methods/client/creditRequestEmail.js new file mode 100644 index 000000000..b6a60e971 --- /dev/null +++ b/modules/client/back/methods/client/creditRequestEmail.js @@ -0,0 +1,59 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('clientCreditEmail', { + description: 'Sends the credit request email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id to send to the recipient preferred language', + required: false + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/:id/credit-request-email', + verb: 'POST' + } + }); + + Self.clientCreditEmail = async ctx => { + const args = Object.assign({}, ctx.args); + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const email = new Email('credit-request', params); + + return email.send(); + }; +}; diff --git a/modules/client/back/methods/client/creditRequestHtml.js b/modules/client/back/methods/client/creditRequestHtml.js new file mode 100644 index 000000000..6b2d7fe4e --- /dev/null +++ b/modules/client/back/methods/client/creditRequestHtml.js @@ -0,0 +1,60 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('creditRequestHtml', { + description: 'Returns the credit request email preview', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/credit-request-html', + verb: 'GET' + } + }); + + Self.creditRequestHtml = async(ctx, id) => { + const {accessToken} = ctx.req; + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + params.isPreview = true; + params.access_token = accessToken.id; + + const report = new Email('credit-request', params); + const html = await report.render(); + + return [html, 'text/html', `filename="mail-${id}.pdf"`]; + }; +}; diff --git a/modules/client/back/methods/client/creditRequestPdf.js b/modules/client/back/methods/client/creditRequestPdf.js new file mode 100644 index 000000000..2e3dc0619 --- /dev/null +++ b/modules/client/back/methods/client/creditRequestPdf.js @@ -0,0 +1,56 @@ +const {Report} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('creditRequestPdf', { + description: 'Returns the credit request pdf', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/credit-request-pdf', + verb: 'GET' + } + }); + + Self.creditRequestPdf = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const report = new Report('credit-request', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="doc-${id}.pdf"`]; + }; +}; diff --git a/modules/client/back/methods/client/extendedListFilter.js b/modules/client/back/methods/client/extendedListFilter.js new file mode 100644 index 000000000..8e02cd413 --- /dev/null +++ b/modules/client/back/methods/client/extendedListFilter.js @@ -0,0 +1,159 @@ + +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; +const buildFilter = require('vn-loopback/util/filter').buildFilter; +const mergeFilters = require('vn-loopback/util/filter').mergeFilters; + +module.exports = Self => { + Self.remoteMethodCtx('extendedListFilter', { + description: 'Find all clients matched by the filter', + accessType: 'READ', + accepts: [ + { + arg: 'filter', + type: 'object', + }, + { + arg: 'search', + type: 'string', + description: `If it's and integer searchs by id, otherwise it searchs by name`, + }, + { + arg: 'name', + type: 'string', + description: 'The client name', + }, + { + arg: 'salesPersonFk', + type: 'number', + }, + { + arg: 'fi', + type: 'string', + description: 'The client fiscal id', + }, + { + arg: 'socialName', + type: 'string', + }, + { + arg: 'city', + type: 'string', + }, + { + arg: 'postcode', + type: 'string', + }, + { + arg: 'provinceFk', + type: 'number', + }, + { + arg: 'email', + type: 'string', + }, + { + arg: 'phone', + type: 'string', + }, + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/extendedListFilter`, + verb: 'GET' + } + }); + + Self.extendedListFilter = async(ctx, filter, options) => { + const conn = Self.dataSource.connector; + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const where = buildFilter(ctx.args, (param, value) => { + switch (param) { + case 'search': + return /^\d+$/.test(value) + ? {'c.id': {inq: value}} + : {'c.name': {like: `%${value}%`}}; + case 'name': + case 'salesPersonFk': + case 'fi': + case 'socialName': + case 'city': + case 'postcode': + case 'provinceFk': + case 'email': + case 'phone': + param = `c.${param}`; + return {[param]: value}; + } + }); + + filter = mergeFilters(filter, {where}); + + const stmts = []; + const stmt = new ParameterizedSQL( + `SELECT + c.id, + c.name, + c.socialName, + c.fi, + c.credit, + c.creditInsurance, + c.phone, + c.mobile, + c.street, + c.city, + c.postcode, + c.email, + c.created, + c.isActive, + c.isVies, + c.isTaxDataChecked, + c.isEqualizated, + c.isFreezed, + c.hasToInvoice, + c.hasToInvoiceByAddress, + c.isToBeMailed, + c.hasSepaVnl, + c.hasLcr, + c.hasCoreVnl, + ct.id AS countryFk, + ct.country, + p.id AS provinceFk, + p.name AS province, + u.id AS salesPersonFk, + u.name AS salesPerson, + bt.code AS businessTypeFk, + bt.description AS businessType, + pm.id AS payMethodFk, + pm.name AS payMethod, + sti.CodigoIva AS sageTaxTypeFk, + sti.Iva AS sageTaxType, + stt.CodigoTransaccion AS sageTransactionTypeFk, + stt.Transaccion AS sageTransactionType + FROM client c + LEFT JOIN account.user u ON u.id = c.salesPersonFk + LEFT JOIN country ct ON ct.id = c.countryFk + LEFT JOIN province p ON p.id = c.provinceFk + LEFT JOIN businessType bt ON bt.code = c.businessTypeFk + LEFT JOIN payMethod pm ON pm.id = c.payMethodFk + LEFT JOIN sage.TiposIva sti ON sti.CodigoIva = c.taxTypeSageFk + LEFT JOIN sage.TiposTransacciones stt ON stt.CodigoTransaccion = c.transactionTypeSageFk + ` + ); + + stmt.merge(conn.makeWhere(filter.where)); + stmt.merge(conn.makePagination(filter)); + + const clientsIndex = stmts.push(stmt) - 1; + const sql = ParameterizedSQL.join(stmts, ';'); + const result = await conn.executeStmt(sql, myOptions); + + return clientsIndex === 0 ? result : result[clientsIndex]; + }; +}; diff --git a/modules/client/back/methods/client/filter.js b/modules/client/back/methods/client/filter.js new file mode 100644 index 000000000..3e1ea43bb --- /dev/null +++ b/modules/client/back/methods/client/filter.js @@ -0,0 +1,147 @@ + +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; +const buildFilter = require('vn-loopback/util/filter').buildFilter; +const mergeFilters = require('vn-loopback/util/filter').mergeFilters; + +module.exports = Self => { + Self.remoteMethodCtx('filter', { + description: 'Find all clients matched by the filter', + accessType: 'READ', + accepts: [ + { + arg: 'filter', + type: 'object', + }, + { + arg: 'search', + type: 'string', + description: `If it's and integer searchs by id, otherwise it searchs by name`, + }, + { + arg: 'name', + type: 'string', + description: 'The client name', + }, + { + arg: 'salesPersonFk', + type: 'number', + }, + { + arg: 'fi', + type: 'string', + description: 'The client fiscal id', + }, + { + arg: 'socialName', + type: 'string', + }, + { + arg: 'city', + type: 'string', + }, + { + arg: 'postcode', + type: 'string', + }, + { + arg: 'provinceFk', + type: 'number', + }, + { + arg: 'email', + type: 'string', + }, + { + arg: 'phone', + type: 'string', + }, + { + arg: 'zoneFk', + type: 'number', + }, + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/filter`, + verb: 'GET' + } + }); + + Self.filter = async(ctx, filter, options) => { + const conn = Self.dataSource.connector; + const myOptions = {}; + const postalCode = []; + const args = ctx.args; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (args.zoneFk) { + query = `CALL vn.zone_getPostalCode(?)`; + const [geos] = await Self.rawSql(query, [args.zoneFk]); + for (let geo of geos) + postalCode.push(geo.name); + } + + const where = buildFilter(ctx.args, (param, value) => { + switch (param) { + case 'search': + return /^\d+$/.test(value) + ? {'c.id': {inq: value}} + : {'c.name': {like: `%${value}%`}}; + case 'name': + case 'salesPersonFk': + case 'fi': + case 'socialName': + case 'city': + case 'postcode': + case 'provinceFk': + case 'email': + case 'phone': + param = `c.${param}`; + return {[param]: value}; + case 'zoneFk': + param = 'a.postalCode'; + return {[param]: {inq: postalCode}}; + } + }); + + filter = mergeFilters(filter, {where}); + + const stmts = []; + const stmt = new ParameterizedSQL( + `SELECT + DISTINCT c.id, + c.name, + c.fi, + c.socialName, + c.phone, + c.city, + c.postcode, + c.email, + c.isActive, + c.isFreezed, + p.id AS provinceFk, + p.name AS province, + u.id AS salesPersonFk, + u.name AS salesPerson + FROM client c + LEFT JOIN account.user u ON u.id = c.salesPersonFk + LEFT JOIN province p ON p.id = c.provinceFk + JOIN vn.address a ON a.clientFk = c.id + ` + ); + + stmt.merge(conn.makeWhere(filter.where)); + stmt.merge(conn.makePagination(filter)); + + const clientsIndex = stmts.push(stmt) - 1; + const sql = ParameterizedSQL.join(stmts, ';'); + const result = await conn.executeStmt(sql, myOptions); + + return clientsIndex === 0 ? result : result[clientsIndex]; + }; +}; diff --git a/modules/client/back/methods/client/getCard.js b/modules/client/back/methods/client/getCard.js index c3ce00bf3..21b3140bd 100644 --- a/modules/client/back/methods/client/getCard.js +++ b/modules/client/back/methods/client/getCard.js @@ -62,14 +62,22 @@ module.exports = function(Self) { { relation: 'account', scope: { - fields: ['id', 'name', 'active'] + fields: ['id', 'name', 'email', 'active'] + } + }, + { + relation: 'supplier', + scope: { + fields: ['id', 'nif'] } } ] }, myOptions); - const query = `SELECT vn.clientGetDebt(?, CURDATE()) AS debt`; - const data = await Self.rawSql(query, [id], myOptions); + const date = new Date(); + date.setHours(0, 0, 0, 0); + const query = `SELECT vn.clientGetDebt(?, ?) AS debt`; + const data = await Self.rawSql(query, [id, date], myOptions); client.debt = data[0].debt; diff --git a/modules/client/back/methods/client/getDebt.js b/modules/client/back/methods/client/getDebt.js index 8eb0f2480..aafdbfa48 100644 --- a/modules/client/back/methods/client/getDebt.js +++ b/modules/client/back/methods/client/getDebt.js @@ -25,8 +25,10 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); - const query = `SELECT vn.clientGetDebt(?, CURDATE()) AS debt`; - const [debt] = await Self.rawSql(query, [clientFk], myOptions); + const date = new Date(); + date.setHours(0, 0, 0, 0); + const query = `SELECT vn.clientGetDebt(?, ?) AS debt`; + const [debt] = await Self.rawSql(query, [clientFk, date], myOptions); return debt; }; diff --git a/modules/client/back/methods/client/incotermsAuthorizationEmail.js b/modules/client/back/methods/client/incotermsAuthorizationEmail.js new file mode 100644 index 000000000..2a4fe593a --- /dev/null +++ b/modules/client/back/methods/client/incotermsAuthorizationEmail.js @@ -0,0 +1,65 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('incotermsAuthorizationEmail', { + description: 'Sends the incoterms authorization email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id to send to the recipient preferred language', + required: false + }, + { + arg: 'companyId', + type: 'number', + description: 'The company id', + required: true + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/:id/incoterms-authorization-email', + verb: 'POST' + } + }); + + Self.incotermsAuthorizationEmail = async ctx => { + const args = Object.assign({}, ctx.args); + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const email = new Email('incoterms-authorization', params); + + return email.send(); + }; +}; diff --git a/modules/client/back/methods/client/incotermsAuthorizationHtml.js b/modules/client/back/methods/client/incotermsAuthorizationHtml.js new file mode 100644 index 000000000..875495d93 --- /dev/null +++ b/modules/client/back/methods/client/incotermsAuthorizationHtml.js @@ -0,0 +1,66 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('incotermsAuthorizationHtml', { + description: 'Returns the incoterms authorization email preview', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + }, + { + arg: 'companyId', + type: 'number', + description: 'The company id', + required: true + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/incoterms-authorization-html', + verb: 'GET' + } + }); + + Self.incotermsAuthorizationHtml = async(ctx, id) => { + const {accessToken} = ctx.req; + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + params.isPreview = true; + params.access_token = accessToken.id; + + const report = new Email('incoterms-authorization', params); + const html = await report.render(); + + return [html, 'text/html', `filename="mail-${id}.pdf"`]; + }; +}; diff --git a/modules/client/back/methods/client/incotermsAuthorizationPdf.js b/modules/client/back/methods/client/incotermsAuthorizationPdf.js new file mode 100644 index 000000000..9a8a8d296 --- /dev/null +++ b/modules/client/back/methods/client/incotermsAuthorizationPdf.js @@ -0,0 +1,62 @@ +const {Report} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('incotermsAuthorizationPdf', { + description: 'Returns the incoterms authorization pdf', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + }, + { + arg: 'companyId', + type: 'number', + description: 'The company id', + required: true + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/incoterms-authorization-pdf', + verb: 'GET' + } + }); + + Self.incotermsAuthorizationPdf = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const report = new Report('incoterms-authorization', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="doc-${id}.pdf"`]; + }; +}; diff --git a/modules/client/back/methods/client/lastActiveTickets.js b/modules/client/back/methods/client/lastActiveTickets.js index da38dbee8..03616a0e3 100644 --- a/modules/client/back/methods/client/lastActiveTickets.js +++ b/modules/client/back/methods/client/lastActiveTickets.js @@ -32,6 +32,8 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); + const date = new Date(); + date.setHours(0, 0, 0, 0); const ticket = await Self.app.models.Ticket.findById(ticketId, null, myOptions); const query = ` SELECT @@ -50,12 +52,12 @@ module.exports = Self => { JOIN vn.warehouse w ON t.warehouseFk = w.id JOIN vn.address ad ON t.addressFk = ad.id JOIN vn.province pr ON ad.provinceFk = pr.id - WHERE t.shipped >= CURDATE() AND t.clientFk = ? AND ts.alertLevel = 0 + WHERE t.shipped >= ? AND t.clientFk = ? AND ts.alertLevel = 0 AND t.id <> ? AND t.warehouseFk = ? ORDER BY t.shipped LIMIT 10`; - return Self.rawSql(query, [id, ticketId, ticket.warehouseFk], myOptions); + return Self.rawSql(query, [date, id, ticketId, ticket.warehouseFk], myOptions); }; }; diff --git a/modules/client/back/methods/client/letterDebtorNdEmail.js b/modules/client/back/methods/client/letterDebtorNdEmail.js new file mode 100644 index 000000000..e188c6e0a --- /dev/null +++ b/modules/client/back/methods/client/letterDebtorNdEmail.js @@ -0,0 +1,65 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('letterDebtorNdEmail', { + description: 'Sends the second debtor letter email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id to send to the recipient preferred language', + required: false + }, + { + arg: 'companyId', + type: 'number', + description: 'The company id', + required: true + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/:id/letter-debtor-nd-email', + verb: 'POST' + } + }); + + Self.letterDebtorNdEmail = async ctx => { + const args = Object.assign({}, ctx.args); + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const email = new Email('letter-debtor-nd', params); + + return email.send(); + }; +}; diff --git a/modules/client/back/methods/client/letterDebtorNdHtml.js b/modules/client/back/methods/client/letterDebtorNdHtml.js new file mode 100644 index 000000000..320fbaef3 --- /dev/null +++ b/modules/client/back/methods/client/letterDebtorNdHtml.js @@ -0,0 +1,66 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('letterDebtorNdHtml', { + description: 'Returns the second letter debtor email preview', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + }, + { + arg: 'companyId', + type: 'number', + description: 'The company id', + required: true + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/letter-debtor-nd-html', + verb: 'GET' + } + }); + + Self.letterDebtorNdHtml = async(ctx, id) => { + const {accessToken} = ctx.req; + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + params.isPreview = true; + params.access_token = accessToken.id; + + const report = new Email('letter-debtor-nd', params); + const html = await report.render(); + + return [html, 'text/html', `filename="mail-${id}.pdf"`]; + }; +}; diff --git a/modules/client/back/methods/client/letterDebtorPdf.js b/modules/client/back/methods/client/letterDebtorPdf.js new file mode 100644 index 000000000..421d531e6 --- /dev/null +++ b/modules/client/back/methods/client/letterDebtorPdf.js @@ -0,0 +1,62 @@ +const {Report} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('letterDebtorPdf', { + description: 'Returns the letter debtor pdf', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + }, + { + arg: 'companyId', + type: 'number', + description: 'The company id', + required: true + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/letter-debtor-pdf', + verb: 'GET' + } + }); + + Self.letterDebtorPdf = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const report = new Report('letter-debtor', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="doc-${id}.pdf"`]; + }; +}; diff --git a/modules/client/back/methods/client/letterDebtorStEmail.js b/modules/client/back/methods/client/letterDebtorStEmail.js new file mode 100644 index 000000000..ee39a101b --- /dev/null +++ b/modules/client/back/methods/client/letterDebtorStEmail.js @@ -0,0 +1,65 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('letterDebtorStEmail', { + description: 'Sends the printer setup email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id to send to the recipient preferred language', + required: false + }, + { + arg: 'companyId', + type: 'number', + description: 'The company id', + required: true + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/:id/letter-debtor-st-email', + verb: 'POST' + } + }); + + Self.letterDebtorStEmail = async ctx => { + const args = Object.assign({}, ctx.args); + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const email = new Email('letter-debtor-st', params); + + return email.send(); + }; +}; diff --git a/modules/client/back/methods/client/letterDebtorStHtml.js b/modules/client/back/methods/client/letterDebtorStHtml.js new file mode 100644 index 000000000..acf75272b --- /dev/null +++ b/modules/client/back/methods/client/letterDebtorStHtml.js @@ -0,0 +1,66 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('letterDebtorStHtml', { + description: 'Returns the letter debtor email preview', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + }, + { + arg: 'companyId', + type: 'number', + description: 'The company id', + required: true + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/letter-debtor-st-html', + verb: 'GET' + } + }); + + Self.letterDebtorStHtml = async(ctx, id) => { + const {accessToken} = ctx.req; + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + params.isPreview = true; + params.access_token = accessToken.id; + + const report = new Email('letter-debtor-st', params); + const html = await report.render(); + + return [html, 'text/html', `filename="mail-${id}.pdf"`]; + }; +}; diff --git a/modules/client/back/methods/client/printerSetupEmail.js b/modules/client/back/methods/client/printerSetupEmail.js new file mode 100644 index 000000000..254948659 --- /dev/null +++ b/modules/client/back/methods/client/printerSetupEmail.js @@ -0,0 +1,59 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('printerSetupEmail', { + description: 'Sends the printer setup email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id to send to the recipient preferred language', + required: false + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/:id/printer-setup-email', + verb: 'POST' + } + }); + + Self.printerSetupEmail = async ctx => { + const args = Object.assign({}, ctx.args); + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const email = new Email('printer-setup', params); + + return email.send(); + }; +}; diff --git a/modules/client/back/methods/client/printerSetupHtml.js b/modules/client/back/methods/client/printerSetupHtml.js new file mode 100644 index 000000000..1ef1843e0 --- /dev/null +++ b/modules/client/back/methods/client/printerSetupHtml.js @@ -0,0 +1,58 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('printerSetupHtml', { + description: 'Returns the printer setup email preview', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/printer-setup-html', + verb: 'GET' + } + }); + + Self.printerSetupHtml = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + params.isPreview = true; + + const report = new Email('printer-setup', params); + const html = await report.render(); + + return [html, 'text/html', `filename="mail-${id}.pdf"`]; + }; +}; diff --git a/modules/client/back/methods/client/sendSms.js b/modules/client/back/methods/client/sendSms.js index cc11d17be..9d6a12416 100644 --- a/modules/client/back/methods/client/sendSms.js +++ b/modules/client/back/methods/client/sendSms.js @@ -39,7 +39,7 @@ module.exports = Self => { const userId = ctx.req.accessToken.userId; - const sms = await models.Sms.send(ctx, id, destination, message); + const sms = await models.Sms.send(ctx, destination, message); const logRecord = { originFk: id, userFk: userId, diff --git a/modules/client/back/methods/client/sepaCoreEmail.js b/modules/client/back/methods/client/sepaCoreEmail.js new file mode 100644 index 000000000..93c9d4302 --- /dev/null +++ b/modules/client/back/methods/client/sepaCoreEmail.js @@ -0,0 +1,65 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('sepaCoreEmail', { + description: 'Sends the campaign metrics email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id to send to the recipient preferred language', + required: false + }, + { + arg: 'companyId', + type: 'number', + description: 'The company id', + required: true + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/:id/sepa-core-email', + verb: 'POST' + } + }); + + Self.sepaCoreEmail = async ctx => { + const args = Object.assign({}, ctx.args); + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const email = new Email('sepa-core', params); + + return email.send(); + }; +}; diff --git a/modules/client/back/methods/client/setPassword.js b/modules/client/back/methods/client/setPassword.js new file mode 100644 index 000000000..2f0ebca5b --- /dev/null +++ b/modules/client/back/methods/client/setPassword.js @@ -0,0 +1,41 @@ +const UserError = require('vn-loopback/util/user-error'); +module.exports = Self => { + Self.remoteMethodCtx('setPassword', { + description: 'Sets the password of a non-worker client', + accepts: [ + { + arg: 'id', + type: 'number', + description: 'The user id', + http: {source: 'path'} + }, { + arg: 'newPassword', + type: 'string', + description: 'The new password', + required: true + } + ], + http: { + path: `/:id/setPassword`, + verb: 'PATCH' + } + }); + + Self.setPassword = async function(ctx, id, newPassword) { + const models = Self.app.models; + const userId = ctx.req.accessToken.userId; + + const isSalesPerson = await models.Account.hasRole(userId, 'salesPerson'); + + if (!isSalesPerson) + throw new UserError(`Not enough privileges to edit a client`); + + const isClient = await models.Client.findById(id, null); + const isUserAccount = await models.UserAccount.findById(id, null); + + if (isClient && !isUserAccount) + await models.Account.setPassword(id, newPassword); + else + throw new UserError(`Modifiable password only via recovery or by an administrator`); + }; +}; diff --git a/modules/client/back/methods/client/specs/addressesPropagateRe.spec.js b/modules/client/back/methods/client/specs/addressesPropagateRe.spec.js index 069c7bd25..74d80b964 100644 --- a/modules/client/back/methods/client/specs/addressesPropagateRe.spec.js +++ b/modules/client/back/methods/client/specs/addressesPropagateRe.spec.js @@ -1,6 +1,22 @@ const models = require('vn-loopback/server/server').models; +const LoopBackContext = require('loopback-context'); describe('Client addressesPropagateRe', () => { + beforeAll(async() => { + const activeCtx = { + accessToken: {userId: 9}, + http: { + req: { + headers: {origin: 'http://localhost'} + } + } + }; + + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + }); + it('should propagate the isEqualizated on both addresses of Mr Wayne and set hasToInvoiceByAddress to false', async() => { const tx = await models.Client.beginTransaction({}); diff --git a/modules/client/back/methods/client/specs/checkDuplicated.spec.js b/modules/client/back/methods/client/specs/checkDuplicated.spec.js new file mode 100644 index 000000000..1b682ca35 --- /dev/null +++ b/modules/client/back/methods/client/specs/checkDuplicated.spec.js @@ -0,0 +1,24 @@ +const models = require('vn-loopback/server/server').models; + +describe('client checkDuplicated()', () => { + it('should send an mail if mobile/phone/email is duplicated', async() => { + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const id = 1110; + const mailModel = models.Mail; + spyOn(mailModel, 'create'); + + await models.Client.checkDuplicatedData(id, options); + + expect(mailModel.create).toHaveBeenCalled(); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/client/back/methods/client/specs/createAddress.spec.js b/modules/client/back/methods/client/specs/createAddress.spec.js index d6178ae0d..0841ad98c 100644 --- a/modules/client/back/methods/client/specs/createAddress.spec.js +++ b/modules/client/back/methods/client/specs/createAddress.spec.js @@ -1,4 +1,5 @@ const models = require('vn-loopback/server/server').models; +const LoopBackContext = require('loopback-context'); describe('Address createAddress', () => { const clientFk = 1101; @@ -6,6 +7,21 @@ describe('Address createAddress', () => { const incotermsFk = 'FAS'; const customAgentOneId = 1; + beforeAll(async() => { + const activeCtx = { + accessToken: {userId: 9}, + http: { + req: { + headers: {origin: 'http://localhost'} + } + } + }; + + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + }); + it('should throw a non uee member error if no incoterms is defined', async() => { const tx = await models.Client.beginTransaction({}); diff --git a/modules/client/back/methods/client/specs/createWithUser.spec.js b/modules/client/back/methods/client/specs/createWithUser.spec.js index 4c827c745..7d4261aee 100644 --- a/modules/client/back/methods/client/specs/createWithUser.spec.js +++ b/modules/client/back/methods/client/specs/createWithUser.spec.js @@ -1,4 +1,5 @@ const models = require('vn-loopback/server/server').models; +const LoopBackContext = require('loopback-context'); describe('Client Create', () => { const newAccount = { @@ -12,6 +13,21 @@ describe('Client Create', () => { businessTypeFk: 'florist' }; + beforeAll(async() => { + const activeCtx = { + accessToken: {userId: 9}, + http: { + req: { + headers: {origin: 'http://localhost'} + } + } + }; + + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + }); + it(`should not find Deadpool as he's not created yet`, async() => { const tx = await models.Client.beginTransaction({}); diff --git a/modules/client/back/methods/client/specs/extendedListFilter.spec.js b/modules/client/back/methods/client/specs/extendedListFilter.spec.js new file mode 100644 index 000000000..9a0441656 --- /dev/null +++ b/modules/client/back/methods/client/specs/extendedListFilter.spec.js @@ -0,0 +1,180 @@ +const {models} = require('vn-loopback/server/server'); + +describe('client extendedListFilter()', () => { + it('should return the clients matching the filter with a limit of 20 rows', async() => { + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {}}; + const filter = {limit: '20'}; + const result = await models.Client.extendedListFilter(ctx, filter, options); + + expect(result.length).toEqual(20); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return the client "Bruce Wayne" matching the search argument with his name', async() => { + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {search: 'Bruce Wayne'}}; + const filter = {}; + const result = await models.Client.extendedListFilter(ctx, filter, options); + + const firstResult = result[0]; + + expect(result.length).toEqual(1); + expect(firstResult.name).toEqual('Bruce Wayne'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return the client "Bruce Wayne" matching the search argument with his id', async() => { + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {search: '1101'}}; + const filter = {}; + const result = await models.Client.extendedListFilter(ctx, filter, options); + + const firstResult = result[0]; + + expect(result.length).toEqual(1); + expect(firstResult.name).toEqual('Bruce Wayne'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return the client "Bruce Wayne" matching the name argument', async() => { + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {name: 'Bruce Wayne'}}; + const filter = {}; + const result = await models.Client.extendedListFilter(ctx, filter, options); + + const firstResult = result[0]; + + expect(result.length).toEqual(1); + expect(firstResult.name).toEqual('Bruce Wayne'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return the clients matching the "salesPersonFk" argument', async() => { + const tx = await models.Client.beginTransaction({}); + const salesPersonId = 18; + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {salesPersonFk: salesPersonId}}; + const filter = {}; + const result = await models.Client.extendedListFilter(ctx, filter, options); + + const randomIndex = Math.floor(Math.random() * result.length); + const randomResultClient = result[randomIndex]; + + expect(result.length).toBeGreaterThanOrEqual(5); + expect(randomResultClient.salesPersonFk).toEqual(salesPersonId); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return the clients matching the "fi" argument', async() => { + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {fi: '251628698'}}; + const filter = {}; + const result = await models.Client.extendedListFilter(ctx, filter, options); + + const firstClient = result[0]; + + expect(result.length).toEqual(1); + expect(firstClient.name).toEqual('Max Eisenhardt'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return the clients matching the "city" argument', async() => { + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {city: 'Gotham'}}; + const filter = {}; + const result = await models.Client.extendedListFilter(ctx, filter, options); + + const randomIndex = Math.floor(Math.random() * result.length); + const randomResultClient = result[randomIndex]; + + expect(result.length).toBeGreaterThanOrEqual(20); + expect(randomResultClient.city.toLowerCase()).toEqual('gotham'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return the clients matching the "postcode" argument', async() => { + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {postcode: '46460'}}; + const filter = {}; + const result = await models.Client.extendedListFilter(ctx, filter, options); + + const randomIndex = Math.floor(Math.random() * result.length); + const randomResultClient = result[randomIndex]; + + expect(result.length).toBeGreaterThanOrEqual(20); + expect(randomResultClient.postcode).toEqual('46460'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/client/back/methods/client/specs/filter.spec.js b/modules/client/back/methods/client/specs/filter.spec.js new file mode 100644 index 000000000..679585050 --- /dev/null +++ b/modules/client/back/methods/client/specs/filter.spec.js @@ -0,0 +1,199 @@ +const {models} = require('vn-loopback/server/server'); + +describe('client filter()', () => { + it('should return the clients matching the filter with a limit of 20 rows', async() => { + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {}}; + const filter = {limit: '8'}; + const result = await models.Client.filter(ctx, filter, options); + + expect(result.length).toEqual(8); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return the client "Bruce Wayne" matching the search argument with his name', async() => { + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {search: 'Bruce Wayne'}}; + const filter = {}; + const result = await models.Client.filter(ctx, filter, options); + + const firstResult = result[0]; + + expect(result.length).toEqual(1); + expect(firstResult.name).toEqual('Bruce Wayne'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return the client "Bruce Wayne" matching the search argument with his id', async() => { + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {search: '1101'}}; + const filter = {}; + const result = await models.Client.filter(ctx, filter, options); + + const firstResult = result[0]; + + expect(result.length).toEqual(1); + expect(firstResult.name).toEqual('Bruce Wayne'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return the client "Bruce Wayne" matching the name argument', async() => { + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {name: 'Bruce Wayne'}}; + const filter = {}; + const result = await models.Client.filter(ctx, filter, options); + + const firstResult = result[0]; + + expect(result.length).toEqual(1); + expect(firstResult.name).toEqual('Bruce Wayne'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return the clients matching the "salesPersonFk" argument', async() => { + const tx = await models.Client.beginTransaction({}); + const salesPersonId = 18; + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {salesPersonFk: salesPersonId}}; + const filter = {}; + const result = await models.Client.filter(ctx, filter, options); + + const randomIndex = Math.floor(Math.random() * result.length); + const randomResultClient = result[randomIndex]; + + expect(result.length).toBeGreaterThanOrEqual(5); + expect(randomResultClient.salesPersonFk).toEqual(salesPersonId); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return the clients matching the "fi" argument', async() => { + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {fi: '251628698'}}; + const filter = {}; + const result = await models.Client.filter(ctx, filter, options); + + const firstClient = result[0]; + + expect(result.length).toEqual(1); + expect(firstClient.name).toEqual('Max Eisenhardt'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return the clients matching the "city" argument', async() => { + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {city: 'Gotham'}}; + const filter = {}; + const result = await models.Client.filter(ctx, filter, options); + + const randomIndex = Math.floor(Math.random() * result.length); + const randomResultClient = result[randomIndex]; + + expect(result.length).toBeGreaterThanOrEqual(20); + expect(randomResultClient.city.toLowerCase()).toEqual('gotham'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return the clients matching the "postcode" argument', async() => { + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {postcode: '46460'}}; + const filter = {}; + const result = await models.Client.filter(ctx, filter, options); + + const randomIndex = Math.floor(Math.random() * result.length); + const randomResultClient = result[randomIndex]; + + expect(result.length).toBeGreaterThanOrEqual(20); + expect(randomResultClient.postcode).toEqual('46460'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return the clients matching the "zoneFk" argument', async() => { + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = {req: {accessToken: {userId: 1}}, args: {zoneFk: 9}}; + const filter = {}; + const result = await models.Client.filter(ctx, filter, options); + + expect(result.length).toBe(1); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/client/back/methods/client/specs/sendSms.spec.js b/modules/client/back/methods/client/specs/sendSms.spec.js index 121d427ce..47e788184 100644 --- a/modules/client/back/methods/client/specs/sendSms.spec.js +++ b/modules/client/back/methods/client/specs/sendSms.spec.js @@ -1,9 +1,7 @@ const models = require('vn-loopback/server/server').models; -const soap = require('soap'); describe('client sendSms()', () => { it('should now send a message and log it', async() => { - spyOn(soap, 'createClientAsync').and.returnValue('a so fake client'); const tx = await models.Client.beginTransaction({}); try { diff --git a/modules/client/back/methods/client/specs/setPassword.spec.js b/modules/client/back/methods/client/specs/setPassword.spec.js new file mode 100644 index 000000000..13065ca12 --- /dev/null +++ b/modules/client/back/methods/client/specs/setPassword.spec.js @@ -0,0 +1,47 @@ +const models = require('vn-loopback/server/server').models; + +describe('Client setPassword', () => { + const salesPersonId = 19; + const ctx = { + req: {accessToken: {userId: salesPersonId}} + }; + + it(`should throw an error if you don't have enough permissions`, async() => { + let error; + const employeeId = 1; + const ctx = { + req: {accessToken: {userId: employeeId}} + }; + try { + await models.Client.setPassword(ctx, 1, 't0pl3v3l.p455w0rd!'); + } catch (e) { + error = e; + } + + expect(error.message).toEqual(`Not enough privileges to edit a client`); + }); + + it('should throw an error the setPassword target is not just a client but a worker', async() => { + let error; + + try { + await models.Client.setPassword(ctx, 1, 't0pl3v3l.p455w0rd!'); + } catch (e) { + error = e; + } + + expect(error.message).toEqual(`Modifiable password only via recovery or by an administrator`); + }); + + it('should change the password of the client', async() => { + let error; + + try { + await models.Client.setPassword(ctx, 1101, 't0pl3v3l.p455w0rd!'); + } catch (e) { + error = e; + } + + expect(error).toBeUndefined(); + }); +}); diff --git a/modules/client/back/methods/client/specs/summary.spec.js b/modules/client/back/methods/client/specs/summary.spec.js index 1eef35024..f2d576e39 100644 --- a/modules/client/back/methods/client/specs/summary.spec.js +++ b/modules/client/back/methods/client/specs/summary.spec.js @@ -120,7 +120,6 @@ describe('client summary()', () => { const result = await models.Client.summary(clientId, options); expect(result.recovery.id).toEqual(3); - await tx.rollback(); } catch (e) { await tx.rollback(); diff --git a/modules/client/back/methods/client/specs/updateAddress.spec.js b/modules/client/back/methods/client/specs/updateAddress.spec.js index efaa1b93c..6f02323c5 100644 --- a/modules/client/back/methods/client/specs/updateAddress.spec.js +++ b/modules/client/back/methods/client/specs/updateAddress.spec.js @@ -1,4 +1,5 @@ const models = require('vn-loopback/server/server').models; +const LoopBackContext = require('loopback-context'); describe('Address updateAddress', () => { const clientId = 1101; @@ -6,6 +7,27 @@ describe('Address updateAddress', () => { const provinceId = 5; const incotermsId = 'FAS'; const customAgentOneId = 1; + const employeeId = 1; + const ctx = { + req: { + accessToken: {userId: employeeId} + } + }; + + beforeAll(async() => { + const activeCtx = { + accessToken: {userId: 9}, + http: { + req: { + headers: {origin: 'http://localhost'} + } + } + }; + + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + }); it('should throw the non uee member error if no incoterms is defined', async() => { const tx = await models.Client.beginTransaction({}); @@ -14,11 +36,9 @@ describe('Address updateAddress', () => { try { const options = {transaction: tx}; - const ctx = { - args: { - provinceFk: provinceId, - customsAgentFk: customAgentOneId - } + ctx.args = { + provinceFk: provinceId, + customsAgentFk: customAgentOneId }; await models.Client.updateAddress(ctx, clientId, addressId, options); @@ -29,7 +49,6 @@ describe('Address updateAddress', () => { error = e; } - expect(error).toBeDefined(); expect(error.message).toEqual('Incoterms is required for a non UEE member'); }); @@ -40,11 +59,9 @@ describe('Address updateAddress', () => { try { const options = {transaction: tx}; - const ctx = { - args: { - provinceFk: provinceId, - incotermsFk: incotermsId - } + ctx.args = { + provinceFk: provinceId, + incotermsFk: incotermsId }; await models.Client.updateAddress(ctx, clientId, addressId, options); @@ -55,7 +72,6 @@ describe('Address updateAddress', () => { error = e; } - expect(error).toBeDefined(); expect(error.message).toEqual('Customs agent is required for a non UEE member'); }); @@ -66,13 +82,11 @@ describe('Address updateAddress', () => { const options = {transaction: tx}; const expectedResult = 'My edited address'; - const ctx = { - args: { - provinceFk: provinceId, - nickname: expectedResult, - incotermsFk: incotermsId, - customsAgentFk: customAgentOneId - } + ctx.args = { + provinceFk: provinceId, + nickname: expectedResult, + incotermsFk: incotermsId, + customsAgentFk: customAgentOneId }; await models.Client.updateAddress(ctx, clientId, addressId, options); @@ -88,6 +102,53 @@ describe('Address updateAddress', () => { } }); + it('should return an error for a user without enough privileges', async() => { + const tx = await models.Client.beginTransaction({}); + + let error; + + try { + const options = {transaction: tx}; + ctx.req.accessToken.userId = employeeId; + ctx.args = { + isLogifloraAllowed: true + }; + + await models.Client.updateAddress(ctx, clientId, addressId, options); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + error = e; + } + + expect(error.message).toEqual(`You don't have enough privileges`); + }); + + it('should update isLogifloraAllowed', async() => { + const tx = await models.Client.beginTransaction({}); + const salesAssistantId = 21; + + try { + const options = {transaction: tx}; + ctx.req.accessToken.userId = salesAssistantId; + ctx.args = { + isLogifloraAllowed: true + }; + + await models.Client.updateAddress(ctx, clientId, addressId, options); + const address = await models.Address.findById(addressId, null, options); + + expect(address.isLogifloraAllowed).toEqual(true); + + await tx.rollback(); + ctx.req.accessToken.userId = employeeId; + } catch (e) { + await tx.rollback(); + ctx.req.accessToken.userId = employeeId; + throw e; + } + }); + it('should update the address', async() => { const tx = await models.Client.beginTransaction({}); @@ -95,10 +156,8 @@ describe('Address updateAddress', () => { const options = {transaction: tx}; const expectedResult = 'My second time edited address'; - const ctx = { - args: { - nickname: expectedResult - } + ctx.args = { + nickname: expectedResult }; await models.Client.updateAddress(ctx, clientId, addressId, options); diff --git a/modules/client/back/methods/client/specs/updateFiscalData.spec.js b/modules/client/back/methods/client/specs/updateFiscalData.spec.js index 75273a39f..a08f97faf 100644 --- a/modules/client/back/methods/client/specs/updateFiscalData.spec.js +++ b/modules/client/back/methods/client/specs/updateFiscalData.spec.js @@ -1,10 +1,25 @@ const models = require('vn-loopback/server/server').models; +const LoopBackContext = require('loopback-context'); describe('Client updateFiscalData', () => { const clientId = 1101; const employeeId = 1; const salesAssistantId = 21; const administrativeId = 5; + const activeCtx = { + accessToken: {userId: employeeId}, + http: { + req: { + headers: {origin: 'http://localhost'} + } + } + }; + + beforeEach(() => { + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + }); it('should return an error if the user is not salesAssistant and the isTaxDataChecked value is true', async() => { const tx = await models.Client.beginTransaction({}); @@ -24,7 +39,7 @@ describe('Client updateFiscalData', () => { error = e; } - expect(error.message).toEqual(`You can't make changes on a client with verified data`); + expect(error.message).toEqual(`Not enough privileges to edit a client with verified data`); }); it('should return an error if the salesAssistant did not fill the sage data before checking verified data', async() => { @@ -35,7 +50,7 @@ describe('Client updateFiscalData', () => { try { const options = {transaction: tx}; - const client = await models.Client.findById(clientId, options); + const client = await models.Client.findById(clientId, null, options); await client.updateAttribute('isTaxDataChecked', false, options); const ctx = {req: {accessToken: {userId: salesAssistantId}}}; diff --git a/modules/client/back/methods/client/specs/updatePortfolio.spec.js b/modules/client/back/methods/client/specs/updatePortfolio.spec.js new file mode 100644 index 000000000..bf681eb2e --- /dev/null +++ b/modules/client/back/methods/client/specs/updatePortfolio.spec.js @@ -0,0 +1,75 @@ +const models = require('vn-loopback/server/server').models; +const LoopBackContext = require('loopback-context'); + +describe('Client updatePortfolio', () => { + const activeCtx = { + accessToken: {userId: 9}, + http: { + req: { + headers: {origin: 'http://localhost'}, + [`__`]: value => { + return value; + } + } + } + }; + + beforeAll(() => { + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + }); + + it('should update the portfolioWeight when the salesPerson of a client changes', async() => { + const clientId = 1108; + const salesPersonId = 18; + + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + const expectedResult = 841.63; + + const client = await models.Client.findById(clientId, null, options); + await client.updateAttribute('salesPersonFk', salesPersonId, options); + + await models.Client.updatePortfolio(options); + + const portfolioQuery = `SELECT portfolioWeight FROM bs.salesPerson WHERE workerFk = ${salesPersonId}; `; + const [salesPerson] = await models.Client.rawSql(portfolioQuery, null, options); + + expect(salesPerson.portfolioWeight).toEqual(expectedResult); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should keep the same portfolioWeight when a salesperson is unassigned of a client', async() => { + const clientId = 1107; + const salesPersonId = 19; + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + const expectedResult = 34.40; + + const client = await models.Client.findById(clientId, null, options); + await client.updateAttribute('salesPersonFk', null, options); + + await models.Client.updatePortfolio(); + + const portfolioQuery = `SELECT portfolioWeight FROM bs.salesPerson WHERE workerFk = ${salesPersonId}; `; + const [salesPerson] = await models.Client.rawSql(portfolioQuery); + + expect(salesPerson.portfolioWeight).toEqual(expectedResult); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/client/back/methods/client/specs/updateUser.spec.js b/modules/client/back/methods/client/specs/updateUser.spec.js new file mode 100644 index 000000000..2d7f7dce0 --- /dev/null +++ b/modules/client/back/methods/client/specs/updateUser.spec.js @@ -0,0 +1,76 @@ +const models = require('vn-loopback/server/server').models; +const LoopBackContext = require('loopback-context'); +describe('Client updateUser', () => { + const employeeId = 1; + const activeCtx = { + accessToken: {userId: employeeId}, + http: { + req: { + headers: {origin: 'http://localhost'} + } + } + }; + const salesPersonId = 19; + const ctx = { + req: {accessToken: {userId: salesPersonId}}, + args: {name: 'test', active: true} + }; + + beforeEach(() => { + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + }); + + it(`should throw an error if you don't have enough permissions`, async() => { + let error; + const employeeId = 1; + const ctx = { + req: {accessToken: {userId: employeeId}}, + args: {name: 'test', active: true} + }; + try { + const clientID = 1106; + await models.Client.updateUser(ctx, clientID); + } catch (e) { + error = e; + } + + expect(error.message).toEqual(`Not enough privileges to edit a client`); + }); + + it('should throw an error the target user is not just a client but a worker', async() => { + let error; + try { + const clientID = 1; + await models.Client.updateUser(ctx, clientID); + } catch (e) { + error = e; + } + + expect(error.message).toEqual(`Modifiable user details only by an administrator`); + }); + + it('should update the user data', async() => { + let error; + + const tx = await models.Client.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const clientID = 1105; + await models.Client.updateUser(ctx, clientID, options); + const client = await models.Account.findById(clientID, null, options); + + expect(client.name).toEqual('test'); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + + expect(error).toBeUndefined(); + }); +}); diff --git a/modules/client/back/methods/client/summary.js b/modules/client/back/methods/client/summary.js index dccf7f39c..48cb75f31 100644 --- a/modules/client/back/methods/client/summary.js +++ b/modules/client/back/methods/client/summary.js @@ -122,7 +122,6 @@ module.exports = Self => { return clientModel.findOne(filter, options); } - async function getRecoveries(recoveryModel, clientId, options) { const filter = { where: { diff --git a/modules/client/back/methods/client/updateAddress.js b/modules/client/back/methods/client/updateAddress.js index d1a498fe7..cae797f6b 100644 --- a/modules/client/back/methods/client/updateAddress.js +++ b/modules/client/back/methods/client/updateAddress.js @@ -68,6 +68,10 @@ module.exports = function(Self) { { arg: 'isEqualizated', type: 'boolean' + }, + { + arg: 'isLogifloraAllowed', + type: 'boolean' } ], returns: { @@ -83,11 +87,17 @@ module.exports = function(Self) { Self.updateAddress = async(ctx, clientId, addressId, options) => { const models = Self.app.models; const args = ctx.args; + const userId = ctx.req.accessToken.userId; const myOptions = {}; if (typeof options == 'object') Object.assign(myOptions, options); + const isSalesAssistant = await models.Account.hasRole(userId, 'salesAssistant', myOptions); + + if (args.isLogifloraAllowed && !isSalesAssistant) + throw new UserError(`You don't have enough privileges`); + const address = await models.Address.findOne({ where: { id: addressId, diff --git a/modules/client/back/methods/client/updateFiscalData.js b/modules/client/back/methods/client/updateFiscalData.js index 539d89d3a..9bb572fb3 100644 --- a/modules/client/back/methods/client/updateFiscalData.js +++ b/modules/client/back/methods/client/updateFiscalData.js @@ -95,6 +95,10 @@ module.exports = Self => { { arg: 'despiteOfClient', type: 'number' + }, + { + arg: 'hasIncoterms', + type: 'boolean' } ], returns: { @@ -129,7 +133,7 @@ module.exports = Self => { const client = await models.Client.findById(clientId, null, myOptions); if (!isSalesAssistant && client.isTaxDataChecked) - throw new UserError(`You can't make changes on a client with verified data`); + throw new UserError(`Not enough privileges to edit a client with verified data`); // Sage data validation const taxDataChecked = args.isTaxDataChecked; diff --git a/modules/client/back/methods/client/updatePortfolio.js b/modules/client/back/methods/client/updatePortfolio.js new file mode 100644 index 000000000..809a84636 --- /dev/null +++ b/modules/client/back/methods/client/updatePortfolio.js @@ -0,0 +1,25 @@ +module.exports = function(Self) { + Self.remoteMethodCtx('updatePortfolio', { + description: 'Update salesPeson potfolio weight', + accessType: 'READ', + accepts: [], + returns: { + type: 'Object', + root: true + }, + http: { + path: `/updatePortfolio`, + verb: 'GET' + } + }); + + Self.updatePortfolio = async options => { + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + query = `CALL bs.salesPerson_updatePortfolio()`; + return Self.rawSql(query, null, myOptions); + }; +}; diff --git a/modules/client/back/methods/client/updateUser.js b/modules/client/back/methods/client/updateUser.js new file mode 100644 index 000000000..1db8cd6b6 --- /dev/null +++ b/modules/client/back/methods/client/updateUser.js @@ -0,0 +1,68 @@ +const UserError = require('vn-loopback/util/user-error'); +module.exports = Self => { + Self.remoteMethodCtx('updateUser', { + description: 'Updates the user information', + accepts: [ + { + arg: 'id', + type: 'number', + description: 'The user id' + }, + { + arg: 'name', + type: 'string', + description: 'the user name' + }, + { + arg: 'email', + type: 'any', + description: 'the user email' + }, + { + arg: 'active', + type: 'boolean', + description: 'whether the user is active or not' + }, + ], + http: { + path: '/:id/updateUser', + verb: 'PATCH' + } + }); + + Self.updateUser = async function(ctx, id, options) { + const models = Self.app.models; + const userId = ctx.req.accessToken.userId; + let tx; + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await models.Account.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + const isSalesPerson = await models.Account.hasRole(userId, 'salesPerson', myOptions); + + if (!isSalesPerson) + throw new UserError(`Not enough privileges to edit a client`); + + const isClient = await models.Client.findById(id, null, myOptions); + const isUserAccount = await models.UserAccount.findById(id, null, myOptions); + + if (isClient && !isUserAccount) { + const user = await models.Account.findById(id, null, myOptions); + await user.updateAttributes(ctx.args, myOptions); + } else + throw new UserError(`Modifiable user details only by an administrator`); + + if (tx) await tx.commit(); + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/client/back/methods/credit-classification/createWithInsurance.js b/modules/client/back/methods/credit-classification/createWithInsurance.js index fb0a7222b..d4110676c 100644 --- a/modules/client/back/methods/credit-classification/createWithInsurance.js +++ b/modules/client/back/methods/credit-classification/createWithInsurance.js @@ -38,7 +38,7 @@ module.exports = Self => { }, myOptions); await models.CreditInsurance.create({ - creditClassification: newClassification.id, + creditClassificationFk: newClassification.id, credit: data.credit, grade: data.grade }, myOptions); diff --git a/modules/client/back/methods/defaulter/filter.js b/modules/client/back/methods/defaulter/filter.js index c06d1c51b..ce1d89818 100644 --- a/modules/client/back/methods/defaulter/filter.js +++ b/modules/client/back/methods/defaulter/filter.js @@ -51,6 +51,8 @@ module.exports = Self => { const stmts = []; + const date = new Date(); + date.setHours(0, 0, 0, 0); const stmt = new ParameterizedSQL( `SELECT * FROM ( @@ -61,25 +63,26 @@ module.exports = Self => { u.name salesPersonName, d.amount, co.created, - CONCAT(DATE(co.created), ' ', co.text) observation, + co.text observation, uw.id workerFk, uw.name workerName, c.creditInsurance, d.defaulterSinced FROM vn.defaulter d - JOIN vn.client c ON c.id = d.clientFk + JOIN vn.client c ON c.id = d.clientFk LEFT JOIN vn.clientObservation co ON co.clientFk = c.id LEFT JOIN account.user u ON u.id = c.salesPersonFk LEFT JOIN account.user uw ON uw.id = co.workerFk WHERE - d.created = CURDATE() + d.created = ? AND d.amount > 0 ORDER BY co.created DESC) d` - ); + , [date]); stmt.merge(conn.makeWhere(filter.where)); stmt.merge(`GROUP BY d.clientFk`); stmt.merge(conn.makeOrderBy(filter.order)); + stmt.merge(conn.makeLimit(filter)); const itemsIndex = stmts.push(stmt) - 1; const sql = ParameterizedSQL.join(stmts, ';'); diff --git a/modules/client/back/methods/defaulter/specs/filter.spec.js b/modules/client/back/methods/defaulter/specs/filter.spec.js index 145bb5132..0a970823e 100644 --- a/modules/client/back/methods/defaulter/specs/filter.spec.js +++ b/modules/client/back/methods/defaulter/specs/filter.spec.js @@ -47,12 +47,12 @@ describe('defaulter filter()', () => { try { const options = {transaction: tx}; - const ctx = {req: {accessToken: {userId: authUserId}}, args: {search: 'bruce'}}; + const ctx = {req: {accessToken: {userId: authUserId}}, args: {search: 'Petter Parker'}}; const result = await models.Defaulter.filter(ctx, null, options); const firstRow = result[0]; - expect(firstRow.clientName).toEqual('Bruce Wayne'); + expect(firstRow.clientName).toEqual('Petter Parker'); await tx.rollback(); } catch (e) { diff --git a/modules/client/back/methods/receipt/balanceCompensationEmail.js b/modules/client/back/methods/receipt/balanceCompensationEmail.js new file mode 100644 index 000000000..e9ded147d --- /dev/null +++ b/modules/client/back/methods/receipt/balanceCompensationEmail.js @@ -0,0 +1,40 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('balanceCompensationEmail', { + description: 'Sends the debit balances compensation email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + type: 'Number', + required: true, + description: 'The receipt id', + http: { source: 'path' } + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/:id/balance-compensation-email', + verb: 'POST' + } + }); + + Self.balanceCompensationEmail = async (ctx, id) => { + + const models = Self.app.models; + const receipt = await models.Receipt.findById(id, {fields: ['clientFk']}); + const client = await models.Client.findById(receipt.clientFk, {fields:['email']}); + + const email = new Email('balance-compensation', { + lang: ctx.req.getLocale(), + recipient: client.email+',administracion@verdnatura.es', + id + }); + + return email.send(); + }; +}; diff --git a/modules/client/back/methods/receipt/balanceCompensationPdf.js b/modules/client/back/methods/receipt/balanceCompensationPdf.js new file mode 100644 index 000000000..ff8713253 --- /dev/null +++ b/modules/client/back/methods/receipt/balanceCompensationPdf.js @@ -0,0 +1,50 @@ +const { Report } = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('balanceCompensationPdf', { + description: 'Returns the the debit balances compensation pdf', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The receipt id', + http: { source: 'path' } + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/balance-compensation-pdf', + verb: 'GET' + } + }); + + Self.balanceCompensationPdf = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const report = new Report('balance-compensation', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="doc-${id}.pdf"`]; + }; +}; diff --git a/modules/client/back/methods/receipt/receiptPdf.js b/modules/client/back/methods/receipt/receiptPdf.js new file mode 100644 index 000000000..f55e05040 --- /dev/null +++ b/modules/client/back/methods/receipt/receiptPdf.js @@ -0,0 +1,55 @@ +const {Report} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('receiptPdf', { + description: 'Returns the receipt pdf', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The claim id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/receipt-pdf', + verb: 'GET' + } + }); + + Self.receiptPdf = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const report = new Report('receipt', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="doc-${id}.pdf"`]; + }; +}; diff --git a/modules/client/back/methods/recovery/hasActiveRecovery.js b/modules/client/back/methods/recovery/hasActiveRecovery.js index a0d0064eb..6b69d99d7 100644 --- a/modules/client/back/methods/recovery/hasActiveRecovery.js +++ b/modules/client/back/methods/recovery/hasActiveRecovery.js @@ -27,13 +27,15 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); + const date = new Date(); + date.setHours(0, 0, 0, 0); const query = ` SELECT count(*) AS hasActiveRecovery FROM vn.recovery WHERE clientFk = ? - AND IFNULL(finished,CURDATE()) >= CURDATE(); + AND IFNULL(finished, ?) >= ?; `; - const [result] = await Self.rawSql(query, [id], myOptions); + const [result] = await Self.rawSql(query, [id, date, date], myOptions); return result.hasActiveRecovery != 0; }; diff --git a/modules/client/back/methods/sms/send.js b/modules/client/back/methods/sms/send.js index 08daf83a1..94b2b6c27 100644 --- a/modules/client/back/methods/sms/send.js +++ b/modules/client/back/methods/sms/send.js @@ -6,10 +6,6 @@ module.exports = Self => { description: 'Sends SMS to a destination phone', accessType: 'WRITE', accepts: [ - { - arg: 'destinationFk', - type: 'integer' - }, { arg: 'destination', type: 'string', @@ -31,7 +27,7 @@ module.exports = Self => { } }); - Self.send = async(ctx, destinationFk, destination, message) => { + Self.send = async(ctx, destination, message) => { const userId = ctx.req.accessToken.userId; const smsConfig = await Self.app.models.SmsConfig.findOne(); @@ -68,7 +64,6 @@ module.exports = Self => { const newSms = { senderFk: userId, - destinationFk: destinationFk || null, destination: destination, message: message, status: error diff --git a/modules/client/back/methods/sms/send.spec.js b/modules/client/back/methods/sms/send.spec.js index 7ca78b214..8eee85bd6 100644 --- a/modules/client/back/methods/sms/send.spec.js +++ b/modules/client/back/methods/sms/send.spec.js @@ -3,7 +3,7 @@ const app = require('vn-loopback/server/server'); describe('sms send()', () => { it('should not return status error', async() => { const ctx = {req: {accessToken: {userId: 1}}}; - const result = await app.models.Sms.send(ctx, 1105, '123456789', 'My SMS Body'); + const result = await app.models.Sms.send(ctx, '123456789', 'My SMS Body'); expect(result.status).toBeUndefined(); }); diff --git a/modules/client/back/model-config.json b/modules/client/back/model-config.json index 38f5c9427..4ef34ca3a 100644 --- a/modules/client/back/model-config.json +++ b/modules/client/back/model-config.json @@ -8,12 +8,18 @@ "BankEntity": { "dataSource": "vn" }, + "Business": { + "dataSource": "vn" + }, "BusinessType": { "dataSource": "vn" }, "Client": { "dataSource": "vn" }, + "ClientConfig": { + "dataSource": "vn" + }, "ClientContact": { "dataSource": "vn" }, @@ -23,6 +29,9 @@ "ClientCreditLimit": { "dataSource": "vn" }, + "ClientConsumptionQueue": { + "dataSource": "vn" + }, "ClientLog": { "dataSource": "vn" }, @@ -44,6 +53,9 @@ "ClientType": { "dataSource": "vn" }, + "ClientUnpaid": { + "dataSource": "vn" + }, "Defaulter": { "dataSource": "vn" }, diff --git a/modules/client/back/models/address-observation.json b/modules/client/back/models/address-observation.json index 3096c8e5d..2fdb8bc0f 100644 --- a/modules/client/back/models/address-observation.json +++ b/modules/client/back/models/address-observation.json @@ -8,7 +8,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, diff --git a/modules/client/back/models/address.json b/modules/client/back/models/address.json index 8daac0466..0dcbbf7fe 100644 --- a/modules/client/back/models/address.json +++ b/modules/client/back/models/address.json @@ -14,7 +14,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, @@ -43,13 +43,16 @@ "type": "boolean" }, "longitude": { - "type": "Number" + "type": "number" }, "latitude": { - "type": "Number" + "type": "number" }, "isEqualizated": { "type": "boolean" + }, + "isLogifloraAllowed": { + "type": "boolean" } }, "validations": [], diff --git a/modules/client/back/models/business.json b/modules/client/back/models/business.json new file mode 100644 index 000000000..7ad2d307f --- /dev/null +++ b/modules/client/back/models/business.json @@ -0,0 +1,27 @@ +{ + "name": "Business", + "base": "VnModel", + "options": { + "mysql": { + "table": "business" + } + }, + "properties": { + "id": { + "type": "number", + "id": true + } + }, + "relations": { + "worker": { + "type": "belongsTo", + "model": "Worker", + "foreignKey": "workerFk" + }, + "department": { + "type": "belongsTo", + "model": "Department", + "foreignKey": "departmentFk" + } + } +} \ No newline at end of file diff --git a/modules/client/back/models/client-config.json b/modules/client/back/models/client-config.json new file mode 100644 index 000000000..90d47333d --- /dev/null +++ b/modules/client/back/models/client-config.json @@ -0,0 +1,22 @@ +{ + "name": "ClientConfig", + "base": "VnModel", + "options": { + "mysql": { + "table": "clientConfig" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "riskTolerance": { + "type": "number" + }, + "maxCreditRows": { + "type": "number" + } + } +} \ No newline at end of file diff --git a/modules/client/back/models/client-consumption-queue.json b/modules/client/back/models/client-consumption-queue.json new file mode 100644 index 000000000..e423f218c --- /dev/null +++ b/modules/client/back/models/client-consumption-queue.json @@ -0,0 +1,30 @@ +{ + "name": "ClientConsumptionQueue", + "base": "VnModel", + "options": { + "mysql": { + "table": "clientConsumptionQueue" + } + }, + "properties": { + "params": { + "type": "string" + }, + "queued": { + "type": "date" + }, + "printed": { + "type": "date" + }, + "status": { + "type": "string" + } + }, + "relations": { + "client": { + "type": "belongsTo", + "model": "Client", + "foreignKey": "clientFk" + } + } +} diff --git a/modules/client/back/models/client-contact.json b/modules/client/back/models/client-contact.json index ea916c072..514ebbf5e 100644 --- a/modules/client/back/models/client-contact.json +++ b/modules/client/back/models/client-contact.json @@ -3,34 +3,34 @@ "description": "Client phone contacts", "base": "Loggable", "log": { - "model": "ClientLog", - "relation": "client", - "showField": "name" + "model": "ClientLog", + "relation": "client", + "showField": "name" }, "options": { - "mysql": { - "table": "clientContact" - } + "mysql": { + "table": "clientContact" + } }, "validateUpsert": true, "properties": { - "id": { - "type": "Number", - "id": true, - "description": "Identifier" - }, - "name": { - "type": "string" - }, - "phone": { - "type": "string" - } + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "name": { + "type": "string" + }, + "phone": { + "type": "string" + } }, "relations": { - "client": { - "type": "belongsTo", - "model": "Client", - "foreignKey": "clientFk" - } + "client": { + "type": "belongsTo", + "model": "Client", + "foreignKey": "clientFk" + } } - } \ No newline at end of file +} \ No newline at end of file diff --git a/modules/client/back/models/client-credit-limit.json b/modules/client/back/models/client-credit-limit.json index 5263fb94b..740f0cf53 100644 --- a/modules/client/back/models/client-credit-limit.json +++ b/modules/client/back/models/client-credit-limit.json @@ -1,26 +1,26 @@ { - "name": "ClientCreditLimit", - "base": "VnModel", - "options": { - "mysql": { - "table": "clientCreditLimit" - } - }, - "properties": { - "id": { - "type": "Number", - "id": true, - "description": "Identifier" + "name": "ClientCreditLimit", + "base": "VnModel", + "options": { + "mysql": { + "table": "clientCreditLimit" + } }, - "maxAmount": { - "type": "Number" + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "maxAmount": { + "type": "number" + } + }, + "relations": { + "role": { + "type": "belongsTo", + "model": "Role", + "foreignKey": "roleFk" + } } - }, - "relations": { - "role": { - "type": "belongsTo", - "model": "Role", - "foreignKey": "roleFk" - } - } } \ No newline at end of file diff --git a/modules/client/back/models/client-credit.js b/modules/client/back/models/client-credit.js new file mode 100644 index 000000000..01fe8214a --- /dev/null +++ b/modules/client/back/models/client-credit.js @@ -0,0 +1,23 @@ +module.exports = Self => { + Self.observe('after save', async ctx => { + const instance = ctx.instance; + const models = Self.app.models; + + const clientConfig = await models.ClientConfig.findOne(); + const maxCreditRows = clientConfig.maxCreditRows; + + const clientCredit = await models.ClientCredit.find({ + where: {clientFk: instance.clientFk}, + order: 'created DESC', + limit: maxCreditRows + }, ctx.options); + + const lastCredit = clientCredit[maxCreditRows - 1]; + if (lastCredit) { + await models.ClientCredit.destroyAll({ + clientFk: instance.clientFk, + created: {lt: lastCredit.created} + }, ctx.options); + } + }); +}; diff --git a/modules/client/back/models/client-credit.json b/modules/client/back/models/client-credit.json index 2b71fbe2d..b92639b80 100644 --- a/modules/client/back/models/client-credit.json +++ b/modules/client/back/models/client-credit.json @@ -1,36 +1,36 @@ { - "name": "ClientCredit", - "description": "Log of credit changes", - "base": "VnModel", - "options": { - "mysql": { - "table": "clientCredit" - } - }, - "validateUpsert": true, - "properties": { - "id": { - "type": "Number", - "id": true, - "description": "Identifier" + "name": "ClientCredit", + "description": "Log of credit changes", + "base": "VnModel", + "options": { + "mysql": { + "table": "clientCredit" + } }, - "amount": { - "type": "Number" + "validateUpsert": true, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "amount": { + "type": "number" + }, + "created": { + "type": "date" + } }, - "created": { - "type": "date" + "relations": { + "client": { + "type": "belongsTo", + "model": "Client", + "foreignKey": "clientFk" + }, + "worker": { + "type": "belongsTo", + "model": "Worker", + "foreignKey": "workerFk" + } } - }, - "relations": { - "client": { - "type": "belongsTo", - "model": "Client", - "foreignKey": "clientFk" - }, - "worker": { - "type": "belongsTo", - "model": "Worker", - "foreignKey": "workerFk" - } - } } \ No newline at end of file diff --git a/modules/client/back/models/client-dms.json b/modules/client/back/models/client-dms.json index 28ad21917..88b4349df 100644 --- a/modules/client/back/models/client-dms.json +++ b/modules/client/back/models/client-dms.json @@ -13,12 +13,12 @@ }, "properties": { "dmsFk": { - "type": "Number", + "type": "number", "id": true, "required": true }, "clientFk": { - "type": "Number", + "type": "number", "required": true } }, diff --git a/modules/client/back/models/client-log.json b/modules/client/back/models/client-log.json index 50c892e85..9c0933c0c 100644 --- a/modules/client/back/models/client-log.json +++ b/modules/client/back/models/client-log.json @@ -9,40 +9,40 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "forceId": false }, "originFk": { - "type": "Number", + "type": "number", "required": true }, "userFk": { - "type": "Number" + "type": "number" }, "action": { - "type": "String", + "type": "string", "required": true }, "changedModel": { - "type": "String" + "type": "string" }, "oldInstance": { - "type": "Object" + "type": "object" }, "newInstance": { - "type": "Object" + "type": "object" }, "creationDate": { - "type": "Date" + "type": "date" }, "changedModelId": { - "type": "Number" + "type": "number" }, "changedModelValue": { - "type": "String" + "type": "string" }, "description": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/modules/client/back/models/client-methods.js b/modules/client/back/models/client-methods.js new file mode 100644 index 000000000..5134e3942 --- /dev/null +++ b/modules/client/back/models/client-methods.js @@ -0,0 +1,51 @@ +module.exports = Self => { + require('../methods/client/addressesPropagateRe')(Self); + require('../methods/client/canBeInvoiced')(Self); + require('../methods/client/canCreateTicket')(Self); + require('../methods/client/checkDuplicated')(Self); + require('../methods/client/confirmTransaction')(Self); + require('../methods/client/consumption')(Self); + require('../methods/client/createAddress')(Self); + require('../methods/client/createReceipt')(Self); + require('../methods/client/createWithUser')(Self); + require('../methods/client/extendedListFilter')(Self); + require('../methods/client/getAverageInvoiced')(Self); + require('../methods/client/getCard')(Self); + require('../methods/client/getDebt')(Self); + require('../methods/client/getMana')(Self); + require('../methods/client/getTransactions')(Self); + require('../methods/client/hasCustomerRole')(Self); + require('../methods/client/isValidClient')(Self); + require('../methods/client/lastActiveTickets')(Self); + require('../methods/client/sendSms')(Self); + require('../methods/client/setPassword')(Self); + require('../methods/client/summary')(Self); + require('../methods/client/updateAddress')(Self); + require('../methods/client/updateFiscalData')(Self); + require('../methods/client/updatePortfolio')(Self); + require('../methods/client/updateUser')(Self); + require('../methods/client/uploadFile')(Self); + require('../methods/client/campaignMetricsPdf')(Self); + require('../methods/client/campaignMetricsEmail')(Self); + require('../methods/client/clientWelcomeHtml')(Self); + require('../methods/client/clientWelcomeEmail')(Self); + require('../methods/client/printerSetupHtml')(Self); + require('../methods/client/printerSetupEmail')(Self); + require('../methods/client/sepaCoreEmail')(Self); + require('../methods/client/letterDebtorPdf')(Self); + require('../methods/client/letterDebtorStHtml')(Self); + require('../methods/client/letterDebtorStEmail')(Self); + require('../methods/client/letterDebtorNdHtml')(Self); + require('../methods/client/letterDebtorNdEmail')(Self); + require('../methods/client/clientDebtStatementPdf')(Self); + require('../methods/client/clientDebtStatementHtml')(Self); + require('../methods/client/clientDebtStatementEmail')(Self); + require('../methods/client/creditRequestPdf')(Self); + require('../methods/client/creditRequestHtml')(Self); + require('../methods/client/creditRequestEmail')(Self); + require('../methods/client/incotermsAuthorizationPdf')(Self); + require('../methods/client/incotermsAuthorizationHtml')(Self); + require('../methods/client/incotermsAuthorizationEmail')(Self); + require('../methods/client/consumptionSendQueued')(Self); + require('../methods/client/filter')(Self); +}; diff --git a/modules/client/back/models/client-observation.json b/modules/client/back/models/client-observation.json index a9c7b483a..d3059377d 100644 --- a/modules/client/back/models/client-observation.json +++ b/modules/client/back/models/client-observation.json @@ -13,12 +13,12 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "clientFk": { - "type": "Number" + "type": "number" }, "text": { "type": "string", diff --git a/modules/client/back/models/client-risk.json b/modules/client/back/models/client-risk.json index f76483fca..eac36affb 100644 --- a/modules/client/back/models/client-risk.json +++ b/modules/client/back/models/client-risk.json @@ -2,22 +2,22 @@ "name": "ClientRisk", "base": "VnModel", "options": { - "mysql": { - "table": "clientRisk" - } + "mysql": { + "table": "clientRisk" + } }, "properties": { - "clientFk": { - "type": "Number", - "id": true - }, - "companyFk": { - "type": "Number", - "id": true - }, - "amount": { - "type": "Number" - } + "clientFk": { + "type": "number", + "id": true + }, + "companyFk": { + "type": "number", + "id": true + }, + "amount": { + "type": "number" + } }, "relations": { "client": { @@ -31,4 +31,4 @@ "foreignKey": "companyFk" } } - } \ No newline at end of file +} \ No newline at end of file diff --git a/modules/client/back/models/client-sample.js b/modules/client/back/models/client-sample.js index c7cda2412..787cc2ad8 100644 --- a/modules/client/back/models/client-sample.js +++ b/modules/client/back/models/client-sample.js @@ -1,4 +1,5 @@ const UserError = require('vn-loopback/util/user-error'); +const LoopBackContext = require('loopback-context'); module.exports = Self => { Self.validatesPresenceOf('typeFk', { @@ -6,10 +7,10 @@ module.exports = Self => { }); Self.observe('before save', async function(ctx) { - let models = Self.app.models; - let changes = ctx.data || ctx.instance; + const models = Self.app.models; + const changes = ctx.data || ctx.instance; - let sample = await models.Sample.findById(changes.typeFk); + const sample = await models.Sample.findById(changes.typeFk); if (sample.hasCompany && !changes.companyFk) throw new UserError('Choose a company'); @@ -25,11 +26,11 @@ module.exports = Self => { // Renew mandate if (mandate) { - let mandateType = await models.MandateType.findOne({ + const mandateType = await models.MandateType.findOne({ where: {name: mandate.type} }); - let oldMandate = await models.Mandate.findOne({ + const oldMandate = await models.Mandate.findOne({ where: { clientFk: changes.clientFk, companyFk: changes.companyFk, @@ -50,10 +51,8 @@ module.exports = Self => { }); } - // Apply workerFk - let filter = {where: {userFk: ctx.options.accessToken.userId}}; - let worker = await Self.app.models.Worker.findOne(filter); + const loopBackContext = LoopBackContext.getCurrentContext(); - changes.workerFk = worker.id; + changes.userFk = loopBackContext.active.accessToken.userId; }); }; diff --git a/modules/client/back/models/client-sample.json b/modules/client/back/models/client-sample.json index 812da8be8..fc64cd949 100644 --- a/modules/client/back/models/client-sample.json +++ b/modules/client/back/models/client-sample.json @@ -14,7 +14,7 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "created": { @@ -32,10 +32,10 @@ "model": "Sample", "foreignKey": "typeFk" }, - "worker": { + "user": { "type": "belongsTo", - "model": "Worker", - "foreignKey": "workerFk" + "model": "Account", + "foreignKey": "userFk" }, "account": { "type": "belongsTo", diff --git a/modules/client/back/models/client-type.json b/modules/client/back/models/client-type.json index a91cc38b6..eeae845eb 100644 --- a/modules/client/back/models/client-type.json +++ b/modules/client/back/models/client-type.json @@ -8,17 +8,17 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true }, "code": { - "type": "String" + "type": "string" }, "type": { - "type": "String" + "type": "string" }, "isCreatedAsServed": { - "type": "Number" + "type": "number" } } } \ No newline at end of file diff --git a/modules/client/back/models/client-unpaid.json b/modules/client/back/models/client-unpaid.json new file mode 100644 index 000000000..0fc3a9195 --- /dev/null +++ b/modules/client/back/models/client-unpaid.json @@ -0,0 +1,28 @@ +{ + "name": "ClientUnpaid", + "base": "VnModel", + "options": { + "mysql": { + "table": "clientUnpaid" + } + }, + "properties": { + "clientFk": { + "type": "number", + "id": true + }, + "dated": { + "type": "date" + }, + "amount": { + "type": "number" + } + }, + "relations": { + "client": { + "type": "belongsTo", + "model": "Client", + "foreignKey": "clientFk" + } + } +} \ No newline at end of file diff --git a/modules/client/back/models/client.js b/modules/client/back/models/client.js index e842c3ea1..e66cdb83f 100644 --- a/modules/client/back/models/client.js +++ b/modules/client/back/models/client.js @@ -1,4 +1,3 @@ -const got = require('got'); const UserError = require('vn-loopback/util/user-error'); const getFinalState = require('vn-loopback/util/hook').getFinalState; const isMultiple = require('vn-loopback/util/hook').isMultiple; @@ -8,27 +7,7 @@ const LoopBackContext = require('loopback-context'); module.exports = Self => { // Methods - require('../methods/client/getCard')(Self); - require('../methods/client/createWithUser')(Self); - require('../methods/client/hasCustomerRole')(Self); - require('../methods/client/canCreateTicket')(Self); - require('../methods/client/isValidClient')(Self); - require('../methods/client/addressesPropagateRe')(Self); - require('../methods/client/getDebt')(Self); - require('../methods/client/getMana')(Self); - require('../methods/client/getAverageInvoiced')(Self); - require('../methods/client/summary')(Self); - require('../methods/client/updateFiscalData')(Self); - require('../methods/client/getTransactions')(Self); - require('../methods/client/confirmTransaction')(Self); - require('../methods/client/canBeInvoiced')(Self); - require('../methods/client/uploadFile')(Self); - require('../methods/client/lastActiveTickets')(Self); - require('../methods/client/sendSms')(Self); - require('../methods/client/createAddress')(Self); - require('../methods/client/updateAddress')(Self); - require('../methods/client/consumption')(Self); - require('../methods/client/createReceipt')(Self); + require('./client-methods')(Self); // Validations @@ -44,10 +23,6 @@ module.exports = Self => { message: 'TIN must be unique' }); - Self.validatesUniquenessOf('socialName', { - message: 'The company name must be unique' - }); - Self.validatesFormatOf('email', { message: 'Invalid email', allowNull: true, @@ -61,17 +36,37 @@ module.exports = Self => { min: 3, max: 10 }); + Self.validateAsync('socialName', socialNameIsUnique, { + message: 'The company name must be unique' + }); + + async function socialNameIsUnique(err, done) { + const filter = { + where: { + and: [ + {socialName: this.socialName}, + {isActive: true}, + {id: {neq: this.id}} + ] + } + }; + const client = await Self.app.models.Client.findOne(filter); + if (client) + err(); + done(); + } + Self.validateAsync('iban', ibanNeedsValidation, { message: 'The IBAN does not have the correct format' }); async function ibanNeedsValidation(err, done) { - let filter = { + const filter = { fields: ['code'], where: {id: this.countryFk} }; - let country = await Self.app.models.Country.findOne(filter); - let code = country ? country.code.toLowerCase() : null; + const country = await Self.app.models.Country.findOne(filter); + const code = country ? country.code.toLowerCase() : null; if (code != 'es') return done(); @@ -88,12 +83,12 @@ module.exports = Self => { if (!this.isTaxDataChecked) return done(); - let filter = { + const filter = { fields: ['code'], where: {id: this.countryFk} }; - let country = await Self.app.models.Country.findOne(filter); - let code = country ? country.code.toLowerCase() : null; + const country = await Self.app.models.Country.findOne(filter); + const code = country ? country.code.toLowerCase() : null; if (!this.fi || !validateTin(this.fi, code)) err(); @@ -116,8 +111,8 @@ module.exports = Self => { function cannotHaveET(err) { if (!this.fi) return; - let tin = this.fi.toUpperCase(); - let cannotHaveET = /^[A-B]/.test(tin); + const tin = this.fi.toUpperCase(); + const cannotHaveET = /^[A-B]/.test(tin); if (cannotHaveET && this.isEqualizated) err(); @@ -206,6 +201,33 @@ module.exports = Self => { throw new UserError(`The type of business must be filled in basic data`); }); + Self.observe('before save', async ctx => { + const changes = ctx.data || ctx.instance; + const orgData = ctx.currentInstance; + const models = Self.app.models; + + const loopBackContext = LoopBackContext.getCurrentContext(); + const userId = loopBackContext.active.accessToken.userId; + + const isSalesAssistant = await models.Account.hasRole(userId, 'salesAssistant', ctx.options); + const hasChanges = orgData && changes; + + const isTaxDataChecked = hasChanges && (changes.isTaxDataChecked || orgData.isTaxDataChecked); + const isTaxDataCheckedChanged = hasChanges && orgData.isTaxDataChecked != isTaxDataChecked; + + const sageTaxType = hasChanges && (changes.sageTaxTypeFk || orgData.sageTaxTypeFk); + const sageTaxTypeChanged = hasChanges && orgData.sageTaxTypeFk != sageTaxType; + + const sageTransactionType = hasChanges && (changes.sageTransactionTypeFk || orgData.sageTransactionTypeFk); + const sageTransactionTypeChanged = hasChanges && orgData.sageTransactionTypeFk != sageTransactionType; + + const cantEditVerifiedData = isTaxDataCheckedChanged && !isSalesAssistant; + const cantChangeSageData = (sageTaxTypeChanged || sageTransactionTypeChanged) && !isSalesAssistant; + + if (cantEditVerifiedData || cantChangeSageData) + throw new UserError(`You don't have enough privileges`); + }); + Self.observe('before save', async function(ctx) { const changes = ctx.data || ctx.instance; const orgData = ctx.currentInstance; @@ -219,10 +241,10 @@ module.exports = Self => { const socialNameChanged = hasChanges && orgData.socialName != socialName; - const dataCheckedChanged = hasChanges + const isTaxDataCheckedChanged = hasChanges && orgData.isTaxDataChecked != isTaxDataChecked; - if ((socialNameChanged || dataCheckedChanged) && !isAlpha(socialName)) + if ((socialNameChanged || isTaxDataCheckedChanged) && !isAlpha(socialName)) throw new UserError(`The social name has an invalid format`); if (changes.salesPerson === null) { @@ -269,23 +291,22 @@ module.exports = Self => { const $t = httpRequest.__; const headers = httpRequest.headers; const origin = headers.origin; - const authorization = headers.authorization; const salesPersonId = instance.salesPersonFk; if (salesPersonId) { // Send email to client if (instance.email) { + const {Email} = require('vn-print'); const worker = await models.EmailUser.findById(salesPersonId); const params = { - authorization: authorization, + id: instance.id, recipientId: instance.id, recipient: instance.email, replyTo: worker.email }; - await got.get(`${origin}/api/email/payment-update`, { - searchParams: params - }); + const email = new Email('payment-update', params); + await email.send(); } const fullUrl = `${origin}/#!/client/${instance.id}/billing-data`; @@ -354,8 +375,8 @@ module.exports = Self => { const models = Self.app.models; const userId = ctx.options.accessToken.userId; - const isManager = await models.Account.hasRole(userId, 'manager', ctx.options); - if (!isManager) { + const isFinancialBoss = await models.Account.hasRole(userId, 'financialBoss', ctx.options); + if (!isFinancialBoss) { const lastCredit = await models.ClientCredit.findOne({ where: { clientFk: finalState.id @@ -365,10 +386,10 @@ module.exports = Self => { const lastAmount = lastCredit && lastCredit.amount; const lastWorkerId = lastCredit && lastCredit.workerFk; - const lastWorkerIsManager = await models.Account.hasRole(lastWorkerId, 'manager', ctx.options); + const lastWorkerIsFinancialBoss = await models.Account.hasRole(lastWorkerId, 'financialBoss', ctx.options); - if (lastAmount == 0 && lastWorkerIsManager) - throw new UserError(`You can't change the credit set to zero from a manager`); + if (lastAmount == 0 && lastWorkerIsFinancialBoss) + throw new UserError(`You can't change the credit set to zero from a financialBoss`); const creditLimits = await models.ClientCreditLimit.find({ fields: ['roleFk'], @@ -400,30 +421,39 @@ module.exports = Self => { const app = require('vn-loopback/server/server'); app.on('started', function() { - let account = app.models.Account; + const account = app.models.Account; account.observe('before save', async ctx => { if (ctx.isNewInstance) return; - ctx.hookState.oldInstance = JSON.parse(JSON.stringify(ctx.currentInstance)); + if (ctx.currentInstance) + ctx.hookState.oldInstance = JSON.parse(JSON.stringify(ctx.currentInstance)); }); account.observe('after save', async ctx => { - let changes = ctx.data || ctx.instance; + const changes = ctx.data || ctx.instance; if (!ctx.isNewInstance && changes) { - let oldData = ctx.hookState.oldInstance; - let hasChanges = oldData.name != changes.name || oldData.active != changes.active; + const oldData = ctx.hookState.oldInstance; + let hasChanges; + + if (oldData) + hasChanges = oldData.name != changes.name || oldData.active != changes.active; + if (!hasChanges) return; - let userId = ctx.options.accessToken.userId; - let logRecord = { - originFk: oldData.id, - userFk: userId, - action: 'update', - changedModel: 'Account', - oldInstance: {name: oldData.name, active: oldData.active}, - newInstance: {name: changes.name, active: changes.active} - }; - await Self.app.models.ClientLog.create(logRecord); + const isClient = await Self.app.models.Client.count({id: oldData.id}); + if (isClient) { + const loopBackContext = LoopBackContext.getCurrentContext(); + const userId = loopBackContext.active.accessToken.userId; + const logRecord = { + originFk: oldData.id, + userFk: userId, + action: 'update', + changedModel: 'Account', + oldInstance: {name: oldData.name, active: oldData.active}, + newInstance: {name: changes.name, active: changes.active} + }; + await Self.app.models.ClientLog.create(logRecord); + } } }); }); diff --git a/modules/client/back/models/client.json b/modules/client/back/models/client.json index d6a98d83c..d383ae907 100644 --- a/modules/client/back/models/client.json +++ b/modules/client/back/models/client.json @@ -12,7 +12,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, @@ -55,16 +55,16 @@ "type": "boolean" }, "credit": { - "type": "Number" + "type": "number" }, "creditInsurance": { - "type": "Number" + "type": "number" }, "iban": { "type": "string" }, "dueDay": { - "type": "Number" + "type": "number" }, "isEqualizated": { "type": "boolean", @@ -98,6 +98,9 @@ "hasCoreVnh": { "type": "boolean" }, + "hasIncoterms": { + "type": "boolean" + }, "isTaxDataChecked":{ "type": "boolean" }, @@ -105,7 +108,7 @@ "type": "boolean" }, "quality": { - "type": "Number" + "type": "number" }, "isVies": { "type": "boolean" @@ -117,7 +120,7 @@ "type": "string" }, "created": { - "type": "Date" + "type": "date" }, "sageTaxTypeFk": { "type": "number", @@ -136,6 +139,9 @@ "mysql": { "columnName": "businessTypeFk" } + }, + "salesPersonFk": { + "type": "number" } }, "relations": { @@ -228,7 +234,13 @@ "type": "belongsTo", "model": "Client", "foreignKey": "transferorFk" - } + }, + "supplier": { + "type": "belongsTo", + "model": "Supplier", + "foreignKey": "fi", + "primaryKey": "nif" + } }, "scopes": { "isActive": { diff --git a/modules/client/back/models/contact-channel.json b/modules/client/back/models/contact-channel.json index 3a5de2140..75151b9f9 100644 --- a/modules/client/back/models/contact-channel.json +++ b/modules/client/back/models/contact-channel.json @@ -1,20 +1,20 @@ { - "name": "ContactChannel", - "base": "VnModel", - "options": { - "mysql": { - "table": "contactChannel" - } - }, - "properties": { - "id": { - "type": "Number", - "id": true, - "description": "Identifier" + "name": "ContactChannel", + "base": "VnModel", + "options": { + "mysql": { + "table": "contactChannel" + } }, - "name": { - "type": "string", - "required": true + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "name": { + "type": "string", + "required": true + } } - } } \ No newline at end of file diff --git a/modules/client/back/models/credit-classification.json b/modules/client/back/models/credit-classification.json index 2e636af63..c38d5cd45 100644 --- a/modules/client/back/models/credit-classification.json +++ b/modules/client/back/models/credit-classification.json @@ -1,42 +1,42 @@ { - "name": "CreditClassification", - "description": "Clasified clients", - "base": "VnModel", - "options": { - "mysql": { - "table": "creditClassification" - } - }, - "properties": { - "id": { - "id": true, - "type": "Number", - "description": "Identifier" + "name": "CreditClassification", + "description": "Clasified clients", + "base": "VnModel", + "options": { + "mysql": { + "table": "creditClassification" + } }, - "started": { - "type": "date", - "required": true, - "mysql": { - "columnName": "dateStart" - } + "properties": { + "id": { + "id": true, + "type": "number", + "description": "Identifier" + }, + "started": { + "type": "date", + "required": true, + "mysql": { + "columnName": "dateStart" + } + }, + "finished": { + "type": "date", + "mysql": { + "columnName": "dateEnd" + } + } }, - "finished": { - "type": "date", - "mysql": { - "columnName": "dateEnd" - } + "relations": { + "customer": { + "type": "belongsTo", + "model": "Client", + "foreignKey": "client" + }, + "insurances": { + "type": "hasMany", + "model": "CreditInsurance", + "foreignKey": "creditClassificationFk" + } } - }, - "relations": { - "customer": { - "type": "belongsTo", - "model": "Client", - "foreignKey": "client" - }, - "insurances": { - "type": "hasMany", - "model": "CreditInsurance", - "foreignKey": "creditClassification" - } - } -} +} \ No newline at end of file diff --git a/modules/client/back/models/credit-insurance.js b/modules/client/back/models/credit-insurance.js index a2e8091e1..6f656d382 100644 --- a/modules/client/back/models/credit-insurance.js +++ b/modules/client/back/models/credit-insurance.js @@ -24,7 +24,7 @@ module.exports = function(Self) { let filter = { fields: ['grade'], where: { - creditClassification: this.creditClassification + creditClassificationFk: this.creditClassificationFk }, order: 'created DESC' }; diff --git a/modules/client/back/models/credit-insurance.json b/modules/client/back/models/credit-insurance.json index 6a9d04677..08b2e3d60 100644 --- a/modules/client/back/models/credit-insurance.json +++ b/modules/client/back/models/credit-insurance.json @@ -10,11 +10,11 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "credit": { - "type": "Number" + "type": "number" }, "created": { "type": "date", @@ -23,14 +23,14 @@ } }, "grade": { - "type": "Number" + "type": "number" } }, "relations": { "classification": { "type": "belongsTo", "model": "CreditClassification", - "foreignKey": "creditClassification" + "foreignKey": "creditClassificationFk" } }, "scope": { diff --git a/modules/client/back/models/customs-agent.json b/modules/client/back/models/customs-agent.json index f72d7bf28..3a2e0258f 100644 --- a/modules/client/back/models/customs-agent.json +++ b/modules/client/back/models/customs-agent.json @@ -8,26 +8,26 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "description": "Identifier", "id": true }, "fiscalName": { - "type": "String", + "type": "string", "required": true }, "street": { - "type": "String" + "type": "string" }, "nif": { - "type": "String", + "type": "string", "required": true }, "phone": { - "type": "String" + "type": "string" }, "email": { - "type": "String" + "type": "string" } } } \ No newline at end of file diff --git a/modules/client/back/models/defaulter.json b/modules/client/back/models/defaulter.json index 829326435..ddff1d214 100644 --- a/modules/client/back/models/defaulter.json +++ b/modules/client/back/models/defaulter.json @@ -9,19 +9,19 @@ }, "properties": { "id": { - "type": "Number" + "type": "number" }, "created": { - "type": "Date" + "type": "date" }, "amount": { - "type": "Number" + "type": "number" }, "defaulterSinced": { - "type": "Number" + "type": "number" }, "hasChanged": { - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/client/back/models/greuge-config.json b/modules/client/back/models/greuge-config.json index b72348023..1ba66668d 100644 --- a/modules/client/back/models/greuge-config.json +++ b/modules/client/back/models/greuge-config.json @@ -8,7 +8,7 @@ }, "properties": { "freightPickUpPrice": { - "type": "Number" + "type": "number" } }, "acls": [{ diff --git a/modules/client/back/models/greuge-type.json b/modules/client/back/models/greuge-type.json index 5c5b1870d..36b14e147 100644 --- a/modules/client/back/models/greuge-type.json +++ b/modules/client/back/models/greuge-type.json @@ -9,14 +9,14 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "name": { - "type": "String" + "type": "string" }, "code": { - "type": "String" + "type": "string" } }, "acls": [ diff --git a/modules/client/back/models/greuge.json b/modules/client/back/models/greuge.json index 2abc33f7c..918ff0ca5 100644 --- a/modules/client/back/models/greuge.json +++ b/modules/client/back/models/greuge.json @@ -14,15 +14,15 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "description": { - "type": "String", + "type": "string", "required": true }, "amount": { - "type": "Number", + "type": "number", "required": true }, "shipped": { @@ -32,7 +32,7 @@ "type": "date" }, "greugeTypeFk": { - "type": "Number", + "type": "number", "required": true } diff --git a/modules/client/back/models/incoterms.json b/modules/client/back/models/incoterms.json index 915a5b59a..fdf743c14 100644 --- a/modules/client/back/models/incoterms.json +++ b/modules/client/back/models/incoterms.json @@ -8,12 +8,12 @@ }, "properties": { "code": { - "type": "String", + "type": "string", "description": "Identifier", "id": true }, "name": { - "type": "String" + "type": "string" } }, "acls": [ diff --git a/modules/client/back/models/mandate-type.json b/modules/client/back/models/mandate-type.json index 8bd46ce19..ec189f089 100644 --- a/modules/client/back/models/mandate-type.json +++ b/modules/client/back/models/mandate-type.json @@ -9,11 +9,11 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "name": { - "type": "String" + "type": "string" } } } \ No newline at end of file diff --git a/modules/client/back/models/mandate.json b/modules/client/back/models/mandate.json index a671c45f1..914b23ce2 100644 --- a/modules/client/back/models/mandate.json +++ b/modules/client/back/models/mandate.json @@ -9,11 +9,11 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "code": { - "type": "String" + "type": "string" }, "created": { "type": "date" diff --git a/modules/client/back/models/observation-type.json b/modules/client/back/models/observation-type.json index 5a7bdcfdd..474c5faac 100644 --- a/modules/client/back/models/observation-type.json +++ b/modules/client/back/models/observation-type.json @@ -9,15 +9,15 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "description": { - "type": "String", + "type": "string", "required": true }, "code": { - "type": "String", + "type": "string", "required": true } }, diff --git a/modules/client/back/models/pay-method.json b/modules/client/back/models/pay-method.json index 4080a0953..c83c21e2f 100644 --- a/modules/client/back/models/pay-method.json +++ b/modules/client/back/models/pay-method.json @@ -8,7 +8,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, @@ -23,7 +23,7 @@ "type": "string" }, "outstandingDebt": { - "type": "Number" + "type": "number" }, "isIbanRequiredForClients": { "type": "boolean" diff --git a/modules/client/back/models/receipt.js b/modules/client/back/models/receipt.js index 36a4a8952..3118cc239 100644 --- a/modules/client/back/models/receipt.js +++ b/modules/client/back/models/receipt.js @@ -2,6 +2,9 @@ const LoopBackContext = require('loopback-context'); module.exports = function(Self) { require('../methods/receipt/filter')(Self); + require('../methods/receipt/balanceCompensationEmail')(Self); + require('../methods/receipt/balanceCompensationPdf')(Self); + require('../methods/receipt/receiptPdf')(Self); Self.validateBinded('amountPaid', isNotZero, { message: 'Amount cannot be zero', diff --git a/modules/client/back/models/recovery.json b/modules/client/back/models/recovery.json index 5a26cd842..de4183924 100644 --- a/modules/client/back/models/recovery.json +++ b/modules/client/back/models/recovery.json @@ -2,40 +2,40 @@ "name": "Recovery", "base": "Loggable", "log": { - "model": "ClientLog", - "relation": "client" + "model": "ClientLog", + "relation": "client" }, "options": { - "mysql": { - "table": "recovery" - } + "mysql": { + "table": "recovery" + } }, "properties": { - "id": { - "id": true, - "type": "Number", - "description": "Identifier" - }, - "started": { - "type": "date", - "required": true - }, - "finished": { - "type": "date" - }, - "amount": { - "type": "Number", - "required": true - }, - "period": { - "type": "Number" - } + "id": { + "id": true, + "type": "number", + "description": "Identifier" + }, + "started": { + "type": "date", + "required": true + }, + "finished": { + "type": "date" + }, + "amount": { + "type": "number", + "required": true + }, + "period": { + "type": "number" + } }, "relations": { - "client": { - "type": "belongsTo", - "model": "Client", - "foreignKey": "clientFk" - } + "client": { + "type": "belongsTo", + "model": "Client", + "foreignKey": "clientFk" + } } - } \ No newline at end of file +} \ No newline at end of file diff --git a/modules/client/back/models/sage-tax-type.json b/modules/client/back/models/sage-tax-type.json index b60ef20cd..97af7353c 100644 --- a/modules/client/back/models/sage-tax-type.json +++ b/modules/client/back/models/sage-tax-type.json @@ -8,7 +8,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier", "mysql": { diff --git a/modules/client/back/models/sage-transaction-type.json b/modules/client/back/models/sage-transaction-type.json index dbe8f3b39..1903c650c 100644 --- a/modules/client/back/models/sage-transaction-type.json +++ b/modules/client/back/models/sage-transaction-type.json @@ -8,7 +8,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier", "mysql": { diff --git a/modules/client/back/models/sample.json b/modules/client/back/models/sample.json index cfb127ab2..011e8bf24 100644 --- a/modules/client/back/models/sample.json +++ b/modules/client/back/models/sample.json @@ -29,6 +29,9 @@ }, "datepickerEnabled": { "type": "boolean" + }, + "model": { + "type": "string" } }, "scopes": { diff --git a/modules/client/back/models/sms-config.json b/modules/client/back/models/sms-config.json index f48c6198d..ba78e4a8d 100644 --- a/modules/client/back/models/sms-config.json +++ b/modules/client/back/models/sms-config.json @@ -9,18 +9,18 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "uri": { - "type": "String" + "type": "string" }, "apiKey": { - "type": "String" + "type": "string" }, "title": { - "type": "String" + "type": "string" } } } diff --git a/modules/client/back/models/sms.json b/modules/client/back/models/sms.json index e6e6ff64c..29438fc67 100644 --- a/modules/client/back/models/sms.json +++ b/modules/client/back/models/sms.json @@ -9,30 +9,30 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "sender": { - "type": "String", + "type": "string", "required": true }, "destination": { - "type": "String", + "type": "string", "required": true }, "message": { - "type": "String", + "type": "string", "required": true }, "statusCode": { - "type": "Number" + "type": "number" }, "status": { - "type": "String" + "type": "string" }, "created": { - "type": "Date" + "type": "date" } }, "relations": { diff --git a/modules/client/back/models/specs/address.spec.js b/modules/client/back/models/specs/address.spec.js index cae18258f..f0b421d35 100644 --- a/modules/client/back/models/specs/address.spec.js +++ b/modules/client/back/models/specs/address.spec.js @@ -1,20 +1,36 @@ -const app = require('vn-loopback/server/server'); +const models = require('vn-loopback/server/server').models; +const LoopBackContext = require('loopback-context'); describe('loopback model address', () => { let createdAddressId; const clientId = 1101; - afterAll(async() => { - let client = await app.models.Client.findById(clientId); + const activeCtx = { + accessToken: {userId: 9}, + http: { + req: { + headers: {origin: 'http://localhost'} + } + } + }; - await app.models.Address.destroyById(createdAddressId); + beforeAll(() => { + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + }); + + afterAll(async() => { + const client = await models.Client.findById(clientId); + + await models.Address.destroyById(createdAddressId); await client.updateAttribute('isEqualizated', false); }); describe('observe()', () => { it('should throw an error when deactivating a consignee if its the default address', async() => { let error; - let address = await app.models.Address.findById(1); + const address = await models.Address.findById(1); await address.updateAttribute('isActive', false) .catch(e => { @@ -27,13 +43,13 @@ describe('loopback model address', () => { }); it('should set isEqualizated to true of a given Client to trigger any new address to have it', async() => { - let client = await app.models.Client.findById(clientId); + const client = await models.Client.findById(clientId); expect(client.isEqualizated).toBeFalsy(); await client.updateAttribute('isEqualizated', true); - let newAddress = await app.models.Address.create({ + const newAddress = await models.Address.create({ clientFk: clientId, agencyModeFk: 5, city: 'here', diff --git a/modules/client/back/models/specs/client.spec.js b/modules/client/back/models/specs/client.spec.js index d1a6d77cb..1f7e56cdb 100644 --- a/modules/client/back/models/specs/client.spec.js +++ b/modules/client/back/models/specs/client.spec.js @@ -53,7 +53,7 @@ describe('Client Model', () => { }); describe('changeCredit()', () => { - it('should fail to change the credit as a salesAssistant set to zero by a manager', async() => { + it('should fail to change the credit as a salesAssistant set to zero by a financialBoss', async() => { const tx = await models.Client.beginTransaction({}); let error; @@ -62,7 +62,7 @@ describe('Client Model', () => { const options = {transaction: tx}; const context = {options}; - // Set credit to zero by a manager + // Set credit to zero by a financialBoss const financialBoss = await models.Account.findOne({ where: {name: 'financialBoss'} }, options); @@ -83,7 +83,7 @@ describe('Client Model', () => { await tx.rollback(); } - expect(error.message).toEqual(`You can't change the credit set to zero from a manager`); + expect(error.message).toEqual(`You can't change the credit set to zero from a financialBoss`); }); it('should fail to change to a high credit amount as a salesAssistant', async() => { diff --git a/modules/client/back/models/specs/clientCredit.spec.js b/modules/client/back/models/specs/clientCredit.spec.js new file mode 100644 index 000000000..fcd86c979 --- /dev/null +++ b/modules/client/back/models/specs/clientCredit.spec.js @@ -0,0 +1,53 @@ +const models = require('vn-loopback/server/server').models; + +describe('Client Credit', () => { + const instance = {id: 1101, name: 'Bruce Banner'}; + + describe('after save', () => { + it('should delete old rows of clientCredit', async() => { + const tx = await models.ClientCredit.beginTransaction({}); + const clientConfig = await models.ClientConfig.findOne({ + where: {id: 1} + }); + + let rowsBefore; + let rowsAfter; + + try { + const options = {transaction: tx}; + const salesAssistant = await models.Account.findOne({ + where: {name: 'salesAssistant'} + }, options); + + rowsBefore = await models.ClientCredit.find({ + where: {clientFk: instance.id}, + order: 'created DESC', + }, options); + + await models.ClientCredit.create({ + amount: 355, + clientFk: instance.id, + workerFk: salesAssistant.id + }, options); + + rowsAfter = await models.ClientCredit.find({ + where: {clientFk: instance.id}, + order: 'created DESC', + }, options); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + + const FirstRowsBefore = rowsBefore[0]; + const FirstRowsAfter = rowsAfter[0]; + + expect(FirstRowsAfter.id).toBeGreaterThan(FirstRowsBefore.id); + + expect(rowsBefore.length).toBeGreaterThanOrEqual(clientConfig.maxCreditRows); + expect(rowsAfter.length).toEqual(clientConfig.maxCreditRows); + }); + }); +}); diff --git a/modules/client/back/models/tpv-error.json b/modules/client/back/models/tpv-error.json index 61e2a7156..d62203f40 100644 --- a/modules/client/back/models/tpv-error.json +++ b/modules/client/back/models/tpv-error.json @@ -8,7 +8,7 @@ }, "properties": { "code": { - "type": "String", + "type": "string", "id": true, "description": "Identifier" }, diff --git a/modules/client/back/models/tpv-merchant.json b/modules/client/back/models/tpv-merchant.json index db5c937d8..d4dba6cb1 100644 --- a/modules/client/back/models/tpv-merchant.json +++ b/modules/client/back/models/tpv-merchant.json @@ -8,7 +8,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, diff --git a/modules/client/back/models/tpv-response.json b/modules/client/back/models/tpv-response.json index d3a382b5f..674ba434c 100644 --- a/modules/client/back/models/tpv-response.json +++ b/modules/client/back/models/tpv-response.json @@ -8,7 +8,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, diff --git a/modules/client/back/models/tpv-transaction.json b/modules/client/back/models/tpv-transaction.json index 011616d98..2d926cc40 100644 --- a/modules/client/back/models/tpv-transaction.json +++ b/modules/client/back/models/tpv-transaction.json @@ -8,33 +8,33 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "merchantFk": { - "type": "Number" + "type": "number" }, "clientFk": { - "type": "Number" + "type": "number" }, "receiptFk": { - "type": "Number" + "type": "number" }, "amount": { - "type": "Number" + "type": "number" }, "response": { - "type": "Number" + "type": "number" }, "errorCode": { - "type": "String" + "type": "string" }, "status": { - "type": "String" + "type": "string" }, "created": { - "type": "Date" + "type": "date" } }, "relations": { diff --git a/modules/client/front/address/edit/index.html b/modules/client/front/address/edit/index.html index 83f251de5..1f0b7d30a 100644 --- a/modules/client/front/address/edit/index.html +++ b/modules/client/front/address/edit/index.html @@ -38,7 +38,13 @@ label="Is equalizated" ng-model="$ctrl.address.isEqualizated" vn-acl="administrative, salesAssistant"> - + + + + + this.vnApp.showSuccess(this.$t('Data saved!'))) .then(() => { - if (this.viewReceipt) { - this.vnReport.show('receipt', { - receiptId: receiptId, - companyId: this.companyFk - }); - } + if (this.viewReceipt) + this.vnReport.show(`Receipts/${receiptId}/receipt-pdf`); }); } diff --git a/modules/client/front/balance/create/index.spec.js b/modules/client/front/balance/create/index.spec.js index 77fe32e0f..fa6b48ea4 100644 --- a/modules/client/front/balance/create/index.spec.js +++ b/modules/client/front/balance/create/index.spec.js @@ -85,6 +85,8 @@ describe('Client', () => { }); it('should make an http POST query and then call to the report show() method', () => { + const receiptId = 1; + jest.spyOn(controller.vnApp, 'showSuccess'); jest.spyOn(controller.vnReport, 'show'); window.open = jest.fn(); @@ -92,14 +94,12 @@ describe('Client', () => { controller.$params = {id: 1101}; controller.viewReceipt = true; - $httpBackend.expect('POST', `Clients/1101/createReceipt`).respond({id: 1}); + $httpBackend.expect('POST', `Clients/1101/createReceipt`).respond({id: receiptId}); controller.responseHandler('accept'); $httpBackend.flush(); - const expectedParams = {receiptId: 1, companyId: 442}; - expect(controller.vnApp.showSuccess).toHaveBeenCalled(); - expect(controller.vnReport.show).toHaveBeenCalledWith('receipt', expectedParams); + expect(controller.vnReport.show).toHaveBeenCalledWith(`Receipts/${receiptId}/receipt-pdf`); }); }); diff --git a/modules/client/front/balance/index/index.html b/modules/client/front/balance/index/index.html index 3c61d8543..1e0716112 100644 --- a/modules/client/front/balance/index/index.html +++ b/modules/client/front/balance/index/index.html @@ -121,9 +121,22 @@ - - - + + + + + + + + + diff --git a/modules/client/front/balance/index/index.js b/modules/client/front/balance/index/index.js index 7e09e018c..b2529924f 100644 --- a/modules/client/front/balance/index/index.js +++ b/modules/client/front/balance/index/index.js @@ -2,8 +2,9 @@ import ngModule from '../../module'; import Section from 'salix/components/section'; class Controller extends Section { - constructor($element, $) { + constructor($element, $, vnEmail) { super($element, $); + this.vnEmail = vnEmail; this.filter = { include: { relation: 'company', @@ -54,45 +55,49 @@ class Controller extends Section { } })).then(() => this.getBalances()); } - + getCurrentBalance() { const clientRisks = this.$.riskModel.data; const selectedCompany = this.companyId; const currentBalance = clientRisks.find(balance => { return balance.companyFk === selectedCompany; }); - + return currentBalance && currentBalance.amount; } - + getBalances() { const balances = this.$.model.data; balances.forEach((balance, index) => { if (index === 0) - balance.balance = this.getCurrentBalance(); + balance.balance = this.getCurrentBalance(); if (index > 0) { let previousBalance = balances[index - 1]; balance.balance = previousBalance.balance - (previousBalance.debit - previousBalance.credit); } }); } - + showInvoiceOutDescriptor(event, balance) { if (!balance.isInvoice) return; if (event.defaultPrevented) return; - + this.$.invoiceOutDescriptor.show(event.target, balance.id); } - + changeDescription(balance) { const params = {description: balance.description}; const endpoint = `Receipts/${balance.id}`; this.$http.patch(endpoint, params) - .then(() => this.vnApp.showSuccess(this.$t('Data saved!'))); + .then(() => this.vnApp.showSuccess(this.$t('Data saved!'))); + } + + sendEmail(balance) { + return this.vnEmail.send(`Receipts/${balance.id}/balance-compensation-email`); } } -Controller.$inject = ['$element', '$scope']; +Controller.$inject = ['$element', '$scope', 'vnEmail']; ngModule.vnComponent('vnClientBalanceIndex', { template: require('./index.html'), diff --git a/modules/client/front/balance/index/locale/es.yml b/modules/client/front/balance/index/locale/es.yml index 05ef7070a..de710869e 100644 --- a/modules/client/front/balance/index/locale/es.yml +++ b/modules/client/front/balance/index/locale/es.yml @@ -8,4 +8,6 @@ Havings: Haber Balance: Balance Total by company: Total por empresa Download PDF: Descargar PDF -BILL: N/FRA {{ref}} \ No newline at end of file +Send compensation: Enviar compensación +BILL: N/FRA {{ref}} +Notify compensation: ¿Desea informar de la compensación al cliente por correo? \ No newline at end of file diff --git a/modules/client/front/basic-data/index.html b/modules/client/front/basic-data/index.html index a76b448f2..a5c866979 100644 --- a/modules/client/front/basic-data/index.html +++ b/modules/client/front/basic-data/index.html @@ -10,7 +10,7 @@ url="ContactChannels" data="contactChannels"> -
+ { + const query = `Clients/updatePortfolio`; + this.$http.get(query); + this.$http.get(`Clients/${this.$params.id}/checkDuplicatedData`); + }); + } } ngModule.vnComponent('vnClientBasicData', { diff --git a/modules/client/front/billing-data/index.html b/modules/client/front/billing-data/index.html index 06d7d7d73..410681930 100644 --- a/modules/client/front/billing-data/index.html +++ b/modules/client/front/billing-data/index.html @@ -16,7 +16,7 @@ @@ -39,7 +39,7 @@ ng-model="$ctrl.client.iban" rule on-change="$ctrl.autofillBic()" - vn-acl="salesAssistant"> + vn-acl="salesAssistant, hr"> - - - {{bic}} - -
{{name}}
-
-
-
+ {{bic}} {{name}} + vn-acl="salesAssistant, hr">
@@ -78,19 +71,19 @@ vn-one label="Received LCR" ng-model="$ctrl.client.hasLcr" - vn-acl="salesAssistant"> + vn-acl="salesAssistant, hr"> + vn-acl="salesAssistant, hr"> + vn-acl="salesAssistant, hr">
diff --git a/modules/client/front/consumption/index.js b/modules/client/front/consumption/index.js index 7017fed41..d9b657318 100644 --- a/modules/client/front/consumption/index.js +++ b/modules/client/front/consumption/index.js @@ -45,11 +45,13 @@ class Controller extends Section { } showReport() { - this.vnReport.show('campaign-metrics', this.reportParams); + const path = `Clients/${this.client.id}/campaign-metrics-pdf`; + this.vnReport.show(path, this.reportParams); } sendEmail() { - this.vnEmail.send('campaign-metrics', this.reportParams); + const path = `Clients/${this.client.id}/campaign-metrics-email`; + this.vnEmail.send(path, this.reportParams); } changeGrouped(value) { diff --git a/modules/client/front/consumption/index.spec.js b/modules/client/front/consumption/index.spec.js index 16b764b56..33cbce58f 100644 --- a/modules/client/front/consumption/index.spec.js +++ b/modules/client/front/consumption/index.spec.js @@ -34,15 +34,16 @@ describe('Client', () => { controller.showReport(); + const clientId = controller.client.id; const expectedParams = { - recipientId: 1101, + recipientId: clientId, from: now, to: now }; const serializedParams = $httpParamSerializer(expectedParams); - const path = `api/report/campaign-metrics?${serializedParams}`; + const expectedPath = `api/Clients/${clientId}/campaign-metrics-pdf?${serializedParams}`; - expect(window.open).toHaveBeenCalledWith(path); + expect(window.open).toHaveBeenCalledWith(expectedPath); }); }); @@ -53,16 +54,10 @@ describe('Client', () => { from: now, to: now }; - const expectedParams = { - recipientId: 1101, - from: now, - to: now - }; + const clientId = controller.client.id; + const expectedPath = `Clients/${clientId}/campaign-metrics-email`; - const serializedParams = $httpParamSerializer(expectedParams); - const path = `email/campaign-metrics?${serializedParams}`; - - $httpBackend.expect('GET', path).respond({}); + $httpBackend.expect('POST', expectedPath).respond({}); controller.sendEmail(); $httpBackend.flush(); }); diff --git a/modules/client/front/create/index.js b/modules/client/front/create/index.js index 1aa21c91e..9ca58ed10 100644 --- a/modules/client/front/create/index.js +++ b/modules/client/front/create/index.js @@ -10,9 +10,10 @@ export default class Controller extends Section { } onSubmit() { - return this.$.watcher.submit().then( - json => this.$state.go('client.card.basicData', {id: json.data.id}) - ); + return this.$.watcher.submit().then(json => { + this.$state.go('client.card.basicData', {id: json.data.id}); + this.$http.get(`Clients/${this.client.id}/checkDuplicatedData`); + }); } get province() { diff --git a/modules/client/front/credit-insurance/insurance/index/index.html b/modules/client/front/credit-insurance/insurance/index/index.html index 69f1830cb..a3a4478bc 100644 --- a/modules/client/front/credit-insurance/insurance/index/index.html +++ b/modules/client/front/credit-insurance/insurance/index/index.html @@ -1,7 +1,7 @@ diff --git a/modules/client/front/defaulter/index.html b/modules/client/front/defaulter/index.html index 121556df2..22b78594a 100644 --- a/modules/client/front/defaulter/index.html +++ b/modules/client/front/defaulter/index.html @@ -3,6 +3,7 @@ url="Defaulters/filter" filter="::$ctrl.filter" limit="20" + order="amount DESC" data="defaulters" auto-load="true"> @@ -15,17 +16,18 @@ model="model"> - - - -
+ + + +
Total
+ value="{{$ctrl.balanceDueTotal | currency: 'EUR': 2}}">
@@ -38,90 +40,109 @@ icon="icon-notes">
-
- - - - - - - - Client - Comercial - - Balance D. - - - Author - - Last observation - - Credit I. - - From - - - - - - - - - - - {{::defaulter.clientName}} - - - - - {{::defaulter.salesPersonName | dashIfEmpty}} - - - {{::defaulter.amount}} - - - {{::defaulter.workerName | dashIfEmpty}} - - - - - - - {{::defaulter.creditInsurance}} - {{::defaulter.defaulterSinced | date: 'dd/MM/yyyy'}} - - - -
-
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Client + + Comercial + + Balance D. + + Author + + Last observation + + L. O. Date + + Credit I. + + From +
+ + + + + {{::defaulter.clientName}} + + + + {{::defaulter.salesPersonName | dashIfEmpty}} + + {{::defaulter.amount | currency: 'EUR': 2}} + + {{::defaulter.workerName | dashIfEmpty}} + + + + + + + {{::defaulter.created | date: 'dd/MM/yyyy'}} + + {{::defaulter.creditInsurance | currency: 'EUR': 2}}{{::defaulter.defaulterSinced | date: 'dd/MM/yyyy'}}
+
+ + + vn-id="client-descriptor"> + vn-id="worker-descriptor"> - - - - - Filter by selection - - - Exclude selection - - - Remove filter - - - Remove all filters - - - Copy value - - - - 0) { - for (let defaulter of this.checked) - balanceDueTotal += defaulter.amount; - - return balanceDueTotal; - } - - return balanceDueTotal; + this.getBalanceDueTotal(); } get checked() { @@ -32,6 +68,34 @@ export default class Controller extends Section { return checkedLines; } + getBalanceDueTotal() { + this.$http.get('Defaulters/filter') + .then(res => { + if (!res.data) return 0; + + this.balanceDueTotal = res.data.reduce( + (accumulator, currentValue) => { + return accumulator + (currentValue['amount'] || 0); + }, 0); + }); + } + + chipColor(date) { + const day = 24 * 60 * 60 * 1000; + const today = new Date(); + today.setHours(0, 0, 0, 0); + + const observationShipped = new Date(date); + observationShipped.setHours(0, 0, 0, 0); + + const difference = today - observationShipped; + + if (difference > (day * 20)) + return 'alert'; + if (difference > (day * 10)) + return 'warning'; + } + onResponse() { if (!this.defaulter.observation) throw new UserError(`The message can't be empty`); @@ -52,14 +116,17 @@ export default class Controller extends Section { exprBuilder(param, value) { switch (param) { - case 'clientName': + case 'creditInsurance': + case 'amount': + case 'clientFk': + case 'workerFk': case 'salesPersonFk': return {[`d.${param}`]: value}; } } } -ngModule.vnComponent('vnClientDefaulterIndex', { +ngModule.vnComponent('vnClientDefaulter', { template: require('./index.html'), controller: Controller }); diff --git a/modules/client/front/defaulter/index.spec.js b/modules/client/front/defaulter/index.spec.js index 6428952ec..0732c68a1 100644 --- a/modules/client/front/defaulter/index.spec.js +++ b/modules/client/front/defaulter/index.spec.js @@ -2,7 +2,7 @@ import './index'; import crudModel from 'core/mocks/crud-model'; describe('client defaulter', () => { - describe('Component vnClientDefaulterIndex', () => { + describe('Component vnClientDefaulter', () => { let controller; let $httpBackend; @@ -11,7 +11,7 @@ describe('client defaulter', () => { beforeEach(inject(($componentController, _$httpBackend_) => { $httpBackend = _$httpBackend_; const $element = angular.element(''); - controller = $componentController('vnClientDefaulterIndex', {$element}); + controller = $componentController('vnClientDefaulter', {$element}); controller.$.model = crudModel; controller.$.model.data = [ {clientFk: 1101, amount: 125}, @@ -36,18 +36,28 @@ describe('client defaulter', () => { }); }); - describe('balanceDueTotal() getter', () => { - it('should return balance due total', () => { - const data = controller.$.model.data; - data[1].checked = true; - data[2].checked = true; + describe('chipColor()', () => { + it('should return undefined when the date is the present', () => { + let today = new Date(); + let result = controller.chipColor(today); - const checkedRows = controller.checked; - const expectedAmount = checkedRows[0].amount + checkedRows[1].amount; + expect(result).toEqual(undefined); + }); - const result = controller.balanceDueTotal; + it('should return warning when the date is 10 days in the past', () => { + let pastDate = new Date(); + pastDate = pastDate.setDate(pastDate.getDate() - 11); + let result = controller.chipColor(pastDate); - expect(result).toEqual(expectedAmount); + expect(result).toEqual('warning'); + }); + + it('should return alert when the date is 20 days in the past', () => { + let pastDate = new Date(); + pastDate = pastDate.setDate(pastDate.getDate() - 21); + let result = controller.chipColor(pastDate); + + expect(result).toEqual('alert'); }); }); @@ -72,6 +82,7 @@ describe('client defaulter', () => { const params = [{text: controller.defaulter.observation, clientFk: data[1].clientFk}]; jest.spyOn(controller.vnApp, 'showMessage'); + $httpBackend.expect('GET', `Defaulters/filter`).respond(200); $httpBackend.expect('POST', `ClientObservations`, params).respond(200, params); controller.onResponse(); @@ -83,15 +94,27 @@ describe('client defaulter', () => { describe('exprBuilder()', () => { it('should search by sales person', () => { - let expr = controller.exprBuilder('salesPersonFk', '5'); + const expr = controller.exprBuilder('salesPersonFk', '5'); expect(expr).toEqual({'d.salesPersonFk': '5'}); }); - it('should search by client name', () => { - let expr = controller.exprBuilder('clientName', '1foo'); + it('should search by client', () => { + const expr = controller.exprBuilder('clientFk', '5'); - expect(expr).toEqual({'d.clientName': '1foo'}); + expect(expr).toEqual({'d.clientFk': '5'}); + }); + }); + + describe('getBalanceDueTotal()', () => { + it('should return balance due total', () => { + const defaulters = controller.$.model.data; + $httpBackend.when('GET', `Defaulters/filter`).respond(defaulters); + + controller.getBalanceDueTotal(); + $httpBackend.flush(); + + expect(controller.balanceDueTotal).toEqual(875); }); }); }); diff --git a/modules/client/front/defaulter/locale/es.yml b/modules/client/front/defaulter/locale/es.yml index 172a3125d..c3e1d4e19 100644 --- a/modules/client/front/defaulter/locale/es.yml +++ b/modules/client/front/defaulter/locale/es.yml @@ -1,7 +1,9 @@ -Last observation: Última observación Add observation: Añadir observación -Search client: Buscar clientes Add observation to all selected clients: Añadir observación a {{total}} cliente(s) seleccionado(s) -Credit I.: Crédito A. Balance D.: Saldo V. +Credit I.: Crédito A. +Last observation: Última observación +L. O. Date: Fecha Ú. O. +Last observation date: Fecha última observación +Search client: Buscar clientes Worker who made the last observation: Trabajador que ha realizado la última observación \ No newline at end of file diff --git a/modules/client/front/descriptor/index.html b/modules/client/front/descriptor/index.html index 6ae1f690e..cad226416 100644 --- a/modules/client/front/descriptor/index.html +++ b/modules/client/front/descriptor/index.html @@ -1,6 +1,7 @@ + description="$ctrl.client.name" + summary="$ctrl.$.summary"> +
+ + +
@@ -110,4 +119,7 @@ - \ No newline at end of file + + + + diff --git a/modules/client/front/descriptor/locale/es.yml b/modules/client/front/descriptor/locale/es.yml index e6aca9665..71723e654 100644 --- a/modules/client/front/descriptor/locale/es.yml +++ b/modules/client/front/descriptor/locale/es.yml @@ -3,5 +3,6 @@ View consumer report: Ver informe de consumo From date: Fecha desde To date: Fecha hasta Go to user: Ir al usuario +Go to supplier: Ir al proveedor Client invoices list: Listado de facturas del cliente Pay method: Forma de pago \ No newline at end of file diff --git a/modules/client/front/extended-list/index.html b/modules/client/front/extended-list/index.html new file mode 100644 index 000000000..784e88b8a --- /dev/null +++ b/modules/client/front/extended-list/index.html @@ -0,0 +1,319 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Identifier + + Name + + Social name + + Tax number + + Salesperson + + Credit + + Credit insurance + + Phone + + Mobile + + Street + + Country + + Province + + City + + Postcode + + Email + + Created + + Business type + + Billing data + + Sage tax type + + Sage tr. type + + Active + + Vies + + Verified data + + Is equalizated + + Freezed + + Invoice + + Invoice by address + + Mailing + + Received LCR + + Received core VNL + + Received B2B VNL +
+ + + + + + + {{::client.id}} + + {{::client.name}}{{::client.socialName}}{{::client.fi}} + + {{::client.salesPerson | dashIfEmpty}} + + {{::client.credit}}{{::client.creditInsurance | dashIfEmpty}}{{::client.phone | dashIfEmpty}}{{::client.mobile | dashIfEmpty}}{{::client.street | dashIfEmpty}}{{::client.country | dashIfEmpty}}{{::client.province | dashIfEmpty}}{{::client.city | dashIfEmpty}}{{::client.postcode | dashIfEmpty}}{{::client.email | dashIfEmpty}}{{::client.created | date:'dd/MM/yyyy'}}{{::client.businessType | dashIfEmpty}}{{::client.payMethod | dashIfEmpty}}{{::client.sageTaxType | dashIfEmpty}}{{::client.sageTransactionType | dashIfEmpty}} + + {{ ::client.isActive ? 'Yes' : 'No' | translate}} + + + + {{ ::client.isVies ? 'Yes' : 'No' | translate}} + + + + {{ ::client.isTaxDataChecked ? 'Yes' : 'No' | translate}} + + + + {{ ::client.isEqualizated ? 'Yes' : 'No' | translate}} + + + + {{ ::client.isFreezed ? 'Yes' : 'No' | translate}} + + + + {{ ::client.hasToInvoice ? 'Yes' : 'No' | translate}} + + + + {{ ::client.hasToInvoiceByAddress ? 'Yes' : 'No' | translate}} + + + + {{ ::client.isToBeMailed ? 'Yes' : 'No' | translate}} + + + + {{ ::client.hasLcr ? 'Yes' : 'No' | translate}} + + + + {{ ::client.hasCoreVnl ? 'Yes' : 'No' | translate}} + + + + {{ ::client.hasSepaVnl ? 'Yes' : 'No' | translate}} + + + + + + + + +
+
+
+
+
+ + + + + + + + + + + + + + + Filter by selection + + + Exclude selection + + + Remove filter + + + Remove all filters + + + \ No newline at end of file diff --git a/modules/client/front/extended-list/index.js b/modules/client/front/extended-list/index.js new file mode 100644 index 000000000..8eed48d01 --- /dev/null +++ b/modules/client/front/extended-list/index.js @@ -0,0 +1,184 @@ +import ngModule from '../module'; +import Section from 'salix/components/section'; +import './style.scss'; + +class Controller extends Section { + constructor($element, $) { + super($element, $); + + this.smartTableOptions = { + activeButtons: { + search: true, + shownColumns: true, + }, + columns: [ + { + field: 'socialName', + autocomplete: { + url: 'Clients', + showField: 'socialName', + valueField: 'socialName', + } + }, + { + field: 'created', + datepicker: true + }, + { + field: 'countryFk', + autocomplete: { + url: 'Countries', + showField: 'country', + } + }, + { + field: 'provinceFk', + autocomplete: { + url: 'Provinces' + } + }, + { + field: 'salesPersonFk', + autocomplete: { + url: 'Workers/activeWithInheritedRole', + where: `{role: 'salesPerson'}`, + searchFunction: '{firstName: $search}', + showField: 'nickname', + valueField: 'id', + } + }, + { + field: 'businessTypeFk', + autocomplete: { + url: 'BusinessTypes', + valueField: 'code', + showField: 'description', + } + }, + { + field: 'payMethodFk', + autocomplete: { + url: 'PayMethods', + } + }, + { + field: 'sageTaxTypeFk', + autocomplete: { + url: 'SageTaxTypes', + showField: 'vat', + } + }, + { + field: 'sageTransactionTypeFk', + autocomplete: { + url: 'SageTransactionTypes', + showField: 'transaction', + } + }, + { + field: 'isActive', + checkbox: true + }, + { + field: 'isVies', + checkbox: true + }, + { + field: 'isTaxDataChecked', + checkbox: true + }, + { + field: 'isEqualizated', + checkbox: true + }, + { + field: 'isFreezed', + checkbox: true + }, + { + field: 'hasToInvoice', + checkbox: true + }, + { + field: 'hasToInvoiceByAddress', + checkbox: true + }, + { + field: 'isToBeMailed', + checkbox: true + }, + { + field: 'hasSepaVnl', + checkbox: true + }, + { + field: 'hasLcr', + checkbox: true + }, + { + field: 'hasCoreVnl', + checkbox: true + } + ] + }; + } + + exprBuilder(param, value) { + switch (param) { + case 'created': + return {'c.created': { + between: this.dateRange(value)} + }; + case 'id': + case 'name': + case 'socialName': + case 'fi': + case 'credit': + case 'creditInsurance': + case 'phone': + case 'mobile': + case 'street': + case 'city': + case 'postcode': + case 'email': + case 'isActive': + case 'isVies': + case 'isTaxDataChecked': + case 'isEqualizated': + case 'isFreezed': + case 'hasToInvoice': + case 'hasToInvoiceByAddress': + case 'isToBeMailed': + case 'hasSepaVnl': + case 'hasLcr': + case 'hasCoreVnl': + case 'countryFk': + case 'provinceFk': + case 'salesPersonFk': + case 'businessTypeFk': + case 'payMethodFk': + case 'sageTaxTypeFk': + case 'sageTransactionTypeFk': + return {[`c.${param}`]: value}; + } + } + + dateRange(value) { + const minHour = new Date(value); + minHour.setHours(0, 0, 0, 0); + const maxHour = new Date(value); + maxHour.setHours(23, 59, 59, 59); + + return [minHour, maxHour]; + } + + preview(client) { + this.clientSelected = client; + this.$.preview.show(); + } +} + +ngModule.vnComponent('vnClientExtendedList', { + template: require('./index.html'), + controller: Controller +}); diff --git a/modules/client/front/extended-list/locale/es.yml b/modules/client/front/extended-list/locale/es.yml new file mode 100644 index 000000000..ea56f3af2 --- /dev/null +++ b/modules/client/front/extended-list/locale/es.yml @@ -0,0 +1,3 @@ +Mailing: Env. emails +Sage tr. type: Tipo tr. sage +Yes: Sí \ No newline at end of file diff --git a/modules/client/front/extended-list/style.scss b/modules/client/front/extended-list/style.scss new file mode 100644 index 000000000..7625b5d16 --- /dev/null +++ b/modules/client/front/extended-list/style.scss @@ -0,0 +1,6 @@ +@import "variables"; + +vn-chip.success, +vn-chip.alert { + color: $color-font-bg +} \ No newline at end of file diff --git a/modules/client/front/fiscal-data/index.html b/modules/client/front/fiscal-data/index.html index f3fd42e76..bc5898635 100644 --- a/modules/client/front/fiscal-data/index.html +++ b/modules/client/front/fiscal-data/index.html @@ -33,7 +33,7 @@ label="Social name" ng-model="$ctrl.client.socialName" rule - info="You can use letters and spaces" + info="Only letters, numbers and spaces can be used" required="true"> + + + + {{clientId}} ya tiene este teléfono o email.
¿Quieres continuar? Sage tax type: Tipo de impuesto Sage Sage transaction type: Tipo de transacción Sage Previous client: Cliente anterior -In case of a company succession, specify the grantor company: En el caso de que haya habido una sucesión de empresa, indicar la empresa cedente \ No newline at end of file +In case of a company succession, specify the grantor company: En el caso de que haya habido una sucesión de empresa, indicar la empresa cedente +Incoterms authorization: Autorización incoterms \ No newline at end of file diff --git a/modules/client/front/index.js b/modules/client/front/index.js index 6b35d392a..a5782c789 100644 --- a/modules/client/front/index.js +++ b/modules/client/front/index.js @@ -45,3 +45,6 @@ import './dms/edit'; import './consumption'; import './consumption-search-panel'; import './defaulter'; +import './notification'; +import './unpaid'; +import './extended-list'; diff --git a/modules/client/front/locale/es.yml b/modules/client/front/locale/es.yml index 107931377..de4b91e0b 100644 --- a/modules/client/front/locale/es.yml +++ b/modules/client/front/locale/es.yml @@ -33,6 +33,7 @@ Search client by id or name: Buscar clientes por identificador o nombre # Sections Clients: Clientes +Extended list: Listado extendido Defaulter: Morosos New client: Nuevo cliente Fiscal data: Datos fiscales @@ -61,4 +62,5 @@ Log: Historial Consumption: Consumo Compensation Account: Cuenta para compensar Amount to return: Cantidad a devolver -Delivered amount: Cantidad entregada \ No newline at end of file +Delivered amount: Cantidad entregada +Unpaid: Impagado \ No newline at end of file diff --git a/modules/client/front/main/index.html b/modules/client/front/main/index.html index e8bc4b988..0787858ae 100644 --- a/modules/client/front/main/index.html +++ b/modules/client/front/main/index.html @@ -1,6 +1,6 @@ @@ -10,8 +10,7 @@ vn-focus panel="vn-client-search-panel" info="Search client by id or name" - model="model" - expr-builder="$ctrl.exprBuilder(param, value)"> + model="model"> diff --git a/modules/client/front/main/index.js b/modules/client/front/main/index.js index 61cde8b22..346880f4c 100644 --- a/modules/client/front/main/index.js +++ b/modules/client/front/main/index.js @@ -2,31 +2,6 @@ import ngModule from '../module'; import ModuleMain from 'salix/components/module-main'; export default class Client extends ModuleMain { - exprBuilder(param, value) { - switch (param) { - case 'search': - return /^\d+$/.test(value) - ? {id: value} - : {or: [{name: {like: `%${value}%`}}, {socialName: {like: `%${value}%`}}]}; - case 'phone': - return { - or: [ - {phone: value}, - {mobile: value} - ] - }; - case 'name': - case 'socialName': - case 'city': - case 'email': - return {[param]: {like: `%${value}%`}}; - case 'id': - case 'fi': - case 'postcode': - case 'salesPersonFk': - return {[param]: value}; - } - } } ngModule.vnComponent('vnClient', { diff --git a/modules/client/front/notification/index.html b/modules/client/front/notification/index.html new file mode 100644 index 000000000..49e4e3c3f --- /dev/null +++ b/modules/client/front/notification/index.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Identifier + + Social name + + City + + Phone + + Email +
+ + + + + {{::client.id}} + + {{::client.socialName}}{{::client.city}}{{::client.phone}}{{::client.email}}
+
+
+
+ + + + +
+ +

Campaign consumption

+ + + + {{code}} {{dated | date: 'yyyy'}} + + + + + + + + + + + + + +
+
+ + + + Filter by selection + + + Exclude selection + + + Remove filter + + + Remove all filters + + + Copy value + + + + + \ No newline at end of file diff --git a/modules/client/front/notification/index.js b/modules/client/front/notification/index.js new file mode 100644 index 000000000..faa062b25 --- /dev/null +++ b/modules/client/front/notification/index.js @@ -0,0 +1,123 @@ +import ngModule from '../module'; +import Section from 'salix/components/section'; + +export default class Controller extends Section { + constructor($element, $) { + super($element, $); + this.$checkAll = false; + this.smartTableOptions = { + activeButtons: { + search: true + }, + columns: [ + { + field: 'socialName', + autocomplete: { + url: 'Clients', + showField: 'socialName', + valueField: 'socialName' + } + }, + { + field: 'city', + autocomplete: { + url: 'Towns', + valueField: 'name', + showField: 'name' + } + } + ] + }; + + this.campaign = { + id: null, + from: null, + to: null + }; + + this.getUpcomingCampaing(); + } + + get checked() { + const clients = this.$.model.data || []; + const checkedClients = []; + for (const buy of clients) { + if (buy.$checked) + checkedClients.push(buy); + } + + return checkedClients; + } + + onChangeDate(value) { + if (value) + this.campaign.id = null; + } + + getUpcomingCampaing() { + this.$http.get('Campaigns/upcoming') + .then(res => this.campaign.id = res.data.id); + } + + get campaignSelection() { + return this._campaignSelection; + } + + set campaignSelection(value) { + this._campaignSelection = value; + + if (value) { + const from = new Date(value.dated); + from.setDate(from.getDate() - value.scopeDays); + + this.campaign.to = value.dated; + this.campaign.from = from; + } + } + + onSendClientConsumption() { + const clientIds = this.checked.map(client => client.id); + const data = { + clients: clientIds, + from: this.campaign.from, + to: this.campaign.to + }; + + const params = JSON.stringify(data); + this.$http.post('ClientConsumptionQueues', {params}) + .then(() => this.$.filters.hide()) + .then(() => this.vnApp.showSuccess(this.$t('Notification sent!'))); + } + + exprBuilder(param, value) { + switch (param) { + case 'search': + return /^\d+$/.test(value) + ? {id: value} + : {or: [{name: {like: `%${value}%`}}, {socialName: {like: `%${value}%`}}]}; + case 'phone': + return { + or: [ + {phone: value}, + {mobile: value} + ] + }; + case 'name': + case 'socialName': + case 'city': + case 'email': + return {[param]: {like: `%${value}%`}}; + case 'id': + case 'fi': + case 'postcode': + case 'salesPersonFk': + case 'provinceFk': + return {[param]: value}; + } + } +} + +ngModule.vnComponent('vnClientNotification', { + template: require('./index.html'), + controller: Controller +}); diff --git a/modules/client/front/notification/index.spec.js b/modules/client/front/notification/index.spec.js new file mode 100644 index 000000000..4e754f6ad --- /dev/null +++ b/modules/client/front/notification/index.spec.js @@ -0,0 +1,99 @@ +import './index'; +import crudModel from 'core/mocks/crud-model'; + +describe('Client notification', () => { + describe('Component vnClientNotification', () => { + let controller; + let $httpBackend; + + beforeEach(ngModule('client')); + + beforeEach(inject(($componentController, _$httpBackend_) => { + $httpBackend = _$httpBackend_; + const $element = angular.element(''); + controller = $componentController('vnClientNotification', {$element}); + controller.$.model = crudModel; + controller.$.model.data = [ + {id: 1101}, + {id: 1102}, + {id: 1103} + ]; + $httpBackend.expect('GET', `Campaigns/upcoming`).respond(200, {id: 1}); + })); + + describe('checked() getter', () => { + it('should return the checked lines', () => { + const data = controller.$.model.data; + data[1].$checked = true; + data[2].$checked = true; + + const checkedRows = controller.checked; + + const firstCheckedRow = checkedRows[0]; + const secondCheckedRow = checkedRows[1]; + + expect(firstCheckedRow.id).toEqual(1102); + expect(secondCheckedRow.id).toEqual(1103); + }); + }); + + describe('campaignSelection() setter', () => { + it('should set the campaign from and to properties', () => { + const dated = new Date(); + controller.campaignSelection = { + dated: dated, + scopeDays: 14 + }; + + const expectedDateTo = new Date(dated); + expectedDateTo.setDate(expectedDateTo.getDate() - 14); + + const campaign = controller.campaign; + + expect(campaign.from).toEqual(expectedDateTo); + expect(campaign.to).toEqual(dated); + }); + }); + + describe('onSendClientConsumption()', () => { + it('should return saved message', () => { + jest.spyOn(controller.vnApp, 'showSuccess'); + + controller.$.filters = {hide: () => {}}; + controller.campaign = { + from: new Date(), + to: new Date() + }; + + const data = controller.$.model.data; + data[0].$checked = true; + data[1].$checked = true; + + const args = Object.assign({ + clients: [1101, 1102] + }, controller.campaign); + const params = JSON.stringify(args); + + $httpBackend.expect('POST', `ClientConsumptionQueues`, {params}).respond(200, params); + controller.onSendClientConsumption(); + $httpBackend.flush(); + + expect(controller.vnApp.showSuccess).toHaveBeenCalledWith('Notification sent!'); + }); + }); + + describe('exprBuilder()', () => { + it('should search by sales person', () => { + let expr = controller.exprBuilder('salesPersonFk', '5'); + + expect(expr).toEqual({'salesPersonFk': '5'}); + }); + + it('should search by client social name', () => { + let expr = controller.exprBuilder('socialName', '1foo'); + + expect(expr).toEqual({'socialName': {like: '%1foo%'}}); + }); + }); + }); +}); diff --git a/modules/client/front/notification/locale/es.yml b/modules/client/front/notification/locale/es.yml new file mode 100644 index 000000000..dd89d7c6e --- /dev/null +++ b/modules/client/front/notification/locale/es.yml @@ -0,0 +1,2 @@ +Campaign consumption: Consumo campaña +Send: Enviar \ No newline at end of file diff --git a/modules/client/front/routes.json b/modules/client/front/routes.json index 753948f8e..406ca07d7 100644 --- a/modules/client/front/routes.json +++ b/modules/client/front/routes.json @@ -7,7 +7,9 @@ "menus": { "main": [ {"state": "client.index", "icon": "person"}, - {"state": "client.defaulter.index", "icon": "icon-defaulter"} + {"state": "client.extendedList", "icon": "person"}, + {"state": "client.notification", "icon": "campaign"}, + {"state": "client.defaulter", "icon": "icon-defaulter"} ], "card": [ {"state": "client.card.basicData", "icon": "settings"}, @@ -18,7 +20,7 @@ {"state": "client.card.credit.index", "icon": "credit_card"}, {"state": "client.card.greuge.index", "icon": "work"}, {"state": "client.card.balance.index", "icon": "icon-invoice"}, - {"state": "client.card.recovery.index", "icon": "icon-recovery"}, + {"state": "client.card.recovery.index", "icon": "icon-recovery"}, {"state": "client.card.webAccess", "icon": "cloud"}, {"state": "client.card.log", "icon": "history"}, { @@ -31,10 +33,11 @@ {"state": "client.card.creditInsurance.index", "icon": "icon-solunion"}, {"state": "client.card.contact", "icon": "contact_phone"}, {"state": "client.card.webPayment", "icon": "icon-onlinepayment"}, - {"state": "client.card.dms.index", "icon": "cloud_upload"} + {"state": "client.card.dms.index", "icon": "cloud_upload"}, + {"state": "client.card.unpaid", "icon": "icon-defaulter"} ] } - ] + ] }, "keybindings": [ {"key": "c", "state": "client.index"} @@ -47,22 +50,26 @@ "component": "vn-client", "description": "Clients", "acl": ["employee"] - }, { + }, + { "url": "/index?q", "state": "client.index", "component": "vn-client-index", "description": "Clients" - }, { + }, + { "url": "/create", "state": "client.create", "component": "vn-client-create", "description": "New client" - }, { + }, + { "url": "/:id?sendSMS&phone&message", "state": "client.card", "abstract": true, "component": "vn-client-card" - }, { + }, + { "url": "/summary", "state": "client.card.summary", "component": "vn-client-summary", @@ -70,7 +77,8 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/basic-data", "state": "client.card.basicData", "component": "vn-client-basic-data", @@ -78,7 +86,8 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/fiscal-data", "state": "client.card.fiscalData", "component": "vn-client-fiscal-data", @@ -86,7 +95,8 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/billing-data", "state": "client.card.billingData", "component": "vn-client-billing-data", @@ -94,12 +104,14 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/address", "state": "client.card.address", "component": "ui-view", "abstract": true - }, { + }, + { "url": "/index?q", "state": "client.card.address.index", "component": "vn-client-address-index", @@ -107,7 +119,8 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/create", "state": "client.card.address.create", "component": "vn-client-address-create", @@ -115,12 +128,14 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/:addressId/edit", "state": "client.card.address.edit", "component": "vn-client-address-edit", "description": "Edit address" - }, { + }, + { "url": "/web-access", "state": "client.card.webAccess", "component": "vn-client-web-access", @@ -128,12 +143,14 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/note", "state": "client.card.note", - "component": "ui-view", + "component": "ui-view", "abstract": true - }, { + }, + { "url": "/index", "state": "client.card.note.index", "component": "vn-client-note", @@ -141,17 +158,20 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/create", "state": "client.card.note.create", "component": "vn-note-create", "description": "New note" - }, { + }, + { "url": "/credit", "abstract": true, "state": "client.card.credit", "component": "ui-view" - }, { + }, + { "url": "/index", "state": "client.card.credit.index", "component": "vn-client-credit-index", @@ -159,7 +179,8 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/create", "state": "client.card.credit.create", "component": "vn-client-credit-create", @@ -168,12 +189,14 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/greuge", "abstract": true, "state": "client.card.greuge", "component": "ui-view" - }, { + }, + { "url": "/index", "state": "client.card.greuge.index", "component": "vn-client-greuge-index", @@ -181,7 +204,8 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/create", "state": "client.card.greuge.create", "component": "vn-client-greuge-create", @@ -190,17 +214,20 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/mandate", "state": "client.card.mandate", "component": "vn-client-mandate", "description": "Mandates" - }, { + }, + { "url": "/balance", "abstract": true, "state": "client.card.balance", "component": "ui-view" - }, { + }, + { "url": "/index", "state": "client.card.balance.index", "component": "vn-client-balance-index", @@ -208,7 +235,8 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/create?payed&companyFk&bankFk&payedAmount", "state": "client.card.balance.create", "component": "vn-client-balance-create", @@ -216,12 +244,14 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/recovery", "abstract": true, "state": "client.card.recovery", "component": "ui-view" - }, { + }, + { "url": "/index", "state": "client.card.recovery.index", "component": "vn-client-recovery-index", @@ -229,7 +259,8 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/create", "state": "client.card.recovery.create", "component": "vn-client-recovery-create", @@ -237,12 +268,14 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/credit-insurance", "abstract": true, "state": "client.card.creditInsurance", "component": "ui-view" - }, { + }, + { "url": "/index", "state": "client.card.creditInsurance.index", "component": "vn-client-credit-insurance-index", @@ -250,7 +283,8 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/create", "state": "client.card.creditInsurance.create", "component": "vn-client-credit-insurance-create", @@ -259,13 +293,15 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/insurance", "abstract": true, "state": "client.card.creditInsurance.insurance", "component": "ui-view", "acl": ["insurance"] - }, { + }, + { "url": "/:classificationId/index", "state": "client.card.creditInsurance.insurance.index", "component": "vn-client-credit-insurance-insurance-index", @@ -274,7 +310,8 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/:classificationId/create", "state": "client.card.creditInsurance.insurance.create", "component": "vn-client-credit-insurance-insurance-create", @@ -283,7 +320,8 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/contact", "state": "client.card.contact", "component": "vn-client-contact", @@ -291,12 +329,14 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/sample", "abstract": true, "state": "client.card.sample", "component": "ui-view" - }, { + }, + { "url": "/index", "state": "client.card.sample.index", "component": "vn-client-sample-index", @@ -304,7 +344,8 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/create", "state": "client.card.sample.create", "component": "vn-client-sample-create", @@ -312,12 +353,14 @@ "params": { "client": "$ctrl.client" } - }, { + }, + { "url": "/web-payment", "state": "client.card.webPayment", "component": "vn-client-web-payment", "description": "Web Payment" - }, { + }, + { "url" : "/log", "state": "client.card.log", "component": "vn-client-log", @@ -363,16 +406,28 @@ } }, { - "url": "/defaulter", + "url": "/defaulter?q", "state": "client.defaulter", - "component": "ui-view", + "component": "vn-client-defaulter", "description": "Defaulter" }, { - "url": "/index?q", - "state": "client.defaulter.index", - "component": "vn-client-defaulter-index", - "description": "Defaulter" + "url" : "/notification?q", + "state": "client.notification", + "component": "vn-client-notification", + "description": "Notifications" + }, { + "url": "/unpaid", + "state": "client.card.unpaid", + "component": "vn-client-unpaid", + "acl": ["administrative"], + "description": "Unpaid" + }, + { + "url": "/extended-list?q", + "state": "client.extendedList", + "component": "vn-client-extended-list", + "description": "Extended list" } ] } diff --git a/modules/client/front/sample/create/index.html b/modules/client/front/sample/create/index.html index 2d0f3d29c..5df2b29ef 100644 --- a/modules/client/front/sample/create/index.html +++ b/modules/client/front/sample/create/index.html @@ -7,6 +7,15 @@ @@ -77,7 +86,7 @@ + ng-click="$ctrl.preview()"> - this.sendSample() - ); + + const validationMessage = this.validate(); + if (validationMessage) + return this.vnApp.showError(this.$t(validationMessage)); + + this.$.watcher.realSubmit().then(() => this.send()); } - showPreview() { - this.send(true, res => { - this.$.showPreview.show(); - const dialog = document.body.querySelector('div.vn-dialog'); - const body = dialog.querySelector('tpl-body'); - const scroll = dialog.querySelector('div:first-child'); - - body.innerHTML = res.data; - scroll.scrollTop = 0; - }); - } - - sendSample() { - this.send(false, () => { - this.vnApp.showSuccess(this.$t('Notification sent!')); - this.$state.go('client.card.sample.index'); - }); - } - - send(isPreview, cb) { + validate() { const sampleType = this.$.sampleType.selection; - const params = { - recipientId: this.$params.id, - recipient: this.clientSample.recipient, - replyTo: this.clientSample.replyTo - }; - if (!params.recipient) - return this.vnApp.showError(this.$t('Email cannot be blank')); + if (!this.clientSample.recipient) + return 'Email cannot be blank'; if (!sampleType) - return this.vnApp.showError(this.$t('Choose a sample')); + return 'Choose a sample'; if (sampleType.hasCompany && !this.clientSample.companyFk) - return this.vnApp.showError(this.$t('Choose a company')); + return 'Choose a company'; + + if (sampleType.datepickerEnabled && !this.clientSample.from) + return 'Choose a date'; + + return; + } + + setParams(params) { + const sampleType = this.$.sampleType.selection; if (sampleType.hasCompany) params.companyId = this.clientSample.companyFk; - if (sampleType.datepickerEnabled && !this.clientSample.from) - return this.vnApp.showError(this.$t('Choose a date')); - if (sampleType.datepickerEnabled) params.from = this.clientSample.from; + } - let query = `email/${sampleType.code}`; - if (isPreview) - query = `email/${sampleType.code}/preview`; + preview() { + const sampleType = this.$.sampleType.selection; - this.$http.get(query, {params}).then(cb); + const params = { + recipientId: this.$params.id + }; + + const validationMessage = this.validate(); + if (validationMessage) + return this.vnApp.showError(this.$t(validationMessage)); + + this.setParams(params); + + const path = `${sampleType.model}/${this.$params.id}/${sampleType.code}-html`; + this.$http.get(path, {params}) + .then(response => { + this.$.showPreview.show(); + const dialog = document.body.querySelector('div.vn-dialog'); + const body = dialog.querySelector('tpl-body'); + const scroll = dialog.querySelector('div:first-child'); + + body.innerHTML = response.data; + scroll.scrollTop = 0; + }); + } + + send() { + const sampleType = this.$.sampleType.selection; + + const params = { + recipientId: this.client.id, + recipient: this.clientSample.recipient, + replyTo: this.clientSample.replyTo + }; + + const validationMessage = this.validate(); + if (validationMessage) + return this.vnApp.showError(this.$t(validationMessage)); + + this.setParams(params); + + const path = `${sampleType.model}/${this.$params.id}/${sampleType.code}-email`; + this.vnEmail.send(path, params) + .then(() => this.$state.go('client.card.sample.index')); } getWorkerEmail() { @@ -103,7 +129,7 @@ class Controller extends Section { } } -Controller.$inject = ['$element', '$scope']; +Controller.$inject = ['$element', '$scope', 'vnEmail']; ngModule.vnComponent('vnClientSampleCreate', { template: require('./index.html'), diff --git a/modules/client/front/sample/create/index.spec.js b/modules/client/front/sample/create/index.spec.js index 781025fd2..8e33a1075 100644 --- a/modules/client/front/sample/create/index.spec.js +++ b/modules/client/front/sample/create/index.spec.js @@ -40,6 +40,7 @@ describe('Client', () => { $httpParamSerializer = _$httpParamSerializer_; $element = angular.element(''); controller = $componentController('vnClientSampleCreate', {$element, $scope}); + controller._client = {id: 1101}; const element = document.createElement('div'); document.body.querySelector = () => { return { @@ -48,14 +49,26 @@ describe('Client', () => { } }; }; + // $httpBackend.expectGET('EmailUsers?filter=%7B%22where%22:%7B%7D%7D').respond(); })); describe('onSubmit()', () => { - it(`should call sendSample() method`, () => { - jest.spyOn(controller, 'sendSample'); + it(`should call send() method`, () => { + controller.send = jest.fn(); + + controller.$.sampleType.selection = { + hasCompany: false, + code: 'MyReport', + model: 'Clients' + }; + + controller.clientSample = { + recipient: 'email@email' + }; + controller.onSubmit(); - expect(controller.sendSample).toHaveBeenCalledWith(); + expect(controller.send).toHaveBeenCalledWith(); }); }); @@ -65,13 +78,14 @@ describe('Client', () => { controller.$.sampleType.selection = { hasCompany: false, - code: 'MyReport' + code: 'MyReport', + model: 'Clients' }; controller.clientSample = { recipientId: 1101 }; - controller.send(false, () => {}); + controller.send(); expect(controller.$http.get).not.toHaveBeenCalled(); }); @@ -85,7 +99,7 @@ describe('Client', () => { recipient: 'client@email.com' }; - controller.send(false, () => {}); + controller.send(); expect(controller.$http.get).not.toHaveBeenCalled(); }); @@ -102,84 +116,81 @@ describe('Client', () => { recipient: 'client@email.com' }; - controller.send(false, () => {}); + controller.send(); expect(controller.$http.get).not.toHaveBeenCalled(); }); it(`should perform an HTTP query without passing companyFk param`, () => { + $state.go = jest.fn(); + controller.$.sampleType.selection = { hasCompany: false, - code: 'MyReport' + code: 'my-report', + model: 'Clients' }; controller.clientSample = { recipientId: 1101, recipient: 'client@email.com' }; - const expectedParams = { - recipientId: 1101, - recipient: 'client@email.com' - }; - const serializedParams = $httpParamSerializer(expectedParams); - $httpBackend.expect('GET', `email/MyReport?${serializedParams}`).respond(true); - controller.send(false, () => {}); + const expectedPath = `Clients/${controller.client.id}/my-report-email`; + $httpBackend.expect('POST', expectedPath).respond(true); + controller.send(); $httpBackend.flush(); }); it(`should perform an HTTP query passing companyFk param`, () => { + $state.go = jest.fn(); + controller.$.sampleType.selection = { hasCompany: true, - code: 'MyReport' + code: 'my-report', + model: 'Clients' }; controller.clientSample = { recipientId: 1101, recipient: 'client@email.com', companyFk: 442 }; - const expectedParams = { - recipientId: 1101, - recipient: 'client@email.com', - companyId: 442 - }; - const serializedParams = $httpParamSerializer(expectedParams); - $httpBackend.expect('GET', `email/MyReport?${serializedParams}`).respond(true); - controller.send(false, () => {}); + const expectedPath = `Clients/${controller.client.id}/my-report-email`; + $httpBackend.expect('POST', expectedPath).respond(true); + controller.send(); $httpBackend.flush(); }); }); - describe('showPreview()', () => { + describe('preview()', () => { it(`should open a sample preview`, () => { jest.spyOn(controller.$.showPreview, 'show'); - controller.send = (isPreview, cb) => { - cb({ - data: '
' - }); + controller.$.sampleType.selection = { + hasCompany: true, + code: 'my-report', + model: 'Clients' }; - controller.showPreview(); + controller.clientSample = { + recipientId: 1101, + recipient: 'client@email.com', + companyFk: 442 + }; + + const expectedParams = { + companyId: 442, + recipientId: 1101 + }; + const serializedParams = $httpParamSerializer(expectedParams); + + const expectedPath = `Clients/${controller.client.id}/my-report-html?${serializedParams}`; + $httpBackend.expect('GET', expectedPath).respond(true); + controller.preview(); + $httpBackend.flush(); expect(controller.$.showPreview.show).toHaveBeenCalledWith(); }); }); - describe('sendSample()', () => { - it(`should perform a query (GET) and call go() method`, () => { - jest.spyOn(controller.$state, 'go'); - - controller.send = (isPreview, cb) => { - cb({ - data: true - }); - }; - controller.sendSample(); - - expect(controller.$state.go).toHaveBeenCalledWith('client.card.sample.index'); - }); - }); - describe('getWorkerEmail()', () => { it(`should perform a query and then set the replyTo property to the clientSample object`, () => { const expectedEmail = 'batman@arkhamcity.com'; diff --git a/modules/client/front/sample/index/index.html b/modules/client/front/sample/index/index.html index 5909e1283..1f499a589 100644 --- a/modules/client/front/sample/index/index.html +++ b/modules/client/front/sample/index/index.html @@ -30,9 +30,9 @@
- {{::sample.worker.user.name}} + ng-click="workerDescriptor.show($event, sample.user.id)" + ng-class="{'link': sample.user}"> + {{::sample.user.name || 'System' | translate}} {{::sample.company.code}} diff --git a/modules/client/front/sample/index/index.js b/modules/client/front/sample/index/index.js index 132704de0..7aa44c67f 100644 --- a/modules/client/front/sample/index/index.js +++ b/modules/client/front/sample/index/index.js @@ -12,15 +12,9 @@ class Controller extends Section { fields: ['code', 'description'] } }, { - relation: 'worker', + relation: 'user', scope: { - fields: ['userFk'], - include: { - relation: 'user', - scope: { - fields: ['name'] - } - } + fields: ['id', 'name'] } }, { relation: 'company', diff --git a/modules/client/front/search-panel/index.html b/modules/client/front/search-panel/index.html index 9caf4185b..a02f93882 100644 --- a/modules/client/front/search-panel/index.html +++ b/modules/client/front/search-panel/index.html @@ -50,6 +50,22 @@ ng-model="filter.postcode"> + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ \ No newline at end of file diff --git a/modules/client/front/unpaid/index.js b/modules/client/front/unpaid/index.js new file mode 100644 index 000000000..a8ff64386 --- /dev/null +++ b/modules/client/front/unpaid/index.js @@ -0,0 +1,14 @@ +import ngModule from '../module'; +import Section from 'salix/components/section'; + +export default class Controller extends Section { + setDefaultDate(hasData) { + if (hasData && !this.clientUnpaid.dated) + this.clientUnpaid.dated = new Date(); + } +} + +ngModule.vnComponent('vnClientUnpaid', { + template: require('./index.html'), + controller: Controller +}); diff --git a/modules/client/front/unpaid/index.spec.js b/modules/client/front/unpaid/index.spec.js new file mode 100644 index 000000000..bfeb7df19 --- /dev/null +++ b/modules/client/front/unpaid/index.spec.js @@ -0,0 +1,38 @@ +import './index'; + +describe('client unpaid', () => { + describe('Component vnClientUnpaid', () => { + let controller; + + beforeEach(ngModule('client')); + + beforeEach(inject($componentController => { + const $element = angular.element(''); + controller = $componentController('vnClientUnpaid', {$element}); + })); + + describe('setDefaultDate()', () => { + it(`should not set today date if has dated`, () => { + const hasData = true; + const yesterday = new Date(); + yesterday.setDate(yesterday.getDate() - 1); + + controller.clientUnpaid = { + dated: yesterday + }; + controller.setDefaultDate(hasData); + + expect(controller.clientUnpaid.dated).toEqual(yesterday); + }); + + it(`should set today if not has dated`, () => { + const hasData = true; + + controller.clientUnpaid = {}; + controller.setDefaultDate(hasData); + + expect(controller.clientUnpaid.dated).toBeDefined(); + }); + }); + }); +}); diff --git a/modules/client/front/unpaid/locale/es.yml b/modules/client/front/unpaid/locale/es.yml new file mode 100644 index 000000000..d88764407 --- /dev/null +++ b/modules/client/front/unpaid/locale/es.yml @@ -0,0 +1 @@ +Unpaid client: Cliente impagado \ No newline at end of file diff --git a/modules/client/front/web-access/index.html b/modules/client/front/web-access/index.html index 610497994..b776fa577 100644 --- a/modules/client/front/web-access/index.html +++ b/modules/client/front/web-access/index.html @@ -1,11 +1,16 @@ -
+ + + + + + + { + this.$http.patch(`Clients/${this.client.id}/setPassword`, data).then(() => { this.vnApp.showSuccess(this.$t('Data saved!')); }); } catch (e) { @@ -59,6 +59,18 @@ export default class Controller extends Section { return true; } + + onSubmit() { + const data = { + name: this.account.name, + email: this.account.email, + active: this.account.active + }; + this.$http.patch(`Clients/${this.client.id}/updateUser`, data).then(() => { + this.$.watcher.notifySaved(); + this.$.watcher.updateOriginalData(); + }); + } } Controller.$inject = ['$element', '$scope']; diff --git a/modules/client/front/web-access/index.spec.js b/modules/client/front/web-access/index.spec.js index 00fa12781..c1bb47a8e 100644 --- a/modules/client/front/web-access/index.spec.js +++ b/modules/client/front/web-access/index.spec.js @@ -52,7 +52,7 @@ describe('Component VnClientWebAccess', () => { }); describe('checkConditions()', () => { - it(`should perform a query to check if the client is valid and then store a boolean into the controller`, () => { + it('should perform a query to check if the client is valid', () => { controller.client = {id: '1234'}; expect(controller.canEnableCheckBox).toBeTruthy(); @@ -82,7 +82,9 @@ describe('Component VnClientWebAccess', () => { controller.newPassword = 'm24x8'; controller.repeatPassword = 'm24x8'; controller.canChangePassword = true; - $httpBackend.expectPATCH('Accounts/1234', {password: 'm24x8'}).respond('done'); + + const query = `Clients/${controller.client.id}/setPassword`; + $httpBackend.expectPATCH(query, {newPassword: controller.newPassword}).respond('done'); controller.onPassChange(); $httpBackend.flush(); }); diff --git a/modules/client/front/web-access/locale/es.yml b/modules/client/front/web-access/locale/es.yml index 4a3ac0ab4..5090ed020 100644 --- a/modules/client/front/web-access/locale/es.yml +++ b/modules/client/front/web-access/locale/es.yml @@ -4,4 +4,6 @@ New password: Nueva contraseña Repeat password: Repetir contraseña Change password: Cambiar contraseña Passwords don't match: Las contraseñas no coinciden -You must enter a new password: Debes introducir una nueva contraseña \ No newline at end of file +You must enter a new password: Debes introducir una nueva contraseña +Recovery email: Correo de recuperación +This email is used for user to regain access their account.: Este correo electrónico se usa para que el usuario recupere el acceso a su cuenta. \ No newline at end of file diff --git a/modules/entry/back/methods/entry/editLatestBuys.js b/modules/entry/back/methods/entry/editLatestBuys.js index fb0397d2b..2642d4f4d 100644 --- a/modules/entry/back/methods/entry/editLatestBuys.js +++ b/modules/entry/back/methods/entry/editLatestBuys.js @@ -1,27 +1,32 @@ module.exports = Self => { - Self.remoteMethod('editLatestBuys', { + Self.remoteMethodCtx('editLatestBuys', { description: 'Updates a column for one or more buys', accessType: 'WRITE', accepts: [{ arg: 'field', - type: 'String', + type: 'string', required: true, description: `the column to edit` }, { arg: 'newValue', - type: 'Any', + type: 'any', required: true, description: `The new value to save` }, { arg: 'lines', - type: ['Object'], + type: ['object'], required: true, description: `the buys which will be modified` + }, + { + arg: 'filter', + type: 'object', + description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string' }], returns: { - type: 'Object', + type: 'object', root: true }, http: { @@ -30,7 +35,7 @@ module.exports = Self => { } }); - Self.editLatestBuys = async(field, newValue, lines, options) => { + Self.editLatestBuys = async(ctx, field, newValue, lines, filter, options) => { let tx; const myOptions = {}; @@ -47,7 +52,7 @@ module.exports = Self => { switch (field) { case 'size': - case 'density': + case 'weightByPiece': case 'description': case 'packingOut': modelName = 'Item'; @@ -64,17 +69,19 @@ module.exports = Self => { const models = Self.app.models; const model = models[modelName]; - try { const promises = []; + const value = {}; + value[field] = newValue; + + if (filter) { + ctx.args.filter = {where: filter, limit: null}; + lines = await models.Buy.latestBuysFilter(ctx, null, myOptions); + } const targets = lines.map(line => { return line[identifier]; }); - - const value = {}; - value[field] = newValue; - for (let target of targets) promises.push(model.upsertWithWhere({id: target}, value, myOptions)); diff --git a/modules/entry/back/methods/entry/entryOrderPdf.js b/modules/entry/back/methods/entry/entryOrderPdf.js new file mode 100644 index 000000000..e6d37fdb6 --- /dev/null +++ b/modules/entry/back/methods/entry/entryOrderPdf.js @@ -0,0 +1,54 @@ +const {Report} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('entryOrderPdf', { + description: 'Returns the entry order pdf', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/entry-order-pdf', + verb: 'GET' + } + }); + + Self.entryOrderPdf = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const report = new Report('entry-order', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="doc-${id}.pdf"`]; + }; +}; diff --git a/modules/entry/back/methods/entry/filter.js b/modules/entry/back/methods/entry/filter.js index 13690d3ac..3a08bffff 100644 --- a/modules/entry/back/methods/entry/filter.js +++ b/modules/entry/back/methods/entry/filter.js @@ -154,9 +154,10 @@ module.exports = Self => { e.id, e.supplierFk, e.dated, - e.ref, + e.ref reference, + e.ref invoiceNumber, e.isBooked, - e.isInventory, + e.isExcludedFromAvailable, e.notes, e.evaNotes AS observation, e.isConfirmed, diff --git a/modules/entry/back/methods/entry/getBuys.js b/modules/entry/back/methods/entry/getBuys.js index 6da9ec53e..ebb271df1 100644 --- a/modules/entry/back/methods/entry/getBuys.js +++ b/modules/entry/back/methods/entry/getBuys.js @@ -18,7 +18,7 @@ module.exports = Self => { } ], returns: { - type: ['Object'], + type: ['object'], root: true }, http: { @@ -42,6 +42,7 @@ module.exports = Self => { 'stickers', 'packing', 'grouping', + 'groupingMode', 'quantity', 'packageFk', 'weight', diff --git a/modules/entry/back/methods/entry/getEntry.js b/modules/entry/back/methods/entry/getEntry.js index 66238d0dc..cac3c65f8 100644 --- a/modules/entry/back/methods/entry/getEntry.js +++ b/modules/entry/back/methods/entry/getEntry.js @@ -43,7 +43,7 @@ module.exports = Self => { 'name', 'shipped', 'landed', - 'agencyFk', + 'agencyModeFk', 'warehouseOutFk', 'warehouseInFk', 'isReceived', diff --git a/modules/entry/back/methods/entry/importBuys.js b/modules/entry/back/methods/entry/importBuys.js index fb2f5f452..fdc6b058e 100644 --- a/modules/entry/back/methods/entry/importBuys.js +++ b/modules/entry/back/methods/entry/importBuys.js @@ -12,10 +12,15 @@ module.exports = Self => { http: {source: 'path'} }, { - arg: 'ref', + arg: 'reference', type: 'string', description: 'The buyed boxes ids', }, + { + arg: 'invoiceNumber', + type: 'string', + description: 'The registered invoice number', + }, { arg: 'observation', type: 'string', @@ -63,7 +68,8 @@ module.exports = Self => { await entry.updateAttributes({ observation: args.observation, - ref: args.ref + reference: args.reference, + invoiceNumber: args.invoiceNumber }, myOptions); const travel = entry.travel(); diff --git a/modules/entry/back/methods/entry/importBuysPreview.js b/modules/entry/back/methods/entry/importBuysPreview.js index 5b88b587c..730ecab0a 100644 --- a/modules/entry/back/methods/entry/importBuysPreview.js +++ b/modules/entry/back/methods/entry/importBuysPreview.js @@ -20,7 +20,7 @@ module.exports = Self => { }, http: { path: `/:id/importBuysPreview`, - verb: 'GET' + verb: 'POST' } }); diff --git a/modules/entry/back/methods/entry/lastItemBuys.js b/modules/entry/back/methods/entry/lastItemBuys.js index 7e83f1e5f..87b99c229 100644 --- a/modules/entry/back/methods/entry/lastItemBuys.js +++ b/modules/entry/back/methods/entry/lastItemBuys.js @@ -63,7 +63,6 @@ module.exports = Self => { stmt = new ParameterizedSQL( `CREATE TEMPORARY TABLE tmp.item (PRIMARY KEY (id)) - ENGINE = MEMORY SELECT i.*, p.name AS producerName, diff --git a/modules/entry/back/methods/entry/latestBuysFilter.js b/modules/entry/back/methods/entry/latestBuysFilter.js index 04570533c..b920f4b58 100644 --- a/modules/entry/back/methods/entry/latestBuysFilter.js +++ b/modules/entry/back/methods/entry/latestBuysFilter.js @@ -86,7 +86,7 @@ module.exports = Self => { } ], returns: { - type: ['Object'], + type: ['object'], root: true }, http: { @@ -96,6 +96,7 @@ module.exports = Self => { }); Self.latestBuysFilter = async(ctx, filter, options) => { + const models = Self.app.models; const myOptions = {}; if (typeof options == 'object') @@ -143,14 +144,20 @@ module.exports = Self => { const stmts = []; let stmt; - stmts.push('CALL cache.visible_refresh(@calc_id, FALSE, 1)'); + const warehouse = await models.Warehouse.findOne({where: {code: 'ALG'}}, myOptions); + stmt = new ParameterizedSQL(`CALL cache.visible_refresh(@calc_id, FALSE, ?)`, [warehouse.id]); + stmts.push(stmt); + const userConfig = await models.UserConfig.getUserConfig(ctx, myOptions); + + const date = new Date(); + date.setHours(0, 0, 0, 0); stmt = new ParameterizedSQL(` SELECT i.image, i.id AS itemFk, i.size, - i.density, + i.weightByPiece, it.code, i.typeFk, i.family, @@ -196,15 +203,15 @@ module.exports = Self => { LEFT JOIN cache.visible v ON v.item_id = lb.item_id AND v.calc_id = @calc_id JOIN item i ON i.id = lb.item_id - JOIN itemType it ON it.id = i.typeFk AND lb.warehouse_id = it.warehouseFk + JOIN itemType it ON it.id = i.typeFk AND lb.warehouse_id = ? JOIN buy b ON b.id = lb.buy_id LEFT JOIN itemCategory ic ON ic.id = it.categoryFk LEFT JOIN itemType t ON t.id = i.typeFk LEFT JOIN intrastat intr ON intr.id = i.intrastatFk LEFT JOIN origin ori ON ori.id = i.originFk - LEFT JOIN entry e ON e.id = b.entryFk AND e.created >= DATE_SUB(CURDATE(),INTERVAL 1 YEAR) + LEFT JOIN entry e ON e.id = b.entryFk AND e.created >= DATE_SUB(? ,INTERVAL 1 YEAR) LEFT JOIN supplier s ON s.id = e.supplierFk` - ); + , [userConfig.warehouseFk, date]); if (ctx.args.tags) { let i = 1; diff --git a/modules/entry/back/methods/entry/specs/editLatestBuys.spec.js b/modules/entry/back/methods/entry/specs/editLatestBuys.spec.js index b17b0ab21..86ed9dddc 100644 --- a/modules/entry/back/methods/entry/specs/editLatestBuys.spec.js +++ b/modules/entry/back/methods/entry/specs/editLatestBuys.spec.js @@ -6,10 +6,11 @@ describe('Buy editLatestsBuys()', () => { const options = {transaction: tx}; try { - let ctx = { + const ctx = { args: { search: 'Ranged weapon longbow 2m' - } + }, + req: {accessToken: {userId: 1}} }; const [original] = await models.Buy.latestBuysFilter(ctx, null, options); @@ -18,7 +19,36 @@ describe('Buy editLatestsBuys()', () => { const newValue = 99; const lines = [{itemFk: original.itemFk, id: original.id}]; - await models.Buy.editLatestBuys(field, newValue, lines, options); + await models.Buy.editLatestBuys(ctx, field, newValue, lines, null, options); + + const [result] = await models.Buy.latestBuysFilter(ctx, null, options); + + expect(result[field]).toEqual(newValue); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should change the value of a given column for filter', async() => { + const tx = await models.Buy.beginTransaction({}); + const options = {transaction: tx}; + + try { + const filter = {'i.typeFk': 1}; + const ctx = { + args: { + filter: filter + }, + req: {accessToken: {userId: 1}} + }; + + const field = 'size'; + const newValue = 88; + + await models.Buy.editLatestBuys(ctx, field, newValue, null, filter, options); const [result] = await models.Buy.latestBuysFilter(ctx, null, options); diff --git a/modules/entry/back/methods/entry/specs/importBuys.spec.js b/modules/entry/back/methods/entry/specs/importBuys.spec.js index 9cf6f4300..4f9204c6a 100644 --- a/modules/entry/back/methods/entry/specs/importBuys.spec.js +++ b/modules/entry/back/methods/entry/specs/importBuys.spec.js @@ -15,13 +15,15 @@ describe('entry import()', () => { }); it('should import the buy rows', async() => { - const expectedRef = '1, 2'; + const expectedReference = '1, 2'; + const expectedInvoiceNumber = '1, 2'; const expectedObservation = '123456'; const ctx = { req: activeCtx, args: { observation: expectedObservation, - ref: expectedRef, + reference: expectedReference, + invoiceNumber: expectedInvoiceNumber, buys: [ { itemFk: 1, @@ -58,7 +60,8 @@ describe('entry import()', () => { }, options); expect(updatedEntry.observation).toEqual(expectedObservation); - expect(updatedEntry.ref).toEqual(expectedRef); + expect(updatedEntry.reference).toEqual(expectedReference); + expect(updatedEntry.invoiceNumber).toEqual(expectedInvoiceNumber); expect(entryBuys.length).toEqual(4); await tx.rollback(); diff --git a/modules/entry/back/methods/entry/specs/importBuysPreview.spec.js b/modules/entry/back/methods/entry/specs/importBuysPreview.spec.js index edfdac988..41971a64c 100644 --- a/modules/entry/back/methods/entry/specs/importBuysPreview.spec.js +++ b/modules/entry/back/methods/entry/specs/importBuysPreview.spec.js @@ -1,5 +1,6 @@ const models = require('vn-loopback/server/server').models; const LoopBackContext = require('loopback-context'); +const activeCtx = {accessToken: {userId: 9}}; describe('entry importBuysPreview()', () => { const entryId = 1; diff --git a/modules/entry/back/methods/entry/specs/latestBuysFilter.spec.js b/modules/entry/back/methods/entry/specs/latestBuysFilter.spec.js index aa8f23a85..9b1e60532 100644 --- a/modules/entry/back/methods/entry/specs/latestBuysFilter.spec.js +++ b/modules/entry/back/methods/entry/specs/latestBuysFilter.spec.js @@ -1,6 +1,6 @@ const models = require('vn-loopback/server/server').models; -describe('Buy latests buys filter()', () => { +describe('Entry latests buys filter()', () => { it('should return the entry matching "search"', async() => { const tx = await models.Buy.beginTransaction({}); const options = {transaction: tx}; @@ -9,10 +9,11 @@ describe('Buy latests buys filter()', () => { const ctx = { args: { search: 'Ranged weapon longbow 2m' - } + }, + req: {accessToken: {userId: 1}} }; - const results = await models.Buy.latestBuysFilter(ctx); + const results = await models.Buy.latestBuysFilter(ctx, options); const firstBuy = results[0]; expect(results.length).toEqual(1); @@ -33,7 +34,8 @@ describe('Buy latests buys filter()', () => { const ctx = { args: { id: 1 - } + }, + req: {accessToken: {userId: 1}} }; const results = await models.Buy.latestBuysFilter(ctx, options); @@ -57,7 +59,8 @@ describe('Buy latests buys filter()', () => { tags: [ {tagFk: 27, value: '2m'} ] - } + }, + req: {accessToken: {userId: 1}} }; const results = await models.Buy.latestBuysFilter(ctx, options); @@ -79,7 +82,8 @@ describe('Buy latests buys filter()', () => { const ctx = { args: { categoryFk: 1 - } + }, + req: {accessToken: {userId: 1}} }; const results = await models.Buy.latestBuysFilter(ctx, options); @@ -101,7 +105,8 @@ describe('Buy latests buys filter()', () => { const ctx = { args: { typeFk: 2 - } + }, + req: {accessToken: {userId: 1}} }; const results = await models.Buy.latestBuysFilter(ctx, options); @@ -123,7 +128,8 @@ describe('Buy latests buys filter()', () => { const ctx = { args: { active: true - } + }, + req: {accessToken: {userId: 1}} }; const results = await models.Buy.latestBuysFilter(ctx, options); @@ -145,7 +151,8 @@ describe('Buy latests buys filter()', () => { const ctx = { args: { active: false - } + }, + req: {accessToken: {userId: 1}} }; const results = await models.Buy.latestBuysFilter(ctx, options); @@ -167,7 +174,8 @@ describe('Buy latests buys filter()', () => { const ctx = { args: { visible: true - } + }, + req: {accessToken: {userId: 1}} }; const results = await models.Buy.latestBuysFilter(ctx, options); @@ -189,7 +197,8 @@ describe('Buy latests buys filter()', () => { const ctx = { args: { visible: false - } + }, + req: {accessToken: {userId: 1}} }; const results = await models.Buy.latestBuysFilter(ctx, options); @@ -211,7 +220,8 @@ describe('Buy latests buys filter()', () => { const ctx = { args: { floramondo: true - } + }, + req: {accessToken: {userId: 1}} }; const results = await models.Buy.latestBuysFilter(ctx, options); @@ -233,7 +243,8 @@ describe('Buy latests buys filter()', () => { const ctx = { args: { floramondo: false - } + }, + req: {accessToken: {userId: 1}} }; const results = await models.Buy.latestBuysFilter(ctx, options); @@ -255,7 +266,8 @@ describe('Buy latests buys filter()', () => { const ctx = { args: { salesPersonFk: 35 - } + }, + req: {accessToken: {userId: 1}} }; const results = await models.Buy.latestBuysFilter(ctx, options); @@ -277,7 +289,8 @@ describe('Buy latests buys filter()', () => { const ctx = { args: { description: 'Increases block' - } + }, + req: {accessToken: {userId: 1}} }; const results = await models.Buy.latestBuysFilter(ctx, options); @@ -299,7 +312,8 @@ describe('Buy latests buys filter()', () => { const ctx = { args: { supplierFk: 1 - } + }, + req: {accessToken: {userId: 1}} }; const results = await models.Buy.latestBuysFilter(ctx, options); @@ -328,7 +342,8 @@ describe('Buy latests buys filter()', () => { args: { from: from, to: to - } + }, + req: {accessToken: {userId: 1}} }; const results = await models.Buy.latestBuysFilter(ctx, options); diff --git a/modules/entry/back/models/entry-log.json b/modules/entry/back/models/entry-log.json index c63a55d9e..6f8edaf25 100644 --- a/modules/entry/back/models/entry-log.json +++ b/modules/entry/back/models/entry-log.json @@ -9,40 +9,40 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "forceId": false }, "originFk": { - "type": "Number", + "type": "number", "required": true }, "userFk": { - "type": "Number" + "type": "number" }, "action": { - "type": "String", + "type": "string", "required": true }, "changedModel": { - "type": "String" + "type": "string" }, "oldInstance": { - "type": "Object" + "type": "object" }, "newInstance": { - "type": "Object" + "type": "object" }, "creationDate": { - "type": "Date" + "type": "date" }, "changedModelId": { - "type": "String" + "type": "string" }, "changedModelValue": { - "type": "String" + "type": "string" }, "description": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/modules/entry/back/models/entry-observation.json b/modules/entry/back/models/entry-observation.json index 535735d83..0c63dd663 100644 --- a/modules/entry/back/models/entry-observation.json +++ b/modules/entry/back/models/entry-observation.json @@ -13,11 +13,11 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "description": { - "type": "String", + "type": "string", "required": true } }, diff --git a/modules/entry/back/models/entry.js b/modules/entry/back/models/entry.js index 573e5b1cb..4854bc3d3 100644 --- a/modules/entry/back/models/entry.js +++ b/modules/entry/back/models/entry.js @@ -6,4 +6,5 @@ module.exports = Self => { require('../methods/entry/importBuys')(Self); require('../methods/entry/importBuysPreview')(Self); require('../methods/entry/lastItemBuys')(Self); + require('../methods/entry/entryOrderPdf')(Self); }; diff --git a/modules/entry/back/models/entry.json b/modules/entry/back/models/entry.json index d8bd079a2..d3c802ad2 100644 --- a/modules/entry/back/models/entry.json +++ b/modules/entry/back/models/entry.json @@ -18,13 +18,22 @@ "dated": { "type": "date" }, - "ref": { - "type": "string" + "reference": { + "type": "string", + "mysql": { + "columnName": "ref" + } + }, + "invoiceNumber": { + "type": "string", + "mysql": { + "columnName": "ref" + } }, "isBooked": { "type": "boolean" }, - "isInventory": { + "isExcludedFromAvailable": { "type": "boolean" }, "notes": { diff --git a/modules/entry/front/basic-data/index.html b/modules/entry/front/basic-data/index.html index f75834045..68a65e890 100644 --- a/modules/entry/front/basic-data/index.html +++ b/modules/entry/front/basic-data/index.html @@ -48,7 +48,7 @@ @@ -61,30 +61,13 @@ - - - - - - - - + label="Invoice number" + ng-model="$ctrl.entry.invoiceNumber" + rule + vn-focus> + + + + + + + + + + + + ng-model="$ctrl.entry.isExcludedFromAvailable"> diff --git a/modules/entry/front/basic-data/index.js b/modules/entry/front/basic-data/index.js index 80870c3f3..564a3df5c 100644 --- a/modules/entry/front/basic-data/index.js +++ b/modules/entry/front/basic-data/index.js @@ -46,7 +46,7 @@ class Controller extends Section { if (!value) continue; switch (key) { - case 'agencyFk': + case 'agencyModeFk': case 'warehouseInFk': case 'warehouseOutFk': case 'shipped': diff --git a/modules/entry/front/buy/import/index.js b/modules/entry/front/buy/import/index.js index a2a28ef69..ba0a98e62 100644 --- a/modules/entry/front/buy/import/index.js +++ b/modules/entry/front/buy/import/index.js @@ -58,7 +58,7 @@ class Controller extends Section { fetchBuys(buys) { const params = {buys}; const query = `Entries/${this.$params.id}/importBuysPreview`; - this.$http.get(query, {params}).then(res => { + this.$http.post(query, params).then(res => { this.import.buys = res.data; }); } diff --git a/modules/entry/front/buy/import/index.spec.js b/modules/entry/front/buy/import/index.spec.js index bf100dc83..036f52074 100644 --- a/modules/entry/front/buy/import/index.spec.js +++ b/modules/entry/front/buy/import/index.spec.js @@ -111,9 +111,8 @@ describe('Entry', () => { 'volume': 1125} ]; - const serializedParams = $httpParamSerializer({buys}); - const query = `Entries/1/importBuysPreview?${serializedParams}`; - $httpBackend.expectGET(query).respond(200, buys); + const query = `Entries/1/importBuysPreview`; + $httpBackend.expectPOST(query).respond(200, buys); controller.fetchBuys(buys); $httpBackend.flush(); diff --git a/modules/entry/front/buy/index/index.html b/modules/entry/front/buy/index/index.html index bb33b98b3..ae67e208b 100644 --- a/modules/entry/front/buy/index/index.html +++ b/modules/entry/front/buy/index/index.html @@ -91,7 +91,7 @@ url="Packagings" show-field="id" value-field="id" - where="{isBox: true}" + where="{freightItemFk: true}" ng-model="buy.packageFk" on-change="$ctrl.saveBuy(buy)"> @@ -111,17 +111,45 @@ - + + + + + + - + + + + + + @@ -213,7 +241,6 @@ vn-id="item-descriptor" warehouse-fk="$ctrl.vnConfig.warehouseFk"> - { + buy.groupingMode = newGroupingMode; + this.vnApp.showSuccess(this.$t('Data saved!')); + }); + } } ngModule.vnComponent('vnEntryBuyIndex', { diff --git a/modules/entry/front/buy/index/index.spec.js b/modules/entry/front/buy/index/index.spec.js index ee249c3b6..aff52bc80 100644 --- a/modules/entry/front/buy/index/index.spec.js +++ b/modules/entry/front/buy/index/index.spec.js @@ -1,3 +1,4 @@ +/* eslint max-len: ["error", { "code": 150 }]*/ import './index.js'; describe('Entry buy', () => { @@ -64,4 +65,50 @@ describe('Entry buy', () => { expect(controller.buys.length).toEqual(1); }); }); + + describe('toggleGroupingMode()', () => { + it(`should toggle grouping mode from grouping to packing`, () => { + const grouping = 1; + const packing = 2; + const buy = {id: 999, groupingMode: grouping}; + + const query = `Buys/${buy.id}`; + $httpBackend.expectPATCH(query, {groupingMode: packing}).respond(200); + controller.toggleGroupingMode(buy, 'packing'); + $httpBackend.flush(); + }); + + it(`should toggle grouping mode from packing to grouping`, () => { + const grouping = 1; + const packing = 2; + const buy = {id: 999, groupingMode: packing}; + + const query = `Buys/${buy.id}`; + $httpBackend.expectPATCH(query, {groupingMode: grouping}).respond(200); + controller.toggleGroupingMode(buy, 'grouping'); + $httpBackend.flush(); + }); + + it(`should toggle off the grouping mode if it was packing to packing`, () => { + const noGrouping = 0; + const packing = 2; + const buy = {id: 999, groupingMode: packing}; + + const query = `Buys/${buy.id}`; + $httpBackend.expectPATCH(query, {groupingMode: noGrouping}).respond(200); + controller.toggleGroupingMode(buy, 'packing'); + $httpBackend.flush(); + }); + + it(`should toggle off the grouping mode if it was grouping to grouping`, () => { + const noGrouping = 0; + const grouping = 1; + const buy = {id: 999, groupingMode: grouping}; + + const query = `Buys/${buy.id}`; + $httpBackend.expectPATCH(query, {groupingMode: noGrouping}).respond(200); + controller.toggleGroupingMode(buy, 'grouping'); + $httpBackend.flush(); + }); + }); }); diff --git a/modules/entry/front/card/index.js b/modules/entry/front/card/index.js index eafed171b..96f4702e2 100644 --- a/modules/entry/front/card/index.js +++ b/modules/entry/front/card/index.js @@ -14,7 +14,7 @@ class Controller extends ModuleCard { { relation: 'travel', scope: { - fields: ['id', 'landed', 'agencyFk', 'warehouseOutFk'], + fields: ['id', 'landed', 'agencyModeFk', 'warehouseOutFk'], include: [ { relation: 'agency', diff --git a/modules/entry/front/descriptor/index.html b/modules/entry/front/descriptor/index.html index 04bef0024..7b61a0cf5 100644 --- a/modules/entry/front/descriptor/index.html +++ b/modules/entry/front/descriptor/index.html @@ -1,6 +1,7 @@ + description="$ctrl.entry.supplier.nickname" + summary="$ctrl.$.summary"> + ng-if="$ctrl.entry.isExcludedFromAvailable"> + + + \ No newline at end of file diff --git a/modules/entry/front/descriptor/index.js b/modules/entry/front/descriptor/index.js index fed3787d4..3452a6d34 100644 --- a/modules/entry/front/descriptor/index.js +++ b/modules/entry/front/descriptor/index.js @@ -14,9 +14,9 @@ class Controller extends Descriptor { let travelFilter; const entryTravel = this.entry && this.entry.travel; - if (entryTravel && entryTravel.agencyFk) { + if (entryTravel && entryTravel.agencyModeFk) { travelFilter = this.entry && JSON.stringify({ - agencyFk: entryTravel.agencyFk + agencyModeFk: entryTravel.agencyModeFk }); } return travelFilter; @@ -49,7 +49,7 @@ class Controller extends Descriptor { { relation: 'travel', scope: { - fields: ['id', 'landed', 'agencyFk', 'warehouseOutFk'], + fields: ['id', 'landed', 'agencyModeFk', 'warehouseOutFk'], include: [ { relation: 'agency', @@ -86,9 +86,7 @@ class Controller extends Descriptor { } showEntryReport() { - this.vnReport.show('entry-order', { - entryId: this.entry.id - }); + this.vnReport.show(`Entries/${this.id}/entry-order-pdf`); } } diff --git a/modules/entry/front/descriptor/index.spec.js b/modules/entry/front/descriptor/index.spec.js index 84defea3b..714bb9f3c 100644 --- a/modules/entry/front/descriptor/index.spec.js +++ b/modules/entry/front/descriptor/index.spec.js @@ -17,13 +17,10 @@ describe('Entry Component vnEntryDescriptor', () => { jest.spyOn(controller.vnReport, 'show'); window.open = jasmine.createSpy('open'); - const params = { - clientId: controller.vnConfig.storage.currentUserWorkerId, - entryId: entry.id - }; controller.showEntryReport(); + const expectedPath = `Entries/${entry.id}/entry-order-pdf`; - expect(controller.vnReport.show).toHaveBeenCalledWith('entry-order', params); + expect(controller.vnReport.show).toHaveBeenCalledWith(expectedPath); }); }); diff --git a/modules/entry/front/index/index.html b/modules/entry/front/index/index.html index b48f99aab..42177be21 100644 --- a/modules/entry/front/index/index.html +++ b/modules/entry/front/index/index.html @@ -12,6 +12,7 @@ Id Landed Reference + Invoice number Supplier Booked Confirmed @@ -25,7 +26,7 @@ ui-sref="entry.card.summary({id: {{::entry.id}}})"> @@ -45,7 +46,8 @@ {{::entry.landed | date:'dd/MM/yyyy'}} - {{::entry.ref}} + {{::entry.reference}} + {{::entry.invoiceNumber}} {{::entry.supplierName}} diff --git a/modules/entry/front/index/locale/es.yml b/modules/entry/front/index/locale/es.yml index 519f8e39a..4f12fc7bb 100644 --- a/modules/entry/front/index/locale/es.yml +++ b/modules/entry/front/index/locale/es.yml @@ -14,4 +14,5 @@ Booked: Contabilizada Is inventory: Inventario Notes: Notas Status: Estado -Selection: Selección \ No newline at end of file +Selection: Selección +Invoice number: Núm. factura \ No newline at end of file diff --git a/modules/entry/front/latest-buys/index.html b/modules/entry/front/latest-buys/index.html index 4eeeeedce..fc44ddfc2 100644 --- a/modules/entry/front/latest-buys/index.html +++ b/modules/entry/front/latest-buys/index.html @@ -4,6 +4,7 @@ order="itemFk DESC" limit="20" data="$ctrl.buys" + on-data-change="$ctrl.reCheck()" auto-load="true"> @@ -21,7 +22,7 @@ @@ -29,9 +30,11 @@ @@ -65,8 +68,8 @@ - @@ -179,12 +183,12 @@ {{::buy.intrastat}} - + @@ -229,7 +233,7 @@ - diff --git a/modules/entry/front/latest-buys/index.js b/modules/entry/front/latest-buys/index.js index 385e7e4b6..d9065193e 100644 --- a/modules/entry/front/latest-buys/index.js +++ b/modules/entry/front/latest-buys/index.js @@ -6,7 +6,8 @@ export default class Controller extends Section { constructor($element, $) { super($element, $); this.editedColumn; - this.$checkAll = false; + this.checkAll = false; + this.checkedBuys = []; this.smartTableOptions = { activeButtons: { @@ -79,7 +80,7 @@ export default class Controller extends Section { {field: 'weight', displayName: this.$t('Weight')}, {field: 'description', displayName: this.$t('Description')}, {field: 'size', displayName: this.$t('Size')}, - {field: 'density', displayName: this.$t('Density')}, + {field: 'weightByPiece', displayName: this.$t('weight/Piece')}, {field: 'packingOut', displayName: this.$t('PackingOut')}, {field: 'landing', displayName: this.$t('Landing')} ]; @@ -91,7 +92,7 @@ export default class Controller extends Section { const buys = this.$.model.data || []; const checkedBuys = []; for (let buy of buys) { - if (buy.$checked) + if (buy.checked) checkedBuys.push(buy); } @@ -102,7 +103,7 @@ export default class Controller extends Section { switch (param) { case 'id': case 'size': - case 'density': + case 'weightByPiece': case 'isActive': case 'family': case 'minPrice': @@ -139,12 +140,33 @@ export default class Controller extends Section { uncheck() { this.checkAll = false; + this.checkedBuys = []; } get totalChecked() { + if (this.checkedDummyCount) + return this.checkedDummyCount; + return this.checked.length; } + saveChecked(buyId) { + const index = this.checkedBuys.indexOf(buyId); + if (index !== -1) + return this.checkedBuys.splice(index, 1); + return this.checkedBuys.push(buyId); + } + + reCheck() { + if (!this.$.model.data) return; + if (!this.checkedBuys.length) return; + + this.$.model.data.forEach(buy => { + if (this.checkedBuys.includes(buy.id)) + buy.checked = true; + }); + } + onEditAccept() { const rowsToEdit = []; for (let row of this.checked) @@ -156,6 +178,23 @@ export default class Controller extends Section { lines: rowsToEdit }; + if (this.checkedDummyCount && this.checkedDummyCount > 0) { + const params = {}; + if (this.$.model.userParams) { + const userParams = this.$.model.userParams; + for (let param in userParams) { + let newParam = this.exprBuilder(param, userParams[param]); + if (!newParam) + newParam = {[param]: userParams[param]}; + Object.assign(params, newParam); + } + } + if (this.$.model.userFilter) + Object.assign(params, this.$.model.userFilter.where); + + data.filter = params; + } + return this.$http.post('Buys/editLatestBuys', data) .then(() => { this.uncheck(); diff --git a/modules/entry/front/latest-buys/index.spec.js b/modules/entry/front/latest-buys/index.spec.js index e9392a797..6574303fc 100644 --- a/modules/entry/front/latest-buys/index.spec.js +++ b/modules/entry/front/latest-buys/index.spec.js @@ -31,10 +31,10 @@ describe('Entry', () => { describe('get checked', () => { it(`should return a set of checked lines`, () => { controller.$.model.data = [ - {$checked: true, id: 1}, - {$checked: true, id: 2}, - {$checked: true, id: 3}, - {$checked: false, id: 4}, + {checked: true, id: 1}, + {checked: true, id: 2}, + {checked: true, id: 3}, + {checked: false, id: 4}, ]; let result = controller.checked; @@ -57,5 +57,44 @@ describe('Entry', () => { expect(result.length).toEqual(0); }); }); + + describe('reCheck()', () => { + it(`should recheck buys`, () => { + controller.$.model.data = [ + {checked: false, id: 1}, + {checked: false, id: 2}, + {checked: false, id: 3}, + {checked: false, id: 4}, + ]; + controller.checkedBuys = [1, 2]; + + controller.reCheck(); + + expect(controller.$.model.data[0].checked).toEqual(true); + expect(controller.$.model.data[1].checked).toEqual(true); + expect(controller.$.model.data[2].checked).toEqual(false); + expect(controller.$.model.data[3].checked).toEqual(false); + }); + }); + + describe('saveChecked()', () => { + it(`should check buy`, () => { + const buyCheck = 3; + controller.checkedBuys = [1, 2]; + + controller.saveChecked(buyCheck); + + expect(controller.checkedBuys[2]).toEqual(buyCheck); + }); + + it(`should uncheck buy`, () => { + const buyUncheck = 3; + controller.checkedBuys = [1, 2, 3]; + + controller.saveChecked(buyUncheck); + + expect(controller.checkedBuys[2]).toEqual(undefined); + }); + }); }); }); diff --git a/modules/entry/front/routes.json b/modules/entry/front/routes.json index 3b2a8f146..37dda7584 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": "icon-lastBuy"} + {"state": "entry.latestBuys", "icon": "contact_support"} ], "card": [ {"state": "entry.card.basicData", "icon": "settings"}, diff --git a/modules/entry/front/search-panel/index.html b/modules/entry/front/search-panel/index.html index 38acdf77d..adcb9d6d4 100644 --- a/modules/entry/front/search-panel/index.html +++ b/modules/entry/front/search-panel/index.html @@ -13,9 +13,16 @@ + ng-model="filter.reference"> + + + + diff --git a/modules/entry/front/search-panel/locale/es.yml b/modules/entry/front/search-panel/locale/es.yml index 88f164145..05b71da99 100644 --- a/modules/entry/front/search-panel/locale/es.yml +++ b/modules/entry/front/search-panel/locale/es.yml @@ -5,4 +5,5 @@ From: Desde To: Hasta Agency: Agencia Warehouse: Almacén -Search entry by id or a suppliers by name or alias: Buscar entrada por id o proveedores por nombre y alias \ No newline at end of file +Search entry by id or a suppliers by name or alias: Buscar entrada por id o proveedores por nombre y alias +Invoice number: Núm. factura \ No newline at end of file diff --git a/modules/entry/front/summary/index.html b/modules/entry/front/summary/index.html index f443a94fe..04844ab99 100644 --- a/modules/entry/front/summary/index.html +++ b/modules/entry/front/summary/index.html @@ -1,6 +1,6 @@ @@ -27,7 +27,10 @@ value="{{$ctrl.entryData.company.code}}"> + value="{{$ctrl.entryData.reference}}"> + + @@ -91,7 +94,7 @@ @@ -123,12 +126,12 @@ diff --git a/modules/entry/front/summary/index.js b/modules/entry/front/summary/index.js index c949dba64..6e18bc959 100644 --- a/modules/entry/front/summary/index.js +++ b/modules/entry/front/summary/index.js @@ -4,6 +4,9 @@ import Summary from 'salix/components/summary'; class Controller extends Summary { get entry() { + if (!this._entry) + return this.$params; + return this._entry; } diff --git a/modules/entry/front/summary/locale/es.yml b/modules/entry/front/summary/locale/es.yml index a141ce56c..1761561ed 100644 --- a/modules/entry/front/summary/locale/es.yml +++ b/modules/entry/front/summary/locale/es.yml @@ -8,4 +8,4 @@ Minimum price: Precio mínimo Buys: Compras Travel: Envio Go to the entry: Ir a la entrada - +Invoice number: Núm. factura diff --git a/modules/invoiceIn/back/methods/invoice-in/filter.js b/modules/invoiceIn/back/methods/invoice-in/filter.js index 7e497d39a..f5eab9099 100644 --- a/modules/invoiceIn/back/methods/invoice-in/filter.js +++ b/modules/invoiceIn/back/methods/invoice-in/filter.js @@ -144,6 +144,7 @@ module.exports = Self => { ii.isBooked, ii.supplierRef, ii.docFk AS dmsFk, + dm.file, ii.supplierFk, ii.expenceFkDeductible deductibleExpenseFk, s.name AS supplierName, @@ -156,7 +157,8 @@ module.exports = Self => { LEFT JOIN duaInvoiceIn dii ON dii.invoiceInFk = ii.id LEFT JOIN dua d ON d.id = dii.duaFk LEFT JOIN awb ON awb.id = d.awbFk - LEFT JOIN company co ON co.id = ii.companyFk` + LEFT JOIN company co ON co.id = ii.companyFk + LEFT JOIN dms dm ON dm.id = ii.docFk` ); const sqlWhere = conn.makeWhere(filter.where); diff --git a/modules/invoiceIn/back/methods/invoice-in/getTotals.js b/modules/invoiceIn/back/methods/invoice-in/getTotals.js index 918467010..f35c10617 100644 --- a/modules/invoiceIn/back/methods/invoice-in/getTotals.js +++ b/modules/invoiceIn/back/methods/invoice-in/getTotals.js @@ -30,7 +30,7 @@ module.exports = Self => { SUM(iidd.amount) totalDueDay FROM vn.invoiceIn ii LEFT JOIN (SELECT SUM(iit.taxableBase) totalTaxableBase, - SUM(iit.taxableBase * (1 + (ti.PorcentajeIva / 100))) totalVat + CAST(SUM(iit.taxableBase * (1 + (ti.PorcentajeIva / 100))) AS DECIMAL(10,2)) totalVat FROM vn.invoiceInTax iit LEFT JOIN sage.TiposIva ti ON ti.CodigoIva = iit.taxTypeSageFk WHERE iit.invoiceInFk = ?) iit ON TRUE diff --git a/modules/invoiceIn/back/methods/invoice-in/invoiceInEmail.js b/modules/invoiceIn/back/methods/invoice-in/invoiceInEmail.js new file mode 100644 index 000000000..0768541a8 --- /dev/null +++ b/modules/invoiceIn/back/methods/invoice-in/invoiceInEmail.js @@ -0,0 +1,53 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('invoiceInEmail', { + description: 'Sends the invoice in email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The invoice id', + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id to send to the recipient preferred language', + required: false + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/:id/invoice-in-email', + verb: 'POST' + } + }); + + Self.invoiceInEmail = async ctx => { + const args = Object.assign({}, ctx.args); + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const email = new Email('invoiceIn', params); + + return email.send(); + }; +}; diff --git a/modules/invoiceIn/back/methods/invoice-in/invoiceInPdf.js b/modules/invoiceIn/back/methods/invoice-in/invoiceInPdf.js new file mode 100644 index 000000000..e7962c93f --- /dev/null +++ b/modules/invoiceIn/back/methods/invoice-in/invoiceInPdf.js @@ -0,0 +1,50 @@ +const {Report} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('invoiceInPdf', { + description: 'Returns the invoiceIn pdf', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The invoiceIn id', + http: {source: 'path'} + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/invoice-in-pdf', + verb: 'GET' + } + }); + + Self.invoiceInPdf = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + delete args.ctx; + + for (const param in args) + params[param] = args[param]; + + const report = new Report('invoiceIn', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="doc-${id}.pdf"`]; + }; +}; diff --git a/modules/invoiceIn/back/methods/invoice-in/summary.js b/modules/invoiceIn/back/methods/invoice-in/summary.js index 265aa06e7..0e55eeaac 100644 --- a/modules/invoiceIn/back/methods/invoice-in/summary.js +++ b/modules/invoiceIn/back/methods/invoice-in/summary.js @@ -46,6 +46,52 @@ module.exports = Self => { fields: ['withholding'] } }, + { + relation: 'invoiceInDueDay', + scope: { + fields: [ + 'id', + 'invoiceInFk', + 'dueDated', + 'bankFk', + 'amount', + 'foreignValue'], + include: [{ + relation: 'bank', + scope: { + fields: ['bank'] + } + }] + } + }, + { + relation: 'invoiceInIntrastat', + scope: { + fields: [ + 'id', + 'invoiceInFk', + 'net', + 'intrastatFk', + 'amount', + 'stems', + 'countryFk', + 'statisticalValue'], + include: [{ + relation: 'intrastat', + scope: { + fields: [ + 'id', + 'description'] + } + }, + { + relation: 'country', + scope: { + fields: ['code'] + } + }] + } + }, { relation: 'invoiceInTax', scope: { diff --git a/modules/invoiceIn/back/model-config.json b/modules/invoiceIn/back/model-config.json index f0745f53b..6765ae81c 100644 --- a/modules/invoiceIn/back/model-config.json +++ b/modules/invoiceIn/back/model-config.json @@ -8,6 +8,9 @@ "InvoiceInDueDay": { "dataSource": "vn" }, + "InvoiceInIntrastat": { + "dataSource": "vn" + }, "InvoiceInLog": { "dataSource": "vn" } diff --git a/modules/invoiceIn/back/models/invoice-in-due-day.json b/modules/invoiceIn/back/models/invoice-in-due-day.json index 5a66ecd8b..d2cffc81b 100644 --- a/modules/invoiceIn/back/models/invoice-in-due-day.json +++ b/modules/invoiceIn/back/models/invoice-in-due-day.json @@ -30,6 +30,13 @@ "created": { "type": "date" } + }, + "relations": { + "bank": { + "type": "belongsTo", + "model": "Bank", + "foreignKey": "bankFk" + } } } diff --git a/modules/invoiceIn/back/models/invoice-in-intrastat.json b/modules/invoiceIn/back/models/invoice-in-intrastat.json new file mode 100644 index 000000000..65ab1f36a --- /dev/null +++ b/modules/invoiceIn/back/models/invoice-in-intrastat.json @@ -0,0 +1,50 @@ +{ + "name": "InvoiceInIntrastat", + "base": "VnModel", + "options": { + "mysql": { + "table": "invoiceInIntrastat" + } + }, + "properties": { + "id": { + "id": true, + "type": "number", + "description": "Identifier" + }, + "invoiceInFk": { + "type": "number" + }, + "net": { + "type": "number" + }, + "intrastatFk": { + "type": "number" + }, + "amount": { + "type": "number" + }, + "stems": { + "type": "number" + }, + "countryFk": { + "type": "number" + }, + "statisticalValue": { + "type": "number" + } + }, + "relations": { + "intrastat": { + "type": "belongsTo", + "model": "Intrastat", + "foreignKey": "intrastatFk" + }, + "country": { + "type": "belongsTo", + "model": "Country", + "foreignKey": "countryFk" + } + } + +} \ No newline at end of file diff --git a/modules/invoiceIn/back/models/invoice-in.js b/modules/invoiceIn/back/models/invoice-in.js index 3b5aa65d9..95ccc7b20 100644 --- a/modules/invoiceIn/back/models/invoice-in.js +++ b/modules/invoiceIn/back/models/invoice-in.js @@ -4,4 +4,6 @@ module.exports = Self => { require('../methods/invoice-in/clone')(Self); require('../methods/invoice-in/toBook')(Self); require('../methods/invoice-in/getTotals')(Self); + require('../methods/invoice-in/invoiceInPdf')(Self); + require('../methods/invoice-in/invoiceInEmail')(Self); }; diff --git a/modules/invoiceIn/back/models/invoice-in.json b/modules/invoiceIn/back/models/invoice-in.json index feb2d9aec..fa8a1d8f8 100644 --- a/modules/invoiceIn/back/models/invoice-in.json +++ b/modules/invoiceIn/back/models/invoice-in.json @@ -64,6 +64,11 @@ "model": "InvoiceInDueDay", "foreignKey": "invoiceInFk" }, + "invoiceInIntrastat": { + "type": "hasMany", + "model": "InvoiceInIntrastat", + "foreignKey": "invoiceInFk" + }, "invoiceInTax": { "type": "hasMany", "model": "InvoiceInTax", @@ -89,6 +94,11 @@ "model": "Supplier", "foreignKey": "supplierFk" }, + "supplierContact": { + "type": "hasMany", + "model": "SupplierContact", + "foreignKey": "supplierFk" + }, "currency": { "type": "belongsTo", "model": "Currency", diff --git a/modules/invoiceIn/front/card/index.js b/modules/invoiceIn/front/card/index.js index 582c2abb8..c7ac08cc7 100644 --- a/modules/invoiceIn/front/card/index.js +++ b/modules/invoiceIn/front/card/index.js @@ -8,6 +8,14 @@ class Controller extends ModuleCard { { relation: 'supplier' }, + { + relation: 'supplierContact', + scope: { + where: { + email: {neq: null} + } + } + }, { relation: 'invoiceInDueDay' }, diff --git a/modules/invoiceIn/front/create/index.html b/modules/invoiceIn/front/create/index.html index 4ec724854..16ecf26cf 100644 --- a/modules/invoiceIn/front/create/index.html +++ b/modules/invoiceIn/front/create/index.html @@ -13,13 +13,14 @@ vn-id="supplier" url="Suppliers" label="Supplier" - search-function="{or: [{id: $search}, {name: {like: '%'+ $search +'%'}}]}" + search-function="{or: [{id: $search}, {name: {like: '%'+ $search +'%'}}, {nif: {like: '%'+ $search +'%'}}]}" + fields="['nif']" show-field="name" value-field="id" ng-model="$ctrl.invoiceIn.supplierFk" order="id" vn-focus> - {{id}}: {{name}} + {{id}}: {{nif}}: {{name}} - - + To book - Clone Invoice + + Show agricultural invoice as PDF + + + Send agricultural invoice as PDF +
@@ -34,7 +46,7 @@ - {{$ctrl.invoiceIn.supplier.nickname}} + {{$ctrl.invoiceIn.supplier.nickname}}
@@ -54,9 +66,9 @@ icon="icon-invoice-in"> - + - +
- - \ No newline at end of file + + + + + + + + + Are you sure you want to send it? + + + + + + + + diff --git a/modules/invoiceIn/front/descriptor/index.js b/modules/invoiceIn/front/descriptor/index.js index 952692496..5cd00d743 100644 --- a/modules/invoiceIn/front/descriptor/index.js +++ b/modules/invoiceIn/front/descriptor/index.js @@ -39,17 +39,25 @@ class Controller extends Descriptor { loadData() { const filter = { include: [ - { - relation: 'company', + {relation: 'supplier'}, + {relation: 'invoiceInDueDay'}, + {relation: 'company', scope: { fields: ['id', 'code'] } } + ] }; return this.getData(`InvoiceIns/${this.id}`, {filter}) - .then(res => this.entity = res.data); + .then(res => { + this.entity = res.data; + this.invoiceIn.amount = res.data.invoiceInDueDay.reduce( + (accumulator, currentValue) => { + return accumulator + (currentValue['amount'] || 0); + }, 0); + }); } checkToBook() { @@ -88,6 +96,20 @@ class Controller extends Descriptor { .then(() => this.$state.reload()) .then(() => this.vnApp.showSuccess(this.$t('InvoiceIn booked'))); } + + showPdfInvoice() { + this.vnReport.show(`InvoiceIns/${this.id}/invoice-in-pdf`); + } + + sendPdfInvoice($data) { + if (!$data.email) + return this.vnApp.showError(this.$t(`The email can't be empty`)); + + return this.vnEmail.send(`InvoiceIns/${this.entity.id}/invoice-in-email`, { + recipient: $data.email, + recipientId: this.entity.supplier.id + }); + } } ngModule.vnComponent('vnInvoiceInDescriptor', { diff --git a/modules/invoiceIn/front/descriptor/index.spec.js b/modules/invoiceIn/front/descriptor/index.spec.js index 46815c155..7e061007f 100644 --- a/modules/invoiceIn/front/descriptor/index.spec.js +++ b/modules/invoiceIn/front/descriptor/index.spec.js @@ -12,12 +12,25 @@ describe('vnInvoiceInDescriptor', () => { controller = $componentController('vnInvoiceInDescriptor', {$element}); controller.invoiceIn = {id: 1}; - $httpBackend.when('GET', `InvoiceIns/${controller.invoiceIn.id}`).respond({id: 1}); })); describe('loadData()', () => { it(`should perform a get query to store the invoice in data into the controller`, () => { - expect(controller.invoiceIn).toEqual({id: 1}); + const invoiceIn = { + id: 1, + invoiceInDueDay: [ + {amount: 1}, + {amount: 2} + ] + }; + const expectedAmount = invoiceIn.invoiceInDueDay[0].amount + invoiceIn.invoiceInDueDay[1].amount; + + $httpBackend.when('GET', `InvoiceIns/${controller.invoiceIn.id}`).respond(invoiceIn); + controller.loadData(); + $httpBackend.flush(); + + expect(controller.invoiceIn.id).toEqual(invoiceIn.id); + expect(controller.invoiceIn.amount).toEqual(expectedAmount); }); }); diff --git a/modules/invoiceIn/front/dueDay/index.html b/modules/invoiceIn/front/dueDay/index.html new file mode 100644 index 000000000..1a1935e72 --- /dev/null +++ b/modules/invoiceIn/front/dueDay/index.html @@ -0,0 +1,71 @@ + + + + + + + + + + + {{id}}: {{bank}} + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/invoiceIn/front/dueDay/index.js b/modules/invoiceIn/front/dueDay/index.js new file mode 100644 index 000000000..3cc1c81e8 --- /dev/null +++ b/modules/invoiceIn/front/dueDay/index.js @@ -0,0 +1,37 @@ +import ngModule from '../module'; +import Section from 'salix/components/section'; + +class Controller extends Section { + add() { + this.$.model.insert({ + dueDated: new Date(), + bankFk: this.vnConfig.local.bankFk + }); + } + + onSubmit() { + this.$.watcher.check(); + this.$.model.save().then(() => { + this.$.watcher.notifySaved(); + this.$.watcher.updateOriginalData(); + this.card.reload(); + }); + } + + bankSearchFunc($search) { + return /^\d+$/.test($search) + ? {id: $search} + : {bank: {like: '%' + $search + '%'}}; + } +} + +ngModule.vnComponent('vnInvoiceInDueDay', { + template: require('./index.html'), + controller: Controller, + require: { + card: '^vnInvoiceInCard' + }, + bindings: { + invoiceIn: '<' + } +}); diff --git a/modules/invoiceIn/front/dueDay/index.spec.js b/modules/invoiceIn/front/dueDay/index.spec.js new file mode 100644 index 000000000..7dddd3bb0 --- /dev/null +++ b/modules/invoiceIn/front/dueDay/index.spec.js @@ -0,0 +1,44 @@ +import './index.js'; +import watcher from 'core/mocks/watcher'; +import crudModel from 'core/mocks/crud-model'; + +describe('InvoiceIn', () => { + describe('Component due day', () => { + let controller; + let $scope; + let vnApp; + + beforeEach(ngModule('invoiceIn')); + + beforeEach(inject(($componentController, $rootScope, _vnApp_) => { + vnApp = _vnApp_; + jest.spyOn(vnApp, 'showError'); + $scope = $rootScope.$new(); + $scope.model = crudModel; + $scope.watcher = watcher; + + const $element = angular.element(''); + controller = $componentController('vnInvoiceInDueDay', {$element, $scope}); + controller.invoiceIn = {id: 1}; + })); + + describe('onSubmit()', () => { + it('should make HTTP POST request to save due day values', () => { + controller.card = {reload: () => {}}; + jest.spyOn($scope.watcher, 'check'); + jest.spyOn($scope.watcher, 'notifySaved'); + jest.spyOn($scope.watcher, 'updateOriginalData'); + jest.spyOn(controller.card, 'reload'); + jest.spyOn($scope.model, 'save'); + + controller.onSubmit(); + + expect($scope.model.save).toHaveBeenCalledWith(); + expect($scope.watcher.updateOriginalData).toHaveBeenCalledWith(); + expect($scope.watcher.check).toHaveBeenCalledWith(); + expect($scope.watcher.notifySaved).toHaveBeenCalledWith(); + expect(controller.card.reload).toHaveBeenCalledWith(); + }); + }); + }); +}); diff --git a/modules/invoiceIn/front/index.js b/modules/invoiceIn/front/index.js index 033c4ad69..7b6d6a77c 100644 --- a/modules/invoiceIn/front/index.js +++ b/modules/invoiceIn/front/index.js @@ -9,5 +9,7 @@ import './descriptor-popover'; import './summary'; import './basic-data'; import './tax'; +import './dueDay'; +import './intrastat'; import './create'; import './log'; diff --git a/modules/invoiceIn/front/index/index.html b/modules/invoiceIn/front/index/index.html index 62074be33..008d615b1 100644 --- a/modules/invoiceIn/front/index/index.html +++ b/modules/invoiceIn/front/index/index.html @@ -13,7 +13,7 @@ Supplier ref. Serial number Serial - Account + File Issued Is booked AWB @@ -27,7 +27,7 @@ class="clickable vn-tr search-result" ui-sref="invoiceIn.card.summary({id: {{::invoiceIn.id}}})"> {{::invoiceIn.id}} - + @@ -36,8 +36,13 @@ {{::invoiceIn.supplierRef | dashIfEmpty}} {{::invoiceIn.serialNumber}} - {{::invoiceIn.serial}} - {{::invoiceIn.account}} + {{::invoiceIn.serial}} + + + {{::invoiceIn.file}} + + {{::invoiceIn.issued | date:'dd/MM/yyyy' | dashIfEmpty}} + + + + + + + + + + + + + + + +
+ + + + {{id | zeroFill:8}}: {{description}} + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/invoiceIn/front/intrastat/index.js b/modules/invoiceIn/front/intrastat/index.js new file mode 100644 index 000000000..659929513 --- /dev/null +++ b/modules/invoiceIn/front/intrastat/index.js @@ -0,0 +1,60 @@ +import ngModule from '../module'; +import Section from 'salix/components/section'; + +class Controller extends Section { + set invoceInIntrastat(value) { + this._invoceInIntrastat = value; + + if (value) this.calculateTotals(); + } + + get invoceInIntrastat() { + return this._invoceInIntrastat; + } + + calculateTotals() { + this.amountTotal = 0.0; + this.netTotal = 0.0; + this.stemsTotal = 0.0; + if (!this.invoceInIntrastat) return; + + this.invoceInIntrastat.forEach(intrastat => { + this.amountTotal += intrastat.amount; + this.netTotal += intrastat.net; + this.stemsTotal += intrastat.stems; + }); + } + + add() { + this.$.model.insert({}); + } + + deleteIntrastat($index) { + this.$.model.remove($index); + this.$.model.save().then(() => { + this.vnApp.showSuccess(this.$t('Data saved!')); + this.calculateTotals(); + }); + } + + onSubmit() { + this.$.watcher.check(); + this.$.model.save().then(() => { + this.$.watcher.notifySaved(); + this.$.watcher.updateOriginalData(); + this.calculateTotals(); + this.card.reload(); + }); + } +} + +ngModule.vnComponent('vnInvoiceInIntrastat', { + template: require('./index.html'), + controller: Controller, + require: { + card: '^vnInvoiceInCard' + }, + bindings: { + invoiceIn: '<' + } +}); diff --git a/modules/invoiceIn/front/intrastat/index.spec.js b/modules/invoiceIn/front/intrastat/index.spec.js new file mode 100644 index 000000000..d7d50ac5b --- /dev/null +++ b/modules/invoiceIn/front/intrastat/index.spec.js @@ -0,0 +1,85 @@ +import './index.js'; +import watcher from 'core/mocks/watcher'; +import crudModel from 'core/mocks/crud-model'; + +describe('InvoiceIn', () => { + describe('Component intrastat', () => { + let controller; + let $scope; + let vnApp; + + beforeEach(ngModule('invoiceIn')); + + beforeEach(inject(($componentController, $rootScope, _vnApp_) => { + vnApp = _vnApp_; + jest.spyOn(vnApp, 'showError'); + $scope = $rootScope.$new(); + $scope.model = crudModel; + $scope.watcher = watcher; + + const $element = angular.element(''); + controller = $componentController('vnInvoiceInIntrastat', {$element, $scope}); + controller.invoiceIn = {id: 1}; + })); + + describe('calculateTotals()', () => { + it('should set amountTotal, netTotal and stemsTotal to 0 if salesClaimed has no data', () => { + controller.invoceInIntrastat = []; + controller.calculateTotals(); + + expect(controller.amountTotal).toEqual(0); + expect(controller.netTotal).toEqual(0); + expect(controller.stemsTotal).toEqual(0); + }); + + it('should set amountTotal, netTotal and stemsTotal', () => { + controller.invoceInIntrastat = [ + { + id: 1, + invoiceInFk: 1, + net: 30.5, + intrastatFk: 5080000, + amount: 10, + stems: 162, + countryFk: 5, + statisticalValue: 0 + }, + { + id: 2, + invoiceInFk: 1, + net: 10, + intrastatFk: 6021010, + amount: 20, + stems: 205, + countryFk: 5, + statisticalValue: 0 + } + ]; + controller.calculateTotals(); + + expect(controller.amountTotal).toEqual(30); + expect(controller.netTotal).toEqual(40.5); + expect(controller.stemsTotal).toEqual(367); + }); + }); + + describe('onSubmit()', () => { + it('should make HTTP POST request to save intrastat values', () => { + controller.card = {reload: () => {}}; + jest.spyOn($scope.watcher, 'check'); + jest.spyOn($scope.watcher, 'notifySaved'); + jest.spyOn($scope.watcher, 'updateOriginalData'); + jest.spyOn(controller.card, 'reload'); + jest.spyOn($scope.model, 'save'); + + controller.onSubmit(); + + expect($scope.model.save).toHaveBeenCalledWith(); + expect($scope.watcher.updateOriginalData).toHaveBeenCalledWith(); + expect($scope.watcher.check).toHaveBeenCalledWith(); + expect($scope.watcher.notifySaved).toHaveBeenCalledWith(); + expect(controller.card.reload).toHaveBeenCalledWith(); + }); + }); + }); +}); diff --git a/modules/invoiceIn/front/locale/es.yml b/modules/invoiceIn/front/locale/es.yml index 46415480d..1deff32d3 100644 --- a/modules/invoiceIn/front/locale/es.yml +++ b/modules/invoiceIn/front/locale/es.yml @@ -1,4 +1,5 @@ Add tax: Añadir iva +Add due day: Añadir vencimiento Amounts do not match: La BI no coincide con el vencimiento ni con el total Due day: Vencimiento Entries list: Listado de entradas @@ -8,9 +9,15 @@ InvoiceIn cloned: Factura clonada InvoiceIn deleted: Factura eliminada Invoice list: Listado de facturas recibidas InvoiceIn booked: Factura contabilizada +Net: Neto Remove tax: Quitar iva +Remove due day: Quitar vencimiento Sage tax: Sage iva Sage transaction: Sage transaccion Search invoices in by reference: Buscar facturas recibidas por referencia To book: Contabilizar - +Total amount: Total importe +Total net: Total neto +Total stems: Total tallos +Show agricultural invoice as PDF: Ver factura agrícola como PDF +Send agricultural invoice as PDF: Enviar factura agrícola como PDF diff --git a/modules/invoiceIn/front/routes.json b/modules/invoiceIn/front/routes.json index bae496629..4867b7db9 100644 --- a/modules/invoiceIn/front/routes.json +++ b/modules/invoiceIn/front/routes.json @@ -21,6 +21,14 @@ }, { "state": "invoiceIn.card.tax", + "icon": "icon-tax" + }, + { + "state": "invoiceIn.card.dueDay", + "icon": "icon-calendar" + }, + { + "state": "invoiceIn.card.intrastat", "icon": "icon-lines" }, { @@ -95,6 +103,26 @@ }, "acl": ["administrative"] }, + { + "url": "/dueDay", + "state": "invoiceIn.card.dueDay", + "component": "vn-invoice-in-due-day", + "description": "Due day", + "params": { + "invoice-in": "$ctrl.invoiceIn" + }, + "acl": ["administrative"] + }, + { + "url": "/intrastat", + "state": "invoiceIn.card.intrastat", + "component": "vn-invoice-in-intrastat", + "description": "Intrastat", + "params": { + "invoice-in": "$ctrl.invoiceIn" + }, + "acl": ["administrative"] + }, { "url": "/log", "state": "invoiceIn.card.log", diff --git a/modules/invoiceIn/front/summary/index.html b/modules/invoiceIn/front/summary/index.html index a4b7b06ee..3a826eeb7 100644 --- a/modules/invoiceIn/front/summary/index.html +++ b/modules/invoiceIn/front/summary/index.html @@ -58,7 +58,7 @@ - +

+ + +

+ + Due day + +

+ + + + Date + Bank + Amount + Foreign value + + + + + {{::dueDay.dueDated | date:'dd/MM/yyyy'}} + {{::dueDay.bank.bank}} + {{::dueDay.amount | currency: 'EUR':2}} + {{::dueDay.foreignValue}} + + + + + + + +

+ + Intrastat + +

+ + + + Code + Amount + Net + Stems + Country + + + + + {{::intrastat.intrastatFk | zeroFill:8}}: {{::intrastat.intrastat.description}} + {{::intrastat.amount | currency: 'EUR':2}} + {{::intrastat.net}} + {{::intrastat.stems}} + {{::intrastat.country.code}} + + + +
+
diff --git a/modules/invoiceIn/front/summary/locale/es.yml b/modules/invoiceIn/front/summary/locale/es.yml index fbfa5f140..9349a1069 100644 --- a/modules/invoiceIn/front/summary/locale/es.yml +++ b/modules/invoiceIn/front/summary/locale/es.yml @@ -8,4 +8,6 @@ Accounted date: Fecha contable Doc number: Numero documento Sage withholding: Retención sage Undeductible VAT: Iva no deducible -Do not match: No coinciden \ No newline at end of file +Do not match: No coinciden +VAT: IVA +Due day: Vencimiento \ No newline at end of file diff --git a/modules/invoiceIn/front/tax/index.html b/modules/invoiceIn/front/tax/index.html index faff05942..dc5a37ed1 100644 --- a/modules/invoiceIn/front/tax/index.html +++ b/modules/invoiceIn/front/tax/index.html @@ -40,6 +40,13 @@ show-field="id" rule> {{id}}: {{name}} + + + + - \ No newline at end of file + + + + + +
+
{{$ctrl.$t('New expense')}}
+ + + + + + + + + + +
+
+ + + + +
\ No newline at end of file diff --git a/modules/invoiceIn/front/tax/index.js b/modules/invoiceIn/front/tax/index.js index 9c71cbd33..320f15fb5 100644 --- a/modules/invoiceIn/front/tax/index.js +++ b/modules/invoiceIn/front/tax/index.js @@ -1,7 +1,12 @@ import ngModule from '../module'; import Section from 'salix/components/section'; +import UserError from 'core/lib/user-error'; class Controller extends Section { + constructor($element, $, vnWeekDays) { + super($element, $); + this.expense = {}; + } taxRate(invoiceInTax, taxRateSelection) { const taxTypeSage = taxRateSelection && taxRateSelection.rate; const taxableBase = invoiceInTax && invoiceInTax.taxableBase; @@ -47,6 +52,27 @@ class Controller extends Section { this.card.reload(); }); } + + onResponse() { + try { + if (!this.expense.code) + throw new Error(`The code can't be empty`); + if (!this.expense.description) + throw new UserError(`The description can't be empty`); + + const data = [{ + id: this.expense.code, + isWithheld: this.expense.isWithheld, + name: this.expense.description + }]; + + this.$http.post(`Expenses`, data) .then(() => { + this.vnApp.showSuccess(this.$t('Expense saved!')); + }); + } catch (e) { + this.vnApp.showError(this.$t(e.message)); + } + } } ngModule.vnComponent('vnInvoiceInTax', { diff --git a/modules/invoiceIn/front/tax/index.spec.js b/modules/invoiceIn/front/tax/index.spec.js index 20d5d40d8..52114afe5 100644 --- a/modules/invoiceIn/front/tax/index.spec.js +++ b/modules/invoiceIn/front/tax/index.spec.js @@ -7,10 +7,12 @@ describe('InvoiceIn', () => { let controller; let $scope; let vnApp; + let $httpBackend; beforeEach(ngModule('invoiceIn')); - beforeEach(inject(($componentController, $rootScope, _vnApp_) => { + beforeEach(inject(($componentController, $rootScope, _vnApp_, _$httpBackend_) => { + $httpBackend = _$httpBackend_; vnApp = _vnApp_; jest.spyOn(vnApp, 'showError'); $scope = $rootScope.$new(); @@ -19,6 +21,7 @@ describe('InvoiceIn', () => { const $element = angular.element(''); controller = $componentController('vnInvoiceInTax', {$element, $scope}); + controller.$.model = crudModel; controller.invoiceIn = {id: 1}; })); @@ -55,5 +58,56 @@ describe('InvoiceIn', () => { expect(controller.card.reload).toHaveBeenCalledWith(); }); }); + + describe('onResponse()', () => { + it('should return success message', () => { + controller.expense = { + code: 7050000005, + isWithheld: 0, + description: 'Test' + }; + + const data = [{ + id: controller.expense.code, + isWithheld: controller.expense.isWithheld, + name: controller.expense.description + }]; + + jest.spyOn(controller.vnApp, 'showSuccess'); + $httpBackend.expect('POST', `Expenses`, data).respond(); + + controller.onResponse(); + $httpBackend.flush(); + + expect(controller.vnApp.showSuccess).toHaveBeenCalledWith('Expense saved!'); + }); + + it('should return an error if code is empty', () => { + controller.expense = { + code: null, + isWithheld: 0, + description: 'Test' + }; + + jest.spyOn(controller.vnApp, 'showError'); + controller.onResponse(); + + expect(controller.vnApp.showError).toHaveBeenCalledWith(`The code can't be empty`); + }); + + it('should return an error if description is empty', () => { + controller.expense = { + code: 7050000005, + isWithheld: 0, + description: null + }; + + jest.spyOn(controller.vnApp, 'showError'); + controller.onResponse(); + + expect(controller.vnApp.showError).toHaveBeenCalledWith(`The description can't be empty`); + }); + }); }); }); + diff --git a/modules/invoiceIn/front/tax/locale/es.yml b/modules/invoiceIn/front/tax/locale/es.yml new file mode 100644 index 000000000..3ff68ea40 --- /dev/null +++ b/modules/invoiceIn/front/tax/locale/es.yml @@ -0,0 +1,7 @@ +Create expense: Crear gasto +New expense: Nuevo gasto +It's a withholding: Es una retención +The fields can't be empty: Los campos no pueden estar vacíos +The code can't be empty: El código no puede estar vacío +The description can't be empty: La descripción no puede estar vacía +Expense saved!: Gasto guardado! \ No newline at end of file diff --git a/modules/invoiceOut/back/methods/invoiceOut/createPdf.js b/modules/invoiceOut/back/methods/invoiceOut/createPdf.js index 116e8b3fc..e56516237 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/createPdf.js +++ b/modules/invoiceOut/back/methods/invoiceOut/createPdf.js @@ -1,7 +1,5 @@ const UserError = require('vn-loopback/util/user-error'); -const fs = require('fs-extra'); -const path = require('path'); -const axios = require('axios'); +const print = require('vn-print'); module.exports = Self => { Self.remoteMethodCtx('createPdf', { @@ -27,9 +25,7 @@ module.exports = Self => { Self.createPdf = async function(ctx, id, options) { const models = Self.app.models; - const headers = ctx.req.headers; - const origin = headers.origin; - const auth = ctx.req.accessToken; + const userId = ctx.req.accessToken.userId; if (process.env.NODE_ENV == 'test') throw new UserError(`Action not allowed on the test environment`); @@ -45,10 +41,9 @@ module.exports = Self => { myOptions.transaction = tx; } - let fileSrc; try { const invoiceOut = await Self.findById(id, null, myOptions); - const hasInvoicing = await models.Account.hasRole(auth.userId, 'invoicing', myOptions); + const hasInvoicing = await models.Account.hasRole(userId, 'invoicing', myOptions); if (invoiceOut.hasPdf && !hasInvoicing) throw new UserError(`You don't have enough privileges`); @@ -57,35 +52,27 @@ module.exports = Self => { hasPdf: true }, myOptions); - return axios.get(`${origin}/api/report/invoice`, { - responseType: 'stream', - params: { - authorization: auth.id, - invoiceId: id - } - }).then(async response => { - const issued = invoiceOut.issued; - const year = issued.getFullYear().toString(); - const month = (issued.getMonth() + 1).toString(); - const day = issued.getDate().toString(); - - const container = await models.InvoiceContainer.container(year); - const rootPath = container.client.root; - const fileName = `${year}${invoiceOut.ref}.pdf`; - const src = path.join(rootPath, year, month, day); - fileSrc = path.join(src, fileName); - - await fs.mkdir(src, {recursive: true}); - - if (tx) await tx.commit(); - - response.data.pipe(fs.createWriteStream(fileSrc)); - }).catch(async e => { - if (fs.existsSync(fileSrc)) - await fs.unlink(fileSrc); - - throw e; + const invoiceReport = new print.Report('invoice', { + reference: invoiceOut.ref, + recipientId: invoiceOut.clientFk }); + const stream = await invoiceReport.toPdfStream(); + + const issued = invoiceOut.issued; + const year = issued.getFullYear().toString(); + const month = (issued.getMonth() + 1).toString(); + const day = issued.getDate().toString(); + + const fileName = `${year}${invoiceOut.ref}.pdf`; + + // Store invoice + print.storage.write(stream, { + type: 'invoice', + path: `${year}/${month}/${day}`, + fileName: fileName + }); + + if (tx) await tx.commit(); } catch (e) { if (tx) await tx.rollback(); throw e; diff --git a/modules/invoiceOut/back/methods/invoiceOut/download.js b/modules/invoiceOut/back/methods/invoiceOut/download.js index f1138dd51..74f5c95fe 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/download.js +++ b/modules/invoiceOut/back/methods/invoiceOut/download.js @@ -9,7 +9,7 @@ module.exports = Self => { accepts: [ { arg: 'id', - type: 'String', + type: 'string', description: 'The invoice id', http: {source: 'path'} } @@ -21,16 +21,16 @@ module.exports = Self => { root: true }, { arg: 'Content-Type', - type: 'String', + type: 'string', http: {target: 'header'} }, { arg: 'Content-Disposition', - type: 'String', + type: 'string', http: {target: 'header'} } ], http: { - path: `/:id/download`, + path: '/:id/download', verb: 'GET' } }); @@ -62,8 +62,14 @@ module.exports = Self => { name: fileName }; - await fs.access(file.path); - let stream = fs.createReadStream(file.path); + try { + await fs.access(file.path); + } catch (error) { + await Self.createPdf(ctx, id); + } + + const stream = fs.createReadStream(file.path); + return [stream, file.contentType, `filename="${file.name}"`]; } catch (error) { if (error.code === 'ENOENT') diff --git a/modules/invoiceOut/back/methods/invoiceOut/downloadZip.js b/modules/invoiceOut/back/methods/invoiceOut/downloadZip.js new file mode 100644 index 000000000..72a00b764 --- /dev/null +++ b/modules/invoiceOut/back/methods/invoiceOut/downloadZip.js @@ -0,0 +1,55 @@ +const JSZip = require('jszip'); +const fs = require('fs-extra'); +const UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.remoteMethodCtx('downloadZip', { + description: 'Download a zip file with multiple invoices pdfs', + accessType: 'READ', + accepts: [ + { + arg: 'ids', + type: ['number'], + description: 'The invoice ids' + } + ], + returns: { + arg: 'base64', + type: 'string', + root: true + }, + http: { + path: '/downloadZip', + verb: 'POST' + } + }); + + Self.downloadZip = async function(ctx, ids, options) { + const models = Self.app.models; + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const zip = new JSZip(); + let totalSize = 0; + const zipConfig = await models.ZipConfig.findOne(null, myOptions); + for (let id of ids) { + if (zipConfig && totalSize > zipConfig.maxSize) throw new UserError('Files are too large'); + const invoiceOutPdf = await models.InvoiceOut.download(ctx, id, myOptions); + const fileName = extractFileName(invoiceOutPdf[2]); + const body = invoiceOutPdf[0]; + const sizeInBytes = (await fs.promises.stat(body.path)).size; + const sizeInMegabytes = sizeInBytes / (1024 * 1024); + totalSize += sizeInMegabytes; + zip.file(fileName, body); + } + const base64 = await zip.generateAsync({type: 'base64'}); + return base64; + }; + + function extractFileName(str) { + const matches = str.match(/"(.*?)"/); + return matches ? matches[1] : str; + } +}; diff --git a/modules/invoiceOut/back/methods/invoiceOut/exportationPdf.js b/modules/invoiceOut/back/methods/invoiceOut/exportationPdf.js new file mode 100644 index 000000000..e947c5144 --- /dev/null +++ b/modules/invoiceOut/back/methods/invoiceOut/exportationPdf.js @@ -0,0 +1,55 @@ +const {Report} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('exportationPdf', { + description: 'Returns the exportation pdf', + accessType: 'READ', + accepts: [ + { + arg: 'reference', + type: 'string', + required: true, + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:reference/exportation-pdf', + verb: 'GET' + } + }); + + Self.exportationPdf = async(ctx, reference) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const report = new Report('exportation', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="doc-${reference}.pdf"`]; + }; +}; diff --git a/modules/invoiceOut/back/methods/invoiceOut/globalInvoicing.js b/modules/invoiceOut/back/methods/invoiceOut/globalInvoicing.js index 6b901872e..2aa277b6f 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/globalInvoicing.js +++ b/modules/invoiceOut/back/methods/invoiceOut/globalInvoicing.js @@ -1,5 +1,3 @@ -const UserError = require('vn-loopback/util/user-error'); - module.exports = Self => { Self.remoteMethodCtx('globalInvoicing', { description: 'Make a global invoice', @@ -140,6 +138,9 @@ module.exports = Self => { if (newInvoice.id) { await Self.rawSql('CALL invoiceOutBooking(?)', [newInvoice.id], myOptions); + query = `INSERT IGNORE INTO invoiceOutQueue(invoiceFk) VALUES(?)`; + await Self.rawSql(query, [newInvoice.id], myOptions); + invoicesIds.push(newInvoice.id); } } catch (e) { @@ -160,10 +161,6 @@ module.exports = Self => { throw e; } - // Print invoices PDF - for (let invoiceId of invoicesIds) - await Self.createPdf(ctx, invoiceId); - return invoicesIds; }; @@ -212,7 +209,13 @@ module.exports = Self => { const query = `SELECT c.id, - SUM(IFNULL(s.quantity * s.price * (100-s.discount)/100, 0) + IFNULL(ts.quantity * ts.price,0)) AS sumAmount, + SUM(IFNULL + ( + s.quantity * + s.price * (100-s.discount)/100, + 0) + + IFNULL(ts.quantity * ts.price,0) + ) AS sumAmount, c.hasToInvoiceByAddress, c.email, c.isToBeMailed, diff --git a/modules/invoiceOut/back/methods/invoiceOut/invoiceCsv.js b/modules/invoiceOut/back/methods/invoiceOut/invoiceCsv.js new file mode 100644 index 000000000..d33df74a2 --- /dev/null +++ b/modules/invoiceOut/back/methods/invoiceOut/invoiceCsv.js @@ -0,0 +1,85 @@ +const {toCSV} = require('vn-loopback/util/csv'); + +module.exports = Self => { + Self.remoteMethod('invoiceCsv', { + description: 'Returns the delivery note csv', + accessType: 'READ', + accepts: [ + { + arg: 'reference', + type: 'string', + required: true, + description: 'The invoice reference', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The client id', + required: false + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:reference/invoice-csv', + verb: 'GET' + } + }); + + Self.invoiceCsv = async reference => { + const sales = await Self.rawSql(` + SELECT io.ref Invoice, + io.issued InvoiceDate, + s.ticketFk Ticket, + s.itemFk Item, + s.concept Description, + i.size, + i.subName Producer, + s.quantity Quantity, + s.price Price, + s.discount Discount, + s.created Created, + tc.code Taxcode, + tc.description TaxDescription, + i.tag5, + i.value5, + i.tag6, + i.value6, + i.tag7, + i.value7, + i.tag8, + i.value8, + i.tag9, + i.value9, + i.tag10, + i.value10 + FROM sale s + JOIN ticket t ON t.id = s.ticketFk + JOIN item i ON i.id = s.itemFk + JOIN supplier s2 ON s2.id = t.companyFk + JOIN itemTaxCountry itc ON itc.itemFk = i.id + AND itc.countryFk = s2.countryFk + JOIN taxClass tc ON tc.id = itc.taxClassFk + JOIN invoiceOut io ON io.ref = t.refFk + WHERE t.refFk = ? + ORDER BY s.ticketFk, s.created`, [reference]); + + const content = toCSV(sales); + + return [content, 'text/csv', `inline; filename="doc-${reference}.pdf"`]; + }; +}; diff --git a/modules/invoiceOut/back/methods/invoiceOut/invoiceCsvEmail.js b/modules/invoiceOut/back/methods/invoiceOut/invoiceCsvEmail.js new file mode 100644 index 000000000..38d451595 --- /dev/null +++ b/modules/invoiceOut/back/methods/invoiceOut/invoiceCsvEmail.js @@ -0,0 +1,117 @@ +const {Email} = require('vn-print'); +const {toCSV} = require('vn-loopback/util/csv'); + +module.exports = Self => { + Self.remoteMethodCtx('invoiceCsvEmail', { + description: 'Returns the delivery note csv', + accessType: 'READ', + accepts: [ + { + arg: 'reference', + type: 'string', + required: true, + description: 'The invoice reference', + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The client id', + required: false + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:reference/invoice-csv-email', + verb: 'POST' + } + }); + + Self.invoiceCsvEmail = async(ctx, reference) => { + const args = Object.assign({}, ctx.args); + + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const sales = await Self.rawSql(` + SELECT io.ref Invoice, + io.issued InvoiceDate, + s.ticketFk Ticket, + s.itemFk Item, + s.concept Description, + i.size, + i.subName Producer, + s.quantity Quantity, + s.price Price, + s.discount Discount, + s.created Created, + tc.code Taxcode, + tc.description TaxDescription, + i.tag5, + i.value5, + i.tag6, + i.value6, + i.tag7, + i.value7, + i.tag8, + i.value8, + i.tag9, + i.value9, + i.tag10, + i.value10 + FROM sale s + JOIN ticket t ON t.id = s.ticketFk + JOIN item i ON i.id = s.itemFk + JOIN supplier s2 ON s2.id = t.companyFk + JOIN itemTaxCountry itc ON itc.itemFk = i.id + AND itc.countryFk = s2.countryFk + JOIN taxClass tc ON tc.id = itc.taxClassFk + JOIN invoiceOut io ON io.ref = t.refFk + WHERE t.refFk = ? + ORDER BY s.ticketFk, s.created`, [reference]); + + const content = toCSV(sales); + const fileName = `invoice_${reference}.csv`; + const email = new Email('invoice', params); + + return email.send({ + overrideAttachments: true, + attachments: [{ + filename: fileName, + content: content + }] + }); + }; +}; diff --git a/modules/invoiceOut/back/methods/invoiceOut/invoiceEmail.js b/modules/invoiceOut/back/methods/invoiceOut/invoiceEmail.js new file mode 100644 index 000000000..83564e3ab --- /dev/null +++ b/modules/invoiceOut/back/methods/invoiceOut/invoiceEmail.js @@ -0,0 +1,58 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('invoiceEmail', { + description: 'Sends the invoice email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'reference', + type: 'string', + required: true, + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id to send to the recipient preferred language', + required: false + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/:reference/invoice-email', + verb: 'POST' + } + }); + + Self.invoiceEmail = async ctx => { + const args = Object.assign({}, ctx.args); + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const email = new Email('invoice', params); + + return email.send(); + }; +}; diff --git a/modules/invoiceOut/back/methods/invoiceOut/refund.js b/modules/invoiceOut/back/methods/invoiceOut/refund.js new file mode 100644 index 000000000..7ad6b03ec --- /dev/null +++ b/modules/invoiceOut/back/methods/invoiceOut/refund.js @@ -0,0 +1,49 @@ +module.exports = Self => { + Self.remoteMethod('refund', { + description: 'Create refund tickets with sales and services if provided', + accessType: 'WRITE', + accepts: [{ + arg: 'ref', + type: 'string', + description: 'The invoice reference' + }], + returns: { + type: ['number'], + root: true + }, + http: { + path: '/refund', + verb: 'post' + } + }); + + Self.refund = async(ref, options) => { + const models = Self.app.models; + const myOptions = {}; + let tx; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + const filter = {where: {refFk: ref}}; + const tickets = await models.Ticket.find(filter, myOptions); + + const ticketsIds = tickets.map(ticket => ticket.id); + + const refundedTickets = await models.Ticket.refund(ticketsIds, myOptions); + + if (tx) await tx.commit(); + + return refundedTickets; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/invoiceOut/back/methods/invoiceOut/sendQueued.js b/modules/invoiceOut/back/methods/invoiceOut/sendQueued.js new file mode 100644 index 000000000..a1730ac81 --- /dev/null +++ b/modules/invoiceOut/back/methods/invoiceOut/sendQueued.js @@ -0,0 +1,133 @@ +const {Email, Report, storage} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethod('sendQueued', { + description: 'Send all queued invoices', + accessType: 'WRITE', + accepts: [], + returns: { + type: 'object', + root: true + }, + http: { + path: '/send-queued', + verb: 'POST' + } + }); + + Self.sendQueued = async() => { + const invoices = await Self.rawSql(` + SELECT + io.id, + io.clientFk, + io.issued, + io.ref, + c.email recipient, + c.salesPersonFk, + c.isToBeMailed, + c.hasToInvoice, + co.hasDailyInvoice, + eu.email salesPersonEmail + FROM invoiceOutQueue ioq + JOIN invoiceOut io ON io.id = ioq.invoiceFk + JOIN client c ON c.id = io.clientFk + JOIN province p ON p.id = c.provinceFk + JOIN country co ON co.id = p.countryFk + LEFT JOIN account.emailUser eu ON eu.userFk = c.salesPersonFk + WHERE status = ''`); + + let invoiceId; + for (const invoiceOut of invoices) { + try { + const tx = await Self.beginTransaction({}); + const myOptions = {transaction: tx}; + + invoiceId = invoiceOut.id; + + const args = { + reference: invoiceOut.ref, + recipientId: invoiceOut.clientFk, + recipient: invoiceOut.recipient, + replyTo: invoiceOut.salesPersonEmail + }; + + const invoiceReport = new Report('invoice', args); + const stream = await invoiceReport.toPdfStream(); + + const issued = invoiceOut.issued; + const year = issued.getFullYear().toString(); + const month = (issued.getMonth() + 1).toString(); + const day = issued.getDate().toString(); + + const fileName = `${year}${invoiceOut.ref}.pdf`; + + // Store invoice + storage.write(stream, { + type: 'invoice', + path: `${year}/${month}/${day}`, + fileName: fileName + }); + + await Self.rawSql(` + UPDATE invoiceOut + SET hasPdf = true + WHERE id = ?`, + [invoiceOut.id], myOptions); + + const isToBeMailed = invoiceOut.recipient && invoiceOut.salesPersonFk && invoiceOut.isToBeMailed; + + if (isToBeMailed) { + const mailOptions = { + overrideAttachments: true, + attachments: [] + }; + + const invoiceAttachment = { + filename: fileName, + content: stream + }; + + if (invoiceOut.serial == 'E' && invoiceOut.companyCode == 'VNL') { + const exportation = new Report('exportation', args); + const stream = await exportation.toPdfStream(); + const fileName = `CITES-${invoiceOut.ref}.pdf`; + + mailOptions.attachments.push({ + filename: fileName, + content: stream + }); + } + + mailOptions.attachments.push(invoiceAttachment); + + const email = new Email('invoice', args); + await email.send(mailOptions); + } + // Update queue status + const date = new Date(); + await Self.rawSql(` + UPDATE invoiceOutQueue + SET status = "printed", + printed = ? + WHERE invoiceFk = ?`, + [date, invoiceOut.id], myOptions); + + await tx.commit(); + } catch (error) { + await tx.rollback(); + + await Self.rawSql(` + UPDATE invoiceOutQueue + SET status = ? + WHERE invoiceFk = ?`, + [error.message, invoiceId]); + + throw e; + } + } + + return { + message: 'Success' + }; + }; +}; diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/createManualInvoice.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/createManualInvoice.spec.js index f1c1bbab8..b166caf78 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/specs/createManualInvoice.spec.js +++ b/modules/invoiceOut/back/methods/invoiceOut/specs/createManualInvoice.spec.js @@ -93,6 +93,9 @@ describe('InvoiceOut createManualInvoice()', () => { it('should throw an error for a non-invoiceable client', async() => { spyOn(models.InvoiceOut, 'createPdf').and.returnValue(new Promise(resolve => resolve(true))); + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); const tx = await models.InvoiceOut.beginTransaction({}); const options = {transaction: tx}; diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/createPdf.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/createPdf.spec.js index 7600f065f..803338ef3 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/specs/createPdf.spec.js +++ b/modules/invoiceOut/back/methods/invoiceOut/specs/createPdf.spec.js @@ -1,7 +1,6 @@ const models = require('vn-loopback/server/server').models; const LoopBackContext = require('loopback-context'); -const fs = require('fs-extra'); -const axios = require('axios'); +const print = require('vn-print'); describe('InvoiceOut createPdf()', () => { const userId = 1; @@ -16,22 +15,15 @@ describe('InvoiceOut createPdf()', () => { spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ active: activeCtx }); - const response = { - data: { - pipe: () => {}, - on: () => {}, + + spyOn(print, 'Report').and.returnValue({ + toPdfStream: () => { + return ''; } - }; - spyOn(axios, 'get').and.returnValue(new Promise(resolve => resolve(response))); - spyOn(models.InvoiceContainer, 'container').and.returnValue({ - client: {root: '/path'} - }); - spyOn(fs, 'mkdir').and.returnValue(true); - spyOn(fs, 'createWriteStream').and.returnValue({ - on: (event, cb) => cb(), - end: () => {} }); + spyOn(print.storage, 'write').and.returnValue(true); + const tx = await models.InvoiceOut.beginTransaction({}); const options = {transaction: tx}; diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/downloadZip.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/downloadZip.spec.js new file mode 100644 index 000000000..7a9e184ea --- /dev/null +++ b/modules/invoiceOut/back/methods/invoiceOut/specs/downloadZip.spec.js @@ -0,0 +1,53 @@ +const models = require('vn-loopback/server/server').models; +const UserError = require('vn-loopback/util/user-error'); + +describe('InvoiceOut downloadZip()', () => { + const userId = 9; + const invoiceIds = [1, 2]; + const ctx = { + req: { + + accessToken: {userId: userId}, + headers: {origin: 'http://localhost:5000'}, + } + }; + + it('should return part of link to dowloand the zip', async() => { + const tx = await models.Order.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const result = await models.InvoiceOut.downloadZip(ctx, invoiceIds, options); + + expect(result).toBeDefined(); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return an error if the size of the files is too large', async() => { + const tx = await models.Order.beginTransaction({}); + + let error; + try { + const options = {transaction: tx}; + const zipConfig = { + maxSize: 0 + }; + await models.ZipConfig.create(zipConfig, options); + + await models.InvoiceOut.downloadZip(ctx, invoiceIds, options); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + error = e; + } + + expect(error).toEqual(new UserError(`Files are too large`)); + }); +}); diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/globalInvoicing.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/globalInvoicing.spec.js index e0ed6c91c..f7546b72e 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/specs/globalInvoicing.spec.js +++ b/modules/invoiceOut/back/methods/invoiceOut/specs/globalInvoicing.spec.js @@ -8,6 +8,9 @@ describe('InvoiceOut globalInvoicing()', () => { const invoiceSerial = 'A'; const activeCtx = { accessToken: {userId: userId}, + __: value => { + return value; + } }; const ctx = {req: activeCtx}; @@ -22,7 +25,7 @@ describe('InvoiceOut globalInvoicing()', () => { invoiceDate: new Date(), maxShipped: new Date(), fromClientId: clientId, - toClientId: clientId, + toClientId: 1106, companyFk: companyFk }; const result = await models.InvoiceOut.globalInvoicing(ctx, options); diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/refund.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/refund.spec.js new file mode 100644 index 000000000..628318d42 --- /dev/null +++ b/modules/invoiceOut/back/methods/invoiceOut/specs/refund.spec.js @@ -0,0 +1,28 @@ +const models = require('vn-loopback/server/server').models; +const LoopBackContext = require('loopback-context'); + +describe('InvoiceOut refund()', () => { + const userId = 5; + const activeCtx = { + accessToken: {userId: userId}, + }; + + it('should return the ids for the created refund tickets', async() => { + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + const tx = await models.InvoiceOut.beginTransaction({}); + const options = {transaction: tx}; + + try { + const result = await models.InvoiceOut.refund('T1111111', options); + + expect(result.length).toEqual(2); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/invoiceOut/back/model-config.json b/modules/invoiceOut/back/model-config.json index d52f79477..04933c4f0 100644 --- a/modules/invoiceOut/back/model-config.json +++ b/modules/invoiceOut/back/model-config.json @@ -22,5 +22,8 @@ }, "TaxType": { "dataSource": "vn" + }, + "ZipConfig": { + "dataSource": "vn" } } diff --git a/modules/invoiceOut/back/models/invoice-out.js b/modules/invoiceOut/back/models/invoice-out.js index 3b2822ada..9533ad484 100644 --- a/modules/invoiceOut/back/models/invoice-out.js +++ b/modules/invoiceOut/back/models/invoice-out.js @@ -3,9 +3,16 @@ module.exports = Self => { require('../methods/invoiceOut/summary')(Self); require('../methods/invoiceOut/getTickets')(Self); require('../methods/invoiceOut/download')(Self); + require('../methods/invoiceOut/downloadZip')(Self); require('../methods/invoiceOut/delete')(Self); require('../methods/invoiceOut/book')(Self); require('../methods/invoiceOut/createPdf')(Self); require('../methods/invoiceOut/createManualInvoice')(Self); require('../methods/invoiceOut/globalInvoicing')(Self); + require('../methods/invoiceOut/refund')(Self); + require('../methods/invoiceOut/invoiceEmail')(Self); + require('../methods/invoiceOut/exportationPdf')(Self); + require('../methods/invoiceOut/sendQueued')(Self); + require('../methods/invoiceOut/invoiceCsv')(Self); + require('../methods/invoiceOut/invoiceCsvEmail')(Self); }; diff --git a/modules/invoiceOut/back/models/invoice-out.json b/modules/invoiceOut/back/models/invoice-out.json index 45c4c2774..2bf5182e8 100644 --- a/modules/invoiceOut/back/models/invoice-out.json +++ b/modules/invoiceOut/back/models/invoice-out.json @@ -9,21 +9,21 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "ref": { - "type": "String", + "type": "string", "required": true }, "serial": { - "type": "String" + "type": "string" }, "issued": { "type": "date" }, "amount": { - "type": "Number" + "type": "number" }, "created": { "type": "date" @@ -35,7 +35,7 @@ "type": "date" }, "hasPdf": { - "type": "Boolean" + "type": "boolean" } }, "relations": { diff --git a/modules/invoiceOut/back/models/tax-class.json b/modules/invoiceOut/back/models/tax-class.json index fa5676466..a259b874a 100644 --- a/modules/invoiceOut/back/models/tax-class.json +++ b/modules/invoiceOut/back/models/tax-class.json @@ -8,16 +8,16 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "description": "Identifier", "id": true }, "description": { - "type": "String", + "type": "string", "required": true }, "code": { - "type": "String", + "type": "string", "required": true } }, diff --git a/modules/invoiceOut/back/models/tax-code.json b/modules/invoiceOut/back/models/tax-code.json index dfd69139e..b515ca334 100644 --- a/modules/invoiceOut/back/models/tax-code.json +++ b/modules/invoiceOut/back/models/tax-code.json @@ -8,7 +8,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, @@ -16,7 +16,7 @@ "type": "date" }, "code": { - "type": "String" + "type": "string" }, "rate": { "type": "number" @@ -25,10 +25,10 @@ "type": "number" }, "type": { - "type": "String" + "type": "string" }, "isActive": { - "type": "Boolean" + "type": "boolean" } }, "relations": { diff --git a/modules/invoiceOut/back/models/tax-type.json b/modules/invoiceOut/back/models/tax-type.json index 4e30446b0..46a73835d 100644 --- a/modules/invoiceOut/back/models/tax-type.json +++ b/modules/invoiceOut/back/models/tax-type.json @@ -8,21 +8,21 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "nickname": { - "type": "String" + "type": "string" }, "serial": { - "type": "String" + "type": "string" }, "TIPOOPE": { - "type": "String" + "type": "string" }, "description": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/modules/invoiceOut/back/models/zip-config.json b/modules/invoiceOut/back/models/zip-config.json new file mode 100644 index 000000000..17fe8a1fa --- /dev/null +++ b/modules/invoiceOut/back/models/zip-config.json @@ -0,0 +1,25 @@ +{ + "name": "ZipConfig", + "base": "VnModel", + "options": { + "mysql": { + "table": "zipConfig" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "maxSize": { + "type": "number" + } + }, + "acls": [{ + "accessType": "READ", + "principalType": "ROLE", + "principalId": "$everyone", + "permission": "ALLOW" + }] +} \ No newline at end of file diff --git a/modules/invoiceOut/front/descriptor-menu/index.html b/modules/invoiceOut/front/descriptor-menu/index.html index 3b30f891c..1c0919288 100644 --- a/modules/invoiceOut/front/descriptor-menu/index.html +++ b/modules/invoiceOut/front/descriptor-menu/index.html @@ -10,7 +10,6 @@ name="showInvoicePdf" translate> Show invoice... - Send invoice... - Show CITES letter + + Refund + + + diff --git a/modules/invoiceOut/front/descriptor-menu/index.js b/modules/invoiceOut/front/descriptor-menu/index.js index 7738845f9..456939119 100644 --- a/modules/invoiceOut/front/descriptor-menu/index.js +++ b/modules/invoiceOut/front/descriptor-menu/index.js @@ -81,21 +81,19 @@ class Controller extends Section { }); } - showCsvInvoice() { - this.vnReport.showCsv('invoice', { - recipientId: this.invoiceOut.client.id, - invoiceId: this.id - }); - } - sendPdfInvoice($data) { if (!$data.email) return this.vnApp.showError(this.$t(`The email can't be empty`)); - return this.vnEmail.send('invoice', { + return this.vnEmail.send(`InvoiceOuts/${this.invoiceOut.ref}/invoice-email`, { recipientId: this.invoiceOut.client.id, - recipient: $data.email, - invoiceId: this.id + recipient: $data.email + }); + } + + showCsvInvoice() { + this.vnReport.show(`InvoiceOuts/${this.invoiceOut.ref}/invoice-csv`, { + recipientId: this.invoiceOut.client.id }); } @@ -103,17 +101,25 @@ class Controller extends Section { if (!$data.email) return this.vnApp.showError(this.$t(`The email can't be empty`)); - return this.vnEmail.sendCsv('invoice', { + return this.vnEmail.send(`InvoiceOuts/${this.invoiceOut.ref}/invoice-csv-email`, { recipientId: this.invoiceOut.client.id, - recipient: $data.email, - invoiceId: this.id + recipient: $data.email }); } showExportationLetter() { - this.vnReport.show('exportation', { + this.vnReport.show(`InvoiceOuts/${this.invoiceOut.ref}/exportation-pdf`, { recipientId: this.invoiceOut.client.id, - invoiceId: this.id + refFk: this.invoiceOut.ref + }); + } + + refundInvoiceOut() { + const query = 'InvoiceOuts/refund'; + const params = {ref: this.invoiceOut.ref}; + this.$http.post(query, params).then(res => { + const ticketIds = res.data.map(ticket => ticket.id).join(', '); + this.vnApp.showSuccess(this.$t('The following refund tickets have been created', {ticketIds})); }); } } diff --git a/modules/invoiceOut/front/descriptor-menu/index.spec.js b/modules/invoiceOut/front/descriptor-menu/index.spec.js index fced12e0d..d2ccfa117 100644 --- a/modules/invoiceOut/front/descriptor-menu/index.spec.js +++ b/modules/invoiceOut/front/descriptor-menu/index.spec.js @@ -6,7 +6,8 @@ describe('vnInvoiceOutDescriptorMenu', () => { let $httpParamSerializer; const invoiceOut = { id: 1, - client: {id: 1101} + client: {id: 1101}, + ref: 'T1111111' }; beforeEach(ngModule('invoiceOut')); @@ -15,14 +16,17 @@ describe('vnInvoiceOutDescriptorMenu', () => { $httpBackend = _$httpBackend_; $httpParamSerializer = _$httpParamSerializer_; controller = $componentController('vnInvoiceOutDescriptorMenu', {$element: null}); + controller.invoiceOut = { + id: 1, + ref: 'T1111111', + client: {id: 1101} + }; })); describe('createPdfInvoice()', () => { it('should make a query to the createPdf() endpoint and show a success snackbar', () => { jest.spyOn(controller.vnApp, 'showSuccess'); - controller.invoiceOut = invoiceOut; - $httpBackend.whenGET(`InvoiceOuts/${invoiceOut.id}`).respond(); $httpBackend.expectPOST(`InvoiceOuts/${invoiceOut.id}/createPdf`).respond(); controller.createPdfInvoice(); @@ -36,14 +40,11 @@ describe('vnInvoiceOutDescriptorMenu', () => { it('should make a query to the csv invoice download endpoint and show a message snackbar', () => { jest.spyOn(window, 'open').mockReturnThis(); - controller.invoiceOut = invoiceOut; - const expectedParams = { - invoiceId: invoiceOut.id, recipientId: invoiceOut.client.id }; const serializedParams = $httpParamSerializer(expectedParams); - const expectedPath = `api/csv/invoice/download?${serializedParams}`; + const expectedPath = `api/InvoiceOuts/${invoiceOut.ref}/invoice-csv?${serializedParams}`; controller.showCsvInvoice(); expect(window.open).toHaveBeenCalledWith(expectedPath); @@ -52,7 +53,6 @@ describe('vnInvoiceOutDescriptorMenu', () => { describe('deleteInvoiceOut()', () => { it(`should make a query and call showSuccess()`, () => { - controller.invoiceOut = invoiceOut; controller.$state.reload = jest.fn(); jest.spyOn(controller.vnApp, 'showSuccess'); @@ -65,7 +65,6 @@ describe('vnInvoiceOutDescriptorMenu', () => { }); it(`should make a query and call showSuccess() after state.go if the state wasn't in invoiceOut module`, () => { - controller.invoiceOut = invoiceOut; jest.spyOn(controller.$state, 'go').mockReturnValue('ok'); jest.spyOn(controller.vnApp, 'showSuccess'); controller.$state.current.name = 'invoiceOut.card.something'; @@ -83,17 +82,9 @@ describe('vnInvoiceOutDescriptorMenu', () => { it('should make a query to the email invoice endpoint and show a message snackbar', () => { jest.spyOn(controller.vnApp, 'showMessage'); - controller.invoiceOut = invoiceOut; - const $data = {email: 'brucebanner@gothamcity.com'}; - const expectedParams = { - invoiceId: invoiceOut.id, - recipient: $data.email, - recipientId: invoiceOut.client.id - }; - const serializedParams = $httpParamSerializer(expectedParams); - $httpBackend.expectGET(`email/invoice?${serializedParams}`).respond(); + $httpBackend.expectPOST(`InvoiceOuts/${invoiceOut.ref}/invoice-email`).respond(); controller.sendPdfInvoice($data); $httpBackend.flush(); @@ -105,21 +96,26 @@ describe('vnInvoiceOutDescriptorMenu', () => { it('should make a query to the csv invoice send endpoint and show a message snackbar', () => { jest.spyOn(controller.vnApp, 'showMessage'); - controller.invoiceOut = invoiceOut; - const $data = {email: 'brucebanner@gothamcity.com'}; - const expectedParams = { - invoiceId: invoiceOut.id, - recipient: $data.email, - recipientId: invoiceOut.client.id - }; - const serializedParams = $httpParamSerializer(expectedParams); - $httpBackend.expectGET(`csv/invoice/send?${serializedParams}`).respond(); + $httpBackend.expectPOST(`InvoiceOuts/${invoiceOut.ref}/invoice-csv-email`).respond(); controller.sendCsvInvoice($data); $httpBackend.flush(); expect(controller.vnApp.showMessage).toHaveBeenCalled(); }); }); + + describe('refundInvoiceOut()', () => { + it('should make a query and show a success message', () => { + jest.spyOn(controller.vnApp, 'showSuccess'); + const params = {ref: controller.invoiceOut.ref}; + + $httpBackend.expectPOST(`InvoiceOuts/refund`, params).respond([{id: 1}, {id: 2}]); + controller.refundInvoiceOut(); + $httpBackend.flush(); + + expect(controller.vnApp.showSuccess).toHaveBeenCalled(); + }); + }); }); diff --git a/modules/invoiceOut/front/descriptor-menu/locale/en.yml b/modules/invoiceOut/front/descriptor-menu/locale/en.yml new file mode 100644 index 000000000..d299155d7 --- /dev/null +++ b/modules/invoiceOut/front/descriptor-menu/locale/en.yml @@ -0,0 +1 @@ +The following refund tickets have been created: "The following refund tickets have been created: {{ticketIds}}" diff --git a/modules/invoiceOut/front/descriptor-menu/locale/es.yml b/modules/invoiceOut/front/descriptor-menu/locale/es.yml index a76f6aad3..488c1a3f8 100644 --- a/modules/invoiceOut/front/descriptor-menu/locale/es.yml +++ b/modules/invoiceOut/front/descriptor-menu/locale/es.yml @@ -12,6 +12,9 @@ Are you sure you want to delete this invoice?: Estas seguro de eliminar esta fac Are you sure you want to clone this invoice?: Estas seguro de clonar esta factura? InvoiceOut booked: Factura asentada Are you sure you want to book this invoice?: Estas seguro de querer asentar esta factura? +Are you sure you want to refund this invoice?: Estas seguro de querer abonar esta factura? +Create a single ticket with all the content of the current invoice: Crear un ticket unico con todo el contenido de la factura actual Regenerate PDF invoice: Regenerar PDF factura The invoice PDF document has been regenerated: El documento PDF de la factura ha sido regenerado The email can't be empty: El correo no puede estar vacío +The following refund tickets have been created: "Se han creado los siguientes tickets de abono: {{ticketIds}}" diff --git a/modules/invoiceOut/front/descriptor/index.html b/modules/invoiceOut/front/descriptor/index.html index 135eae0e1..92f0b9de5 100644 --- a/modules/invoiceOut/front/descriptor/index.html +++ b/modules/invoiceOut/front/descriptor/index.html @@ -1,6 +1,7 @@ + description="$ctrl.invoiceOut.ref" + summary="$ctrl.$.summary"> - \ No newline at end of file + + + + \ No newline at end of file diff --git a/modules/invoiceOut/front/index/global-invoicing/index.html b/modules/invoiceOut/front/index/global-invoicing/index.html index 9fd412d0e..3d245b8d8 100644 --- a/modules/invoiceOut/front/index/global-invoicing/index.html +++ b/modules/invoiceOut/front/index/global-invoicing/index.html @@ -19,7 +19,7 @@ ng-if="$ctrl.isInvoicing"> - Invoicing in progress... + Adding invoices to queue... @@ -66,5 +66,5 @@ - + \ No newline at end of file diff --git a/modules/invoiceOut/front/index/global-invoicing/index.spec.js b/modules/invoiceOut/front/index/global-invoicing/index.spec.js index 35252c406..916364007 100644 --- a/modules/invoiceOut/front/index/global-invoicing/index.spec.js +++ b/modules/invoiceOut/front/index/global-invoicing/index.spec.js @@ -66,7 +66,9 @@ describe('InvoiceOut', () => { controller.responseHandler('accept'); - expect(controller.vnApp.showError).toHaveBeenCalledWith(`Invoice date and the max date should be filled`); + const expectedError = 'Invoice date and the max date should be filled'; + + expect(controller.vnApp.showError).toHaveBeenCalledWith(expectedError); }); it('should throw an error when fromClientId or toClientId properties are not filled in', () => { diff --git a/modules/invoiceOut/front/index/global-invoicing/locale/es.yml b/modules/invoiceOut/front/index/global-invoicing/locale/es.yml index 51e165e2a..1a6e15656 100644 --- a/modules/invoiceOut/front/index/global-invoicing/locale/es.yml +++ b/modules/invoiceOut/front/index/global-invoicing/locale/es.yml @@ -1,7 +1,7 @@ Create global invoice: Crear factura global Some fields are required: Algunos campos son obligatorios Max date: Fecha límite -Invoicing in progress...: Facturación en progreso... +Adding invoices to queue...: Añadiendo facturas a la cola... Invoice date: Fecha de factura From client: Desde el cliente To client: Hasta el cliente diff --git a/modules/invoiceOut/front/index/index.html b/modules/invoiceOut/front/index/index.html index d970bd15a..632dbf90b 100644 --- a/modules/invoiceOut/front/index/index.html +++ b/modules/invoiceOut/front/index/index.html @@ -4,10 +4,24 @@ + + + + + + + + Reference Issued Amount @@ -23,6 +37,12 @@ + + + + {{::invoiceOut.ref | dashIfEmpty}} {{::invoiceOut.issued | date:'dd/MM/yyyy' | dashIfEmpty}} {{::invoiceOut.amount | currency: 'EUR': 2 | dashIfEmpty}} @@ -36,15 +56,6 @@ {{::invoiceOut.created | date:'dd/MM/yyyy' | dashIfEmpty}} {{::invoiceOut.companyCode | dashIfEmpty}} {{::invoiceOut.dued | date:'dd/MM/yyyy' | dashIfEmpty}} - - - - { + location.href = 'data:application/zip;base64,' + res.data; + }); + } } } diff --git a/modules/invoiceOut/front/index/locale/es.yml b/modules/invoiceOut/front/index/locale/es.yml index 1460b90d8..74572da49 100644 --- a/modules/invoiceOut/front/index/locale/es.yml +++ b/modules/invoiceOut/front/index/locale/es.yml @@ -6,3 +6,4 @@ Minimum: Minimo Maximum: Máximo Global invoicing: Facturación global Manual invoicing: Facturación manual +Files are too large: Los archivos son demasiado grandes \ No newline at end of file diff --git a/modules/invoiceOut/front/main/index.html b/modules/invoiceOut/front/main/index.html index 7f3e67f35..ab3fce9ea 100644 --- a/modules/invoiceOut/front/main/index.html +++ b/modules/invoiceOut/front/main/index.html @@ -2,7 +2,7 @@ vn-id="model" url="InvoiceOuts/filter" limit="20" - order="issued DESC"> + order="issued DESC, id DESC"> { } }); - it('should return no results filtering by hasMinPrice', async() => { + it('should return 1 result filtering by hasMinPrice', async() => { const tx = await models.FixedPrice.beginTransaction({}); try { @@ -103,7 +103,7 @@ describe('fixed price filter()', () => { }; const result = await models.FixedPrice.filter(ctx, null, options); - expect(result.length).toEqual(0); + expect(result.length).toEqual(1); await tx.rollback(); } catch (e) { diff --git a/modules/item/back/methods/item-shelving/deleteItemShelvings.js b/modules/item/back/methods/item-shelving/deleteItemShelvings.js new file mode 100644 index 000000000..f534b4e9a --- /dev/null +++ b/modules/item/back/methods/item-shelving/deleteItemShelvings.js @@ -0,0 +1,51 @@ +module.exports = Self => { + Self.remoteMethod('deleteItemShelvings', { + description: 'Deletes the selected item shelvings', + accessType: 'WRITE', + accepts: [{ + arg: 'itemShelvingIds', + type: ['number'], + required: true, + description: 'The itemShelving ids to delete' + }], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/deleteItemShelvings`, + verb: 'POST' + } + }); + + Self.deleteItemShelvings = async(itemShelvingIds, options) => { + const models = Self.app.models; + const myOptions = {}; + let tx; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + const promises = []; + for (let itemShelvingId of itemShelvingIds) { + const itemShelvingToDelete = models.ItemShelving.destroyById(itemShelvingId, myOptions); + promises.push(itemShelvingToDelete); + } + + const deletedItemShelvings = await Promise.all(promises); + + if (tx) await tx.commit(); + + return deletedItemShelvings; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/item/back/methods/item-shelving/specs/deleteItemShelvings.spec.js b/modules/item/back/methods/item-shelving/specs/deleteItemShelvings.spec.js new file mode 100644 index 000000000..b4113d7cf --- /dev/null +++ b/modules/item/back/methods/item-shelving/specs/deleteItemShelvings.spec.js @@ -0,0 +1,21 @@ +const models = require('vn-loopback/server/server').models; + +describe('ItemShelving deleteItemShelvings()', () => { + it('should return the deleted itemShelvings', async() => { + const tx = await models.Order.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const itemShelvingIds = [1, 2]; + const result = await models.ItemShelving.deleteItemShelvings(itemShelvingIds, options); + + expect(result.length).toEqual(2); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/item/back/methods/item/buyerWasteEmail.js b/modules/item/back/methods/item/buyerWasteEmail.js new file mode 100644 index 000000000..7f340de0f --- /dev/null +++ b/modules/item/back/methods/item/buyerWasteEmail.js @@ -0,0 +1,29 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('buyerWasteEmail', { + description: 'Sends the buyer waste email', + accessType: 'WRITE', + accepts: [], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/buyer-waste-email', + verb: 'POST' + } + }); + + Self.buyerWasteEmail = async ctx => { + const models = Self.app.models; + const itemConfig = await models.ItemConfig.findOne(); + + const email = new Email('buyer-week-waste', { + recipient: itemConfig.wasteRecipients, + lang: ctx.req.getLocale() + }); + + return email.send(); + }; +}; diff --git a/modules/item/back/methods/item/clone.js b/modules/item/back/methods/item/clone.js index 3e6f3ab5a..6d07e83d3 100644 --- a/modules/item/back/methods/item/clone.js +++ b/modules/item/back/methods/item/clone.js @@ -42,7 +42,6 @@ module.exports = Self => { origin.itemTag = undefined; origin.description = undefined; - origin.image = undefined; origin.comment = undefined; origin.size = undefined; diff --git a/modules/item/back/methods/item/filter.js b/modules/item/back/methods/item/filter.js index 5755de69b..c0b1cc0d9 100644 --- a/modules/item/back/methods/item/filter.js +++ b/modules/item/back/methods/item/filter.js @@ -86,6 +86,7 @@ module.exports = Self => { Self.filter = async(ctx, filter, options) => { const conn = Self.dataSource.connector; + const models = Self.app.models; const myOptions = {}; if (typeof options == 'object') @@ -140,6 +141,8 @@ module.exports = Self => { filter = mergeFilters(filter, {where}); + const userConfig = await models.UserConfig.getUserConfig(ctx, myOptions); + const stmts = []; const stmt = new ParameterizedSQL( `SELECT @@ -157,7 +160,7 @@ module.exports = Self => { i.subName, i.isActive, i.stems, - i.density, + i.weightByPiece, i.stemMultiplier, i.typeFk, i.isFloramondo, @@ -179,11 +182,11 @@ module.exports = Self => { LEFT JOIN intrastat intr ON intr.id = i.intrastatFk LEFT JOIN producer pr ON pr.id = i.producerFk LEFT JOIN origin ori ON ori.id = i.originFk - LEFT JOIN cache.last_buy lb ON lb.item_id = i.id AND lb.warehouse_id = it.warehouseFk + LEFT JOIN cache.last_buy lb ON lb.item_id = i.id AND lb.warehouse_id = ? LEFT JOIN buy b ON b.id = lb.buy_id LEFT JOIN entry e ON e.id = b.entryFk LEFT JOIN supplier s ON s.id = e.supplierFk` - ); + , [userConfig.warehouseFk]); if (ctx.args.tags) { let i = 1; diff --git a/modules/item/back/methods/item/getCard.js b/modules/item/back/methods/item/getCard.js index 8bb88fc86..c4ee09d95 100644 --- a/modules/item/back/methods/item/getCard.js +++ b/modules/item/back/methods/item/getCard.js @@ -30,7 +30,7 @@ module.exports = Self => { { relation: 'itemType', scope: { - fields: ['id', 'name', 'workerFk', 'warehouseFk'], + fields: ['id', 'name', 'workerFk'], include: [{ relation: 'worker', scope: { diff --git a/modules/item/back/methods/item/getSummary.js b/modules/item/back/methods/item/getSummary.js index ffcfc806e..738976e60 100644 --- a/modules/item/back/methods/item/getSummary.js +++ b/modules/item/back/methods/item/getSummary.js @@ -34,7 +34,7 @@ module.exports = Self => { include: [ {relation: 'itemType', scope: { - fields: ['id', 'name', 'workerFk', 'warehouseFk'], + fields: ['id', 'name', 'workerFk'], include: [{ relation: 'worker', scope: { diff --git a/modules/item/back/methods/item/getWasteByItem.js b/modules/item/back/methods/item/getWasteByItem.js index a797667f5..b93d534da 100644 --- a/modules/item/back/methods/item/getWasteByItem.js +++ b/modules/item/back/methods/item/getWasteByItem.js @@ -32,6 +32,8 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); + const date = new Date(); + date.setHours(0, 0, 0, 0); const wastes = await Self.rawSql(` SELECT *, 100 * dwindle / total AS percentage FROM ( @@ -42,11 +44,11 @@ module.exports = Self => { sum(ws.saleWaste) AS dwindle FROM bs.waste ws WHERE buyer = ? AND family = ? - AND year = YEAR(TIMESTAMPADD(WEEK,-1,CURDATE())) - AND week = WEEK(TIMESTAMPADD(WEEK,-1,CURDATE()), 1) + AND year = YEAR(TIMESTAMPADD(WEEK,-1, ?)) + AND week = WEEK(TIMESTAMPADD(WEEK,-1, ?), 1) GROUP BY buyer, itemFk ) sub - ORDER BY family, percentage DESC`, [buyer, family], myOptions); + ORDER BY family, percentage DESC`, [buyer, family, date, date], myOptions); const details = []; diff --git a/modules/item/back/methods/item/getWasteByWorker.js b/modules/item/back/methods/item/getWasteByWorker.js index 5e40831b9..4c3c64a91 100644 --- a/modules/item/back/methods/item/getWasteByWorker.js +++ b/modules/item/back/methods/item/getWasteByWorker.js @@ -19,6 +19,8 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); + const date = new Date(); + date.setHours(0, 0, 0, 0); const wastes = await Self.rawSql(` SELECT *, 100 * dwindle / total AS percentage FROM ( @@ -27,11 +29,24 @@ module.exports = Self => { sum(ws.saleTotal) AS total, sum(ws.saleWaste) AS dwindle FROM bs.waste ws - WHERE year = YEAR(TIMESTAMPADD(WEEK,-1,CURDATE())) - AND week = WEEK(TIMESTAMPADD(WEEK,-1,CURDATE()), 1) + WHERE year = YEAR(TIMESTAMPADD(WEEK,-1, ?)) + AND week = WEEK(TIMESTAMPADD(WEEK,-1, ?), 1) GROUP BY buyer, family ) sub - ORDER BY percentage DESC`, null, myOptions); + ORDER BY percentage DESC`, [date, date], myOptions); + + const wastesTotal = await Self.rawSql(` + SELECT *, 100 * dwindle / total AS percentage + FROM ( + SELECT buyer, + sum(ws.saleTotal) AS total, + sum(ws.saleWaste) AS dwindle + FROM bs.waste ws + WHERE year = YEAR(TIMESTAMPADD(WEEK,-1, ?)) + AND week = WEEK(TIMESTAMPADD(WEEK,-1, ?), 1) + GROUP BY buyer + ) sub + ORDER BY percentage DESC`, [date, date], myOptions); const details = []; @@ -53,6 +68,14 @@ module.exports = Self => { buyerDetail.lines.push(waste); } + for (let waste of details) { + let buyerTotal = wastesTotal.find(totals => { + return waste.buyer == totals.buyer; + }); + + Object.assign(waste, buyerTotal); + } + return details; }; }; diff --git a/modules/item/back/methods/item/labelPdf.js b/modules/item/back/methods/item/labelPdf.js new file mode 100644 index 000000000..747869b37 --- /dev/null +++ b/modules/item/back/methods/item/labelPdf.js @@ -0,0 +1,72 @@ +const {Report} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('labelPdf', { + description: 'Returns the item label pdf', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The item id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + }, + { + arg: 'warehouseId', + type: 'number', + description: 'The warehouse id', + required: true + }, + { + arg: 'labelNumber', + type: 'number', + required: false + }, + { + arg: 'totalLabels', + type: 'number', + required: false + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/label-pdf', + verb: 'GET' + } + }); + + Self.labelPdf = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const report = new Report('item-label', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="item-${id}.pdf"`]; + }; +}; diff --git a/modules/item/back/methods/item/specs/clone.spec.js b/modules/item/back/methods/item/specs/clone.spec.js index d376b9e5b..1f4a87ac1 100644 --- a/modules/item/back/methods/item/specs/clone.spec.js +++ b/modules/item/back/methods/item/specs/clone.spec.js @@ -21,7 +21,7 @@ describe('item clone()', () => { const result = await models.Item.clone(itemFk, options); expect(result.id).toEqual(nextItemId); - expect(result.image).toBeUndefined(); + expect(result.image).toBeDefined(); expect(result.itemTag).toBeUndefined(); expect(result.comment).toBeUndefined(); expect(result.description).toBeUndefined(); diff --git a/modules/item/back/methods/item/specs/filter.spec.js b/modules/item/back/methods/item/specs/filter.spec.js index 6a173576d..14467d1d8 100644 --- a/modules/item/back/methods/item/specs/filter.spec.js +++ b/modules/item/back/methods/item/specs/filter.spec.js @@ -7,7 +7,7 @@ describe('item filter()', () => { try { const filter = {}; - const ctx = {args: {filter: filter, search: 1}}; + const ctx = {args: {filter: filter, search: 1}, req: {accessToken: {userId: 1}}}; const result = await models.Item.filter(ctx, filter, options); expect(result.length).toEqual(1); @@ -26,7 +26,7 @@ describe('item filter()', () => { try { const filter = {}; - const ctx = {args: {filter: filter, search: 4444444444}}; + const ctx = {args: {filter: filter, search: 4444444444}, req: {accessToken: {userId: 1}}}; const result = await models.Item.filter(ctx, filter, options); expect(result.length).toEqual(1); @@ -49,7 +49,7 @@ describe('item filter()', () => { limit: 8 }; const tags = [{value: 'medical box', tagFk: 58}]; - const ctx = {args: {filter: filter, typeFk: 5, tags: tags}}; + const ctx = {args: {filter: filter, typeFk: 5, tags: tags}, req: {accessToken: {userId: 1}}}; const result = await models.Item.filter(ctx, filter, options); expect(result.length).toEqual(2); @@ -67,7 +67,7 @@ describe('item filter()', () => { try { const filter = {}; - const ctx = {args: {filter: filter, isFloramondo: true}}; + const ctx = {args: {filter: filter, isFloramondo: true}, req: {accessToken: {userId: 1}}}; const result = await models.Item.filter(ctx, filter, options); expect(result.length).toEqual(3); @@ -86,7 +86,7 @@ describe('item filter()', () => { try { const filter = {}; - const ctx = {args: {filter: filter, buyerFk: 16}}; + const ctx = {args: {filter: filter, buyerFk: 16}, req: {accessToken: {userId: 1}}}; const result = await models.Item.filter(ctx, filter, options); expect(result.length).toEqual(2); @@ -106,7 +106,7 @@ describe('item filter()', () => { try { const filter = {}; - const ctx = {args: {filter: filter, supplierFk: 1}}; + const ctx = {args: {filter: filter, supplierFk: 1}, req: {accessToken: {userId: 1}}}; const result = await models.Item.filter(ctx, filter, options); expect(result.length).toEqual(2); diff --git a/modules/item/back/methods/item/specs/getWasteByWorker.spec.js b/modules/item/back/methods/item/specs/getWasteByWorker.spec.js index c8b9d5e15..52f806bd3 100644 --- a/modules/item/back/methods/item/specs/getWasteByWorker.spec.js +++ b/modules/item/back/methods/item/specs/getWasteByWorker.spec.js @@ -12,6 +12,7 @@ describe('Item getWasteByWorker()', () => { const anyResult = result[Math.floor(Math.random() * Math.floor(length))]; expect(anyResult.buyer).toMatch(/(CharlesXavier|HankPym|DavidCharlesHaller)/); + expect(anyResult.total).toBeGreaterThanOrEqual(1000); expect(anyResult.lines.length).toBeGreaterThanOrEqual(3); await tx.rollback(); diff --git a/modules/item/back/methods/item/specs/lastEntriesFilter.spec.js b/modules/item/back/methods/item/specs/lastEntriesFilter.spec.js index 6c692848b..25e661aee 100644 --- a/modules/item/back/methods/item/specs/lastEntriesFilter.spec.js +++ b/modules/item/back/methods/item/specs/lastEntriesFilter.spec.js @@ -1,12 +1,11 @@ -const models = require('vn-loopback/server/server').models; - +const {models} = require('vn-loopback/server/server'); describe('item lastEntriesFilter()', () => { - const minDate = new Date(value); - minHour.setHours(0, 0, 0, 0); - const maxDate = new Date(value); - maxHour.setHours(23, 59, 59, 59); + it('should return one entry for the given item', async() => { + const minDate = new Date(); + minDate.setHours(0, 0, 0, 0); + const maxDate = new Date(); + maxDate.setHours(23, 59, 59, 59); - it('should return one entry for a given item', async() => { const tx = await models.Item.beginTransaction({}); const options = {transaction: tx}; @@ -23,13 +22,18 @@ describe('item lastEntriesFilter()', () => { } }); - it('should return five entries for a given item', async() => { + it('should return five entries for the given item', async() => { + const minDate = new Date(); + minDate.setHours(0, 0, 0, 0); + minDate.setMonth(minDate.getMonth() - 2, 1); + + const maxDate = new Date(); + maxDate.setHours(23, 59, 59, 59); + const tx = await models.Item.beginTransaction({}); const options = {transaction: tx}; try { - minDate.setMonth(minDate.getMonth() - 2, 1); - const filter = {where: {itemFk: 1, landed: {between: [minDate, maxDate]}}}; const result = await models.Item.lastEntriesFilter(filter, options); diff --git a/modules/item/back/model-config.json b/modules/item/back/model-config.json index d134d9283..40d73f1a6 100644 --- a/modules/item/back/model-config.json +++ b/modules/item/back/model-config.json @@ -23,13 +23,16 @@ "ItemCategory": { "dataSource": "vn" }, + "ItemConfig": { + "dataSource": "vn" + }, "ItemFamily": { "dataSource": "vn" }, "ItemLog": { "dataSource": "vn" }, - "ItemPlacement": { + "ItemPackingType": { "dataSource": "vn" }, "ItemTag": { @@ -50,6 +53,9 @@ "ItemShelvingSale": { "dataSource": "vn" }, + "ItemShelvingPlacementSupplyStock": { + "dataSource": "vn" + }, "ItemImageQueue": { "dataSource": "vn" }, diff --git a/modules/item/back/models/expense.json b/modules/item/back/models/expense.json index 65af02013..03147c08b 100644 --- a/modules/item/back/models/expense.json +++ b/modules/item/back/models/expense.json @@ -13,28 +13,10 @@ "description": "Identifier" }, "name": { - "type": "String" + "type": "string" }, "isWithheld": { "type": "number" - }, - "taxTypeFk": { - "type": "number" } - }, - "relations": { - "taxType": { - "type": "belongsTo", - "model": "TaxType", - "foreignKey": "taxTypeFk" - } - }, - "acls": [ - { - "accessType": "READ", - "principalType": "ROLE", - "principalId": "$everyone", - "permission": "ALLOW" - } - ] + } } \ No newline at end of file diff --git a/modules/item/back/models/genus.json b/modules/item/back/models/genus.json index f18d8e4ae..007454130 100644 --- a/modules/item/back/models/genus.json +++ b/modules/item/back/models/genus.json @@ -8,12 +8,12 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "name": { - "type": "String" + "type": "string" } }, "acls": [ diff --git a/modules/item/back/models/ink.json b/modules/item/back/models/ink.json index a3cd857bf..6a39daafe 100644 --- a/modules/item/back/models/ink.json +++ b/modules/item/back/models/ink.json @@ -8,12 +8,12 @@ }, "properties": { "id": { - "type": "String", + "type": "string", "id": true, "description": "Identifier" }, "name": { - "type": "String" + "type": "string" }, "showOrder": { "type": "number" diff --git a/modules/item/back/models/item-barcode.json b/modules/item/back/models/item-barcode.json index b9de53dd1..e2ce347cb 100644 --- a/modules/item/back/models/item-barcode.json +++ b/modules/item/back/models/item-barcode.json @@ -13,12 +13,12 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "code": { - "type": "String", + "type": "string", "required": true } }, diff --git a/modules/item/back/models/item-botanical.json b/modules/item/back/models/item-botanical.json index 6c465f0ee..8d8fd389f 100644 --- a/modules/item/back/models/item-botanical.json +++ b/modules/item/back/models/item-botanical.json @@ -12,7 +12,7 @@ }, "properties": { "itemFk": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" } diff --git a/modules/item/back/models/item-config.json b/modules/item/back/models/item-config.json new file mode 100644 index 000000000..364879986 --- /dev/null +++ b/modules/item/back/models/item-config.json @@ -0,0 +1,21 @@ +{ + "name": "ItemConfig", + "base": "VnModel", + "options": { + "mysql": { + "table": "itemConfig" + } + }, + "properties": { + "isItemTagTriggerDisabled": { + "type": "boolean" + }, + "monthToDeactivate": { + "type": "boolean" + }, + "wasteRecipients": { + "type": "string", + "description": "Buyers waste report recipients" + } + } +} \ No newline at end of file diff --git a/modules/item/back/models/item-log.json b/modules/item/back/models/item-log.json index c52931193..633a8f86b 100644 --- a/modules/item/back/models/item-log.json +++ b/modules/item/back/models/item-log.json @@ -9,40 +9,40 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "forceId": false }, "originFk": { - "type": "Number", + "type": "number", "required": true }, "userFk": { - "type": "Number" + "type": "number" }, "action": { - "type": "String", + "type": "string", "required": true }, "changedModel": { - "type": "String" + "type": "string" }, "oldInstance": { - "type": "Object" + "type": "object" }, "newInstance": { - "type": "Object" + "type": "object" }, "creationDate": { - "type": "Date" + "type": "date" }, "changedModelId": { - "type": "Number" + "type": "number" }, "changedModelValue": { - "type": "String" + "type": "string" }, "description": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/modules/item/back/models/item-placement.json b/modules/item/back/models/item-placement.json deleted file mode 100644 index 7bbb2dc91..000000000 --- a/modules/item/back/models/item-placement.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "ItemPlacement", - "base": "VnModel", - "options": { - "mysql": { - "table": "itemPlacement" - } - }, - "properties": { - "id": { - "type": "Number", - "id": true - }, - "code": { - "type": "String" - }, - "itemFk": { - "type": "Number" - }, - "warehouseFk": { - "type": "Number" - } - }, - "relations": { - "item": { - "type": "belongsTo", - "model": "Item", - "foreignKey": "itemFk" - }, - "warehouse": { - "type": "belongsTo", - "model": "Warehouse", - "foreignKey": "warehouseFk" - } - } -} \ No newline at end of file diff --git a/modules/item/back/models/item-shelving-placement-supply.json b/modules/item/back/models/item-shelving-placement-supply.json new file mode 100644 index 000000000..a54013e05 --- /dev/null +++ b/modules/item/back/models/item-shelving-placement-supply.json @@ -0,0 +1,36 @@ +{ + "name": "ItemShelvingPlacementSupplyStock", + "base": "VnModel", + "options": { + "mysql": { + "table": "itemShelvingPlacementSupplyStock" + } + }, + "properties": { + "itemShelvingFk": { + "type": "number", + "id": true + }, + "created": { + "type": "date" + }, + "itemFk": { + "type": "number" + }, + "longName": { + "type": "string" + }, + "parking": { + "type": "string" + }, + "shelving": { + "type": "string" + }, + "packing": { + "type": "number" + }, + "stock": { + "type": "number" + } + } +} \ No newline at end of file diff --git a/modules/item/back/models/item-shelving-sale.json b/modules/item/back/models/item-shelving-sale.json index 04f505ddd..8b89a7597 100644 --- a/modules/item/back/models/item-shelving-sale.json +++ b/modules/item/back/models/item-shelving-sale.json @@ -8,15 +8,15 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "quantity": { - "type": "Number" + "type": "number" }, "created": { - "type": "Date" + "type": "date" } }, "relations": { diff --git a/modules/item/back/models/item-shelving.js b/modules/item/back/models/item-shelving.js new file mode 100644 index 000000000..5f372a3be --- /dev/null +++ b/modules/item/back/models/item-shelving.js @@ -0,0 +1,3 @@ +module.exports = Self => { + require('../methods/item-shelving/deleteItemShelvings')(Self); +}; diff --git a/modules/item/back/models/item-shelving.json b/modules/item/back/models/item-shelving.json index f0391c565..951a4553a 100644 --- a/modules/item/back/models/item-shelving.json +++ b/modules/item/back/models/item-shelving.json @@ -8,27 +8,27 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "shelve": { - "type": "String" + "type": "string" }, "shelvingFk": { - "type": "String" + "type": "string" }, "itemFk": { - "type": "Number" + "type": "number" }, "deep": { - "type": "Number" + "type": "number" }, "quantity": { - "type": "Number" + "type": "number" }, "created": { - "type": "Date" + "type": "date" } }, "relations": { diff --git a/modules/item/back/models/item-tag.js b/modules/item/back/models/item-tag.js index 891d11558..5b7163913 100644 --- a/modules/item/back/models/item-tag.js +++ b/modules/item/back/models/item-tag.js @@ -5,7 +5,7 @@ module.exports = Self => { Self.rewriteDbError(function(err) { if (err.code === 'ER_DUP_ENTRY') - return new UserError(`The tag can't be repeated`); + return new UserError(`The tag or priority can't be repeated for an item`); if (err.code === 'ER_BAD_NULL_ERROR') return new UserError(`Tag value cannot be blank`); return err; diff --git a/modules/item/back/models/item-tag.json b/modules/item/back/models/item-tag.json index 6beeb29d3..5660b3628 100644 --- a/modules/item/back/models/item-tag.json +++ b/modules/item/back/models/item-tag.json @@ -13,23 +13,23 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "value": { - "type": "String" + "type": "string" }, "itemFk": { - "type": "Number", + "type": "number", "required": true }, "tagFk": { - "type": "Number", + "type": "number", "required": true }, "priority": { - "type": "Number", + "type": "number", "required": true } }, diff --git a/modules/item/back/models/item-tax-country.json b/modules/item/back/models/item-tax-country.json index 24c621518..f10a9eb72 100644 --- a/modules/item/back/models/item-tax-country.json +++ b/modules/item/back/models/item-tax-country.json @@ -13,21 +13,21 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "effectived": { - "type": "Boolean" + "type": "boolean" }, "itemFk": { - "type": "Number" + "type": "number" }, "countryFk": { - "type": "Number" + "type": "number" }, "taxClassFk": { - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/item/back/models/item-type-tag.json b/modules/item/back/models/item-type-tag.json index ca374e00e..8c4d50a07 100644 --- a/modules/item/back/models/item-type-tag.json +++ b/modules/item/back/models/item-type-tag.json @@ -8,12 +8,12 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "priority": { - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/item/back/models/item-type.json b/modules/item/back/models/item-type.json index cb9d5ace8..74cdf3fc8 100644 --- a/modules/item/back/models/item-type.json +++ b/modules/item/back/models/item-type.json @@ -21,8 +21,11 @@ "life": { "type": "number" }, - "isPackaging": { - "type": "boolean" + "promo": { + "type": "number" + }, + "isUnconventionalSize": { + "type": "number" } }, "relations": { @@ -31,15 +34,20 @@ "model": "Worker", "foreignKey": "workerFk" }, - "warehouse": { - "type": "belongsTo", - "model": "Warehouse", - "foreignKey": "warehouseFk" - }, "category": { "type": "belongsTo", "model": "ItemCategory", "foreignKey": "categoryFk" + }, + "itemPackingType": { + "type": "belongsTo", + "model": "ItemPackingType", + "foreignKey": "itemPackingTypeFk" + }, + "temperature": { + "type": "belongsTo", + "model": "Temperature", + "foreignKey": "temperatureFk" } }, "acls": [ diff --git a/modules/item/back/models/item.js b/modules/item/back/models/item.js index 457cce4f2..b8baa97ea 100644 --- a/modules/item/back/models/item.js +++ b/modules/item/back/models/item.js @@ -15,6 +15,8 @@ module.exports = Self => { require('../methods/item/getWasteByItem')(Self); require('../methods/item/createIntrastat')(Self); require('../methods/item/activeBuyers')(Self); + require('../methods/item/buyerWasteEmail')(Self); + require('../methods/item/labelPdf')(Self); Self.validatesPresenceOf('originFk', {message: 'Cannot be blank'}); diff --git a/modules/item/back/models/item.json b/modules/item/back/models/item.json index 9b78264f7..704c97434 100644 --- a/modules/item/back/models/item.json +++ b/modules/item/back/models/item.json @@ -53,9 +53,9 @@ "type": "number", "description": "Relevancy" }, - "density": { + "weightByPiece": { "type": "number", - "description": "Density" + "description": "WeightByPiece" }, "stemMultiplier": { "type": "number", @@ -112,9 +112,6 @@ "itemPackingTypeFk": { "type": "string" }, - "compression": { - "type": "number" - }, "hasKgPrice": { "type": "boolean", "description": "Price per Kg" @@ -143,6 +140,9 @@ }, "isFloramondo": { "type": "boolean" + }, + "packingShelve": { + "type": "number" } }, "relations": { diff --git a/modules/item/back/models/producer.json b/modules/item/back/models/producer.json index 81a36f8d1..593a172b5 100644 --- a/modules/item/back/models/producer.json +++ b/modules/item/back/models/producer.json @@ -8,12 +8,12 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "name": { - "type": "String" + "type": "string" } }, "acls": [ diff --git a/modules/item/back/models/specie.json b/modules/item/back/models/specie.json index c5a1f455e..f24474416 100644 --- a/modules/item/back/models/specie.json +++ b/modules/item/back/models/specie.json @@ -8,12 +8,12 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "name": { - "type": "String" + "type": "string" } }, "acls": [ diff --git a/modules/item/back/models/tag.json b/modules/item/back/models/tag.json index 4cd1ad74e..6c5f5c0ba 100644 --- a/modules/item/back/models/tag.json +++ b/modules/item/back/models/tag.json @@ -8,25 +8,25 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "name": { - "type": "String", + "type": "string", "required": true }, "isFree": { - "type": "Boolean" + "type": "boolean" }, "sourceTable": { - "type": "String" + "type": "string" }, "unit": { - "type": "String" + "type": "string" }, "isQuantitative": { - "type": "Boolean", + "type": "boolean", "mysql": { "columnName": "isQuantitatif" } diff --git a/modules/item/front/basic-data/index.html b/modules/item/front/basic-data/index.html index b7db41094..8d1afe4e1 100644 --- a/modules/item/front/basic-data/index.html +++ b/modules/item/front/basic-data/index.html @@ -124,17 +124,8 @@ - - + description="$ctrl.item.name" + summary="$ctrl.$.summary"> + + + { + const hashFk = this.lineFk || lineFk; + const hash = `vnItemDiary-${hashFk}`; + this.$location.hash(hash); + this.$anchorScroll(); + }); } showDescriptor(event, sale) { diff --git a/modules/item/front/diary/index.spec.js b/modules/item/front/diary/index.spec.js index 988914978..a80fbfc69 100644 --- a/modules/item/front/diary/index.spec.js +++ b/modules/item/front/diary/index.spec.js @@ -19,7 +19,8 @@ describe('Item', () => { describe('set item()', () => { it('should set warehouseFk property based on itemType warehouseFk', () => { jest.spyOn(controller.$, '$applyAsync'); - controller.item = {id: 1, itemType: {warehouseFk: 1}}; + controller.vnConfig = {warehouseFk: 1}; + controller.item = {id: 1}; expect(controller.$.$applyAsync).toHaveBeenCalledWith(jasmine.any(Function)); $scope.$apply(); @@ -47,6 +48,8 @@ describe('Item', () => { controller.lineFk = 1; controller.scrollToLine('invalidValue'); + $scope.$apply(); + expect(controller.$location.hash()).toEqual(`vnItemDiary-${1}`); expect(controller.$anchorScroll).toHaveBeenCalledWith(); }); @@ -56,6 +59,8 @@ describe('Item', () => { controller.lineFk = undefined; controller.scrollToLine(1); + $scope.$apply(); + expect(controller.$location.hash()).toEqual(`vnItemDiary-${1}`); expect(controller.$anchorScroll).toHaveBeenCalledWith(); }); diff --git a/modules/item/front/fixed-price/index.html b/modules/item/front/fixed-price/index.html index 6f98ba65b..9498bf96f 100644 --- a/modules/item/front/fixed-price/index.html +++ b/modules/item/front/fixed-price/index.html @@ -3,8 +3,8 @@ url="FixedPrices/filter" limit="20" data="prices" - auto-load="true" - order="itemFk"> + order="itemFk" + auto-load="false"> -
+
- - - - Item ID - Description - Warehouse - P.P.U. - P.P.P. - Min price - Started - Ended - - - - - - - - {{price.itemFk}} - - - - {{::id}} - {{::name}} - - - - -
- {{price.name}} - -

{{price.subName}}

-
-
- - -
- - - - - - {{price.rate2 | currency: 'EUR':2}} - - - - - - - {{price.rate3 | currency: 'EUR':2}} - - - - - - - {{(price.hasMinPrice ? (price.minPrice | currency: 'EUR':2) : "-")}} - - - - - - - - - - - - - - - - - -
-
-
-
- - -
- - + options="$ctrl.smartTableOptions" + expr-builder="$ctrl.exprBuilder(param, value)"> + +

+ checked="$ctrl.checkAll" + check-field="checked" + check-dummy-enabled="true" + checked-dummy-count="$ctrl.checkedDummyCount"> Picture Origin - Density + + Weight/Piece Active @@ -121,17 +124,18 @@
- - - - {{::buy.packing | dashIfEmpty}} + + {{::buy.packing | dashIfEmpty}} - - {{::buy.grouping | dashIfEmpty}} + + {{::buy.grouping | dashIfEmpty}} {{::buy.quantity}} {{::buy.origin}}{{::buy.density}}{{::buy.weightByPiece}} - + {{::buy.family}} @@ -202,7 +206,7 @@ - + {{::buy.price2 | currency: 'EUR':2}} {{::buy.price3 | currency: 'EUR':2}} {{::line.weight}} - {{::line.packing | dashIfEmpty}} + {{::line.packing | dashIfEmpty}} - {{::line.grouping | dashIfEmpty}} + {{::line.grouping | dashIfEmpty}} {{::line.buyingValue | currency: 'EUR':2}}
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Item ID + + Description + + Warehouse + + P.P.U. + + P.P.P. + + Min price + + Started + + Ended +
+ + +
{{id}}
+
+ {{name}} +
+
+
+
+
+ + {{price.name}} + + +

{{price.subName}}

+
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+
+
-
\ No newline at end of file + diff --git a/modules/item/front/fixed-price/index.js b/modules/item/front/fixed-price/index.js index 4dc1cf472..89ce0b172 100644 --- a/modules/item/front/fixed-price/index.js +++ b/modules/item/front/fixed-price/index.js @@ -5,13 +5,61 @@ import './style.scss'; export default class Controller extends Section { constructor($element, $) { super($element, $); + + this.smartTableOptions = { + activeButtons: { + search: true + }, + defaultSearch: true, + columns: [ + { + field: 'warehouseFk', + autocomplete: { + url: 'Warehouses', + showField: 'name', + valueField: 'id', + } + }, + { + field: 'started', + searchable: false + }, + { + field: 'ended', + searchable: false + } + ] + }; } - /** - * Inserts a new instance - */ add() { - this.$.model.insert({}); + if (!this.$.model.data || this.$.model.data.length == 0) { + this.$.model.data = []; + this.$.model.proxiedData = []; + this.$.model.insert({}); + return; + } + + const lastIndex = this.$.model.data.length - 1; + const lastItem = this.$.model.data[lastIndex]; + this.$.model.insert({ + itemFk: lastItem.itemFk, + name: lastItem.name, + subName: lastItem.subName, + value5: lastItem.value5, + value6: lastItem.value6, + value7: lastItem.value7, + value8: lastItem.value8, + value9: lastItem.value9, + value10: lastItem.value10, + warehouseFk: lastItem.warehouseFk, + rate2: lastItem.rate2, + rate3: lastItem.rate3, + hasMinPrice: lastItem.hasMinPrice, + minPrice: lastItem.minPrice, + started: lastItem.started, + ended: lastItem.ended, + }); } upsertPrice(price) { @@ -46,6 +94,22 @@ export default class Controller extends Section { ? {id: $search} : {name: {like: '%' + $search + '%'}}; } + + exprBuilder(param, value) { + switch (param) { + case 'name': + return {'i.name': {like: `%${value}%`}}; + case 'itemFk': + case 'warehouseFk': + case 'rate2': + case 'rate3': + param = `fp.${param}`; + return {[param]: value}; + case 'minPrice': + param = `i.${param}`; + return {[param]: value}; + } + } } ngModule.vnComponent('vnFixedPrice', { diff --git a/modules/item/front/fixed-price/index.spec.js b/modules/item/front/fixed-price/index.spec.js index faf6b850a..94621e352 100644 --- a/modules/item/front/fixed-price/index.spec.js +++ b/modules/item/front/fixed-price/index.spec.js @@ -55,6 +55,8 @@ describe('fixed price', () => { jest.spyOn(controller.vnApp, 'showSuccess'); jest.spyOn(controller.$.model, 'remove'); + $httpBackend.expectGET('Warehouses').respond(); + controller.removePrice($index); expect(controller.vnApp.showSuccess).not.toHaveBeenCalled(); diff --git a/modules/item/front/fixed-price/locale/es.yml b/modules/item/front/fixed-price/locale/es.yml index f52aef02c..3f400336d 100644 --- a/modules/item/front/fixed-price/locale/es.yml +++ b/modules/item/front/fixed-price/locale/es.yml @@ -2,4 +2,6 @@ Fixed prices: Precios fijados Search prices by item ID or code: Buscar por ID de artículo o código Search fixed prices: Buscar precios fijados Add fixed price: Añadir precio fijado -This row will be removed: Esta linea se eliminará \ No newline at end of file +This row will be removed: Esta linea se eliminará +Price By Unit: Precio Por Unidad +Price By Package: Precio Por Paquete \ No newline at end of file diff --git a/modules/item/front/fixed-price/style.scss b/modules/item/front/fixed-price/style.scss index 74df1800a..ba3878dba 100644 --- a/modules/item/front/fixed-price/style.scss +++ b/modules/item/front/fixed-price/style.scss @@ -1,5 +1,20 @@ @import "variables"; +smart-table table{ + [shrink-field]{ + width: 80px; + max-width: 80px; + } + [shrink-field-expand]{ + width: 150px; + max-width: 150px; + } +} -vn-table vn-date-picker { - max-width: 90px; +.minPrice { + align-items: center; + text-align: center; + vn-input-number { + width: 90px; + max-width: 90px; + } } \ No newline at end of file diff --git a/modules/item/front/index.js b/modules/item/front/index.js index c328b1c8d..d2ffcc8fb 100644 --- a/modules/item/front/index.js +++ b/modules/item/front/index.js @@ -23,4 +23,6 @@ import './waste/index/'; import './waste/detail'; import './fixed-price'; import './fixed-price-search-panel'; +import './item-type'; +import './item-shelving'; diff --git a/modules/item/front/index/index.html b/modules/item/front/index/index.html index 750dbfc4d..6f5cce7c0 100644 --- a/modules/item/front/index/index.html +++ b/modules/item/front/index/index.html @@ -45,8 +45,8 @@ Buyer - - Density + + Weight/Piece Multiplier @@ -117,7 +117,7 @@ {{::item.userName}} - {{::item.density}} + {{::item.weightByPiece}} {{::item.stemMultiplier}} + + + + +
+
+
Total
+ + +
+
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Created + + Item + + Concept + + Parking + + Shelving + + Etiqueta + + Packing +
+ + + {{::itemShelvingPlacementSupplyStock.created | date: 'dd/MM/yyyy'}} + {{::itemShelvingPlacementSupplyStock.itemFk}} + + + {{itemShelvingPlacementSupplyStock.longName}} + + + {{::itemShelvingPlacementSupplyStock.parking}} + + {{::itemShelvingPlacementSupplyStock.shelving}} + + {{(itemShelvingPlacementSupplyStock.stock / itemShelvingPlacementSupplyStock.packing).toFixed(2)}} + + {{::itemShelvingPlacementSupplyStock.packing}} +
+
+
+
+ + + + + \ No newline at end of file diff --git a/modules/item/front/item-shelving/index.js b/modules/item/front/item-shelving/index.js new file mode 100644 index 000000000..b8584039b --- /dev/null +++ b/modules/item/front/item-shelving/index.js @@ -0,0 +1,89 @@ +import ngModule from '../module'; +import Section from 'salix/components/section'; + +export default class Controller extends Section { + constructor($element, $) { + super($element, $); + + this.smartTableOptions = { + activeButtons: { + search: true + }, + columns: [ + { + field: 'parking', + autocomplete: { + url: 'Parkings', + showField: 'code', + valueField: 'code' + } + }, + { + field: 'shelving', + autocomplete: { + url: 'Shelvings', + showField: 'code', + valueField: 'code' + } + }, + { + field: 'created', + searchable: false + }, + { + field: 'itemFk', + searchable: false + }, + { + field: 'longName', + searchable: false + } + ] + }; + } + + get checked() { + const itemShelvings = this.$.model.data || []; + const checkedLines = []; + for (let itemShelving of itemShelvings) { + if (itemShelving.checked) + checkedLines.push(itemShelving.itemShelvingFk); + } + + return checkedLines; + } + + calculateTotals() { + this.labelTotal = 0; + const itemShelvings = this.$.model.data || []; + itemShelvings.forEach(itemShelving => { + const label = itemShelving.stock / itemShelving.packing; + this.labelTotal += label; + }); + } + + onRemove() { + const params = {itemShelvingIds: this.checked}; + const query = `ItemShelvings/deleteItemShelvings`; + this.$http.post(query, params) + .then(() => { + this.vnApp.showSuccess(this.$t('ItemShelvings removed')); + this.$.model.refresh(); + }); + } + + exprBuilder(param, value) { + switch (param) { + case 'parking': + case 'shelving': + case 'label': + case 'packing': + return {[param]: value}; + } + } +} + +ngModule.vnComponent('vnItemShelving', { + template: require('./index.html'), + controller: Controller +}); diff --git a/modules/item/front/item-shelving/index.spec.js b/modules/item/front/item-shelving/index.spec.js new file mode 100644 index 000000000..55df1c27d --- /dev/null +++ b/modules/item/front/item-shelving/index.spec.js @@ -0,0 +1,81 @@ +import './index'; +import crudModel from 'core/mocks/crud-model'; + +describe('item shelving', () => { + describe('Component vnItemShelving', () => { + let controller; + let $httpBackend; + + beforeEach(ngModule('item')); + + beforeEach(inject(($componentController, _$httpBackend_) => { + $httpBackend = _$httpBackend_; + const $element = angular.element(''); + controller = $componentController('vnItemShelving', {$element}); + controller.$.model = crudModel; + controller.$.model.data = [ + {itemShelvingFk: 1, packing: 10, stock: 1}, + {itemShelvingFk: 2, packing: 12, stock: 5}, + {itemShelvingFk: 4, packing: 20, stock: 10} + ]; + const modelData = controller.$.model.data; + modelData[0].checked = true; + modelData[1].checked = true; + })); + + describe('checked() getter', () => { + it('should return a the selected rows', () => { + const result = controller.checked; + + expect(result).toEqual(expect.arrayContaining([1, 2])); + }); + }); + + describe('calculateTotals()', () => { + it('should calculate the total of labels', () => { + controller.calculateTotals(); + + expect(controller.labelTotal).toEqual(1.0166666666666666); + }); + }); + + describe('onRemove()', () => { + it('shoud remove the selected lines', () => { + jest.spyOn(controller.$.model, 'refresh'); + const expectedParams = {itemShelvingIds: [1, 2]}; + + $httpBackend.expectPOST('ItemShelvings/deleteItemShelvings', expectedParams).respond(200); + controller.onRemove(); + $httpBackend.flush(); + + expect(controller.$.model.refresh).toHaveBeenCalled(); + }); + }); + + describe('exprBuilder()', () => { + it('should search by parking', () => { + const expr = controller.exprBuilder('parking', '700-01'); + + expect(expr).toEqual({'parking': '700-01'}); + }); + + it('should search by shelving', () => { + const expr = controller.exprBuilder('shelving', 'AAA'); + + expect(expr).toEqual({'shelving': 'AAA'}); + }); + + it('should search by label', () => { + const expr = controller.exprBuilder('label', 0.17); + + expect(expr).toEqual({'label': 0.17}); + }); + + it('should search by packing', () => { + const expr = controller.exprBuilder('packing', 10); + + expect(expr).toEqual({'packing': 10}); + }); + }); + }); +}); diff --git a/modules/item/front/item-shelving/locale/es.yml b/modules/item/front/item-shelving/locale/es.yml new file mode 100644 index 000000000..006363cfa --- /dev/null +++ b/modules/item/front/item-shelving/locale/es.yml @@ -0,0 +1,5 @@ +Shelving: Matrícula +Remove selected lines: Eliminar líneas seleccionadas +Selected lines will be deleted: Las líneas seleccionadas serán eliminadas +ItemShelvings removed: Carros eliminados +Total labels: Total etiquetas \ No newline at end of file diff --git a/modules/item/front/item-type/basic-data/index.html b/modules/item/front/item-type/basic-data/index.html new file mode 100644 index 000000000..1417a05ab --- /dev/null +++ b/modules/item/front/item-type/basic-data/index.html @@ -0,0 +1,62 @@ + + +
+ + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/modules/item/front/item-type/basic-data/index.js b/modules/item/front/item-type/basic-data/index.js new file mode 100644 index 000000000..ec280fdf8 --- /dev/null +++ b/modules/item/front/item-type/basic-data/index.js @@ -0,0 +1,12 @@ +import ngModule from '../../module'; +import Section from 'salix/components/section'; + +export default class Controller extends Section {} + +ngModule.component('vnItemTypeBasicData', { + template: require('./index.html'), + controller: Controller, + bindings: { + itemType: '<' + } +}); diff --git a/modules/item/front/item-type/card/index.html b/modules/item/front/item-type/card/index.html new file mode 100644 index 000000000..80af6088e --- /dev/null +++ b/modules/item/front/item-type/card/index.html @@ -0,0 +1,5 @@ + + + + + diff --git a/modules/item/front/item-type/card/index.js b/modules/item/front/item-type/card/index.js new file mode 100644 index 000000000..fa6b37340 --- /dev/null +++ b/modules/item/front/item-type/card/index.js @@ -0,0 +1,23 @@ +import ngModule from '../../module'; +import ModuleCard from 'salix/components/module-card'; + +class Controller extends ModuleCard { + reload() { + const filter = { + include: [ + {relation: 'worker'}, + {relation: 'category'}, + {relation: 'itemPackingType'}, + {relation: 'temperature'} + ] + }; + + this.$http.get(`ItemTypes/${this.$params.id}`, {filter}) + .then(res => this.itemType = res.data); + } +} + +ngModule.vnComponent('vnItemTypeCard', { + template: require('./index.html'), + controller: Controller +}); diff --git a/modules/item/front/item-type/card/index.spec.js b/modules/item/front/item-type/card/index.spec.js new file mode 100644 index 000000000..ab2314bb9 --- /dev/null +++ b/modules/item/front/item-type/card/index.spec.js @@ -0,0 +1,27 @@ +import './index'; + +describe('component vnItemTypeCard', () => { + let controller; + let $httpBackend; + + beforeEach(ngModule('item')); + + beforeEach(inject(($componentController, _$httpBackend_) => { + $httpBackend = _$httpBackend_; + controller = $componentController('vnItemTypeCard', {$element: null}); + })); + + describe('reload()', () => { + it('should reload the controller data', () => { + controller.$params.id = 1; + + const itemType = {id: 1}; + + $httpBackend.expectGET('ItemTypes/1').respond(itemType); + controller.reload(); + $httpBackend.flush(); + + expect(controller.itemType).toEqual(itemType); + }); + }); +}); diff --git a/modules/item/front/item-type/create/index.html b/modules/item/front/item-type/create/index.html new file mode 100644 index 000000000..44cb5183d --- /dev/null +++ b/modules/item/front/item-type/create/index.html @@ -0,0 +1,62 @@ + + +
+ + + + + + + + + + + + + + + + + + + + +
diff --git a/modules/item/front/item-type/create/index.js b/modules/item/front/item-type/create/index.js new file mode 100644 index 000000000..ccf7744be --- /dev/null +++ b/modules/item/front/item-type/create/index.js @@ -0,0 +1,15 @@ +import ngModule from '../../module'; +import Section from 'salix/components/section'; + +export default class Controller extends Section { + onSubmit() { + return this.$.watcher.submit().then(res => + this.$state.go('item.itemType.card.basicData', {id: res.data.id}) + ); + } +} + +ngModule.component('vnItemTypeCreate', { + template: require('./index.html'), + controller: Controller +}); diff --git a/modules/item/front/item-type/create/index.spec.js b/modules/item/front/item-type/create/index.spec.js new file mode 100644 index 000000000..4b000df9a --- /dev/null +++ b/modules/item/front/item-type/create/index.spec.js @@ -0,0 +1,34 @@ +import './index'; + +describe('component vnItemTypeCreate', () => { + let $scope; + let $state; + let controller; + + beforeEach(ngModule('item')); + + beforeEach(inject(($componentController, $rootScope, _$state_) => { + $scope = $rootScope.$new(); + $state = _$state_; + $scope.watcher = { + submit: () => { + return { + then: callback => { + callback({data: {id: '1234'}}); + } + }; + } + }; + const $element = angular.element(''); + controller = $componentController('vnItemTypeCreate', {$element, $scope}); + })); + + describe('onSubmit()', () => { + it(`should call submit() on the watcher then expect a callback`, () => { + jest.spyOn($state, 'go'); + controller.onSubmit(); + + expect(controller.$state.go).toHaveBeenCalledWith('item.itemType.card.basicData', {id: '1234'}); + }); + }); +}); diff --git a/modules/item/front/item-type/descriptor/index.html b/modules/item/front/item-type/descriptor/index.html new file mode 100644 index 000000000..5a0e8ed49 --- /dev/null +++ b/modules/item/front/item-type/descriptor/index.html @@ -0,0 +1,25 @@ + + +
+ + + + + + + + +
+
+
\ No newline at end of file diff --git a/modules/item/front/item-type/descriptor/index.js b/modules/item/front/item-type/descriptor/index.js new file mode 100644 index 000000000..9322c599a --- /dev/null +++ b/modules/item/front/item-type/descriptor/index.js @@ -0,0 +1,20 @@ +import ngModule from '../../module'; +import Descriptor from 'salix/components/descriptor'; + +class Controller extends Descriptor { + get itemType() { + return this.entity; + } + + set itemType(value) { + this.entity = value; + } +} + +ngModule.component('vnItemTypeDescriptor', { + template: require('./index.html'), + controller: Controller, + bindings: { + itemType: '<' + } +}); diff --git a/modules/item/front/item-type/index.js b/modules/item/front/item-type/index.js new file mode 100644 index 000000000..5dcbe4097 --- /dev/null +++ b/modules/item/front/item-type/index.js @@ -0,0 +1,8 @@ +import './main'; +import './index/'; +import './summary'; +import './card'; +import './descriptor'; +import './create'; +import './basic-data'; +import './search-panel'; diff --git a/modules/item/front/item-type/index/index.html b/modules/item/front/item-type/index/index.html new file mode 100644 index 000000000..50b9eb172 --- /dev/null +++ b/modules/item/front/item-type/index/index.html @@ -0,0 +1,43 @@ + + + + + +
+ + + + + + + + \ No newline at end of file diff --git a/modules/item/front/item-type/index/index.js b/modules/item/front/item-type/index/index.js new file mode 100644 index 000000000..54ecba997 --- /dev/null +++ b/modules/item/front/item-type/index/index.js @@ -0,0 +1,14 @@ +import ngModule from '../../module'; +import Section from 'salix/components/section'; + +export default class Controller extends Section { + preview(itemType) { + this.selectedItemType = itemType; + this.$.summary.show(); + } +} + +ngModule.component('vnItemTypeIndex', { + template: require('./index.html'), + controller: Controller +}); diff --git a/modules/item/front/item-type/index/index.spec.js b/modules/item/front/item-type/index/index.spec.js new file mode 100644 index 000000000..887c03f7f --- /dev/null +++ b/modules/item/front/item-type/index/index.spec.js @@ -0,0 +1,34 @@ +import './index'; + +describe('Item', () => { + describe('Component vnItemTypeIndex', () => { + let controller; + let $window; + + beforeEach(ngModule('item')); + + beforeEach(inject(($componentController, _$window_) => { + $window = _$window_; + const $element = angular.element(''); + controller = $componentController('vnItemTypeIndex', {$element}); + })); + + describe('preview()', () => { + it('should show the dialog summary', () => { + controller.$.summary = {show: () => {}}; + jest.spyOn(controller.$.summary, 'show'); + + const itemType = {id: 1}; + + const event = new MouseEvent('click', { + view: $window, + bubbles: true, + cancelable: true + }); + controller.preview(event, itemType); + + expect(controller.$.summary.show).toHaveBeenCalledWith(); + }); + }); + }); +}); diff --git a/modules/item/front/item-type/index/locale/es.yml b/modules/item/front/item-type/index/locale/es.yml new file mode 100644 index 000000000..1a71ff212 --- /dev/null +++ b/modules/item/front/item-type/index/locale/es.yml @@ -0,0 +1,2 @@ +Item Type: Familia +New itemType: Nueva familia \ No newline at end of file diff --git a/modules/item/front/item-type/main/index.html b/modules/item/front/item-type/main/index.html new file mode 100644 index 000000000..faba696c0 --- /dev/null +++ b/modules/item/front/item-type/main/index.html @@ -0,0 +1,18 @@ + + + + + + + + + \ No newline at end of file diff --git a/modules/item/front/item-type/main/index.js b/modules/item/front/item-type/main/index.js new file mode 100644 index 000000000..0dea00abb --- /dev/null +++ b/modules/item/front/item-type/main/index.js @@ -0,0 +1,24 @@ +import ngModule from '../../module'; +import ModuleMain from 'salix/components/module-main'; + +export default class ItemType extends ModuleMain { + exprBuilder(param, value) { + switch (param) { + case 'search': + return /^\d+$/.test(value) + ? {id: value} + : {or: [ + {name: {like: `%${value}%`}}, + {code: {like: `%${value}%`}} + ]}; + case 'name': + case 'code': + return {[param]: {like: `%${value}%`}}; + } + } +} + +ngModule.vnComponent('vnItemType', { + controller: ItemType, + template: require('./index.html') +}); diff --git a/modules/item/front/item-type/main/index.spec.js b/modules/item/front/item-type/main/index.spec.js new file mode 100644 index 000000000..dcb14ec0e --- /dev/null +++ b/modules/item/front/item-type/main/index.spec.js @@ -0,0 +1,31 @@ +import './index'; + +describe('Item', () => { + describe('Component vnItemType', () => { + let controller; + + beforeEach(ngModule('item')); + + beforeEach(inject($componentController => { + const $element = angular.element(''); + controller = $componentController('vnItemType', {$element}); + })); + + describe('exprBuilder()', () => { + it('should return a filter based on a search by id', () => { + const filter = controller.exprBuilder('search', '123'); + + expect(filter).toEqual({id: '123'}); + }); + + it('should return a filter based on a search by name or code', () => { + const filter = controller.exprBuilder('search', 'Alstroemeria'); + + expect(filter).toEqual({or: [ + {name: {like: '%Alstroemeria%'}}, + {code: {like: '%Alstroemeria%'}}, + ]}); + }); + }); + }); +}); diff --git a/modules/item/front/item-type/main/locale/es.yml b/modules/item/front/item-type/main/locale/es.yml new file mode 100644 index 000000000..7aceac46f --- /dev/null +++ b/modules/item/front/item-type/main/locale/es.yml @@ -0,0 +1 @@ +Search itemType by id, name or code: Buscar familia por id, nombre o código \ No newline at end of file diff --git a/modules/item/front/item-type/search-panel/index.html b/modules/item/front/item-type/search-panel/index.html new file mode 100644 index 000000000..4aa762900 --- /dev/null +++ b/modules/item/front/item-type/search-panel/index.html @@ -0,0 +1,22 @@ +
+
+ + + + + + + + + + + +
+
\ No newline at end of file diff --git a/modules/item/front/item-type/search-panel/index.js b/modules/item/front/item-type/search-panel/index.js new file mode 100644 index 000000000..17a439c39 --- /dev/null +++ b/modules/item/front/item-type/search-panel/index.js @@ -0,0 +1,7 @@ +import ngModule from '../../module'; +import SearchPanel from 'core/components/searchbar/search-panel'; + +ngModule.component('vnItemTypeSearchPanel', { + template: require('./index.html'), + controller: SearchPanel +}); diff --git a/modules/item/front/item-type/summary/index.html b/modules/item/front/item-type/summary/index.html new file mode 100644 index 000000000..d003c8f38 --- /dev/null +++ b/modules/item/front/item-type/summary/index.html @@ -0,0 +1,50 @@ + +
+ {{summary.id}} - {{summary.name}} - {{summary.worker.firstName}} {{summary.worker.lastName}} +
+ + +

Basic data

+ + + + + + + + + + + + + + + + + + + + +
+
+
\ No newline at end of file diff --git a/modules/item/front/item-type/summary/index.js b/modules/item/front/item-type/summary/index.js new file mode 100644 index 000000000..7645de8b1 --- /dev/null +++ b/modules/item/front/item-type/summary/index.js @@ -0,0 +1,33 @@ +import ngModule from '../../module'; +import Component from 'core/lib/component'; + +class Controller extends Component { + set itemType(value) { + this._itemType = value; + this.$.summary = null; + if (!value) return; + + const filter = { + include: [ + {relation: 'worker'}, + {relation: 'category'}, + {relation: 'itemPackingType'}, + {relation: 'temperature'} + ] + }; + this.$http.get(`ItemTypes/${value.id}`, {filter}) + .then(res => this.$.summary = res.data); + } + + get itemType() { + return this._itemType; + } +} + +ngModule.component('vnItemTypeSummary', { + template: require('./index.html'), + controller: Controller, + bindings: { + itemType: '<' + } +}); diff --git a/modules/item/front/item-type/summary/locale/es.yml b/modules/item/front/item-type/summary/locale/es.yml new file mode 100644 index 000000000..8f4cef70f --- /dev/null +++ b/modules/item/front/item-type/summary/locale/es.yml @@ -0,0 +1,4 @@ +Life: Vida +Promo: Promoción +Item packing type: Tipo de embalaje +Is unconventional size: Es de tamaño poco convencional \ No newline at end of file diff --git a/modules/item/front/last-entries/index.html b/modules/item/front/last-entries/index.html index 29047c613..0348d4f66 100644 --- a/modules/item/front/last-entries/index.html +++ b/modules/item/front/last-entries/index.html @@ -70,12 +70,12 @@ {{entry.stickers | dashIfEmpty}} - {{::entry.packing | dashIfEmpty}} + {{::entry.packing | dashIfEmpty}} - {{::entry.grouping | dashIfEmpty}} + {{::entry.grouping | dashIfEmpty}} {{::entry.stems | dashIfEmpty}} diff --git a/modules/item/front/locale/es.yml b/modules/item/front/locale/es.yml index 27348d41c..88ab031e1 100644 --- a/modules/item/front/locale/es.yml +++ b/modules/item/front/locale/es.yml @@ -40,8 +40,7 @@ Create: Crear Client card: Ficha del cliente Shipped: F. envío stems: Tallos -Compression: Compresión -Density: Densidad +Weight/Piece: Peso/tallo Search items by id, name or barcode: Buscar articulos por identificador, nombre o codigo de barras SalesPerson: Comercial Concept: Concepto @@ -55,6 +54,7 @@ Basic data: Datos básicos Tax: IVA History: Historial Botanical: Botánico +Shelvings: Carros Barcodes: Códigos de barras Diary: Histórico Item diary: Registro de compra-venta diff --git a/modules/item/front/routes.json b/modules/item/front/routes.json index 9e21e1697..3dea69ba1 100644 --- a/modules/item/front/routes.json +++ b/modules/item/front/routes.json @@ -9,17 +9,22 @@ {"state": "item.index", "icon": "icon-item"}, {"state": "item.request", "icon": "icon-buyrequest"}, {"state": "item.waste.index", "icon": "icon-claims"}, - {"state": "item.fixedPrice", "icon": "icon-fixedPrice"} + {"state": "item.fixedPrice", "icon": "icon-fixedPrice"}, + {"state": "item.itemType", "icon": "contact_support"} ], "card": [ {"state": "item.card.basicData", "icon": "settings"}, {"state": "item.card.tags", "icon": "icon-tags"}, + {"state": "item.card.last-entries", "icon": "icon-regentry"}, {"state": "item.card.tax", "icon": "icon-tax"}, - {"state": "item.card.botanical", "icon": "local_florist"}, + {"state": "item.card.botanical", "icon": "local_florist"}, + {"state": "item.card.shelving", "icon": "icon-inventory"}, {"state": "item.card.itemBarcode", "icon": "icon-barcode"}, {"state": "item.card.diary", "icon": "icon-transaction"}, - {"state": "item.card.last-entries", "icon": "icon-regentry"}, {"state": "item.card.log", "icon": "history"} + ], + "itemType": [ + {"state": "item.itemType.card.basicData", "icon": "settings"} ] }, "keybindings": [ @@ -88,6 +93,16 @@ }, "acl": ["buyer"] }, + { + "url" : "/shelving", + "state": "item.card.shelving", + "component": "vn-item-shelving", + "description": "Shelvings", + "params": { + "item": "$ctrl.item" + }, + "acl": ["employee"] + }, { "url" : "/barcode", "state": "item.card.itemBarcode", @@ -169,6 +184,47 @@ "component": "vn-fixed-price", "description": "Fixed prices", "acl": ["buyer"] + }, + { + "url" : "/item-type?q", + "state": "item.itemType", + "component": "vn-item-type", + "description": "Item Type", + "acl": ["buyer"] + }, + { + "url": "/create", + "state": "item.itemType.create", + "component": "vn-item-type-create", + "description": "New itemType", + "acl": ["buyer"] + }, + { + "url": "/:id", + "state": "item.itemType.card", + "component": "vn-item-type-card", + "abstract": true, + "description": "Detail" + }, + { + "url": "/summary", + "state": "item.itemType.card.summary", + "component": "vn-item-type-summary", + "description": "Summary", + "params": { + "item-type": "$ctrl.itemType" + }, + "acl": ["buyer"] + }, + { + "url": "/basic-data", + "state": "item.itemType.card.basicData", + "component": "vn-item-type-basic-data", + "description": "Basic data", + "params": { + "item-type": "$ctrl.itemType" + }, + "acl": ["buyer"] } ] } \ No newline at end of file diff --git a/modules/item/front/summary/index.html b/modules/item/front/summary/index.html index b5ea79efb..a4d40c829 100644 --- a/modules/item/front/summary/index.html +++ b/modules/item/front/summary/index.html @@ -91,11 +91,8 @@ - - - + @@ -120,6 +117,23 @@ value="{{tag.value}}"> + +

+ + Description + +

+

+ Description +

+

+ {{$ctrl.summary.item.description}} +

+

- -
- -
{{detail.buyer}}
-
- - - - Family - Percentage - Dwindle - Total - - - -
- {{::waste.family}} - {{::(waste.percentage / 100) | percentage: 2}} - {{::waste.dwindle | currency: 'EUR'}} - {{::waste.total | currency: 'EUR'}} - - - -
+ + + + Buyer + Family + Percentage + Dwindle + Total + + + + + + {{::detail.buyer}} + {{::detail.family}} + {{::(detail.percentage / 100) | percentage: 2}} + {{::detail.dwindle | currency: 'EUR'}} + {{::detail.total | currency: 'EUR'}} + + + + + + + + {{::waste.family}} + {{::(waste.percentage / 100) | percentage: 2}} + {{::waste.dwindle | currency: 'EUR'}} + {{::waste.total | currency: 'EUR'}} + + + + diff --git a/modules/item/front/waste/index/index.js b/modules/item/front/waste/index/index.js index 15e6b063f..b11f54b08 100644 --- a/modules/item/front/waste/index/index.js +++ b/modules/item/front/waste/index/index.js @@ -2,7 +2,34 @@ import ngModule from '../../module'; import Section from 'salix/components/section'; import './style.scss'; +export default class Controller extends Section { + constructor($element, $) { + super($element, $); + + this.getWasteConfig(); + } + + getWasteConfig() { + return this.wasteConfig = JSON.parse(localStorage.getItem('wasteConfig')) || {}; + } + + setWasteConfig() { + localStorage.setItem('wasteConfig', JSON.stringify(this.wasteConfig)); + } + + toggleHidePanel(detail) { + if (!this.wasteConfig[detail.buyer]) { + this.wasteConfig[detail.buyer] = { + hidden: true + }; + } else + this.wasteConfig[detail.buyer].hidden = !this.wasteConfig[detail.buyer].hidden; + + this.setWasteConfig(); + } +} + ngModule.vnComponent('vnItemWasteIndex', { template: require('./index.html'), - controller: Section + controller: Controller }); diff --git a/modules/item/front/waste/index/index.spec.js b/modules/item/front/waste/index/index.spec.js new file mode 100644 index 000000000..fd7332f68 --- /dev/null +++ b/modules/item/front/waste/index/index.spec.js @@ -0,0 +1,53 @@ +import './index.js'; +import crudModel from 'core/mocks/crud-model'; + +describe('Item', () => { + describe('Component vnItemWasteIndex', () => { + let $scope; + let controller; + + beforeEach(ngModule('item')); + + beforeEach(inject(($componentController, $rootScope) => { + $scope = $rootScope.$new(); + $scope.model = crudModel; + const $element = angular.element(''); + controller = $componentController('vnItemWasteIndex', {$element, $scope}); + })); + + describe('getWasteConfig / setWasteConfig', () => { + it('should return the local storage wasteConfig', () => { + const result = controller.getWasteConfig(); + + expect(result).toEqual({}); + }); + + it('should set and return the local storage wasteConfig', () => { + controller.wasteConfig = {salesPerson: {hidden: true}}; + controller.setWasteConfig(); + + const result = controller.getWasteConfig(); + + expect(result).toEqual(controller.wasteConfig); + }); + }); + + describe('toggleHidePanel()', () => { + it('should make details hidden by default', () => { + controller.wasteConfig = {}; + + controller.toggleHidePanel({buyer: 'salesPerson'}); + + expect(controller.wasteConfig.salesPerson.hidden).toEqual(true); + }); + + it('should toggle hidden false', () => { + controller.wasteConfig = {salesPerson: {hidden: true}}; + + controller.toggleHidePanel({buyer: 'salesPerson'}); + + expect(controller.wasteConfig.salesPerson.hidden).toEqual(false); + }); + }); + }); +}); diff --git a/modules/item/front/waste/index/style.scss b/modules/item/front/waste/index/style.scss index faac46139..36fac3311 100644 --- a/modules/item/front/waste/index/style.scss +++ b/modules/item/front/waste/index/style.scss @@ -1,21 +1,13 @@ @import "variables"; +@import "effects"; vn-item-waste-index, vn-item-waste-detail { .header { - margin-bottom: 16px; - text-transform: uppercase; - font-size: 1.25rem; - line-height: 1; - padding: 7px; - padding-bottom: 7px; - padding-bottom: 4px; - font-weight: lighter; + padding: 12px 0 5px 0; background-color: $color-bg; - border-bottom: 1px solid #f7931e; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + font-size: 1.2rem; + margin-bottom: 10px; } vn-table vn-th.waste-family, @@ -23,4 +15,13 @@ vn-item-waste-detail { max-width: 64px; width: 64px } -} \ No newline at end of file + + .hidden { + display: none; + } + + .arrow.hidden { + display: block; + transform: rotate(180deg); + } +} diff --git a/modules/item/front/waste/locale/es.yml b/modules/item/front/waste/locale/es.yml index 9f08e3a72..b9cd33dec 100644 --- a/modules/item/front/waste/locale/es.yml +++ b/modules/item/front/waste/locale/es.yml @@ -1,3 +1,4 @@ Family: Familia Percentage: Porcentaje -Dwindle: Mermas \ No newline at end of file +Dwindle: Mermas +Minimize/Maximize: Minimizar/Maximizar \ No newline at end of file diff --git a/modules/mdb/back/methods/mdbVersion/upload.js b/modules/mdb/back/methods/mdbVersion/upload.js new file mode 100644 index 000000000..57df35ce7 --- /dev/null +++ b/modules/mdb/back/methods/mdbVersion/upload.js @@ -0,0 +1,123 @@ +const fs = require('fs-extra'); +const path = require('path'); +const UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.remoteMethodCtx('upload', { + description: 'Upload and attach a access file', + accepts: [ + { + arg: 'appName', + type: 'string', + required: true, + description: 'The app name' + }, + { + arg: 'newVersion', + type: 'number', + required: true, + description: `The new version number` + }, + { + arg: 'branch', + type: 'string', + required: true, + description: `The branch name` + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/upload`, + verb: 'POST' + } + }); + + Self.upload = async(ctx, appName, newVersion, branch, options) => { + const models = Self.app.models; + const myOptions = {}; + + const TempContainer = models.TempContainer; + const AccessContainer = models.AccessContainer; + const fileOptions = {}; + + let tx; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + let srcFile; + try { + const tempContainer = await TempContainer.container('access'); + const uploaded = await TempContainer.upload(tempContainer.name, ctx.req, ctx.result, fileOptions); + const files = Object.values(uploaded.files).map(file => { + return file[0]; + }); + const uploadedFile = files[0]; + + const file = await TempContainer.getFile(tempContainer.name, uploadedFile.name); + srcFile = path.join(file.client.root, file.container, file.name); + + const accessContainer = await AccessContainer.container('.archive'); + const destinationFile = path.join( + accessContainer.client.root, accessContainer.name, appName, `${newVersion}.7z`); + + if (process.env.NODE_ENV == 'test') + await fs.unlink(srcFile); + else { + await fs.move(srcFile, destinationFile, { + overwrite: true + }); + await fs.chmod(destinationFile, 0o644); + + const existBranch = await models.MdbBranch.findOne({ + where: {name: branch} + }); + + if (!existBranch) + throw new UserError('Not exist this branch'); + + const branchPath = path.join(accessContainer.client.root, 'branches', branch); + await fs.mkdir(branchPath, {recursive: true}); + + const destinationBranch = path.join(branchPath, `${appName}.7z`); + const destinationRelative = `../../.archive/${appName}/${newVersion}.7z`; + try { + await fs.unlink(destinationBranch); + } catch (e) {} + await fs.symlink(destinationRelative, destinationBranch); + + if (branch == 'master') { + const destinationRoot = path.join(accessContainer.client.root, `${appName}.7z`); + const rootRelative = `./.archive/${appName}/${newVersion}.7z`; + try { + await fs.unlink(destinationRoot); + } catch (e) {} + await fs.symlink(rootRelative, destinationRoot); + } + } + + await models.MdbVersion.upsert({ + app: appName, + branchFk: branch, + version: newVersion + }); + + if (tx) await tx.commit(); + } catch (e) { + if (tx) await tx.rollback(); + + if (fs.existsSync(srcFile)) + await fs.unlink(srcFile); + + throw e; + } + }; +}; diff --git a/modules/mdb/back/model-config.json b/modules/mdb/back/model-config.json new file mode 100644 index 000000000..d5be8de87 --- /dev/null +++ b/modules/mdb/back/model-config.json @@ -0,0 +1,11 @@ +{ + "MdbBranch": { + "dataSource": "vn" + }, + "MdbVersion": { + "dataSource": "vn" + }, + "AccessContainer": { + "dataSource": "accessStorage" + } +} diff --git a/modules/mdb/back/models/mdb-container.json b/modules/mdb/back/models/mdb-container.json new file mode 100644 index 000000000..a927b30f1 --- /dev/null +++ b/modules/mdb/back/models/mdb-container.json @@ -0,0 +1,10 @@ +{ + "name": "AccessContainer", + "base": "Container", + "acls": [{ + "accessType": "*", + "principalType": "ROLE", + "principalId": "developer", + "permission": "ALLOW" + }] +} \ No newline at end of file diff --git a/modules/mdb/back/models/mdbBranch.json b/modules/mdb/back/models/mdbBranch.json new file mode 100644 index 000000000..486dfaf25 --- /dev/null +++ b/modules/mdb/back/models/mdbBranch.json @@ -0,0 +1,16 @@ +{ + "name": "MdbBranch", + "base": "VnModel", + "options": { + "mysql": { + "table": "mdbBranch" + } + }, + "properties": { + "name": { + "id": true, + "type": "string", + "description": "Identifier" + } + } +} \ No newline at end of file diff --git a/modules/mdb/back/models/mdbVersion.js b/modules/mdb/back/models/mdbVersion.js new file mode 100644 index 000000000..b36ee2a60 --- /dev/null +++ b/modules/mdb/back/models/mdbVersion.js @@ -0,0 +1,3 @@ +module.exports = Self => { + require('../methods/mdbVersion/upload')(Self); +}; diff --git a/modules/mdb/back/models/mdbVersion.json b/modules/mdb/back/models/mdbVersion.json new file mode 100644 index 000000000..02635ff8a --- /dev/null +++ b/modules/mdb/back/models/mdbVersion.json @@ -0,0 +1,26 @@ +{ + "name": "MdbVersion", + "base": "VnModel", + "options": { + "mysql": { + "table": "mdbVersion" + } + }, + "properties": { + "app": { + "type": "string", + "description": "The app name", + "id": true + }, + "version": { + "type": "number" + } + }, + "relations": { + "branch": { + "type": "belongsTo", + "model": "MdbBranch", + "foreignKey": "branchFk" + } + } +} \ No newline at end of file diff --git a/modules/monitor/back/methods/sales-monitor/clientsFilter.js b/modules/monitor/back/methods/sales-monitor/clientsFilter.js index 8235d5092..3756a706b 100644 --- a/modules/monitor/back/methods/sales-monitor/clientsFilter.js +++ b/modules/monitor/back/methods/sales-monitor/clientsFilter.js @@ -34,30 +34,34 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); + const date = new Date(); + date.setHours(0, 0, 0, 0); const stmt = new ParameterizedSQL(` SELECT u.name AS salesPerson, IFNULL(sc.workerSubstitute, c.salesPersonFk) AS salesPersonFk, c.id AS clientFk, c.name AS clientName, - s.lastUpdate AS dated, + TIME(v.stamp) AS hour, + DATE(v.stamp) AS dated, wtc.workerFk - FROM hedera.userSession s - JOIN hedera.visitUser v ON v.id = s.userVisitFk + FROM hedera.visitUser v JOIN client c ON c.id = v.userFk - LEFT JOIN account.user u ON c.salesPersonFk = u.id - LEFT JOIN worker w ON c.salesPersonFk = w.id + JOIN account.user u ON c.salesPersonFk = u.id LEFT JOIN sharingCart sc ON sc.workerFk = c.salesPersonFk - AND CURDATE() BETWEEN sc.started AND sc.ended + AND ? BETWEEN sc.started AND sc.ended LEFT JOIN workerTeamCollegues wtc - ON wtc.collegueFk = IFNULL(sc.workerSubstitute, c.salesPersonFk)`); + ON wtc.collegueFk = IFNULL(sc.workerSubstitute, c.salesPersonFk)`, + [date]); if (!filter.where) filter.where = {}; const where = filter.where; where['wtc.workerFk'] = userId; - stmt.merge(conn.makeSuffix(filter)); + stmt.merge(conn.makeWhere(filter.where)); + stmt.merge(`GROUP BY clientFk, v.stamp`); + stmt.merge(conn.makePagination(filter)); return conn.executeStmt(stmt, myOptions); }; diff --git a/modules/monitor/back/methods/sales-monitor/salesFilter.js b/modules/monitor/back/methods/sales-monitor/salesFilter.js index d67c5c3fc..7be130dda 100644 --- a/modules/monitor/back/methods/sales-monitor/salesFilter.js +++ b/modules/monitor/back/methods/sales-monitor/salesFilter.js @@ -104,6 +104,8 @@ module.exports = Self => { const userId = ctx.req.accessToken.userId; const conn = Self.dataSource.connector; const models = Self.app.models; + const date = new Date(); + date.setHours(0, 0, 0, 0); const args = ctx.args; const myOptions = {}; @@ -162,6 +164,10 @@ module.exports = Self => { let stmt; stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.filter'); + + stmts.push(`SET @_optimizer_search_depth = @@optimizer_search_depth`); + stmts.push(`SET SESSION optimizer_search_depth = 0`); + stmt = new ParameterizedSQL( `CREATE TEMPORARY TABLE tmp.filter (PRIMARY KEY (id)) @@ -222,10 +228,12 @@ module.exports = Self => { stmt.merge(conn.makeWhere(filter.where)); stmts.push(stmt); + stmts.push(`SET SESSION optimizer_search_depth = @_optimizer_search_depth`); + // Get client debt balance stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt'); stmts.push(` - CREATE TEMPORARY TABLE tmp.clientGetDebt + CREATE TEMPORARY TABLE tmp.clientGetDebt (PRIMARY KEY (clientFk)) ENGINE = MEMORY SELECT DISTINCT clientFk FROM tmp.filter`); @@ -236,7 +244,7 @@ module.exports = Self => { stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.tickets'); stmt = new ParameterizedSQL(` - CREATE TEMPORARY TABLE tmp.tickets + CREATE TEMPORARY TABLE tmp.tickets (PRIMARY KEY (id)) ENGINE = MEMORY SELECT f.*, r.risk AS debt @@ -264,15 +272,18 @@ module.exports = Self => { `); stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.sale_getProblems'); - stmts.push(` - CREATE TEMPORARY TABLE tmp.sale_getProblems - (INDEX (ticketFk)) - ENGINE = MEMORY - SELECT f.id ticketFk, f.clientFk, f.warehouseFk, f.shipped - FROM tmp.filter f - LEFT JOIN alertLevel al ON al.id = f.alertLevel - WHERE (al.code = 'FREE' OR f.alertLevel IS NULL) - AND f.shipped >= CURDATE()`); + + stmt = new ParameterizedSQL(` + CREATE TEMPORARY TABLE tmp.sale_getProblems + (INDEX (ticketFk)) + ENGINE = MEMORY + SELECT f.id ticketFk, f.clientFk, f.warehouseFk, f.shipped + FROM tmp.filter f + LEFT JOIN alertLevel al ON al.id = f.alertLevel + WHERE (al.code = 'FREE' OR f.alertLevel IS NULL) + AND f.shipped >= ?`, [date]); + stmts.push(stmt); + stmts.push('CALL ticket_getProblems(FALSE)'); stmts.push(` @@ -304,7 +315,8 @@ module.exports = Self => { {'tp.hasTicketRequest': true}, {'tp.hasComponentLack': true}, {'tp.isTaxDataChecked': false}, - {'tp.isAvailable': false} + {'tp.itemShortage': {neq: null}}, + {'tp.isTooLittle': true} ]}; } else if (hasProblems === false) { whereProblems = {and: [ @@ -313,7 +325,8 @@ module.exports = Self => { {'tp.hasTicketRequest': false}, {'tp.hasComponentLack': false}, {'tp.isTaxDataChecked': true}, - {'tp.isAvailable': true} + {'tp.itemShortage': null}, + {'tp.isTooLittle': false} ]}; } @@ -370,7 +383,7 @@ module.exports = Self => { const ticketsIndex = stmts.push(stmt) - 1; stmts.push( - `DROP TEMPORARY TABLE + `DROP TEMPORARY TABLE tmp.filter, tmp.ticket_problems, tmp.sale_getProblems, diff --git a/modules/monitor/back/methods/sales-monitor/specs/clientsFilter.spec.js b/modules/monitor/back/methods/sales-monitor/specs/clientsFilter.spec.js index 3fcc6c91a..bcb37830c 100644 --- a/modules/monitor/back/methods/sales-monitor/specs/clientsFilter.spec.js +++ b/modules/monitor/back/methods/sales-monitor/specs/clientsFilter.spec.js @@ -6,12 +6,49 @@ describe('SalesMonitor clientsFilter()', () => { try { const options = {transaction: tx}; - const ctx = {req: {accessToken: {userId: 18}}, args: {}}; - const filter = {order: 'dated DESC'}; + + const from = new Date(); + const to = new Date(); + from.setHours(0, 0, 0, 0); + to.setHours(23, 59, 59, 59); + + const filter = { + where: { + 'v.stamp': {between: [from, to]} + } + }; const result = await models.SalesMonitor.clientsFilter(ctx, filter, options); - expect(result.length).toEqual(9); + expect(result.length).toEqual(3); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return the clients web activity filtered', async() => { + const tx = await models.SalesMonitor.beginTransaction({}); + + try { + const options = {transaction: tx}; + const ctx = {req: {accessToken: {userId: 18}}, args: {}}; + const yesterday = new Date(); + yesterday.setDate(yesterday.getDate() - 1); + const today = new Date(); + yesterday.setHours(0, 0, 0, 0); + today.setHours(23, 59, 59, 59); + + const filter = { + where: { + 'v.stamp': {between: [yesterday, today]} + } + }; + const result = await models.SalesMonitor.clientsFilter(ctx, filter, options); + + expect(result.length).toEqual(5); await tx.rollback(); } catch (e) { diff --git a/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js b/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js index 1ace5f6ef..0682cef09 100644 --- a/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js +++ b/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js @@ -147,16 +147,12 @@ describe('SalesMonitor salesFilter()', () => { const options = {transaction: tx}; const ctx = {req: {accessToken: {userId: 9}}, args: {pending: false}}; - const filter = {}; + const filter = {order: 'alertLevel ASC'}; const result = await models.SalesMonitor.salesFilter(ctx, filter, options); const firstRow = result[0]; - const secondRow = result[1]; - const thirdRow = result[2]; expect(result.length).toEqual(12); - expect(firstRow.state).toEqual('Entregado'); - expect(secondRow.state).toEqual('Entregado'); - expect(thirdRow.state).toEqual('Entregado'); + expect(firstRow.alertLevel).not.toEqual(0); await tx.rollback(); } catch (e) { @@ -222,8 +218,8 @@ describe('SalesMonitor salesFilter()', () => { const firstTicket = result.shift(); const secondTicket = result.shift(); - expect(firstTicket.totalProblems).toEqual(3); - expect(secondTicket.totalProblems).toEqual(2); + expect(firstTicket.totalProblems).toEqual(1); + expect(secondTicket.totalProblems).toEqual(1); await tx.rollback(); } catch (e) { diff --git a/modules/monitor/front/index/clients/index.html b/modules/monitor/front/index/clients/index.html index 9786404fd..381c0e1ae 100644 --- a/modules/monitor/front/index/clients/index.html +++ b/modules/monitor/front/index/clients/index.html @@ -2,7 +2,8 @@ vn-id="model" url="SalesMonitors/clientsFilter" limit="6" - order="dated DESC" + filter="$ctrl.filter" + order="dated DESC, hour DESC" auto-load="true"> @@ -15,87 +16,95 @@ vn-tooltip="Minimize/Maximize" ng-click="$ctrl.main.toggle()"> - - - - - - Hour - Salesperson - Client - - - - - - - {{::visit.dated | date: 'HH:mm'}} - - - - - {{::visit.salesPerson | dashIfEmpty}} - - - - - {{::visit.clientName}} - - - - - - - + options="$ctrl.smartTableOptions" + expr-builder="$ctrl.exprBuilder(param, value)" + disabled-table-filter="true" + disabled-table-order="true" + class="scrollable sm"> + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Date + + Hour + + Salesperson + + Client +
+ + {{::visit.dated | date:'dd/MM/yy'}} + + + + {{::visit.hour | date: 'HH:mm'}} + + + + {{::visit.salesPerson | dashIfEmpty}} + + + + {{::visit.clientName}} + +
+
+ + + + +
- - - - - Filter by selection - - - Exclude selection - - - Remove filter - - - Remove all filters - - - Copy value - - - \ No newline at end of file diff --git a/modules/monitor/front/index/clients/index.js b/modules/monitor/front/index/clients/index.js index 3a69c597b..58613f09d 100644 --- a/modules/monitor/front/index/clients/index.js +++ b/modules/monitor/front/index/clients/index.js @@ -2,26 +2,89 @@ import ngModule from '../../module'; import Section from 'salix/components/section'; export default class Controller extends Section { + constructor($element, $) { + super($element, $); + + const date = new Date(); + this.dateFrom = date; + this.dateTo = date; + this.filter = { + where: { + 'v.stamp': { + between: this.dateRange() + } + } + }; + + this.smartTableOptions = { + activeButtons: { + search: true + }, + columns: [ + { + field: 'clientFk', + autocomplete: { + url: 'Clients', + showField: 'name', + valueField: 'id' + } + }, + { + field: 'salesPersonFk', + autocomplete: { + url: 'Workers/activeWithInheritedRole', + where: `{role: 'salesPerson'}`, + searchFunction: '{firstName: $search}', + showField: 'nickname', + valueField: 'id', + } + }, + { + field: 'dated', + searchable: false + }, + { + field: 'hour', + searchable: false + } + ] + }; + } + exprBuilder(param, value) { switch (param) { - case 'dated': - return {'s.lastUpdate': { - between: this.dateRange(value)} - }; case 'clientFk': + return {[`c.id`]: value}; case 'salesPersonFk': return {[`c.${param}`]: value}; } } - dateRange(value) { - const minHour = new Date(value); + dateRange() { + let from = this.dateFrom; + let to = this.dateTo; + if (!from) + from = new Date(); + if (!to) + to = new Date(); + const minHour = new Date(from); minHour.setHours(0, 0, 0, 0); - const maxHour = new Date(value); + const maxHour = new Date(to); maxHour.setHours(23, 59, 59, 59); return [minHour, maxHour]; } + + addFilterDate() { + this.$.model.filter = { + where: { + 'v.stamp': { + between: this.dateRange() + } + } + }; + this.$.model.refresh(); + } } ngModule.vnComponent('vnMonitorSalesClients', { diff --git a/modules/monitor/front/index/tickets/index.html b/modules/monitor/front/index/tickets/index.html index 76b9219ee..138788ed6 100644 --- a/modules/monitor/front/index/tickets/index.html +++ b/modules/monitor/front/index/tickets/index.html @@ -50,7 +50,7 @@ Salesperson - + Date @@ -98,8 +98,8 @@ icon="icon-buyrequest"> @@ -153,8 +153,8 @@ - - {{::ticket.shipped | date: 'dd/MM/yyyy'}} + + {{::ticket.shippedDate | date: 'dd/MM/yyyy'}} {{::ticket.zoneLanding | date: 'HH:mm'}} @@ -210,6 +210,9 @@ + + diff --git a/modules/monitor/front/index/tickets/index.js b/modules/monitor/front/index/tickets/index.js index 58b56bbc5..91d9079d8 100644 --- a/modules/monitor/front/index/tickets/index.js +++ b/modules/monitor/front/index/tickets/index.js @@ -52,8 +52,8 @@ export default class Controller extends Section { } }, { - field: 'shipped', - searchable: false + field: 'shippedDate', + datepicker: true }, { field: 'theoreticalHour', @@ -136,7 +136,7 @@ export default class Controller extends Section { return {'z.hour': value}; case 'practicalHour': return {'zed.etc': value}; - case 'shipped': + case 'shippedDate': return {'t.shipped': { between: this.dateRange(value)} }; diff --git a/modules/order/back/methods/order/filter.js b/modules/order/back/methods/order/filter.js index 27cacdd62..008c0e5c9 100644 --- a/modules/order/back/methods/order/filter.js +++ b/modules/order/back/methods/order/filter.js @@ -18,7 +18,7 @@ module.exports = Self => { }, { arg: 'search', type: 'string', - description: `If it's and integer searchs by id, otherwise it searchs by nickname` + description: `The general search by ticket id or nickname` }, { arg: 'from', type: 'date', @@ -36,9 +36,9 @@ module.exports = Self => { type: 'integer', description: 'The client id' }, { - arg: 'ticketFk', + arg: 'orderFk', type: 'integer', - description: 'The ticket id' + description: 'The order id' }, { arg: 'agencyModeFk', type: 'integer', @@ -103,7 +103,7 @@ module.exports = Self => { switch (param) { case 'search': return /^\d+$/.test(value) - ? {'o.id': value} + ? {'t.id': value} : {or: [ {'c.name': {like: `%${value}%`}} ]}; @@ -119,8 +119,8 @@ module.exports = Self => { return {'o.agency_id': value}; case 'sourceApp': return {'o.source_app': value}; - case 'ticketFk': - return {'ot.ticketFk': value}; + case 'orderFk': + return {'o.id': value}; case 'isConfirmed': return {'o.confirmed': value ? 1 : 0}; case 'myTeam': @@ -131,7 +131,7 @@ module.exports = Self => { case 'showEmpty': return {'o.total': {neq: value}}; case 'id': - param = `o.${param}`; + param = `t.${param}`; return {[param]: value}; } }); diff --git a/modules/order/back/methods/order/specs/filter.spec.js b/modules/order/back/methods/order/specs/filter.spec.js index 53b666c10..68de7fe04 100644 --- a/modules/order/back/methods/order/specs/filter.spec.js +++ b/modules/order/back/methods/order/specs/filter.spec.js @@ -53,11 +53,11 @@ describe('order filter()', () => { try { const options = {transaction: tx}; - const filter = {where: {'o.confirmed': false, 'c.salesPersonFk': 18}}; + const filter = {where: {'o.confirmed': false, 'c.salesPersonFk': 9}}; const result = await models.Order.filter(myCtx, filter, options); - expect(result.length).toEqual(9); - expect(result[0].id).toEqual(7); + expect(result.length).toEqual(4); + expect(result[0].id).toEqual(19); await tx.rollback(); } catch (e) { diff --git a/modules/order/back/models/order-row.json b/modules/order/back/models/order-row.json index 44d5a103a..4b78bfdad 100644 --- a/modules/order/back/models/order-row.json +++ b/modules/order/back/models/order-row.json @@ -8,12 +8,12 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "warehouseFk": { - "type": "Number" + "type": "number" }, "shipped": { "type": "date", @@ -22,22 +22,22 @@ } }, "quantity": { - "type": "Number", + "type": "number", "mysql": { "columnName": "amount" } }, "price": { - "type": "Number" + "type": "number" }, "rate": { - "type": "Number" + "type": "number" }, "created": { "type": "date" }, "saleFk": { - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/order/back/models/order-ticket.json b/modules/order/back/models/order-ticket.json index 2875ebdfc..9fe144b47 100644 --- a/modules/order/back/models/order-ticket.json +++ b/modules/order/back/models/order-ticket.json @@ -9,11 +9,11 @@ "properties": { "orderFk": { "id": true, - "type": "Number" + "type": "number" }, "ticketFk": { "id": true, - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/order/back/models/order.json b/modules/order/back/models/order.json index 38755c2a5..169c0c550 100644 --- a/modules/order/back/models/order.json +++ b/modules/order/back/models/order.json @@ -8,80 +8,80 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "landed": { - "type": "Date", + "type": "date", "required": true, "mysql": { "columnName": "date_send" } }, "clientFk": { - "type": "Number", + "type": "number", "required": true, "mysql": { "columnName": "customer_id" } }, "addressFk": { - "type": "Number", + "type": "number", "required": true, "mysql": { "columnName": "address_id" } }, "agencyModeFk": { - "type": "Number", + "type": "number", "required": true, "mysql": { "columnName": "agency_id" } }, "companyFk": { - "type": "Number", + "type": "number", "required": true, "mysql": { "columnName": "company_id" } }, "note": { - "type": "String" + "type": "string" }, "sourceApp": { - "type": "String", + "type": "string", "mysql": { "columnName": "source_app" } }, "isConfirmed": { - "type": "Number", + "type": "number", "mysql": { "columnName": "confirmed" } }, "created": { - "type": "Date", + "type": "date", "mysql": { "columnName": "date_make" } }, "firstRowStamp": { - "type": "Date", + "type": "date", "mysql": { "columnName": "first_row_stamp" } }, "confirmed": { - "type": "Date", + "type": "date", "mysql": { "columnName": "confirm_date" } }, "total": { - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/order/front/descriptor/index.html b/modules/order/front/descriptor/index.html index a96da252b..538789027 100644 --- a/modules/order/front/descriptor/index.html +++ b/modules/order/front/descriptor/index.html @@ -1,6 +1,7 @@ + description="$ctrl.order.client.name" + summary="$ctrl.$.summary"> - \ No newline at end of file + + + + \ No newline at end of file diff --git a/modules/order/front/index/index.html b/modules/order/front/index/index.html index a2a4a5226..c4bed7307 100644 --- a/modules/order/front/index/index.html +++ b/modules/order/front/index/index.html @@ -33,7 +33,7 @@ {{::order.name | dashIfEmpty}} - + @@ -46,7 +46,7 @@ disabled="true"> - {{::order.created | date: 'dd/MM/yyyy HH:mm'}} + {{::order.created | date: 'dd/MM/yyyy HH:mm'}} {{::order.landed | date:'dd/MM/yyyy'}} diff --git a/modules/order/front/main/index.html b/modules/order/front/main/index.html index f3b72adb2..1f6c7434c 100644 --- a/modules/order/front/main/index.html +++ b/modules/order/front/main/index.html @@ -9,7 +9,7 @@ diff --git a/modules/order/front/search-panel/index.html b/modules/order/front/search-panel/index.html index c622dd152..a3ed9e5a5 100644 --- a/modules/order/front/search-panel/index.html +++ b/modules/order/front/search-panel/index.html @@ -5,7 +5,7 @@ vn-one label="General search" ng-model="filter.search" - info="Search orders by id" + info="Search orders by ticket id" vn-focus> @@ -51,8 +51,8 @@ + label="Order id" + ng-model="filter.orderFk"> Basket #{{$ctrl.summary.id}} - {{$ctrl.summary.client.name}} - ({{$ctrl.summary.client.salesPersonFk}}) + ({{$ctrl.summary.client.id}}) { + Self.remoteMethod('createInvoiceIn', { + description: 'Creates an invoiceIn from one or more agency terms', + accessType: 'WRITE', + accepts: [{ + arg: 'rows', + type: ['object'], + required: true, + description: `The rows from which the invoiceIn will be created`, + }, + { + arg: 'dms', + type: ['object'], + required: true, + description: 'The dms file attached' + }], + returns: { + type: 'object', + root: true + }, + http: { + path: `/createInvoiceIn`, + verb: 'POST' + } + }); + + Self.createInvoiceIn = async(rows, dms, options) => { + const models = Self.app.models; + + let tx; + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + const [firstRow] = rows; + const [firstDms] = dms; + + const reference = await models.Dms.findById([firstDms.id], null, myOptions); + + const newInvoiceIn = await models.InvoiceIn.create({ + supplierFk: firstRow.supplierFk, + supplierRef: reference.reference, + issued: firstRow.created, + booked: firstRow.created, + operated: firstRow.created, + bookEntried: firstRow.created, + dmsFk: firstDms.id, + }, myOptions); + + const expence = await models.AgencyTermConfig.findOne(null, myOptions); + + const [taxTypeSage] = await Self.rawSql(` + SELECT IFNULL(s.taxTypeSageFk, CodigoIva) value + FROM vn.supplier s + JOIN sage.TiposIva ti ON TRUE + JOIN vn.agencyTermConfig atg + WHERE s.id = ? + AND ti.CuentaIvaSoportado = atg.vatAccountSupported + AND ti.PorcentajeIva = atg.vatPercentage + `, [firstRow.supplierFk], myOptions); + + const [transactionTypeSage] = await Self.rawSql(` + SELECT IFNULL(s.transactionTypeSageFk, tt.CodigoTransaccion) value + FROM vn.supplier s + JOIN sage.TiposTransacciones tt ON TRUE + JOIN vn.agencyTermConfig atg + WHERE s.id = ? + AND tt.Transaccion = atg.transaction + `, [firstRow.supplierFk], myOptions); + + await models.InvoiceInTax.create({ + invoiceInFk: newInvoiceIn.id, + taxableBase: firstRow.totalPrice, + expenseFk: expence.expenceFk, + taxTypeSageFk: taxTypeSage.value, + transactionTypeSageFk: transactionTypeSage.value + }, myOptions); + + await Self.rawSql(`CALL invoiceInDueDay_calculate(?)`, [newInvoiceIn.id], myOptions); + + for (let agencyTerm of rows) { + const route = await models.Route.findById(agencyTerm.routeFk, null, myOptions); + await Self.rawSql(` + UPDATE vn.route SET invoiceInFk = ? WHERE id = ? + `, [newInvoiceIn.id, route.id], myOptions); + } + + if (tx) await tx.commit(); + + return newInvoiceIn; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/route/back/methods/agency-term/filter.js b/modules/route/back/methods/agency-term/filter.js new file mode 100644 index 000000000..0ecec7e88 --- /dev/null +++ b/modules/route/back/methods/agency-term/filter.js @@ -0,0 +1,125 @@ +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; +const buildFilter = require('vn-loopback/util/filter').buildFilter; +const mergeFilters = require('vn-loopback/util/filter').mergeFilters; + +module.exports = Self => { + Self.remoteMethodCtx('filter', { + description: 'Find all instances of the model matched by filter from the data source.', + accessType: 'READ', + accepts: [ + { + arg: 'filter', + type: 'object', + description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string', + }, + { + arg: 'search', + type: 'string', + description: `If it's and integer searchs by invoiceInFk, otherwise it searchs by the supplierName`, + }, + { + arg: 'agencyModeFk', + type: 'integer', + description: 'The agency agencyModeFk id', + }, + { + arg: 'agencyFk', + type: 'integer', + description: 'The agencyFk id', + }, + { + arg: 'from', + type: 'date', + description: 'The from date filter', + }, + { + arg: 'to', + type: 'date', + description: 'The to date filter', + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/filter`, + verb: 'GET' + } + }); + + Self.filter = async(ctx, filter, options) => { + const conn = Self.dataSource.connector; + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const where = buildFilter(ctx.args, (param, value) => { + switch (param) { + case 'search': + return /^\d+$/.test(value) + ? {'invoiceInFk': {inq: value}} + : {'supplierName': {like: `%${value}%`}}; + case 'agencyModeFk': + return {'agencyModeFk': value}; + case 'agencyFk': + return {'agencyFk': value}; + case 'from': + return {'created': {gte: value}}; + case 'to': + return {'created': {lte: value}}; + } + }); + + filter = mergeFilters(filter, {where}); + + const date = new Date(); + date.setHours(0, 0, 0, 0); + const stmts = []; + const stmt = new ParameterizedSQL( + `SELECT * + FROM ( + SELECT r.id routeFk, + r.created, + r.agencyModeFk, + am.name agencyModeName, + am.agencyFk, + a.name agencyAgreement, + SUM(t.packages) packages, + r.m3, + r.kmEnd - r.kmStart kmTotal, + CAST(IFNULL(sat.routePrice, + (sat.kmPrice * (GREATEST(r.kmEnd - r.kmStart , sat.minimumKm)) + + GREATEST(r.m3 , sat.minimumM3) * sat.m3Price) + + sat.packagePrice * SUM(t.packages) ) + AS DECIMAL(10,2)) price, + r.invoiceInFk, + sat.supplierFk, + s.name supplierName + FROM vn.route r + LEFT JOIN vn.agencyMode am ON r.agencyModeFk = am.id + LEFT JOIN vn.agency a ON am.agencyFk = a.id + LEFT JOIN vn.ticket t ON t.routeFk = r.id + LEFT JOIN vn.supplierAgencyTerm sat ON sat.agencyFk = a.id + LEFT JOIN vn.supplier s ON s.id = sat.supplierFk + WHERE r.created > DATE_ADD(?, INTERVAL -2 MONTH) AND sat.supplierFk IS NOT NULL + GROUP BY r.id + ) a` + , [date]); + + stmt.merge(conn.makeWhere(filter.where)); + stmt.merge(conn.makePagination(filter)); + + const agencyTerm = stmts.push(stmt) - 1; + const sql = ParameterizedSQL.join(stmts, ';'); + const result = await conn.executeStmt(sql, myOptions); + + const models = Self.app.models; + for (let agencyTerm of result) + agencyTerm.route = await models.Route.findById(agencyTerm.routeFk); + + return agencyTerm === 0 ? result : result[agencyTerm]; + }; +}; + diff --git a/modules/route/back/methods/agency-term/specs/createInvoiceIn.spec.js b/modules/route/back/methods/agency-term/specs/createInvoiceIn.spec.js new file mode 100644 index 000000000..ad4613caf --- /dev/null +++ b/modules/route/back/methods/agency-term/specs/createInvoiceIn.spec.js @@ -0,0 +1,52 @@ +const models = require('vn-loopback/server/server').models; + +describe('AgencyTerm createInvoiceIn()', () => { + const rows = [ + { + routeFk: 2, + supplierFk: 1, + created: '2022-03-02T23:00:00.000Z', + totalPrice: 165 + } + ]; + const dms = [ + { + id: 6 + } + ]; + + it('should make an invoiceIn', async() => { + pending('Include after #3638 export database'); + const tx = await models.AgencyTerm.beginTransaction({}); + const options = {transaction: tx}; + + try { + const invoiceInId = 10; + const invoiceInDueDayId = 11; + const invoiceInTaxId = 12; + + const oldInvoiceIn = await models.InvoiceIn.findById(invoiceInId, null, options); + const oldInvoiceInDueDay = await models.InvoiceInDueDay.findById(invoiceInDueDayId, null, options); + const oldInvoiceInTax = await models.InvoiceInTax.findById(invoiceInTaxId, null, options); + + await models.AgencyTerm.createInvoiceIn(rows, dms, options); + + const [newInvoiceIn] = await models.InvoiceIn.rawSql('SELECT MAX(id) id FROM invoiceIn', null, options); + + const dueDayQuery = 'SELECT MAX(id) id FROM invoiceInDueDay'; + const [newInvoiceInDueDay] = await models.InvoiceInDueDay.rawSql(dueDayQuery, null, options); + + const taxQuery = 'SELECT MAX(id) id FROM invoiceInTax'; + const [newInvoiceInTax] = await models.InvoiceInTax.rawSql(taxQuery, null, options); + + expect(newInvoiceIn.id).toBeGreaterThan(oldInvoiceIn.id); + expect(newInvoiceInDueDay.id).toBeGreaterThan(oldInvoiceInDueDay.id); + expect(newInvoiceInTax.id).toBeGreaterThan(oldInvoiceInTax.id); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/route/back/methods/agency-term/specs/filter.spec.js b/modules/route/back/methods/agency-term/specs/filter.spec.js new file mode 100644 index 000000000..d6c00e585 --- /dev/null +++ b/modules/route/back/methods/agency-term/specs/filter.spec.js @@ -0,0 +1,109 @@ +const app = require('vn-loopback/server/server'); +const models = require('vn-loopback/server/server').models; + +describe('AgencyTerm filter()', () => { + const authUserId = 9; + const today = new Date(); + today.setHours(2, 0, 0, 0); + + it('should return all results matching the filter', async() => { + const tx = await models.AgencyTerm.beginTransaction({}); + + try { + const options = {transaction: tx}; + const filter = {}; + const ctx = {req: {accessToken: {userId: authUserId}}}; + + const agencyTerms = await models.AgencyTerm.filter(ctx, filter, options); + const firstAgencyTerm = agencyTerms[0]; + + expect(firstAgencyTerm.routeFk).toEqual(1); + expect(agencyTerms.length).toEqual(5); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return results matching "search" searching by integer', async() => { + let ctx = { + args: { + search: 1, + } + }; + + let result = await app.models.AgencyTerm.filter(ctx); + + expect(result.length).toEqual(1); + expect(result[0].routeFk).toEqual(1); + }); + + it('should return results matching "search" searching by string', async() => { + let ctx = { + args: { + search: 'Plants SL', + } + }; + + let result = await app.models.AgencyTerm.filter(ctx); + + expect(result.length).toEqual(2); + }); + + it('should return results matching "from" and "to"', async() => { + const tx = await models.Buy.beginTransaction({}); + const options = {transaction: tx}; + + try { + const from = new Date(); + from.setHours(0, 0, 0, 0); + + const to = new Date(); + to.setHours(23, 59, 59, 999); + + const ctx = { + args: { + from: from, + to: to + } + }; + + const results = await models.AgencyTerm.filter(ctx, options); + + expect(results.length).toBe(5); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return results matching "agencyModeFk"', async() => { + let ctx = { + args: { + agencyModeFk: 1, + } + }; + + let result = await app.models.AgencyTerm.filter(ctx); + + expect(result.length).toEqual(1); + expect(result[0].routeFk).toEqual(1); + }); + + it('should return results matching "agencyFk"', async() => { + let ctx = { + args: { + agencyFk: 2, + } + }; + + let result = await app.models.AgencyTerm.filter(ctx); + + expect(result.length).toEqual(1); + expect(result[0].routeFk).toEqual(2); + }); +}); diff --git a/modules/route/back/methods/route/driverRouteEmail.js b/modules/route/back/methods/route/driverRouteEmail.js new file mode 100644 index 000000000..4d5279d2d --- /dev/null +++ b/modules/route/back/methods/route/driverRouteEmail.js @@ -0,0 +1,59 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('driverRouteEmail', { + description: 'Sends the driver route email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The client id', + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id to send to the recipient preferred language', + required: false + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/:id/driver-route-email', + verb: 'POST' + } + }); + + Self.driverRouteEmail = async ctx => { + const args = Object.assign({}, ctx.args); + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const email = new Email('driver-route', params); + + return email.send(); + }; +}; diff --git a/modules/route/back/methods/route/driverRoutePdf.js b/modules/route/back/methods/route/driverRoutePdf.js new file mode 100644 index 000000000..65748afad --- /dev/null +++ b/modules/route/back/methods/route/driverRoutePdf.js @@ -0,0 +1,55 @@ +const {Report} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('driverRoutePdf', { + description: 'Returns the driver route pdf', + accepts: [ + { + arg: 'id', + type: 'string', + required: true, + description: 'The route id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/driver-route-pdf', + verb: 'GET' + } + }); + + Self.driverRoutePdf = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const report = new Report('driver-route', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="doc-${id}.pdf"`]; + }; +}; diff --git a/modules/route/back/methods/route/getSuggestedTickets.js b/modules/route/back/methods/route/getSuggestedTickets.js index c1d6b67fe..c1a9c7cae 100644 --- a/modules/route/back/methods/route/getSuggestedTickets.js +++ b/modules/route/back/methods/route/getSuggestedTickets.js @@ -25,6 +25,7 @@ module.exports = Self => { Object.assign(myOptions, options); const route = await Self.app.models.Route.findById(id, null, myOptions); + const zoneAgencyModes = await Self.app.models.ZoneAgencyMode.find({ where: { agencyModeFk: route.agencyModeFk @@ -52,6 +53,18 @@ module.exports = Self => { fields: ['id', 'name'] } }, + { + relation: 'zone', + scope: { + fields: ['id', 'name'] + } + }, + { + relation: 'agencyMode', + scope: { + fields: ['id', 'name'] + } + }, { relation: 'address', scope: { diff --git a/modules/route/back/methods/route/getTickets.js b/modules/route/back/methods/route/getTickets.js index 9a2f5289a..18e5abaf2 100644 --- a/modules/route/back/methods/route/getTickets.js +++ b/modules/route/back/methods/route/getTickets.js @@ -49,7 +49,8 @@ module.exports = Self => { a.city, am.name AS agencyModeName, u.nickname AS userNickname, - vn.ticketTotalVolume(t.id) AS volume + vn.ticketTotalVolume(t.id) AS volume, + tob.description FROM route r JOIN ticket t ON t.routeFk = r.id LEFT JOIN ticketState ts ON ts.ticketFk = t.id diff --git a/modules/route/back/methods/route/specs/filter.spec.js b/modules/route/back/methods/route/specs/filter.spec.js index a4742c128..9d481f21e 100644 --- a/modules/route/back/methods/route/specs/filter.spec.js +++ b/modules/route/back/methods/route/specs/filter.spec.js @@ -1,85 +1,89 @@ const app = require('vn-loopback/server/server'); +const models = require('vn-loopback/server/server').models; describe('Route filter()', () => { - let today = new Date(); + const today = new Date(); today.setHours(2, 0, 0, 0); it('should return the routes matching "search"', async() => { - let ctx = { + const ctx = { args: { search: 1, } }; - let result = await app.models.Route.filter(ctx); + const result = await app.models.Route.filter(ctx); expect(result.length).toEqual(1); expect(result[0].id).toEqual(1); }); - // #1428 cuadrar formato de horas - xit('should return the routes matching "from"', async() => { - let ctx = { - args: { - from: today, - } - }; + it('should return results matching "from" and "to"', async() => { + const tx = await models.Buy.beginTransaction({}); + const options = {transaction: tx}; - let result = await app.models.Route.filter(ctx); + try { + const from = new Date(); + from.setHours(0, 0, 0, 0); - expect(result.length).toEqual(7); - }); + const to = new Date(); + to.setHours(23, 59, 59, 999); + const ctx = { + args: { + from: from, + to: to + } + }; - it('should return the routes matching "to"', async() => { - let ctx = { - args: { - to: today, - } - }; + const results = await models.Route.filter(ctx, options); - let result = await app.models.Route.filter(ctx); + expect(results.length).toBe(7); - expect(result.length).toEqual(7); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } }); it('should return the routes matching "m3"', async() => { - let ctx = { + const ctx = { args: { m3: 0.1, } }; - let result = await app.models.Route.filter(ctx); + const result = await app.models.Route.filter(ctx); expect(result.length).toEqual(1); }); it('should return the routes matching "description"', async() => { - let ctx = { + const ctx = { args: { description: 'third route', } }; - let result = await app.models.Route.filter(ctx); + const result = await app.models.Route.filter(ctx); expect(result.length).toEqual(1); }); it('should return the routes matching "workerFk"', async() => { - let ctx = { + const ctx = { args: { workerFk: 56, } }; - let result = await app.models.Route.filter(ctx); + const result = await app.models.Route.filter(ctx); expect(result.length).toEqual(5); }); it('should return the routes matching "warehouseFk"', async() => { - let ctx = { + const ctx = { args: { warehouseFk: 1, } @@ -97,25 +101,25 @@ describe('Route filter()', () => { }); it('should return the routes matching "vehicleFk"', async() => { - let ctx = { + const ctx = { args: { vehicleFk: 2, } }; - let result = await app.models.Route.filter(ctx); + const result = await app.models.Route.filter(ctx); expect(result.length).toEqual(1); }); it('should return the routes matching "agencyModeFk"', async() => { - let ctx = { + const ctx = { args: { agencyModeFk: 7, } }; - let result = await app.models.Route.filter(ctx); + const result = await app.models.Route.filter(ctx); expect(result.length).toEqual(1); }); diff --git a/modules/route/back/methods/route/specs/getDeliveryPoint.spec.js b/modules/route/back/methods/route/specs/getDeliveryPoint.spec.js index 4025b04d6..b08051c0a 100644 --- a/modules/route/back/methods/route/specs/getDeliveryPoint.spec.js +++ b/modules/route/back/methods/route/specs/getDeliveryPoint.spec.js @@ -2,7 +2,7 @@ const app = require('vn-loopback/server/server'); describe('route getDeliveryPoint()', () => { const routeId = 1; - const deliveryPointAddress = '46460 Av Espioca 100-Silla'; + const deliveryPointAddress = '1007 Mountain Drive, Gotham'; it('should get the delivery point addres of a route with assigned vehicle', async() => { let route = await app.models.Route.findById(routeId); diff --git a/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js b/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js index beb494d43..bb38cb50e 100644 --- a/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js +++ b/modules/route/back/methods/route/specs/getSuggestedTickets.spec.js @@ -1,30 +1,32 @@ -const app = require('vn-loopback/server/server'); +const models = require('vn-loopback/server/server').models; const LoopBackContext = require('loopback-context'); describe('route getSuggestedTickets()', () => { const routeID = 1; const ticketId = 12; + it('should return an array of suggested tickets', async() => { const activeCtx = { accessToken: {userId: 19}, headers: {origin: 'http://localhost'} }; + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ active: activeCtx }); - const tx = await app.models.Ticket.beginTransaction({}); + const tx = await models.Ticket.beginTransaction({}); try { const options = {transaction: tx}; - const ticketInRoute = await app.models.Ticket.findById(ticketId, null, options); + const ticketInRoute = await models.Ticket.findById(ticketId, null, options); await ticketInRoute.updateAttributes({ routeFk: null, landed: new Date() }, options); - const result = await app.models.Route.getSuggestedTickets(routeID, options); + const result = await models.Route.getSuggestedTickets(routeID, options); const length = result.length; const anyResult = result[Math.floor(Math.random() * Math.floor(length))]; diff --git a/modules/route/back/methods/route/specs/guessPriority.spec.js b/modules/route/back/methods/route/specs/guessPriority.spec.js index 892324acf..902647ba1 100644 --- a/modules/route/back/methods/route/specs/guessPriority.spec.js +++ b/modules/route/back/methods/route/specs/guessPriority.spec.js @@ -1,9 +1,21 @@ const app = require('vn-loopback/server/server'); +const LoopBackContext = require('loopback-context'); describe('route guessPriority()', () => { const targetRouteId = 7; let routeTicketsToRestore; + const activeCtx = { + accessToken: {userId: 9}, + __: () => {} + }; + + beforeAll(() => { + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + }); + afterAll(async() => { let restoreFixtures = []; routeTicketsToRestore.forEach(ticket => { @@ -12,12 +24,9 @@ describe('route guessPriority()', () => { await Promise.all(restoreFixtures); }); - it('should call guessPriority() and then check the tickets in the target route now have their priorities defined', async() => { + it('should call guessPriority() then check all tickets in that route have their priorities defined', async() => { const ctx = { - req: { - accessToken: {userId: 9}, - __: () => {} - }, + req: activeCtx }; routeTicketsToRestore = await app.models.Ticket.find({where: {routeFk: targetRouteId}}); diff --git a/modules/route/back/methods/route/specs/unlink.spec.js b/modules/route/back/methods/route/specs/unlink.spec.js new file mode 100644 index 000000000..808cedccc --- /dev/null +++ b/modules/route/back/methods/route/specs/unlink.spec.js @@ -0,0 +1,33 @@ +const models = require('vn-loopback/server/server').models; + +describe('route unlink()', () => { + it('should show no tickets since the link between zone and route for the give agencymode was removed', async() => { + const tx = await models.ZoneAgencyMode.beginTransaction({}); + const agencyModeId = 1; + const zoneId = 1; + routeId = 1; + + try { + const options = {transaction: tx}; + + let zoneAgencyModes = await models.ZoneAgencyMode.find(null, options); + let tickets = await models.Route.getSuggestedTickets(routeId, options); + + expect(zoneAgencyModes.length).toEqual(4); + expect(tickets.length).toEqual(3); + + await models.Route.unlink(agencyModeId, zoneId, options); + + zoneAgencyModes = await models.ZoneAgencyMode.find(null, options); + tickets = await models.Route.getSuggestedTickets(routeId, options); + + expect(zoneAgencyModes.length).toEqual(3); + expect(tickets.length).toEqual(0); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/route/back/methods/route/specs/updateWorkCenter.spec.js b/modules/route/back/methods/route/specs/updateWorkCenter.spec.js new file mode 100644 index 000000000..5328dc240 --- /dev/null +++ b/modules/route/back/methods/route/specs/updateWorkCenter.spec.js @@ -0,0 +1,51 @@ +const models = require('vn-loopback/server/server').models; + +describe('route updateWorkCenter()', () => { + const routeId = 1; + + it('should set the commission work center if the worker has workCenter', async() => { + const tx = await models.Route.beginTransaction({}); + try { + const developerId = 9; + const ctx = { + req: { + accessToken: {userId: developerId} + } + }; + const options = {transaction: tx}; + + const expectedResult = 1; + const updatedRoute = await models.Route.updateWorkCenter(ctx, routeId, options); + + expect(updatedRoute.commissionWorkCenterFk).toEqual(expectedResult); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it(`shoul set the default commision work center if that worker didn't have one yet`, async() => { + const tx = await models.Route.beginTransaction({}); + try { + const userWithoutWorkCenter = 2; + const ctx = { + req: { + accessToken: {userId: userWithoutWorkCenter} + } + }; + const options = {transaction: tx}; + + const expectedResult = 9; + const updatedRoute = await models.Route.updateWorkCenter(ctx, routeId, options); + + expect(updatedRoute.commissionWorkCenterFk).toEqual(expectedResult); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/route/back/methods/route/unlink.js b/modules/route/back/methods/route/unlink.js new file mode 100644 index 000000000..5a847e337 --- /dev/null +++ b/modules/route/back/methods/route/unlink.js @@ -0,0 +1,42 @@ +module.exports = Self => { + Self.remoteMethod('unlink', { + description: 'Removes the matching entries from zoneAgencyMode', + accessType: 'WRITE', + accepts: [ + { + arg: 'agencyModeId', + type: 'number', + required: true, + description: 'The agencyMode id', + }, + { + arg: 'zoneId', + type: 'number', + required: true, + description: 'The zone id', + }, + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/unlink`, + verb: 'POST' + } + }); + + Self.unlink = async(agencyModeId, zoneId, options) => { + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const where = { + agencyModeFk: agencyModeId, + zoneFk: zoneId + }; + + await Self.app.models.ZoneAgencyMode.destroyAll(where, myOptions); + }; +}; diff --git a/modules/route/back/methods/route/updateWorkCenter.js b/modules/route/back/methods/route/updateWorkCenter.js new file mode 100644 index 000000000..7796fba41 --- /dev/null +++ b/modules/route/back/methods/route/updateWorkCenter.js @@ -0,0 +1,54 @@ +module.exports = Self => { + Self.remoteMethodCtx('updateWorkCenter', { + description: 'Update the commission work center through user salix connected', + accessType: 'WRITE', + accepts: { + arg: 'id', + type: 'number', + description: 'Route Id', + http: {source: 'path'} + }, + returns: { + type: 'object', + root: true + }, + http: { + path: `/:id/updateWorkCenter`, + verb: 'POST' + } + }); + + Self.updateWorkCenter = async(ctx, id, options) => { + const models = Self.app.models; + const myOptions = {}; + let tx; + const userId = ctx.req.accessToken.userId; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + const [result] = await Self.rawSql(` + SELECT IFNULL(wl.workCenterFk, r.defaultWorkCenterFk) AS commissionWorkCenter + FROM vn.routeConfig r + LEFT JOIN vn.workerLabour wl ON wl.workerFk = ? + AND CURDATE() BETWEEN wl.started AND IFNULL(wl.ended, CURDATE()); + `, [userId], myOptions); + + const route = await models.Route.findById(id, null, myOptions); + await route.updateAttribute('commissionWorkCenterFk', result.commissionWorkCenter, myOptions); + + if (tx) await tx.commit(); + + return route; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/route/back/model-config.json b/modules/route/back/model-config.json index 0dfe1d02a..31aaad9f5 100644 --- a/modules/route/back/model-config.json +++ b/modules/route/back/model-config.json @@ -1,4 +1,10 @@ { + "AgencyTerm": { + "dataSource": "vn" + }, + "AgencyTermConfig": { + "dataSource": "vn" + }, "Route": { "dataSource": "vn" }, diff --git a/modules/route/back/models/agency-term-config.json b/modules/route/back/models/agency-term-config.json new file mode 100644 index 000000000..c94fc266b --- /dev/null +++ b/modules/route/back/models/agency-term-config.json @@ -0,0 +1,24 @@ +{ + "name": "AgencyTermConfig", + "base": "VnModel", + "options": { + "mysql": { + "table": "agencyTermConfig" + } + }, + "properties": { + "expenceFk": { + "type": "string", + "id": true + }, + "vatAccountSupported": { + "type": "string" + }, + "vatPercentage": { + "type": "number" + }, + "transaction": { + "type": "string" + } + } +} diff --git a/modules/route/back/models/agency-term.js b/modules/route/back/models/agency-term.js new file mode 100644 index 000000000..8a0eea655 --- /dev/null +++ b/modules/route/back/models/agency-term.js @@ -0,0 +1,4 @@ +module.exports = Self => { + require('../methods/agency-term/filter')(Self); + require('../methods/agency-term/createInvoiceIn')(Self); +}; diff --git a/modules/route/back/models/agency-term.json b/modules/route/back/models/agency-term.json new file mode 100644 index 000000000..4e13c2a18 --- /dev/null +++ b/modules/route/back/models/agency-term.json @@ -0,0 +1,37 @@ +{ + "name": "AgencyTerm", + "base": "VnModel", + "options": { + "mysql": { + "table": "agencyTerm" + } + }, + "properties": { + "agencyFk": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "minimumPackages": { + "type": "number" + }, + "kmPrice": { + "type": "number" + }, + "packagePrice": { + "type": "number" + }, + "routePrice": { + "type": "number" + }, + "minimumKm": { + "type": "number" + }, + "minimumM3": { + "type": "number" + }, + "m3Price": { + "type": "number" + } + } +} diff --git a/modules/route/back/models/deliveryPoint.json b/modules/route/back/models/deliveryPoint.json index c6c0a2116..639f21e35 100644 --- a/modules/route/back/models/deliveryPoint.json +++ b/modules/route/back/models/deliveryPoint.json @@ -8,15 +8,15 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "name": { - "type": "String" + "type": "string" }, "ubication": { - "type": "String" + "type": "string" } } } diff --git a/modules/route/back/models/route-log.json b/modules/route/back/models/route-log.json index abaeeb722..37f898267 100644 --- a/modules/route/back/models/route-log.json +++ b/modules/route/back/models/route-log.json @@ -9,40 +9,40 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "forceId": false }, "originFk": { - "type": "Number", + "type": "number", "required": true }, "userFk": { - "type": "Number" + "type": "number" }, "action": { - "type": "String", + "type": "string", "required": true }, "changedModel": { - "type": "String" + "type": "string" }, "oldInstance": { - "type": "Object" + "type": "object" }, "newInstance": { - "type": "Object" + "type": "object" }, "creationDate": { - "type": "Date" + "type": "date" }, "changedModelId": { - "type": "Number" + "type": "number" }, "changedModelValue": { - "type": "String" + "type": "string" }, "description": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/modules/route/back/models/route.js b/modules/route/back/models/route.js index 1cfe0927e..f5406728a 100644 --- a/modules/route/back/models/route.js +++ b/modules/route/back/models/route.js @@ -8,6 +8,10 @@ module.exports = Self => { require('../methods/route/insertTicket')(Self); require('../methods/route/clone')(Self); require('../methods/route/getSuggestedTickets')(Self); + require('../methods/route/unlink')(Self); + require('../methods/route/updateWorkCenter')(Self); + require('../methods/route/driverRoutePdf')(Self); + require('../methods/route/driverRouteEmail')(Self); Self.validate('kmStart', validateDistance, { message: 'Distance must be lesser than 1000' diff --git a/modules/route/back/models/route.json b/modules/route/back/models/route.json index bdb641096..12b9785db 100644 --- a/modules/route/back/models/route.json +++ b/modules/route/back/models/route.json @@ -11,7 +11,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, @@ -22,10 +22,10 @@ "type": "date" }, "kmStart": { - "type": "Number" + "type": "number" }, "kmEnd": { - "type": "Number" + "type": "number" }, "started": { "type": "date" @@ -40,13 +40,19 @@ } }, "cost": { - "type": "Number" + "type": "number" }, "m3": { - "type": "Number" + "type": "number" }, "description": { - "type": "String" + "type": "string" + }, + "isOk": { + "type": "boolean" + }, + "commissionWorkCenterFk": { + "type": "number" } }, "relations": { diff --git a/modules/route/back/models/vehicle.json b/modules/route/back/models/vehicle.json index 399480c98..34a376b89 100644 --- a/modules/route/back/models/vehicle.json +++ b/modules/route/back/models/vehicle.json @@ -8,27 +8,27 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "numberPlate": { - "type": "String" + "type": "string" }, "tradeMark": { - "type": "String" + "type": "string" }, "model": { - "type": "String" + "type": "string" }, "m3": { - "type": "Number" + "type": "number" }, "description": { - "type": "String" + "type": "string" }, "isActive": { - "type": "Number" + "type": "number" } }, "relations": { @@ -50,8 +50,10 @@ }, "scope": { "where": { - "isActive": true - } + "isActive": { + "neq": false + } + } }, "acls": [ { diff --git a/modules/route/front/agency-term-search-panel/index.html b/modules/route/front/agency-term-search-panel/index.html new file mode 100644 index 000000000..fec6bf5eb --- /dev/null +++ b/modules/route/front/agency-term-search-panel/index.html @@ -0,0 +1,47 @@ +
+
+ + + + + + + + + + +
+ + + + + + +
+ + + +
+
diff --git a/modules/route/front/agency-term-search-panel/index.js b/modules/route/front/agency-term-search-panel/index.js new file mode 100644 index 000000000..d5d8ea7a6 --- /dev/null +++ b/modules/route/front/agency-term-search-panel/index.js @@ -0,0 +1,17 @@ +import ngModule from '../module'; +import SearchPanel from 'core/components/searchbar/search-panel'; + +class Controller extends SearchPanel { + get filter() { + return this.$.filter; + } + + set filter(value = {}) { + this.$.filter = value; + } +} + +ngModule.vnComponent('vnAgencyTermSearchPanel', { + template: require('./index.html'), + controller: Controller +}); diff --git a/modules/route/front/agency-term-search-panel/locale/es.yml b/modules/route/front/agency-term-search-panel/locale/es.yml new file mode 100644 index 000000000..74336a03b --- /dev/null +++ b/modules/route/front/agency-term-search-panel/locale/es.yml @@ -0,0 +1,2 @@ +Search by invoiceIn id or autonomous name: Buscar por id de recibida o por nombre de autónomo +Search autonomous: Buscar autónomos \ No newline at end of file diff --git a/modules/route/front/agency-term/createInvoiceIn/index.html b/modules/route/front/agency-term/createInvoiceIn/index.html new file mode 100644 index 000000000..8f270378f --- /dev/null +++ b/modules/route/front/agency-term/createInvoiceIn/index.html @@ -0,0 +1,108 @@ + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
diff --git a/modules/route/front/agency-term/createInvoiceIn/index.js b/modules/route/front/agency-term/createInvoiceIn/index.js new file mode 100644 index 000000000..0198ab80f --- /dev/null +++ b/modules/route/front/agency-term/createInvoiceIn/index.js @@ -0,0 +1,120 @@ +import ngModule from '../../module'; +import Section from 'salix/components/section'; +import './style.scss'; +import UserError from 'core/lib/user-error'; + +class Controller extends Section { + constructor($element, $) { + super($element, $); + this.dms = { + files: [], + hasFile: false, + hasFileAttached: false + }; + } + + get route() { + return this._route; + } + + set route(value) { + this._route = value; + + this.setDefaultParams(); + this.getAllowedContentTypes(); + } + + $onChanges() { + if (this.$params && this.$params.q) + this.params = JSON.parse(this.$params.q); + } + + getAllowedContentTypes() { + this.$http.get('DmsContainers/allowedContentTypes').then(res => { + const contentTypes = res.data.join(', '); + this.allowedContentTypes = contentTypes; + }); + } + + get contentTypesInfo() { + return this.$t('ContentTypesInfo', { + allowedContentTypes: this.allowedContentTypes + }); + } + + setDefaultParams() { + const params = {filter: { + where: {code: 'invoiceIn'} + }}; + this.$http.get('DmsTypes/findOne', {params}).then(res => { + const dmsType = res.data && res.data; + const companyId = this.vnConfig.companyFk; + const warehouseId = this.vnConfig.warehouseFk; + const defaultParams = { + warehouseId: warehouseId, + companyId: companyId, + dmsTypeId: dmsType.id, + description: this.params.supplierName + }; + + this.dms = Object.assign(this.dms, defaultParams); + }); + } + + onSubmit() { + if (this.dms.files.length > 1) throw new UserError('You cannot attach more than one document'); + const query = `dms/uploadFile`; + const options = { + method: 'POST', + url: query, + params: this.dms, + headers: { + 'Content-Type': undefined + }, + transformRequest: files => { + const formData = new FormData(); + formData.append(files[0].name, files[0]); + return formData; + }, + data: this.dms.files + }; + this.$http(options).then(res => { + if (res) { + const addedDms = res.data; + this.$.watcher.updateOriginalData(); + + const params = { + rows: this.params.rows, + dms: addedDms + }; + + this.$http.post('AgencyTerms/createInvoiceIn', params) + .then(() => { + this.$state.go('route.agencyTerm.index'); + this.vnApp.showSuccess(this.$t('Data saved!')); + }); + } + }); + } + + onFileChange(files) { + let hasFileAttached = false; + + if (files.length > 0) + hasFileAttached = true; + + this.$.$applyAsync(() => { + this.dms.hasFileAttached = hasFileAttached; + }); + } +} + +Controller.$inject = ['$element', '$scope']; + +ngModule.vnComponent('vnAgencyTermCreateInvoiceIn', { + template: require('./index.html'), + controller: Controller, + bindings: { + route: '<' + } +}); diff --git a/modules/route/front/agency-term/createInvoiceIn/index.spec.js b/modules/route/front/agency-term/createInvoiceIn/index.spec.js new file mode 100644 index 000000000..d6d9883a7 --- /dev/null +++ b/modules/route/front/agency-term/createInvoiceIn/index.spec.js @@ -0,0 +1,107 @@ +import './index'; +import watcher from 'core/mocks/watcher.js'; + +describe('AgencyTerm', () => { + describe('Component vnAgencyTermCreateInvoiceIn', () => { + let controller; + let $scope; + let $httpBackend; + let $httpParamSerializer; + + beforeEach(ngModule('route')); + + beforeEach(inject(($componentController, $rootScope, _$httpBackend_, _$httpParamSerializer_) => { + $scope = $rootScope.$new(); + $httpBackend = _$httpBackend_; + $httpParamSerializer = _$httpParamSerializer_; + const $element = angular.element(''); + controller = $componentController('vnAgencyTermCreateInvoiceIn', {$element}); + controller._route = { + id: 1 + }; + })); + + describe('$onChanges()', () => { + it('should update the params data when $params.q is defined', () => { + controller.$params = {q: '{"supplierName": "Plants SL","rows": null}'}; + + const params = {q: '{"supplierName": "Plants SL", "rows": null}'}; + const json = JSON.parse(params.q); + + controller.$onChanges(); + + expect(controller.params).toEqual(json); + }); + }); + + describe('route() setter', () => { + it('should set the ticket data and then call setDefaultParams() and getAllowedContentTypes()', () => { + jest.spyOn(controller, 'setDefaultParams'); + jest.spyOn(controller, 'getAllowedContentTypes'); + controller.route = { + id: 1 + }; + + expect(controller.route).toBeDefined(); + expect(controller.setDefaultParams).toHaveBeenCalledWith(); + expect(controller.getAllowedContentTypes).toHaveBeenCalledWith(); + }); + }); + + describe('getAllowedContentTypes()', () => { + it('should make an HTTP GET request to get the allowed content types', () => { + const expectedResponse = ['image/png', 'image/jpg']; + $httpBackend.expect('GET', `DmsContainers/allowedContentTypes`).respond(expectedResponse); + controller.getAllowedContentTypes(); + $httpBackend.flush(); + + expect(controller.allowedContentTypes).toBeDefined(); + expect(controller.allowedContentTypes).toEqual('image/png, image/jpg'); + }); + }); + + describe('setDefaultParams()', () => { + it('should perform a GET query and define the dms property on controller', () => { + const params = {filter: { + where: {code: 'invoiceIn'} + }}; + const serializedParams = $httpParamSerializer(params); + $httpBackend.expect('GET', `DmsTypes/findOne?${serializedParams}`).respond({id: 1, code: 'invoiceIn'}); + controller.params = {supplierName: 'Plants SL'}; + controller.setDefaultParams(); + $httpBackend.flush(); + + expect(controller.dms).toBeDefined(); + expect(controller.dms.dmsTypeId).toEqual(1); + }); + }); + + describe('onSubmit()', () => { + it('should make an HTTP POST request to save the form data', () => { + controller.$.watcher = watcher; + + jest.spyOn(controller.$.watcher, 'updateOriginalData'); + const files = [{id: 1, name: 'MyFile'}]; + controller.dms = {files}; + const serializedParams = $httpParamSerializer(controller.dms); + const query = `dms/uploadFile?${serializedParams}`; + controller.params = {rows: null}; + + $httpBackend.expect('POST', query).respond({}); + $httpBackend.expect('POST', 'AgencyTerms/createInvoiceIn').respond({}); + controller.onSubmit(); + $httpBackend.flush(); + }); + }); + + describe('onFileChange()', () => { + it('should set dms hasFileAttached property to true if has any files', () => { + const files = [{id: 1, name: 'MyFile'}]; + controller.onFileChange(files); + $scope.$apply(); + + expect(controller.dms.hasFileAttached).toBeTruthy(); + }); + }); + }); +}); diff --git a/modules/route/front/agency-term/createInvoiceIn/style.scss b/modules/route/front/agency-term/createInvoiceIn/style.scss new file mode 100644 index 000000000..73f136fc1 --- /dev/null +++ b/modules/route/front/agency-term/createInvoiceIn/style.scss @@ -0,0 +1,7 @@ +vn-ticket-request { + .vn-textfield { + margin: 0!important; + max-width: 100px; + } +} + diff --git a/modules/route/front/agency-term/index/index.html b/modules/route/front/agency-term/index/index.html new file mode 100644 index 000000000..0d8ea40e7 --- /dev/null +++ b/modules/route/front/agency-term/index/index.html @@ -0,0 +1,152 @@ + + + + + + + + + +
+
+
Total
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Id + + Date + + Agency route + + Agency Agreement + + Packages + + M3 + + Km + + Price + + Received + + Autonomous +
+ + + + + {{::agencyTerm.routeFk}} + + {{::agencyTerm.created | date:'dd/MM/yyyy'}}{{::agencyTerm.agencyModeName | dashIfEmpty}}{{::agencyTerm.agencyAgreement | dashIfEmpty}}{{::agencyTerm.packages | dashIfEmpty}}{{::agencyTerm.m3 | dashIfEmpty}}{{::agencyTerm.kmTotal | dashIfEmpty}}{{::agencyTerm.price | dashIfEmpty}} + + {{::agencyTerm.invoiceInFk}} + + + + {{::agencyTerm.supplierName}} + + + + +
+
+
+
+ + + + + + + + + + + + + +
+ + + + +
diff --git a/modules/route/front/agency-term/index/index.js b/modules/route/front/agency-term/index/index.js new file mode 100644 index 000000000..6c3bafc9a --- /dev/null +++ b/modules/route/front/agency-term/index/index.js @@ -0,0 +1,121 @@ +import ngModule from '../../module'; +import Section from 'salix/components/section'; + +class Controller extends Section { + constructor($element, $) { + super($element, $); + + this.smartTableOptions = { + activeButtons: { + search: true + }, + columns: [ + { + field: 'agencyModeFk', + autocomplete: { + url: 'AgencyModes', + showField: 'name', + valueField: 'id' + } + }, + { + field: 'agencyFk', + autocomplete: { + url: 'Agencies', + showField: 'name', + valueField: 'id' + } + }, + { + field: 'supplierFk', + autocomplete: { + url: 'Suppliers', + showField: 'name', + valueField: 'name', + } + } + ] + }; + } + + exprBuilder(param, value) { + switch (param) { + case 'agencyModeFk': + return {'a.agencyModeFk': value}; + case 'supplierFk': + return {'a.supplierName': value}; + case 'routeFk': + return {'a.routeFk': value}; + case 'created': + case 'agencyFk': + case 'packages': + case 'm3': + case 'kmTotal': + case 'price': + case 'invoiceInFk': + return {[`a.${param}`]: value}; + } + } + + get checked() { + const agencyTerms = this.$.model.data || []; + const checkedAgencyTerms = []; + for (let agencyTerm of agencyTerms) { + if (agencyTerm.checked) + checkedAgencyTerms.push(agencyTerm); + } + + return checkedAgencyTerms; + } + + get totalChecked() { + return this.checked.length; + } + + get totalPrice() { + let totalPrice = 0; + + if (this.checked.length > 0) { + for (let agencyTerm of this.checked) + totalPrice += agencyTerm.price; + + return totalPrice; + } + + return totalPrice; + } + + preview(route) { + this.routeSelected = route; + this.$.summary.show(); + } + + createInvoiceIn() { + const rowsToCreateInvoiceIn = []; + const supplierFk = this.checked[0].supplierFk; + + for (let agencyTerm of this.checked) { + let hasSameSupplier = supplierFk == agencyTerm.supplierFk; + if (hasSameSupplier) { + rowsToCreateInvoiceIn.push({ + routeFk: agencyTerm.routeFk, + supplierFk: agencyTerm.supplierFk, + created: agencyTerm.created, + totalPrice: this.totalPrice}); + } else { + this.vnApp.showError(this.$t('Two autonomous cannot be counted at the same time')); + return false; + } + } + const params = JSON.stringify({ + supplierName: this.checked[0].supplierName, + rows: rowsToCreateInvoiceIn + }); + this.$state.go('route.agencyTerm.createInvoiceIn', {q: params}); + } +} + +ngModule.vnComponent('vnAgencyTermIndex', { + template: require('./index.html'), + controller: Controller +}); diff --git a/modules/route/front/agency-term/index/index.spec.js b/modules/route/front/agency-term/index/index.spec.js new file mode 100644 index 000000000..55c40daa5 --- /dev/null +++ b/modules/route/front/agency-term/index/index.spec.js @@ -0,0 +1,94 @@ +import './index.js'; +import crudModel from 'core/mocks/crud-model'; + +describe('AgencyTerm', () => { + describe('Component vnAgencyTermIndex', () => { + let controller; + let $window; + + beforeEach(ngModule('route')); + + beforeEach(inject(($componentController, _$window_) => { + $window = _$window_; + const $element = angular.element(''); + controller = $componentController('vnAgencyTermIndex', {$element}); + controller.$.model = crudModel; + controller.$.model.data = [ + {supplierFk: 1, totalPrice: null}, + {supplierFk: 1}, + {supplierFk: 2} + ]; + })); + + describe('checked() getter', () => { + it('should return the checked lines', () => { + const data = controller.$.model.data; + data[0].checked = true; + + const checkedRows = controller.checked; + + const firstCheckedRow = checkedRows[0]; + + expect(firstCheckedRow.supplierFk).toEqual(1); + }); + }); + + describe('totalCheked() getter', () => { + it('should return the total checked lines', () => { + const data = controller.$.model.data; + data[0].checked = true; + + const checkedRows = controller.totalChecked; + + expect(checkedRows).toEqual(1); + }); + }); + + describe('preview()', () => { + it('should show the summary dialog', () => { + controller.$.summary = {show: () => {}}; + jest.spyOn(controller.$.summary, 'show'); + + let event = new MouseEvent('click', { + view: $window, + bubbles: true, + cancelable: true + }); + const route = {id: 1}; + + controller.preview(event, route); + + expect(controller.$.summary.show).toHaveBeenCalledWith(); + }); + }); + + describe('createInvoiceIn()', () => { + it('should throw an error if more than one autonomous are checked', () => { + jest.spyOn(controller.vnApp, 'showError'); + const data = controller.$.model.data; + data[0].checked = true; + data[2].checked = true; + + controller.createInvoiceIn(); + + expect(controller.vnApp.showError).toHaveBeenCalled(); + }); + + it('should call the function go() on $state to go to the file management', () => { + jest.spyOn(controller.$state, 'go'); + const data = controller.$.model.data; + data[0].checked = true; + + controller.createInvoiceIn(); + + delete data[0].checked; + const params = JSON.stringify({ + supplierName: data[0].supplierName, + rows: [data[0]] + }); + + expect(controller.$state.go).toHaveBeenCalledWith('route.agencyTerm.createInvoiceIn', {q: params}); + }); + }); + }); +}); diff --git a/modules/route/front/agency-term/locale/es.yml b/modules/route/front/agency-term/locale/es.yml new file mode 100644 index 000000000..0f6797188 --- /dev/null +++ b/modules/route/front/agency-term/locale/es.yml @@ -0,0 +1,5 @@ +Agency route: Agencia ruta +Agency Agreement: Acuerdo agencia +Autonomous: Autónomos +Two autonomous cannot be counted at the same time: Dos autonónomos no pueden ser contabilizados al mismo tiempo +You cannot attach more than one document: No puedes adjuntar más de un documento \ No newline at end of file diff --git a/modules/route/front/basic-data/index.html b/modules/route/front/basic-data/index.html index d3ba25b11..831599ae8 100644 --- a/modules/route/front/basic-data/index.html +++ b/modules/route/front/basic-data/index.html @@ -21,7 +21,7 @@
{{name}} - {{nickname}}
- + + diff --git a/modules/route/front/basic-data/locale/es.yml b/modules/route/front/basic-data/locale/es.yml index a98f20215..9dcacbe9a 100644 --- a/modules/route/front/basic-data/locale/es.yml +++ b/modules/route/front/basic-data/locale/es.yml @@ -5,3 +5,4 @@ Km end: Km de fin Description: Descripción Hour started: Hora inicio Hour finished: Hora fin +Is served: Se ha servido diff --git a/modules/route/front/card/index.js b/modules/route/front/card/index.js index 5813c9e89..6bf233c0a 100644 --- a/modules/route/front/card/index.js +++ b/modules/route/front/card/index.js @@ -18,7 +18,8 @@ class Controller extends ModuleCard { 'started', 'finished', 'cost', - 'zoneFk' + 'zoneFk', + 'isOk' ], include: [ { diff --git a/modules/route/front/create/index.js b/modules/route/front/create/index.js index 56c8cc25a..c81394c10 100644 --- a/modules/route/front/create/index.js +++ b/modules/route/front/create/index.js @@ -4,7 +4,12 @@ import Section from 'salix/components/section'; export default class Controller extends Section { onSubmit() { this.$.watcher.submit().then( - res => this.$state.go('route.card.summary', {id: res.data.id}) + res => { + this.$http.post(`Routes/${res.data.id}/updateWorkCenter`, null) + .then(() => { + this.$state.go('route.card.summary', {id: res.data.id}); + }); + } ); } } diff --git a/modules/route/front/descriptor/index.html b/modules/route/front/descriptor/index.html index bda46952a..fc1d3419c 100644 --- a/modules/route/front/descriptor/index.html +++ b/modules/route/front/descriptor/index.html @@ -1,6 +1,7 @@ + description="$ctrl.route.name" + summary="$ctrl.$.summary"> - \ No newline at end of file + + + + \ No newline at end of file diff --git a/modules/route/front/descriptor/index.js b/modules/route/front/descriptor/index.js index 32411aa58..2dc512b67 100644 --- a/modules/route/front/descriptor/index.js +++ b/modules/route/front/descriptor/index.js @@ -11,17 +11,19 @@ class Controller extends Descriptor { } showRouteReport() { - this.vnReport.show('driver-route', { - routeId: this.id + this.vnReport.show(`Routes/${this.id}/driver-route-pdf`, { + id: this.id }); } sendRouteReport() { const workerUser = this.route.worker.user; - this.vnEmail.send('driver-route', { + this.vnEmail.send(`Routes/${this.id}/driver-route-email`, { recipient: workerUser.emailUser.email, - routeId: this.id + id: this.id }); + const params = {isOk: true}; + return this.$http.patch(`Routes/${this.id}`, params); } updateVolume() { diff --git a/modules/route/front/index.js b/modules/route/front/index.js index 7c2a17483..55cb745e1 100644 --- a/modules/route/front/index.js +++ b/modules/route/front/index.js @@ -11,3 +11,7 @@ import './create'; import './basic-data'; import './log'; import './tickets'; +import './agency-term/index'; +import './agency-term/createInvoiceIn'; +import './agency-term-search-panel'; +import './ticket-popup'; diff --git a/modules/route/front/index/index.html b/modules/route/front/index/index.html index 5a503b149..7a64a9aff 100644 --- a/modules/route/front/index/index.html +++ b/modules/route/front/index/index.html @@ -1,64 +1,164 @@ - +
- - - - - - - - Id - Worker - Agency - Vehicle - Date - - Description - - - - - - - - - - {{::route.id | dashIfEmpty}} - - - {{::route.workerUserName}} - - - {{::route.agencyName | dashIfEmpty}} - {{::route.vehiclePlateNumber | dashIfEmpty}} - {{::route.created | dashIfEmpty | date:'dd/MM/yyyy'}} - {{::route.m3 | dashIfEmpty}} - {{::route.description | dashIfEmpty}} - - - - - - - + + +
+ + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Id + + Worker + + Agency + + Vehicle + + Date + + + + Description + + Hour started + + Hour finished +
+ + + {{::route.id | dashIfEmpty}} + + +
{{name}} - {{nickname}}
+
+
+
+ + + + + + + + + {{::route.m3 | dashIfEmpty}} + + + + + + + + + + + + + +
+
+
- +
+ + + + + + +
- - - - { + this.vnApp.showSuccess(this.$t('Data saved!')); + }); + } + + markAsServed() { + const routes = []; + for (let route of this.checked) + routes.push(route.id); + + const params = {isOk: true}; + for (let routeId of routes) + this.$http.patch(`Routes/${routeId}`, params); + } } Controller.$inject = ['$element', '$scope', 'vnReport']; diff --git a/modules/route/front/index/index.spec.js b/modules/route/front/index/index.spec.js index 80e660b76..05dd56433 100644 --- a/modules/route/front/index/index.spec.js +++ b/modules/route/front/index/index.spec.js @@ -12,7 +12,7 @@ describe('Component vnRouteIndex', () => { const $element = angular.element(''); controller = $componentController('vnRouteIndex', {$element}); controller.$.model = crudModel; - controller.$.model.data = [{id: 1}, {id: 2}, {id: 3}]; + controller.$.model.data = [{id: 1, checked: true}, {id: 2}, {id: 3}]; })); describe('checked() getter', () => { @@ -49,14 +49,12 @@ describe('Component vnRouteIndex', () => { const data = controller.$.model.data; data[0].checked = true; data[2].checked = true; - const expectedParams = { - authorization: null, - routeId: '1,3' - }; + + const routeIds = '1,3'; controller.showRouteReport(); - expect(controller.vnReport.show).toHaveBeenCalledWith('driver-route', expectedParams); + expect(controller.vnReport.show).toHaveBeenCalledWith(`Routes/${routeIds}/driver-route-pdf`); }); }); @@ -148,4 +146,13 @@ describe('Component vnRouteIndex', () => { expect(controller.$.model.refresh).toHaveBeenCalledWith(); }); }); + + describe('markAsServed()', () => { + it('should perform a HTTP patch query', () => { + const data = {isOk: true}; + $httpBackend.expect('PATCH', `Routes/1`, data).respond(); + controller.markAsServed(); + $httpBackend.flush(); + }); + }); }); diff --git a/modules/route/front/index/locale/es.yml b/modules/route/front/index/locale/es.yml index 591ea80d8..e4c5c8c55 100644 --- a/modules/route/front/index/locale/es.yml +++ b/modules/route/front/index/locale/es.yml @@ -2,4 +2,10 @@ Vehicle: Vehículo Download selected routes as PDF: Descargar rutas seleccionadas como PDF Clone selected routes: Clonar rutas seleccionadas The date can't be empty: La fecha no puede estar vacía -Starting date: Fecha de inicio \ No newline at end of file +Starting date: Fecha de inicio +Hour started: Hora inicio +Hour finished: Hora fin +Go to route: Ir a la ruta +You must select a valid time: Debe seleccionar una hora válida +You must select a valid date: Debe seleccionar una fecha válida +Mark as served: Marcar como servidas \ No newline at end of file diff --git a/modules/route/front/locale/en.yml b/modules/route/front/locale/en.yml new file mode 100644 index 000000000..0e5302b14 --- /dev/null +++ b/modules/route/front/locale/en.yml @@ -0,0 +1 @@ +Unlink zone: Unlink zone {{zoneName}} from agency {{agencyName}} \ No newline at end of file diff --git a/modules/route/front/locale/es.yml b/modules/route/front/locale/es.yml index 268bc4812..74ab2cd61 100644 --- a/modules/route/front/locale/es.yml +++ b/modules/route/front/locale/es.yml @@ -1,4 +1,5 @@ Routes: Rutas Search routes by id: Buscar rutas por identificador New route: Nueva ruta -route: ruta \ No newline at end of file +route: ruta +Unlink zone: Desvincular zona {{zoneName}} de agencia {{agencyName}} \ No newline at end of file diff --git a/modules/route/front/routes.json b/modules/route/front/routes.json index beb444abc..75e1fdc57 100644 --- a/modules/route/front/routes.json +++ b/modules/route/front/routes.json @@ -3,10 +3,11 @@ "name": "Routes", "icon": "icon-delivery", "validations" : true, - "dependencies": ["client", "worker", "ticket"], + "dependencies": ["client", "worker", "ticket", "supplier", "invoiceIn"], "menus": { "main": [ - {"state": "route.index", "icon": "icon-delivery"} + {"state": "route.index", "icon": "icon-delivery"}, + {"state": "route.agencyTerm.index", "icon": "icon-agency-term"} ], "card": [ {"state": "route.card.basicData", "icon": "settings"}, @@ -37,6 +38,26 @@ "state": "route.card", "abstract": true, "component": "vn-route-card" + }, { + "url": "/agency-term?q", + "abstract": true, + "state": "route.agencyTerm", + "component": "ui-view" + }, { + "url": "/index", + "state": "route.agencyTerm.index", + "component": "vn-agency-term-index", + "description": "Autonomous", + "acl": ["administrative"] + },{ + "url": "/createInvoiceIn?q", + "state": "route.agencyTerm.createInvoiceIn", + "component": "vn-agency-term-create-invoice-in", + "description": "File management", + "params": { + "route": "$ctrl.route" + }, + "acl": ["administrative"] }, { "url": "/summary", "state": "route.card.summary", @@ -71,4 +92,4 @@ "acl": ["delivery"] } ] -} \ No newline at end of file +} diff --git a/modules/route/front/ticket-popup/index.html b/modules/route/front/ticket-popup/index.html new file mode 100644 index 000000000..99e3364b8 --- /dev/null +++ b/modules/route/front/ticket-popup/index.html @@ -0,0 +1,84 @@ + + + + Tickets to add +
+ +
+
+
+ + + + + + + + + + + + Ticket + Client + Province + + + Population + + + PC + Address + Zone + + + + + + + + + + + {{::ticket.id}} + + + + + {{::ticket.nickname}} + + + {{::ticket.address.province.name}} + {{::ticket.address.city}} + {{::ticket.address.postalCode}} + {{::ticket.address.street}} + + {{::ticket.zone.name}} + + + + + + + + + + + + + + + diff --git a/modules/route/front/ticket-popup/index.js b/modules/route/front/ticket-popup/index.js new file mode 100644 index 000000000..8fd7b5d71 --- /dev/null +++ b/modules/route/front/ticket-popup/index.js @@ -0,0 +1,80 @@ +import ngModule from '../module'; +import Dialog from 'core/components/dialog'; +import './style.scss'; + +class Controller extends Dialog { + constructor($element, $, $transclude) { + super($element, $, $transclude); + } + + getSelectedTickets(tickets) { + const selectedTickets = []; + + if (tickets) { + for (let i = 0; i < tickets.length; i++) { + if (tickets[i].checked) + selectedTickets.push(tickets[i]); + } + } + return selectedTickets; + } + + updateVolume() { + let url = `Routes/${this.route.id}/updateVolume`; + this.$http.post(url).then(() => { + this.$.model.refresh(); + if (this.parentReload) + this.parentReload(); + }); + } + + setTicketsRoute() { + const tickets = this.getSelectedTickets(this.possibleTickets); + if (tickets.length === 0) return; + + const updates = []; + + for (let ticket of tickets) { + delete ticket.checked; + const update = { + where: {id: ticket.id}, + data: {routeFk: this.route.id} + }; + + updates.push(update); + } + + const data = {creates: [], updates: updates, deletes: []}; + return this.$http.post(`Tickets/crud`, data) + .then(() => { + this.vnApp.showSuccess(this.$t('Data saved!')); + this.updateVolume(); + this.hide(); + }); + } + + unlinkZone(ticket) { + const params = { + agencyModeId: this.route.agencyModeFk, + zoneId: ticket.zoneFk, + }; + + const query = `Routes/unlink`; + this.$http.post(query, params).then(() => { + this.vnApp.showSuccess(this.$t('Data saved!')); + this.$.model.refresh(); + this.hide(); + }); + } +} +Controller.$inject = ['$element', '$scope', '$transclude']; + +ngModule.vnComponent('vnRouteTicketPopup', { + slotTemplate: require('./index.html'), + controller: Controller, + bindings: { + route: '<', + model: ' { + let controller; + let $httpBackend; + let $scope; + + beforeEach(ngModule('route')); + + beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => { + $httpBackend = _$httpBackend_; + $scope = $rootScope.$new(); + const $element = angular.element(''); + const $transclude = { + $$boundTransclude: { + $$slots: [] + } + }; + controller = $componentController('vnRouteTicketPopup', {$element, $scope, $transclude}); + controller.route = {id: 1}; + controller.$.model = { + refresh: () => {}, + remove: () => {} + }; + controller.card = {reload: () => {}}; + })); + + describe('unlink()', () => { + it('should call the route unlink endpoint with the agency and zone ids', () => { + controller.$.model = {refresh: jest.fn()}; + jest.spyOn(controller.vnApp, 'showSuccess'); + jest.spyOn(controller, 'hide'); + + controller.route = { + agencyModeFk: 1 + }; + + const ticket = { + zoneFk: 2, + }; + const params = { + agencyModeId: controller.route.agencyModeFk, + zoneId: ticket.zoneFk, + }; + + $httpBackend.expectPOST(`Routes/unlink`, params).respond('ok'); + controller.unlinkZone(ticket); + $httpBackend.flush(); + + expect(controller.vnApp.showSuccess).toHaveBeenCalled(); + expect(controller.hide).toHaveBeenCalled(); + expect(controller.$.model.refresh).toHaveBeenCalledWith(); + }); + }); + + describe('setTicketsRoute()', () => { + it('should perform a POST query to add tickets to the route', () => { + controller.$.model = {refresh: jest.fn()}; + jest.spyOn(controller.vnApp, 'showSuccess'); + jest.spyOn(controller, 'hide'); + + controller.route = {id: 111}; + + controller.possibleTickets = [ + {id: 2, checked: false}, + {id: 3, checked: true}, + {id: 4, checked: false}, + {id: 5, checked: true}, + ]; + + $httpBackend.whenPOST(`Routes/${controller.route.id}/updateVolume`).respond(200); + $httpBackend.expectPOST('Tickets/crud').respond(); + controller.setTicketsRoute(); + $httpBackend.flush(); + + expect(controller.vnApp.showSuccess).toHaveBeenCalled(); + expect(controller.hide).toHaveBeenCalled(); + expect(controller.$.model.refresh).toHaveBeenCalledWith(); + }); + }); +}); diff --git a/modules/route/front/ticket-popup/style.scss b/modules/route/front/ticket-popup/style.scss new file mode 100644 index 000000000..77fa48f20 --- /dev/null +++ b/modules/route/front/ticket-popup/style.scss @@ -0,0 +1,5 @@ +@import "variables"; + +.dialog{ + padding: $float-spacing +} \ No newline at end of file diff --git a/modules/route/front/tickets/index.html b/modules/route/front/tickets/index.html index 7d515b67c..1f91276e7 100644 --- a/modules/route/front/tickets/index.html +++ b/modules/route/front/tickets/index.html @@ -11,7 +11,8 @@
- + +
+ + + + - - - + @@ -35,6 +45,7 @@ model="model"> + Order Street City @@ -45,6 +56,7 @@ Ticket + @@ -54,13 +66,20 @@ ng-model="ticket.checked"> + + + + + class="dense"> {{::ticket.street}} @@ -98,9 +117,18 @@ tabindex="-1"> - + + + + + +
@@ -115,75 +143,16 @@ question="Delete ticket from route?" on-accept="$ctrl.removeTicketFromRoute($index)"> - - - - - - Tickets to add -
- -
-
-
- - - - - - - - - - Ticket - Client - Province - - - Population - - - PC - Address - Warehouse - - - - - - - - - - - {{::ticket.id}} - - - - - {{::ticket.nickname}} - - - {{::ticket.address.province.name}} - {{::ticket.address.city}} - {{::ticket.address.postalCode}} - {{::ticket.address.street}} - {{::ticket.warehouse.name}} - - - - - -
+ + + + - + \ No newline at end of file diff --git a/modules/route/front/tickets/index.js b/modules/route/front/tickets/index.js index fd763e32f..e78d9b8b7 100644 --- a/modules/route/front/tickets/index.js +++ b/modules/route/front/tickets/index.js @@ -4,14 +4,6 @@ import './style.scss'; import UserError from 'core/lib/user-error'; class Controller extends Section { - get route() { - return this._route; - } - - set route(value) { - this._route = value; - } - get isChecked() { if (this.tickets) { for (let instance of this.tickets) @@ -28,15 +20,48 @@ class Controller extends Section { return highestPriority + 1; } + setHighestPriority(ticket) { + const highestPriority = this.getHighestPriority(); + if (highestPriority - 1 != ticket.priority) { + const params = {priority: highestPriority}; + const query = `Tickets/${ticket.id}/`; + this.$http.patch(query, params).then(res => { + ticket.priority = res.data.priority; + this.vnApp.showSuccess(this.$t('Data saved!')); + }); + } + } + setPriority(id, priority) { let params = {priority: priority}; let query = `Tickets/${id}/`; this.$http.patch(query, params).then(() => { this.vnApp.showSuccess(this.$t('Data saved!')); - this.$.model.refresh(); }); } + deletePriority() { + const lines = this.getSelectedItems(this.tickets); + + for (const line of lines) { + this.$http.patch(`Tickets/${line.id}/`, {priority: null}).then(() => { + this.vnApp.showSuccess(this.$t('Data saved!')); + this.$.model.refresh(); + }); + } + } + + setOrderedPriority(lines) { + let priority = 1; + for (const line of lines) { + this.$http.patch(`Tickets/${line.id}/`, {priority: priority}).then(() => { + this.vnApp.showSuccess(this.$t('Data saved!')); + this.$.model.refresh(); + }); + priority++; + } + } + getSelectedItems(items) { const selectedItems = []; @@ -65,8 +90,10 @@ class Controller extends Section { let lines = this.getSelectedItems(this.tickets); let url = 'http://gps.buscalia.com/usuario/localizar.aspx?bmi=true&addr='; - lines.forEach(line => { - addresses = addresses + '+to:' + line.postalCode + ' ' + line.city + ' ' + line.street; + lines.forEach((line, index) => { + const previusLine = lines[index - 1] ? lines[index - 1].street : null; + if (previusLine != line.street) + addresses = addresses + '+to:' + line.postalCode + ' ' + line.city + ' ' + line.street; }); window.open(url + addresses, '_blank'); @@ -104,38 +131,6 @@ class Controller extends Section { }); } - openPossibleTicketsDialog() { - this.$.possibleTicketsModel.refresh(); - this.$.possibleTicketsDialog.show(); - } - - setTicketsRoute() { - let tickets = this.getSelectedItems(this.possibleTickets); - if (tickets.length === 0) return; - - const updates = []; - - for (let ticket of tickets) { - delete ticket.checked; - const update = { - where: {id: ticket.id}, - data: {routeFk: this.route.id} - }; - - updates.push(update); - } - - const data = {creates: [], updates: updates, deletes: []}; - - return this.$http.post(`Tickets/crud`, data) - .then(() => { - this.$.model.data = this.$.model.data.concat(tickets); - this.vnApp.showSuccess(this.$t('Data saved!')); - this.updateVolume(); - this.$.possibleTicketsDialog.hide(); - }); - } - onDrop($event) { const ticketId = $event.dataTransfer.getData('Text'); diff --git a/modules/route/front/tickets/index.spec.js b/modules/route/front/tickets/index.spec.js index fbbe94360..f4a58154e 100644 --- a/modules/route/front/tickets/index.spec.js +++ b/modules/route/front/tickets/index.spec.js @@ -1,3 +1,4 @@ +/* eslint max-len: ["error", { "code": 150 }]*/ import './index'; describe('Route', () => { @@ -57,9 +58,23 @@ describe('Route', () => { }); }); + describe('setHighestPriority()', () => { + it('should set a ticket highest priority', () => { + jest.spyOn(controller.vnApp, 'showSuccess'); + controller.$.model.data = [{priority: 3}]; + const ticket = {id: 1, priority: 2}; + const res = {data: {priority: 4}}; + + $httpBackend.expectPATCH(`Tickets/${ticket.id}/`).respond(res); + controller.setHighestPriority(ticket); + $httpBackend.flush(); + + expect(controller.vnApp.showSuccess).toHaveBeenCalled(); + }); + }); + describe('setPriority()', () => { it('should set a ticket priority', () => { - jest.spyOn(controller.$.model, 'refresh'); jest.spyOn(controller.vnApp, 'showSuccess'); const ticketId = 1; const priority = 999; @@ -68,6 +83,35 @@ describe('Route', () => { controller.setPriority(ticketId, priority); $httpBackend.flush(); + expect(controller.vnApp.showSuccess).toHaveBeenCalled(); + }); + }); + + describe('deletePriority()', () => { + it('should delete priority of all tickets', () => { + jest.spyOn(controller.$.model, 'refresh'); + jest.spyOn(controller.vnApp, 'showSuccess'); + controller.tickets = [{id: 1, checked: true}]; + + $httpBackend.expectPATCH(`Tickets/${controller.tickets[0].id}/`).respond(); + controller.deletePriority(); + $httpBackend.flush(); + + expect(controller.vnApp.showSuccess).toHaveBeenCalled(); + expect(controller.$.model.refresh).toHaveBeenCalledWith(); + }); + }); + + describe('setOrderedPriority()', () => { + it('should set priority of all tickets starting by 1', () => { + jest.spyOn(controller.$.model, 'refresh'); + jest.spyOn(controller.vnApp, 'showSuccess'); + const tickets = [{id: 1, checked: true}]; + + $httpBackend.expectPATCH(`Tickets/${tickets[0].id}/`).respond(); + controller.setOrderedPriority(tickets); + $httpBackend.flush(); + expect(controller.vnApp.showSuccess).toHaveBeenCalled(); expect(controller.$.model.refresh).toHaveBeenCalledWith(); }); @@ -181,55 +225,6 @@ describe('Route', () => { }); }); - describe('openPossibleTicketsDialog()', () => { - it('should call both refresh and show methods in posible tickets model and dialog', () => { - controller.$.possibleTicketsModel = {refresh: () => {}}; - jest.spyOn(controller.$.possibleTicketsModel, 'refresh'); - controller.$.possibleTicketsDialog = {show: () => {}}; - jest.spyOn(controller.$.possibleTicketsDialog, 'show'); - - controller.openPossibleTicketsDialog(); - - expect(controller.$.possibleTicketsModel.refresh).toHaveBeenCalledWith(); - expect(controller.$.possibleTicketsDialog.show).toHaveBeenCalledWith(); - }); - }); - - describe('setTicketsRoute()', () => { - it('should perform a POST query to add tickets to the route', () => { - controller.$.possibleTicketsDialog = {hide: () => {}}; - jest.spyOn(controller.$.possibleTicketsDialog, 'hide'); - - controller.$params = {id: 1101}; - controller.$.model.data = [{id: 1, checked: false}]; - - const existingTicket = controller.$.model.data[0]; - - controller.route = {id: 111}; - - controller.possibleTickets = [ - {id: 2, checked: false}, - {id: 3, checked: true}, - {id: 4, checked: false}, - {id: 5, checked: true}, - ]; - - let expectedResult = [ - existingTicket, - {id: 3}, - {id: 5} - ]; - - $httpBackend.whenPOST(`Routes/${controller.$params.id}/updateVolume`).respond(200); - $httpBackend.expectPOST('Tickets/crud').respond(); - controller.setTicketsRoute(); - $httpBackend.flush(); - - expect(controller.$.model.data).toEqual(expectedResult); - expect(controller.$.possibleTicketsDialog.hide).toHaveBeenCalledWith(); - }); - }); - describe('onDrop()', () => { it('should call the insert method when dragging a ticket number', () => { jest.spyOn(controller, 'insert'); diff --git a/modules/route/front/tickets/locale/es.yml b/modules/route/front/tickets/locale/es.yml index c38d4115c..e7f483d2f 100644 --- a/modules/route/front/tickets/locale/es.yml +++ b/modules/route/front/tickets/locale/es.yml @@ -11,4 +11,8 @@ The selected ticket is not suitable for this route: El ticket seleccionado no es PC: CP The route's vehicle doesn't have a delivery point: El vehículo de la ruta no tiene un punto de entrega The route doesn't have a vehicle: La ruta no tiene un vehículo -Population: Población \ No newline at end of file +Population: Población +Unlink selected zone?: Desvincular zona seleccionada? +Delete priority: Borrar orden +Renumber all tickets in the order you see on the screen: Renumerar todos los tickets con el orden que ves por pantalla +Assign highest priority: Asignar máxima prioridad \ No newline at end of file diff --git a/modules/shelving/back/methods/shelving/getSummary.js b/modules/shelving/back/methods/shelving/getSummary.js new file mode 100644 index 000000000..da357c7bf --- /dev/null +++ b/modules/shelving/back/methods/shelving/getSummary.js @@ -0,0 +1,52 @@ +module.exports = Self => { + Self.remoteMethod('getSummary', { + description: 'Returns the shelving summary', + accessType: 'READ', + accepts: { + arg: 'code', + type: 'string', + required: true, + description: 'The shelving code', + http: {source: 'path'} + }, + returns: { + type: 'object', + root: true + }, + http: { + path: `/:code/getSummary`, + verb: 'GET' + } + }); + Self.getSummary = async code => { + let filter = { + where: {code: code}, + fields: [ + 'code', + 'parkingFk', + 'priority', + 'userFk', + 'isRecyclable' + ], + include: [ + { + relation: 'parking' + }, + { + relation: 'worker', + scope: { + fields: ['id', 'userFk'], + include: { + relation: 'user', + scope: { + fields: ['id', 'nickname'] + } + } + } + } + ] + }; + + return Self.app.models.Shelving.findOne(filter); + }; +}; diff --git a/modules/shelving/back/model-config.json b/modules/shelving/back/model-config.json new file mode 100644 index 000000000..c26c39d38 --- /dev/null +++ b/modules/shelving/back/model-config.json @@ -0,0 +1,14 @@ +{ + "Parking": { + "dataSource": "vn" + }, + "Shelving": { + "dataSource": "vn" + }, + "ShelvingLog": { + "dataSource": "vn" + }, + "Sector": { + "dataSource": "vn" + } +} \ No newline at end of file diff --git a/modules/shelving/back/models/parking.json b/modules/shelving/back/models/parking.json new file mode 100644 index 000000000..7efcf72d3 --- /dev/null +++ b/modules/shelving/back/models/parking.json @@ -0,0 +1,33 @@ +{ + "name": "Parking", + "base": "VnModel", + "options": { + "mysql": { + "table": "parking" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "column": { + "type": "string", + "required": true + }, + "row": { + "type": "string", + "required": true + }, + "sectorFk": { + "type": "number" + }, + "code": { + "type": "string" + }, + "pickingOrder": { + "type": "number" + } + } +} diff --git a/modules/shelving/back/models/sector.json b/modules/shelving/back/models/sector.json new file mode 100644 index 000000000..0dc502cd0 --- /dev/null +++ b/modules/shelving/back/models/sector.json @@ -0,0 +1,72 @@ +{ + "name": "Sector", + "base": "VnModel", + "options": { + "mysql": { + "table": "sector" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "description": { + "type": "string", + "required": true + }, + "warehouseFk": { + "type": "number", + "required": true + }, + "isPreviousPreparedByPacking": { + "type": "boolean", + "required": true + }, + "code": { + "type": "string", + "required": false + }, + "isPreviousPrepared": { + "type": "boolean", + "required": true + }, + "isPackagingArea": { + "type": "boolean", + "required": true + }, + "reportFk": { + "type": "number", + "required": false + }, + "sonFk": { + "type": "number", + "required": false + }, + "isMain": { + "type": "boolean", + "required": true + }, + "itemPackingTypeFk": { + "type": "string", + "required": false + }, + "workerFk": { + "type": "number", + "required": false + }, + "printerFk": { + "type": "number", + "required": false + }, + "isHideForPickers": { + "type": "boolean", + "required": true + }, + "isReserve": { + "type": "boolean", + "required": true + } + } +} \ No newline at end of file diff --git a/modules/shelving/back/models/shelving-log.json b/modules/shelving/back/models/shelving-log.json new file mode 100644 index 000000000..a2267394e --- /dev/null +++ b/modules/shelving/back/models/shelving-log.json @@ -0,0 +1,58 @@ +{ + "name": "ShelvingLog", + "base": "VnModel", + "options": { + "mysql": { + "table": "shelvingLog" + } + }, + "properties": { + "id": { + "id": true, + "type": "number", + "forceId": false + }, + "originFk": { + "type": "number", + "required": true + }, + "userFk": { + "type": "number" + }, + "action": { + "type": "string", + "required": true + }, + "changedModel": { + "type": "string" + }, + "oldInstance": { + "type": "object" + }, + "newInstance": { + "type": "object" + }, + "creationDate": { + "type": "date" + }, + "changedModelId": { + "type": "number" + }, + "changedModelValue": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "relations": { + "user": { + "type": "belongsTo", + "model": "Account", + "foreignKey": "userFk" + } + }, + "scope": { + "order": ["creationDate DESC", "id DESC"] + } +} diff --git a/modules/shelving/back/models/shelving.js b/modules/shelving/back/models/shelving.js new file mode 100644 index 000000000..3e27f5863 --- /dev/null +++ b/modules/shelving/back/models/shelving.js @@ -0,0 +1,3 @@ +module.exports = Self => { + require('../methods/shelving/getSummary')(Self); +}; diff --git a/modules/shelving/back/models/shelving.json b/modules/shelving/back/models/shelving.json new file mode 100644 index 000000000..508ac428f --- /dev/null +++ b/modules/shelving/back/models/shelving.json @@ -0,0 +1,51 @@ +{ + "name": "Shelving", + "base": "Loggable", + "log": { + "model": "ShelvingLog", + "showField": "id" + }, + "options": { + "mysql": { + "table": "shelving" + } + }, + "properties": { + "id": { + "type": "number", + "id": true, + "description": "Identifier" + }, + "code": { + "type": "string", + "required": true + }, + "parkingFk": { + "type": "number" + }, + "isPrinted": { + "type": "boolean" + }, + "priority": { + "type": "number" + }, + "userFk": { + "type": "number" + }, + "isRecyclable": { + "type": "boolean" + } + }, + "relations": { + "parking": { + "type": "belongsTo", + "model": "Parking", + "foreignKey": "parkingFk" + }, + "worker": { + "type": "belongsTo", + "model": "Worker", + "foreignKey": "userFk" + } + } +} diff --git a/modules/shelving/front/basic-data/index.html b/modules/shelving/front/basic-data/index.html new file mode 100644 index 000000000..68d61e169 --- /dev/null +++ b/modules/shelving/front/basic-data/index.html @@ -0,0 +1,52 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/modules/shelving/front/basic-data/index.js b/modules/shelving/front/basic-data/index.js new file mode 100644 index 000000000..e17c9feee --- /dev/null +++ b/modules/shelving/front/basic-data/index.js @@ -0,0 +1,10 @@ +import ngModule from '../module'; +import Section from 'salix/components/section'; + +ngModule.vnComponent('vnShelvingBasicData', { + template: require('./index.html'), + controller: Section, + bindings: { + shelving: '<' + } +}); diff --git a/modules/shelving/front/card/index.html b/modules/shelving/front/card/index.html new file mode 100644 index 000000000..c83afc288 --- /dev/null +++ b/modules/shelving/front/card/index.html @@ -0,0 +1,8 @@ + + + + + + diff --git a/modules/shelving/front/card/index.js b/modules/shelving/front/card/index.js new file mode 100644 index 000000000..5e2ea9b12 --- /dev/null +++ b/modules/shelving/front/card/index.js @@ -0,0 +1,29 @@ +import ngModule from '../module'; +import ModuleCard from 'salix/components/module-card'; + +class Controller extends ModuleCard { + reload() { + const filter = { + include: [ + {relation: 'worker', + scope: { + fields: ['userFk'], + include: { + relation: 'user', + scope: { + fields: ['nickname'] + } + } + }}, + {relation: 'parking'} + ] + }; + this.$http.get(`Shelvings/${this.$params.id}`, {filter}) + .then(res => this.shelving = res.data); + } +} + +ngModule.vnComponent('vnShelvingCard', { + template: require('./index.html'), + controller: Controller +}); diff --git a/modules/shelving/front/card/index.spec.js b/modules/shelving/front/card/index.spec.js new file mode 100644 index 000000000..85b1bd269 --- /dev/null +++ b/modules/shelving/front/card/index.spec.js @@ -0,0 +1,26 @@ +import './index'; + +describe('component vnShelvingCard', () => { + let controller; + let $httpBackend; + const data = {id: 1, code: 'AAA'}; + + beforeEach(ngModule('shelving')); + + beforeEach(inject(($componentController, _$httpBackend_, $stateParams) => { + $httpBackend = _$httpBackend_; + + let $element = angular.element('
'); + controller = $componentController('vnShelvingCard', {$element}); + + $stateParams.id = data.id; + $httpBackend.whenRoute('GET', 'Shelvings/:id').respond(data); + })); + + it('should reload the controller data', () => { + controller.reload(); + $httpBackend.flush(); + + expect(controller.shelving).toEqual(data); + }); +}); diff --git a/modules/shelving/front/create/index.html b/modules/shelving/front/create/index.html new file mode 100644 index 000000000..edb3a7d3b --- /dev/null +++ b/modules/shelving/front/create/index.html @@ -0,0 +1,51 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/modules/shelving/front/create/index.js b/modules/shelving/front/create/index.js new file mode 100644 index 000000000..bb0e441eb --- /dev/null +++ b/modules/shelving/front/create/index.js @@ -0,0 +1,15 @@ +import ngModule from '../module'; +import Section from 'salix/components/section'; + +export default class Controller extends Section { + onSubmit() { + return this.$.watcher.submit().then(res => + this.$state.go('shelving.card.basicData', {id: res.data.id}) + ); + } +} + +ngModule.vnComponent('vnShelvingCreate', { + template: require('./index.html'), + controller: Controller +}); diff --git a/modules/shelving/front/create/index.spec.js b/modules/shelving/front/create/index.spec.js new file mode 100644 index 000000000..0bdde9145 --- /dev/null +++ b/modules/shelving/front/create/index.spec.js @@ -0,0 +1,38 @@ +import './index'; + +describe('Shelving', () => { + describe('Component vnShelvingCreate', () => { + let $scope; + let $state; + let controller; + + beforeEach(ngModule('shelving')); + + beforeEach(inject(($componentController, $rootScope, _$state_) => { + $scope = $rootScope.$new(); + $state = _$state_; + $scope.watcher = { + submit: () => { + return { + then: callback => { + callback({data: {id: 1}}); + } + }; + } + }; + const $element = angular.element(''); + controller = $componentController('vnShelvingCreate', {$element, $scope}); + controller.$params = {}; + })); + + describe('onSubmit()', () => { + it(`should redirect to basic data by calling the $state.go function`, () => { + jest.spyOn(controller.$state, 'go'); + + controller.onSubmit(); + + expect(controller.$state.go).toHaveBeenCalledWith('shelving.card.basicData', {id: 1}); + }); + }); + }); +}); diff --git a/modules/shelving/front/descriptor/index.html b/modules/shelving/front/descriptor/index.html new file mode 100644 index 000000000..1344bb52a --- /dev/null +++ b/modules/shelving/front/descriptor/index.html @@ -0,0 +1,45 @@ + + + + Delete + + + +
+ + + + + + + {{::$ctrl.shelving.worker.user.nickname}} + + +
+
+
+ + + + + + + \ No newline at end of file diff --git a/modules/shelving/front/descriptor/index.js b/modules/shelving/front/descriptor/index.js new file mode 100644 index 000000000..931dbb6dc --- /dev/null +++ b/modules/shelving/front/descriptor/index.js @@ -0,0 +1,26 @@ +import ngModule from '../module'; +import Descriptor from 'salix/components/descriptor'; + +class Controller extends Descriptor { + get shelving() { + return this.entity; + } + + set shelving(value) { + this.entity = value; + } + + onDelete() { + return this.$http.delete(`Shelvings/${this.shelving.id}`) + .then(() => this.$state.go('shelving.index')) + .then(() => this.vnApp.showSuccess(this.$t('Shelving removed'))); + } +} + +ngModule.vnComponent('vnShelvingDescriptor', { + template: require('./index.html'), + controller: Controller, + bindings: { + shelving: '<' + } +}); diff --git a/modules/shelving/front/descriptor/index.spec.js b/modules/shelving/front/descriptor/index.spec.js new file mode 100644 index 000000000..3ee33580b --- /dev/null +++ b/modules/shelving/front/descriptor/index.spec.js @@ -0,0 +1,29 @@ +import './index.js'; + +describe('component vnShelvingDescriptor', () => { + let $httpBackend; + let controller; + + const shelving = {id: 1, code: 'AA6'}; + + beforeEach(ngModule('shelving')); + + beforeEach(inject(($componentController, _$httpBackend_, _$httpParamSerializer_) => { + $httpBackend = _$httpBackend_; + controller = $componentController('vnShelvingDescriptor', {$element: null}, {shelving}); + jest.spyOn(controller.vnApp, 'showSuccess'); + })); + + describe('onDelete()', () => { + it('should delete entity and go to index', () => { + controller.$state.go = jest.fn(); + + $httpBackend.expectDELETE('Shelvings/1').respond(); + controller.onDelete(); + $httpBackend.flush(); + + expect(controller.$state.go).toHaveBeenCalledWith('shelving.index'); + expect(controller.vnApp.showSuccess).toHaveBeenCalled(); + }); + }); +}); diff --git a/modules/shelving/front/index.js b/modules/shelving/front/index.js new file mode 100644 index 000000000..2ad9bc1b9 --- /dev/null +++ b/modules/shelving/front/index.js @@ -0,0 +1,11 @@ +export * from './module'; + +import './basic-data'; +import './card'; +import './create'; +import './descriptor'; +import './index/'; +import './main'; +import './search-panel'; +import './summary'; +import './log'; diff --git a/modules/shelving/front/index/index.html b/modules/shelving/front/index/index.html new file mode 100644 index 000000000..1532abd42 --- /dev/null +++ b/modules/shelving/front/index/index.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/shelving/front/index/index.js b/modules/shelving/front/index/index.js new file mode 100644 index 000000000..04d8ea9cd --- /dev/null +++ b/modules/shelving/front/index/index.js @@ -0,0 +1,14 @@ +import ngModule from '../module'; +import Section from 'salix/components/section'; + +export default class Controller extends Section { + preview(shelving) { + this.selectedShelving = shelving; + this.$.summary.show(); + } +} + +ngModule.vnComponent('vnShelvingIndex', { + template: require('./index.html'), + controller: Controller +}); diff --git a/modules/shelving/front/index/index.spec.js b/modules/shelving/front/index/index.spec.js new file mode 100644 index 000000000..aad79fb0e --- /dev/null +++ b/modules/shelving/front/index/index.spec.js @@ -0,0 +1,39 @@ +import './index.js'; +describe('Component vnShelvingIndex', () => { + let controller; + let $window; + let shelvings = [{ + id: 1, + code: 'AAA' + }, { + id: 2, + code: 'AA1' + }, { + id: 3, + code: 'AA2' + }]; + + beforeEach(ngModule('shelving')); + + beforeEach(inject(($componentController, _$window_) => { + $window = _$window_; + const $element = angular.element(''); + controller = $componentController('vnShelvingIndex', {$element}); + })); + + describe('preview()', () => { + it('should show the dialog summary', () => { + controller.$.summary = {show: () => {}}; + jest.spyOn(controller.$.summary, 'show'); + + let event = new MouseEvent('click', { + view: $window, + bubbles: true, + cancelable: true + }); + controller.preview(event, shelvings[0]); + + expect(controller.$.summary.show).toHaveBeenCalledWith(); + }); + }); +}); diff --git a/modules/shelving/front/index/locale/es.yml b/modules/shelving/front/index/locale/es.yml new file mode 100644 index 000000000..4d30f4cee --- /dev/null +++ b/modules/shelving/front/index/locale/es.yml @@ -0,0 +1,2 @@ +Parking: Parking +Priority: Prioridad \ No newline at end of file diff --git a/modules/shelving/front/log/index.html b/modules/shelving/front/log/index.html new file mode 100644 index 000000000..8f0e6851c --- /dev/null +++ b/modules/shelving/front/log/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/modules/shelving/front/log/index.js b/modules/shelving/front/log/index.js new file mode 100644 index 000000000..588e0995a --- /dev/null +++ b/modules/shelving/front/log/index.js @@ -0,0 +1,7 @@ +import ngModule from '../module'; +import Section from 'salix/components/section'; + +ngModule.vnComponent('vnShelvingLog', { + template: require('./index.html'), + controller: Section, +}); diff --git a/modules/shelving/front/log/locale/es.yml b/modules/shelving/front/log/locale/es.yml new file mode 100644 index 000000000..c572b78d1 --- /dev/null +++ b/modules/shelving/front/log/locale/es.yml @@ -0,0 +1 @@ +Changed by: Cambiado por \ No newline at end of file diff --git a/modules/shelving/front/main/index.html b/modules/shelving/front/main/index.html new file mode 100644 index 000000000..3f3cc718b --- /dev/null +++ b/modules/shelving/front/main/index.html @@ -0,0 +1,19 @@ + + + + + + + + + + \ No newline at end of file diff --git a/modules/shelving/front/main/index.js b/modules/shelving/front/main/index.js new file mode 100644 index 000000000..96689fbd9 --- /dev/null +++ b/modules/shelving/front/main/index.js @@ -0,0 +1,29 @@ +import ngModule from '../module'; +import ModuleMain from 'salix/components/module-main'; + +export default class Shelving extends ModuleMain { + constructor($element, $) { + super($element, $); + this.filter = { + include: [ + {relation: 'parking'} + ], + }; + } + + exprBuilder(param, value) { + switch (param) { + case 'search': + return {code: {like: `%${value}%`}}; + case 'parkingFk': + case 'userFk': + case 'isRecyclable': + return {[param]: value}; + } + } +} + +ngModule.vnComponent('vnShelving', { + controller: Shelving, + template: require('./index.html') +}); diff --git a/modules/shelving/front/main/index.spec.js b/modules/shelving/front/main/index.spec.js new file mode 100644 index 000000000..dcfa912bc --- /dev/null +++ b/modules/shelving/front/main/index.spec.js @@ -0,0 +1,19 @@ +import './index'; + +describe('component vnShelving', () => { + let controller; + + beforeEach(ngModule('shelving')); + + beforeEach(inject($componentController => { + controller = $componentController('vnShelving', {$element: null}); + })); + + describe('exprBuilder()', () => { + it('should search by code', () => { + let expr = controller.exprBuilder('search', 'UXN'); + + expect(expr).toEqual({code: {like: '%UXN%'}},); + }); + }); +}); diff --git a/modules/shelving/front/main/locale/es.yml b/modules/shelving/front/main/locale/es.yml new file mode 100644 index 000000000..4c39469ce --- /dev/null +++ b/modules/shelving/front/main/locale/es.yml @@ -0,0 +1 @@ +Search shelving by code, parking or worker: Busca carros por código, parking o trabajador \ No newline at end of file diff --git a/modules/shelving/front/module.js b/modules/shelving/front/module.js new file mode 100644 index 000000000..8ba261ead --- /dev/null +++ b/modules/shelving/front/module.js @@ -0,0 +1,3 @@ +import {ng} from 'core/vendor'; + +export default ng.module('shelving', ['salix']); diff --git a/modules/shelving/front/routes.json b/modules/shelving/front/routes.json new file mode 100644 index 000000000..09a8e389b --- /dev/null +++ b/modules/shelving/front/routes.json @@ -0,0 +1,67 @@ +{ + "module": "shelving", + "name": "Shelvings", + "icon" : "contact_support", + "dependencies": ["worker"], + "validations" : true, + "menus": { + "main": [ + {"state": "shelving.index", "icon": "contact_support"} + ], + "card": [ + {"state": "shelving.card.basicData", "icon": "settings"}, + {"state": "shelving.card.log", "icon": "history"} + ] + }, + "routes": [ + { + "url": "/shelving", + "state": "shelving", + "abstract": true, + "component": "vn-shelving", + "description": "Shelvings" + }, + { + "url": "/index?q", + "state": "shelving.index", + "component": "vn-shelving-index", + "description": "Shelvings" + }, + { + "url": "/create", + "state": "shelving.create", + "component": "vn-shelving-create", + "description": "New shelving" + }, + { + "url": "/:id", + "state": "shelving.card", + "abstract": true, + "component": "vn-shelving-card" + }, + { + "url": "/summary", + "state": "shelving.card.summary", + "component": "vn-shelving-summary", + "description": "Summary", + "params": { + "shelving": "$ctrl.shelving" + } + }, + { + "url": "/basic-data", + "state": "shelving.card.basicData", + "component": "vn-shelving-basic-data", + "description": "Basic data", + "params": { + "shelving": "$ctrl.shelving" + } + }, + { + "url" : "/log", + "state": "shelving.card.log", + "component": "vn-shelving-log", + "description": "Log" + } + ] +} \ No newline at end of file diff --git a/modules/shelving/front/search-panel/index.html b/modules/shelving/front/search-panel/index.html new file mode 100644 index 000000000..b7ca068a5 --- /dev/null +++ b/modules/shelving/front/search-panel/index.html @@ -0,0 +1,43 @@ +
+
+ + + + + + + + + + + + + + + + + +
+
\ No newline at end of file diff --git a/modules/shelving/front/search-panel/index.js b/modules/shelving/front/search-panel/index.js new file mode 100644 index 000000000..51b81538b --- /dev/null +++ b/modules/shelving/front/search-panel/index.js @@ -0,0 +1,7 @@ +import ngModule from '../module'; +import SearchPanel from 'core/components/searchbar/search-panel'; + +ngModule.vnComponent('vnShelvingSearchPanel', { + template: require('./index.html'), + controller: SearchPanel +}); diff --git a/modules/shelving/front/search-panel/locale/es.yml b/modules/shelving/front/search-panel/locale/es.yml new file mode 100644 index 000000000..bd19b1b33 --- /dev/null +++ b/modules/shelving/front/search-panel/locale/es.yml @@ -0,0 +1 @@ +Search shelvings by code: Busca carros por código \ No newline at end of file diff --git a/modules/shelving/front/summary/index.html b/modules/shelving/front/summary/index.html new file mode 100644 index 000000000..61e44d278 --- /dev/null +++ b/modules/shelving/front/summary/index.html @@ -0,0 +1,51 @@ + +
+ + + + {{::$ctrl.summary.code}} +
+ + +

+ + Basic data + +

+ + + + + + + + + + {{$ctrl.summary.worker.user.nickname}} + + + + + +
+
+
+ + \ No newline at end of file diff --git a/modules/shelving/front/summary/index.js b/modules/shelving/front/summary/index.js new file mode 100644 index 000000000..10a905f1d --- /dev/null +++ b/modules/shelving/front/summary/index.js @@ -0,0 +1,41 @@ +import ngModule from '../module'; +import Summary from 'salix/components/summary'; +import './style.scss'; + +class Controller extends Summary { + set shelving(value) { + this._shelving = value; + this.summary = null; + if (!value) return; + + const filter = { + include: [ + {relation: 'worker', + scope: { + fields: ['userFk'], + include: { + relation: 'user', + scope: { + fields: ['nickname'] + } + } + }}, + {relation: 'parking'} + ] + }; + this.$http.get(`Shelvings/${value.id}`, {filter}) + .then(res => this.summary = res.data); + } + + get shelving() { + return this._shelving; + } +} + +ngModule.vnComponent('vnShelvingSummary', { + template: require('./index.html'), + controller: Controller, + bindings: { + shelving: '<' + } +}); diff --git a/modules/shelving/front/summary/locale/es.yml b/modules/shelving/front/summary/locale/es.yml new file mode 100644 index 000000000..d5d14d52a --- /dev/null +++ b/modules/shelving/front/summary/locale/es.yml @@ -0,0 +1,5 @@ +Code: Código +Parking: Parking +Priority: Prioridad +Worker: Trabajador +Recyclable: Reciclable \ No newline at end of file diff --git a/modules/shelving/front/summary/style.scss b/modules/shelving/front/summary/style.scss new file mode 100644 index 000000000..1eb6b2323 --- /dev/null +++ b/modules/shelving/front/summary/style.scss @@ -0,0 +1,7 @@ +@import "variables"; + +vn-client-summary { + .alert span { + color: $color-alert + } +} \ No newline at end of file diff --git a/modules/supplier/back/methods/supplier/campaignMetricsEmail.js b/modules/supplier/back/methods/supplier/campaignMetricsEmail.js new file mode 100644 index 000000000..4a2c843b8 --- /dev/null +++ b/modules/supplier/back/methods/supplier/campaignMetricsEmail.js @@ -0,0 +1,68 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('campaignMetricsEmail', { + description: 'Sends the campaign metrics email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id to send to the recipient preferred language', + required: false + }, + { + arg: 'from', + type: 'string', + required: true + }, + { + arg: 'to', + type: 'string', + required: true + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/:id/campaign-metrics-email', + verb: 'POST' + } + }); + + Self.campaignMetricsEmail = async ctx => { + const args = Object.assign({}, ctx.args); + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const email = new Email('supplier-campaign-metrics', params); + + return email.send(); + }; +}; diff --git a/modules/supplier/back/methods/supplier/campaignMetricsPdf.js b/modules/supplier/back/methods/supplier/campaignMetricsPdf.js new file mode 100644 index 000000000..7bd65ffcb --- /dev/null +++ b/modules/supplier/back/methods/supplier/campaignMetricsPdf.js @@ -0,0 +1,65 @@ +const {Report} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('campaignMetricsPdf', { + description: 'Returns the campaign metrics pdf', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + }, + { + arg: 'from', + type: 'string', + required: true + }, + { + arg: 'to', + type: 'string', + required: true + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/campaign-metrics-pdf', + verb: 'GET' + } + }); + + Self.campaignMetricsPdf = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const report = new Report('supplier-campaign-metrics', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="doc-${id}.pdf"`]; + }; +}; diff --git a/modules/supplier/back/methods/supplier/filter.js b/modules/supplier/back/methods/supplier/filter.js index 3500afacd..0b473f7df 100644 --- a/modules/supplier/back/methods/supplier/filter.js +++ b/modules/supplier/back/methods/supplier/filter.js @@ -95,8 +95,8 @@ module.exports = Self => { pm.name AS payMethod, pd.payDem AS payDem FROM vn.supplier s - JOIN vn.payMethod pm ON pm.id = s.payMethodFk - JOIN vn.payDem pd ON pd.id = s.payDemFk` + LEFT JOIN vn.payMethod pm ON pm.id = s.payMethodFk + LEFT JOIN vn.payDem pd ON pd.id = s.payDemFk` ); stmt.merge(conn.makeSuffix(filter)); diff --git a/modules/supplier/back/methods/supplier/freeAgencies.js b/modules/supplier/back/methods/supplier/freeAgencies.js new file mode 100644 index 000000000..48c027e4e --- /dev/null +++ b/modules/supplier/back/methods/supplier/freeAgencies.js @@ -0,0 +1,42 @@ +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; +const mergeFilters = require('vn-loopback/util/filter').mergeFilters; + +module.exports = Self => { + Self.remoteMethod('freeAgencies', { + description: 'Returns a list of agencies without a supplier assigned', + 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: `/freeAgencies`, + verb: 'GET' + } + }); + + Self.freeAgencies = async(filter, options) => { + const conn = Self.dataSource.connector; + const where = {'sat.supplierFk': null}; + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + filter = mergeFilters(filter, {where}); + + let stmt = new ParameterizedSQL( + `SELECT a.name, a.id + FROM agency a + LEFT JOIN supplierAgencyTerm sat ON sat.agencyFk = a.id`, + null, myOptions); + + stmt.merge(conn.makeSuffix(filter)); + + return conn.executeStmt(stmt); + }; +}; diff --git a/modules/supplier/back/methods/supplier/getSummary.js b/modules/supplier/back/methods/supplier/getSummary.js index 67f5267b6..bf3fa56f5 100644 --- a/modules/supplier/back/methods/supplier/getSummary.js +++ b/modules/supplier/back/methods/supplier/getSummary.js @@ -41,7 +41,9 @@ module.exports = Self => { 'sageTaxTypeFk', 'sageTransactionTypeFk', 'sageWithholdingFk', - 'workerFk' + 'workerFk', + 'supplierActivityFk', + 'healthRegister' ], include: [ { @@ -98,14 +100,15 @@ module.exports = Self => { } } }, + { + relation: 'supplierActivity', + scope: { + fields: ['code', 'name'] + } + } ] }; - let supplier = await Self.app.models.Supplier.findOne(filter); - const farmerCode = 2; - if (supplier.sageWithholdingFk == farmerCode) - supplier.isFarmer = true; - - return supplier; + return Self.app.models.Supplier.findOne(filter); }; }; diff --git a/modules/supplier/back/methods/supplier/newSupplier.js b/modules/supplier/back/methods/supplier/newSupplier.js new file mode 100644 index 000000000..f4059a259 --- /dev/null +++ b/modules/supplier/back/methods/supplier/newSupplier.js @@ -0,0 +1,45 @@ +module.exports = Self => { + Self.remoteMethod('newSupplier', { + description: 'Creates a new supplier and returns it', + accessType: 'WRITE', + accepts: [{ + arg: 'params', + type: 'object', + http: {source: 'body'} + }], + returns: { + type: 'string', + root: true + }, + http: { + path: `/newSupplier`, + verb: 'POST' + } + }); + + Self.newSupplier = async params => { + const models = Self.app.models; + const myOptions = {}; + + if (typeof(params) == 'string') + params = JSON.parse(params); + + params.nickname = params.name; + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + const supplier = await models.Supplier.create(params, myOptions); + + if (tx) await tx.commit(); + + return supplier; + } catch (e) { + if (tx) await tx.rollback(); + return params; + } + }; +}; diff --git a/modules/supplier/back/methods/supplier/specs/filter.spec.js b/modules/supplier/back/methods/supplier/specs/filter.spec.js index 1f74b10ff..2620bb687 100644 --- a/modules/supplier/back/methods/supplier/specs/filter.spec.js +++ b/modules/supplier/back/methods/supplier/specs/filter.spec.js @@ -10,7 +10,7 @@ describe('Supplier filter()', () => { let result = await app.models.Supplier.filter(ctx); - expect(result.length).toEqual(1); + expect(result.length).toBeGreaterThanOrEqual(1); expect(result[0].id).toEqual(1); }); diff --git a/modules/supplier/back/methods/supplier/specs/getSummary.spec.js b/modules/supplier/back/methods/supplier/specs/getSummary.spec.js index 21e56882f..30713f517 100644 --- a/modules/supplier/back/methods/supplier/specs/getSummary.spec.js +++ b/modules/supplier/back/methods/supplier/specs/getSummary.spec.js @@ -25,12 +25,4 @@ describe('Supplier getSummary()', () => { expect(payMethod.name).toEqual('PayMethod one'); }); - - it(`should get if supplier is farmer by sageWithholdingFk`, async() => { - const supplier = await app.models.Supplier.findById(2); - const supplierSummary = await app.models.Supplier.getSummary(2); - - expect(supplier.isFarmer).toBeUndefined(); - expect(supplierSummary.isFarmer).toEqual(true); - }); }); diff --git a/modules/supplier/back/methods/supplier/specs/newSupplier.spec.js b/modules/supplier/back/methods/supplier/specs/newSupplier.spec.js new file mode 100644 index 000000000..8f22a4f20 --- /dev/null +++ b/modules/supplier/back/methods/supplier/specs/newSupplier.spec.js @@ -0,0 +1,30 @@ +const app = require('vn-loopback/server/server'); +const LoopBackContext = require('loopback-context'); + +describe('Supplier newSupplier()', () => { + const newSupp = { + name: 'TestSupplier-1' + }; + const administrativeId = 5; + + it('should create a new supplier containing only the name', async() => { + const activeCtx = { + accessToken: {userId: administrativeId}, + }; + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + + let result = await app.models.Supplier.newSupplier(JSON.stringify(newSupp)); + + expect(result.name).toEqual('TestSupplier-1'); + expect(result.id).toEqual(443); + + const createdSupplier = await app.models.Supplier.findById(result.id); + + expect(createdSupplier.id).toEqual(result.id); + expect(createdSupplier.name).toEqual(result.name); + expect(createdSupplier.payDemFk).toEqual(7); + expect(createdSupplier.nickname).toEqual(result.name); + }); +}); diff --git a/modules/supplier/back/methods/supplier/specs/updateFiscalData.spec.js b/modules/supplier/back/methods/supplier/specs/updateFiscalData.spec.js index 0eec54926..a47e547d1 100644 --- a/modules/supplier/back/methods/supplier/specs/updateFiscalData.spec.js +++ b/modules/supplier/back/methods/supplier/specs/updateFiscalData.spec.js @@ -66,6 +66,8 @@ describe('Supplier updateFiscalData', () => { city: 'VALENCIA', provinceFk: 2, countryFk: 1, + supplierActivityFk: 'animals', + healthRegister: '400664487H' }; const result = await app.models.Supplier.updateFiscalData(ctx, supplierId); @@ -80,6 +82,8 @@ describe('Supplier updateFiscalData', () => { expect(result.city).toEqual('VALENCIA'); expect(result.provinceFk).toEqual(2); expect(result.countryFk).toEqual(1); + expect(result.supplierActivityFk).toEqual('animals'); + expect(result.healthRegister).toEqual('400664487H'); // Restores ctx.args = defaultData; diff --git a/modules/supplier/back/methods/supplier/updateFiscalData.js b/modules/supplier/back/methods/supplier/updateFiscalData.js index daa602af0..4604b3f91 100644 --- a/modules/supplier/back/methods/supplier/updateFiscalData.js +++ b/modules/supplier/back/methods/supplier/updateFiscalData.js @@ -56,6 +56,14 @@ module.exports = Self => { { arg: 'countryFk', type: 'any' + }, + { + arg: 'supplierActivityFk', + type: 'string' + }, + { + arg: 'healthRegister', + type: 'string' }], returns: { arg: 'res', diff --git a/modules/supplier/back/model-config.json b/modules/supplier/back/model-config.json index 7febc17b4..dbc387ed2 100644 --- a/modules/supplier/back/model-config.json +++ b/modules/supplier/back/model-config.json @@ -11,6 +11,12 @@ "SupplierAccount": { "dataSource": "vn" }, + "SupplierActivity": { + "dataSource": "vn" + }, + "SupplierAgencyTerm": { + "dataSource": "vn" + }, "SupplierLog": { "dataSource": "vn" }, diff --git a/modules/supplier/back/models/pay-dem.json b/modules/supplier/back/models/pay-dem.json index f214f3e3a..1253c751c 100644 --- a/modules/supplier/back/models/pay-dem.json +++ b/modules/supplier/back/models/pay-dem.json @@ -8,12 +8,12 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "payDem": { - "type": "Number" + "type": "number" } } } diff --git a/modules/supplier/back/models/specs/supplier-account.spec.js b/modules/supplier/back/models/specs/supplier-account.spec.js index f56e70a89..083c681ac 100644 --- a/modules/supplier/back/models/specs/supplier-account.spec.js +++ b/modules/supplier/back/models/specs/supplier-account.spec.js @@ -1,16 +1,28 @@ -const app = require('vn-loopback/server/server'); +const models = require('vn-loopback/server/server').models; const LoopBackContext = require('loopback-context'); describe('loopback model Supplier-account', () => { describe('create', () => { const supplierId = 1; const bankEntityId = 2100; + const activeCtx = { + accessToken: {userId: 5}, + http: { + req: { + headers: {origin: 'http://localhost'} + } + } + }; + activeCtx.http.req.__ = value => { + return value; + }; + it('should throw an error when attempting to set an invalid iban account', async() => { let error; const expectedError = 'The IBAN does not have the correct format'; const iban = 'incorrect format'; try { - await app.models.SupplierAccount.create( + await models.SupplierAccount.create( { supplierFk: supplierId, bankEntityFk: bankEntityId, @@ -26,27 +38,16 @@ describe('loopback model Supplier-account', () => { }); it('should create a valid supplier account', async() => { - const tx = await app.models.Claim.beginTransaction({}); + const tx = await models.SupplierAccount.beginTransaction({}); try { const options = {transaction: tx}; const iban = 'ES91 2100 0418 4502 0005 1332'; - const activeCtx = { - accessToken: {userId: 5}, - http: { - req: { - headers: {origin: 'http://localhost'} - } - } - }; - activeCtx.http.req.__ = value => { - return value; - }; - spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ active: activeCtx }); - const createdSupplierAccount = await app.models.SupplierAccount.create({ + + const createdSupplierAccount = await models.SupplierAccount.create({ supplierFk: supplierId, bankEntityFk: bankEntityId, iban: iban @@ -60,5 +61,35 @@ describe('loopback model Supplier-account', () => { throw e; } }); + + it('should change isPayMethodChecked to false', async() => { + const tx = await models.SupplierAccount.beginTransaction({}); + try { + const options = {transaction: tx}; + const iban = 'ES91 2100 0418 4502 0005 1332'; + + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + + const supplierBefore = await models.Supplier.findById(supplierId, null, options); + + await models.SupplierAccount.create({ + supplierFk: supplierId, + bankEntityFk: bankEntityId, + iban: iban + }, + options); + + const supplierAfter = await models.Supplier.findById(supplierId, null, options); + + expect(supplierBefore.isPayMethodChecked).toBeTruthy(); + expect(supplierAfter.isPayMethodChecked).toBeFalsy(); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); }); }); diff --git a/modules/supplier/back/models/supplier-account.js b/modules/supplier/back/models/supplier-account.js index c8b2f0595..dc6c6d5fd 100644 --- a/modules/supplier/back/models/supplier-account.js +++ b/modules/supplier/back/models/supplier-account.js @@ -34,4 +34,15 @@ module.exports = Self => { ctx.instance.iban + ', entidad: ' + bankEntity.name + ', bic: ' + bankEntity.bic }); }); + + Self.observe('after save', async ctx => { + const options = {}; + + if (ctx.options && ctx.options.transaction) + options.transaction = ctx.options.transaction; + const supplier = await Self.app.models.Supplier.findById(ctx.instance.supplierFk, null, options); + + if (supplier.isPayMethodChecked) + await supplier.updateAttribute('isPayMethodChecked', false, options); + }); }; diff --git a/modules/supplier/back/models/supplier-account.json b/modules/supplier/back/models/supplier-account.json index 8e2838fe5..2ee83338b 100644 --- a/modules/supplier/back/models/supplier-account.json +++ b/modules/supplier/back/models/supplier-account.json @@ -12,15 +12,15 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "iban": { - "type": "String" + "type": "string" }, "beneficiary": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/modules/supplier/back/models/supplier-activity.json b/modules/supplier/back/models/supplier-activity.json new file mode 100644 index 000000000..7a0b9a537 --- /dev/null +++ b/modules/supplier/back/models/supplier-activity.json @@ -0,0 +1,18 @@ +{ + "name": "SupplierActivity", + "base": "VnModel", + "options": { + "mysql": { + "table": "supplierActivity" + } + }, + "properties": { + "code": { + "type": "string", + "id": true + }, + "name": { + "type": "string" + } + } +} \ No newline at end of file diff --git a/modules/supplier/back/models/supplier-agency-term.js b/modules/supplier/back/models/supplier-agency-term.js new file mode 100644 index 000000000..961413c18 --- /dev/null +++ b/modules/supplier/back/models/supplier-agency-term.js @@ -0,0 +1,9 @@ +const UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.rewriteDbError(function(err) { + if (err.code === 'ER_DUP_ENTRY') + return new UserError(`The agency is already assigned to another autonomous`); + return err; + }); +}; diff --git a/modules/supplier/back/models/supplier-agency-term.json b/modules/supplier/back/models/supplier-agency-term.json new file mode 100644 index 000000000..f9c39729a --- /dev/null +++ b/modules/supplier/back/models/supplier-agency-term.json @@ -0,0 +1,46 @@ +{ + "name": "SupplierAgencyTerm", + "base": "VnModel", + "options": { + "mysql": { + "table": "supplierAgencyTerm" + } + }, + "properties": { + "agencyFk": { + "type": "number", + "id": true + }, + "supplierFk": { + "type": "number" + }, + "minimumPackages": { + "type": "number" + }, + "kmPrice": { + "type": "number" + }, + "packagePrice": { + "type": "number" + }, + "routePrice": { + "type": "number" + }, + "minimumKm": { + "type": "number" + }, + "minimumM3": { + "type": "number" + }, + "m3Price": { + "type": "number" + } + }, + "relations": { + "agency": { + "type": "belongsTo", + "model": "Agency", + "foreignKey": "agencyFk" + } + } +} \ No newline at end of file diff --git a/modules/supplier/back/models/supplier-contact.json b/modules/supplier/back/models/supplier-contact.json index 104a3a404..9e13c33a8 100644 --- a/modules/supplier/back/models/supplier-contact.json +++ b/modules/supplier/back/models/supplier-contact.json @@ -12,27 +12,27 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "supplierFk": { - "type": "String" + "type": "string" }, "phone": { - "type": "String" + "type": "string" }, "mobile": { - "type": "String" + "type": "string" }, "email": { - "type": "String" + "type": "string" }, "observation": { - "type": "String" + "type": "string" }, "name": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/modules/supplier/back/models/supplier.js b/modules/supplier/back/models/supplier.js index f8b096b30..44549c65c 100644 --- a/modules/supplier/back/models/supplier.js +++ b/modules/supplier/back/models/supplier.js @@ -7,6 +7,10 @@ module.exports = Self => { require('../methods/supplier/getSummary')(Self); require('../methods/supplier/updateFiscalData')(Self); require('../methods/supplier/consumption')(Self); + require('../methods/supplier/freeAgencies')(Self); + require('../methods/supplier/campaignMetricsPdf')(Self); + require('../methods/supplier/campaignMetricsEmail')(Self); + require('../methods/supplier/newSupplier')(Self); Self.validatesPresenceOf('name', { message: 'The social name cannot be empty' @@ -16,13 +20,17 @@ module.exports = Self => { message: 'The supplier name must be unique' }); - Self.validatesPresenceOf('city', { - message: 'City cannot be empty' - }); + if (this.city) { + Self.validatesPresenceOf('city', { + message: 'City cannot be empty' + }); + } - Self.validatesPresenceOf('nif', { - message: 'The nif cannot be empty' - }); + if (this.nif) { + Self.validatesPresenceOf('nif', { + message: 'The nif cannot be empty' + }); + } Self.validatesUniquenessOf('nif', { message: 'TIN must be unique' @@ -54,6 +62,9 @@ module.exports = Self => { } async function tinIsValid(err, done) { + if (!this.countryFk) + return done(); + const filter = { fields: ['code'], where: {id: this.countryFk} @@ -77,6 +88,7 @@ module.exports = Self => { }); async function hasSupplierAccount(err, done) { + if (!this.payMethodFk) return done(); const payMethod = await Self.app.models.PayMethod.findById(this.payMethodFk); const supplierAccount = await Self.app.models.SupplierAccount.findOne({where: {supplierFk: this.id}}); const hasIban = supplierAccount && supplierAccount.iban; @@ -89,6 +101,7 @@ module.exports = Self => { } Self.observe('before save', async function(ctx) { + if (ctx.isNewInstance) return; const loopbackContext = LoopBackContext.getCurrentContext(); const changes = ctx.data || ctx.instance; const orgData = ctx.currentInstance; @@ -98,7 +111,7 @@ module.exports = Self => { const isPayMethodChecked = changes.isPayMethodChecked || orgData.isPayMethodChecked; const hasChanges = orgData && changes; const isPayMethodCheckedChanged = hasChanges - && orgData.isPayMethodChecked != isPayMethodChecked; + && orgData.isPayMethodChecked != isPayMethodChecked; if (isNotFinancial && isPayMethodCheckedChanged) throw new UserError('You can not modify is pay method checked'); @@ -111,7 +124,7 @@ module.exports = Self => { const socialName = changes.name || orgData.name; const hasChanges = orgData && changes; const socialNameChanged = hasChanges - && orgData.socialName != socialName; + && orgData.socialName != socialName; if ((socialNameChanged) && !isAlpha(socialName)) throw new UserError('The social name has an invalid format'); diff --git a/modules/supplier/back/models/supplier.json b/modules/supplier/back/models/supplier.json index 8b4b8f26f..3cd6386a8 100644 --- a/modules/supplier/back/models/supplier.json +++ b/modules/supplier/back/models/supplier.json @@ -51,6 +51,9 @@ "isSerious": { "type": "boolean" }, + "isTrucker": { + "type": "boolean" + }, "note": { "type": "string" }, @@ -101,6 +104,12 @@ }, "isPayMethodChecked": { "type": "boolean" + }, + "supplierActivityFk": { + "type": "string" + }, + "healthRegister": { + "type": "string" } }, "relations": { @@ -159,6 +168,11 @@ "type": "hasMany", "model": "SupplierAddress", "foreignKey": "supplierFk" + }, + "supplierActivity": { + "type": "belongsTo", + "model": "SupplierActivity", + "foreignKey": "supplierActivityFk" } } } \ No newline at end of file diff --git a/modules/supplier/front/account/index.html b/modules/supplier/front/account/index.html index add62cd01..a0b58c737 100644 --- a/modules/supplier/front/account/index.html +++ b/modules/supplier/front/account/index.html @@ -25,8 +25,13 @@ label="Bank entity" ng-model="supplierAccount.bankEntityFk" url="BankEntities" - show-field="name" + fields="['name']" + initial-data="supplierAccount.bankEntityFk" + search-function="{or: [{bic: {like: $search +'%'}}, {name: {like: '%'+ $search +'%'}}]}" + value-field="id" + show-field="bic" rule> + {{bic}} {{name}} this.$.watcher.notifySaved()); + } } ngModule.vnComponent('vnSupplierAccount', { diff --git a/modules/supplier/front/account/index.spec.js b/modules/supplier/front/account/index.spec.js index 5c824907f..ad29d1abc 100644 --- a/modules/supplier/front/account/index.spec.js +++ b/modules/supplier/front/account/index.spec.js @@ -5,9 +5,12 @@ import crudModel from 'core/mocks/crud-model'; describe('Supplier Component vnSupplierAccount', () => { let $scope; let controller; + let $httpBackend; + beforeEach(ngModule('supplier')); beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => { + $httpBackend = _$httpBackend_; $scope = $rootScope.$new(); $scope.model = crudModel; $scope.watcher = watcher; @@ -66,5 +69,30 @@ describe('Supplier Component vnSupplierAccount', () => { }).catch(done.fail); }); }); + + describe('setWireTransfer()', () => { + it(`should make HTTP PATCH request to set wire transfer and call notifySaved`, () => { + const supplierId = 1; + const params = { + id: supplierId, + payMethodFk: 2 + }; + const response = { + data: {id: 2} + }; + const uri = 'payMethods/findOne?filter=%7B%22where%22:%7B%22code%22:%22wireTransfer%22%7D%7D'; + jest.spyOn($scope.watcher, 'notifySaved'); + + controller.$params.id = supplierId; + controller.wireTransferFk = 2; + controller.supplier = {payMethodFk: 1}; + $httpBackend.expectGET(uri).respond(response); + $httpBackend.expectPATCH(`Suppliers/${supplierId}`, params).respond(); + controller.setWireTransfer(); + $httpBackend.flush(); + + expect($scope.watcher.notifySaved).toHaveBeenCalledWith(); + }); + }); }); diff --git a/modules/supplier/front/agency-term/create/index.html b/modules/supplier/front/agency-term/create/index.html new file mode 100644 index 000000000..e43f6396a --- /dev/null +++ b/modules/supplier/front/agency-term/create/index.html @@ -0,0 +1,74 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/modules/supplier/front/agency-term/create/index.js b/modules/supplier/front/agency-term/create/index.js new file mode 100644 index 000000000..3f66ac5e9 --- /dev/null +++ b/modules/supplier/front/agency-term/create/index.js @@ -0,0 +1,26 @@ +import ngModule from '../../module'; +import Section from 'salix/components/section'; + +export default class Controller extends Section { + constructor($element, $) { + super($element, $); + + this.supplierAgencyTerm = { + supplierFk: this.$params.id + }; + } + + onSubmit() { + this.$.watcher.submit().then(res => { + this.$state.go('supplier.card.agencyTerm.index'); + }); + } +} + +ngModule.vnComponent('vnSupplierAgencyTermCreate', { + template: require('./index.html'), + controller: Controller, + bindings: { + supplier: '<' + } +}); diff --git a/modules/supplier/front/agency-term/create/index.spec.js b/modules/supplier/front/agency-term/create/index.spec.js new file mode 100644 index 000000000..682e1cc58 --- /dev/null +++ b/modules/supplier/front/agency-term/create/index.spec.js @@ -0,0 +1,28 @@ +import './index'; +import watcher from 'core/mocks/watcher'; + +describe('Supplier', () => { + describe('Component vnSupplierAddressCreate', () => { + let $scope; + let controller; + let $element; + + beforeEach(ngModule('supplier')); + + beforeEach(inject(($componentController, $rootScope, _$state_) => { + $scope = $rootScope.$new(); + $scope.watcher = watcher; + $element = angular.element(''); + controller = $componentController('vnSupplierAgencyTermCreate', {$element, $scope}); + })); + + describe('onSubmit()', () => { + it(`should redirect to 'supplier.card.agencyTerm.index' state`, () => { + jest.spyOn(controller.$state, 'go'); + controller.onSubmit(); + + expect(controller.$state.go).toHaveBeenCalledWith('supplier.card.agencyTerm.index'); + }); + }); + }); +}); diff --git a/modules/supplier/front/agency-term/index/index.html b/modules/supplier/front/agency-term/index/index.html new file mode 100644 index 000000000..9d53226c5 --- /dev/null +++ b/modules/supplier/front/agency-term/index/index.html @@ -0,0 +1,85 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + diff --git a/modules/supplier/front/agency-term/index/index.js b/modules/supplier/front/agency-term/index/index.js new file mode 100644 index 000000000..9f77d686a --- /dev/null +++ b/modules/supplier/front/agency-term/index/index.js @@ -0,0 +1,36 @@ +import ngModule from '../../module'; +import Section from 'salix/components/section'; + +class Controller extends Section { + constructor($element, $) { + super($element, $); + this.filter = { + include: + {relation: 'agency', + scope: { + fields: ['id', 'name'] + } + } + }; + } + + add() { + this.$.model.insert({}); + } + + onSubmit() { + this.$.watcher.check(); + this.$.model.save().then(() => { + this.$.watcher.notifySaved(); + this.$.watcher.updateOriginalData(); + }); + } +} + +ngModule.vnComponent('vnSupplierAgencyTermIndex', { + template: require('./index.html'), + controller: Controller, + bindings: { + supplier: '<' + } +}); diff --git a/modules/supplier/front/agency-term/index/index.spec.js b/modules/supplier/front/agency-term/index/index.spec.js new file mode 100644 index 000000000..3e9ea4c1e --- /dev/null +++ b/modules/supplier/front/agency-term/index/index.spec.js @@ -0,0 +1,37 @@ +import './index'; +import watcher from 'core/mocks/watcher'; +import crudModel from 'core/mocks/crud-model'; + +describe('Supplier', () => { + describe('Component vnSupplierAddressCreate', () => { + let $scope; + let controller; + let $element; + + beforeEach(ngModule('supplier')); + + beforeEach(inject(($componentController, $rootScope, _$state_) => { + $scope = $rootScope.$new(); + $scope.model = crudModel; + $scope.watcher = watcher; + $element = angular.element(''); + controller = $componentController('vnSupplierAgencyTermIndex', {$element, $scope}); + })); + + describe('onSubmit()', () => { + it('should make HTTP POST request to save values', () => { + jest.spyOn($scope.watcher, 'check'); + jest.spyOn($scope.watcher, 'notifySaved'); + jest.spyOn($scope.watcher, 'updateOriginalData'); + jest.spyOn($scope.model, 'save'); + + controller.onSubmit(); + + expect($scope.model.save).toHaveBeenCalledWith(); + expect($scope.watcher.updateOriginalData).toHaveBeenCalledWith(); + expect($scope.watcher.check).toHaveBeenCalledWith(); + expect($scope.watcher.notifySaved).toHaveBeenCalledWith(); + }); + }); + }); +}); diff --git a/modules/supplier/front/agency-term/locale/es.yml b/modules/supplier/front/agency-term/locale/es.yml new file mode 100644 index 000000000..f4ba7d87d --- /dev/null +++ b/modules/supplier/front/agency-term/locale/es.yml @@ -0,0 +1,8 @@ +Minimum M3: M3 minimos +Package Price: Precio bulto +Km Price: Precio Km +M3 Price: Precio M3 +Route Price: Precio ruta +Minimum Km: Km minimos +Remove row: Eliminar fila +Add row: Añadir fila \ No newline at end of file diff --git a/modules/supplier/front/consumption/index.js b/modules/supplier/front/consumption/index.js index 21a30929d..8de6a1e71 100644 --- a/modules/supplier/front/consumption/index.js +++ b/modules/supplier/front/consumption/index.js @@ -33,7 +33,8 @@ class Controller extends Section { } showReport() { - this.vnReport.show('supplier-campaign-metrics', this.reportParams); + const path = `Suppliers/${this.supplier.id}/campaign-metrics-pdf`; + this.vnReport.show(path, this.reportParams); } sendEmail() { @@ -52,7 +53,9 @@ class Controller extends Section { const params = Object.assign({ recipient: contact.email }, this.reportParams); - this.vnEmail.send('supplier-campaign-metrics', params); + + const path = `Suppliers/${this.supplier.id}/campaign-metrics-email`; + this.vnEmail.send(path, params); } else { const message = this.$t(`This supplier doesn't have a contact with an email address`); this.vnApp.showError(message); diff --git a/modules/supplier/front/consumption/index.spec.js b/modules/supplier/front/consumption/index.spec.js index d095a174b..ebf19ccec 100644 --- a/modules/supplier/front/consumption/index.spec.js +++ b/modules/supplier/front/consumption/index.spec.js @@ -42,7 +42,7 @@ describe('Supplier', () => { to: now }; const serializedParams = $httpParamSerializer(expectedParams); - const path = `api/report/supplier-campaign-metrics?${serializedParams}`; + const path = `api/Suppliers/${supplierId}/campaign-metrics-pdf?${serializedParams}`; expect(window.open).toHaveBeenCalledWith(path); }); @@ -66,7 +66,8 @@ describe('Supplier', () => { controller.sendEmail(); $httpBackend.flush(); - expect(controller.vnApp.showError).toHaveBeenCalledWith(`This supplier doesn't have a contact with an email address`); + expect(controller.vnApp.showError) + .toHaveBeenCalledWith(`This supplier doesn't have a contact with an email address`); }); it('should make a GET query sending the report', () => { @@ -91,16 +92,15 @@ describe('Supplier', () => { to: now }; const expectedParams = { - recipientId: 2, recipient: 'batman@gothamcity.com', from: now, to: now }; serializedParams = $httpParamSerializer(expectedParams); - const path = `email/supplier-campaign-metrics?${serializedParams}`; + const path = `Suppliers/${supplierId}/campaign-metrics-email`; - $httpBackend.expect('GET', path).respond({}); + $httpBackend.expect('POST', path).respond({}); controller.sendEmail(); $httpBackend.flush(); }); diff --git a/modules/supplier/front/create/index.html b/modules/supplier/front/create/index.html new file mode 100644 index 000000000..446a16cb6 --- /dev/null +++ b/modules/supplier/front/create/index.html @@ -0,0 +1,29 @@ + + +
+ + + + + + + + + + + + +
diff --git a/modules/supplier/front/create/index.js b/modules/supplier/front/create/index.js new file mode 100644 index 000000000..c33367dac --- /dev/null +++ b/modules/supplier/front/create/index.js @@ -0,0 +1,23 @@ +import ngModule from '../module'; +import Section from 'salix/components/section'; + +class Controller extends Section { + constructor($element, $) { + super($element, $); + } + + onSubmit() { + this.$.watcher.submit().then( + json => { + this.$state.go(`supplier.card.fiscalData`, {id: json.data.id}); + } + ); + } +} + +Controller.$inject = ['$element', '$scope']; + +ngModule.vnComponent('vnSupplierCreate', { + template: require('./index.html'), + controller: Controller +}); diff --git a/modules/supplier/front/descriptor/index.html b/modules/supplier/front/descriptor/index.html index dcc065eff..4691bfe9b 100644 --- a/modules/supplier/front/descriptor/index.html +++ b/modules/supplier/front/descriptor/index.html @@ -1,6 +1,7 @@ + description="$ctrl.supplier.name" + summary="$ctrl.$.summary">
+ + + \ No newline at end of file diff --git a/modules/supplier/front/descriptor/index.js b/modules/supplier/front/descriptor/index.js index df9fe2155..a26d9c510 100644 --- a/modules/supplier/front/descriptor/index.js +++ b/modules/supplier/front/descriptor/index.js @@ -41,6 +41,7 @@ class Controller extends Descriptor { 'payDay', 'isActive', 'isSerious', + 'isTrucker', 'account' ], include: [ diff --git a/modules/supplier/front/descriptor/index.spec.js b/modules/supplier/front/descriptor/index.spec.js index 8926fa4d1..4d16c5183 100644 --- a/modules/supplier/front/descriptor/index.spec.js +++ b/modules/supplier/front/descriptor/index.spec.js @@ -27,6 +27,7 @@ describe('Supplier Component vnSupplierDescriptor', () => { 'payDay', 'isActive', 'isSerious', + 'isTrucker', 'account' ], include: [ diff --git a/modules/supplier/front/fiscal-data/index.html b/modules/supplier/front/fiscal-data/index.html index fc44468f4..a3ede2058 100644 --- a/modules/supplier/front/fiscal-data/index.html +++ b/modules/supplier/front/fiscal-data/index.html @@ -30,6 +30,11 @@ data="sageWithholdings" order="withholding"> + +
@@ -38,7 +43,7 @@ vn-focus label="Social name" ng-model="$ctrl.supplier.name" - info="You can use letters and spaces" + info="Only letters, numbers and spaces can be used" required="true" rule> @@ -55,6 +60,8 @@ vn-one label="Account" ng-model="$ctrl.supplier.account" + insertable="true" + max-length="10" rule> {{id}}: {{transaction}} + + + + + + - - + + - - {{name}} ({{country.country}}) + + + + diff --git a/modules/supplier/front/fiscal-data/locale/es.yml b/modules/supplier/front/fiscal-data/locale/es.yml index 8b98a91af..5232dd95d 100644 --- a/modules/supplier/front/fiscal-data/locale/es.yml +++ b/modules/supplier/front/fiscal-data/locale/es.yml @@ -1,3 +1,6 @@ Sage tax type: Tipo de impuesto Sage Sage transaction type: Tipo de transacción Sage Sage withholding: Retención Sage +Supplier activity: Actividad proveedor +Healt register: Pasaporte sanitario +Trucker: Transportista \ No newline at end of file diff --git a/modules/supplier/front/index.js b/modules/supplier/front/index.js index dc131ef4a..9216d0781 100644 --- a/modules/supplier/front/index.js +++ b/modules/supplier/front/index.js @@ -18,3 +18,6 @@ import './billing-data'; import './address/index'; import './address/create'; import './address/edit'; +import './agency-term/index'; +import './agency-term/create'; +import './create/index'; diff --git a/modules/supplier/front/index/index.html b/modules/supplier/front/index/index.html index 87e822eea..49f38cb1b 100644 --- a/modules/supplier/front/index/index.html +++ b/modules/supplier/front/index/index.html @@ -58,4 +58,7 @@ - \ No newline at end of file + + + + \ No newline at end of file diff --git a/modules/supplier/front/index/locale/es.yml b/modules/supplier/front/index/locale/es.yml index ad8a4f0bb..ce06f462c 100644 --- a/modules/supplier/front/index/locale/es.yml +++ b/modules/supplier/front/index/locale/es.yml @@ -2,4 +2,5 @@ Payment deadline: Plazo de pago Pay day: Dia de pago Account: Cuenta Pay method: Metodo de pago -Tax number: Nif \ No newline at end of file +Tax number: Nif +New supplier: Nuevo proveedor \ No newline at end of file diff --git a/modules/supplier/front/routes.json b/modules/supplier/front/routes.json index 3d3814f5d..75b8213cb 100644 --- a/modules/supplier/front/routes.json +++ b/modules/supplier/front/routes.json @@ -12,11 +12,12 @@ {"state": "supplier.card.basicData", "icon": "settings"}, {"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.log", "icon": "history"}, {"state": "supplier.card.account", "icon": "icon-account"}, {"state": "supplier.card.contact", "icon": "contact_phone"}, - {"state": "supplier.card.log", "icon": "history"}, - {"state": "supplier.card.consumption", "icon": "show_chart"} + {"state": "supplier.card.address.index", "icon": "icon-delivery"}, + {"state": "supplier.card.consumption", "icon": "show_chart"}, + {"state": "supplier.card.agencyTerm.index", "icon": "icon-agency-term"} ] }, "keybindings": [ @@ -29,7 +30,7 @@ "abstract": true, "component": "vn-supplier", "description": "Suppliers" - }, + }, { "url": "/index?q", "state": "supplier.index", @@ -50,6 +51,13 @@ "params": { "supplier": "$ctrl.supplier" } + }, + { + "url": "/create", + "state": "supplier.create", + "component": "vn-supplier-create", + "acl": ["administrative"], + "description": "New supplier" }, { "url": "/basic-data", @@ -86,6 +94,30 @@ "supplier": "$ctrl.supplier" } }, + { + "url": "/agency-term", + "state": "supplier.card.agencyTerm", + "component": "ui-view", + "abstract": true + }, + { + "url": "/index", + "state": "supplier.card.agencyTerm.index", + "component": "vn-supplier-agency-term-index", + "description": "Agency Agreement", + "params": { + "supplier": "$ctrl.supplier" + } + }, + { + "url": "/create", + "state": "supplier.card.agencyTerm.create", + "component": "vn-supplier-agency-term-create", + "description": "New autonomous", + "params": { + "supplier": "$ctrl.supplier" + } + }, { "url": "/consumption?q", "state": "supplier.card.consumption", diff --git a/modules/supplier/front/summary/index.html b/modules/supplier/front/summary/index.html index 51ebde695..3dda39212 100644 --- a/modules/supplier/front/summary/index.html +++ b/modules/supplier/front/summary/index.html @@ -83,11 +83,6 @@ label="Account" value="{{::$ctrl.summary.account}}"> - - @@ -118,6 +113,13 @@ label="Sage withholding" value="{{::$ctrl.summary.sageWithholding.withholding}}"> + + + diff --git a/modules/supplier/front/summary/locale/es.yml b/modules/supplier/front/summary/locale/es.yml index 512b75f9d..35291e579 100644 --- a/modules/supplier/front/summary/locale/es.yml +++ b/modules/supplier/front/summary/locale/es.yml @@ -7,4 +7,6 @@ Sage tax type: Tipo de impuesto Sage Sage transaction type: Tipo de transacción Sage Sage withholding: Retencion Sage Go to the supplier: Ir al proveedor -Responsible: Responsable \ No newline at end of file +Responsible: Responsable +Supplier activity: Actividad proveedor +Healt register: Pasaporte sanitario \ No newline at end of file diff --git a/modules/ticket/back/methods/boxing/getVideo.js b/modules/ticket/back/methods/boxing/getVideo.js new file mode 100644 index 000000000..6f471e837 --- /dev/null +++ b/modules/ticket/back/methods/boxing/getVideo.js @@ -0,0 +1,88 @@ +const https = require('https'); + +module.exports = Self => { + Self.remoteMethod('getVideo', { + description: 'Get packing video', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'Ticket id' + }, + { + arg: 'filename', + type: 'string', + required: true, + description: 'Time to add' + }, + { + arg: 'req', + type: 'object', + http: {source: 'req'} + }, + { + arg: 'res', + type: 'object', + http: {source: 'res'} + } + ], + http: { + path: `/getVideo`, + verb: 'GET', + }, + }); + + Self.getVideo = async(id, filename, req, res, options) => { + const models = Self.app.models; + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const packingSiteConfig = await models.PackingSiteConfig.findOne({}, myOptions); + + const query = ` + SELECT + e.id, + ps.monitorId, + e.created + FROM expedition e + JOIN host h ON Convert(h.code USING utf8mb3) COLLATE utf8mb3_unicode_ci = e.hostFk + JOIN packingSite ps ON ps.hostFk = h.id + WHERE e.id = ?;`; + const [expedition] = await models.Expedition.rawSql(query, [id]); + const monitorId = expedition.monitorId; + + const videoUrl = + `/${packingSiteConfig.shinobiToken}/videos/${packingSiteConfig.shinobiGroupKey}/${monitorId}/${filename}`; + + const headers = Object.assign({}, req.headers, { + host: 'shinobi.verdnatura.es' + }); + const httpOptions = { + host: 'shinobi.verdnatura.es', + path: videoUrl, + port: 443, + headers + }; + + return new Promise((resolve, reject) => { + const req = https.request(httpOptions, shinobiRes => { + shinobiRes.pause(); + res.writeHeader(shinobiRes.statusCode, shinobiRes.headers); + shinobiRes.pipe(res); + }); + + req.on('error', () => { + reject(); + }); + + req.on('end', () => { + resolve(); + }); + req.end(); + }); + }; +}; diff --git a/modules/ticket/back/methods/boxing/getVideoList.js b/modules/ticket/back/methods/boxing/getVideoList.js new file mode 100644 index 000000000..3d45a720d --- /dev/null +++ b/modules/ticket/back/methods/boxing/getVideoList.js @@ -0,0 +1,78 @@ +const axios = require('axios'); +const models = require('vn-loopback/server/server').models; + +module.exports = Self => { + Self.remoteMethod('getVideoList', { + description: 'Get video list of expedition id', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'Expedition id' + }, { + arg: 'from', + type: 'number', + required: false, + }, { + arg: 'to', + type: 'number', + required: false, + } + ], returns: { + type: ['object'], + root: true + }, + http: { + path: `/getVideoList`, + verb: 'GET', + }, + }); + + Self.getVideoList = async(id, from, to, options) => { + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const packingSiteConfig = await models.PackingSiteConfig.findOne({}, myOptions); + + const query = ` + SELECT + e.id, + ps.monitorId, + e.created + FROM expedition e + JOIN host h ON Convert(h.code USING utf8mb3) COLLATE utf8mb3_unicode_ci = e.hostFk + JOIN packingSite ps ON ps.hostFk = h.id + WHERE e.id = ?;`; + const [expedition] = await models.PackingSiteConfig.rawSql(query, [id]); + + if (!from && !expedition) return []; + let start = new Date(expedition.created); + let end = new Date(start.getTime() + (packingSiteConfig.avgBoxingTime * 1000)); + + if (from && to) { + start.setHours(from, 0, 0); + end.setHours(to, 0, 0); + } + const offset = start.getTimezoneOffset(); + start = new Date(start.getTime() - (offset * 60 * 1000)); + end = new Date(end.getTime() - (offset * 60 * 1000)); + + const videoUrl = + `/${packingSiteConfig.shinobiToken}/videos/${packingSiteConfig.shinobiGroupKey}/${expedition.monitorId}`; + const timeUrl = `?start=${start.toISOString().split('.')[0]}&end=${end.toISOString().split('.')[0]}`; + const url = `${packingSiteConfig.shinobiUrl}${videoUrl}${timeUrl}`; + + let response; + + try { + response = await axios.get(url); + } catch (e) { + return []; + } + return response.data.videos.map(video => video.filename); + }; +}; diff --git a/modules/ticket/back/methods/boxing/specs/getVideo.spec.js b/modules/ticket/back/methods/boxing/specs/getVideo.spec.js new file mode 100644 index 000000000..8e8cdc5b9 --- /dev/null +++ b/modules/ticket/back/methods/boxing/specs/getVideo.spec.js @@ -0,0 +1,40 @@ +const models = require('vn-loopback/server/server').models; +const https = require('https'); + +xdescribe('boxing getVideo()', () => { + it('should return data', async() => { + const tx = await models.PackingSiteConfig.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const id = 1; + const video = 'video.mp4'; + + const response = { + pipe: () => {}, + on: () => {}, + end: () => {}, + }; + + const req = { + headers: 'apiHeader', + data: { + pipe: () => {}, + on: () => {}, + } + }; + + spyOn(https, 'request').and.returnValue(response); + + const result = await models.Boxing.getVideo(id, video, req, null, options); + + expect(result[0]).toEqual(response.data.videos[0].filename); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/ticket/back/methods/boxing/specs/getVideoList.spec.js b/modules/ticket/back/methods/boxing/specs/getVideoList.spec.js new file mode 100644 index 000000000..c6d1a3e07 --- /dev/null +++ b/modules/ticket/back/methods/boxing/specs/getVideoList.spec.js @@ -0,0 +1,36 @@ +const models = require('vn-loopback/server/server').models; +const axios = require('axios'); + +describe('boxing getVideoList()', () => { + it('should return video list', async() => { + const tx = await models.PackingSiteConfig.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const id = 1; + const from = 1; + const to = 2; + + const response = { + data: { + videos: [{ + id: 1, + filename: 'video1.mp4' + }] + } + }; + + spyOn(axios, 'get').and.returnValue(new Promise(resolve => resolve(response))); + + const result = await models.Boxing.getVideoList(id, from, to, options); + + expect(result[0]).toEqual(response.data.videos[0].filename); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/ticket/back/methods/expedition-state/filter.js b/modules/ticket/back/methods/expedition-state/filter.js new file mode 100644 index 000000000..1483780f7 --- /dev/null +++ b/modules/ticket/back/methods/expedition-state/filter.js @@ -0,0 +1,41 @@ +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; + +module.exports = Self => { + Self.remoteMethod('filter', { + description: 'Find all instances of the model matched by filter from the data source.', + accessType: 'READ', + accepts: [ + { + arg: 'filter', + type: 'object', + description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string', + http: {source: 'query'}, + }, + ], + returns: { + type: ['object'], + root: true, + }, + http: { + path: `/filter`, + verb: 'GET', + }, + }); + + Self.filter = async(filter, options) => { + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const stmt = new ParameterizedSQL( + `SELECT es.created, u.name, u.id workerFk, est.description state + FROM vn.expeditionState es + JOIN vn.expeditionStateType est ON est.id = es.typeFk + JOIN account.user u ON u.id = es.userFk + `); + stmt.merge(Self.buildSuffix(filter, 'es')); + + return Self.rawStmt(stmt, myOptions); + }; +}; diff --git a/modules/ticket/back/methods/expedition-state/specs/filter.spec.js b/modules/ticket/back/methods/expedition-state/specs/filter.spec.js new file mode 100644 index 000000000..f144606eb --- /dev/null +++ b/modules/ticket/back/methods/expedition-state/specs/filter.spec.js @@ -0,0 +1,21 @@ +const models = require('vn-loopback/server/server').models; + +describe('expeditionState filter()', () => { + it('should return the expedition states matching the filter', async() => { + const tx = await models.ExpeditionState.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const filter = {where: {expeditionFk: 5}}; + const response = await models.ExpeditionState.filter(filter, options); + + expect(response.length).toEqual(2); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/ticket/back/methods/expedition/deleteExpeditions.js b/modules/ticket/back/methods/expedition/deleteExpeditions.js new file mode 100644 index 000000000..2419d3a5e --- /dev/null +++ b/modules/ticket/back/methods/expedition/deleteExpeditions.js @@ -0,0 +1,52 @@ + +module.exports = Self => { + Self.remoteMethod('deleteExpeditions', { + description: 'Delete the selected expeditions', + accessType: 'WRITE', + accepts: [{ + arg: 'expeditionIds', + type: ['number'], + required: true, + description: 'The expeditions ids to delete' + }], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/deleteExpeditions`, + verb: 'POST' + } + }); + + Self.deleteExpeditions = async(expeditionIds, options) => { + const models = Self.app.models; + const myOptions = {}; + let tx; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + const promises = []; + for (let expeditionId of expeditionIds) { + const deletedExpedition = models.Expedition.destroyById(expeditionId, myOptions); + promises.push(deletedExpedition); + } + + const deletedExpeditions = await Promise.all(promises); + + if (tx) await tx.commit(); + + return deletedExpeditions; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/ticket/back/methods/expedition/filter.js b/modules/ticket/back/methods/expedition/filter.js index 5eb7510b7..65f840d80 100644 --- a/modules/ticket/back/methods/expedition/filter.js +++ b/modules/ticket/back/methods/expedition/filter.js @@ -32,11 +32,10 @@ module.exports = Self => { `SELECT e.id, e.ticketFk, - e.isBox, + e.freightItemFk, e.workerFk, i1.name packageItemName, e.counter, - e.checked, i2.name freightItemName, e.itemFk, u.name userName, @@ -47,11 +46,12 @@ module.exports = Self => { e.packagingFk, es.workerFk expeditionScanWorkerFk, su.name scannerUserName, - es.scanned - FROM - vn.expedition e + es.scanned, + est.description state + FROM vn.expedition e + LEFT JOIN vn.expeditionStateType est ON est.id = e.stateTypeFk LEFT JOIN vn.item i2 ON i2.id = e.itemFk - INNER JOIN vn.item i1 ON i1.id = e.isBox + INNER JOIN vn.item i1 ON i1.id = e.freightItemFk LEFT JOIN vn.packaging p ON p.id = e.packagingFk LEFT JOIN vn.item i3 ON i3.id = p.itemFk LEFT JOIN account.user u ON u.id = e.workerFk diff --git a/modules/ticket/back/methods/expedition/moveExpeditions.js b/modules/ticket/back/methods/expedition/moveExpeditions.js new file mode 100644 index 000000000..cef35ab86 --- /dev/null +++ b/modules/ticket/back/methods/expedition/moveExpeditions.js @@ -0,0 +1,93 @@ +const UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.remoteMethodCtx('moveExpeditions', { + description: 'Move the selected expeditions to another ticket', + accessType: 'WRITE', + accepts: [{ + arg: 'clientId', + type: 'number', + description: `The client id`, + required: true + }, + { + arg: 'landed', + type: 'date', + description: `The landing date` + }, + { + arg: 'warehouseId', + type: 'number', + description: `The warehouse id`, + required: true + }, + { + arg: 'addressId', + type: 'number', + description: `The address id`, + required: true + }, + { + arg: 'agencyModeId', + type: 'any', + description: `The agencyMode id` + }, + { + arg: 'routeId', + type: 'any', + description: `The route id` + }, + { + arg: 'expeditionIds', + type: ['number'], + required: true, + description: 'The expeditions ids to move' + }], + returns: { + type: 'object', + root: true + }, + http: { + path: `/moveExpeditions`, + verb: 'POST' + } + }); + + Self.moveExpeditions = async(ctx, options) => { + const models = Self.app.models; + const args = ctx.args; + const myOptions = {}; + let tx; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + if (args.routeId) { + const route = await models.Route.findById(args.routeId, null, myOptions); + if (!route) throw new UserError('This route does not exists'); + } + const ticket = await models.Ticket.new(ctx, myOptions); + const promises = []; + for (let expeditionsId of args.expeditionIds) { + const expeditionToUpdate = await models.Expedition.findById(expeditionsId, null, myOptions); + const expeditionUpdated = expeditionToUpdate.updateAttribute('ticketFk', ticket.id, myOptions); + promises.push(expeditionUpdated); + } + + await Promise.all(promises); + + if (tx) await tx.commit(); + + return ticket; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/ticket/back/methods/expedition/specs/deleteExpeditions.spec.js b/modules/ticket/back/methods/expedition/specs/deleteExpeditions.spec.js new file mode 100644 index 000000000..14bdf7aea --- /dev/null +++ b/modules/ticket/back/methods/expedition/specs/deleteExpeditions.spec.js @@ -0,0 +1,22 @@ +const models = require('vn-loopback/server/server').models; + +describe('ticket deleteExpeditions()', () => { + it('should delete the selected expeditions', async() => { + const tx = await models.Expedition.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const expeditionIds = [12, 13]; + const result = await models.Expedition.deleteExpeditions(expeditionIds, options); + + expect(result.length).toEqual(2); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); + diff --git a/modules/ticket/back/methods/expedition/specs/filter.spec.js b/modules/ticket/back/methods/expedition/specs/filter.spec.js index 85e98da4a..f643462cc 100644 --- a/modules/ticket/back/methods/expedition/specs/filter.spec.js +++ b/modules/ticket/back/methods/expedition/specs/filter.spec.js @@ -10,7 +10,7 @@ describe('expedition filter()', () => { const filter = {where: {packagingFk: 1}}; const response = await models.Expedition.filter(filter, options); - expect(response.length).toEqual(10); + expect(response.length).toBeGreaterThan(1); await tx.rollback(); } catch (e) { diff --git a/modules/ticket/back/methods/expedition/specs/moveExpeditions.spec.js b/modules/ticket/back/methods/expedition/specs/moveExpeditions.spec.js new file mode 100644 index 000000000..67919e76c --- /dev/null +++ b/modules/ticket/back/methods/expedition/specs/moveExpeditions.spec.js @@ -0,0 +1,39 @@ +const models = require('vn-loopback/server/server').models; + +describe('ticket moveExpeditions()', () => { + it('should move the selected expeditions to new ticket', async() => { + const tx = await models.Expedition.beginTransaction({}); + const ctx = { + req: {accessToken: {userId: 9}}, + args: {}, + params: {} + }; + const myCtx = Object.assign({}, ctx); + + try { + const options = {transaction: tx}; + myCtx.args = { + clientId: 1101, + landed: new Date(), + warehouseId: 1, + addressId: 121, + agencyModeId: 1, + routeId: null, + expeditionIds: [1, 2] + + }; + + const ticket = await models.Expedition.moveExpeditions(myCtx, options); + + const newestTicketIdInFixtures = 27; + + expect(ticket.id).toBeGreaterThan(newestTicketIdInFixtures); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); + diff --git a/modules/ticket/back/methods/packaging/specs/listPackaging.spec.js b/modules/ticket/back/methods/packaging/specs/listPackaging.spec.js index 3d07b90f9..1b5892e04 100644 --- a/modules/ticket/back/methods/packaging/specs/listPackaging.spec.js +++ b/modules/ticket/back/methods/packaging/specs/listPackaging.spec.js @@ -8,9 +8,9 @@ describe('ticket listPackaging()', () => { const options = {transaction: tx}; const filter = {where: {packagingFk: 1}}; - const response = await models.Packaging.listPackaging(filter, options); + const [response] = await models.Packaging.listPackaging(filter, options); - expect(response[0].name).toEqual('Container ammo box 1m'); + expect(response.name).toEqual('Container ammo box 1m'); await tx.rollback(); } catch (e) { diff --git a/modules/ticket/back/methods/sale/getClaimableFromTicket.js b/modules/ticket/back/methods/sale/getClaimableFromTicket.js index 4e0549a4d..ecbc52b94 100644 --- a/modules/ticket/back/methods/sale/getClaimableFromTicket.js +++ b/modules/ticket/back/methods/sale/getClaimableFromTicket.js @@ -24,6 +24,8 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); + const date = new Date(); + date.setHours(0, 0, 0, 0); const query = ` SELECT s.id AS saleFk, @@ -39,11 +41,11 @@ module.exports = Self => { INNER JOIN vn.sale s ON s.ticketFk = t.id LEFT JOIN vn.claimBeginning cb ON cb.saleFk = s.id - WHERE (t.landed) >= TIMESTAMPADD(DAY, -7, CURDATE()) + WHERE (t.landed) >= TIMESTAMPADD(DAY, -7, ?) AND t.id = ? AND cb.id IS NULL ORDER BY t.landed DESC, t.id DESC`; - const claimableSales = await Self.rawSql(query, [ticketFk], myOptions); + const claimableSales = await Self.rawSql(query, [date, ticketFk], myOptions); return claimableSales; }; diff --git a/modules/ticket/back/methods/sale/payBack.js b/modules/ticket/back/methods/sale/payBack.js deleted file mode 100644 index 3bb056465..000000000 --- a/modules/ticket/back/methods/sale/payBack.js +++ /dev/null @@ -1,81 +0,0 @@ -const UserError = require('vn-loopback/util/user-error'); - -module.exports = Self => { - Self.remoteMethodCtx('payBack', { - description: 'Create ticket with the selected lines changing the sign to the quantites', - accessType: 'WRITE', - accepts: [{ - arg: 'sales', - description: 'The sales', - type: ['object'], - required: true - }, - { - arg: 'ticketId', - type: 'number', - required: true, - description: 'The ticket id' - }], - returns: { - type: 'number', - root: true - }, - http: { - path: `/payBack`, - verb: 'post' - } - }); - - Self.payBack = async(ctx, sales, ticketId, options) => { - const myOptions = {}; - let tx; - - if (typeof options == 'object') - Object.assign(myOptions, options); - - if (!myOptions.transaction) { - tx = await Self.beginTransaction({}); - myOptions.transaction = tx; - } - - try { - const salesIds = []; - const params = []; - const userId = ctx.req.accessToken.userId; - - const isClaimManager = await Self.app.models.Account.hasRole(userId, 'claimManager'); - const isSalesAssistant = await Self.app.models.Account.hasRole(userId, 'salesAssistant'); - const hasValidRole = isClaimManager || isSalesAssistant; - - if (!hasValidRole) - throw new UserError(`You don't have privileges to create pay back`); - - sales.forEach(sale => { - salesIds.push(sale.id); - params.push('?'); - }); - - const paramsString = params.join(); - - const query = ` - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - SELECT s.id, s.itemFk, - s.quantity, s.concept, s.price, s.discount - FROM sale s - WHERE s.id IN (${paramsString}); - CALL vn.ticket_doRefund(${ticketId}, @newTicket); - DROP TEMPORARY TABLE tmp.sale;`; - - await Self.rawSql(query, salesIds, myOptions); - const [newTicket] = await Self.rawSql('SELECT @newTicket id', null, myOptions); - ticketId = newTicket.id; - - if (tx) await tx.commit(); - - return ticketId; - } catch (e) { - if (tx) await tx.rollback(); - throw e; - } - }; -}; diff --git a/modules/ticket/back/methods/sale/recalculatePrice.js b/modules/ticket/back/methods/sale/recalculatePrice.js index 8a390223d..59c7d3535 100644 --- a/modules/ticket/back/methods/sale/recalculatePrice.js +++ b/modules/ticket/back/methods/sale/recalculatePrice.js @@ -35,11 +35,8 @@ module.exports = Self => { try { const salesIds = []; - const params = []; - sales.forEach(sale => { + for (let sale of sales) salesIds.push(sale.id); - params.push('?'); - }); const isEditable = await models.Ticket.isEditable(ctx, sales[0].ticketFk, myOptions); if (!isEditable) @@ -49,14 +46,12 @@ module.exports = Self => { if (!canEditSale) throw new UserError(`Sale(s) blocked, please contact production`); - const paramsString = params.join(); - const query = ` DROP TEMPORARY TABLE IF EXISTS tmp.recalculateSales; CREATE TEMPORARY TABLE tmp.recalculateSales SELECT s.id FROM sale s - WHERE s.id IN (${paramsString}); + WHERE s.id IN (?); CALL vn.sale_recalcComponent(null); DROP TEMPORARY TABLE tmp.recalculateSales;`; diff --git a/modules/ticket/back/methods/sale/refund.js b/modules/ticket/back/methods/sale/refund.js new file mode 100644 index 000000000..c0c431636 --- /dev/null +++ b/modules/ticket/back/methods/sale/refund.js @@ -0,0 +1,142 @@ +module.exports = Self => { + Self.remoteMethod('refund', { + description: 'Create refund tickets with sales and services if provided', + accessType: 'WRITE', + accepts: [ + { + arg: 'salesIds', + type: ['number'], + required: true + }, + { + arg: 'servicesIds', + type: ['number'] + }, + ], + returns: { + type: ['number'], + root: true + }, + http: { + path: `/refund`, + verb: 'post' + } + }); + + Self.refund = async(salesIds, servicesIds, options) => { + const models = Self.app.models; + const myOptions = {}; + let tx; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + const refundAgencyMode = await models.AgencyMode.findOne({ + include: { + relation: 'zones', + scope: { + limit: 1, + field: ['id', 'name'] + } + }, + where: {code: 'refund'} + }, myOptions); + + const refoundZoneId = refundAgencyMode.zones()[0].id; + + const salesFilter = { + where: {id: {inq: salesIds}}, + include: { + relation: 'components', + scope: { + fields: ['saleFk', 'componentFk', 'value'] + } + } + }; + const sales = await models.Sale.find(salesFilter, myOptions); + const ticketsIds = [...new Set(sales.map(sale => sale.ticketFk))]; + + const refundTickets = []; + + const now = new Date(); + const mappedTickets = new Map(); + + for (let ticketId of ticketsIds) { + const filter = {include: {relation: 'address'}}; + const ticket = await models.Ticket.findById(ticketId, filter, myOptions); + + const refundTicket = await models.Ticket.create({ + clientFk: ticket.clientFk, + shipped: now, + addressFk: ticket.address().id, + agencyModeFk: refundAgencyMode.id, + nickname: ticket.address().nickname, + warehouseFk: ticket.warehouseFk, + companyFk: ticket.companyFk, + landed: now, + zoneFk: refoundZoneId + }, myOptions); + + refundTickets.push(refundTicket); + + mappedTickets.set(ticketId, refundTicket.id); + + await models.TicketRefund.create({ + refundTicketFk: refundTicket.id, + originalTicketFk: ticket.id, + }, myOptions); + } + + for (const sale of sales) { + const refundTicketId = mappedTickets.get(sale.ticketFk); + const createdSale = await models.Sale.create({ + ticketFk: refundTicketId, + itemFk: sale.itemFk, + quantity: - sale.quantity, + concept: sale.concept, + price: sale.price, + discount: sale.discount, + }, myOptions); + + const components = sale.components(); + for (const component of components) + component.saleFk = createdSale.id; + + await models.SaleComponent.create(components, myOptions); + } + + if (servicesIds && servicesIds.length > 0) { + const servicesFilter = { + where: {id: {inq: servicesIds}} + }; + const services = await models.TicketService.find(servicesFilter, myOptions); + + for (const service of services) { + const refundTicketId = mappedTickets.get(service.ticketFk); + + await models.TicketService.create({ + description: service.description, + quantity: - service.quantity, + price: service.price, + taxClassFk: service.taxClassFk, + ticketFk: refundTicketId, + ticketServiceTypeFk: service.ticketServiceTypeFk, + }, myOptions); + } + } + + if (tx) await tx.commit(); + + return refundTickets; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/ticket/back/methods/sale/specs/payBack.spec.js b/modules/ticket/back/methods/sale/specs/payBack.spec.js deleted file mode 100644 index ffcf96456..000000000 --- a/modules/ticket/back/methods/sale/specs/payBack.spec.js +++ /dev/null @@ -1,54 +0,0 @@ -const models = require('vn-loopback/server/server').models; - -describe('sale payBack()', () => { - it('should create ticket with the selected lines changing the sign to the quantites', async() => { - const tx = await models.Sale.beginTransaction({}); - const ctx = {req: {accessToken: {userId: 9}}}; - - const ticketId = 11; - const sales = [ - {id: 7, ticketFk: 11}, - {id: 8, ticketFk: 11} - ]; - - try { - const options = {transaction: tx}; - - const response = await models.Sale.payBack(ctx, sales, ticketId, options); - const [newTicketId] = await models.Sale.rawSql('SELECT MAX(t.id) id FROM vn.ticket t;', null, options); - - expect(response).toEqual(newTicketId.id); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); - - it(`should throw an error if the user doesn't have privileges to create a pay back`, async() => { - const tx = await models.Sale.beginTransaction({}); - const ctx = {req: {accessToken: {userId: 1}}}; - - const ticketId = 11; - const sales = [ - {id: 7, ticketFk: 11} - ]; - - let error; - - try { - const options = {transaction: tx}; - - await models.Sale.payBack(ctx, sales, ticketId, options); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - error = e; - } - - expect(error).toBeDefined(); - expect(error.message).toEqual(`You don't have privileges to create pay back`); - }); -}); diff --git a/modules/ticket/back/methods/sale/specs/refund.spec.js b/modules/ticket/back/methods/sale/specs/refund.spec.js new file mode 100644 index 000000000..74077cf29 --- /dev/null +++ b/modules/ticket/back/methods/sale/specs/refund.spec.js @@ -0,0 +1,85 @@ +const models = require('vn-loopback/server/server').models; +const LoopBackContext = require('loopback-context'); + +describe('sale refund()', () => { + const userId = 5; + const activeCtx = { + accessToken: {userId: userId}, + }; + + const servicesIds = [3]; + + beforeEach(() => { + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + }); + + it('should create ticket with the selected lines', async() => { + const tx = await models.Sale.beginTransaction({}); + const salesIds = [7, 8]; + + try { + const options = {transaction: tx}; + + const response = await models.Sale.refund(salesIds, servicesIds, options); + + expect(response.length).toBeGreaterThanOrEqual(1); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should create a ticket for each unique ticketFk in the sales', async() => { + const tx = await models.Sale.beginTransaction({}); + const salesIds = [6, 7]; + + try { + const options = {transaction: tx}; + + const tickets = await models.Sale.refund(salesIds, servicesIds, options); + + const ticketsIds = tickets.map(ticket => ticket.id); + + const refundedTickets = await models.Ticket.find({ + where: { + id: { + inq: ticketsIds + } + }, + include: [ + { + relation: 'ticketSales', + scope: { + include: { + relation: 'components' + } + } + }, + { + relation: 'ticketServices', + } + ] + }, options); + + const firstRefoundedTicket = refundedTickets[0]; + const secondRefoundedTicket = refundedTickets[1]; + const salesLength = firstRefoundedTicket.ticketSales().length; + const componentsLength = firstRefoundedTicket.ticketSales()[0].components().length; + const servicesLength = secondRefoundedTicket.ticketServices().length; + + expect(refundedTickets.length).toEqual(2); + expect(salesLength).toEqual(1); + expect(componentsLength).toEqual(4); + expect(servicesLength).toBeGreaterThanOrEqual(1); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/ticket/back/methods/sale/specs/updatePrice.spec.js b/modules/ticket/back/methods/sale/specs/updatePrice.spec.js index e76511421..51cd2403f 100644 --- a/modules/ticket/back/methods/sale/specs/updatePrice.spec.js +++ b/modules/ticket/back/methods/sale/specs/updatePrice.spec.js @@ -79,10 +79,18 @@ describe('sale updatePrice()', () => { const price = 5.4; const originalSalesPersonMana = await models.WorkerMana.findById(18, null, options); const manaComponent = await models.Component.findOne({where: {code: 'mana'}}, options); + const teamOne = 96; + const userId = ctx.req.accessToken.userId; + + const business = await models.Business.findOne({where: {workerFk: userId}}, options); + await business.updateAttribute('departmentFk', teamOne, options); await models.Sale.updatePrice(ctx, saleId, price, options); const updatedSale = await models.Sale.findById(saleId, null, options); - createdSaleComponent = await models.SaleComponent.findOne({where: {saleFk: saleId, componentFk: manaComponent.id}}, options); + const createdSaleComponent = await models.SaleComponent.findOne({ + where: { + saleFk: saleId, componentFk: manaComponent.id + }}, options); expect(updatedSale.price).toBe(price); expect(createdSaleComponent.value).toEqual(-2.04); diff --git a/modules/ticket/back/methods/sale/specs/usesMana.spec.js b/modules/ticket/back/methods/sale/specs/usesMana.spec.js new file mode 100644 index 000000000..777bdc8f0 --- /dev/null +++ b/modules/ticket/back/methods/sale/specs/usesMana.spec.js @@ -0,0 +1,48 @@ +const models = require('vn-loopback/server/server').models; + +describe('sale usesMana()', () => { + const ctx = { + req: { + accessToken: {userId: 18} + } + }; + + it('should return that the worker uses mana', async() => { + const tx = await models.Sale.beginTransaction({}); + + try { + const options = {transaction: tx}; + const teamOne = 96; + const userId = ctx.req.accessToken.userId; + + const business = await models.Business.findOne({where: {workerFk: userId}}, options); + await business.updateAttribute('departmentFk', teamOne, options); + + const usesMana = await models.Sale.usesMana(ctx, options); + + expect(usesMana).toBe(true); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should return that the worker not uses mana', async() => { + const tx = await models.Sale.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const usesMana = await models.Sale.usesMana(ctx, options); + + expect(usesMana).toBe(false); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); +}); diff --git a/modules/ticket/back/methods/sale/updatePrice.js b/modules/ticket/back/methods/sale/updatePrice.js index bbd9d154d..302522cfb 100644 --- a/modules/ticket/back/methods/sale/updatePrice.js +++ b/modules/ticket/back/methods/sale/updatePrice.js @@ -77,7 +77,8 @@ module.exports = Self => { const oldPrice = sale.price; const userId = ctx.req.accessToken.userId; - const usesMana = await models.WorkerMana.findOne({where: {workerFk: userId}, fields: 'amount'}, myOptions); + + const usesMana = await models.Sale.usesMana(ctx, myOptions); const componentCode = usesMana ? 'mana' : 'buyerDiscount'; const discount = await models.Component.findOne({where: {code: componentCode}}, myOptions); const componentId = discount.id; @@ -88,7 +89,6 @@ module.exports = Self => { saleFk: id }; const saleComponent = await models.SaleComponent.findOne({where}, myOptions); - if (saleComponent) { await models.SaleComponent.updateAll(where, { value: saleComponent.value + componentValue diff --git a/modules/ticket/back/methods/sale/usesMana.js b/modules/ticket/back/methods/sale/usesMana.js new file mode 100644 index 000000000..093057dca --- /dev/null +++ b/modules/ticket/back/methods/sale/usesMana.js @@ -0,0 +1,31 @@ +module.exports = Self => { + Self.remoteMethodCtx('usesMana', { + description: 'Returns if the worker uses mana', + accessType: 'READ', + accepts: [], + returns: { + type: 'boolean', + root: true + }, + http: { + path: `/usesMana`, + verb: 'GET' + } + }); + + Self.usesMana = async(ctx, options) => { + const models = Self.app.models; + const userId = ctx.req.accessToken.userId; + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const salesDepartment = await models.Department.findOne({where: {code: 'VT'}, fields: 'id'}, myOptions); + const departments = await models.Department.getLeaves(salesDepartment.id, null, myOptions); + const workerDepartment = await models.WorkerDepartment.findById(userId, null, myOptions); + const usesMana = departments.find(department => department.id == workerDepartment.departmentFk); + + return usesMana ? true : false; + }; +}; diff --git a/modules/ticket/back/methods/ticket-request/getItemTypeWorker.js b/modules/ticket/back/methods/ticket-request/getItemTypeWorker.js new file mode 100644 index 000000000..0655c7bba --- /dev/null +++ b/modules/ticket/back/methods/ticket-request/getItemTypeWorker.js @@ -0,0 +1,57 @@ +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; + +module.exports = Self => { + Self.remoteMethodCtx('getItemTypeWorker', { + description: 'Returns the workers that appear in itemType', + accessType: 'READ', + accepts: [{ + arg: 'filter', + type: 'Object', + description: 'Filter defining where and paginated data', + required: true + }], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/getItemTypeWorker`, + verb: 'GET' + } + }); + + Self.getItemTypeWorker = async(ctx, filter, options) => { + const myOptions = {}; + const conn = Self.dataSource.connector; + let tx; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const query = + `SELECT DISTINCT u.id, u.nickname + FROM itemType it + JOIN worker w ON w.id = it.workerFk + JOIN account.user u ON u.id = w.id`; + + let stmt = new ParameterizedSQL(query); + + if (filter.where) { + const value = filter.where.firstName; + const myFilter = { + where: {or: [ + {'w.firstName': {like: `%${value}%`}}, + {'w.lastName': {like: `%${value}%`}}, + {'u.name': {like: `%${value}%`}}, + {'u.nickname': {like: `%${value}%`}} + ]} + }; + + stmt.merge(conn.makeSuffix(myFilter)); + } + + if (tx) await tx.commit(); + + return conn.executeStmt(stmt); + }; +}; diff --git a/modules/ticket/back/methods/ticket-request/specs/getItemTypeWorkers.spec.js b/modules/ticket/back/methods/ticket-request/specs/getItemTypeWorkers.spec.js new file mode 100644 index 000000000..ae5c508b6 --- /dev/null +++ b/modules/ticket/back/methods/ticket-request/specs/getItemTypeWorkers.spec.js @@ -0,0 +1,21 @@ +const models = require('vn-loopback/server/server').models; + +describe('ticket-request getItemTypeWorker()', () => { + const ctx = {req: {accessToken: {userId: 18}}}; + + it('should return the buyer as result', async() => { + const filter = {where: {firstName: 'buyer'}}; + + const result = await models.TicketRequest.getItemTypeWorker(ctx, filter); + + expect(result.length).toEqual(1); + }); + + it('should return the workers at itemType as result', async() => { + const filter = {}; + + const result = await models.TicketRequest.getItemTypeWorker(ctx, filter); + + expect(result.length).toBeGreaterThan(1); + }); +}); diff --git a/modules/ticket/back/methods/ticket/canHaveStowaway.js b/modules/ticket/back/methods/ticket/canHaveStowaway.js deleted file mode 100644 index 9246d0308..000000000 --- a/modules/ticket/back/methods/ticket/canHaveStowaway.js +++ /dev/null @@ -1,48 +0,0 @@ - -module.exports = Self => { - Self.remoteMethod('canHaveStowaway', { - description: 'Returns if a ticket can have stowaway', - accessType: 'READ', - accepts: [{ - arg: 'id', - type: 'number', - required: true, - description: 'ticket id', - http: {source: 'path'} - }], - returns: { - root: true - }, - http: { - path: `/:id/canHaveStowaway`, - verb: 'GET' - } - }); - - Self.canHaveStowaway = async(id, options) => { - const models = Self.app.models; - const myOptions = {}; - - if (typeof options == 'object') - Object.assign(myOptions, options); - - const ticket = await models.Ticket.findById(id, { - include: { - relation: 'ship', - scope: { - fields: ['id'] - } - } - }, myOptions); - - const warehouse = await models.Warehouse.findById(ticket.warehouseFk, null, myOptions); - - const hasStowaway = ticket.ship() ? true : false; - const validStowaway = warehouse && warehouse.hasStowaway && !hasStowaway; - - if (!ticket.isDeleted && validStowaway) - return true; - - return false; - }; -}; diff --git a/print/methods/closure/closeAll.js b/modules/ticket/back/methods/ticket/closeAll.js similarity index 55% rename from print/methods/closure/closeAll.js rename to modules/ticket/back/methods/ticket/closeAll.js index 7af3676f2..327278c2b 100644 --- a/print/methods/closure/closeAll.js +++ b/modules/ticket/back/methods/ticket/closeAll.js @@ -1,20 +1,41 @@ -const db = require('vn-print/core/database'); +const UserError = require('vn-loopback/util/user-error'); const closure = require('./closure'); -module.exports = async function(request, response, next) { - try { - const reqArgs = request.query; - if (!reqArgs.to) - throw new Error('The argument to is required'); +module.exports = Self => { + Self.remoteMethod('closeAll', { + description: 'Makes the closure process from all warehouses', + accessType: 'WRITE', + accepts: [], + returns: { + type: 'object', + root: true + }, + http: { + path: `/close-all`, + verb: 'POST' + } + }); - response.status(200).json({ - message: 'Success' - }); + Self.closeAll = async() => { + const toDate = new Date(); + toDate.setHours(0, 0, 0, 0); + toDate.setDate(toDate.getDate() - 1); - const tickets = await db.rawSql(` + const todayMinDate = new Date(); + todayMinDate.setHours(0, 0, 0, 0); + + const todayMaxDate = new Date(); + todayMaxDate.setHours(23, 59, 59, 59); + + // Prevent closure for current day + if (toDate >= todayMinDate && toDate <= todayMaxDate) + throw new UserError('You cannot close tickets for today'); + + const tickets = await Self.rawSql(` SELECT t.id, t.clientFk, + t.companyFk, c.name clientName, c.email recipient, c.salesPersonFk, @@ -31,15 +52,16 @@ module.exports = async function(request, response, next) { JOIN province p ON p.id = c.provinceFk JOIN country co ON co.id = p.countryFk LEFT JOIN account.emailUser eu ON eu.userFk = c.salesPersonFk - WHERE al.code = 'PACKED' + WHERE al.code = 'PACKED' OR (am.code = 'refund' AND al.code != 'delivered') AND DATE(t.shipped) BETWEEN DATE_ADD(?, INTERVAL -2 DAY) AND util.dayEnd(?) AND t.refFk IS NULL - GROUP BY t.id`, [reqArgs.to, reqArgs.to]); + GROUP BY t.id + `, [toDate, toDate]); - await closure.start(tickets, response.locals); + await closure(Self, tickets); - await db.rawSql(` + await Self.rawSql(` UPDATE ticket t JOIN ticketState ts ON t.id = ts.ticketFk JOIN alertLevel al ON al.id = ts.alertLevel @@ -51,8 +73,10 @@ module.exports = async function(request, response, next) { AND util.dayEnd(?) AND al.code NOT IN('DELIVERED','PACKED') AND t.routeFk - AND z.name LIKE '%MADRID%'`, [reqArgs.to, reqArgs.to]); - } catch (error) { - next(error); - } + AND z.name LIKE '%MADRID%'`, [toDate, toDate]); + + return { + message: 'Success' + }; + }; }; diff --git a/modules/ticket/back/methods/ticket/closeByAgency.js b/modules/ticket/back/methods/ticket/closeByAgency.js new file mode 100644 index 000000000..eb1aee349 --- /dev/null +++ b/modules/ticket/back/methods/ticket/closeByAgency.js @@ -0,0 +1,79 @@ +const closure = require('./closure'); + +module.exports = Self => { + Self.remoteMethodCtx('closeByAgency', { + description: 'Makes the closure process by agency mode', + accessType: 'WRITE', + accepts: [ + { + arg: 'agencyModeFk', + type: ['number'], + required: true, + description: 'The agencies mode ids', + }, + { + arg: 'warehouseFk', + type: 'number', + description: 'The ticket warehouse id', + required: true + }, + { + arg: 'to', + type: 'date', + description: 'Max closure date', + required: true + } + ], + returns: { + type: 'object', + root: true + }, + http: { + path: `/close-by-agency`, + verb: 'POST' + } + }); + + Self.closeByAgency = async ctx => { + const args = ctx.args; + + const tickets = await Self.rawSql(` + SELECT + t.id, + t.clientFk, + t.companyFk, + c.name clientName, + c.email recipient, + c.salesPersonFk, + c.isToBeMailed, + c.hasToInvoice, + co.hasDailyInvoice, + eu.email salesPersonEmail + FROM expedition e + JOIN ticket t ON t.id = e.ticketFk + JOIN ticketState ts ON ts.ticketFk = t.id + JOIN alertLevel al ON al.id = ts.alertLevel + JOIN client c ON c.id = t.clientFk + JOIN province p ON p.id = c.provinceFk + JOIN country co ON co.id = p.countryFk + LEFT JOIN account.emailUser eu ON eu.userFk = c.salesPersonFk + WHERE al.code = 'PACKED' + AND t.agencyModeFk IN(?) + AND t.warehouseFk = ? + AND DATE(t.shipped) BETWEEN DATE_ADD(?, INTERVAL -2 DAY) + AND util.dayEnd(?) + AND t.refFk IS NULL + GROUP BY e.ticketFk`, [ + args.agencyModeFk, + args.warehouseFk, + args.to, + args.to + ]); + + await closure(Self, tickets); + + return { + message: 'Success' + }; + }; +}; diff --git a/print/methods/closure/closeByRoute.js b/modules/ticket/back/methods/ticket/closeByRoute.js similarity index 53% rename from print/methods/closure/closeByRoute.js rename to modules/ticket/back/methods/ticket/closeByRoute.js index 2c0bfd1eb..58e130b8e 100644 --- a/print/methods/closure/closeByRoute.js +++ b/modules/ticket/back/methods/ticket/closeByRoute.js @@ -1,22 +1,36 @@ -const db = require('vn-print/core/database'); -const Email = require('vn-print/core/email'); const closure = require('./closure'); +const {Email} = require('vn-print'); -module.exports = async function(request, response, next) { - try { - const reqArgs = request.query; +module.exports = Self => { + Self.remoteMethodCtx('closeByRoute', { + description: 'Makes the closure process by route', + accessType: 'WRITE', + accepts: [ + { + arg: 'routeFk', + type: 'number', + required: true, + description: 'The routes ids', + }, + ], + returns: { + type: 'object', + root: true + }, + http: { + path: `/close-by-route`, + verb: 'POST' + } + }); - if (!reqArgs.routeId) - throw new Error('The argument routeId is required'); + Self.closeByRoute = async ctx => { + const args = ctx.args; - response.status(200).json({ - message: 'Success' - }); - - const tickets = await db.rawSql(` + const tickets = await Self.rawSql(` SELECT t.id, t.clientFk, + t.companyFk, c.name clientName, c.email recipient, c.salesPersonFk, @@ -35,27 +49,27 @@ module.exports = async function(request, response, next) { WHERE al.code = 'PACKED' AND t.routeFk = ? AND t.refFk IS NULL - GROUP BY e.ticketFk`, [reqArgs.routeId]); + GROUP BY e.ticketFk`, [args.routeFk]); - await closure.start(tickets, response.locals); + await closure(Self, tickets); // Send route report to the agency - const agencyMail = await db.findValue(` + const [agencyMail] = await Self.rawSql(` SELECT am.reportMail FROM route r JOIN agencyMode am ON am.id = r.agencyModeFk - WHERE r.id = ?`, [reqArgs.routeId]); + WHERE r.id = ?`, [args.routeFk]); if (agencyMail) { - const args = Object.assign({ - routeId: Number.parseInt(reqArgs.routeId), + const email = new Email('driver-route', { + id: args.routeFk, recipient: agencyMail - }, response.locals); - - const email = new Email('driver-route', args); + }); await email.send(); } - } catch (error) { - next(error); - } + + return { + message: 'Success' + }; + }; }; diff --git a/print/methods/closure/closeByTicket.js b/modules/ticket/back/methods/ticket/closeByTicket.js similarity index 52% rename from print/methods/closure/closeByTicket.js rename to modules/ticket/back/methods/ticket/closeByTicket.js index c71b3ecd0..8884897c2 100644 --- a/print/methods/closure/closeByTicket.js +++ b/modules/ticket/back/methods/ticket/closeByTicket.js @@ -1,21 +1,36 @@ -const db = require('vn-print/core/database'); const closure = require('./closure'); -module.exports = async function(request, response, next) { - try { - const reqArgs = request.query; +module.exports = Self => { + Self.remoteMethodCtx('closeByTicket', { + description: 'Makes the closure process by ticket', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The ticket id', + http: {source: 'path'} + } + ], + returns: { + type: 'object', + root: true + }, + http: { + path: `/:id/close-by-ticket`, + verb: 'POST' + } + }); - if (!reqArgs.ticketId) - throw new Error('The argument ticketId is required'); + Self.closeByTicket = async ctx => { + const args = ctx.args; - response.status(200).json({ - message: 'Success' - }); - - const tickets = await db.rawSql(` + const tickets = await Self.rawSql(` SELECT t.id, t.clientFk, + t.companyFk, c.name clientName, c.email recipient, c.salesPersonFk, @@ -34,10 +49,12 @@ module.exports = async function(request, response, next) { WHERE al.code = 'PACKED' AND t.id = ? AND t.refFk IS NULL - GROUP BY e.ticketFk`, [reqArgs.ticketId]); + GROUP BY e.ticketFk`, [args.id]); - await closure.start(tickets, response.locals); - } catch (error) { - next(error); - } + await closure(Self, tickets); + + return { + message: 'Success' + }; + }; }; diff --git a/modules/ticket/back/methods/ticket/closure.js b/modules/ticket/back/methods/ticket/closure.js new file mode 100644 index 000000000..d5fa58e7b --- /dev/null +++ b/modules/ticket/back/methods/ticket/closure.js @@ -0,0 +1,180 @@ +const Report = require('vn-print/core/report'); +const Email = require('vn-print/core/email'); +const smtp = require('vn-print/core/smtp'); +const config = require('vn-print/core/config'); +const storage = require('vn-print/core/storage'); + +module.exports = async function(Self, tickets, reqArgs = {}) { + if (tickets.length == 0) return; + + const failedtickets = []; + for (const ticket of tickets) { + try { + await Self.rawSql(`CALL vn.ticket_closeByTicket(?)`, [ticket.id]); + + const [invoiceOut] = await Self.rawSql(` + SELECT io.id, io.ref, io.serial, cny.code companyCode, io.issued + FROM ticket t + JOIN invoiceOut io ON io.ref = t.refFk + JOIN company cny ON cny.id = io.companyFk + WHERE t.id = ? + `, [ticket.id]); + + const mailOptions = { + overrideAttachments: true, + attachments: [] + }; + + const isToBeMailed = ticket.recipient && ticket.salesPersonFk && ticket.isToBeMailed; + + if (invoiceOut) { + const args = { + reference: invoiceOut.ref, + recipientId: ticket.clientFk, + recipient: ticket.recipient, + replyTo: ticket.salesPersonEmail + }; + + const invoiceReport = new Report('invoice', args); + const stream = await invoiceReport.toPdfStream(); + + const issued = invoiceOut.issued; + const year = issued.getFullYear().toString(); + const month = (issued.getMonth() + 1).toString(); + const day = issued.getDate().toString(); + + const fileName = `${year}${invoiceOut.ref}.pdf`; + + // Store invoice + storage.write(stream, { + type: 'invoice', + path: `${year}/${month}/${day}`, + fileName: fileName + }); + + await Self.rawSql('UPDATE invoiceOut SET hasPdf = true WHERE id = ?', [invoiceOut.id]); + + if (isToBeMailed) { + const invoiceAttachment = { + filename: fileName, + content: stream + }; + + if (invoiceOut.serial == 'E' && invoiceOut.companyCode == 'VNL') { + const exportation = new Report('exportation', args); + const stream = await exportation.toPdfStream(); + const fileName = `CITES-${invoiceOut.ref}.pdf`; + + mailOptions.attachments.push({ + filename: fileName, + content: stream + }); + } + + mailOptions.attachments.push(invoiceAttachment); + + const email = new Email('invoice', args); + await email.send(mailOptions); + } + } else if (isToBeMailed) { + const args = { + id: ticket.id, + recipientId: ticket.clientFk, + recipient: ticket.recipient, + replyTo: ticket.salesPersonEmail + }; + + const email = new Email('delivery-note-link', args); + await email.send(); + } + + // Incoterms authorization + const [{firstOrder}] = await Self.rawSql(` + SELECT COUNT(*) as firstOrder + FROM ticket t + JOIN client c ON c.id = t.clientFk + WHERE t.clientFk = ? + AND NOT t.isDeleted + AND c.isVies + `, [ticket.clientFk]); + + if (firstOrder == 1) { + const args = { + id: ticket.clientFk, + companyId: ticket.companyFk, + recipientId: ticket.clientFk, + recipient: ticket.recipient, + replyTo: ticket.salesPersonEmail + }; + + const email = new Email('incoterms-authorization', args); + await email.send(); + + const [sample] = await Self.rawSql( + `SELECT id + FROM sample + WHERE code = 'incoterms-authorization' + `); + + await Self.rawSql(` + INSERT INTO clientSample (clientFk, typeFk, companyFk) VALUES(?, ?, ?) + `, [ticket.clientFk, sample.id, ticket.companyFk]); + } + } catch (error) { + // Domain not found + if (error.responseCode == 450) + return invalidEmail(ticket); + + // Save tickets on a list of failed ids + failedtickets.push({ + id: ticket.id, + stacktrace: error + }); + } + } + + // Send email with failed tickets + if (failedtickets.length > 0) { + let body = 'This following tickets have failed:

'; + + for (const ticket of failedtickets) { + body += `Ticket: ${ticket.id} +
${ticket.stacktrace}

`; + } + + smtp.send({ + to: config.app.reportEmail, + subject: '[API] Nightly ticket closure report', + html: body + }); + } + + async function invalidEmail(ticket) { + await Self.rawSql(`UPDATE client SET email = NULL WHERE id = ?`, [ + ticket.clientFk + ]); + + const oldInstance = `{"email": "${ticket.recipient}"}`; + const newInstance = `{"email": ""}`; + await Self.rawSql(` + INSERT INTO clientLog (originFk, userFk, action, changedModel, oldInstance, newInstance) + VALUES (?, NULL, 'UPDATE', 'Client', ?, ?)`, [ + ticket.clientFk, + oldInstance, + newInstance + ]); + + const body = `No se ha podido enviar el albarán ${ticket.id} + al cliente ${ticket.clientFk} - ${ticket.clientName} + porque la dirección de email "${ticket.recipient}" no es correcta + o no está disponible.

+ Para evitar que se repita este error, se ha eliminado la dirección de email de la ficha del cliente. + Actualiza la dirección de email con una correcta.`; + + smtp.send({ + to: ticket.salesPersonEmail, + subject: 'No se ha podido enviar el albarán', + html: body + }); + } +}; diff --git a/modules/ticket/back/methods/ticket/collectionLabel.js b/modules/ticket/back/methods/ticket/collectionLabel.js new file mode 100644 index 000000000..064ca0210 --- /dev/null +++ b/modules/ticket/back/methods/ticket/collectionLabel.js @@ -0,0 +1,50 @@ +const {Report} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('collectionLabel', { + description: 'Returns the collection label', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The ticket id', + http: {source: 'path'} + }, + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/collection-label', + verb: 'GET' + } + }); + + Self.collectionLabel = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const report = new Report('collection-label', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="doc-${id}.pdf"`]; + }; +}; diff --git a/modules/ticket/back/methods/ticket/componentUpdate.js b/modules/ticket/back/methods/ticket/componentUpdate.js index 2294e6d25..baa6a0b41 100644 --- a/modules/ticket/back/methods/ticket/componentUpdate.js +++ b/modules/ticket/back/methods/ticket/componentUpdate.js @@ -116,8 +116,8 @@ module.exports = Self => { if (!isEditable) throw new UserError(`The sales of this ticket can't be modified`); - const isProductionBoss = await models.Account.hasRole(userId, 'productionBoss', myOptions); - if (!isProductionBoss) { + const isDeliveryBoss = await models.Account.hasRole(userId, 'deliveryBoss', myOptions); + if (!isDeliveryBoss) { const zoneShipped = await models.Agency.getShipped( args.landed, args.addressFk, @@ -126,8 +126,7 @@ module.exports = Self => { myOptions); if (!zoneShipped || zoneShipped.zoneFk != args.zoneFk) { - const error = `You don't have privileges to change the zone or - for these parameters there are more than one shipping options, talk to agencies`; + const error = `You don't have privileges to change the zone`; throw new UserError(error); } @@ -158,7 +157,8 @@ module.exports = Self => { 'companyFk', 'shipped', 'landed', - 'isDeleted' + 'isDeleted', + 'routeFk' ], include: [ { @@ -169,6 +169,7 @@ module.exports = Self => { }] }, myOptions); + args.routeFk = null; const updatedTicket = Object.assign({}, args); delete updatedTicket.ctx; delete updatedTicket.option; diff --git a/modules/ticket/back/methods/ticket/deleteStowaway.js b/modules/ticket/back/methods/ticket/deleteStowaway.js deleted file mode 100644 index c3e5e0db1..000000000 --- a/modules/ticket/back/methods/ticket/deleteStowaway.js +++ /dev/null @@ -1,105 +0,0 @@ - -module.exports = Self => { - Self.remoteMethodCtx('deleteStowaway', { - description: 'Deletes an stowaway', - accessType: 'WRITE', - accepts: [{ - arg: 'id', - type: 'number', - required: true, - description: 'The ticket id', - http: {source: 'path'} - }], - returns: { - root: true - }, - http: { - path: `/:id/deleteStowaway`, - verb: 'POST' - } - }); - - Self.deleteStowaway = async(ctx, id, options) => { - const models = Self.app.models; - const $t = ctx.req.__; // $translate - const myOptions = {}; - let tx; - - if (typeof options == 'object') - Object.assign(myOptions, options); - - if (!myOptions.transaction) { - tx = await Self.beginTransaction({}); - myOptions.transaction = tx; - } - - try { - const ticket = await Self.findById(id, { - include: [{ - relation: 'ship' - }, { - relation: 'stowaway' - }, { - relation: 'client', - scope: { - include: { - relation: 'salesPersonUser', - scope: { - fields: ['id', 'name'] - } - } - } - }] - }, myOptions); - - let stowawayFk; - let shipFk; - if (ticket.stowaway()) { - shipFk = ticket.stowaway().shipFk; - stowawayFk = ticket.stowaway().id; - } else if (ticket.ship()) { - shipFk = ticket.ship().shipFk; - stowawayFk = ticket.ship().id; - } - - const stowaway = await models.Stowaway.findOne({ - where: { - id: stowawayFk, - shipFk: shipFk - } - }, myOptions); - const result = await stowaway.destroy(myOptions); - - const state = await models.State.findOne({ - where: { - code: 'BOARDING' - } - }, myOptions); - const ticketTracking = await models.TicketTracking.findOne({ - where: { - ticketFk: shipFk, - stateFk: state.id - } - }, myOptions); - - await ticketTracking.destroy(myOptions); - - const salesPerson = ticket.client().salesPersonUser(); - if (salesPerson) { - const origin = ctx.req.headers.origin; - const message = $t('This ticket is not an stowaway anymore', { - ticketId: stowawayFk, - ticketUrl: `${origin}/#!/ticket/${stowawayFk}/sale` - }); - await models.Chat.sendCheckingPresence(ctx, salesPerson.id, message); - } - - if (tx) await tx.commit(); - - return result; - } catch (e) { - if (tx) await tx.rollback(); - throw e; - } - }; -}; diff --git a/modules/ticket/back/methods/ticket/deliveryNoteCsv.js b/modules/ticket/back/methods/ticket/deliveryNoteCsv.js new file mode 100644 index 000000000..55ec4089d --- /dev/null +++ b/modules/ticket/back/methods/ticket/deliveryNoteCsv.js @@ -0,0 +1,84 @@ +const {toCSV} = require('vn-loopback/util/csv'); + +module.exports = Self => { + Self.remoteMethod('deliveryNoteCsv', { + description: 'Returns the delivery note csv', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The ticket id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The client id', + required: false + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/delivery-note-csv', + verb: 'GET' + } + }); + + Self.deliveryNoteCsv = async id => { + const sales = await Self.rawSql(` + SELECT io.ref Invoice, + io.issued InvoiceDate, + s.ticketFk Ticket, + s.itemFk Item, + s.concept Description, + i.size, + i.subName Producer, + s.quantity Quantity, + s.price Price, + s.discount Discount, + s.created Created, + tc.code Taxcode, + tc.description TaxDescription, + i.tag5, + i.value5, + i.tag6, + i.value6, + i.tag7, + i.value7, + i.tag8, + i.value8, + i.tag9, + i.value9, + i.tag10, + i.value10 + FROM vn.sale s + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.supplier s2 ON s2.id = t.companyFk + JOIN vn.itemTaxCountry itc ON itc.itemFk = i.id + AND itc.countryFk = s2.countryFk + JOIN vn.taxClass tc ON tc.id = itc.taxClassFk + LEFT JOIN vn.invoiceOut io ON io.id = t.refFk + WHERE s.ticketFk = ? + ORDER BY s.ticketFk, s.created`, [id]); + const content = toCSV(sales); + + return [content, 'text/csv', `inline; filename="doc-${id}.pdf"`]; + }; +}; diff --git a/modules/ticket/back/methods/ticket/deliveryNoteCsvEmail.js b/modules/ticket/back/methods/ticket/deliveryNoteCsvEmail.js new file mode 100644 index 000000000..79702cbaf --- /dev/null +++ b/modules/ticket/back/methods/ticket/deliveryNoteCsvEmail.js @@ -0,0 +1,117 @@ +const {Email} = require('vn-print'); +const {toCSV} = require('vn-loopback/util/csv'); + +module.exports = Self => { + Self.remoteMethodCtx('deliveryNoteCsvEmail', { + description: 'Returns the delivery note csv', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The ticket id', + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The client id', + required: false + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/delivery-note-csv-email', + verb: 'POST' + } + }); + + Self.deliveryNoteCsvEmail = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const sales = await Self.rawSql(` + SELECT io.ref Invoice, + io.issued InvoiceDate, + s.ticketFk Ticket, + s.itemFk Item, + s.concept Description, + i.size, + i.subName Producer, + s.quantity Quantity, + s.price Price, + s.discount Discount, + s.created Created, + tc.code Taxcode, + tc.description TaxDescription, + i.tag5, + i.value5, + i.tag6, + i.value6, + i.tag7, + i.value7, + i.tag8, + i.value8, + i.tag9, + i.value9, + i.tag10, + i.value10 + FROM vn.sale s + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.supplier s2 ON s2.id = t.companyFk + JOIN vn.itemTaxCountry itc ON itc.itemFk = i.id + AND itc.countryFk = s2.countryFk + JOIN vn.taxClass tc ON tc.id = itc.taxClassFk + LEFT JOIN vn.invoiceOut io ON io.id = t.refFk + WHERE s.ticketFk = ? + ORDER BY s.ticketFk, s.created`, [id]); + + const content = toCSV(sales); + const fileName = `ticket_${id}.csv`; + const email = new Email('delivery-note', params); + + return email.send({ + overrideAttachments: true, + attachments: [{ + filename: fileName, + content: content + }] + }); + }; +}; diff --git a/modules/ticket/back/methods/ticket/deliveryNoteEmail.js b/modules/ticket/back/methods/ticket/deliveryNoteEmail.js new file mode 100644 index 000000000..cf9f5dd62 --- /dev/null +++ b/modules/ticket/back/methods/ticket/deliveryNoteEmail.js @@ -0,0 +1,65 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('deliveryNoteEmail', { + description: 'Sends the delivery note email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The ticket id', + http: {source: 'path'} + }, + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id to send to the recipient preferred language', + required: false + }, + { + arg: 'type', + type: 'string', + description: 'The delivery note type [ deliveryNote, proforma, withoutPrices ]', + required: false + }, + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/:id/delivery-note-email', + verb: 'POST' + } + }); + + Self.deliveryNoteEmail = async ctx => { + const args = Object.assign({}, ctx.args); + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const email = new Email('delivery-note', params); + + return email.send(); + }; +}; diff --git a/modules/ticket/back/methods/ticket/deliveryNotePdf.js b/modules/ticket/back/methods/ticket/deliveryNotePdf.js new file mode 100644 index 000000000..b2b3f7198 --- /dev/null +++ b/modules/ticket/back/methods/ticket/deliveryNotePdf.js @@ -0,0 +1,62 @@ +const {Report} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('deliveryNotePdf', { + description: 'Returns the delivery note pdf', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'The ticket id', + http: {source: 'path'} + }, + { + arg: 'recipientId', + type: 'number', + description: 'The client id', + required: false + }, + { + arg: 'type', + type: 'string', + description: 'The delivery note type [ deliveryNote, proforma, withoutPrices ]', + required: false + }, + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/:id/delivery-note-pdf', + verb: 'GET' + } + }); + + Self.deliveryNotePdf = async(ctx, id) => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const report = new Report('delivery-note', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="doc-${id}.pdf"`]; + }; +}; diff --git a/modules/ticket/back/methods/ticket/filter.js b/modules/ticket/back/methods/ticket/filter.js index 58c440e95..da8f65be2 100644 --- a/modules/ticket/back/methods/ticket/filter.js +++ b/modules/ticket/back/methods/ticket/filter.js @@ -132,6 +132,8 @@ module.exports = Self => { Self.filter = async(ctx, filter, options) => { const userId = ctx.req.accessToken.userId; const conn = Self.dataSource.connector; + const date = new Date(); + date.setHours(0, 0, 0, 0); const models = Self.app.models; const args = ctx.args; @@ -198,22 +200,7 @@ module.exports = Self => { return {'t.routeFk': {neq: null}}; return {'t.routeFk': null}; case 'pending': - if (value) { - return {and: [ - {'st.alertLevel': 0}, - {'st.code': {nin: [ - 'OK', - 'BOARDING', - 'PRINTED', - 'PRINTED_AUTO', - 'PICKER_DESIGNED' - ]}} - ]}; - } else { - return {and: [ - {'st.alertLevel': {gt: 0}} - ]}; - } + return {'st.isNotValidated': value}; case 'id': case 'clientFk': case 'agencyModeFk': @@ -297,7 +284,8 @@ module.exports = Self => { stmts.push(stmt); stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.sale_getProblems'); - stmts.push(` + + stmt = new ParameterizedSQL(` CREATE TEMPORARY TABLE tmp.sale_getProblems (INDEX (ticketFk)) ENGINE = MEMORY @@ -305,7 +293,9 @@ module.exports = Self => { FROM tmp.filter f LEFT JOIN alertLevel al ON al.id = f.alertLevel WHERE (al.code = 'FREE' OR f.alertLevel IS NULL) - AND f.shipped >= CURDATE()`); + AND f.shipped >= ?`, [date]); + stmts.push(stmt); + stmts.push('CALL ticket_getProblems(FALSE)'); stmt = new ParameterizedSQL(` @@ -324,7 +314,7 @@ module.exports = Self => { case true: condition = `or`; hasProblem = true; - range = 0; + range = {neq: null}; hasWhere = true; break; @@ -340,7 +330,7 @@ module.exports = Self => { {'tp.isFreezed': hasProblem}, {'tp.risk': hasProblem}, {'tp.hasTicketRequest': hasProblem}, - {'tp.isAvailable': range} + {'tp.itemShortage': range} ]}; if (hasWhere) diff --git a/modules/ticket/back/methods/ticket/getPossibleStowaways.js b/modules/ticket/back/methods/ticket/getPossibleStowaways.js deleted file mode 100644 index c97e3de89..000000000 --- a/modules/ticket/back/methods/ticket/getPossibleStowaways.js +++ /dev/null @@ -1,74 +0,0 @@ -const UserError = require('vn-loopback/util/user-error'); - -module.exports = Self => { - Self.remoteMethod('getPossibleStowaways', { - description: 'Returns a list of allowed tickets for a stowaway ticket', - accessType: 'READ', - accepts: [{ - arg: 'id', - type: 'number', - required: true, - description: 'ticket id', - http: {source: 'path'} - }], - returns: { - root: true - }, - http: { - path: `/:id/getPossibleStowaways`, - verb: 'GET' - } - }); - - Self.getPossibleStowaways = async(ticketFk, options) => { - const models = Self.app.models; - const myOptions = {}; - - if (typeof options == 'object') - Object.assign(myOptions, options); - - const canHaveStowaway = await models.Ticket.canHaveStowaway(ticketFk, myOptions); - - if (!canHaveStowaway) - throw new UserError(`Can't create stowaway for this ticket`); - - const ship = await models.Ticket.findById(ticketFk, null, myOptions); - - if (!ship || !ship.shipped) - return []; - - const lowestDate = new Date(ship.shipped.getTime()); - lowestDate.setHours(0, 0, -1, 0); - - const highestDate = new Date(ship.shipped.getTime()); - highestDate.setHours(23, 59, 59); - - const possibleStowaways = await models.Ticket.find({ - where: { - id: {neq: ticketFk}, - clientFk: ship.clientFk, - addressFk: ship.addressFk, - agencyModeFk: ship.agencyModeFk, - warehouseFk: {neq: ship.warehouseFk}, - shipped: { - between: [lowestDate.toJSON(), highestDate.toJSON()] - } - }, - include: [ - {relation: 'agencyMode'}, - {relation: 'warehouse'}, - {relation: 'ticketState', - scope: { - fields: ['stateFk'], - include: { - relation: 'state', - fields: ['id', 'name'], - } - }, - }, - ] - }, myOptions); - - return possibleStowaways; - }; -}; diff --git a/modules/ticket/back/methods/ticket/getSales.js b/modules/ticket/back/methods/ticket/getSales.js index 6dfee5dfa..3e45b3fb5 100644 --- a/modules/ticket/back/methods/ticket/getSales.js +++ b/modules/ticket/back/methods/ticket/getSales.js @@ -94,7 +94,7 @@ module.exports = Self => { sale.visible = itemStock.visible; sale.claim = claimedSales.get(sale.id); if (problems) { - sale.isAvailable = problems.isAvailable; + sale.itemShortage = problems.itemShortage; sale.hasTicketRequest = problems.hasTicketRequest; sale.hasComponentLack = problems.hasComponentLack; } diff --git a/modules/ticket/back/methods/ticket/isEditable.js b/modules/ticket/back/methods/ticket/isEditable.js index a444691ac..5b9a397a1 100644 --- a/modules/ticket/back/methods/ticket/isEditable.js +++ b/modules/ticket/back/methods/ticket/isEditable.js @@ -31,10 +31,10 @@ module.exports = Self => { }, myOptions); const isSalesAssistant = await Self.app.models.Account.hasRole(userId, 'salesAssistant', myOptions); - const isProductionBoss = await Self.app.models.Account.hasRole(userId, 'productionBoss', myOptions); + const isDeliveryBoss = await Self.app.models.Account.hasRole(userId, 'deliveryBoss', myOptions); const isBuyer = await Self.app.models.Account.hasRole(userId, 'buyer', myOptions); - const isValidRole = isSalesAssistant || isProductionBoss || isBuyer; + const isValidRole = isSalesAssistant || isDeliveryBoss || isBuyer; let alertLevel = state ? state.alertLevel : null; let ticket = await Self.app.models.Ticket.findById(id, { diff --git a/modules/ticket/back/methods/ticket/makeInvoice.js b/modules/ticket/back/methods/ticket/makeInvoice.js index befc75ffc..4e9c22a24 100644 --- a/modules/ticket/back/methods/ticket/makeInvoice.js +++ b/modules/ticket/back/methods/ticket/makeInvoice.js @@ -26,6 +26,8 @@ module.exports = function(Self) { Self.makeInvoice = async(ctx, ticketsIds, options) => { const userId = ctx.req.accessToken.userId; const models = Self.app.models; + const date = new Date(); + date.setHours(0, 0, 0, 0); const myOptions = {}; let tx; @@ -81,7 +83,7 @@ module.exports = function(Self) { WHERE id IN(?) AND refFk IS NULL `, [ticketsIds], myOptions); - await Self.rawSql('CALL invoiceOut_new(?, CURDATE(), null, @invoiceId)', [serial], myOptions); + await Self.rawSql('CALL invoiceOut_new(?, ?, null, @invoiceId)', [serial, date], myOptions); const [resultInvoice] = await Self.rawSql('SELECT @invoiceId id', [], myOptions); diff --git a/modules/ticket/back/methods/ticket/priceDifference.js b/modules/ticket/back/methods/ticket/priceDifference.js index e0ffac55a..989e0e5ce 100644 --- a/modules/ticket/back/methods/ticket/priceDifference.js +++ b/modules/ticket/back/methods/ticket/priceDifference.js @@ -78,8 +78,8 @@ module.exports = Self => { if (!isEditable) throw new UserError(`The sales of this ticket can't be modified`); - const isProductionBoss = await models.Account.hasRole(userId, 'productionBoss', myOptions); - if (!isProductionBoss) { + const isDeliveryBoss = await models.Account.hasRole(userId, 'deliveryBoss', myOptions); + if (!isDeliveryBoss) { const zoneShipped = await models.Agency.getShipped( args.landed, args.addressId, @@ -88,8 +88,7 @@ module.exports = Self => { myOptions); if (!zoneShipped || zoneShipped.zoneFk != args.zoneId) { - const error = `You don't have privileges to change the zone or - for these parameters there are more than one shipping options, talk to agencies`; + const error = `You don't have privileges to change the zone`; throw new UserError(error); } diff --git a/modules/ticket/back/methods/ticket/refund.js b/modules/ticket/back/methods/ticket/refund.js new file mode 100644 index 000000000..620c8b0c7 --- /dev/null +++ b/modules/ticket/back/methods/ticket/refund.js @@ -0,0 +1,54 @@ +module.exports = Self => { + Self.remoteMethod('refund', { + description: 'Create refund tickets with all their sales and services', + accessType: 'WRITE', + accepts: [ + { + arg: 'ticketsIds', + type: ['number'], + required: true + }, + ], + returns: { + type: ['number'], + root: true + }, + http: { + path: `/refund`, + verb: 'post' + } + }); + + Self.refund = async(ticketsIds, options) => { + const models = Self.app.models; + const myOptions = {}; + let tx; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + const filter = {where: {ticketFk: {inq: ticketsIds}}}; + + const sales = await models.Sale.find(filter, myOptions); + const salesIds = sales.map(sale => sale.id); + + const services = await models.TicketService.find(filter, myOptions); + const servicesIds = services.map(service => service.id); + + const refundedTickets = await models.Sale.refund(salesIds, servicesIds, myOptions); + + if (tx) await tx.commit(); + + return refundedTickets; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/modules/ticket/back/methods/ticket/sendSms.js b/modules/ticket/back/methods/ticket/sendSms.js index efe8ff206..a0adcae07 100644 --- a/modules/ticket/back/methods/ticket/sendSms.js +++ b/modules/ticket/back/methods/ticket/sendSms.js @@ -45,7 +45,7 @@ module.exports = Self => { const userId = ctx.req.accessToken.userId; try { - const sms = await Self.app.models.Sms.send(ctx, id, destination, message); + const sms = await Self.app.models.Sms.send(ctx, destination, message); const logRecord = { originFk: id, userFk: userId, diff --git a/modules/ticket/back/methods/ticket/setDeleted.js b/modules/ticket/back/methods/ticket/setDeleted.js index 38bd6e7b5..cec8096a6 100644 --- a/modules/ticket/back/methods/ticket/setDeleted.js +++ b/modules/ticket/back/methods/ticket/setDeleted.js @@ -107,28 +107,9 @@ module.exports = Self => { } } } - }, { - relation: 'ship' - }, { - relation: 'stowaway' }] }, myOptions); - // Change state to "fixing" if contains an stowaway and remove the link between them - let otherTicketId; - if (ticket.stowaway()) - otherTicketId = ticket.stowaway().shipFk; - else if (ticket.ship()) - otherTicketId = ticket.ship().id; - - if (otherTicketId) { - await models.Ticket.deleteStowaway(ctx, otherTicketId, myOptions); - await models.TicketTracking.changeState(ctx, { - ticketFk: otherTicketId, - code: 'FIXING' - }, myOptions); - } - // Send notification to salesPerson const salesPersonUser = ticket.client().salesPersonUser(); if (salesPersonUser) { @@ -142,6 +123,25 @@ module.exports = Self => { const updatedTicket = await ticket.updateAttribute('isDeleted', true, myOptions); + const [ticketCollection] = await models.TicketCollection.find({ + fields: ['id'], + where: { + ticketFk: ticket.id + } + }); + + if (ticketCollection) + await models.TicketCollection.destroyById(ticketCollection.id, myOptions); + + await Self.rawSql(` + DELETE sc + FROM vn.saleGroup sg + JOIN vn.sectorCollectionSaleGroup scsg ON scsg.saleGroupFk = sg.id + JOIN vn.sectorCollection sc ON sc.id = scsg.sectorCollectionFk + JOIN vn.saleGroupDetail sgd ON sgd.saleGroupFk = sg.id + JOIN vn.sale s ON s.id = sgd.saleFk + WHERE s.ticketFk = ?;`, [ticket.id], myOptions); + if (tx) await tx.commit(); return updatedTicket; diff --git a/modules/ticket/back/methods/ticket/specs/canBeInvoiced.spec.js b/modules/ticket/back/methods/ticket/specs/canBeInvoiced.spec.js index 43f5b93df..8b7e1685d 100644 --- a/modules/ticket/back/methods/ticket/specs/canBeInvoiced.spec.js +++ b/modules/ticket/back/methods/ticket/specs/canBeInvoiced.spec.js @@ -56,7 +56,6 @@ describe('ticket canBeInvoiced()', () => { it('should return falsy for a ticket shipping in future', async() => { const tx = await models.Ticket.beginTransaction({}); - try { const options = {transaction: tx}; diff --git a/modules/ticket/back/methods/ticket/specs/canHaveStowaway.spec.js b/modules/ticket/back/methods/ticket/specs/canHaveStowaway.spec.js deleted file mode 100644 index 2bd25c2d2..000000000 --- a/modules/ticket/back/methods/ticket/specs/canHaveStowaway.spec.js +++ /dev/null @@ -1,39 +0,0 @@ -const models = require('vn-loopback/server/server').models; - -describe('ticket canHaveStowaway()', () => { - it('should return true if the ticket warehouse have hasStowaway equal 1', async() => { - const tx = await models.Ticket.beginTransaction({}); - - try { - const options = {transaction: tx}; - - const ticketId = 16; - const canStowaway = await models.Ticket.canHaveStowaway(ticketId, options); - - expect(canStowaway).toBeTruthy(); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); - - it('should return false if the ticket warehouse dont have hasStowaway equal 0', async() => { - const tx = await models.Ticket.beginTransaction({}); - - try { - const options = {transaction: tx}; - - const ticketId = 10; - const canStowaway = await models.Ticket.canHaveStowaway(ticketId, options); - - expect(canStowaway).toBeFalsy(); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); -}); diff --git a/modules/ticket/back/methods/ticket/specs/componentUpdate.spec.js b/modules/ticket/back/methods/ticket/specs/componentUpdate.spec.js index 2aa2a07c4..b3291c25a 100644 --- a/modules/ticket/back/methods/ticket/specs/componentUpdate.spec.js +++ b/modules/ticket/back/methods/ticket/specs/componentUpdate.spec.js @@ -18,9 +18,12 @@ describe('ticket componentUpdate()', () => { beforeAll(async() => { const deliveryComponenet = await models.Component.findOne({where: {code: 'delivery'}}); deliveryComponentId = deliveryComponenet.id; - componentOfSaleSeven = `SELECT value FROM vn.saleComponent WHERE saleFk = 7 AND componentFk = ${deliveryComponentId}`; - componentOfSaleEight = `SELECT value FROM vn.saleComponent WHERE saleFk = 8 AND componentFk = ${deliveryComponentId}`; - + componentOfSaleSeven = `SELECT value + FROM vn.saleComponent + WHERE saleFk = 7 AND componentFk = ${deliveryComponentId}`; + componentOfSaleEight = `SELECT value + FROM vn.saleComponent + WHERE saleFk = 8 AND componentFk = ${deliveryComponentId}`; [componentValue] = await models.SaleComponent.rawSql(componentOfSaleSeven); firstvalueBeforeChange = componentValue.value; diff --git a/modules/ticket/back/methods/ticket/specs/deleteStowaway.spec.js b/modules/ticket/back/methods/ticket/specs/deleteStowaway.spec.js deleted file mode 100644 index 62bfc71be..000000000 --- a/modules/ticket/back/methods/ticket/specs/deleteStowaway.spec.js +++ /dev/null @@ -1,75 +0,0 @@ -const models = require('vn-loopback/server/server').models; - -describe('ticket deleteStowaway()', () => { - const shipId = 16; - const stowawayId = 17; - const ctx = { - req: { - accessToken: {userId: 18}, - headers: {origin: 'http://localhost'} - } - }; - ctx.req.__ = (value, params) => { - return params.nickname; - }; - - it(`should create an stowaway, delete it and see the states of both stowaway and ship go back to the last states`, async() => { - const tx = await models.Ticket.beginTransaction({}); - - try { - const options = {transaction: tx}; - - await models.Stowaway.rawSql(` - INSERT INTO stowaway (id, shipFk) VALUES (?, ?) - `, [stowawayId, shipId], options); - await models.Stowaway.rawSql( - `CALL ticketStateUpdate(?, ?)`, [shipId, 'BOARDING'], options); - await models.Stowaway.rawSql( - `CALL ticketStateUpdate(?, ?)`, [stowawayId, 'BOARDING'], options); - - let createdStowaways = await models.Stowaway.count({id: stowawayId, shipFk: shipId}, options); - - expect(createdStowaways).toEqual(1); - - let shipState = await models.TicketLastState.findOne({ - where: { - ticketFk: shipId - } - }, options); - let stowawayState = await models.TicketLastState.findOne({ - where: { - ticketFk: stowawayId - } - }, options); - - expect(shipState.name).toEqual('Embarcando'); - expect(stowawayState.name).toEqual('Embarcando'); - - await models.Ticket.deleteStowaway(ctx, shipId, options); - await models.Ticket.deleteStowaway(ctx, stowawayId, options); - - createdStowaways = await models.Stowaway.count({id: stowawayId, shipFk: shipId}, options); - - expect(createdStowaways).toEqual(0); - - shipState = await models.TicketLastState.findOne({ - where: { - ticketFk: shipId - } - }, options); - stowawayState = await models.TicketLastState.findOne({ - where: { - ticketFk: stowawayId - } - }, options); - - expect(shipState.name).toEqual('OK'); - expect(stowawayState.name).toEqual('Libre'); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); -}); diff --git a/modules/ticket/back/methods/ticket/specs/filter.spec.js b/modules/ticket/back/methods/ticket/specs/filter.spec.js index b251d5335..c3dc40092 100644 --- a/modules/ticket/back/methods/ticket/specs/filter.spec.js +++ b/modules/ticket/back/methods/ticket/specs/filter.spec.js @@ -39,7 +39,7 @@ describe('ticket filter()', () => { const filter = {}; const result = await models.Ticket.filter(ctx, filter, options); - expect(result.length).toEqual(4); + expect(result.length).toEqual(6); await tx.rollback(); } catch (e) { @@ -153,7 +153,7 @@ describe('ticket filter()', () => { const secondRow = result[1]; const thirdRow = result[2]; - expect(result.length).toEqual(12); + expect(result.length).toEqual(17); expect(firstRow.state).toEqual('Entregado'); expect(secondRow.state).toEqual('Entregado'); expect(thirdRow.state).toEqual('Entregado'); @@ -213,7 +213,7 @@ describe('ticket filter()', () => { const filter = {}; const result = await models.Ticket.filter(ctx, filter, options); - expect(result.length).toEqual(2); + expect(result.length).toEqual(3); await tx.rollback(); } catch (e) { diff --git a/modules/ticket/back/methods/ticket/specs/getPossibleStowaways.spec.js b/modules/ticket/back/methods/ticket/specs/getPossibleStowaways.spec.js deleted file mode 100644 index ed1a327d4..000000000 --- a/modules/ticket/back/methods/ticket/specs/getPossibleStowaways.spec.js +++ /dev/null @@ -1,60 +0,0 @@ -const models = require('vn-loopback/server/server').models; -let UserError = require('vn-loopback/util/user-error'); - -describe('ticket getPossibleStowaways()', () => { - it(`should throw an error if Can't create stowaway for this ticket`, async() => { - const tx = await models.Ticket.beginTransaction({}); - - let error; - - try { - const options = {transaction: tx}; - - const ticketId = 10; - await models.Ticket.getPossibleStowaways(ticketId, options); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - error = e; - } - - expect(error).toEqual(new UserError(`Can't create stowaway for this ticket`)); - }); - - it('should return an empty list of tickets for a valid ticket', async() => { - const tx = await models.Ticket.beginTransaction({}); - - try { - const options = {transaction: tx}; - - const ticketId = 12; - const possibleStowaways = await models.Ticket.getPossibleStowaways(ticketId, options); - - expect(possibleStowaways.length).toEqual(0); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); - - it('should return allowed list of tickets for a valid ticket', async() => { - const tx = await models.Ticket.beginTransaction({}); - - try { - const options = {transaction: tx}; - - const ticketId = 16; - const possibleStowaways = await models.Ticket.getPossibleStowaways(ticketId, options); - - expect(possibleStowaways.length).toEqual(1); - - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); -}); diff --git a/modules/ticket/back/methods/ticket/specs/priceDifference.spec.js b/modules/ticket/back/methods/ticket/specs/priceDifference.spec.js index e9aa5030a..d8c785baa 100644 --- a/modules/ticket/back/methods/ticket/specs/priceDifference.spec.js +++ b/modules/ticket/back/methods/ticket/specs/priceDifference.spec.js @@ -86,8 +86,8 @@ describe('sale priceDifference()', () => { const firstItem = result.items[0]; const secondtItem = result.items[1]; - expect(firstItem.movable).toEqual(440); - expect(secondtItem.movable).toEqual(1980); + expect(firstItem.movable).toEqual(410); + expect(secondtItem.movable).toEqual(1870); await tx.rollback(); } catch (e) { diff --git a/modules/ticket/back/methods/ticket/specs/sendSms.spec.js b/modules/ticket/back/methods/ticket/specs/sendSms.spec.js index 8ec4ca487..f50253b10 100644 --- a/modules/ticket/back/methods/ticket/specs/sendSms.spec.js +++ b/modules/ticket/back/methods/ticket/specs/sendSms.spec.js @@ -1,5 +1,4 @@ const models = require('vn-loopback/server/server').models; -const soap = require('soap'); describe('ticket sendSms()', () => { it('should send a message and log it', async() => { @@ -8,7 +7,6 @@ describe('ticket sendSms()', () => { try { const options = {transaction: tx}; - spyOn(soap, 'createClientAsync').and.returnValue('a so fake client'); const ctx = {req: {accessToken: {userId: 9}}}; const id = 11; const destination = 222222222; diff --git a/modules/ticket/back/methods/ticket/specs/setDeleted.spec.js b/modules/ticket/back/methods/ticket/specs/setDeleted.spec.js index 73ccc116d..1c17d4d0b 100644 --- a/modules/ticket/back/methods/ticket/specs/setDeleted.spec.js +++ b/modules/ticket/back/methods/ticket/specs/setDeleted.spec.js @@ -8,6 +8,12 @@ describe('ticket setDeleted()', () => { accessToken: {userId: userId}, }; + beforeEach(() => { + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + }); + it('should throw an error if the given ticket has a claim', async() => { const tx = await models.Ticket.beginTransaction({}); @@ -29,85 +35,65 @@ describe('ticket setDeleted()', () => { expect(error.message).toEqual('You must delete the claim id %d first'); }); - it('should delete the ticket, remove the stowaway link and change the stowaway ticket state to "FIXING" and get rid of the itemshelving', async() => { + it('should delete a sectorCollection row', async() => { const tx = await models.Ticket.beginTransaction({}); try { const options = {transaction: tx}; - spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ - active: activeCtx - }); const ctx = { req: { - accessToken: {userId: employeeUser}, - headers: { - origin: 'http://localhost:5000' - }, - __: () => {} + accessToken: {userId: 9}, + headers: {origin: 'http://localhost:5000'}, } }; + ctx.req.__ = value => { + return value; + }; + const ticketId = 23; - const sampleTicket = await models.Ticket.findById(12); - const sampleStowaway = await models.Ticket.findById(13); + await models.Ticket.setDeleted(ctx, ticketId, options); - sampleTicket.id = undefined; - const shipTicket = await models.Ticket.create(sampleTicket, options); + const [sectorCollection] = await models.Ticket.rawSql( + `SELECT COUNT(*) numberRows + FROM vn.sectorCollection`, [], options); - sampleStowaway.id = undefined; - const stowawayTicket = await models.Ticket.create(sampleStowaway, options); + expect(sectorCollection.numberRows).toEqual(0); - await models.Stowaway.rawSql(` - INSERT INTO vn.stowaway(id, shipFk) - VALUES (?, ?)`, [stowawayTicket.id, shipTicket.id], options); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); - const boardingState = await models.State.findOne({ - where: { - code: 'BOARDING' + it('should delete a ticketCollection row', async() => { + const tx = await models.Ticket.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = { + req: { + accessToken: {userId: 9}, + headers: {origin: 'http://localhost:5000'}, } - }, options); + }; + ctx.req.__ = value => { + return value; + }; + const [ticketCollectionOld] = await models.Ticket.rawSql( + `SELECT COUNT(*) numberRows + FROM vn.ticketCollection`, [], options); + const ticketId = 23; - await models.TicketTracking.create({ - ticketFk: stowawayTicket.id, - stateFk: boardingState.id, - workerFk: ctx.req.accessToken.userId - }, options); + await models.Ticket.setDeleted(ctx, ticketId, options); - const okState = await models.State.findOne({ - where: { - code: 'OK' - } - }, options); + const [ticketCollection] = await models.Ticket.rawSql( + `SELECT COUNT(*) numberRows + FROM vn.ticketCollection`, [], options); - await models.TicketTracking.create({ - ticketFk: shipTicket.id, - stateFk: okState.id, - workerFk: ctx.req.accessToken.userId - }, options); - - let stowawayTicketState = await models.TicketState.findOne({ - where: { - ticketFk: stowawayTicket.id - } - }, options); - - let stowaway = await models.Stowaway.findById(shipTicket.id, null, options); - - expect(stowaway).toBeDefined(); - expect(stowawayTicketState.code).toEqual('BOARDING'); - - await models.Ticket.setDeleted(ctx, shipTicket.id, options); - - stowawayTicketState = await models.TicketState.findOne({ - where: { - ticketFk: stowawayTicket.id - } - }, options); - - stowaway = await models.Stowaway.findById(shipTicket.id, null, options); - - expect(stowaway).toBeNull(); - expect(stowawayTicketState.code).toEqual('FIXING'); + expect(ticketCollection.numberRows).toBeLessThan(ticketCollectionOld.numberRows); await tx.rollback(); } catch (e) { diff --git a/modules/ticket/back/methods/ticket/specs/updateDiscount.spec.js b/modules/ticket/back/methods/ticket/specs/updateDiscount.spec.js index ae79185e4..1f6712087 100644 --- a/modules/ticket/back/methods/ticket/specs/updateDiscount.spec.js +++ b/modules/ticket/back/methods/ticket/specs/updateDiscount.spec.js @@ -90,7 +90,7 @@ describe('sale updateDiscount()', () => { expect(error.message).toEqual(`The sales of this ticket can't be modified`); }); - it('should update the discount if the salesPerson has mana', async() => { + it('should update the discount if the salesPerson has mana and manaCode = "mana"', async() => { const tx = await models.Ticket.beginTransaction({}); try { @@ -108,8 +108,59 @@ describe('sale updateDiscount()', () => { const newDiscount = 100; const manaDiscount = await models.Component.findOne({where: {code: 'mana'}}, options); const componentId = manaDiscount.id; + const manaCode = 'mana'; - await models.Ticket.updateDiscount(ctx, ticketId, sales, newDiscount, options); + const teamOne = 96; + const userId = ctx.req.accessToken.userId; + const business = await models.Business.findOne({where: {workerFk: userId}}, options); + await business.updateAttribute('departmentFk', teamOne, options); + + await models.Ticket.updateDiscount(ctx, ticketId, sales, newDiscount, manaCode, options); + + const updatedSale = await models.Sale.findById(originalSaleId, null, options); + const createdSaleComponent = await models.SaleComponent.findOne({ + where: { + componentFk: componentId, + saleFk: originalSaleId + } + }, options); + + expect(createdSaleComponent.componentFk).toEqual(componentId); + expect(updatedSale.discount).toEqual(100); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should update the discount if the salesPerson has mana and manaCode = "manaClaim"', async() => { + const tx = await models.Ticket.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const ctx = { + req: { + accessToken: {userId: 18}, + headers: {origin: 'localhost:5000'}, + __: () => {} + } + }; + const ticketId = 11; + const sales = [originalSaleId]; + const newDiscount = 100; + const manaDiscount = await models.Component.findOne({where: {code: 'manaClaim'}}, options); + const componentId = manaDiscount.id; + const manaCode = 'manaClaim'; + + const teamOne = 96; + const userId = ctx.req.accessToken.userId; + const business = await models.Business.findOne({where: {workerFk: userId}}, options); + await business.updateAttribute('departmentFk', teamOne, options); + + await models.Ticket.updateDiscount(ctx, ticketId, sales, newDiscount, manaCode, options); const updatedSale = await models.Sale.findById(originalSaleId, null, options); const createdSaleComponent = await models.SaleComponent.findOne({ diff --git a/modules/ticket/back/methods/ticket/updateDiscount.js b/modules/ticket/back/methods/ticket/updateDiscount.js index cf217348a..4dd346161 100644 --- a/modules/ticket/back/methods/ticket/updateDiscount.js +++ b/modules/ticket/back/methods/ticket/updateDiscount.js @@ -23,6 +23,12 @@ module.exports = Self => { description: 'The new discount', type: 'number', required: true + }, + { + arg: 'manaCode', + description: 'The type of mana', + type: 'string', + required: false } ], returns: { @@ -35,7 +41,7 @@ module.exports = Self => { } }); - Self.updateDiscount = async(ctx, id, salesIds, newDiscount, options) => { + Self.updateDiscount = async(ctx, id, salesIds, newDiscount, manaCode, options) => { const $t = ctx.req.__; // $translate const models = Self.app.models; const myOptions = {}; @@ -92,13 +98,8 @@ module.exports = Self => { if (isLocked || (!hasAllowedRoles && alertLevel > 0)) throw new UserError(`The sales of this ticket can't be modified`); - const usesMana = await models.WorkerMana.findOne({ - where: { - workerFk: userId - }, - fields: 'amount'}, myOptions); - - const componentCode = usesMana ? 'mana' : 'buyerDiscount'; + const usesMana = await models.Sale.usesMana(ctx, myOptions); + const componentCode = usesMana ? manaCode : 'buyerDiscount'; const discountComponent = await models.Component.findOne({ where: {code: componentCode}}, myOptions); @@ -109,14 +110,38 @@ module.exports = Self => { for (let sale of sales) { const oldDiscount = sale.discount; const value = ((-sale.price * newDiscount) / 100); - const newComponent = models.SaleComponent.upsert({ - saleFk: sale.id, - value: value, - componentFk: componentId}, myOptions); + + const manaComponent = await models.Component.findOne({ + where: {code: 'mana'} + }, myOptions); + + const manaClaimComponent = await models.Component.findOne({ + where: {code: 'manaClaim'} + }, myOptions); + + const [oldComponent] = await models.SaleComponent.find({ + where: { + and: [ + {saleFk: sale.id}, + {componentFk: {inq: [manaComponent.id, manaClaimComponent.id]}} + ] + } + }, myOptions); + + let deletedComponent; + if (oldComponent) { + const filter = { + saleFk: sale.id, + componentFk: oldComponent.componentFk + }; + deletedComponent = await models.SaleComponent.destroyAll(filter, myOptions); + } + + const newComponent = await createSaleComponent(sale.id, value, componentId, myOptions); const updatedSale = sale.updateAttribute('discount', newDiscount, myOptions); - promises.push(newComponent, updatedSale); + promises.push(newComponent, updatedSale, deletedComponent); const change = `${oldDiscount}% ➔ *${newDiscount}%*`; changesMade += `\r\n-${sale.itemFk}: ${sale.concept} (${sale.quantity}) ${change}`; @@ -159,4 +184,14 @@ module.exports = Self => { throw e; } }; + + async function createSaleComponent(saleId, value, componentId, myOptions) { + const models = Self.app.models; + + return models.SaleComponent.upsert({ + saleFk: saleId, + value: value, + componentFk: componentId + }, myOptions); + } }; diff --git a/modules/ticket/back/model-config.json b/modules/ticket/back/model-config.json index 5d5f08694..21e800b36 100644 --- a/modules/ticket/back/model-config.json +++ b/modules/ticket/back/model-config.json @@ -5,6 +5,9 @@ "AnnualAverageInvoiced": { "dataSource": "vn" }, + "Boxing": { + "dataSource": "vn" + }, "Component": { "dataSource": "vn" }, @@ -14,9 +17,15 @@ "Expedition": { "dataSource": "vn" }, + "ExpeditionState": { + "dataSource": "vn" + }, "Packaging": { "dataSource": "vn" }, + "PackingSiteConfig": { + "dataSource": "vn" + }, "PrintServerQueue": { "dataSource": "vn" }, @@ -35,10 +44,10 @@ "State":{ "dataSource": "vn" }, - "Stowaway": { + "Ticket": { "dataSource": "vn" }, - "Ticket": { + "TicketCollection": { "dataSource": "vn" }, "TicketDms": { @@ -53,6 +62,9 @@ "TicketPackaging": { "dataSource": "vn" }, + "TicketRefund": { + "dataSource": "vn" + }, "TicketRequest": { "dataSource": "vn" }, diff --git a/modules/ticket/back/models/annual-average-invoiced.json b/modules/ticket/back/models/annual-average-invoiced.json index d1f582011..02f097d41 100644 --- a/modules/ticket/back/models/annual-average-invoiced.json +++ b/modules/ticket/back/models/annual-average-invoiced.json @@ -8,7 +8,7 @@ }, "properties": { "invoiced": { - "type": "Number" + "type": "number" }, "clientFk": { "id": true diff --git a/modules/ticket/back/models/boxing.js b/modules/ticket/back/models/boxing.js new file mode 100644 index 000000000..c251ea0e4 --- /dev/null +++ b/modules/ticket/back/models/boxing.js @@ -0,0 +1,4 @@ +module.exports = Self => { + require('../methods/boxing/getVideo')(Self); + require('../methods/boxing/getVideoList')(Self); +}; diff --git a/modules/ticket/back/models/boxing.json b/modules/ticket/back/models/boxing.json new file mode 100644 index 000000000..5aecbcabe --- /dev/null +++ b/modules/ticket/back/models/boxing.json @@ -0,0 +1,12 @@ +{ + "name": "Boxing", + "base": "PersistedModel", + "acls": [ + { + "accessType": "READ", + "principalType": "ROLE", + "principalId": "$everyone", + "permission": "ALLOW" + } + ] +} diff --git a/modules/ticket/back/models/component-type.json b/modules/ticket/back/models/component-type.json index d72217a24..26daf5216 100644 --- a/modules/ticket/back/models/component-type.json +++ b/modules/ticket/back/models/component-type.json @@ -9,11 +9,11 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "type": { - "type": "String" + "type": "string" }, "isBase":{ "type":"Boolean" diff --git a/modules/ticket/back/models/component.json b/modules/ticket/back/models/component.json index 002b4804f..46ac492c5 100644 --- a/modules/ticket/back/models/component.json +++ b/modules/ticket/back/models/component.json @@ -9,26 +9,26 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "name": { - "type": "String" + "type": "string" }, "classRate": { - "type": "Number" + "type": "number" }, "tax": { - "type": "Number" + "type": "number" }, "isRenewable": { - "type": "Number" + "type": "number" }, "typeFk": { - "type": "Number" + "type": "number" }, "code": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/modules/ticket/back/models/expedition-state.js b/modules/ticket/back/models/expedition-state.js new file mode 100644 index 000000000..af76af718 --- /dev/null +++ b/modules/ticket/back/models/expedition-state.js @@ -0,0 +1,3 @@ +module.exports = function(Self) { + require('../methods/expedition-state/filter')(Self); +}; diff --git a/modules/ticket/back/models/expedition-state.json b/modules/ticket/back/models/expedition-state.json new file mode 100644 index 000000000..262eb2e38 --- /dev/null +++ b/modules/ticket/back/models/expedition-state.json @@ -0,0 +1,28 @@ +{ + "name": "ExpeditionState", + "base": "VnModel", + "options": { + "mysql": { + "table": "expeditionState" + } + }, + "properties": { + "id": { + "id": true, + "type": "number", + "description": "Identifier" + }, + "created": { + "type": "date" + }, + "expeditionFk": { + "type": "number" + }, + "typeFk": { + "type": "number" + }, + "userFk": { + "type": "number" + } + } +} diff --git a/modules/ticket/back/models/expedition.js b/modules/ticket/back/models/expedition.js index 9d6564373..46cde6890 100644 --- a/modules/ticket/back/models/expedition.js +++ b/modules/ticket/back/models/expedition.js @@ -1,3 +1,5 @@ module.exports = function(Self) { require('../methods/expedition/filter')(Self); + require('../methods/expedition/deleteExpeditions')(Self); + require('../methods/expedition/moveExpeditions')(Self); }; diff --git a/modules/ticket/back/models/expedition.json b/modules/ticket/back/models/expedition.json index c0b8d6508..324ad4609 100644 --- a/modules/ticket/back/models/expedition.json +++ b/modules/ticket/back/models/expedition.json @@ -13,17 +13,17 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, - "isBox": { - "type": "Number" + "freightItemFk": { + "type": "number" }, "created": { - "type": "Date" + "type": "date" }, "counter": { - "type": "Number" + "type": "number" } }, "relations": { @@ -55,7 +55,7 @@ "freightItem": { "type": "belongsTo", "model": "Item", - "foreignKey": "isBox" + "foreignKey": "freightItemFk" }, "packaging": { "type": "belongsTo", diff --git a/modules/ticket/back/models/packingSiteConfig.json b/modules/ticket/back/models/packingSiteConfig.json new file mode 100644 index 000000000..8f0032d41 --- /dev/null +++ b/modules/ticket/back/models/packingSiteConfig.json @@ -0,0 +1,28 @@ +{ + "name": "PackingSiteConfig", + "base": "VnModel", + "options": { + "mysql": { + "table": "packingSiteConfig" + } + }, + "properties": { + "id": { + "id": true, + "type": "number", + "description": "Identifier" + }, + "shinobiUrl": { + "type": "string" + }, + "shinobiGroupKey":{ + "type":"string" + }, + "shinobiToken":{ + "type":"string" + }, + "avgBoxingTime":{ + "type":"number" + } + } +} diff --git a/modules/ticket/back/models/sale-checked.json b/modules/ticket/back/models/sale-checked.json index 8ac52d598..96d790505 100644 --- a/modules/ticket/back/models/sale-checked.json +++ b/modules/ticket/back/models/sale-checked.json @@ -8,7 +8,7 @@ }, "properties": { "isChecked": { - "type": "Number" + "type": "number" }, "saleFk": { "id": true diff --git a/modules/ticket/back/models/sale-component.json b/modules/ticket/back/models/sale-component.json index 3b7991fbb..bf0f73e29 100644 --- a/modules/ticket/back/models/sale-component.json +++ b/modules/ticket/back/models/sale-component.json @@ -8,14 +8,14 @@ }, "properties": { "value": { - "type": "Number" + "type": "number" }, "saleFk": { - "type": "Number", + "type": "number", "id": 2 }, "componentFk": { - "type": "Number", + "type": "number", "id": 1 } }, diff --git a/modules/ticket/back/models/sale-tracking.json b/modules/ticket/back/models/sale-tracking.json index 43b0df160..4a103ea15 100644 --- a/modules/ticket/back/models/sale-tracking.json +++ b/modules/ticket/back/models/sale-tracking.json @@ -9,23 +9,23 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "forceId": false }, "saleFk": { - "type": "Number" + "type": "number" }, "stateFk": { - "type": "Number" + "type": "number" }, "isChecked": { "type": "boolean" }, "created": { - "type": "Date" + "type": "date" }, "originalQuantity": { - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/ticket/back/models/sale.js b/modules/ticket/back/models/sale.js index 9efd66057..ae247fc24 100644 --- a/modules/ticket/back/models/sale.js +++ b/modules/ticket/back/models/sale.js @@ -6,8 +6,9 @@ module.exports = Self => { require('../methods/sale/updateQuantity')(Self); require('../methods/sale/updateConcept')(Self); require('../methods/sale/recalculatePrice')(Self); - require('../methods/sale/payBack')(Self); + require('../methods/sale/refund')(Self); require('../methods/sale/canEdit')(Self); + require('../methods/sale/usesMana')(Self); Self.validatesPresenceOf('concept', { message: `Concept cannot be blank` diff --git a/modules/ticket/back/models/sale.json b/modules/ticket/back/models/sale.json index 767a3e59e..e18f0291f 100644 --- a/modules/ticket/back/models/sale.json +++ b/modules/ticket/back/models/sale.json @@ -14,30 +14,33 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "concept": { - "type": "String", + "type": "string", "required": true }, "quantity": { - "type": "Number" + "type": "number" }, "price": { - "type": "Number" + "type": "number" }, "discount": { - "type": "Number" + "type": "number" }, "reserved": { "type": "boolean" }, "isPicked": { - "type": "Number" + "type": "number" }, "created": { "type": "date" + }, + "originalQuantity":{ + "type": "number" } }, "relations": { diff --git a/modules/ticket/back/models/stowaway.js b/modules/ticket/back/models/stowaway.js deleted file mode 100644 index 780b6b31c..000000000 --- a/modules/ticket/back/models/stowaway.js +++ /dev/null @@ -1,24 +0,0 @@ -const LoopBackContext = require('loopback-context'); -const UserError = require('vn-loopback/util/user-error'); - -module.exports = function(Self) { - Self.observe('before save', async function(ctx) { - const models = Self.app.models; - const canHaveStowaway = await models.Ticket.canHaveStowaway(ctx.instance.shipFk); - - if (!canHaveStowaway) - throw new UserError(`Can't create stowaway for this ticket`); - - if (ctx.isNewInstance) { - let where = { - code: 'BOARDING' - }; - let state = await models.State.findOne({where}); - let params = {ticketFk: ctx.instance.shipFk, stateFk: state.id}; - const loopBackContext = LoopBackContext.getCurrentContext(); - - let httpCtx = {req: loopBackContext.active}; - await models.TicketTracking.changeState(httpCtx, params); - } - }); -}; diff --git a/modules/ticket/back/models/stowaway.json b/modules/ticket/back/models/stowaway.json deleted file mode 100644 index 5a925cd20..000000000 --- a/modules/ticket/back/models/stowaway.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "Stowaway", - "base": "VnModel", - "options": { - "mysql": { - "table": "stowaway" - } - }, - "properties": { - "id": { - "id": true, - "type": "Number", - "forceId": false - }, - "shipFk": { - "type": "Number", - "required": false - }, - "created":{ - "type": "Date", - "required": false - } - }, - "relations": { - "ship": { - "type": "belongsTo", - "model": "Ticket", - "foreignKey": "shipFk" - }, - "ticket": { - "type": "belongsTo", - "model": "Ticket", - "foreignKey": "id" - } - } -} diff --git a/modules/ticket/back/models/ticket-collection.json b/modules/ticket/back/models/ticket-collection.json new file mode 100644 index 000000000..e941ac2ce --- /dev/null +++ b/modules/ticket/back/models/ticket-collection.json @@ -0,0 +1,22 @@ +{ + "name": "TicketCollection", + "base": "VnModel", + "options": { + "mysql": { + "table": "ticketCollection" + } + }, + "properties": { + "id": { + "id": true, + "type": "number" + } + }, + "relations": { + "ticket": { + "type": "belongsTo", + "model": "Ticket", + "foreignKey": "ticketFk" + } + } +} \ No newline at end of file diff --git a/modules/ticket/back/models/ticket-config.json b/modules/ticket/back/models/ticket-config.json index ff6818bb5..a1c96e7f6 100644 --- a/modules/ticket/back/models/ticket-config.json +++ b/modules/ticket/back/models/ticket-config.json @@ -9,11 +9,11 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "scopeDays": { - "type": "Number" + "type": "number" } } } diff --git a/modules/ticket/back/models/ticket-last-state.json b/modules/ticket/back/models/ticket-last-state.json index 6c8bc66d5..e871a8ee6 100644 --- a/modules/ticket/back/models/ticket-last-state.json +++ b/modules/ticket/back/models/ticket-last-state.json @@ -12,10 +12,10 @@ }, "ticketFk": { "id": true, - "type": "Number" + "type": "number" }, "ticketTrackingFk": { - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/ticket/back/models/ticket-log.json b/modules/ticket/back/models/ticket-log.json index 950742e98..169bdeaa0 100644 --- a/modules/ticket/back/models/ticket-log.json +++ b/modules/ticket/back/models/ticket-log.json @@ -9,40 +9,40 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "forceId": false }, "originFk": { - "type": "Number", + "type": "number", "required": true }, "userFk": { - "type": "Number" + "type": "number" }, "action": { - "type": "String", + "type": "string", "required": true }, "changedModel": { - "type": "String" + "type": "string" }, "oldInstance": { - "type": "Object" + "type": "object" }, "newInstance": { - "type": "Object" + "type": "object" }, "creationDate": { - "type": "Date" + "type": "date" }, "changedModelId": { - "type": "Number" + "type": "number" }, "changedModelValue": { - "type": "String" + "type": "string" }, "description": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/modules/ticket/back/models/ticket-methods.js b/modules/ticket/back/models/ticket-methods.js new file mode 100644 index 000000000..f265709e7 --- /dev/null +++ b/modules/ticket/back/models/ticket-methods.js @@ -0,0 +1,37 @@ +module.exports = function(Self) { + require('../methods/ticket/getVolume')(Self); + require('../methods/ticket/getTotalVolume')(Self); + require('../methods/ticket/summary')(Self); + require('../methods/ticket/priceDifference')(Self); + require('../methods/ticket/componentUpdate')(Self); + require('../methods/ticket/new')(Self); + require('../methods/ticket/isEditable')(Self); + require('../methods/ticket/setDeleted')(Self); + require('../methods/ticket/restore')(Self); + require('../methods/ticket/getSales')(Self); + require('../methods/ticket/getSalesPersonMana')(Self); + require('../methods/ticket/filter')(Self); + require('../methods/ticket/canBeInvoiced')(Self); + require('../methods/ticket/makeInvoice')(Self); + require('../methods/ticket/updateEditableTicket')(Self); + require('../methods/ticket/isEmpty')(Self); + require('../methods/ticket/updateDiscount')(Self); + require('../methods/ticket/uploadFile')(Self); + require('../methods/ticket/addSale')(Self); + require('../methods/ticket/transferSales')(Self); + require('../methods/ticket/recalculateComponents')(Self); + require('../methods/ticket/sendSms')(Self); + require('../methods/ticket/isLocked')(Self); + require('../methods/ticket/freightCost')(Self); + require('../methods/ticket/getComponentsSum')(Self); + require('../methods/ticket/refund')(Self); + require('../methods/ticket/deliveryNotePdf')(Self); + require('../methods/ticket/deliveryNoteEmail')(Self); + require('../methods/ticket/deliveryNoteCsv')(Self); + require('../methods/ticket/deliveryNoteCsvEmail')(Self); + require('../methods/ticket/closeAll')(Self); + require('../methods/ticket/closeByTicket')(Self); + require('../methods/ticket/closeByAgency')(Self); + require('../methods/ticket/closeByRoute')(Self); + require('../methods/ticket/collectionLabel')(Self); +}; diff --git a/modules/ticket/back/models/ticket-observation.json b/modules/ticket/back/models/ticket-observation.json index ba4f85ce8..9035e4440 100644 --- a/modules/ticket/back/models/ticket-observation.json +++ b/modules/ticket/back/models/ticket-observation.json @@ -13,11 +13,11 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "description": { - "type": "String", + "type": "string", "required": true } }, diff --git a/modules/ticket/back/models/ticket-packaging.json b/modules/ticket/back/models/ticket-packaging.json index feea541fa..533f4064c 100644 --- a/modules/ticket/back/models/ticket-packaging.json +++ b/modules/ticket/back/models/ticket-packaging.json @@ -13,17 +13,17 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "quantity": { - "type": "Number" + "type": "number" }, "created": { - "type": "Date" + "type": "date" }, "pvp": { - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/ticket/back/models/ticket-refund.json b/modules/ticket/back/models/ticket-refund.json new file mode 100644 index 000000000..8fd0e2306 --- /dev/null +++ b/modules/ticket/back/models/ticket-refund.json @@ -0,0 +1,40 @@ +{ + "name": "TicketRefund", + "base": "Loggable", + "options": { + "mysql": { + "table": "ticketRefund" + } + }, + "log": { + "model": "TicketLog", + "relation": "originalTicket" + }, + "properties": { + "id": { + "id": true, + "type": "number", + "description": "Identifier" + }, + "refundTicketFk": { + "type": "number", + "required": true + }, + "originalTicketFk": { + "type": "number", + "required": true + } + }, + "relations": { + "refundTicket": { + "type": "belongsTo", + "model": "Ticket", + "foreignKey": "refundTicketFk" + }, + "originalTicket": { + "type": "belongsTo", + "model": "Ticket", + "foreignKey": "originalTicketFk" + } + } +} diff --git a/modules/ticket/back/models/ticket-request.js b/modules/ticket/back/models/ticket-request.js index 234978f33..4125126dc 100644 --- a/modules/ticket/back/models/ticket-request.js +++ b/modules/ticket/back/models/ticket-request.js @@ -5,6 +5,7 @@ module.exports = function(Self) { require('../methods/ticket-request/filter')(Self); require('../methods/ticket-request/deny')(Self); require('../methods/ticket-request/confirm')(Self); + require('../methods/ticket-request/getItemTypeWorker')(Self); Self.observe('before save', async function(ctx) { if (ctx.isNewInstance) { diff --git a/modules/ticket/back/models/ticket-request.json b/modules/ticket/back/models/ticket-request.json index f216cd531..01601c7f6 100644 --- a/modules/ticket/back/models/ticket-request.json +++ b/modules/ticket/back/models/ticket-request.json @@ -12,29 +12,29 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "description": { - "type": "String", + "type": "string", "required": true }, "created": { - "type": "Date" + "type": "date" }, "quantity": { - "type": "Number", + "type": "number", "required": true }, "price": { - "type": "Number" + "type": "number" }, "isOk": { - "type": "Boolean" + "type": "boolean" }, "response": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/modules/ticket/back/models/ticket-service-type.json b/modules/ticket/back/models/ticket-service-type.json index 623d0f398..ec2c9232a 100644 --- a/modules/ticket/back/models/ticket-service-type.json +++ b/modules/ticket/back/models/ticket-service-type.json @@ -7,16 +7,16 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "name": { - "type": "String", + "type": "string", "required": true }, "expenseFk": { - "type": "Number", + "type": "number", "mysql": { "columnName": "expenceFk" } diff --git a/modules/ticket/back/models/ticket-service.js b/modules/ticket/back/models/ticket-service.js index aa94c42e3..209727ee4 100644 --- a/modules/ticket/back/models/ticket-service.js +++ b/modules/ticket/back/models/ticket-service.js @@ -3,17 +3,18 @@ const UserError = require('vn-loopback/util/user-error'); module.exports = Self => { Self.observe('before save', async ctx => { const models = Self.app.models; - let changes = ctx.currentInstance || ctx.instance; - if (changes) { - let ticketId = changes.ticketFk; - let isLocked = await models.Ticket.isLocked(ticketId); + const changes = ctx.currentInstance || ctx.instance; + + if (changes && !ctx.isNewInstance) { + const ticketId = changes.ticketFk; + const isLocked = await models.Ticket.isLocked(ticketId); if (isLocked) throw new UserError(`The current ticket can't be modified`); + } - if (changes.ticketServiceTypeFk) { - const ticketServiceType = await models.TicketServiceType.findById(changes.ticketServiceTypeFk); - changes.description = ticketServiceType.name; - } + if (changes && changes.ticketServiceTypeFk) { + const ticketServiceType = await models.TicketServiceType.findById(changes.ticketServiceTypeFk); + changes.description = ticketServiceType.name; } }); diff --git a/modules/ticket/back/models/ticket-service.json b/modules/ticket/back/models/ticket-service.json index 8b0c490a8..347b6b976 100644 --- a/modules/ticket/back/models/ticket-service.json +++ b/modules/ticket/back/models/ticket-service.json @@ -13,32 +13,32 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "ticketFk": { - "type": "Number", + "type": "number", "required": true }, "description": { - "type": "String", + "type": "string", "required": true }, "quantity": { - "type": "Number", + "type": "number", "required": true }, "price": { - "type": "Number", + "type": "number", "required": true }, "taxClassFk": { - "type": "Number", + "type": "number", "required": true }, "ticketServiceTypeFk": { - "type": "Number", + "type": "number", "required": true } }, diff --git a/modules/ticket/back/models/ticket-tracking.json b/modules/ticket/back/models/ticket-tracking.json index c2c365013..e80e2f8f4 100644 --- a/modules/ticket/back/models/ticket-tracking.json +++ b/modules/ticket/back/models/ticket-tracking.json @@ -14,20 +14,20 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "forceId": false }, "created": { - "type": "Date" + "type": "date" }, "ticketFk": { - "type": "Number" + "type": "number" }, "stateFk": { - "type": "Number" + "type": "number" }, "workerFk": { - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/ticket/back/models/ticket-update-action.json b/modules/ticket/back/models/ticket-update-action.json index 3072c2172..e69f7e1ab 100644 --- a/modules/ticket/back/models/ticket-update-action.json +++ b/modules/ticket/back/models/ticket-update-action.json @@ -9,15 +9,15 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "description": "Identifier" }, "description": { - "type": "String", + "type": "string", "required": true }, "code": { - "type": "String" + "type": "string" } }, "acls": [ diff --git a/modules/ticket/back/models/ticket-weekly.json b/modules/ticket/back/models/ticket-weekly.json index 6d432831f..d81baf4ad 100644 --- a/modules/ticket/back/models/ticket-weekly.json +++ b/modules/ticket/back/models/ticket-weekly.json @@ -14,10 +14,10 @@ "properties": { "ticketFk": { "id": true, - "type": "Number" + "type": "number" }, "weekDay": { - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/ticket/back/models/ticket.js b/modules/ticket/back/models/ticket.js index b217eae4d..c05130552 100644 --- a/modules/ticket/back/models/ticket.js +++ b/modules/ticket/back/models/ticket.js @@ -2,34 +2,8 @@ const LoopBackContext = require('loopback-context'); module.exports = Self => { - require('../methods/ticket/getVolume')(Self); - require('../methods/ticket/getTotalVolume')(Self); - require('../methods/ticket/summary')(Self); - require('../methods/ticket/priceDifference')(Self); - require('../methods/ticket/componentUpdate')(Self); - require('../methods/ticket/new')(Self); - require('../methods/ticket/isEditable')(Self); - require('../methods/ticket/setDeleted')(Self); - require('../methods/ticket/restore')(Self); - require('../methods/ticket/getSales')(Self); - require('../methods/ticket/getSalesPersonMana')(Self); - require('../methods/ticket/filter')(Self); - require('../methods/ticket/getPossibleStowaways')(Self); - require('../methods/ticket/canBeInvoiced')(Self); - require('../methods/ticket/makeInvoice')(Self); - require('../methods/ticket/updateEditableTicket')(Self); - require('../methods/ticket/isEmpty')(Self); - require('../methods/ticket/updateDiscount')(Self); - require('../methods/ticket/uploadFile')(Self); - require('../methods/ticket/addSale')(Self); - require('../methods/ticket/transferSales')(Self); - require('../methods/ticket/canHaveStowaway')(Self); - require('../methods/ticket/recalculateComponents')(Self); - require('../methods/ticket/deleteStowaway')(Self); - require('../methods/ticket/sendSms')(Self); - require('../methods/ticket/isLocked')(Self); - require('../methods/ticket/freightCost')(Self); - require('../methods/ticket/getComponentsSum')(Self); + // Methods + require('./ticket-methods')(Self); Self.observe('before save', async function(ctx) { const loopBackContext = LoopBackContext.getCurrentContext(); diff --git a/modules/ticket/back/models/ticket.json b/modules/ticket/back/models/ticket.json index 65127a78c..09b01d213 100644 --- a/modules/ticket/back/models/ticket.json +++ b/modules/ticket/back/models/ticket.json @@ -69,16 +69,6 @@ "model": "Client", "foreignKey": "clientFk" }, - "ship": { - "type": "hasOne", - "model": "Stowaway", - "foreignKey": "shipFk" - }, - "stowaway": { - "type": "hasOne", - "model": "Stowaway", - "foreignKey": "id" - }, "warehouse": { "type": "belongsTo", "model": "Warehouse", @@ -115,6 +105,16 @@ "model": "TicketPackaging", "foreignKey": "ticketFk" }, + "ticketSales": { + "type": "hasMany", + "model": "Sale", + "foreignKey": "ticketFk" + }, + "ticketServices": { + "type": "hasMany", + "model": "TicketService", + "foreignKey": "ticketFk" + }, "tracking": { "type": "hasMany", "model": "TicketTracking", diff --git a/modules/ticket/front/basic-data/step-two/index.html b/modules/ticket/front/basic-data/step-two/index.html index 092c9e746..6be455fc9 100644 --- a/modules/ticket/front/basic-data/step-two/index.html +++ b/modules/ticket/front/basic-data/step-two/index.html @@ -18,7 +18,14 @@ - {{("000000"+sale.itemFk).slice(-6)}} + + + {{::sale.itemFk | zeroFill:6}} + +
{{::sale.item.name}} @@ -83,5 +90,9 @@
- + + diff --git a/modules/ticket/front/boxing/index.html b/modules/ticket/front/boxing/index.html new file mode 100644 index 000000000..7fb3b870e --- /dev/null +++ b/modules/ticket/front/boxing/index.html @@ -0,0 +1,2 @@ + + diff --git a/modules/ticket/front/boxing/index.js b/modules/ticket/front/boxing/index.js new file mode 100644 index 000000000..4e6b398f2 --- /dev/null +++ b/modules/ticket/front/boxing/index.js @@ -0,0 +1,21 @@ +import ngModule from '../module'; +import Section from 'salix/components/section'; + +class Controller extends Section { + constructor($element, $) { + super($element, $); + } + + async $onInit() { + const url = await this.vnApp.getUrl(`ticket/${this.$params.id}/boxing`); + window.open(url).focus(); + } +} + +ngModule.vnComponent('vnTicketBoxing', { + template: require('./index.html'), + controller: Controller, + bindings: { + ticket: '<' + } +}); diff --git a/modules/ticket/front/card/index.js b/modules/ticket/front/card/index.js index 6e38039e2..e63fb9b15 100644 --- a/modules/ticket/front/card/index.js +++ b/modules/ticket/front/card/index.js @@ -6,18 +6,15 @@ class Controller extends ModuleCard { let filter = { include: [ { - relation: 'address'}, + relation: 'address' + }, { - relation: 'ship'}, - { - relation: 'stowaway'}, + relation: 'zone' + }, { relation: 'warehouse', scope: {fields: ['name']} }, - { - relation: 'zone', - }, { relation: 'invoiceOut', scope: {fields: ['id']} @@ -47,7 +44,8 @@ class Controller extends ModuleCard { } }, }, - }, { + }, + { relation: 'ticketState', scope: { fields: ['stateFk'], diff --git a/modules/ticket/front/create/card.html b/modules/ticket/front/create/card.html index 65c45d3dc..e48aea681 100644 --- a/modules/ticket/front/create/card.html +++ b/modules/ticket/front/create/card.html @@ -19,6 +19,7 @@ disabled="!$ctrl.clientId" url="{{ $ctrl.clientId ? 'Clients/'+ $ctrl.clientId +'/addresses' : null }}" fields="['nickname', 'street', 'city']" + where="{isActive: true}" ng-model="$ctrl.addressId" show-field="nickname" value-field="id" diff --git a/modules/ticket/front/descriptor-menu/index.html b/modules/ticket/front/descriptor-menu/index.html index ae5642cf3..0c04b42fb 100644 --- a/modules/ticket/front/descriptor-menu/index.html +++ b/modules/ticket/front/descriptor-menu/index.html @@ -5,6 +5,13 @@ + + Transfer client + - Show as PDF + as PDF + + + as PDF + + + as PDF without prices - Show as CSV + as CSV @@ -36,7 +57,6 @@ vn-click-stop="sendDeliveryNoteMenu.show($event, 'left')" translate> Send Delivery Note... - + + Show Proforma + SMS Minimum import - - Add stowaway - - - Delete stowaway - Recalculate components + + Refund all + @@ -231,27 +249,42 @@ + + + + + + + #{{id}} - {{::name}} + + + + + + + + - - - - - - - - + + + + \ No newline at end of file diff --git a/modules/ticket/front/descriptor-menu/index.js b/modules/ticket/front/descriptor-menu/index.js index 9d4381f7c..e0e7ea849 100644 --- a/modules/ticket/front/descriptor-menu/index.js +++ b/modules/ticket/front/descriptor-menu/index.js @@ -52,7 +52,8 @@ class Controller extends Section { const filter = { include: [{ relation: 'address', - }, { + }, + { relation: 'client', scope: { fields: [ @@ -74,16 +75,16 @@ class Controller extends Section { } } }, - {relation: 'ship'}, - {relation: 'stowaway'}, - {relation: 'invoiceOut'}] + { + relation: 'invoiceOut' + }] }; return this.$http.get(`Tickets/${this.ticketId}`, {filter}) .then(res => this.ticket = res.data) .then(() => { - this.canStowaway(); this.isTicketEditable(); + this.hasDocuware(); }); } @@ -94,6 +95,23 @@ class Controller extends Section { }); } + transferClient() { + this.$http.get(`Clients/${this.ticket.client.id}`).then(client => { + const ticket = this.ticket; + + const params = + { + clientFk: client.data.id, + addressFk: client.data.defaultAddressFk, + }; + + this.$http.patch(`Tickets/${ticket.id}`, params).then(() => { + this.vnApp.showSuccess(this.$t('Data saved!')); + this.reload(); + }); + }); + } + isTicketEditable() { if (!this.ticket) return; @@ -115,33 +133,39 @@ class Controller extends Section { }); } - showPdfDeliveryNote() { - this.vnReport.show('delivery-note', { - recipientId: this.ticket.client.id, - ticketId: this.id, - }); + hasDocuware() { + const params = { + fileCabinet: 'deliveryClient', + dialog: 'findTicket' + }; + this.$http.post(`Docuwares/${this.id}/checkFile`, params) + .then(res => this.hasDocuwareFile = res.data); } - showCsvDeliveryNote() { - this.vnReport.showCsv('delivery-note', { + showPdfDeliveryNote(type) { + this.vnReport.show(`tickets/${this.id}/delivery-note-pdf`, { recipientId: this.ticket.client.id, - ticketId: this.id, + type: type }); } sendPdfDeliveryNote($data) { - return this.vnEmail.send('delivery-note', { + return this.vnEmail.send(`tickets/${this.id}/delivery-note-email`, { recipientId: this.ticket.client.id, - recipient: $data.email, - ticketId: this.id + recipient: $data.email + }); + } + + showCsvDeliveryNote() { + this.vnReport.show(`tickets/${this.id}/delivery-note-csv`, { + recipientId: this.ticket.client.id }); } sendCsvDeliveryNote($data) { - return this.vnEmail.sendCsv('delivery-note', { + return this.vnEmail.send(`tickets/${this.id}/delivery-note-csv-email`, { recipientId: this.ticket.client.id, - recipient: $data.email, - ticketId: this.id + recipient: $data.email }); } @@ -217,27 +241,6 @@ class Controller extends Section { this.$.sms.open(); } - canStowaway() { - this.canShowStowaway = false; - if (!this.isTicketModule || !this.ticket) return; - - this.$http.get(`Tickets/${this.id}/canHaveStowaway`) - .then(res => this.canShowStowaway = !!res.data); - } - - get canDeleteStowaway() { - if (!this.ticket || !this.isTicketModule) - return false; - - return this.ticket.stowaway || this.ticket.ship; - } - - deleteStowaway() { - return this.$http.post(`Tickets/${this.id}/deleteStowaway`) - .then(() => this.reload()) - .then(() => this.vnApp.showSuccess(this.$t('Data saved!'))); - } - makeInvoice() { const params = {ticketsIds: [this.id]}; return this.$http.post(`Tickets/makeInvoice`, params) @@ -261,6 +264,18 @@ class Controller extends Section { .then(() => this.reload()) .then(() => this.vnApp.showSuccess(this.$t('Data saved!'))); } + + async refund() { + const params = {ticketsIds: [this.id]}; + const query = 'Tickets/refund'; + return this.$http.post(query, params).then(res => { + const [refundTicket] = res.data; + this.vnApp.showSuccess(this.$t('The following refund ticket have been created', { + ticketId: refundTicket.id + })); + this.$state.go('ticket.card.sale', {id: refundTicket.id}); + }); + } } Controller.$inject = ['$element', '$scope', 'vnReport', 'vnEmail']; diff --git a/modules/ticket/front/descriptor-menu/index.spec.js b/modules/ticket/front/descriptor-menu/index.spec.js index 288c7508b..1716e36f6 100644 --- a/modules/ticket/front/descriptor-menu/index.spec.js +++ b/modules/ticket/front/descriptor-menu/index.spec.js @@ -122,14 +122,14 @@ describe('Ticket Component vnTicketDescriptorMenu', () => { describe('showPdfDeliveryNote()', () => { it('should open a new window showing a delivery note PDF document', () => { jest.spyOn(window, 'open').mockReturnThis(); - + const type = 'deliveryNote'; const expectedParams = { - ticketId: ticket.id, - recipientId: ticket.client.id + recipientId: ticket.client.id, + type: type }; const serializedParams = $httpParamSerializer(expectedParams); - const expectedPath = `api/report/delivery-note?${serializedParams}`; - controller.showPdfDeliveryNote(); + const expectedPath = `api/tickets/${ticket.id}/delivery-note-pdf?${serializedParams}`; + controller.showPdfDeliveryNote(type); expect(window.open).toHaveBeenCalledWith(expectedPath); }); @@ -142,12 +142,13 @@ describe('Ticket Component vnTicketDescriptorMenu', () => { const $data = {email: 'brucebanner@gothamcity.com'}; const params = { recipient: $data.email, - recipientId: ticket.client.id, - ticketId: ticket.id + recipientId: ticket.client.id }; controller.sendPdfDeliveryNote($data); - expect(controller.vnEmail.send).toHaveBeenCalledWith('delivery-note', params); + const expectedPath = `tickets/${ticket.id}/delivery-note-email`; + + expect(controller.vnEmail.send).toHaveBeenCalledWith(expectedPath, params); }); }); @@ -156,11 +157,10 @@ describe('Ticket Component vnTicketDescriptorMenu', () => { jest.spyOn(window, 'open').mockReturnThis(); const expectedParams = { - ticketId: ticket.id, recipientId: ticket.client.id }; const serializedParams = $httpParamSerializer(expectedParams); - const expectedPath = `api/csv/delivery-note/download?${serializedParams}`; + const expectedPath = `api/tickets/${ticket.id}/delivery-note-csv?${serializedParams}`; controller.showCsvDeliveryNote(); expect(window.open).toHaveBeenCalledWith(expectedPath); @@ -169,21 +169,18 @@ describe('Ticket Component vnTicketDescriptorMenu', () => { describe('sendCsvDeliveryNote()', () => { it('should make a query to the csv delivery-note send endpoint and show a message snackbar', () => { - jest.spyOn(controller.vnApp, 'showMessage'); + jest.spyOn(controller.vnEmail, 'send'); const $data = {email: 'brucebanner@gothamcity.com'}; const expectedParams = { - ticketId: ticket.id, recipient: $data.email, recipientId: ticket.client.id, }; - const serializedParams = $httpParamSerializer(expectedParams); - - $httpBackend.expectGET(`csv/delivery-note/send?${serializedParams}`).respond(); controller.sendCsvDeliveryNote($data); - $httpBackend.flush(); - expect(controller.vnApp.showMessage).toHaveBeenCalled(); + const expectedPath = `tickets/${ticket.id}/delivery-note-csv-email`; + + expect(controller.vnEmail.send).toHaveBeenCalledWith(expectedPath, expectedParams); }); }); @@ -206,7 +203,8 @@ describe('Ticket Component vnTicketDescriptorMenu', () => { it('should make a query and show a success snackbar', () => { jest.spyOn(controller.vnApp, 'showSuccess'); - $httpBackend.whenGET(`Tickets/16`).respond(); + $httpBackend.whenPOST(`Docuwares/${ticket.id}/checkFile`).respond(); + $httpBackend.whenGET(`Tickets/${ticket.id}`).respond(); $httpBackend.expectPOST(`InvoiceOuts/${ticket.invoiceOut.id}/createPdf`).respond(); controller.createPdfInvoice(); $httpBackend.flush(); @@ -229,23 +227,6 @@ describe('Ticket Component vnTicketDescriptorMenu', () => { }); }); - describe('canStowaway()', () => { - it('should make a query and return if the ticket can be stowawayed', () => { - $httpBackend.expect('GET', `Tickets/${ticket.id}/canHaveStowaway`).respond(true); - controller.canStowaway(); - $httpBackend.flush(); - - expect(controller.canShowStowaway).toBeTruthy(); - }); - - it('should not make a query if is not on the ticket module', () => { - $state.getCurrentPath = () => [null, {state: {name: 'client'}}]; - controller.canStowaway(); - - expect(controller.canShowStowaway).toBeFalsy(); - }); - }); - describe('recalculateComponents()', () => { it('should make a query and show a success message', () => { jest.spyOn(controller, 'reload').mockReturnThis(); @@ -260,6 +241,23 @@ describe('Ticket Component vnTicketDescriptorMenu', () => { }); }); + describe('refund()', () => { + it('should make a query and go to ticket.card.sale', () => { + controller.$state.go = jest.fn(); + + controller._id = ticket.id; + + const params = { + ticketsIds: [16] + }; + $httpBackend.expectPOST('Tickets/refund', params).respond([{id: 99}]); + controller.refund(); + $httpBackend.flush(); + + expect(controller.$state.go).toHaveBeenCalledWith('ticket.card.sale', {id: 99}); + }); + }); + describe('showSMSDialog()', () => { it('should set the destionationFk and destination properties and then call the sms open() method', () => { controller.$.sms = {open: () => {}}; @@ -275,4 +273,25 @@ describe('Ticket Component vnTicketDescriptorMenu', () => { }); }); }); + + describe('hasDocuware()', () => { + it('should call hasDocuware method', () => { + $httpBackend.whenPOST(`Docuwares/${ticket.id}/checkFile`).respond(); + controller.hasDocuware(); + $httpBackend.flush(); + }); + }); + + describe('transferClient()', () => { + it(`should perform two queries, a get to obtain the clientData and a patch to update the ticket`, () => { + const client = + { + clientFk: 1101, + addressFk: 1, + }; + $httpBackend.expect('GET', `Clients/${ticket.client.id}`).respond(client); + $httpBackend.expect('PATCH', `Tickets/${ticket.id}`).respond(); + controller.transferClient(); + }); + }); }); diff --git a/modules/ticket/front/descriptor-menu/locale/en.yml b/modules/ticket/front/descriptor-menu/locale/en.yml new file mode 100644 index 000000000..03f93db8d --- /dev/null +++ b/modules/ticket/front/descriptor-menu/locale/en.yml @@ -0,0 +1 @@ +The following refund ticket have been created: "The following refund ticket have been created: {{ticketId}}" \ No newline at end of file diff --git a/modules/ticket/front/descriptor-menu/locale/es.yml b/modules/ticket/front/descriptor-menu/locale/es.yml index 1f4ee710c..968c61f84 100644 --- a/modules/ticket/front/descriptor-menu/locale/es.yml +++ b/modules/ticket/front/descriptor-menu/locale/es.yml @@ -1,8 +1,13 @@ Show Delivery Note...: Ver albarán... Send Delivery Note...: Enviar albarán... -Show as PDF: Ver como PDF -Show as CSV: Ver como CSV +as PDF: como PDF +as CSV: como CSV +as PDF without prices: como PDF sin precios Send PDF: Enviar PDF Send CSV: Enviar CSV Send CSV Delivery Note: Enviar albarán en CSV -Send PDF Delivery Note: Enviar albarán en PDF \ No newline at end of file +Send PDF Delivery Note: Enviar albarán en PDF +Show Proforma: Ver proforma +Refund all: Abonar todo +The following refund ticket have been created: "Se ha creado siguiente ticket de abono: {{ticketId}}" +Transfer client: Transferir cliente \ No newline at end of file diff --git a/modules/ticket/front/descriptor/addStowaway.html b/modules/ticket/front/descriptor/addStowaway.html deleted file mode 100644 index 44d262d51..000000000 --- a/modules/ticket/front/descriptor/addStowaway.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - Ticket id - Shipped - Agency - Warehouse - State - - - - - {{ticket.id}} - {{ticket.landed | date: 'dd/MM/yyyy'}} - {{ticket.agencyMode.name}} - {{ticket.warehouse.name}} - {{ticket.ticketState.state.name}} - - - - - - - \ No newline at end of file diff --git a/modules/ticket/front/descriptor/addStowaway.js b/modules/ticket/front/descriptor/addStowaway.js deleted file mode 100644 index c88bda0af..000000000 --- a/modules/ticket/front/descriptor/addStowaway.js +++ /dev/null @@ -1,32 +0,0 @@ -import ngModule from '../module'; -import Component from 'core/lib/component'; -import './style.scss'; - -class Controller extends Component { - addStowaway(stowaway) { - let params = {id: stowaway.id, shipFk: this.ticket.id}; - this.$http.post(`Stowaways/`, params) - .then(() => this.cardReload()) - .then(() => { - this.vnApp.showSuccess(this.$t('Data saved!')); - this.$.dialog.hide(); - }); - } - - show() { - this.$.dialog.show(); - } - - hide() { - this.$.dialog.hide(); - } -} - -ngModule.vnComponent('vnAddStowaway', { - template: require('./addStowaway.html'), - controller: Controller, - bindings: { - ticket: '<', - cardReload: '&?' - } -}); diff --git a/modules/ticket/front/descriptor/index.html b/modules/ticket/front/descriptor/index.html index 8d7688826..75bcd2801 100644 --- a/modules/ticket/front/descriptor/index.html +++ b/modules/ticket/front/descriptor/index.html @@ -1,6 +1,7 @@ + description="$ctrl.ticket.client.name" + summary="$ctrl.$.summary">
-
- - -
-
- - -
- -
- -
- \ No newline at end of file + + + + \ No newline at end of file diff --git a/modules/ticket/front/descriptor/locale/es.yml b/modules/ticket/front/descriptor/locale/es.yml index f56f29f92..bce9e62d7 100644 --- a/modules/ticket/front/descriptor/locale/es.yml +++ b/modules/ticket/front/descriptor/locale/es.yml @@ -1,12 +1,4 @@ -Ship: Barco -Stowaway: Polizón Cliente: Client -Ship stowaways: Polizones del barco -Stowaways to add: Polizones a añadir -Stowaways of the ticket: Polizones del ticket -Add stowaway: Añadir polizón -Delete stowaway: Eliminar polizón -Are you sure you want to delete this stowaway?: ¿Seguro que quieres eliminar este polizón? Are you sure you want to send it?: ¿Seguro que quieres enviarlo? Show pallet report: Ver hoja de pallet Change shipped hour: Cambiar hora de envío @@ -29,4 +21,5 @@ SMS Minimum import: 'SMS Importe minimo' SMS Pending payment: 'SMS Pago pendiente' Restore ticket: Restaurar ticket You are going to restore this ticket: Vas a restaurar este ticket -Are you sure you want to restore this ticket?: ¿Seguro que quieres restaurar el ticket? \ No newline at end of file +Are you sure you want to restore this ticket?: ¿Seguro que quieres restaurar el ticket? +Are you sure you want to refund all?: ¿Seguro que quieres abonar todo? diff --git a/modules/ticket/front/descriptor/style.scss b/modules/ticket/front/descriptor/style.scss index 1a69feeff..f083f41fc 100644 --- a/modules/ticket/front/descriptor/style.scss +++ b/modules/ticket/front/descriptor/style.scss @@ -1,11 +1,5 @@ @import "variables"; -.add-stowaway { - vn-data-viewer { - width: 640px - } -} - vn-dialog.modal-form { section.header { background-color: $color-main; diff --git a/modules/ticket/front/expedition/index.html b/modules/ticket/front/expedition/index.html index bdbb2c3e8..ec6dc7ee2 100644 --- a/modules/ticket/front/expedition/index.html +++ b/modules/ticket/front/expedition/index.html @@ -8,60 +8,77 @@ auto-load="true"> - - - - - - Expedition - Item - Name - Package type - Counter - externalId - Packager - Created - Palletizer - Scanned - - - - - - - - - {{expedition.id | zeroFill:6}} - - - {{expedition.packagingFk}} - - - {{::expedition.packageItemName}} - {{::expedition.freightItemName}} - {{::expedition.counter}} - {{::expedition.externalId}} - - - {{::expedition.userName | dashIfEmpty}} - - - {{::expedition.created | date:'dd/MM/yyyy HH:mm'}} - - - {{::expedition.scannerUserName | dashIfEmpty}} - - - {{::expedition.scanned | date:'dd/MM/yyyy HH:mm'}} - - - + + + + + + + + + +

Subtotal {{$ctrl.ticket.totalWithoutVat | currency: 'EUR':2}}

+

VAT {{$ctrl.ticket.totalWithVat - $ctrl.ticket.totalWithoutVat | currency: 'EUR':2}}

+

Total {{$ctrl.ticket.totalWithVat | currency: 'EUR':2}}

+
+
+ + + + + + + + Expedition + Item + Name + Package type + Counter + externalId + Created + State + + + + + + + + + + {{expedition.id | zeroFill:6}} + + + {{expedition.packagingFk}} + + + {{::expedition.packageItemName}} + {{::expedition.freightItemName}} + {{::expedition.counter}} + {{::expedition.externalId}} + {{::expedition.created | date:'dd/MM/yyyy HH:mm'}} + {{::expedition.state}} + + + + + + +
- - \ No newline at end of file + on-accept="$ctrl.onRemove()"> + + + + + + + + + + + State + Worker + Created + + + + + {{::expeditionState.state}} + + + {{::expeditionState.name || 'System' | translate}} + + + {{::expeditionState.created | date:'dd/MM/yyyy HH:mm'}} + + + + + + + + + + + + New ticket without route + + + New ticket with route + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/ticket/front/expedition/index.js b/modules/ticket/front/expedition/index.js index 0c395e6ce..7ffe2fe5e 100644 --- a/modules/ticket/front/expedition/index.js +++ b/modules/ticket/front/expedition/index.js @@ -2,10 +2,63 @@ import ngModule from '../module'; import Section from 'salix/components/section'; class Controller extends Section { + constructor($element, $scope) { + super($element, $scope); + this.landed = new Date(); + this.newRoute = null; + } + + get checked() { + const rows = this.$.model.data || []; + const checkedRows = []; + for (let row of rows) { + if (row.checked) + checkedRows.push(row.id); + } + + return checkedRows; + } + + get totalChecked() { + return this.checked.length; + } + onDialogAccept(id) { return this.$http.delete(`Expeditions/${id}`) .then(() => this.$.model.refresh()); } + + showLog(expedition) { + this.expedition = expedition; + this.$.statusLog.show(); + } + + onRemove() { + const params = {expeditionIds: this.checked}; + const query = `Expeditions/deleteExpeditions`; + this.$http.post(query, params) + .then(() => { + this.vnApp.showSuccess(this.$t('Expedition removed')); + this.$.model.refresh(); + }); + } + + createTicket(landed, routeFk) { + const params = { + clientId: this.ticket.clientFk, + landed: landed, + warehouseId: this.ticket.warehouseFk, + addressId: this.ticket.addressFk, + agencyModeId: this.ticket.agencyModeFk, + routeId: routeFk, + expeditionIds: this.checked + }; + const query = `Expeditions/moveExpeditions`; + this.$http.post(query, params).then(res => { + this.vnApp.showSuccess(this.$t('Data saved!')); + this.$state.go('ticket.card.summary', {id: res.data.id}); + }); + } } ngModule.vnComponent('vnTicketExpedition', { diff --git a/modules/ticket/front/expedition/index.spec.js b/modules/ticket/front/expedition/index.spec.js index 425539aef..b95d64fa3 100644 --- a/modules/ticket/front/expedition/index.spec.js +++ b/modules/ticket/front/expedition/index.spec.js @@ -5,16 +5,26 @@ describe('Ticket', () => { let controller; let $scope; let $httpBackend; + let $window; beforeEach(ngModule('ticket')); - beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => { + beforeEach(inject(($componentController, $rootScope, _$httpBackend_, _$window_) => { + $window = _$window_; $httpBackend = _$httpBackend_; $scope = $rootScope.$new(); $scope.model = { refresh: () => {} }; controller = $componentController('vnTicketExpedition', {$element: null, $scope}); + controller.$.model.data = [ + {id: 1}, + {id: 2}, + {id: 3} + ]; + const modelData = controller.$.model.data; + modelData[0].checked = true; + modelData[1].checked = true; })); describe('onDialogAccept()', () => { @@ -30,5 +40,69 @@ describe('Ticket', () => { expect($scope.model.refresh).toHaveBeenCalledWith(); }); }); + + describe('showLog()', () => { + it('should show the popover status log', () => { + controller.$.statusLog = {show: () => {}}; + jest.spyOn(controller.$.statusLog, 'show'); + + const expedition = {id: 1}; + + const event = new MouseEvent('click', { + view: $window, + bubbles: true, + cancelable: true + }); + controller.showLog(event, expedition); + + expect(controller.$.statusLog.show).toHaveBeenCalledWith(); + }); + }); + + describe('onRemove()', () => { + it('should make a query and then call to the model refresh() method', () => { + jest.spyOn($scope.model, 'refresh'); + + const expectedParams = {expeditionIds: [1, 2]}; + $httpBackend.expect('POST', 'Expeditions/deleteExpeditions', expectedParams).respond(200); + controller.onRemove(); + $httpBackend.flush(); + + expect($scope.model.refresh).toHaveBeenCalledWith(); + }); + }); + + describe('createTicket()', () => { + it('should make a query and then call to the $state go() method', () => { + jest.spyOn(controller.$state, 'go').mockReturnThis(); + + const ticket = { + clientFk: 1101, + landed: new Date(), + addressFk: 121, + agencyModeFk: 1, + warehouseFk: 1 + }; + const routeId = null; + controller.ticket = ticket; + + const ticketToTransfer = {id: 28}; + + const expectedParams = { + clientId: 1101, + landed: new Date(), + warehouseId: 1, + addressId: 121, + agencyModeId: 1, + routeId: null, + expeditionIds: [1, 2] + }; + $httpBackend.expect('POST', 'Expeditions/moveExpeditions', expectedParams).respond(ticketToTransfer); + controller.createTicket(ticket.landed, routeId); + $httpBackend.flush(); + + expect(controller.$state.go).toHaveBeenCalledWith('ticket.card.summary', {id: ticketToTransfer.id}); + }); + }); }); }); diff --git a/modules/ticket/front/expedition/locale/es.yml b/modules/ticket/front/expedition/locale/es.yml new file mode 100644 index 000000000..278dcc8f2 --- /dev/null +++ b/modules/ticket/front/expedition/locale/es.yml @@ -0,0 +1,6 @@ +Status log: Hitorial de estados +Expedition removed: Expedición eliminada +Move: Mover +New ticket without route: Nuevo ticket sin ruta +New ticket with route: Nuevo ticket con ruta +Route id: Id ruta \ No newline at end of file diff --git a/modules/ticket/front/index.js b/modules/ticket/front/index.js index 01d1d7242..0558d251d 100644 --- a/modules/ticket/front/index.js +++ b/modules/ticket/front/index.js @@ -5,7 +5,6 @@ import './index/'; import './search-panel'; import './card'; import './descriptor'; -import './descriptor/addStowaway'; import './descriptor-popover'; import './descriptor-menu'; import './create/card'; @@ -34,3 +33,4 @@ import './dms/index'; import './dms/create'; import './dms/edit'; import './sms'; +import './boxing'; diff --git a/modules/ticket/front/index/index.html b/modules/ticket/front/index/index.html index 852675f76..1e18ce284 100644 --- a/modules/ticket/front/index/index.html +++ b/modules/ticket/front/index/index.html @@ -24,7 +24,7 @@ State Zone Warehouse - Total + Total @@ -52,8 +52,8 @@ icon="icon-buyrequest"> diff --git a/modules/ticket/front/index/index.js b/modules/ticket/front/index/index.js index 2df4de0a5..3039a2a03 100644 --- a/modules/ticket/front/index/index.js +++ b/modules/ticket/front/index/index.js @@ -29,11 +29,8 @@ export default class Controller extends Section { } openDeliveryNotes(ids) { - for (let id of ids) { - this.vnReport.show('delivery-note', { - ticketId: id, - }); - } + for (let id of ids) + this.vnReport.show(`Tickets/${id}/delivery-note-pdf`); } openBalanceDialog() { diff --git a/modules/ticket/front/index/index.spec.js b/modules/ticket/front/index/index.spec.js index b966ca8c4..03071654e 100644 --- a/modules/ticket/front/index/index.spec.js +++ b/modules/ticket/front/index/index.spec.js @@ -96,8 +96,8 @@ describe('Component vnTicketIndex', () => { controller.setDelivered(); $httpBackend.flush(); - expect($window.open).toHaveBeenCalledWith(`api/report/delivery-note?ticketId=${tickets[1].id}`); - expect($window.open).toHaveBeenCalledWith(`api/report/delivery-note?ticketId=${tickets[2].id}`); + expect($window.open).toHaveBeenCalledWith(`api/Tickets/${tickets[1].id}/delivery-note-pdf`); + expect($window.open).toHaveBeenCalledWith(`api/Tickets/${tickets[2].id}/delivery-note-pdf`); }); }); diff --git a/modules/ticket/front/index/locale/es.yml b/modules/ticket/front/index/locale/es.yml index eac0084f6..74b17b0f3 100644 --- a/modules/ticket/front/index/locale/es.yml +++ b/modules/ticket/front/index/locale/es.yml @@ -1,6 +1,7 @@ Weekly tickets: Tickets programados Go to lines: Ir a lineas Not available: No disponible +Not visible: No visible Payment on account...: Pago a cuenta... Set as delivered and open delivery note(s): Marcar como servido/s y abrir albarán/es Closure: Cierre diff --git a/modules/ticket/front/locale/es.yml b/modules/ticket/front/locale/es.yml index 752dd7b36..748ba210f 100644 --- a/modules/ticket/front/locale/es.yml +++ b/modules/ticket/front/locale/es.yml @@ -4,6 +4,7 @@ Agency: Agencia Amount: Importe Base to commission: Base comisionable Boxes: Cajas +Boxing: Encajado by: por Checked: Comprobado Client: Cliente @@ -45,7 +46,7 @@ Price gap: Diferencia de precio Quantity: Cantidad Remove lines: Eliminar lineas Route: Ruta -SET OK: PONER OK +SET OK: PONER OK Shipment: Salida Shipped: F. envío Some fields are invalid: Algunos campos no son válidos @@ -81,4 +82,4 @@ Sale tracking: Líneas preparadas Pictures: Fotos Log: Historial Packager: Encajador -Palletizer: Palletizador \ No newline at end of file +Palletizer: Palletizador diff --git a/modules/ticket/front/request/create/index.html b/modules/ticket/front/request/create/index.html index 8d25358b5..71a2de260 100644 --- a/modules/ticket/front/request/create/index.html +++ b/modules/ticket/front/request/create/index.html @@ -18,9 +18,8 @@ diff --git a/modules/ticket/front/routes.json b/modules/ticket/front/routes.json index ba7cfa887..4be8e2183 100644 --- a/modules/ticket/front/routes.json +++ b/modules/ticket/front/routes.json @@ -24,7 +24,8 @@ {"state": "ticket.card.saleChecked", "icon": "assignment"}, {"state": "ticket.card.components", "icon": "icon-components"}, {"state": "ticket.card.saleTracking", "icon": "assignment"}, - {"state": "ticket.card.dms.index", "icon": "cloud_download"} + {"state": "ticket.card.dms.index", "icon": "cloud_download"}, + {"state": "ticket.card.boxing", "icon": "science"} ] }, "keybindings": [ @@ -66,7 +67,7 @@ "abstract": true, "params": { "ticket": "$ctrl.ticket" - } + } }, { "url" : "/step-one", @@ -273,6 +274,15 @@ "params": { "ticket": "$ctrl.ticket" } + }, + { + "url": "/boxing", + "state": "ticket.card.boxing", + "component": "vn-ticket-boxing", + "description": "Boxing", + "params": { + "ticket": "$ctrl.ticket" + } } ] -} \ No newline at end of file +} diff --git a/modules/ticket/front/sale/index.html b/modules/ticket/front/sale/index.html index 5dc3c9428..c624b1a95 100644 --- a/modules/ticket/front/sale/index.html +++ b/modules/ticket/front/sale/index.html @@ -95,8 +95,8 @@ translate-attr="{title: 'Reserved'}"> @@ -244,7 +244,7 @@
-
MANÁ: {{::$ctrl.edit.mana | currency: 'EUR': 0}}
+
Mana: {{::$ctrl.edit.mana | currency: 'EUR': 0}}
+ + + + + + @@ -278,18 +288,29 @@
-
Mana: {{::$ctrl.edit.mana | currency: 'EUR':0}}
+
Mana: {{::$ctrl.edit.mana | currency: 'EUR': 0}}
-
+ + + + + + +

New price

{{$ctrl.getNewPrice() | currency: 'EUR': 2}} @@ -297,35 +318,19 @@

+ + + + + +
- - - - - -
-
- - -
-
- Mana: {{::$ctrl.edit.mana | currency: 'EUR': 0}} -
-
-
-
-
@@ -469,7 +474,7 @@ + ng-click="$ctrl.showEditDiscountPopover($event, sale)"> Update discount - Pay Back + Refund \ No newline at end of file diff --git a/modules/ticket/front/sale/index.js b/modules/ticket/front/sale/index.js index 54167ce96..85a862bbb 100644 --- a/modules/ticket/front/sale/index.js +++ b/modules/ticket/front/sale/index.js @@ -6,6 +6,15 @@ class Controller extends Section { constructor($element, $) { super($element, $); this._sales = []; + this.manaCode = 'mana'; + } + + get manaCode() { + return this._manaCode; + } + + set manaCode(value) { + this._manaCode = value; } get ticket() { @@ -66,6 +75,22 @@ class Controller extends Section { this.$.editPricePopover.relocate(); }); }); + this.getUsesMana(); + this.getCurrentWorkerMana(); + } + + getCurrentWorkerMana() { + this.$http.get(`WorkerManas/getCurrentWorkerMana`) + .then(res => { + this.currentWorkerMana = res.data; + }); + } + + getUsesMana() { + this.$http.get(`Sales/usesMana`) + .then(res => { + this.useMana = res.data; + }); } /** @@ -226,26 +251,21 @@ class Controller extends Section { showEditDiscountPopover(event, sale) { if (this.isLocked) return; - - this.edit = { - discount: sale.discount, - sale: sale - }; + if (sale) { + this.edit = { + discount: sale.discount, + sale: sale + }; + } else { + this.edit = { + discount: null, + sales: this.selectedValidSales() + }; + } this.$.editDiscount.show(event); } - showEditDiscountDialog(event) { - if (this.isLocked) return; - - this.edit = { - discount: null, - sales: this.selectedValidSales() - }; - - this.$.editDiscountDialog.show(event); - } - changeDiscount() { const sale = this.edit.sale; const newDiscount = this.edit.discount; @@ -261,11 +281,10 @@ class Controller extends Section { const hasChanges = sales.some(sale => { return sale.discount != newDiscount; }); - if (newDiscount != null && hasChanges) this.updateDiscount(sales); - this.$.editDiscountDialog.hide(); + this.$.editDiscount.hide(); } updateDiscount(sales) { @@ -273,7 +292,7 @@ class Controller extends Section { return sale.id; }); - const params = {salesIds: saleIds, newDiscount: this.edit.discount}; + const params = {salesIds: saleIds, newDiscount: this.edit.discount, manaCode: this.manaCode}; const query = `Tickets/${this.$params.id}/updateDiscount`; this.$http.post(query, params).then(() => { this.vnApp.showSuccess(this.$t('Data saved!')); @@ -286,7 +305,7 @@ class Controller extends Section { } getNewPrice() { - if (this.edit) { + if (this.edit.sale) { const sale = this.edit.sale; let newDiscount = sale.discount; let newPrice = this.edit.price || sale.price; @@ -358,6 +377,7 @@ class Controller extends Section { const params = { ticketFk: this.ticket.id, created: this.ticket.updated, + landed: this.ticket.landed, notAvailables }; this.newSMS = { @@ -462,15 +482,22 @@ class Controller extends Section { }); } - createPayBack() { + createRefund() { const sales = this.selectedValidSales(); if (!sales) return; - const params = {sales: sales, ticketId: this.ticket.id}; - const query = `Sales/payBack`; - this.resetChanges(); + const salesIds = sales.map(sale => sale.id); + + const params = {salesIds: salesIds}; + const query = 'Sales/refund'; this.$http.post(query, params).then(res => { - this.$state.go('ticket.card.sale', {id: res.data}); + const [refundTicket] = res.data; + this.vnApp.showSuccess(this.$t('The following refund ticket have been created', { + ticketId: refundTicket.id + })); + this.$state.go('ticket.card.sale', {id: refundTicket.id}); + + this.resetChanges(); }); } @@ -479,6 +506,15 @@ class Controller extends Section { ? {id: $search} : {name: {like: '%' + $search + '%'}}; } + + save() { + if (this.edit.sale) this.changeDiscount(); + if (this.edit.sales) this.changeMultipleDiscount(); + } + + cancel() { + this.$.editDiscount.hide(); + } } ngModule.vnComponent('vnTicketSale', { diff --git a/modules/ticket/front/sale/index.spec.js b/modules/ticket/front/sale/index.spec.js index 15ce1798b..fbee966fd 100644 --- a/modules/ticket/front/sale/index.spec.js +++ b/modules/ticket/front/sale/index.spec.js @@ -43,7 +43,7 @@ describe('Ticket', () => { $scope.sms = {open: () => {}}; $scope.ticket = ticket; $scope.model = crudModel; - $scope.editDiscount = {relocate: () => {}}; + $scope.editDiscount = {relocate: () => {}, hide: () => {}}; $scope.editPricePopover = {relocate: () => {}}; $httpBackend = _$httpBackend_; Object.defineProperties($state.params, { @@ -115,10 +115,13 @@ describe('Ticket', () => { const expectedAmount = 250; $httpBackend.expect('GET', 'Tickets/1/getSalesPersonMana').respond(200, expectedAmount); + $httpBackend.expect('GET', 'Sales/usesMana').respond(200); + $httpBackend.expect('GET', 'WorkerManas/getCurrentWorkerMana').respond(200, expectedAmount); controller.getMana(); $httpBackend.flush(); expect(controller.edit.mana).toEqual(expectedAmount); + expect(controller.currentWorkerMana).toEqual(expectedAmount); }); }); @@ -391,7 +394,7 @@ describe('Ticket', () => { secondSelectedSale.checked = true; const expectedSales = [firstSelectedSale, secondSelectedSale]; - controller.$.editDiscountDialog = {hide: jest.fn()}; + controller.$.editDiscount = {hide: jest.fn()}; controller.edit = { discount: 10, sales: expectedSales @@ -400,7 +403,7 @@ describe('Ticket', () => { controller.changeMultipleDiscount(); expect(controller.updateDiscount).toHaveBeenCalledWith(expectedSales); - expect(controller.$.editDiscountDialog.hide).toHaveBeenCalledWith(); + expect(controller.$.editDiscount.hide).toHaveBeenCalledWith(); }); it('should not call to the updateDiscount() method and then to the editDiscountDialog hide() method', () => { @@ -415,7 +418,7 @@ describe('Ticket', () => { secondSelectedSale.discount = 10; const expectedSales = [firstSelectedSale, secondSelectedSale]; - controller.$.editDiscountDialog = {hide: jest.fn()}; + controller.$.editDiscount = {hide: jest.fn()}; controller.edit = { discount: 10, sales: expectedSales @@ -424,7 +427,7 @@ describe('Ticket', () => { controller.changeMultipleDiscount(); expect(controller.updateDiscount).not.toHaveBeenCalledWith(expectedSales); - expect(controller.$.editDiscountDialog.hide).toHaveBeenCalledWith(); + expect(controller.$.editDiscount.hide).toHaveBeenCalledWith(); }); }); @@ -446,7 +449,7 @@ describe('Ticket', () => { const expectedSales = [firstSelectedSale, secondSelectedSale]; const expectedSaleIds = [firstSelectedSale.id, secondSelectedSale.id]; - const expectedParams = {salesIds: expectedSaleIds, newDiscount: expectedDiscount}; + const expectedParams = {salesIds: expectedSaleIds, newDiscount: expectedDiscount, manaCode: 'mana'}; $httpBackend.expect('POST', `Tickets/1/updateDiscount`, expectedParams).respond(200, {discount: 10}); controller.updateDiscount(expectedSales); $httpBackend.flush(); @@ -701,19 +704,20 @@ describe('Ticket', () => { }); }); - describe('createPayBack()', () => { - it('should make an HTTP POST query and then call to the $state go() method', () => { + describe('createRefund()', () => { + it('should make a query and then navigate to the created ticket sales section', () => { jest.spyOn(controller, 'selectedValidSales').mockReturnValue(controller.sales); - jest.spyOn(controller, 'resetChanges'); jest.spyOn(controller.$state, 'go'); - - const expectedId = 9999; - $httpBackend.expect('POST', `Sales/payBack`).respond(200, expectedId); - controller.createPayBack(); + const params = { + salesIds: [1, 4], + }; + const refundTicket = {id: 99}; + const createdTickets = [refundTicket]; + $httpBackend.expect('POST', 'Sales/refund', params).respond(200, createdTickets); + controller.createRefund(); $httpBackend.flush(); - expect(controller.resetChanges).toHaveBeenCalledWith(); - expect(controller.$state.go).toHaveBeenCalledWith('ticket.card.sale', {id: expectedId}); + expect(controller.$state.go).toHaveBeenCalledWith('ticket.card.sale', refundTicket); }); }); @@ -732,5 +736,14 @@ describe('Ticket', () => { expect(result).toEqual({name: {like: '%' + itemName + '%'}}); }); }); + + describe('cancel()', () => { + it('should call hide()', () => { + jest.spyOn(controller.$.editDiscount, 'hide').mockReturnThis(); + controller.cancel(); + + expect(controller.$.editDiscount.hide).toHaveBeenCalledWith(); + }); + }); }); }); diff --git a/modules/ticket/front/sale/locale/en.yml b/modules/ticket/front/sale/locale/en.yml index ec7f54160..b418c086c 100644 --- a/modules/ticket/front/sale/locale/en.yml +++ b/modules/ticket/front/sale/locale/en.yml @@ -1,3 +1,3 @@ Product not available: >- - Verdnatura communicates: Your order {{ticketFk}} created on {{created | date: "dd/MM/yyyy"}}. + Verdnatura communicates: Your order {{ticketFk}} with reception date on {{landed | date: "dd/MM/yyyy"}}. {{notAvailables}} not available. Sorry for the inconvenience. \ No newline at end of file diff --git a/modules/ticket/front/sale/locale/es.yml b/modules/ticket/front/sale/locale/es.yml index e4152600f..072e57534 100644 --- a/modules/ticket/front/sale/locale/es.yml +++ b/modules/ticket/front/sale/locale/es.yml @@ -26,7 +26,7 @@ Destination ticket: Ticket destinatario Change ticket state to 'Ok': Cambiar estado del ticket a 'Ok' Reserved: Reservado Send shortage SMS: Enviar SMS faltas -Product not available: "Verdnatura le comunica:\rPedido {{ticketFk}} día {{created | date: 'dd/MM/yyyy'}}.\r{{notAvailables}} no disponible/s.\rDisculpe las molestias." +Product not available: "Verdnatura le comunica:\rPedido {{ticketFk}} con fecha recepción {{landed | date: 'dd/MM/yyyy'}}.\r{{notAvailables}} no disponible/s.\rDisculpe las molestias." Continue anyway?: ¿Continuar de todas formas? This ticket is now empty: El ticket ha quedado vacio Do you want to delete it?: ¿Quieres eliminarlo? @@ -36,4 +36,6 @@ Warehouse: Almacen Agency: Agencia Shipped: F. envio Packaging: Encajado -Pay Back: Abono \ No newline at end of file +Refund: Abono +Promotion mana: Maná promoción +Claim mana: Maná reclamación diff --git a/modules/ticket/front/services/index.html b/modules/ticket/front/services/index.html index 13fd84b00..bb5505ce6 100644 --- a/modules/ticket/front/services/index.html +++ b/modules/ticket/front/services/index.html @@ -42,7 +42,7 @@ diff --git a/modules/ticket/front/volume/index.js b/modules/ticket/front/volume/index.js index 81491bca0..a3d531898 100644 --- a/modules/ticket/front/volume/index.js +++ b/modules/ticket/front/volume/index.js @@ -20,7 +20,7 @@ class Controller extends Section { set sales(value) { this._sales = value; - if (value) this.applyVolumes(); + if (value && value.length) this.applyVolumes(); } applyVolumes() { diff --git a/modules/ticket/front/weekly/index.html b/modules/ticket/front/weekly/index.html index 9ea35d92e..3c739d5f9 100644 --- a/modules/ticket/front/weekly/index.html +++ b/modules/ticket/front/weekly/index.html @@ -4,7 +4,7 @@ filter="::$ctrl.filter" limit="20" data="weeklies" - order="ticketFk" + order="weekDay, ticketFk" primary-key="ticketFk" auto-load="true"> diff --git a/modules/travel/back/methods/thermograph/createThermograph.js b/modules/travel/back/methods/thermograph/createThermograph.js index 137f32ac4..23d9d6037 100644 --- a/modules/travel/back/methods/thermograph/createThermograph.js +++ b/modules/travel/back/methods/thermograph/createThermograph.js @@ -40,6 +40,7 @@ module.exports = Self => { const models = Self.app.models; let tx; const myOptions = {}; + const date = new Date(); if (typeof options == 'object') Object.assign(myOptions, options); @@ -57,8 +58,8 @@ module.exports = Self => { await Self.rawSql(` INSERT INTO travelThermograph(thermographFk, warehouseFk, temperatureFk, created) - VALUES (?, ?, ?, NOW()) - `, [thermograph.id, warehouseId, temperatureFk], myOptions); + VALUES (?, ?, ?, ?) + `, [thermograph.id, warehouseId, temperatureFk, date], myOptions); if (tx) await tx.commit(); diff --git a/modules/travel/back/methods/travel/cloneWithEntries.js b/modules/travel/back/methods/travel/cloneWithEntries.js index 393194f06..611f4e429 100644 --- a/modules/travel/back/methods/travel/cloneWithEntries.js +++ b/modules/travel/back/methods/travel/cloneWithEntries.js @@ -35,7 +35,7 @@ module.exports = Self => { 'landed', 'warehouseInFk', 'warehouseOutFk', - 'agencyFk', + 'agencyModeFk', 'ref' ] }); @@ -56,7 +56,7 @@ module.exports = Self => { travel.warehouseOutFk, travel.warehouseInFk, travel.ref, - travel.agencyFk + travel.agencyModeFk ] ); stmts.push(stmt); @@ -76,7 +76,7 @@ module.exports = Self => { 'landed', 'warehouseInFk', 'warehouseOutFk', - 'agencyFk', + 'agencyModeFk', 'ref' ] }); diff --git a/modules/travel/back/methods/travel/extraCommunityEmail.js b/modules/travel/back/methods/travel/extraCommunityEmail.js new file mode 100644 index 000000000..dd93ed905 --- /dev/null +++ b/modules/travel/back/methods/travel/extraCommunityEmail.js @@ -0,0 +1,92 @@ +const {Email} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('extraCommunityEmail', { + description: 'Sends the extra community email with an attached PDF', + accessType: 'WRITE', + accepts: [ + { + arg: 'recipient', + type: 'string', + description: 'The recipient email', + required: true, + }, + { + arg: 'replyTo', + type: 'string', + description: 'The sender email to reply to', + required: false + }, + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id to send to the recipient preferred language', + required: false + }, + { + arg: 'landedTo', + type: 'date' + }, + { + arg: 'shippedFrom', + type: 'date' + }, + { + arg: 'continent', + type: 'string' + }, + { + arg: 'reference', + type: 'string' + }, + { + arg: 'id', + type: 'number' + }, + { + arg: 'agencyModeFk', + type: 'number' + }, + { + arg: 'warehouseOutFk', + type: 'number' + }, + { + arg: 'warehouseInFk', + type: 'number' + }, + { + arg: 'totalEntries', + type: 'number' + }, + { + arg: 'cargoSupplierFk', + type: 'number' + } + ], + returns: { + type: ['object'], + root: true + }, + http: { + path: '/extra-community-email', + verb: 'POST' + } + }); + + Self.extraCommunityEmail = async ctx => { + const args = Object.assign({}, ctx.args); + const params = { + recipient: args.recipient, + lang: ctx.req.getLocale() + }; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const email = new Email('extra-community', params); + + return email.send(); + }; +}; diff --git a/modules/travel/back/methods/travel/extraCommunityFilter.js b/modules/travel/back/methods/travel/extraCommunityFilter.js index f4132c631..4078e62cb 100644 --- a/modules/travel/back/methods/travel/extraCommunityFilter.js +++ b/modules/travel/back/methods/travel/extraCommunityFilter.js @@ -28,23 +28,13 @@ module.exports = Self => { type: 'date', description: 'The shipped from date filter' }, - { - arg: 'shippedTo', - type: 'date', - description: 'The shipped to date filter' - }, - { - arg: 'landedFrom', - type: 'date', - description: 'The landed from date filter' - }, { arg: 'landedTo', type: 'date', description: 'The landed to date filter' }, { - arg: 'agencyFk', + arg: 'agencyModeFk', type: 'number', description: 'The agencyModeFk id' }, @@ -64,7 +54,7 @@ module.exports = Self => { description: 'The totalEntries filter' }, { - arg: 'ref', + arg: 'reference', type: 'string', description: 'The reference' }, @@ -101,16 +91,12 @@ module.exports = Self => { return {'t.ref': {like: `%${value}%`}}; case 'shippedFrom': return {'t.shipped': {gte: value}}; - case 'shippedTo': - return {'t.shipped': {lte: value}}; - case 'landedFrom': - return {'t.landed': {gte: value}}; case 'landedTo': return {'t.landed': {lte: value}}; case 'continent': return {'cnt.code': value}; case 'id': - case 'agencyFk': + case 'agencyModeFk': case 'warehouseOutFk': case 'warehouseInFk': case 'totalEntries': @@ -142,10 +128,10 @@ module.exports = Self => { w.name AS warehouseInFk, w.name AS warehouseInName, SUM(b.stickers) AS stickers, - s.id AS supplierFk, + s.id AS cargoSupplierFk, s.nickname AS cargoSupplierNickname, - CAST(SUM(i.density * b.stickers * IF(pkg.volume, pkg.volume, pkg.width * pkg.depth * pkg.height) / 1000000 ) as DECIMAL(10,0)) as loadedKg, - CAST(SUM(167.5 * b.stickers * IF(pkg.volume, pkg.volume, pkg.width * pkg.depth * pkg.height) / 1000000 ) as DECIMAL(10,0)) as volumeKg + CAST(SUM(b.weight * b.stickers) as DECIMAL(10,0)) as loadedKg, + CAST(SUM(vc.aerealVolumetricDensity * b.stickers * IF(pkg.volume, pkg.volume, pkg.width * pkg.depth * pkg.height) / 1000000) as DECIMAL(10,0)) as volumeKg FROM travel t LEFT JOIN supplier s ON s.id = t.cargoSupplierFk LEFT JOIN entry e ON e.travelFk = t.id @@ -157,11 +143,13 @@ module.exports = Self => { JOIN warehouse wo ON wo.id = t.warehouseOutFk JOIN country c ON c.id = wo.countryFk LEFT JOIN continent cnt ON cnt.id = c.continentFk - JOIN agencyMode am ON am.id = t.agencyFk` + JOIN agencyMode am ON am.id = t.agencyModeFk + JOIN vn.volumeConfig vc` ); stmt.merge(conn.makeWhere(filter.where)); stmt.merge(conn.makeGroupBy('t.id')); + stmt.merge(conn.makeOrderBy(filter.order)); stmt.merge(conn.makeLimit(filter)); stmts.push(stmt); @@ -173,19 +161,21 @@ module.exports = Self => { e.travelFk, e.ref, e.loadPriority, + s.id AS supplierFk, s.name AS supplierName, SUM(b.stickers) AS stickers, e.evaNotes, e.notes, - CAST(SUM(i.density * b.stickers * IF(pkg.volume, pkg.volume, pkg.width * pkg.depth * pkg.height) / 1000000 ) as DECIMAL(10,0)) as loadedkg, - CAST(SUM(167.5 * b.stickers * IF(pkg.volume, pkg.volume, pkg.width * pkg.depth * pkg.height) / 1000000 ) as DECIMAL(10,0)) as volumeKg + CAST(SUM(b.weight * b.stickers) AS DECIMAL(10,0)) as loadedkg, + CAST(SUM(vc.aerealVolumetricDensity * b.stickers * IF(pkg.volume, pkg.volume, pkg.width * pkg.depth * pkg.height) / 1000000) AS DECIMAL(10,0)) as volumeKg FROM tmp.travel tr JOIN entry e ON e.travelFk = tr.id JOIN buy b ON b.entryFk = e.id JOIN packaging pkg ON pkg.id = b.packageFk JOIN item i ON i.id = b.itemFk JOIN itemType it ON it.id = i.typeFk - JOIN supplier s ON s.id = e.supplierFk` + JOIN supplier s ON s.id = e.supplierFk + JOIN vn.volumeConfig vc` ); stmt.merge(conn.makeGroupBy('e.id')); diff --git a/modules/travel/back/methods/travel/extraCommunityPdf.js b/modules/travel/back/methods/travel/extraCommunityPdf.js new file mode 100644 index 000000000..a68e5cd09 --- /dev/null +++ b/modules/travel/back/methods/travel/extraCommunityPdf.js @@ -0,0 +1,89 @@ +const {Report} = require('vn-print'); + +module.exports = Self => { + Self.remoteMethodCtx('extraCommunityPdf', { + description: 'Returns the extra community pdf', + accessType: 'READ', + accepts: [ + { + arg: 'recipientId', + type: 'number', + description: 'The recipient id', + required: false + }, + { + arg: 'landedTo', + type: 'date' + }, + { + arg: 'shippedFrom', + type: 'date' + }, + { + arg: 'continent', + type: 'string' + }, + { + arg: 'reference', + type: 'string' + }, + { + arg: 'id', + type: 'number' + }, + { + arg: 'agencyModeFk', + type: 'number' + }, + { + arg: 'warehouseOutFk', + type: 'number' + }, + { + arg: 'warehouseInFk', + type: 'number' + }, + { + arg: 'totalEntries', + type: 'number' + }, + { + arg: 'cargoSupplierFk', + type: 'number' + } + ], + returns: [ + { + arg: 'body', + type: 'file', + root: true + }, { + arg: 'Content-Type', + type: 'String', + http: {target: 'header'} + }, { + arg: 'Content-Disposition', + type: 'String', + http: {target: 'header'} + } + ], + http: { + path: '/extra-community-pdf', + verb: 'GET' + } + }); + + Self.extraCommunityPdf = async ctx => { + const args = Object.assign({}, ctx.args); + const params = {lang: ctx.req.getLocale()}; + + delete args.ctx; + for (const param in args) + params[param] = args[param]; + + const report = new Report('extra-community', params); + const stream = await report.toPdfStream(); + + return [stream, 'application/pdf', `filename="extra-community.pdf"`]; + }; +}; diff --git a/modules/travel/back/methods/travel/filter.js b/modules/travel/back/methods/travel/filter.js index 586b4e5aa..3fa1d65f9 100644 --- a/modules/travel/back/methods/travel/filter.js +++ b/modules/travel/back/methods/travel/filter.js @@ -44,7 +44,7 @@ module.exports = Self => { description: 'The landed to date filter', http: {source: 'query'} }, { - arg: 'agencyFk', + arg: 'agencyModeFk', type: 'number', description: 'The agencyModeFk id', http: {source: 'query'} @@ -102,7 +102,7 @@ module.exports = Self => { case 'landedTo': return {'t.landed': {lte: value}}; case 'id': - case 'agencyFk': + case 'agencyModeFk': case 'warehouseOutFk': case 'warehouseInFk': case 'totalEntries': @@ -124,7 +124,7 @@ module.exports = Self => { t.landed, t.warehouseInFk, t.warehouseOutFk, - t.agencyFk, + t.agencyModeFk, t.ref, t.isDelivered, t.isReceived, @@ -137,7 +137,7 @@ module.exports = Self => { wout.name warehouseOutName, cnt.code continent FROM vn.travel t - JOIN vn.agencyMode am ON am.id = t.agencyFk + JOIN vn.agencyMode am ON am.id = t.agencyModeFk JOIN vn.warehouse win ON win.id = t.warehouseInFk JOIN vn.warehouse wout ON wout.id = t.warehouseOutFk JOIN warehouse wo ON wo.id = t.warehouseOutFk diff --git a/modules/travel/back/methods/travel/getAverageDays.js b/modules/travel/back/methods/travel/getAverageDays.js index 9a9649d84..d888d80c1 100644 --- a/modules/travel/back/methods/travel/getAverageDays.js +++ b/modules/travel/back/methods/travel/getAverageDays.js @@ -32,9 +32,9 @@ module.exports = Self => { t.warehouseOutFk, t.landed, t.shipped, - t.agencyFk + t.agencyModeFk FROM travel t - WHERE t.agencyFk = ? LIMIT 50)`, [agencyModeFk]); + WHERE t.agencyModeFk = ? LIMIT 50)`, [agencyModeFk]); stmts.push(stmt); stmt = new ParameterizedSQL(` @@ -44,10 +44,10 @@ module.exports = Self => { t.warehouseOutFk, (SELECT ROUND(AVG(DATEDIFF(t.landed, t.shipped ))) FROM tmp.travel t - WHERE t.agencyFk + WHERE t.agencyModeFk ORDER BY id DESC LIMIT 50) AS dayDuration FROM tmp.travel t - WHERE t.agencyFk + WHERE t.agencyModeFk ORDER BY t.id DESC LIMIT 1`); const avgDaysIndex = stmts.push(stmt) - 1; diff --git a/modules/travel/back/methods/travel/specs/cloneWithEntries.spec.js b/modules/travel/back/methods/travel/specs/cloneWithEntries.spec.js index b4bfecbfb..2e79ff193 100644 --- a/modules/travel/back/methods/travel/specs/cloneWithEntries.spec.js +++ b/modules/travel/back/methods/travel/specs/cloneWithEntries.spec.js @@ -1,7 +1,6 @@ const app = require('vn-loopback/server/server'); -// #2687 - Cannot make a data rollback because of the triggers -xdescribe('Travel cloneWithEntries()', () => { +describe('Travel cloneWithEntries()', () => { const models = app.models; const travelId = 5; const currentUserId = 1102; @@ -9,44 +8,45 @@ xdescribe('Travel cloneWithEntries()', () => { let travelBefore; let newTravelId; - afterAll(async() => { - try { - const entries = await models.Entry.find({ - where: { - travelFk: newTravelId - } - }); - const entriesId = entries.map(entry => entry.id); + // afterAll(async() => { + // try { + // const entries = await models.Entry.find({ + // where: { + // travelFk: newTravelId + // } + // }); + // const entriesId = entries.map(entry => entry.id); - // Destroy all entries buys - await models.Buy.destroyAll({ - where: { - entryFk: {inq: entriesId} - } - }); + // // Destroy all entries buys + // await models.Buy.destroyAll({ + // where: { + // entryFk: {inq: entriesId} + // } + // }); - // Destroy travel entries - await models.Entry.destroyAll({ - where: { - travelFk: newTravelId - } - }); + // // Destroy travel entries + // await models.Entry.destroyAll({ + // where: { + // travelFk: newTravelId + // } + // }); - // Destroy new travel - await models.Travel.destroyById(newTravelId); + // // Destroy new travel + // await models.Travel.destroyById(newTravelId); - // Restore original travel shipped & landed - const travel = await models.Travel.findById(travelId); - await travel.updateAttributes({ - shipped: travelBefore.shipped, - landed: travelBefore.landed - }); - } catch (error) { - console.error(error); - } - }); + // // Restore original travel shipped & landed + // const travel = await models.Travel.findById(travelId); + // await travel.updateAttributes({ + // shipped: travelBefore.shipped, + // landed: travelBefore.landed + // }); + // } catch (error) { + // console.error(error); + // } + // }); it(`should clone the travel and the containing entries`, async() => { + pending('#2687 - Cannot make a data rollback because of the triggers'); const warehouseThree = 3; const agencyModeOne = 1; const yesterday = new Date(); @@ -71,7 +71,7 @@ xdescribe('Travel cloneWithEntries()', () => { expect(newTravel.ref).toEqual('fifth travel'); expect(newTravel.warehouseInFk).toEqual(warehouseThree); expect(newTravel.warehouseOutFk).toEqual(warehouseThree); - expect(newTravel.agencyFk).toEqual(agencyModeOne); + expect(newTravel.agencyModeFk).toEqual(agencyModeOne); expect(travelEntries.length).toBeGreaterThan(0); }); }); diff --git a/modules/travel/back/methods/travel/specs/extraCommunityFilter.spec.js b/modules/travel/back/methods/travel/specs/extraCommunityFilter.spec.js index 7f42eb5f0..3693aae82 100644 --- a/modules/travel/back/methods/travel/specs/extraCommunityFilter.spec.js +++ b/modules/travel/back/methods/travel/specs/extraCommunityFilter.spec.js @@ -46,15 +46,64 @@ describe('Travel extraCommunityFilter()', () => { expect(result.length).toEqual(3); }); - it('should return the routes matching "landed from" and "landed to"', async() => { - const from = new Date(); - const to = new Date(); - from.setHours(0, 0, 0, 0); - to.setHours(23, 59, 59, 999); - to.setDate(to.getDate() + 14); + it('should return the travel matching "warehouse in"', async() => { const ctx = { args: { - landedFrom: from, + warehouseInFk: 1 + } + }; + + const result = await app.models.Travel.extraCommunityFilter(ctx, filter); + + expect(result.length).toEqual(4); + }); + + it('should return the travel matching "continent"', async() => { + const ctx = { + args: { + continent: 'AM' + } + }; + + const result = await app.models.Travel.extraCommunityFilter(ctx, filter); + + expect(result.length).toEqual(3); + }); + + it('should return the travel matching "agencyModeFk"', async() => { + const ctx = { + args: { + agencyModeFk: 1 + } + }; + + const result = await app.models.Travel.extraCommunityFilter(ctx, filter); + + expect(result.length).toEqual(8); + }); + + it('should return the travel matching "cargoSupplierFk"', async() => { + const ctx = { + args: { + cargoSupplierFk: 1 + } + }; + + const result = await app.models.Travel.extraCommunityFilter(ctx, filter); + + expect(result.length).toEqual(4); + }); + + it('should return the routes matching "shipped from" and "landed to"', async() => { + const from = new Date(); + from.setDate(from.getDate() - 2); + from.setHours(0, 0, 0, 0); + const to = new Date(); + to.setHours(23, 59, 59, 999); + to.setDate(to.getDate() + 7); + const ctx = { + args: { + shippedFrom: from, landedTo: to } }; diff --git a/modules/travel/back/models/thermograph.json b/modules/travel/back/models/thermograph.json index 2519fffc4..bd9ad3119 100644 --- a/modules/travel/back/models/thermograph.json +++ b/modules/travel/back/models/thermograph.json @@ -8,13 +8,13 @@ }, "properties": { "id": { - "type": "String", + "type": "string", "id": true, "description": "Identifier", "required": true }, "model": { - "type": "String", + "type": "string", "required": true } } diff --git a/modules/travel/back/models/travel-log.json b/modules/travel/back/models/travel-log.json index d53be88f1..d07f83e50 100644 --- a/modules/travel/back/models/travel-log.json +++ b/modules/travel/back/models/travel-log.json @@ -9,40 +9,40 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "forceId": false }, "originFk": { - "type": "Number", + "type": "number", "required": true }, "userFk": { - "type": "Number" + "type": "number" }, "action": { - "type": "String", + "type": "string", "required": true }, "changedModel": { - "type": "String" + "type": "string" }, "oldInstance": { - "type": "Object" + "type": "object" }, "newInstance": { - "type": "Object" + "type": "object" }, "creationDate": { - "type": "Date" + "type": "date" }, "changedModelId": { - "type": "String" + "type": "string" }, "changedModelValue": { - "type": "String" + "type": "string" }, "description": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/modules/travel/back/models/travel-thermograph.json b/modules/travel/back/models/travel-thermograph.json index 1e6dd1905..754df1c3e 100644 --- a/modules/travel/back/models/travel-thermograph.json +++ b/modules/travel/back/models/travel-thermograph.json @@ -20,9 +20,6 @@ "created": { "type": "date" }, - "temperature": { - "type": "string" - }, "temperatureFk": { "type": "string", "required": true diff --git a/modules/travel/back/models/travel.js b/modules/travel/back/models/travel.js index 046153ee2..4bcf7b31d 100644 --- a/modules/travel/back/models/travel.js +++ b/modules/travel/back/models/travel.js @@ -10,6 +10,8 @@ module.exports = Self => { require('../methods/travel/extraCommunityFilter')(Self); require('../methods/travel/getAverageDays')(Self); require('../methods/travel/cloneWithEntries')(Self); + require('../methods/travel/extraCommunityPdf')(Self); + require('../methods/travel/extraCommunityEmail')(Self); Self.rewriteDbError(function(err) { if (err.code === 'ER_DUP_ENTRY') diff --git a/modules/travel/back/models/travel.json b/modules/travel/back/models/travel.json index cd2f1d653..c20b7b0bf 100644 --- a/modules/travel/back/models/travel.json +++ b/modules/travel/back/models/travel.json @@ -12,7 +12,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, @@ -23,38 +23,35 @@ "type": "date" }, "isDelivered": { - "type": "Boolean" + "type": "boolean" }, "isReceived": { - "type": "Boolean" + "type": "boolean" }, "ref": { - "type": "String" + "type": "string" }, "totalEntries": { - "type": "Number" + "type": "number" }, "m3": { - "type": "Number" + "type": "number" }, "kg": { - "type": "Number" + "type": "number" }, "cargoSupplierFk": { - "type": "Number" + "type": "number" }, "agencyModeFk": { - "type": "Number", - "mysql": { - "columnName": "agencyFk" - } + "type": "number" } }, "relations": { "agency": { "type": "belongsTo", "model": "AgencyMode", - "foreignKey": "agencyFk" + "foreignKey": "agencyModeFk" }, "warehouseIn": { "type": "belongsTo", diff --git a/modules/travel/front/descriptor-menu/index.js b/modules/travel/front/descriptor-menu/index.js index 25922815e..0630bb618 100644 --- a/modules/travel/front/descriptor-menu/index.js +++ b/modules/travel/front/descriptor-menu/index.js @@ -25,7 +25,7 @@ class Controller extends Section { 'shipped', 'landed', 'totalEntries', - 'agencyFk', + 'agencyModeFk', 'warehouseInFk', 'warehouseOutFk', 'cargoSupplierFk' @@ -64,7 +64,7 @@ class Controller extends Section { onCloneAccept() { const params = JSON.stringify({ ref: this.travel.ref, - agencyModeFk: this.travel.agencyFk, + agencyModeFk: this.travel.agencyModeFk, shipped: this.travel.shipped, landed: this.travel.landed, warehouseInFk: this.travel.warehouseInFk, diff --git a/modules/travel/front/descriptor-menu/index.spec.js b/modules/travel/front/descriptor-menu/index.spec.js index 4ca93a6d6..40319e8e2 100644 --- a/modules/travel/front/descriptor-menu/index.spec.js +++ b/modules/travel/front/descriptor-menu/index.spec.js @@ -18,7 +18,7 @@ describe('Travel Component vnTravelDescriptorMenu', () => { controller.travel = { ref: 'the ref', - agencyFk: 'the agency', + agencyModeFk: 'the agency', shipped: 'the shipped date', landed: 'the landing date', warehouseInFk: 'the receiver warehouse', @@ -29,7 +29,7 @@ describe('Travel Component vnTravelDescriptorMenu', () => { const params = JSON.stringify({ ref: controller.travel.ref, - agencyModeFk: controller.travel.agencyFk, + agencyModeFk: controller.travel.agencyModeFk, shipped: controller.travel.shipped, landed: controller.travel.landed, warehouseInFk: controller.travel.warehouseInFk, diff --git a/modules/travel/front/descriptor/index.html b/modules/travel/front/descriptor/index.html index 28e908d18..bbf5721fd 100644 --- a/modules/travel/front/descriptor/index.html +++ b/modules/travel/front/descriptor/index.html @@ -1,6 +1,7 @@ + description="$ctrl.travel.ref" + summary="$ctrl.$.summary"> @@ -42,3 +43,6 @@
+ + + \ No newline at end of file diff --git a/modules/travel/front/descriptor/index.js b/modules/travel/front/descriptor/index.js index dc19f68af..b1f2f53be 100644 --- a/modules/travel/front/descriptor/index.js +++ b/modules/travel/front/descriptor/index.js @@ -14,9 +14,9 @@ class Controller extends Descriptor { let travelFilter; const travel = this.travel; - if (travel && travel.agencyFk) { + if (travel && travel.agencyModeFk) { travelFilter = this.travel && JSON.stringify({ - agencyFk: this.travel.agencyFk + agencyModeFk: this.travel.agencyModeFk }); } return travelFilter; diff --git a/modules/travel/front/extra-community-search-panel/index.html b/modules/travel/front/extra-community-search-panel/index.html index 55b1f87b1..09fbb8949 100644 --- a/modules/travel/front/extra-community-search-panel/index.html +++ b/modules/travel/front/extra-community-search-panel/index.html @@ -29,7 +29,7 @@ @@ -47,29 +47,18 @@ ng-model="$ctrl.landedTo"> - - - - - @@ -95,4 +84,4 @@ - \ No newline at end of file + diff --git a/modules/travel/front/extra-community-search-panel/index.js b/modules/travel/front/extra-community-search-panel/index.js index 4e50ea787..1add11dce 100644 --- a/modules/travel/front/extra-community-search-panel/index.js +++ b/modules/travel/front/extra-community-search-panel/index.js @@ -14,31 +14,6 @@ class Controller extends SearchPanel { set shippedFrom(value) { this.filter.shippedFrom = value; - - if (!this.filter.landedFrom) - this.filter.landedFrom = value; - } - - get shippedTo() { - return this.filter.shippedTo; - } - - set shippedTo(value) { - this.filter.shippedTo = value; - - if (!this.filter.landedTo) - this.filter.landedTo = value; - } - - get landedFrom() { - return this.filter.landedFrom; - } - - set landedFrom(value) { - this.filter.landedFrom = value; - - if (!this.filter.shippedFrom) - this.filter.shippedFrom = value; } get landedTo() { @@ -47,9 +22,6 @@ class Controller extends SearchPanel { set landedTo(value) { this.filter.landedTo = value; - - if (!this.filter.shippedTo) - this.filter.shippedTo = value; } } diff --git a/modules/travel/front/extra-community/index.html b/modules/travel/front/extra-community/index.html index 6c56e7424..5174f8da2 100644 --- a/modules/travel/front/extra-community/index.html +++ b/modules/travel/front/extra-community/index.html @@ -1,8 +1,9 @@ @@ -18,112 +19,174 @@ model="model"> - - -
- - - - - - - - Id - Supplier - Freighter - Reference - Packages - Bl. KG - Phy. KG - Vol. KG - - Wh. Out - - W. Shipped - - Wh. In - - W. Landed - - - - - - + + +
+ + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + +
+ Id + + Supplier + + Agency + + Reference + + Packages + + Bl. KG + + Phy. KG + + Vol. KG + + Wh. Out + + W. Shipped + + Wh. In + + W. Landed +
+ {{::travel.id}} - - {{::travel.agencyModeName}} - {{::travel.cargoSupplierNickname}} - - {{travel.ref}} - - - - - - {{::travel.stickers}} - - {{travel.kg}} - - - - - - {{::travel.loadedKg}} - {{::travel.volumeKg}} - {{::travel.warehouseOutName}} - {{::travel.shipped | date: 'dd/MM/yyyy'}} - {{::travel.warehouseInName}} - {{::travel.landed | date: 'dd/MM/yyyy'}} - - + + + {{::travel.cargoSupplierNickname}} + + {{::travel.agencyModeName}} + + {{travel.ref}} + + + + + + {{::travel.stickers}} + + {{travel.kg}} + + + + + + {{::travel.loadedKg}}{{::travel.volumeKg}}{{::travel.warehouseOutName}}{{::travel.shipped | date: 'dd/MM/yyyy'}}{{::travel.warehouseInName}}{{::travel.landed | date: 'dd/MM/yyyy'}}
{{::entry.id}} - - {{::entry.supplierName}} - - {{::entry.ref}} - {{::entry.stickers}} - - {{::entry.loadedkg}} - {{::entry.volumeKg}} - + + + {{::entry.supplierName}} + + {{::entry.ref}}{{::entry.stickers}}{{::entry.loadedkg}}{{::entry.volumeKg}} {{::entry.notes}} - - + {{::entry.evaNotes}} - - - - - - - - - +
+
+
+ - + + diff --git a/modules/travel/front/extra-community/index.js b/modules/travel/front/extra-community/index.js index 44527d45e..a4ac487e6 100644 --- a/modules/travel/front/extra-community/index.js +++ b/modules/travel/front/extra-community/index.js @@ -14,30 +14,52 @@ class Controller extends Section { draggable.addEventListener('dragend', event => this.dragEnd(event)); - this.draggableElement = 'a[draggable]'; - this.droppableElement = 'vn-tbody[vn-droppable]'; + draggable.addEventListener('dragover', + event => this.dragOver(event)); + draggable.addEventListener('dragenter', + event => this.dragEnter(event)); + draggable.addEventListener('dragleave', + event => this.dragLeave(event)); - const scopeDays = 14; - const landedFrom = new Date(); - landedFrom.setHours(0, 0, 0, 0); + this.draggableElement = 'tr[draggable]'; + this.droppableElement = 'tbody[vn-droppable]'; + const twoDays = 2; + const shippedFrom = new Date(); + shippedFrom.setDate(shippedFrom.getDate() - twoDays); + shippedFrom.setHours(0, 0, 0, 0); + + const sevenDays = 7; const landedTo = new Date(); - landedTo.setDate(landedTo.getDate() + scopeDays); + landedTo.setDate(landedTo.getDate() + sevenDays); landedTo.setHours(23, 59, 59, 59); this.defaultFilter = { - landedFrom: landedFrom, + shippedFrom: shippedFrom, landedTo: landedTo, continent: 'AM' }; + + this.smartTableOptions = {}; } get hasDateRange() { const userParams = this.$.model.userParams; - const hasLanded = userParams.landedFrom || userParams.landedTo; - const hasShipped = userParams.shippedFrom || userParams.shippedTo; + const hasLanded = userParams.landedTo; + const hasShipped = userParams.shippedFrom; + const hasContinent = userParams.continent; + const hasWarehouseOut = userParams.warehouseOutFk; - return hasLanded || hasShipped; + return hasLanded || hasShipped || hasContinent || hasWarehouseOut; + } + + onDragInterval() { + if (this.dragClientY > 0 && this.dragClientY < 75) + this.$window.scrollTo(0, this.$window.scrollY - 10); + + const maxHeight = window.screen.availHeight - (window.outerHeight - window.innerHeight); + if (this.dragClientY > maxHeight - 75 && this.dragClientY < maxHeight) + this.$window.scrollTo(0, this.$window.scrollY + 10); } findDraggable($event) { @@ -61,6 +83,7 @@ class Controller extends Section { const id = parseInt(draggable.id); this.entryId = id; this.entry = draggable; + this.interval = setInterval(() => this.onDragInterval(), 50); } dragEnd($event) { @@ -68,6 +91,8 @@ class Controller extends Section { draggable.classList.remove('dragging'); this.entryId = null; this.entry = null; + + clearInterval(this.interval); } onDrop($event) { @@ -87,6 +112,37 @@ class Controller extends Section { } } + undrop() { + if (!this.dropping) return; + this.dropping.classList.remove('dropping'); + this.dropping = null; + } + + dragOver($event) { + this.dragClientY = $event.clientY; + $event.preventDefault(); + } + + dragEnter($event) { + let element = this.findDroppable($event); + if (element) this.dropCount++; + + if (element != this.dropping) { + this.undrop(); + if (element) element.classList.add('dropping'); + this.dropping = element; + } + } + + dragLeave($event) { + let element = this.findDroppable($event); + + if (element) { + this.dropCount--; + if (this.dropCount == 0) this.undrop(); + } + } + save(id, data) { const endpoint = `Travels/${id}`; this.$http.patch(endpoint, data) @@ -101,7 +157,7 @@ class Controller extends Section { } showReport() { - this.vnReport.show('extra-community', this.reportParams); + this.vnReport.show(`Travels/extra-community-pdf`, this.reportParams); } } diff --git a/modules/travel/front/extra-community/index.spec.js b/modules/travel/front/extra-community/index.spec.js index 59688a46c..ae48b9ca1 100644 --- a/modules/travel/front/extra-community/index.spec.js +++ b/modules/travel/front/extra-community/index.spec.js @@ -27,7 +27,7 @@ describe('Travel Component vnTravelExtraCommunity', () => { describe('findDraggable()', () => { it('should find the draggable element', () => { - const draggable = document.createElement('a'); + const draggable = document.createElement('tr'); draggable.setAttribute('draggable', true); const $event = new Event('dragstart'); @@ -43,7 +43,7 @@ describe('Travel Component vnTravelExtraCommunity', () => { describe('findDroppable()', () => { it('should find the droppable element', () => { - const droppable = document.createElement('vn-tbody'); + const droppable = document.createElement('tbody'); droppable.setAttribute('vn-droppable', true); const $event = new Event('drop'); @@ -58,9 +58,9 @@ describe('Travel Component vnTravelExtraCommunity', () => { }); describe('dragStart()', () => { - it(`should add the class "dragging" to the draggable element + it(`should add the class "dragging" to the draggable element and then set the entryId controller property`, () => { - const draggable = document.createElement('a'); + const draggable = document.createElement('tr'); draggable.setAttribute('draggable', true); draggable.setAttribute('id', 3); @@ -78,9 +78,9 @@ describe('Travel Component vnTravelExtraCommunity', () => { }); describe('dragEnd()', () => { - it(`should remove the class "dragging" from the draggable element + it(`should remove the class "dragging" from the draggable element and then set the entryId controller property to null`, () => { - const draggable = document.createElement('a'); + const draggable = document.createElement('tr'); draggable.setAttribute('draggable', true); draggable.setAttribute('id', 3); draggable.classList.add('dragging'); @@ -100,13 +100,13 @@ describe('Travel Component vnTravelExtraCommunity', () => { describe('onDrop()', () => { it('should make an HTTP patch query', () => { - const droppable = document.createElement('vn-tbody'); + const droppable = document.createElement('tbody'); droppable.setAttribute('vn-droppable', true); droppable.setAttribute('id', 1); jest.spyOn(controller, 'findDroppable').mockReturnValue(droppable); - const oldDroppable = document.createElement('vn-tbody'); + const oldDroppable = document.createElement('tbody'); oldDroppable.setAttribute('vn-droppable', true); const entry = document.createElement('div'); oldDroppable.appendChild(entry); diff --git a/modules/travel/front/extra-community/style.scss b/modules/travel/front/extra-community/style.scss index 41544242d..fb64822f9 100644 --- a/modules/travel/front/extra-community/style.scss +++ b/modules/travel/front/extra-community/style.scss @@ -3,18 +3,57 @@ vn-travel-extra-community { .header { margin-bottom: 16px; - font-size: 1.25rem; line-height: 1; padding: 7px; padding-bottom: 7px; padding-bottom: 4px; font-weight: lighter; - background-color: #fde6ca; - color: $color-font-light; + background-color: $color-bg; + color: white; border-bottom: 1px solid #f7931e; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; + cursor: pointer; + .multi-line{ + padding-top: 15px; + padding-bottom: 15px; + } + } + + table[vn-droppable] { + border-radius: 0; + } + + tr[draggable] { + transition: all .5s; + cursor: move; + overflow: auto; + outline: 0; + height: 65px; + pointer-events: fill; + user-select: all; + } + + tr[draggable] *::selection { + background-color: transparent; + } + + tr[draggable]:hover { + background-color: $color-hover-cd; + } + + tr[draggable].dragging { + background-color: $color-primary-light; + color: $color-font-light; + font-weight: bold; + } + + + .multi-line{ + max-width: 200px; + word-wrap: normal; + white-space: normal; } vn-td-editable text { @@ -25,31 +64,4 @@ vn-travel-extra-community { border-radius: 0; color: $color-active } - - vn-td-editable:hover text:after { - font-family: 'Material Icons'; - content: 'edit'; - position: absolute; - right: -15px; - color: $color-spacer - } - - vn-table[vn-droppable] { - border-radius: 0; - } - - a[draggable] { - transition: all .5s; - cursor: move; - outline: 0; - } - - a[draggable]:hover { - background-color: $color-hover-cd - } - - a[draggable].dragging { - background-color: $color-success-light; - font-weight:bold - } -} \ No newline at end of file +} diff --git a/modules/travel/front/index/index.html b/modules/travel/front/index/index.html index 8510cf328..27a700083 100644 --- a/modules/travel/front/index/index.html +++ b/modules/travel/front/index/index.html @@ -11,7 +11,7 @@ Id Reference - Agency + Agency Warehouse Out Shipped Delivered diff --git a/modules/travel/front/index/index.js b/modules/travel/front/index/index.js index 5cae6fa06..50036831f 100644 --- a/modules/travel/front/index/index.js +++ b/modules/travel/front/index/index.js @@ -10,7 +10,7 @@ export default class Controller extends Section { onCloneAccept(travel) { const params = JSON.stringify({ ref: travel.ref, - agencyModeFk: travel.agencyFk, + agencyModeFk: travel.agencyModeFk, shipped: travel.shipped, landed: travel.landed, warehouseInFk: travel.warehouseInFk, @@ -44,7 +44,7 @@ export default class Controller extends Section { case 'landed': return {'t.landed': {between: this.dateRange(value)}}; case 'id': - case 'agencyFk': + case 'agencyModeFk': case 'warehouseOutFk': case 'warehouseInFk': case 'totalEntries': diff --git a/modules/travel/front/index/index.spec.js b/modules/travel/front/index/index.spec.js index 1b2ab0a87..9abe46a64 100644 --- a/modules/travel/front/index/index.spec.js +++ b/modules/travel/front/index/index.spec.js @@ -35,11 +35,11 @@ describe('Travel Component vnTravelIndex', () => { const travel = { ref: 1, - agencyFk: 1 + agencyModeFk: 1 }; const travelParams = { ref: travel.ref, - agencyModeFk: travel.agencyFk + agencyModeFk: travel.agencyModeFk }; const queryParams = JSON.stringify(travelParams); controller.onCloneAccept(travel); diff --git a/modules/travel/front/search-panel/index.html b/modules/travel/front/search-panel/index.html index 8d4edec1a..2e9c796c3 100644 --- a/modules/travel/front/search-panel/index.html +++ b/modules/travel/front/search-panel/index.html @@ -29,7 +29,7 @@ diff --git a/modules/travel/front/summary/index.html b/modules/travel/front/summary/index.html index e74682fb9..bd9d6c9cb 100644 --- a/modules/travel/front/summary/index.html +++ b/modules/travel/front/summary/index.html @@ -158,7 +158,7 @@ {{thermograph.thermographFk}} - {{thermograph.temperature}} + {{thermograph.temperatureFk}} {{thermograph.result}} {{thermograph.warehouse.name}} {{thermograph.created | date: 'dd/MM/yyyy'}} diff --git a/modules/worker/back/methods/calendar/absences.js b/modules/worker/back/methods/calendar/absences.js index 32d311cdb..ddf38a604 100644 --- a/modules/worker/back/methods/calendar/absences.js +++ b/modules/worker/back/methods/calendar/absences.js @@ -4,10 +4,15 @@ module.exports = Self => { Self.remoteMethodCtx('absences', { description: 'Returns an array of absences from an specified contract', accepts: [{ - arg: 'businessFk', + arg: 'workerFk', type: 'number', required: true, }, + { + arg: 'businessFk', + type: 'number', + required: false, + }, { arg: 'year', type: 'date', @@ -27,7 +32,7 @@ module.exports = Self => { } }); - Self.absences = async(ctx, businessFk, year, options) => { + Self.absences = async(ctx, workerFk, businessFk, year, options) => { const models = Self.app.models; const started = new Date(); @@ -45,7 +50,17 @@ module.exports = Self => { if (typeof options == 'object') Object.assign(myOptions, options); - const contract = await models.WorkerLabour.findOne({ + let condition = { + and: [ + {workerFk: workerFk}, + {businessFk: businessFk} + ] + }; + + if (businessFk) + condition.and.push({workerFk: workerFk}); + + const contracts = await models.WorkerLabour.find({ include: [{ relation: 'holidays', scope: { @@ -82,31 +97,32 @@ module.exports = Self => { } } }], - where: {businessFk} + where: condition }, myOptions); - if (!contract) return; + if (!contracts) return; - const isSubordinate = await models.Worker.isSubordinate(ctx, contract.workerFk, myOptions); + const isSubordinate = await models.Worker.isSubordinate(ctx, workerFk, myOptions); if (!isSubordinate) throw new UserError(`You don't have enough privileges`); const absences = []; - for (let absence of contract.absences()) { - absence.dated = new Date(absence.dated); - absence.dated.setHours(0, 0, 0, 0); - - absences.push(absence); - } - - // Workcenter holidays const holidays = []; - const holidayList = contract.workCenter().holidays(); - for (let day of holidayList) { - day.dated = new Date(day.dated); - day.dated.setHours(0, 0, 0, 0); - holidays.push(day); + for (let contract of contracts) { + for (let absence of contract.absences()) { + absence.dated = new Date(absence.dated); + absence.dated.setHours(0, 0, 0, 0); + + absences.push(absence); + } + + for (let day of contract.workCenter().holidays()) { + day.dated = new Date(day.dated); + day.dated.setHours(0, 0, 0, 0); + + holidays.push(day); + } } return [absences, holidays]; diff --git a/modules/worker/back/methods/calendar/specs/absences.spec.js b/modules/worker/back/methods/calendar/specs/absences.spec.js index cfe7379c3..2180a5312 100644 --- a/modules/worker/back/methods/calendar/specs/absences.spec.js +++ b/modules/worker/back/methods/calendar/specs/absences.spec.js @@ -3,12 +3,13 @@ const app = require('vn-loopback/server/server'); describe('Worker absences()', () => { it('should get the absence calendar for a full year contract', async() => { const ctx = {req: {accessToken: {userId: 1106}}}; + const workerId = 1106; const businessId = 1106; const now = new Date(); const year = now.getFullYear(); - const [absences] = await app.models.Calendar.absences(ctx, businessId, year); + const [absences] = await app.models.Calendar.absences(ctx, workerId, businessId, year); const firstType = absences[0].absenceType().name; const sixthType = absences[5].absenceType().name; @@ -32,10 +33,10 @@ describe('Worker absences()', () => { const worker = await app.models.WorkerLabour.findById(businessId, null, options); await app.models.WorkerLabour.rawSql( - `UPDATE postgresql.business SET date_end = ? WHERE business_id = ?`, + `UPDATE vn.business SET ended = ? WHERE id = ?`, [null, worker.businessFk], options); - const [absences] = await app.models.Calendar.absences(ctx, businessId, year, options); + const [absences] = await app.models.Calendar.absences(ctx, worker.id, businessId, year, options); let firstType = absences[0].absenceType().name; let sixthType = absences[5].absenceType().name; @@ -51,6 +52,8 @@ describe('Worker absences()', () => { it('should give the same holidays as worked days since the holidays amount matches the amount of days in a year', async() => { const businessId = 1106; + const workerId = 1106; + const userId = 1106; const today = new Date(); @@ -95,13 +98,13 @@ describe('Worker absences()', () => { startingContract.setDate(1); await app.models.WorkerLabour.rawSql( - `UPDATE postgresql.business SET date_start = ?, date_end = ? WHERE business_id = ?`, + `UPDATE vn.business SET started = ?, ended = ? WHERE id = ?`, [startingContract, yearEnd, contract.businessFk], options ); const ctx = {req: {accessToken: {userId: userId}}}; - const [absences] = await app.models.Calendar.absences(ctx, businessId, currentYear); + const [absences] = await app.models.Calendar.absences(ctx, workerId, businessId, currentYear); const firstType = absences[0].absenceType().name; const sixthType = absences[5].absenceType().name; diff --git a/modules/worker/back/methods/department/specs/moveChild.spec.js b/modules/worker/back/methods/department/specs/moveChild.spec.js index ca31784e8..0386ebf05 100644 --- a/modules/worker/back/methods/department/specs/moveChild.spec.js +++ b/modules/worker/back/methods/department/specs/moveChild.spec.js @@ -10,13 +10,13 @@ describe('department moveChild()', () => { it('should move a child department to a new parent', async() => { const childId = 22; - const parentId = 1; + const parentId = 37; const child = await app.models.Department.findById(childId); - expect(child.parentFk).toBeNull(); + expect(child.parentFk).toEqual(1); updatedChild = await app.models.Department.moveChild(childId, parentId); - expect(updatedChild.parentFk).toEqual(1); + expect(updatedChild.parentFk).toEqual(37); }); }); diff --git a/modules/worker/back/methods/department/specs/removeChild.spec.js b/modules/worker/back/methods/department/specs/removeChild.spec.js index d83e1b819..b769bcaa6 100644 --- a/modules/worker/back/methods/department/specs/removeChild.spec.js +++ b/modules/worker/back/methods/department/specs/removeChild.spec.js @@ -8,7 +8,7 @@ describe('department removeChild()', () => { }); it('should remove a child department', async() => { - const childId = 1; + const childId = 44; removedChild = await app.models.Department.findById(childId); const result = await app.models.Department.removeChild(childId); diff --git a/modules/worker/back/methods/worker-time-control-mail/checkInbox.js b/modules/worker/back/methods/worker-time-control-mail/checkInbox.js deleted file mode 100644 index bfecb1605..000000000 --- a/modules/worker/back/methods/worker-time-control-mail/checkInbox.js +++ /dev/null @@ -1,182 +0,0 @@ -const Imap = require('imap'); -module.exports = Self => { - Self.remoteMethod('checkInbox', { - description: 'Check an email inbox and process it', - accessType: 'READ', - returns: - { - arg: 'body', - type: 'file', - root: true - }, - http: { - path: `/checkInbox`, - verb: 'GET' - } - }); - - Self.checkInbox = async() => { - let imapConfig = await Self.app.models.WorkerTimeControlParams.findOne(); - let imap = new Imap({ - user: imapConfig.mailUser, - password: imapConfig.mailPass, - host: imapConfig.mailHost, - port: 993, - tls: true - }); - let isEmailOk; - let uid; - let emailBody; - - function openInbox(cb) { - imap.openBox('INBOX', true, cb); - } - - imap.once('ready', function() { - openInbox(function(err, box) { - if (err) throw err; - const totalMessages = box.messages.total; - if (totalMessages == 0) - imap.end(); - - let f = imap.seq.fetch('1:*', { - bodies: ['HEADER.FIELDS (FROM SUBJECT)', '1'], - struct: true - }); - f.on('message', function(msg, seqno) { - isEmailOk = false; - msg.on('body', function(stream, info) { - let buffer = ''; - let bufferCopy = ''; - stream.on('data', function(chunk) { - buffer = chunk.toString('utf8'); - if (info.which === '1' && bufferCopy.length == 0) - bufferCopy = buffer.replace(/\s/g, ' '); - }); - stream.on('end', function() { - if (bufferCopy.length > 0) { - emailBody = bufferCopy.toUpperCase().trim(); - - const bodyPositionOK = emailBody.match(/\bOK\b/i); - - if (bodyPositionOK != null && (bodyPositionOK.index == 0 || bodyPositionOK.index == 122)) - isEmailOk = true; - else - isEmailOk = false; - } - }); - msg.once('attributes', function(attrs) { - uid = attrs.uid; - }); - msg.once('end', function() { - if (info.which === 'HEADER.FIELDS (FROM SUBJECT)') { - if (isEmailOk) { - imap.move(uid, 'exito', function(err) { - }); - emailConfirm(buffer); - } else { - imap.move(uid, 'error', function(err) { - }); - emailReply(buffer, emailBody); - } - } - }); - }); - }); - f.once('end', function() { - imap.end(); - }); - }); - }); - - imap.connect(); - return 'Leer emails de gestion horaria'; - }; - - async function emailConfirm(buffer) { - const now = new Date(); - const from = JSON.stringify(Imap.parseHeader(buffer).from); - const subject = JSON.stringify(Imap.parseHeader(buffer).subject); - - const timeControlDate = await getEmailDate(subject); - const week = timeControlDate[0]; - const year = timeControlDate[1]; - const user = await getUser(from); - let workerMail; - - if (user.id != null) { - workerMail = await Self.app.models.WorkerTimeControlMail.findOne({ - where: { - week: week, - year: year, - workerFk: user.id - } - }); - } - if (workerMail != null) { - await workerMail.updateAttributes({ - updated: now, - state: 'CONFIRMED' - }); - } - } - - async function emailReply(buffer, emailBody) { - const now = new Date(); - const from = JSON.stringify(Imap.parseHeader(buffer).from); - const subject = JSON.stringify(Imap.parseHeader(buffer).subject); - - const timeControlDate = await getEmailDate(subject); - const week = timeControlDate[0]; - const year = timeControlDate[1]; - const user = await getUser(from); - let workerMail; - - if (user.id != null) { - workerMail = await Self.app.models.WorkerTimeControlMail.findOne({ - where: { - week: week, - year: year, - workerFk: user.id - } - }); - - if (workerMail != null) { - await workerMail.updateAttributes({ - updated: now, - state: 'REVISE', - emailResponse: emailBody - }); - } else - await sendMail(user, subject, emailBody); - } - } - - async function getUser(workerEmail) { - const userEmail = workerEmail.match(/(?<=<)(.*?)(?=>)/); - - let [user] = await Self.rawSql(`SELECT u.id,u.name FROM account.user u - LEFT JOIN account.mailForward m on m.account = u.id - WHERE forwardTo =? OR - CONCAT(u.name,'@verdnatura.es') = ?`, - [userEmail[0], userEmail[0]]); - - return user; - } - - async function getEmailDate(subject) { - const date = subject.match(/\d+/g); - return date; - } - - async function sendMail(user, subject, emailBody) { - const sendTo = 'rrhh@verdnatura.es'; - const emailSubject = subject + ' ' + user.name; - - await Self.app.models.Mail.create({ - receiver: sendTo, - subject: emailSubject, - body: emailBody - }); - } -}; diff --git a/modules/worker/back/methods/worker-time-control/addTimeEntry.js b/modules/worker/back/methods/worker-time-control/addTimeEntry.js index 06356cdaf..fef3cf223 100644 --- a/modules/worker/back/methods/worker-time-control/addTimeEntry.js +++ b/modules/worker/back/methods/worker-time-control/addTimeEntry.js @@ -46,30 +46,11 @@ module.exports = Self => { if (isSubordinate === false || (isSubordinate && isHimself && !isTeamBoss)) throw new UserError(`You don't have enough privileges`); - const minTime = new Date(args.timed); - minTime.setHours(0, 0, 0, 0); + query = `CALL vn.workerTimeControl_clockIn(?,?,?)`; + const [response] = await Self.rawSql(query, [workerId, args.timed, args.direction], myOptions); + if (response[0] && response[0].error) + throw new UserError(response[0].error); - query = `SELECT * FROM vn.workerLabour WHERE workerFk = ? AND (ended >= ? OR ended IS NULL);`; - const [workerLabour] = await Self.rawSql(query, [workerId, minTime]); - const absence = await models.Calendar.findOne({ - where: { - businessFk: workerLabour.businessFk, - dated: minTime - } - }); - if (absence) { - const absenceType = await models.AbsenceType.findById(absence.dayOffTypeFk, null, myOptions); - const isNotHalfAbsence = absenceType.code != 'halfHoliday' - && absenceType.code != 'halfPaidLeave' - && absenceType.code != 'halfFurlough'; - if (isNotHalfAbsence) - throw new UserError(`The worker has a marked absence that day`); - } - return models.WorkerTimeControl.create({ - userFk: workerId, - direction: args.direction, - timed: args.timed, - manual: true - }, myOptions); + return response; }; }; diff --git a/modules/worker/back/methods/worker-time-control/sendMail.js b/modules/worker/back/methods/worker-time-control/sendMail.js new file mode 100644 index 000000000..2f9559b3a --- /dev/null +++ b/modules/worker/back/methods/worker-time-control/sendMail.js @@ -0,0 +1,377 @@ +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; + +module.exports = Self => { + Self.remoteMethodCtx('sendMail', { + description: `Send an email with the hours booked to the employees who telecommuting. + It also inserts booked hours in cases where the employee is telecommuting`, + accessType: 'WRITE', + accepts: [{ + arg: 'workerId', + type: 'number', + description: 'The worker id' + }, + { + arg: 'week', + type: 'number' + }, + { + arg: 'year', + type: 'number' + }], + returns: [{ + type: 'Object', + root: true + }], + http: { + path: `/sendMail`, + verb: 'POST' + } + }); + + Self.sendMail = async(ctx, options) => { + const models = Self.app.models; + const conn = Self.dataSource.connector; + const args = ctx.args; + const $t = ctx.req.__; // $translate + let tx; + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + const stmts = []; + let stmt; + + try { + if (!args.week || !args.year) { + const from = new Date(); + const to = new Date(); + + const time = await models.Time.findOne({ + where: { + dated: {between: [from.setDate(from.getDate() - 10), to.setDate(to.getDate() - 4)]} + }, + order: 'week ASC' + }, myOptions); + + args.week = time.week; + args.year = time.year; + } + + const started = getStartDateOfWeekNumber(args.week, args.year); + started.setHours(0, 0, 0, 0); + + const ended = new Date(started); + ended.setDate(started.getDate() + 6); + ended.setHours(23, 59, 59, 999); + + stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.timeControlCalculate'); + stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.timeBusinessCalculate'); + + if (args.workerId) { + await models.WorkerTimeControl.destroyAll({ + userFk: args.workerId, + timed: {between: [started, ended]}, + isSendMail: true + }, myOptions); + + const where = { + workerFk: args.workerId, + year: args.year, + week: args.week + }; + await models.WorkerTimeControlMail.updateAll(where, { + updated: new Date(), state: 'SENDED' + }, myOptions); + + stmt = new ParameterizedSQL( + `CALL vn.timeControl_calculateByUser(?, ?, ?) + `, [args.workerId, started, ended]); + stmts.push(stmt); + + stmt = new ParameterizedSQL( + `CALL vn.timeBusiness_calculateByUser(?, ?, ?) + `, [args.workerId, started, ended]); + stmts.push(stmt); + } else { + await models.WorkerTimeControl.destroyAll({ + timed: {between: [started, ended]}, + isSendMail: true + }, myOptions); + + const where = { + year: args.year, + week: args.week + }; + await models.WorkerTimeControlMail.updateAll(where, { + updated: new Date(), state: 'SENDED' + }, myOptions); + + stmt = new ParameterizedSQL(`CALL vn.timeControl_calculateAll(?, ?)`, [started, ended]); + stmts.push(stmt); + + stmt = new ParameterizedSQL(`CALL vn.timeBusiness_calculateAll(?, ?)`, [started, ended]); + stmts.push(stmt); + } + + stmt = new ParameterizedSQL(` + SELECT CONCAT(u.name, '@verdnatura.es') receiver, + u.id workerFk, + tb.dated, + tb.timeWorkDecimal, + tb.timeWorkSexagesimal timeWorkSexagesimal, + tb.timeTable, + tc.timeWorkDecimal timeWorkedDecimal, + tc.timeWorkSexagesimal timeWorkedSexagesimal, + tb.type, + tb.businessFk, + tb.permissionRate, + d.isTeleworking + FROM tmp.timeBusinessCalculate tb + JOIN user u ON u.id = tb.userFk + JOIN department d ON d.id = tb.departmentFk + JOIN business b ON b.id = tb.businessFk + LEFT JOIN tmp.timeControlCalculate tc ON tc.userFk = tb.userFk AND tc.dated = tb.dated + LEFT JOIN worker w ON w.id = u.id + JOIN (SELECT tb.userFk, + SUM(IF(tb.type IS NULL, + IF(tc.timeWorkDecimal > 0, FALSE, IF(tb.timeWorkDecimal > 0, TRUE, FALSE)), + TRUE))isTeleworkingWeek + FROM tmp.timeBusinessCalculate tb + LEFT JOIN tmp.timeControlCalculate tc ON tc.userFk = tb.userFk + AND tc.dated = tb.dated + GROUP BY tb.userFk + HAVING isTeleworkingWeek > 0 + )sub ON sub.userFk = u.id + WHERE d.hasToRefill + AND IFNULL(?, u.id) = u.id + AND b.companyCodeFk = 'VNL' + AND w.businessFk + ORDER BY u.id, tb.dated + `, [args.workerId]); + const index = stmts.push(stmt) - 1; + + const sql = ParameterizedSQL.join(stmts, ';'); + const days = await conn.executeStmt(sql, myOptions); + + let previousWorkerFk = days[index][0].workerFk; + let previousReceiver = days[index][0].receiver; + + const workerTimeControlConfig = await models.WorkerTimeControlConfig.findOne(null, myOptions); + + for (let day of days[index]) { + workerFk = day.workerFk; + if (day.timeWorkDecimal > 0 && day.timeWorkedDecimal == null + && (day.permissionRate ? day.permissionRate : true)) { + if (day.timeTable == null) { + const timed = new Date(day.dated); + await models.WorkerTimeControl.create({ + userFk: day.workerFk, + timed: timed.setHours(8), + manual: true, + direction: 'in', + isSendMail: true + }, myOptions); + + if (day.timeWorkDecimal >= workerTimeControlConfig.timeToBreakTime / 3600) { + await models.WorkerTimeControl.create({ + userFk: day.workerFk, + timed: timed.setHours(9), + manual: true, + direction: 'middle', + isSendMail: true + }, myOptions); + + await models.WorkerTimeControl.create({ + userFk: day.workerFk, + timed: timed.setHours(9, 20), + manual: true, + direction: 'middle', + isSendMail: true + }, myOptions); + } + + const [hoursWork, minutesWork, secondsWork] = getTime(day.timeWorkSexagesimal); + await models.WorkerTimeControl.create({ + userFk: day.workerFk, + timed: timed.setHours(8 + hoursWork, minutesWork, secondsWork), + manual: true, + direction: 'out', + isSendMail: true + }, myOptions); + } else { + const weekDay = day.dated.getDay(); + const journeys = await models.Journey.find({ + where: { + business_id: day.businessFk, + day_id: weekDay + } + }, myOptions); + + let timeTableDecimalInSeconds = 0; + for (let journey of journeys) { + const start = new Date(); + const [startHours, startMinutes, startSeconds] = getTime(journey.start); + start.setHours(startHours, startMinutes, startSeconds, 0); + + const end = new Date(); + const [endHours, endMinutes, endSeconds] = getTime(journey.end); + end.setHours(endHours, endMinutes, endSeconds, 0); + + const result = (end - start) / 1000; + timeTableDecimalInSeconds += result; + } + + for (let journey of journeys) { + const timeTableDecimal = timeTableDecimalInSeconds / 3600; + if (day.timeWorkDecimal == timeTableDecimal) { + const timed = new Date(day.dated); + const [startHours, startMinutes, startSeconds] = getTime(journey.start); + await models.WorkerTimeControl.create({ + userFk: day.workerFk, + timed: timed.setHours(startHours, startMinutes, startSeconds), + manual: true, + isSendMail: true + }, myOptions); + + const [endHours, endMinutes, endSeconds] = getTime(journey.end); + await models.WorkerTimeControl.create({ + userFk: day.workerFk, + timed: timed.setHours(endHours, endMinutes, endSeconds), + manual: true, + isSendMail: true + }, myOptions); + } else { + const minStart = journeys.reduce(function(prev, curr) { + return curr.start < prev.start ? curr : prev; + }); + if (journey == minStart) { + const timed = new Date(day.dated); + const [startHours, startMinutes, startSeconds] = getTime(journey.start); + await models.WorkerTimeControl.create({ + userFk: day.workerFk, + timed: timed.setHours(startHours, startMinutes, startSeconds), + manual: true, + isSendMail: true + }, myOptions); + + const [hoursWork, minutesWork, secondsWork] = getTime(day.timeWorkSexagesimal); + await models.WorkerTimeControl.create({ + userFk: day.workerFk, + timed: timed.setHours( + startHours + hoursWork, + startMinutes + minutesWork, + startSeconds + secondsWork + ), + manual: true, + isSendMail: true + }, myOptions); + } + } + + if (day.timeWorkDecimal >= workerTimeControlConfig.timeToBreakTime / 3600) { + const minStart = journeys.reduce(function(prev, curr) { + return curr.start < prev.start ? curr : prev; + }); + if (journey == minStart) { + const timed = new Date(day.dated); + const [startHours, startMinutes, startSeconds] = getTime(journey.start); + await models.WorkerTimeControl.create({ + userFk: day.workerFk, + timed: timed.setHours(startHours + 1, startMinutes, startSeconds), + manual: true, + isSendMail: true + }, myOptions); + + await models.WorkerTimeControl.create({ + userFk: day.workerFk, + timed: timed.setHours(startHours + 1, startMinutes + 20, startSeconds), + manual: true, + isSendMail: true + }, myOptions); + } + } + } + const timed = new Date(day.dated); + const firstWorkerTimeControl = await models.WorkerTimeControl.findOne({ + where: { + userFk: day.workerFk, + timed: {between: [timed.setHours(0, 0, 0, 0), timed.setHours(23, 59, 59, 999)]} + }, + order: 'timed ASC' + }, myOptions); + + if (firstWorkerTimeControl) + firstWorkerTimeControl.updateAttribute('direction', 'in', myOptions); + + const lastWorkerTimeControl = await models.WorkerTimeControl.findOne({ + where: { + userFk: day.workerFk, + timed: {between: [timed.setHours(0, 0, 0, 0), timed.setHours(23, 59, 59, 999)]} + }, + order: 'timed DESC' + }, myOptions); + + if (lastWorkerTimeControl) + lastWorkerTimeControl.updateAttribute('direction', 'out', myOptions); + } + } + + const lastDay = days[index][days[index].length - 1]; + if (day.workerFk != previousWorkerFk || day == lastDay) { + const salix = await models.Url.findOne({ + where: { + appName: 'salix', + environment: process.env.NODE_ENV || 'dev' + } + }, myOptions); + + const timestamp = started.getTime() / 1000; + await models.Mail.create({ + receiver: previousReceiver, + subject: $t('Record of hours week', { + week: args.week, + year: args.year + }), + body: `${salix.url}worker/${previousWorkerFk}/time-control?timestamp=${timestamp}` + }, myOptions); + + query = `INSERT IGNORE INTO workerTimeControlMail (workerFk, year, week) + VALUES (?, ?, ?);`; + await Self.rawSql(query, [previousWorkerFk, args.year, args.week], myOptions); + + previousWorkerFk = day.workerFk; + previousReceiver = day.receiver; + } + } + + if (tx) await tx.commit(); + + return true; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; + + function getStartDateOfWeekNumber(week, year) { + const simple = new Date(year, 0, 1 + (week - 1) * 7); + const dow = simple.getDay(); + const weekStart = simple; + if (dow <= 4) + weekStart.setDate(simple.getDate() - simple.getDay() + 1); + else + weekStart.setDate(simple.getDate() + 8 - simple.getDay()); + return weekStart; + } + + function getTime(timeString) { + const [hours, minutes, seconds] = timeString.split(':'); + return [parseInt(hours), parseInt(minutes), parseInt(seconds)]; + } +}; diff --git a/modules/worker/back/methods/worker-time-control/specs/filter.spec.js b/modules/worker/back/methods/worker-time-control/specs/filter.spec.js index 7fe681ec1..927d83df3 100644 --- a/modules/worker/back/methods/worker-time-control/specs/filter.spec.js +++ b/modules/worker/back/methods/worker-time-control/specs/filter.spec.js @@ -1,8 +1,8 @@ -const app = require('vn-loopback/server/server'); +const models = require('vn-loopback/server/server').models; describe('workerTimeControl filter()', () => { it('should return 1 result filtering by id', async() => { - let ctx = {req: {accessToken: {userId: 1106}}, args: {workerFk: 1106}}; + const ctx = {req: {accessToken: {userId: 1106}}, args: {workerFk: 1106}}; const firstHour = new Date(); firstHour.setHours(7, 0, 0, 0); const lastHour = new Date(); @@ -14,13 +14,13 @@ describe('workerTimeControl filter()', () => { timed: {between: [firstHour, lastHour]} } }; - let result = await app.models.WorkerTimeControl.filter(ctx, filter); + const result = await models.WorkerTimeControl.filter(ctx, filter); expect(result.length).toEqual(4); }); it('should return a privilege error for a non subordinate worker', async() => { - let ctx = {req: {accessToken: {userId: 1107}}, args: {workerFk: 1106}}; + const ctx = {req: {accessToken: {userId: 1107}}, args: {workerFk: 1106}}; const firstHour = new Date(); firstHour.setHours(7, 0, 0, 0); const lastHour = new Date(); @@ -34,7 +34,7 @@ describe('workerTimeControl filter()', () => { }; let error; - await app.models.WorkerTimeControl.filter(ctx, filter).catch(e => { + await models.WorkerTimeControl.filter(ctx, filter).catch(e => { error = e; }).finally(() => { expect(error.message).toEqual(`You don't have enough privileges`); diff --git a/modules/worker/back/methods/worker-time-control/specs/sendMail.spec.js b/modules/worker/back/methods/worker-time-control/specs/sendMail.spec.js new file mode 100644 index 000000000..d0afd45b9 --- /dev/null +++ b/modules/worker/back/methods/worker-time-control/specs/sendMail.spec.js @@ -0,0 +1,132 @@ +const models = require('vn-loopback/server/server').models; + +describe('workerTimeControl sendMail()', () => { + const workerId = 18; + const ctx = { + req: { + __: value => { + return value; + } + }, + args: {} + + }; + + beforeAll(function() { + originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; + jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; + }); + + it('should fill time control of a worker without records in Journey and with rest', async() => { + const tx = await models.WorkerTimeControl.beginTransaction({}); + + try { + const options = {transaction: tx}; + + await models.WorkerTimeControl.sendMail(ctx, options); + + const workerTimeControl = await models.WorkerTimeControl.find({ + where: {userFk: workerId} + }, options); + + expect(workerTimeControl[0].timed.getHours()).toEqual(8); + expect(workerTimeControl[1].timed.getHours()).toEqual(9); + expect(`${workerTimeControl[2].timed.getHours()}:${workerTimeControl[2].timed.getMinutes()}`).toEqual('9:20'); + expect(workerTimeControl[3].timed.getHours()).toEqual(16); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should fill time control of a worker without records in Journey and without rest', async() => { + const workdayOf20Hours = 3; + const tx = await models.WorkerTimeControl.beginTransaction({}); + + try { + const options = {transaction: tx}; + query = `UPDATE business b + SET b.calendarTypeFk = ? + WHERE b.workerFk = ?; `; + await models.WorkerTimeControl.rawSql(query, [workdayOf20Hours, workerId], options); + + await models.WorkerTimeControl.sendMail(ctx, options); + + const workerTimeControl = await models.WorkerTimeControl.find({ + where: {userFk: workerId} + }, options); + + expect(workerTimeControl[0].timed.getHours()).toEqual(8); + expect(workerTimeControl[1].timed.getHours()).toEqual(12); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should fill time control of a worker with records in Journey and with rest', async() => { + const tx = await models.WorkerTimeControl.beginTransaction({}); + + try { + const options = {transaction: tx}; + query = `INSERT INTO postgresql.journey(journey_id, day_id, start, end, business_id) + VALUES + (1, 1, '09:00:00', '13:00:00', ?), + (2, 1, '14:00:00', '19:00:00', ?);`; + await models.WorkerTimeControl.rawSql(query, [workerId, workerId, workerId], options); + + await models.WorkerTimeControl.sendMail(ctx, options); + + const workerTimeControl = await models.WorkerTimeControl.find({ + where: {userFk: workerId} + }, options); + + expect(workerTimeControl[0].timed.getHours()).toEqual(9); + expect(workerTimeControl[2].timed.getHours()).toEqual(10); + expect(`${workerTimeControl[3].timed.getHours()}:${workerTimeControl[3].timed.getMinutes()}`).toEqual('10:20'); + expect(workerTimeControl[1].timed.getHours()).toEqual(13); + expect(workerTimeControl[4].timed.getHours()).toEqual(14); + expect(workerTimeControl[5].timed.getHours()).toEqual(19); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should fill time control of a worker with records in Journey and without rest', async() => { + const tx = await models.WorkerTimeControl.beginTransaction({}); + + try { + const options = {transaction: tx}; + query = `INSERT INTO postgresql.journey(journey_id, day_id, start, end, business_id) + VALUES + (1, 1, '12:30:00', '14:00:00', ?);`; + await models.WorkerTimeControl.rawSql(query, [workerId, workerId, workerId], options); + + await models.WorkerTimeControl.sendMail(ctx, options); + + const workerTimeControl = await models.WorkerTimeControl.find({ + where: {userFk: workerId} + }, options); + + expect(`${workerTimeControl[0].timed.getHours()}:${workerTimeControl[0].timed.getMinutes()}`).toEqual('12:30'); + expect(workerTimeControl[1].timed.getHours()).toEqual(14); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + afterAll(function() { + jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout; + }); +}); + diff --git a/modules/worker/back/methods/worker-time-control/specs/timeEntry.spec.js b/modules/worker/back/methods/worker-time-control/specs/timeEntry.spec.js index 0c2914934..e1e0feced 100644 --- a/modules/worker/back/methods/worker-time-control/specs/timeEntry.spec.js +++ b/modules/worker/back/methods/worker-time-control/specs/timeEntry.spec.js @@ -1,6 +1,6 @@ -const app = require('vn-loopback/server/server'); +/* eslint max-len: ["error", { "code": 150 }]*/ +const models = require('vn-loopback/server/server').models; const LoopBackContext = require('loopback-context'); -const models = app.models; describe('workerTimeControl add/delete timeEntry()', () => { const HHRRId = 37; @@ -8,10 +8,18 @@ describe('workerTimeControl add/delete timeEntry()', () => { const employeeId = 1; const salesPersonId = 1106; const salesBossId = 19; - let activeCtx = { + const hankPymId = 1107; + const jessicaJonesId = 1110; + const monday = 1; + const tuesday = 2; + const thursday = 4; + const friday = 5; + const saturday = 6; + const sunday = 7; + const activeCtx = { accessToken: {userId: 50}, }; - let ctx = {req: activeCtx}; + const ctx = {req: activeCtx}; beforeAll(() => { spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ @@ -19,190 +27,675 @@ describe('workerTimeControl add/delete timeEntry()', () => { }); }); - it('should fail to add a time entry if the target user is not a subordinate', async() => { - activeCtx.accessToken.userId = employeeId; - const workerId = 2; + describe('as Role errors', () => { + it('should fail to add a time entry if the target user is not a subordinate', async() => { + activeCtx.accessToken.userId = employeeId; + const workerId = 2; - let error; + let error; - try { - ctx.args = {timed: new Date(), direction: 'in'}; - await models.WorkerTimeControl.addTimeEntry(ctx, workerId); - } catch (e) { - error = e; - } + try { + ctx.args = {timed: new Date(), direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId); + } catch (e) { + error = e; + } - expect(error).toBeDefined(); - expect(error.statusCode).toBe(400); - expect(error.message).toBe(`You don't have enough privileges`); + expect(error).toBeDefined(); + expect(error.statusCode).toBe(400); + expect(error.message).toBe(`You don't have enough privileges`); + }); + + it('should fail to add if the current and the target user are the same and is not team boss', async() => { + activeCtx.accessToken.userId = employeeId; + const workerId = employeeId; + let error; + + try { + ctx.args = {timed: new Date(), direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId); + } catch (e) { + error = e; + } + + expect(error).toBeDefined(); + expect(error.statusCode).toBe(400); + expect(error.message).toBe(`You don't have enough privileges`); + }); + + it('should add if the current user is team boss and the target user is himself', async() => { + activeCtx.accessToken.userId = teamBossId; + const workerId = teamBossId; + + const tx = await models.WorkerTimeControl.beginTransaction({}); + try { + const options = {transaction: tx}; + + const todayAtOne = new Date(); + todayAtOne.setHours(1, 0, 0, 0); + + ctx.args = {timed: todayAtOne, direction: 'in'}; + const [createdTimeEntry] = await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + expect(createdTimeEntry.id).toBeDefined(); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should try but fail to delete his own time entry', async() => { + activeCtx.accessToken.userId = salesBossId; + const workerId = salesBossId; + + let error; + const tx = await models.WorkerTimeControl.beginTransaction({}); + try { + const options = {transaction: tx}; + + const todayAtOne = new Date(); + todayAtOne.setHours(1, 0, 0, 0); + + ctx.args = {timed: todayAtOne, direction: 'in'}; + const [createdTimeEntry] = await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + activeCtx.accessToken.userId = salesPersonId; + await models.WorkerTimeControl.deleteTimeEntry(ctx, createdTimeEntry.id, options); + + await tx.rollback(); + } catch (e) { + error = e; + await tx.rollback(); + } + + expect(error).toBeDefined(); + expect(error.statusCode).toBe(400); + expect(error.message).toBe(`You don't have enough privileges`); + }); + + it('should delete the created time entry for the team boss as himself', async() => { + activeCtx.accessToken.userId = teamBossId; + const workerId = teamBossId; + + const tx = await models.WorkerTimeControl.beginTransaction({}); + try { + const options = {transaction: tx}; + + const todayAtOne = new Date(); + todayAtOne.setHours(1, 0, 0, 0); + + ctx.args = {timed: todayAtOne, direction: 'in'}; + const [createdTimeEntry] = await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + expect(createdTimeEntry.id).toBeDefined(); + + await models.WorkerTimeControl.deleteTimeEntry(ctx, createdTimeEntry.id, options); + + const deletedTimeEntry = await models.WorkerTimeControl.findById(createdTimeEntry.id, null, options); + + expect(deletedTimeEntry).toBeNull(); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should delete the created time entry for the team boss as HHRR', async() => { + activeCtx.accessToken.userId = HHRRId; + const workerId = teamBossId; + + const tx = await models.WorkerTimeControl.beginTransaction({}); + try { + const options = {transaction: tx}; + + const todayAtOne = new Date(); + todayAtOne.setHours(1, 0, 0, 0); + + ctx.args = {timed: todayAtOne, direction: 'in'}; + const [createdTimeEntry] = await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + expect(createdTimeEntry.id).toBeDefined(); + + await models.WorkerTimeControl.deleteTimeEntry(ctx, createdTimeEntry.id, options); + + const deletedTimeEntry = await models.WorkerTimeControl.findById(createdTimeEntry.id, null, options); + + expect(deletedTimeEntry).toBeNull(); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); + + it('should edit the created time entry for the team boss as HHRR', async() => { + activeCtx.accessToken.userId = HHRRId; + const workerId = teamBossId; + + const tx = await models.WorkerTimeControl.beginTransaction({}); + try { + const options = {transaction: tx}; + + const todayAtOne = new Date(); + todayAtOne.setHours(1, 0, 0, 0); + + ctx.args = {timed: todayAtOne, direction: 'in'}; + const [createdTimeEntry] = await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + expect(createdTimeEntry.id).toBeDefined(); + + ctx.args = {direction: 'out'}; + const updatedTimeEntry = await models.WorkerTimeControl.updateTimeEntry(ctx, createdTimeEntry.id, options); + + expect(updatedTimeEntry.direction).toEqual('out'); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + throw e; + } + }); }); - it('should fail to add if the current and the target user are the same and is not team boss', async() => { - activeCtx.accessToken.userId = employeeId; - const workerId = employeeId; - let error; + describe('WorkerTimeControl_clockIn calls', () => { + it('should fail to add a time entry if the target user has an absence that day', async() => { + activeCtx.accessToken.userId = salesBossId; + const workerId = hankPymId; + const date = new Date(); + date.setDate(date.getDate() - 16); + date.setHours(8, 0, 0); + let error; - try { - ctx.args = {timed: new Date(), direction: 'in'}; - await models.WorkerTimeControl.addTimeEntry(ctx, workerId); - } catch (e) { - error = e; - } - - expect(error).toBeDefined(); - expect(error.statusCode).toBe(400); - expect(error.message).toBe(`You don't have enough privileges`); - }); - - it('should add if the current user is team boss and the target user is a himself', async() => { - activeCtx.accessToken.userId = teamBossId; - const workerId = teamBossId; - - const tx = await models.WorkerTimeControl.beginTransaction({}); - try { + const tx = await models.WorkerTimeControl.beginTransaction({}); const options = {transaction: tx}; + try { + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); - const todayAtSix = new Date(); - todayAtSix.setHours(18, 30, 0, 0); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + error = e; + } - ctx.args = {timed: todayAtSix, direction: 'in'}; - const createdTimeEntry = await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + expect(error.message).toBe(`No está permitido trabajar`); + }); - expect(createdTimeEntry.id).toBeDefined(); + it('should fail to add a time entry for a worker without an existing contract', async() => { + activeCtx.accessToken.userId = salesBossId; + const workerId = hankPymId; + const date = new Date(); + date.setFullYear(date.getFullYear() - 2); + let error; - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); + const tx = await models.WorkerTimeControl.beginTransaction({}); + try { + const options = {transaction: tx}; + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); - it('should fail to add a time entry if the target user has absent that day', async() => { - activeCtx.accessToken.userId = salesBossId; - const workerId = salesPersonId; - let error; + await tx.rollback(); + } catch (e) { + await tx.rollback(); + error = e; + } - let calendar = await app.models.Calendar.findById(3); + expect(error.message).toBe(`No hay un contrato en vigor`); + }); - try { - ctx.args = {timed: new Date(calendar.dated), direction: 'in'}; - await models.WorkerTimeControl.addTimeEntry(ctx, workerId); - } catch (e) { - error = e; - } + describe('direction errors', () => { + it('should throw an error when trying "in" direction twice', async() => { + activeCtx.accessToken.userId = salesBossId; + const workerId = hankPymId; - expect(error.message).toBe(`The worker has a marked absence that day`); - }); + let date = new Date(); + date.setDate(date.getDate() - 21); + date = weekDay(date, monday); + let error; - it('should try but fail to delete his own time entry', async() => { - activeCtx.accessToken.userId = salesBossId; - const workerId = salesBossId; + const tx = await models.WorkerTimeControl.beginTransaction({}); + const options = {transaction: tx}; + date.setHours(8, 0, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); - let error; - const tx = await models.WorkerTimeControl.beginTransaction({}); - try { - const options = {transaction: tx}; + try { + date.setHours(10, 0, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); - const todayAtSeven = new Date(); - todayAtSeven.setHours(19, 30, 0, 0); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + error = e; + } - ctx.args = {timed: todayAtSeven, direction: 'in'}; - const createdTimeEntry = await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + expect(error.message).toBe(`Dirección incorrecta`); + }); - activeCtx.accessToken.userId = salesPersonId; - await models.WorkerTimeControl.deleteTimeEntry(ctx, createdTimeEntry.id, options); + it('should throw an error when trying "in" direction after insert "in" and "middle"', async() => { + activeCtx.accessToken.userId = salesBossId; + const workerId = hankPymId; - await tx.rollback(); - } catch (e) { - error = e; - await tx.rollback(); - } + let date = new Date(); + date.setDate(date.getDate() - 21); + date = weekDay(date, monday); + let error; - expect(error).toBeDefined(); - expect(error.statusCode).toBe(400); - expect(error.message).toBe(`You don't have enough privileges`); - }); + const tx = await models.WorkerTimeControl.beginTransaction({}); + const options = {transaction: tx}; - it('should delete the created time entry for the team boss as himself', async() => { - activeCtx.accessToken.userId = teamBossId; - const workerId = teamBossId; + date.setHours(8, 0, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + date.setHours(9, 0, 0); + ctx.args = {timed: date, direction: 'middle'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); - const tx = await models.WorkerTimeControl.beginTransaction({}); - try { - const options = {transaction: tx}; + try { + date.setHours(10, 0, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); - const todayAtFive = new Date(); - todayAtFive.setHours(17, 30, 0, 0); + await tx.rollback(); + } catch (e) { + await tx.rollback(); + error = e; + } - ctx.args = {timed: todayAtFive, direction: 'in'}; - const createdTimeEntry = await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + expect(error.message).toBe(`Dirección incorrecta`); + }); - expect(createdTimeEntry.id).toBeDefined(); + it('Should throw an error when trying "out" before closing a "middle" couple', async() => { + activeCtx.accessToken.userId = salesBossId; + const workerId = hankPymId; - await models.WorkerTimeControl.deleteTimeEntry(ctx, createdTimeEntry.id, options); + let date = new Date(); + date.setDate(date.getDate() - 21); + date = weekDay(date, monday); + let error; - const deletedTimeEntry = await models.WorkerTimeControl.findById(createdTimeEntry.id, null, options); + const tx = await models.WorkerTimeControl.beginTransaction({}); + const options = {transaction: tx}; - expect(deletedTimeEntry).toBeNull(); - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); + date.setHours(8, 0, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + date.setHours(9, 0, 0); + ctx.args = {timed: date, direction: 'middle'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); - it('should delete the created time entry for the team boss as HHRR', async() => { - activeCtx.accessToken.userId = HHRRId; - const workerId = teamBossId; + try { + date.setHours(10, 0, 0); + ctx.args = {timed: date, direction: 'out'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); - const tx = await models.WorkerTimeControl.beginTransaction({}); - try { - const options = {transaction: tx}; + await tx.rollback(); + } catch (e) { + await tx.rollback(); + error = e; + } - const todayAtFive = new Date(); - todayAtFive.setHours(17, 30, 0, 0); + expect(error.message).toBe(`Dirección incorrecta`); + }); - ctx.args = {timed: todayAtFive, direction: 'in'}; - const createdTimeEntry = await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + it('should throw an error when trying "middle" after "out"', async() => { + activeCtx.accessToken.userId = salesBossId; + const workerId = hankPymId; - expect(createdTimeEntry.id).toBeDefined(); + let date = new Date(); + date.setDate(date.getDate() - 21); + date = weekDay(date, monday); + let error; - await models.WorkerTimeControl.deleteTimeEntry(ctx, createdTimeEntry.id, options); + const tx = await models.WorkerTimeControl.beginTransaction({}); + const options = {transaction: tx}; - const deletedTimeEntry = await models.WorkerTimeControl.findById(createdTimeEntry.id, null, options); + date.setHours(8, 0, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + date.setHours(9, 0, 0); + ctx.args = {timed: date, direction: 'out'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); - expect(deletedTimeEntry).toBeNull(); - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } - }); + try { + date.setHours(10, 0, 0); + ctx.args = {timed: date, direction: 'middle'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); - it('should edit the created time entry for the team boss as HHRR', async() => { - activeCtx.accessToken.userId = HHRRId; - const workerId = teamBossId; + await tx.rollback(); + } catch (e) { + await tx.rollback(); + error = e; + } - const tx = await models.WorkerTimeControl.beginTransaction({}); - try { - const options = {transaction: tx}; + expect(error.message).toBe(`Dirección incorrecta`); + }); - const todayAtFive = new Date(); - todayAtFive.setHours(17, 30, 0, 0); + it('should throw an error when trying "out" direction twice', async() => { + activeCtx.accessToken.userId = salesBossId; + const workerId = hankPymId; - ctx.args = {timed: todayAtFive, direction: 'in'}; - const createdTimeEntry = await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + let date = new Date(); + date.setDate(date.getDate() - 21); + date = weekDay(date, monday); + let error; - expect(createdTimeEntry.id).toBeDefined(); + const tx = await models.WorkerTimeControl.beginTransaction({}); + const options = {transaction: tx}; - ctx.args = {direction: 'out'}; - const updatedTimeEntry = await models.WorkerTimeControl.updateTimeEntry(ctx, createdTimeEntry.id, options); + date.setHours(8, 0, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + date.setHours(9, 0, 0); + ctx.args = {timed: date, direction: 'out'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); - expect(updatedTimeEntry.direction).toEqual('out'); - await tx.rollback(); - } catch (e) { - await tx.rollback(); - throw e; - } + try { + date.setHours(10, 0, 0); + ctx.args = {timed: date, direction: 'out'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + error = e; + } + + expect(error.message).toBe(`Dirección incorrecta`); + }); + }); + + describe('12h rest', () => { + it('should throw an error when the 12h rest is not fulfilled yet', async() => { + activeCtx.accessToken.userId = salesBossId; + const workerId = hankPymId; + + let date = new Date(); + date.setDate(date.getDate() - 21); + date = weekDay(date, monday); + let error; + + const tx = await models.WorkerTimeControl.beginTransaction({}); + const options = {transaction: tx}; + + date.setHours(8, 0, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + date.setHours(16, 0, 0); + ctx.args = {timed: date, direction: 'out'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + try { + date = weekDay(date, tuesday); + date.setHours(4, 0, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + error = e; + } + + expect(error.message).toBe(`Descanso diario 12h.`); + }); + + it('should not fail as the 12h rest is fulfilled', async() => { + activeCtx.accessToken.userId = salesBossId; + const workerId = hankPymId; + + let date = new Date(); + date.setDate(date.getDate() - 21); + date = weekDay(date, monday); + let error; + + const tx = await models.WorkerTimeControl.beginTransaction({}); + const options = {transaction: tx}; + + date.setHours(8, 0, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + date.setHours(16, 0, 0); + ctx.args = {timed: date, direction: 'out'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + try { + date = weekDay(date, tuesday); + date.setHours(4, 1, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + error = e; + } + + expect(error).not.toBeDefined; + }); + }); + + describe('for 3500kg drivers with enforced 9h rest', () => { + it('should throw an error when the 9h enforced rest is not fulfilled', async() => { + activeCtx.accessToken.userId = salesBossId; + const workerId = jessicaJonesId; + + let date = new Date(); + date.setDate(date.getDate() - 21); + date = weekDay(date, monday); + let error; + + const tx = await models.WorkerTimeControl.beginTransaction({}); + const options = {transaction: tx}; + + date.setHours(8, 0, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + date.setHours(16, 0, 0); + ctx.args = {timed: date, direction: 'out'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + try { + date = weekDay(date, tuesday); + date.setHours(1, 0, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + error = e; + } + + expect(error.message).toBe(`Descanso diario 9h.`); + }); + + it('should not fail when the 9h enforced rest is fulfilled', async() => { + activeCtx.accessToken.userId = salesBossId; + const workerId = jessicaJonesId; + + let date = new Date(); + date.setDate(date.getDate() - 21); + date = weekDay(date, monday); + let error; + + const tx = await models.WorkerTimeControl.beginTransaction({}); + const options = {transaction: tx}; + + date.setHours(8, 0, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + date.setHours(16, 0, 0); + ctx.args = {timed: date, direction: 'out'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + try { + date = weekDay(date, tuesday); + date.setHours(1, 1, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + error = e; + } + + expect(error).not.toBeDefined; + }); + }); + + describe('for 36h weekly rest', () => { + it('should throw an error when the 36h weekly rest is not fulfilled', async() => { + activeCtx.accessToken.userId = salesBossId; + const workerId = hankPymId; + + let date = new Date(); + date.setMonth(date.getMonth() - 2); + date.setDate(1); + let error; + + const tx = await models.WorkerTimeControl.beginTransaction({}); + const options = {transaction: tx}; + + await populateWeek(date, monday, sunday, ctx, workerId, options); + date = nextWeek(date); + await populateWeek(date, monday, thursday, ctx, workerId, options); + date = weekDay(date, friday); + date.setHours(7, 59, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + try { + date.setHours(8, 1, 0); + ctx.args = {timed: date, direction: 'out'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + error = e; + } + + expect(error.message).toBe(`Descanso semanal 36h. / 72h.`); + }); + + it('should throw an error when the 36h weekly rest is not fulfilled again', async() => { + activeCtx.accessToken.userId = salesBossId; + const workerId = hankPymId; + + let date = new Date(); + date.setMonth(date.getMonth() - 2); + date.setDate(1); + let error; + + const tx = await models.WorkerTimeControl.beginTransaction({}); + const options = {transaction: tx}; + + await populateWeek(date, monday, sunday, ctx, workerId, options); + date = nextWeek(date); + await populateWeek(date, monday, thursday, ctx, workerId, options); + + try { + date = weekDay(date, saturday); + date.setHours(3, 59, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + error = e; + } + + expect(error.message).toBe(`Descanso semanal 36h. / 72h.`); + }); + }); + + describe('for 72h weekly rest', () => { + it('should throw when the 72h weekly rest is not fulfilled yet', async() => { + activeCtx.accessToken.userId = salesBossId; + const workerId = hankPymId; + + let date = new Date(); + date.setMonth(date.getMonth() - 2); + date.setDate(1); + let error; + + const tx = await models.WorkerTimeControl.beginTransaction({}); + const options = {transaction: tx}; + + await populateWeek(date, monday, sunday, ctx, workerId, options); + date = nextWeek(date); + await populateWeek(date, monday, thursday, ctx, workerId, options); + date = nextWeek(date); + await populateWeek(date, monday, friday, ctx, workerId, options); + date = nextWeek(date); + await populateWeek(date, monday, saturday, ctx, workerId, options); + date = nextWeek(date); + await populateWeek(date, monday, saturday, ctx, workerId, options); + date = lastWeek(date); + + try { + date = weekDay(date, sunday); + date.setHours(8, 0, 0); + ctx.args = {timed: date, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + + await tx.rollback(); + } catch (e) { + await tx.rollback(); + error = e; + } + + expect(error.message).toBe(`Descanso semanal 36h. / 72h.`); + }); + }); }); }); + +function weekDay(date, dayToSet) { + const currentDay = date.getDay(); + const distance = dayToSet - currentDay; + + date.setDate(date.getDate() + distance); + return date; +} + +function nextWeek(date) { + const sunday = 7; + const currentDay = date.getDay(); + let newDate = date; + if (currentDay != 0) + newDate = weekDay(date, sunday); + + newDate.setDate(newDate.getDate() + 1); + return newDate; +} + +function lastWeek(date) { + const monday = 1; + newDate = weekDay(date, monday); + + newDate.setDate(newDate.getDate() - 1); + return newDate; +} + +async function populateWeek(date, dayStart, dayEnd, ctx, workerId, options) { + const dateStart = new Date(weekDay(date, dayStart)); + const dateEnd = new Date(dateStart); + dateEnd.setDate(dateStart.getDate() + dayEnd); + + for (let i = dayStart; i <= dayEnd; i++) { + dateStart.setHours(8, 0, 0); + ctx.args = {timed: dateStart, direction: 'in'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + dateStart.setHours(16, 0, 0); + ctx.args = {timed: dateStart, direction: 'out'}; + await models.WorkerTimeControl.addTimeEntry(ctx, workerId, options); + dateStart.setDate(dateStart.getDate() + 1); + } +} diff --git a/modules/worker/back/methods/worker-time-control/updateWorkerTimeControlMail.js b/modules/worker/back/methods/worker-time-control/updateWorkerTimeControlMail.js new file mode 100644 index 000000000..a8dc14bb1 --- /dev/null +++ b/modules/worker/back/methods/worker-time-control/updateWorkerTimeControlMail.js @@ -0,0 +1,87 @@ +const UserError = require('vn-loopback/util/user-error'); +module.exports = Self => { + Self.remoteMethodCtx('updateWorkerTimeControlMail', { + description: 'Updates the state of WorkerTimeControlMail', + accessType: 'WRITE', + accepts: [{ + arg: 'workerId', + type: 'number', + required: true + }, + { + arg: 'year', + type: 'number', + required: true + }, + { + arg: 'week', + type: 'number', + required: true + }, + { + arg: 'state', + type: 'string', + required: true + }, + { + arg: 'reason', + type: 'string' + }], + returns: { + type: 'boolean', + root: true + }, + http: { + path: `/updateWorkerTimeControlMail`, + verb: 'POST' + } + }); + + Self.updateWorkerTimeControlMail = async(ctx, options) => { + const models = Self.app.models; + const args = ctx.args; + const userId = ctx.req.accessToken.userId; + + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + const workerTimeControlMail = await models.WorkerTimeControlMail.findOne({ + where: { + workerFk: args.workerId, + year: args.year, + week: args.week + } + }, myOptions); + + if (!workerTimeControlMail) throw new UserError(`There aren't records for this week`); + + const oldState = workerTimeControlMail.state; + const oldReason = workerTimeControlMail.reason; + + if (oldState == args.state) throw new UserError('Already has this status'); + + await workerTimeControlMail.updateAttributes({ + state: args.state, + reason: args.reason || null + }, myOptions); + + const logRecord = { + originFk: args.workerId, + userFk: userId, + action: 'update', + changedModel: 'WorkerTimeControlMail', + oldInstance: { + state: oldState, + reason: oldReason + }, + newInstance: { + state: args.state, + reason: args.reason + } + }; + + return models.WorkerLog.create(logRecord, myOptions); + }; +}; diff --git a/modules/worker/back/methods/worker/createAbsence.js b/modules/worker/back/methods/worker/createAbsence.js index 44bda5627..1467d6d6b 100644 --- a/modules/worker/back/methods/worker/createAbsence.js +++ b/modules/worker/back/methods/worker/createAbsence.js @@ -65,9 +65,9 @@ module.exports = Self => { if (args.dated < labour.started || (labour.ended != null && args.dated > labour.ended)) throw new UserError(`The contract was not active during the selected date`); - query = `SELECT * - FROM vn.workerTimeControl - WHERE userFk = ? AND timed BETWEEN DATE(?) AND CONCAT(DATE(?), ' 23:59:59') + query = `SELECT * + FROM vn.workerTimeControl + WHERE userFk = ? AND timed BETWEEN DATE(?) AND CONCAT(DATE(?), ' 23:59:59') LIMIT 1;`; const [hasHoursRecorded] = await Self.rawSql(query, [id, args.dated, args.dated]); @@ -80,16 +80,17 @@ module.exports = Self => { if (hasHoursRecorded && isNotHalfAbsence) throw new UserError(`The worker has hours recorded that day`); + const date = new Date(); + const now = new Date(); + date.setHours(0, 0, 0, 0); const [result] = await Self.rawSql( `SELECT COUNT(*) halfHolidayCounter - FROM vn.calendar c - JOIN postgresql.business b ON b.business_id = c.businessFk - JOIN postgresql.profile p ON p.profile_id = b.client_id - JOIN vn.person pe ON pe.id = p.person_id - WHERE c.dayOffTypeFk = 6 - AND pe.workerFk = ? - AND c.dated BETWEEN util.firstDayOfYear(CURDATE()) - AND LAST_DAY(DATE_ADD(NOW(), INTERVAL 12-MONTH(NOW()) MONTH))`, [id]); + FROM vn.calendar c + JOIN vn.business b ON b.id = c.businessFk + WHERE c.dayOffTypeFk = 6 + AND b.workerFk = ? + AND c.dated BETWEEN util.firstDayOfYear(?) + AND LAST_DAY(DATE_ADD(?, INTERVAL 12 - MONTH(?) MONTH))`, [id, date, now, now]); const hasHalfHoliday = result.halfHolidayCounter > 0; const isHalfHoliday = absenceType.code === 'halfHoliday'; @@ -135,7 +136,8 @@ module.exports = Self => { function formatDate(date) { let day = date.getDate(); if (day < 10) day = `0${day}`; - let month = date.getMonth(); + + let month = date.getMonth() + 1; if (month < 10) month = `0${month}`; let year = date.getFullYear(); diff --git a/modules/worker/back/methods/worker/deleteAbsence.js b/modules/worker/back/methods/worker/deleteAbsence.js index 72e9243d9..45dc04b2d 100644 --- a/modules/worker/back/methods/worker/deleteAbsence.js +++ b/modules/worker/back/methods/worker/deleteAbsence.js @@ -87,7 +87,7 @@ module.exports = Self => { function formatDate(date) { let day = date.getDate(); if (day < 10) day = `0${day}`; - let month = date.getMonth(); + let month = date.getMonth() + 1; if (month < 10) month = `0${month}`; let year = date.getFullYear(); diff --git a/modules/worker/back/methods/worker/holidays.js b/modules/worker/back/methods/worker/holidays.js index bcf4d7f51..7f093a330 100644 --- a/modules/worker/back/methods/worker/holidays.js +++ b/modules/worker/back/methods/worker/holidays.js @@ -1,4 +1,5 @@ const UserError = require('vn-loopback/util/user-error'); +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; module.exports = Self => { Self.remoteMethodCtx('holidays', { @@ -33,7 +34,8 @@ module.exports = Self => { Self.holidays = async(ctx, id, options) => { const models = Self.app.models; const args = ctx.args; - + const conn = Self.dataSource.connector; + const stmts = []; const myOptions = {}; if (typeof options == 'object') @@ -55,128 +57,32 @@ module.exports = Self => { ended.setDate(0); ended.setHours(23, 59, 59, 59); - const filter = { - include: [{ - relation: 'holidays', - scope: { - where: {year: args.year} - } - }, - { - relation: 'absences', - scope: { - include: { - relation: 'absenceType', - }, - where: { - dated: {between: [started, ended]} - } - } - }, - { - relation: 'workCenter', - scope: { - include: { - relation: 'holidays', - scope: { - include: [{ - relation: 'detail' - }, - { - relation: 'type' - }], - where: { - dated: {between: [started, ended]} - } - } - } - } - }], - where: { - and: [ - {workerFk: id}, - { - or: [ - {started: {between: [started, ended]}}, - {ended: {between: [started, ended]}}, - {and: [{started: {lt: started}}, {ended: {gt: ended}}]}, - {and: [{started: {lt: started}}, {ended: null}]} - ] - } - ], + const filter = {where: {businessFk: args.businessFk}}; + const contract = await models.WorkerLabour.findOne(filter, myOptions); + const payedHolidays = contract.payedHolidays; - } - }; - if (args.businessFk) - filter.where.and.push({businessFk: args.businessFk}); + let queryIndex; + const year = started.getFullYear(); - const contracts = await models.WorkerLabour.find(filter, myOptions); - - let [firstContract] = contracts; - let payedHolidays; - - if (firstContract.payedHolidays) - payedHolidays = firstContract.payedHolidays; - else payedHolidays = 0; - - let totalHolidays = 0; - let holidaysEnjoyed = 0; - - for (let contract of contracts) { - const contractStarted = contract.started; - contractStarted.setHours(0, 0, 0, 0); - const contractEnded = contract.ended; - if (contractEnded) - contractEnded.setHours(23, 59, 59, 59); - - let startedTime; - if (contractStarted < started) - startedTime = started.getTime(); - else startedTime = contractStarted.getTime(); - - let endedTime; - if (!contractEnded || (contractEnded && contractEnded > ended)) - endedTime = ended.getTime(); - else endedTime = contractEnded.getTime(); - - const dayTimestamp = 1000 * 60 * 60 * 24; - - // Get number of worked days between dates - let workedDays = Math.floor((endedTime - startedTime) / dayTimestamp); - workedDays += 1; // 1 day inclusion - - // Calculates absences - let entitlementRate = 0; - for (let absence of contract.absences()) { - const absenceType = absence.absenceType(); - const isHoliday = absenceType.code === 'holiday'; - const isHalfHoliday = absenceType.code === 'halfHoliday'; - - if (isHoliday) holidaysEnjoyed += 1; - if (isHalfHoliday) holidaysEnjoyed += 0.5; - - entitlementRate += absenceType.holidayEntitlementRate; - } - - workedDays -= entitlementRate; - - // Max holidays for the selected year - const maxHolidays = contract.holidays() && contract.holidays().days; - - if (workedDays < daysInYear()) - totalHolidays += Math.round(2 * maxHolidays * (workedDays) / daysInYear()) / 2; - else totalHolidays = maxHolidays; + if (args.businessFk) { + stmts.push(new ParameterizedSQL('CALL vn.workerCalendar_calculateBusiness(?,?)', [year, args.businessFk])); + queryIndex = stmts.push('SELECT * FROM tmp.workerCalendarCalculateBusiness') - 1; + stmts.push('DROP TEMPORARY TABLE tmp.workerCalendarCalculateBusiness'); + } else { + stmts.push(new ParameterizedSQL('CALL vn.workerCalendar_calculateYear(?,?)', [year, id])); + queryIndex = stmts.push('SELECT * FROM tmp.workerCalendarCalculateYear') - 1; + stmts.push('DROP TEMPORARY TABLE tmp.workerCalendarCalculateYear'); } - function daysInYear() { - const year = started.getFullYear(); + const sql = ParameterizedSQL.join(stmts, ';'); + const result = await conn.executeStmt(sql, myOptions); + const [holidays] = result[queryIndex]; - return isLeapYear(year) ? 366 : 365; - } - return {totalHolidays, holidaysEnjoyed, payedHolidays}; + const totalHolidays = holidays.days; + const holidaysEnjoyed = holidays.daysEnjoyed; + const totalHours = holidays.hours; + const hoursEnjoyed = holidays.hoursEnjoyed; + + return {totalHolidays, holidaysEnjoyed, totalHours, hoursEnjoyed, payedHolidays}; }; - - function isLeapYear(year) { - return year % 400 === 0 || (year % 100 !== 0 && year % 4 === 0); - } }; diff --git a/modules/worker/back/methods/worker/specs/getWorkedHours.spec.js b/modules/worker/back/methods/worker/specs/getWorkedHours.spec.js index 3132a9003..054a829e5 100644 --- a/modules/worker/back/methods/worker/specs/getWorkedHours.spec.js +++ b/modules/worker/back/methods/worker/specs/getWorkedHours.spec.js @@ -12,6 +12,6 @@ describe('Worker getWorkedHours()', () => { const [result] = await models.Worker.getWorkedHours(workerID, started, ended); expect(result.expectedHours).toEqual(28800); // 8:00 hours in seconds - expect(result.workedHours).toEqual(29400); // 8:10 hours in seconds + expect(result.workedHours).toEqual(28200); // 7:50 hours in seconds }); }); diff --git a/modules/worker/back/methods/worker/specs/holidays.spec.js b/modules/worker/back/methods/worker/specs/holidays.spec.js index 317bc8f0f..d8310b738 100644 --- a/modules/worker/back/methods/worker/specs/holidays.spec.js +++ b/modules/worker/back/methods/worker/specs/holidays.spec.js @@ -27,4 +27,15 @@ describe('Worker holidays()', () => { expect(result.totalHolidays).toEqual(27.5); expect(result.holidaysEnjoyed).toEqual(5); }); + + it('should now get the payed holidays calendar for a worker', async() => { + const now = new Date(); + const year = now.getFullYear(); + + ctx.args = {businessFk: businessId, year: year}; + + const result = await app.models.Worker.holidays(ctx, workerId); + + expect(result.payedHolidays).toEqual(8); + }); }); diff --git a/modules/worker/back/model-config.json b/modules/worker/back/model-config.json index e35e39721..3f3416504 100644 --- a/modules/worker/back/model-config.json +++ b/modules/worker/back/model-config.json @@ -17,6 +17,15 @@ "Department": { "dataSource": "vn" }, + "EducationLevel": { + "dataSource": "vn" + }, + "Journey": { + "dataSource": "vn" + }, + "Time": { + "dataSource": "vn" + }, "WorkCenter": { "dataSource": "vn" }, @@ -56,11 +65,17 @@ "WorkerLog": { "dataSource": "vn" }, + "WorkerTimeControlConfig": { + "dataSource": "vn" + }, "WorkerTimeControlParams": { "dataSource": "vn" }, "WorkerTimeControlMail": { "dataSource": "vn" + }, + "WorkerDisableExcluded": { + "dataSource": "vn" } } diff --git a/modules/worker/back/models/absence-type.json b/modules/worker/back/models/absence-type.json index f4e9aed18..7fc62f780 100644 --- a/modules/worker/back/models/absence-type.json +++ b/modules/worker/back/models/absence-type.json @@ -9,19 +9,19 @@ "properties": { "id": { "id": true, - "type": "Number" + "type": "number" }, "name": { - "type": "String" + "type": "string" }, "rgb": { - "type": "String" + "type": "string" }, "code": { - "type": "String" + "type": "string" }, "holidayEntitlementRate": { - "type": "Number" + "type": "number" } }, "acls": [ diff --git a/modules/worker/back/models/calendar-holiday.json b/modules/worker/back/models/calendar-holiday.json index 544452553..f7777c2b7 100644 --- a/modules/worker/back/models/calendar-holiday.json +++ b/modules/worker/back/models/calendar-holiday.json @@ -9,14 +9,14 @@ "properties": { "calendarHolidaysNameFk": { "id": true, - "type": "Number" + "type": "number" }, "calendarHolidaysTypeFk": { "id": true, - "type": "Number" + "type": "number" }, "dated": { - "type": "Date" + "type": "date" } }, "relations": { diff --git a/modules/worker/back/models/calendar-holidays-name.json b/modules/worker/back/models/calendar-holidays-name.json index d04ef9c74..d2798f106 100644 --- a/modules/worker/back/models/calendar-holidays-name.json +++ b/modules/worker/back/models/calendar-holidays-name.json @@ -9,10 +9,10 @@ "properties": { "id": { "id": true, - "type": "Number" + "type": "number" }, "name": { - "type": "String" + "type": "string" } }, "acls": [ diff --git a/modules/worker/back/models/calendar-holidays-type.json b/modules/worker/back/models/calendar-holidays-type.json index 178331b87..cf738d353 100644 --- a/modules/worker/back/models/calendar-holidays-type.json +++ b/modules/worker/back/models/calendar-holidays-type.json @@ -9,13 +9,13 @@ "properties": { "id": { "id": true, - "type": "Number" + "type": "number" }, "name": { - "type": "String" + "type": "string" }, "hexColour": { - "type": "String" + "type": "string" } }, "acls": [ diff --git a/modules/worker/back/models/calendar.json b/modules/worker/back/models/calendar.json index 1da7179c4..40d29c519 100644 --- a/modules/worker/back/models/calendar.json +++ b/modules/worker/back/models/calendar.json @@ -13,13 +13,13 @@ "properties": { "id": { "id": true, - "type": "Number" + "type": "number" }, "businessFk": { - "type": "Number" + "type": "number" }, "dated": { - "type": "Date" + "type": "date" } }, "relations": { diff --git a/modules/worker/back/models/department.json b/modules/worker/back/models/department.json index 7d6f7a7be..c3f627e93 100644 --- a/modules/worker/back/models/department.json +++ b/modules/worker/back/models/department.json @@ -34,6 +34,9 @@ }, "notificationEmail": { "type": "string" + }, + "hasToMistake": { + "type": "number" } } } diff --git a/modules/worker/back/models/device.json b/modules/worker/back/models/device.json index 5367faedf..566f7da7d 100644 --- a/modules/worker/back/models/device.json +++ b/modules/worker/back/models/device.json @@ -9,13 +9,13 @@ "properties": { "id": { "id": true, - "type": "Number" + "type": "number" }, "sn": { - "type": "String" + "type": "string" }, "model": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/modules/worker/back/models/education-level.json b/modules/worker/back/models/education-level.json new file mode 100644 index 000000000..4ae2376c4 --- /dev/null +++ b/modules/worker/back/models/education-level.json @@ -0,0 +1,18 @@ +{ + "name": "EducationLevel", + "base": "VnModel", + "options": { + "mysql": { + "table": "educationLevel" + } + }, + "properties": { + "id": { + "id": true, + "type": "number" + }, + "name": { + "type": "string" + } + } +} \ No newline at end of file diff --git a/modules/worker/back/models/journey.json b/modules/worker/back/models/journey.json new file mode 100644 index 000000000..b7d5f2817 --- /dev/null +++ b/modules/worker/back/models/journey.json @@ -0,0 +1,27 @@ +{ + "name": "Journey", + "base": "VnModel", + "options": { + "mysql": { + "table": "postgresql.journey" + } + }, + "properties": { + "journey_id": { + "id": true, + "type": "number" + }, + "day_id": { + "type": "number" + }, + "start": { + "type": "date" + }, + "end": { + "type": "date" + }, + "business_id": { + "type": "number" + } + } +} diff --git a/modules/worker/back/models/time.json b/modules/worker/back/models/time.json new file mode 100644 index 000000000..df9257540 --- /dev/null +++ b/modules/worker/back/models/time.json @@ -0,0 +1,21 @@ +{ + "name": "Time", + "base": "VnModel", + "options": { + "mysql": { + "table": "time" + } + }, + "properties": { + "dated": { + "id": true, + "type": "date" + }, + "year": { + "type": "number" + }, + "week": { + "type": "number" + } + } +} diff --git a/modules/worker/back/models/work-center-holiday.json b/modules/worker/back/models/work-center-holiday.json index eddfd7af1..e5f201d9d 100644 --- a/modules/worker/back/models/work-center-holiday.json +++ b/modules/worker/back/models/work-center-holiday.json @@ -9,13 +9,13 @@ "properties": { "workCenterFk": { "id": true, - "type": "Number" + "type": "number" }, "days": { - "type": "Number" + "type": "number" }, "year": { - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/worker/back/models/work-center.json b/modules/worker/back/models/work-center.json index a0e651bba..2d7bab24e 100644 --- a/modules/worker/back/models/work-center.json +++ b/modules/worker/back/models/work-center.json @@ -9,10 +9,10 @@ "properties": { "id": { "id": true, - "type": "Number" + "type": "number" }, "name": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/modules/worker/back/models/worker-department.json b/modules/worker/back/models/worker-department.json index 0eeca50e7..b169cbf5e 100644 --- a/modules/worker/back/models/worker-department.json +++ b/modules/worker/back/models/worker-department.json @@ -9,10 +9,10 @@ "properties": { "workerFk": { "id": true, - "type": "Number" + "type": "number" }, "departmentFk": { - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/worker/back/models/worker-dms.json b/modules/worker/back/models/worker-dms.json index 80634cfcc..575cfbc24 100644 --- a/modules/worker/back/models/worker-dms.json +++ b/modules/worker/back/models/worker-dms.json @@ -13,25 +13,25 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true }, "dmsFk": { - "type": "Number", + "type": "number", "required": true, "mysql": { "columnName": "document" } }, "workerFk": { - "type": "Number", + "type": "number", "required": true, "mysql": { "columnName": "worker" } }, "isReadableByWorker": { - "type": "Boolean" + "type": "boolean" } }, "relations": { diff --git a/modules/worker/back/models/worker-log.json b/modules/worker/back/models/worker-log.json index f100f3486..d2fa0487d 100644 --- a/modules/worker/back/models/worker-log.json +++ b/modules/worker/back/models/worker-log.json @@ -9,40 +9,40 @@ "properties": { "id": { "id": true, - "type": "Number", + "type": "number", "forceId": false }, "originFk": { - "type": "Number", + "type": "number", "required": true }, "userFk": { - "type": "Number" + "type": "number" }, "action": { - "type": "String", + "type": "string", "required": true }, "changedModel": { - "type": "String" + "type": "string" }, "oldInstance": { - "type": "Object" + "type": "object" }, "newInstance": { - "type": "Object" + "type": "object" }, "creationDate": { - "type": "Date" + "type": "date" }, "changedModelId": { - "type": "String" + "type": "string" }, "changedModelValue": { - "type": "String" + "type": "string" }, "description": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/modules/worker/back/models/worker-mana.json b/modules/worker/back/models/worker-mana.json index b98b2a325..0e50b8f63 100644 --- a/modules/worker/back/models/worker-mana.json +++ b/modules/worker/back/models/worker-mana.json @@ -8,11 +8,11 @@ }, "properties": { "amount": { - "type": "Number" + "type": "number" }, "workerFk": { "id": true, - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/worker/back/models/worker-media.json b/modules/worker/back/models/worker-media.json index 805ff383b..8a28fb422 100644 --- a/modules/worker/back/models/worker-media.json +++ b/modules/worker/back/models/worker-media.json @@ -9,10 +9,10 @@ "properties": { "workerFk": { "id": true, - "type": "Number" + "type": "number" }, "mediaValue": { - "type": "String" + "type": "string" } }, "relations": { diff --git a/modules/worker/back/models/worker-team-collegues.json b/modules/worker/back/models/worker-team-collegues.json index 2e4a0a4f8..18b7d90bd 100644 --- a/modules/worker/back/models/worker-team-collegues.json +++ b/modules/worker/back/models/worker-team-collegues.json @@ -9,11 +9,11 @@ "properties": { "workerFk": { "id": true, - "type": "Number" + "type": "number" }, "collegueFk": { "id": true, - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/worker/back/models/worker-team.json b/modules/worker/back/models/worker-team.json index 4cd4b1244..0b490ba6e 100644 --- a/modules/worker/back/models/worker-team.json +++ b/modules/worker/back/models/worker-team.json @@ -8,12 +8,12 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, "team": { - "type": "Number" + "type": "number" } }, "relations": { diff --git a/modules/worker/back/models/worker-time-control-config.json b/modules/worker/back/models/worker-time-control-config.json new file mode 100644 index 000000000..4c12ce5d7 --- /dev/null +++ b/modules/worker/back/models/worker-time-control-config.json @@ -0,0 +1,18 @@ +{ + "name": "WorkerTimeControlConfig", + "base": "VnModel", + "options": { + "mysql": { + "table": "workerTimeControlConfig" + } + }, + "properties": { + "id": { + "id": true, + "type": "number" + }, + "timeToBreakTime": { + "type": "number" + } + } +} \ No newline at end of file diff --git a/modules/worker/back/models/worker-time-control-mail.js b/modules/worker/back/models/worker-time-control-mail.js deleted file mode 100644 index 36f3851b6..000000000 --- a/modules/worker/back/models/worker-time-control-mail.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = Self => { - require('../methods/worker-time-control-mail/checkInbox')(Self); -}; diff --git a/modules/worker/back/models/worker-time-control-mail.json b/modules/worker/back/models/worker-time-control-mail.json index 7f8522757..78b99881d 100644 --- a/modules/worker/back/models/worker-time-control-mail.json +++ b/modules/worker/back/models/worker-time-control-mail.json @@ -9,26 +9,25 @@ "properties": { "id": { "id": true, - "type": "Number", - "required": true + "type": "number" }, "workerFk": { - "type": "Number" + "type": "number" }, "year": { - "type": "Number" + "type": "number" }, "week": { - "type": "Number" + "type": "number" }, "state": { - "type": "String" + "type": "string" }, "updated": { - "type": "Date" + "type": "date" }, - "emailResponse": { - "type": "String" + "reason": { + "type": "string" } }, "acls": [ diff --git a/modules/worker/back/models/worker-time-control-params.json b/modules/worker/back/models/worker-time-control-params.json index cc904cf40..14cabbfb0 100644 --- a/modules/worker/back/models/worker-time-control-params.json +++ b/modules/worker/back/models/worker-time-control-params.json @@ -9,19 +9,19 @@ }, "properties": { "mailHost": { - "type": "String" + "type": "string" }, "mailUser": { - "type": "String" + "type": "string" }, "mailPass": { - "type": "String" + "type": "string" }, "mailSuccessFolder": { - "type": "String" + "type": "string" }, "mailErrorFolder": { - "type": "String" + "type": "string" } }, "acls": [ diff --git a/modules/worker/back/models/worker-time-control.js b/modules/worker/back/models/worker-time-control.js index 45f4e2194..9f802511a 100644 --- a/modules/worker/back/models/worker-time-control.js +++ b/modules/worker/back/models/worker-time-control.js @@ -5,6 +5,8 @@ module.exports = Self => { require('../methods/worker-time-control/addTimeEntry')(Self); require('../methods/worker-time-control/deleteTimeEntry')(Self); require('../methods/worker-time-control/updateTimeEntry')(Self); + require('../methods/worker-time-control/sendMail')(Self); + require('../methods/worker-time-control/updateWorkerTimeControlMail')(Self); Self.rewriteDbError(function(err) { if (err.code === 'ER_DUP_ENTRY') diff --git a/modules/worker/back/models/worker-time-control.json b/modules/worker/back/models/worker-time-control.json index ab07802ca..bc3e53501 100644 --- a/modules/worker/back/models/worker-time-control.json +++ b/modules/worker/back/models/worker-time-control.json @@ -22,6 +22,9 @@ }, "direction": { "type": "string" + }, + "isSendMail": { + "type": "boolean" } }, "relations": { diff --git a/modules/worker/back/models/worker.json b/modules/worker/back/models/worker.json index cad38ac3b..3d41707ce 100644 --- a/modules/worker/back/models/worker.json +++ b/modules/worker/back/models/worker.json @@ -13,7 +13,7 @@ }, "properties": { "id": { - "type": "Number", + "type": "number", "id": true, "description": "Identifier" }, @@ -26,14 +26,32 @@ "required": true }, "phone": { - "type" : "String" + "type" : "string" }, "userFk": { - "type" : "Number", + "type" : "number", "required": true }, "bossFk": { - "type" : "Number" + "type" : "number" + }, + "maritalStatus": { + "type" : "string" + }, + "originCountryFk": { + "type" : "number" + }, + "educationLevelFk": { + "type" : "number" + }, + "SSN": { + "type" : "string" + }, + "labelerFk": { + "type" : "number" + }, + "mobileExtension": { + "type" : "number" } }, "relations": { @@ -66,6 +84,11 @@ "type": "hasMany", "model": "WorkerTeamCollegues", "foreignKey": "workerFk" + }, + "sector": { + "type": "belongsTo", + "model": "Sector", + "foreignKey": "sectorFk" } } } \ No newline at end of file diff --git a/modules/worker/back/models/workerDisableExcluded.json b/modules/worker/back/models/workerDisableExcluded.json new file mode 100644 index 000000000..48083748d --- /dev/null +++ b/modules/worker/back/models/workerDisableExcluded.json @@ -0,0 +1,26 @@ +{ + "name": "WorkerDisableExcluded", + "base": "VnModel", + "options": { + "mysql": { + "table": "workerDisableExcluded" + } + }, + "properties": { + "workerFk": { + "id": true, + "type": "number" + }, + "dated": { + "type": "date" + } + }, + "acls": [ + { + "accessType": "READ", + "principalType": "ROLE", + "principalId": "$everyone", + "permission": "ALLOW" + } + ] +} \ No newline at end of file diff --git a/modules/worker/front/basic-data/index.html b/modules/worker/front/basic-data/index.html index b61a4cf94..5a3acdde5 100644 --- a/modules/worker/front/basic-data/index.html +++ b/modules/worker/front/basic-data/index.html @@ -25,12 +25,19 @@ + + + + + + + + + + + + + + + + diff --git a/modules/worker/front/basic-data/index.js b/modules/worker/front/basic-data/index.js index d2c7f5b70..ea75d7b97 100644 --- a/modules/worker/front/basic-data/index.js +++ b/modules/worker/front/basic-data/index.js @@ -2,6 +2,13 @@ import ngModule from '../module'; import Section from 'salix/components/section'; class Controller extends Section { + constructor($element, $) { + super($element, $); + this.maritalStatus = [ + {code: 'M', name: this.$t('Married')}, + {code: 'S', name: this.$t('Single')} + ]; + } onSubmit() { return this.$.watcher.submit() .then(() => this.card.reload()); diff --git a/modules/worker/front/basic-data/locale/es.yml b/modules/worker/front/basic-data/locale/es.yml new file mode 100644 index 000000000..a83c30d99 --- /dev/null +++ b/modules/worker/front/basic-data/locale/es.yml @@ -0,0 +1,8 @@ +Marital status: Estado civil +Origin country: País origen +Education level: Nivel educación +SSN: NSS +Married: Casado/a +Single: Soltero/a +Business phone: Teléfono de empresa +Mobile extension: Extensión móvil \ No newline at end of file diff --git a/modules/worker/front/calendar/index.html b/modules/worker/front/calendar/index.html index 7ef586b36..cff4d0bc9 100644 --- a/modules/worker/front/calendar/index.html +++ b/modules/worker/front/calendar/index.html @@ -25,20 +25,28 @@
{{'Contract' | translate}} #{{$ctrl.businessId}}
- {{'Used' | translate}} {{$ctrl.contractHolidays.holidaysEnjoyed}} + {{'Used' | translate}} {{$ctrl.contractHolidays.holidaysEnjoyed || 0}} {{'of' | translate}} {{$ctrl.contractHolidays.totalHolidays || 0}} {{'days' | translate}}
- {{'Paid holidays' | translate}} {{$ctrl.contractHolidays.payedHolidays}} {{'days' | translate}} + {{'Spent' | translate}} {{$ctrl.contractHolidays.hoursEnjoyed || 0}} + {{'of' | translate}} {{$ctrl.contractHolidays.totalHours || 0}} {{'hours' | translate}} +
+
+ {{'Paid holidays' | translate}} {{$ctrl.contractHolidays.payedHolidays || 0}} {{'days' | translate}}
{{'Year' | translate}} {{$ctrl.year}}
- {{'Used' | translate}} {{$ctrl.yearHolidays.holidaysEnjoyed}} + {{'Used' | translate}} {{$ctrl.yearHolidays.holidaysEnjoyed || 0}} {{'of' | translate}} {{$ctrl.yearHolidays.totalHolidays || 0}} {{'days' | translate}}
+
+ {{'Spent' | translate}} {{$ctrl.yearHolidays.hoursEnjoyed || 0}} + {{'of' | translate}} {{$ctrl.yearHolidays.totalHours || 0}} {{'hours' | translate}} +
diff --git a/modules/worker/front/calendar/index.js b/modules/worker/front/calendar/index.js index 6e0cf0d9a..95e1fc134 100644 --- a/modules/worker/front/calendar/index.js +++ b/modules/worker/front/calendar/index.js @@ -198,7 +198,7 @@ class Controller extends Section { const event = this.events[stamp]; const calendar = $event.target.closest('vn-calendar').$ctrl; - if (event) { + if (event && event.absenceId) { if (event.type == this.absenceType.code) this.delete(calendar, day, event); else @@ -230,6 +230,7 @@ class Controller extends Section { .then(calendar.repaint()) .then(() => this.getContractHolidays()) .then(() => this.getYearHolidays()) + .then(() => this.repaint()) ); }); } @@ -266,6 +267,7 @@ class Controller extends Section { .then(calendar.repaint()) .then(() => this.getContractHolidays()) .then(() => this.getYearHolidays()) + .then(() => this.repaint()) ); }); } @@ -282,6 +284,7 @@ class Controller extends Section { refresh() { const params = { + workerFk: this.$params.id, businessFk: this.businessId, year: this.year }; diff --git a/modules/worker/front/calendar/index.spec.js b/modules/worker/front/calendar/index.spec.js index e8f9b3130..1da4066d9 100644 --- a/modules/worker/front/calendar/index.spec.js +++ b/modules/worker/front/calendar/index.spec.js @@ -191,7 +191,8 @@ describe('Worker', () => { const selectedDay = new Date(); const expectedEvent = { dated: selectedDay, - type: 'holiday' + type: 'holiday', + absenceId: 1 }; const $event = { target: { @@ -214,7 +215,8 @@ describe('Worker', () => { const selectedDay = new Date(); const expectedEvent = { dated: selectedDay, - type: 'leaveOfAbsence' + type: 'leaveOfAbsence', + absenceId: 1 }; const $event = { target: { @@ -328,7 +330,7 @@ describe('Worker', () => { jest.spyOn(controller, 'onData').mockReturnThis(); const expecteResponse = [{id: 1}]; - const expectedParams = {year: year}; + const expectedParams = {workerFk: controller.worker.id, year: year}; const serializedParams = $httpParamSerializer(expectedParams); $httpBackend.expect('GET', `Calendars/absences?${serializedParams}`).respond(200, expecteResponse); controller.refresh(); diff --git a/modules/worker/front/calendar/locale/es.yml b/modules/worker/front/calendar/locale/es.yml index 8e9f9cdf8..bd75458aa 100644 --- a/modules/worker/front/calendar/locale/es.yml +++ b/modules/worker/front/calendar/locale/es.yml @@ -2,9 +2,11 @@ Calendar: Calendario Contract: Contrato Festive: Festivo Used: Utilizados +Spent: Utilizadas Year: Año of: de days: días +hours: horas Choose an absence type from the right menu: Elige un tipo de ausencia desde el menú de la derecha To start adding absences, click an absence type from the right menu and then on the day you want to add an absence: Para empezar a añadir ausencias, haz clic en un tipo de ausencia desde el menu de la derecha y después en el día que quieres añadir la ausencia You can just add absences within the current year: Solo puedes añadir ausencias dentro del año actual diff --git a/modules/worker/front/descriptor/index.html b/modules/worker/front/descriptor/index.html index 036b70eab..58ac3d9e6 100644 --- a/modules/worker/front/descriptor/index.html +++ b/modules/worker/front/descriptor/index.html @@ -1,6 +1,7 @@ + description="$ctrl.worker.firstName +' '+ $ctrl.worker.lastName" + summary="$ctrl.$.summary">
+ + + Click to exclude the user from getting disabled + + + Click to allow the user to be disabled + +
+
+ + +
+
+
+

{{$t('sections.help.title')}}

+

{{$t('sections.help.description')}}

+

+
+
+
+
+
+ {{$t('salesPersonName')}}: {{client.salesPersonName}} +
+
+ {{$t('salesPersonPhone')}}: {{client.salesPersonPhone}} +
+
+ {{$t('salesPersonEmail')}}: + {{client.salesPersonEmail}} +
+
+
+
+
+ + +
+
+ \ No newline at end of file diff --git a/print/templates/email/printer-setup/printer-setup.js b/print/templates/email/printer-setup/printer-setup.js index 95dff8ebb..8e892737a 100755 --- a/print/templates/email/printer-setup/printer-setup.js +++ b/print/templates/email/printer-setup/printer-setup.js @@ -1,30 +1,28 @@ -const Component = require(`${appPath}/core/component`); -const emailHeader = new Component('email-header'); -const emailFooter = new Component('email-footer'); +const Component = require(`vn-print/core/component`); +const emailBody = new Component('email-body'); const attachment = new Component('attachment'); const attachments = require('./attachments.json'); module.exports = { name: 'printer-setup', async serverPrefetch() { - this.client = await this.fetchClient(this.recipientId); + this.client = await this.fetchClient(this.id); }, data() { return {attachments}; }, methods: { - fetchClient(clientId) { - return this.findOneFromDef('client', [clientId]); + fetchClient(id) { + return this.findOneFromDef('client', [id]); } }, components: { - 'email-header': emailHeader.build(), - 'email-footer': emailFooter.build(), + 'email-body': emailBody.build(), 'attachment': attachment.build() }, props: { - recipientId: { - type: [Number, String], + id: { + type: Number, required: true } } diff --git a/print/templates/email/sepa-core/assets/css/import.js b/print/templates/email/sepa-core/assets/css/import.js index b44d6bd37..1582b82c5 100644 --- a/print/templates/email/sepa-core/assets/css/import.js +++ b/print/templates/email/sepa-core/assets/css/import.js @@ -1,8 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/spacing.css`, - `${appPath}/common/css/misc.css`, - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/email.css`]) + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/email.css`]) .mergeStyles(); + diff --git a/print/templates/email/sepa-core/sepa-core.html b/print/templates/email/sepa-core/sepa-core.html index 88acdbf86..d584605dd 100644 --- a/print/templates/email/sepa-core/sepa-core.html +++ b/print/templates/email/sepa-core/sepa-core.html @@ -1,57 +1,21 @@ - - - - - - {{ $t('subject') }} - - - - - - - - -
- -
-
-
- -
-
- -
-
- -
-
-

{{ $t('title') }}

-

{{$t('description.dear')}},

-
-

{{$t('description.conclusion')}}

-
-
- -
-
- - -
-
- -
-
- -
-
- -
-
-
-
- - \ No newline at end of file + +
+
+

{{ $t('title') }}

+

{{$t('description.dear')}},

+
+

{{$t('description.conclusion')}}

+
+
+
+
+ + +
+
+
diff --git a/print/templates/email/sepa-core/sepa-core.js b/print/templates/email/sepa-core/sepa-core.js index 743c6719c..15a61e1b1 100755 --- a/print/templates/email/sepa-core/sepa-core.js +++ b/print/templates/email/sepa-core/sepa-core.js @@ -1,7 +1,5 @@ -const Component = require(`${appPath}/core/component`); -const emailHeader = new Component('email-header'); -const emailFooter = new Component('email-footer'); -const attachment = new Component('attachment'); +const Component = require(`vn-print/core/component`); +const emailBody = new Component('email-body'); const attachments = require('./attachments.json'); module.exports = { @@ -10,17 +8,15 @@ module.exports = { return {attachments}; }, components: { - 'email-header': emailHeader.build(), - 'email-footer': emailFooter.build(), - 'attachment': attachment.build() + 'email-body': emailBody.build() }, props: { - recipientId: { - type: [Number, String], + id: { + type: Number, required: true }, companyId: { - type: [Number, String], + type: Number, required: true } } diff --git a/print/templates/email/supplier-campaign-metrics/assets/css/import.js b/print/templates/email/supplier-campaign-metrics/assets/css/import.js index b44d6bd37..4b4bb7086 100644 --- a/print/templates/email/supplier-campaign-metrics/assets/css/import.js +++ b/print/templates/email/supplier-campaign-metrics/assets/css/import.js @@ -1,8 +1,11 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/spacing.css`, - `${appPath}/common/css/misc.css`, - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/email.css`]) + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/email.css`]) .mergeStyles(); diff --git a/print/templates/email/supplier-campaign-metrics/supplier-campaign-metrics.html b/print/templates/email/supplier-campaign-metrics/supplier-campaign-metrics.html index ff8c661ee..79d856632 100644 --- a/print/templates/email/supplier-campaign-metrics/supplier-campaign-metrics.html +++ b/print/templates/email/supplier-campaign-metrics/supplier-campaign-metrics.html @@ -1,46 +1,9 @@ - - - - - - {{ $t('subject') }} - - - - - - - - -
- -
-
-
- -
-
- -
-
- -
-
-

{{ $t('title') }}

-

{{$t('dear')}},

-

-
-
- -
-
- -
-
- -
-
-
-
- - \ No newline at end of file + +
+
+

{{ $t('title') }}

+

{{$t('dear')}},

+

+
+
+
diff --git a/print/templates/email/supplier-campaign-metrics/supplier-campaign-metrics.js b/print/templates/email/supplier-campaign-metrics/supplier-campaign-metrics.js index 3cf290e4d..3a673d2e4 100755 --- a/print/templates/email/supplier-campaign-metrics/supplier-campaign-metrics.js +++ b/print/templates/email/supplier-campaign-metrics/supplier-campaign-metrics.js @@ -1,6 +1,5 @@ -const Component = require(`${appPath}/core/component`); -const emailHeader = new Component('email-header'); -const emailFooter = new Component('email-footer'); +const Component = require(`vn-print/core/component`); +const emailBody = new Component('email-body'); module.exports = { name: 'supplier-campaign-metrics', @@ -16,12 +15,11 @@ module.exports = { } }, components: { - 'email-header': emailHeader.build(), - 'email-footer': emailFooter.build() + 'email-body': emailBody.build() }, props: { - recipientId: { - type: [Number, String], + id: { + type: Number, required: true }, from: { diff --git a/print/templates/reports/balance-compensation/balance-compensation.html b/print/templates/reports/balance-compensation/balance-compensation.html new file mode 100644 index 000000000..59af1bd11 --- /dev/null +++ b/print/templates/reports/balance-compensation/balance-compensation.html @@ -0,0 +1,31 @@ + +
+
+
+
+

{{$t('Place')}} {{currentDate()}}

+

{{$t('Compensation') | uppercase}}

+

{{$t('In one hand')}}:

+

+ {{company.name}} {{$t('CIF')}} {{company.nif}} {{$t('Home')}} {{company.street}}, + {{company.city}}. +

+

{{$t('In other hand')}}:

+

+ {{$t('Sr')}} {{client.name}} {{$t('NIF')}} {{client.fi}} {{$t('Home')}} {{client.street}}, + {{client.city}}. +

+

{{$t('Agree') | uppercase}}

+

+ {{$t('Date')}} {{client.payed | date('%d-%m-%Y')}} {{$t('Compensate')}} {{client.amountPaid}} € + {{$t('From client')}} {{client.name}} {{$t('Toclient')}} {{company.name}}. +

+

+ {{$t('Reception')}} administracion@verdnatura.es +

+
{{$t('Greetings')}}
+
+
+
+
+
diff --git a/print/templates/reports/balance-compensation/balance-compensation.js b/print/templates/reports/balance-compensation/balance-compensation.js new file mode 100644 index 000000000..98a9cf577 --- /dev/null +++ b/print/templates/reports/balance-compensation/balance-compensation.js @@ -0,0 +1,34 @@ +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); + +module.exports = { + name: 'balance-compensation', + async serverPrefetch() { + this.client = await this.fetchClient(this.id); + this.company = await this.fetchCompany(this.id); + }, + methods: { + fetchClient(id) { + return this.findOneFromDef('client', [id]); + }, + fetchCompany(id) { + return this.findOneFromDef('company', [id]); + }, + + currentDate() { + const current = new Date(); + const date = `${current.getDate()}/${current.getMonth() + 1}/${current.getFullYear()}`; + return date; + } + }, + components: { + 'report-body': reportBody.build() + }, + props: { + id: { + type: Number, + required: true, + description: 'The receipt id' + } + } +}; diff --git a/print/templates/reports/balance-compensation/css/import.js b/print/templates/reports/balance-compensation/css/import.js new file mode 100644 index 000000000..37a98dfdd --- /dev/null +++ b/print/templates/reports/balance-compensation/css/import.js @@ -0,0 +1,12 @@ +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); + +module.exports = new Stylesheet([ + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, + `${__dirname}/style.css`]) + .mergeStyles(); diff --git a/print/templates/reports/balance-compensation/locale/es.yml b/print/templates/reports/balance-compensation/locale/es.yml new file mode 100644 index 000000000..546e55f06 --- /dev/null +++ b/print/templates/reports/balance-compensation/locale/es.yml @@ -0,0 +1,16 @@ +reportName: compensacion-saldo +Place: Algemesí, a +Compensation: Compensación de saldos deudores y acreedores +In one hand: De una parte +CIF: con CIF +NIF: con NIF +Home: y domicilio sito en +In other hand: De la otra +Sr: Don/Doña +Agree: Acuerdan +Date: En fecha de +Compensate: se ha compensado el saldo de +From client: del cliente/proveedor +To client: con el cliente/proveedor +Reception: Por favor, rogamos confirmen la recepción de esta compensación al email +Greetings: Saludos cordiales, \ No newline at end of file diff --git a/print/templates/reports/balance-compensation/sql/client.sql b/print/templates/reports/balance-compensation/sql/client.sql new file mode 100644 index 000000000..92e6f6cab --- /dev/null +++ b/print/templates/reports/balance-compensation/sql/client.sql @@ -0,0 +1,12 @@ +SELECT + c.name, + c.socialName, + c.street, + c.fi, + c.city, + r.amountPaid, + r.payed + FROM client c + JOIN receipt r ON r.clientFk = c.id + JOIN supplier s ON c.fi = s.nif + WHERE r.id = ? \ No newline at end of file diff --git a/print/templates/reports/balance-compensation/sql/company.sql b/print/templates/reports/balance-compensation/sql/company.sql new file mode 100644 index 000000000..e61228a10 --- /dev/null +++ b/print/templates/reports/balance-compensation/sql/company.sql @@ -0,0 +1,8 @@ +SELECT + s.name, + s.nif, + s.street, + s.city + FROM supplier s + JOIN receipt r ON r.companyFk = s.id + WHERE r.id = ?; \ No newline at end of file diff --git a/print/templates/reports/campaign-metrics/assets/css/import.js b/print/templates/reports/campaign-metrics/assets/css/import.js index fd8796c2b..37a98dfdd 100644 --- a/print/templates/reports/campaign-metrics/assets/css/import.js +++ b/print/templates/reports/campaign-metrics/assets/css/import.js @@ -1,9 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/spacing.css`, - `${appPath}/common/css/misc.css`, - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/campaign-metrics/campaign-metrics.html b/print/templates/reports/campaign-metrics/campaign-metrics.html index 725c03e4d..e86d4cd3b 100644 --- a/print/templates/reports/campaign-metrics/campaign-metrics.html +++ b/print/templates/reports/campaign-metrics/campaign-metrics.html @@ -1,95 +1,72 @@ - - - - - - - - - -
- - - -
-
-
-
-

{{$t('title')}}

-
- - - - - - - - - - - - - - - -
{{$t('Client')}}{{client.id}}
{{$t('From')}}{{from | date('%d-%m-%Y')}}
{{$t('To')}}{{to | date('%d-%m-%Y')}}
-
-
-
-
-
{{$t('clientData')}}
-
-

{{client.socialName}}

-
- {{client.street}} -
-
- {{client.postcode}}, {{client.city}} ({{client.province}}) -
-
- {{client.country}} -
-
-
-
-
- - - - - - - - - - - - - - - - - - -
{{$t('Code')}}{{$t('Quantity')}}{{$t('Concept')}}
{{sale.itemFk | zerofill('000000')}}{{Math.trunc(sale.subtotal)}}{{sale.concept}}
- - {{sale.tag5}} {{sale.value5}} - - - {{sale.tag6}} {{sale.value6}} - - - {{sale.tag7}} {{sale.value7}} - -
-
+ +
+
+
+
+

{{$t('title')}}

+
+ + + + + + + + + + + + + + + +
{{$t('Client')}}{{client.id}}
{{$t('From')}}{{from | date('%d-%m-%Y')}}
{{$t('To')}}{{to | date('%d-%m-%Y')}}
+
+
+
+
+
{{$t('clientData')}}
+
+

{{client.socialName}}

+
{{client.street}}
+
{{client.postcode}}, {{client.city}} ({{client.province}})
+
{{client.country}}
- - - -
- - \ No newline at end of file +
+ + + + + + + + + + + + + + + + + + + + +
{{$t('Code')}}{{$t('Quantity')}}{{$t('Concept')}}
{{sale.itemFk | zerofill('000000')}}{{Math.trunc(sale.subtotal)}}{{sale.concept}}
+ {{sale.tag5}} {{sale.value5}} + {{sale.tag6}} {{sale.value6}} + {{sale.tag7}} {{sale.value7}} +
+ + + + diff --git a/print/templates/reports/campaign-metrics/campaign-metrics.js b/print/templates/reports/campaign-metrics/campaign-metrics.js index 6669ce067..14a4b6a9b 100755 --- a/print/templates/reports/campaign-metrics/campaign-metrics.js +++ b/print/templates/reports/campaign-metrics/campaign-metrics.js @@ -1,32 +1,33 @@ -const Component = require(`${appPath}/core/component`); -const reportHeader = new Component('report-header'); +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); const reportFooter = new Component('report-footer'); module.exports = { name: 'campaign-metrics', async serverPrefetch() { - this.client = await this.fetchClient(this.recipientId); - this.sales = await this.fetchSales(this.recipientId, this.from, this.to); + this.client = await this.fetchClient(this.id); + this.sales = await this.fetchSales(this.id, this.from, this.to); if (!this.client) throw new Error('Something went wrong'); }, methods: { - fetchClient(clientId) { - return this.findOneFromDef('client', [clientId]); + fetchClient(id) { + return this.findOneFromDef('client', [id]); }, - fetchSales(clientId, from, to) { - return this.rawSqlFromDef('sales', [clientId, from, to]); + fetchSales(id, from, to) { + return this.rawSqlFromDef('sales', [id, from, to]); }, }, components: { - 'report-header': reportHeader.build(), + 'report-body': reportBody.build(), 'report-footer': reportFooter.build() }, props: { - recipientId: { - type: [Number, String], - required: true + id: { + type: Number, + required: true, + description: 'The client id' }, from: { required: true diff --git a/print/templates/reports/claim-pickup-order/assets/css/import.js b/print/templates/reports/claim-pickup-order/assets/css/import.js index fd8796c2b..37a98dfdd 100644 --- a/print/templates/reports/claim-pickup-order/assets/css/import.js +++ b/print/templates/reports/claim-pickup-order/assets/css/import.js @@ -1,9 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/spacing.css`, - `${appPath}/common/css/misc.css`, - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/claim-pickup-order/claim-pickup-order.html b/print/templates/reports/claim-pickup-order/claim-pickup-order.html index 7a843c830..b14f5410c 100644 --- a/print/templates/reports/claim-pickup-order/claim-pickup-order.html +++ b/print/templates/reports/claim-pickup-order/claim-pickup-order.html @@ -1,96 +1,77 @@ - - - - - - - - - -
- - - -
-
-
-
-

{{$t('title')}}

- - - - - - - - - - - - - - - - - - - -
{{$t('claimId')}}{{claimId}}
{{$t('clientId')}}{{client.id}}
{{$t('phone')}}{{client.phone}}
{{$t('date')}}{{dated}}
-
-
-
-
{{$t('clientData')}}
-
-

{{client.nickname}}

-
- {{client.street}} -
-
- {{client.postalCode}}, {{client.city}} ({{client.province}}) -
-
- {{client.country}} -
-
-
-
-
- - - - - - - - - - - - - - - - - - -
{{$t('reference')}}{{$t('quantity')}}{{$t('claims')}}{{$t('concept')}}
{{sale.id}}{{sale.quantity}}{{sale.claimQuantity}}{{sale.concept}}
- -
-
{{$t('clientSignature')}}
-
-

{{client.name}}

-
-
- -

-
+ +
+
+
+
+

{{$t('title')}}

+ + + + + + + + + + + + + + + + + + + +
{{$t('claimId')}}{{id}}
{{$t('clientId')}}{{client.id}}
{{$t('phone')}}{{client.phone}}
{{$t('date')}}{{dated}}
+
+
+
+
{{$t('clientData')}}
+
+

{{client.nickname}}

+
{{client.street}}
+
{{client.postalCode}}, {{client.city}} ({{client.province}})
+
{{client.country}}
- - - -
- - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + +
{{$t('reference')}}{{$t('quantity')}}{{$t('claims')}}{{$t('concept')}}
{{sale.id}}{{sale.quantity}}{{sale.claimQuantity}}{{sale.concept}}
+ +
+
{{$t('clientSignature')}}
+
+

{{client.name}}

+
+
+ + + + diff --git a/print/templates/reports/claim-pickup-order/claim-pickup-order.js b/print/templates/reports/claim-pickup-order/claim-pickup-order.js index fa2124057..5c7002e47 100755 --- a/print/templates/reports/claim-pickup-order/claim-pickup-order.js +++ b/print/templates/reports/claim-pickup-order/claim-pickup-order.js @@ -1,12 +1,12 @@ -const Component = require(`${appPath}/core/component`); -const reportHeader = new Component('report-header'); +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); const reportFooter = new Component('report-footer'); module.exports = { name: 'claim-pickup-order', async serverPrefetch() { - this.client = await this.fetchClient(this.claimId); - this.sales = await this.fetchSales(this.claimId); + this.client = await this.fetchClient(this.id); + this.sales = await this.fetchSales(this.id); if (!this.client) throw new Error('Something went wrong'); @@ -19,21 +19,22 @@ module.exports = { } }, methods: { - fetchClient(claimId) { - return this.findOneFromDef('client', [claimId]); - }, - fetchSales(claimId) { - return this.rawSqlFromDef('sales', [claimId]); + fetchClient(id) { + return this.findOneFromDef('client', [id]); }, + fetchSales(id) { + return this.rawSqlFromDef('sales', [id]); + } }, components: { - 'report-header': reportHeader.build(), + 'report-body': reportBody.build(), 'report-footer': reportFooter.build() }, props: { - claimId: { - type: [Number, String], - required: true + id: { + type: Number, + required: true, + description: 'The claim id' } } }; diff --git a/print/templates/reports/claim-pickup-order/locale/es.yml b/print/templates/reports/claim-pickup-order/locale/es.yml index faa6eac33..5ee5ecda7 100644 --- a/print/templates/reports/claim-pickup-order/locale/es.yml +++ b/print/templates/reports/claim-pickup-order/locale/es.yml @@ -11,7 +11,3 @@ concept: Concepto clientSignature: Firma del cliente claim: Reclamación {0} phone: Teléfono -sections: - agency: - description: 'Para agilizar su recogida, por favor, póngase en contacto con la oficina - de Logista Parcel.
Tlf: 96 166 77 88 - Ana Gómez (Ext. 2113) (atcsalidas.i2valencia@integra2.es)' diff --git a/print/templates/reports/client-debt-statement/assets/css/import.js b/print/templates/reports/client-debt-statement/assets/css/import.js index fd8796c2b..37a98dfdd 100644 --- a/print/templates/reports/client-debt-statement/assets/css/import.js +++ b/print/templates/reports/client-debt-statement/assets/css/import.js @@ -1,9 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/spacing.css`, - `${appPath}/common/css/misc.css`, - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/client-debt-statement/client-debt-statement.html b/print/templates/reports/client-debt-statement/client-debt-statement.html index 88bf15bdb..962af021d 100644 --- a/print/templates/reports/client-debt-statement/client-debt-statement.html +++ b/print/templates/reports/client-debt-statement/client-debt-statement.html @@ -1,95 +1,78 @@ - - - - - - - - - -
- - - -
-
-
-
-
-

{{$t('title')}}

- - - - - - - - - - - -
{{$t('clientId')}}{{client.id}}
{{$t('date')}}{{dated}}
-
-
-
-
-
{{$t('clientData')}}
-
-

{{client.socialName}}

-
- {{client.street}} -
-
- {{client.postcode}}, {{client.city}} ({{client.province}}) -
-
- {{client.country}} -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{$t('date')}}{{$t('concept')}}{{$t('invoiced')}}{{$t('payed')}}{{$t('balance')}}
{{sale.issued | date('%d-%m-%Y')}}{{sale.ref}}{{sale.debtOut}}{{sale.debtIn}}{{getBalance(sale)}}
- Total - {{getTotalDebtOut() | currency('EUR', $i18n.locale)}} - {{getTotalDebtIn() | currency('EUR', $i18n.locale)}}{{totalBalance | currency('EUR', $i18n.locale)}}
-
+ +
+
+
+
+
+

{{$t('title')}}

+ + + + + + + + + + + +
{{$t('clientId')}}{{client.id}}
{{$t('date')}}{{dated}}
+
+
+
+
+
{{$t('clientData')}}
+
+

{{client.socialName}}

+
{{client.street}}
+
{{client.postcode}}, {{client.city}} ({{client.province}})
+
{{client.country}}
- - - -
- - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('date')}}{{$t('concept')}}{{$t('invoiced')}}{{$t('payed')}}{{$t('balance')}}
{{sale.issued | date('%d-%m-%Y')}}{{sale.ref}}{{sale.debtOut}}{{sale.debtIn}}{{getBalance(sale)}}
+ Total + {{getTotalDebtOut() | currency('EUR', $i18n.locale)}} + {{getTotalDebtIn() | currency('EUR', $i18n.locale)}}{{totalBalance | currency('EUR', $i18n.locale)}}
+ + + + diff --git a/print/templates/reports/client-debt-statement/client-debt-statement.js b/print/templates/reports/client-debt-statement/client-debt-statement.js index f006b0a92..45b97518f 100755 --- a/print/templates/reports/client-debt-statement/client-debt-statement.js +++ b/print/templates/reports/client-debt-statement/client-debt-statement.js @@ -1,12 +1,12 @@ -const Component = require(`${appPath}/core/component`); -const reportHeader = new Component('report-header'); +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); const reportFooter = new Component('report-footer'); module.exports = { name: 'client-debt-statement', async serverPrefetch() { - this.client = await this.fetchClient(this.recipientId); - this.sales = await this.fetchSales(this.recipientId, this.from); + this.client = await this.fetchClient(this.id); + this.sales = await this.fetchSales(this.id, this.from); if (!this.client) throw new Error('Something went wrong'); @@ -22,21 +22,21 @@ module.exports = { return {totalBalance: 0.00}; }, methods: { - fetchClient(clientId) { - return this.findOneFromDef('client', [clientId]); + fetchClient(id) { + return this.findOneFromDef('client', [id]); }, - fetchSales(clientId, from) { + fetchSales(id, from) { return this.rawSqlFromDef('sales', [ from, - clientId, + id, from, - clientId, + id, from, - clientId, + id, from, - clientId, + id, from, - clientId + id ]); }, getBalance(sale) { @@ -64,13 +64,14 @@ module.exports = { }, }, components: { - 'report-header': reportHeader.build(), + 'report-body': reportBody.build(), 'report-footer': reportFooter.build() }, props: { - recipientId: { - type: [Number, String], - required: true + id: { + type: Number, + required: true, + description: 'The client id' }, from: { required: true diff --git a/print/templates/reports/cmr-authorization/cmr-authorization.html b/print/templates/reports/cmr-authorization/cmr-authorization.html deleted file mode 100644 index 2d8342a47..000000000 --- a/print/templates/reports/cmr-authorization/cmr-authorization.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - -
- - - -
-
-

-

-

-

- -
-
-

{{client.name}}

-
-

- - - - - - - - - - - - - - - -
{{$t('signer.representative')}}:
{{$t('signer.representativeRole')}}:
{{$t('signer.signed')}}:
-

-
-
-

{{$t('signature')}}

- -

-

Juan Vicente Ferrer Roig
-
Director
-

{{$t('issued', [ - 'Algemesí', - issued.getDate(), - $t('months')[issued.getMonth()], - issued.getFullYear()]) - }} -

-

-
-
- -
-
- - - -
- - \ No newline at end of file diff --git a/print/templates/reports/cmr-authorization/cmr-authorization.js b/print/templates/reports/cmr-authorization/cmr-authorization.js deleted file mode 100755 index 1adc75fa6..000000000 --- a/print/templates/reports/cmr-authorization/cmr-authorization.js +++ /dev/null @@ -1,29 +0,0 @@ -const Component = require(`${appPath}/core/component`); -const reportHeader = new Component('report-header'); -const reportFooter = new Component('report-footer'); - -module.exports = { - name: 'cmr-authorization', - async serverPrefetch() { - this.ticket = await this.findOneFromDef('ticket', [this.ticketId]); - if (!this.ticket) - throw new Error('Something went wrong'); - - this.client = await this.findOneFromDef('client', [this.ticket.clientFk]); - }, - computed: { - issued: function() { - return new Date(); - } - }, - components: { - 'report-header': reportHeader.build(), - 'report-footer': reportFooter.build() - }, - props: { - ticketId: { - type: [Number, String], - required: true - } - } -}; diff --git a/print/templates/reports/cmr-authorization/sql/ticket.sql b/print/templates/reports/cmr-authorization/sql/ticket.sql deleted file mode 100644 index c6c994f7d..000000000 --- a/print/templates/reports/cmr-authorization/sql/ticket.sql +++ /dev/null @@ -1,12 +0,0 @@ -SELECT - t.id, - t.clientFk, - cty.country, - w.name AS warehouse -FROM ticket t - JOIN warehouse w ON w.id = t.warehouseFk - JOIN address a ON a.id = t.addressFk - JOIN province p ON p.id = a.provinceFk - JOIN autonomy au ON au.id = p.autonomyFk - JOIN country cty ON cty.id = au.countryFk -WHERE t.id = ? \ No newline at end of file diff --git a/print/templates/reports/collection-label/assets/css/import.js b/print/templates/reports/collection-label/assets/css/import.js new file mode 100644 index 000000000..37a98dfdd --- /dev/null +++ b/print/templates/reports/collection-label/assets/css/import.js @@ -0,0 +1,12 @@ +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); + +module.exports = new Stylesheet([ + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, + `${__dirname}/style.css`]) + .mergeStyles(); diff --git a/print/templates/reports/collection-label/assets/css/style.css b/print/templates/reports/collection-label/assets/css/style.css new file mode 100644 index 000000000..fe1975445 --- /dev/null +++ b/print/templates/reports/collection-label/assets/css/style.css @@ -0,0 +1,37 @@ +html { + font-family: "Roboto"; + margin-top: -7px; +} +* { + box-sizing: border-box; + text-align: center; + font-size: 26px; +} +#vertical { + writing-mode: vertical-rl; + height: 226px; + margin-left: -13px; +} +.outline { + border: 1px solid black; + padding: 5px; +} +#nickname { + font-size: 22px; +} +#agencyDescripton { + font-size: 32px; + font-weight: bold; +} +#bold { + font-weight: bold; +} +#barcode{ + width: 390px; +} +#shipped { + font-weight: bold; +} +#ticketFk, #vertical { + font-size: 34px; +} \ No newline at end of file diff --git a/print/templates/reports/collection-label/collection-label.html b/print/templates/reports/collection-label/collection-label.html new file mode 100644 index 000000000..35c0786b6 --- /dev/null +++ b/print/templates/reports/collection-label/collection-label.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{labelData.levelV}}{{labelData.ticketFk}} ⬸ {{labelData.clientFk}}{{labelData.shipped}}
{{labelData.workerCode}}
{{labelData.labelCount}}
{{labelData.size}}
{{labelData.agencyDescription}}
{{labelData.lineCount}}
{{labelData.nickName}}{{labelData.agencyHour}}
+ +
diff --git a/print/templates/reports/collection-label/collection-label.js b/print/templates/reports/collection-label/collection-label.js new file mode 100644 index 000000000..7bc25ad79 --- /dev/null +++ b/print/templates/reports/collection-label/collection-label.js @@ -0,0 +1,51 @@ +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); +const jsBarcode = require('jsbarcode'); +const {DOMImplementation, XMLSerializer} = require('xmldom'); +const UserError = require('vn-loopback/util/user-error'); + +module.exports = { + name: 'collection-label', + props: { + id: { + type: Number, + required: true, + description: 'The ticket or collection id' + } + }, + async serverPrefetch() { + let ticketIds; + const res = await this.rawSqlFromDef('tickets', [this.id]); + + if (res.length) { + ticketIds = []; + for (const row of res) + ticketIds.push(row.ticketFk); + } else + ticketIds = [this.id]; + + this.labelsData = await this.rawSqlFromDef('labelsData', [ticketIds]); + + if (!this.labelsData.length) + throw new UserError('Empty data source'); + }, + methods: { + getBarcode(id) { + const xmlSerializer = new XMLSerializer(); + const document = new DOMImplementation().createDocument('http://www.w3.org/1999/xhtml', 'html', null); + const svgNode = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + jsBarcode(svgNode, id, { + xmlDocument: document, + format: 'code128', + displayValue: false, + width: 3.8, + height: 110, + }); + return xmlSerializer.serializeToString(svgNode); + }, + }, + components: { + 'report-body': reportBody.build() + }, +}; diff --git a/print/templates/reports/collection-label/locale/es.yml b/print/templates/reports/collection-label/locale/es.yml new file mode 100644 index 000000000..a54d3bad8 --- /dev/null +++ b/print/templates/reports/collection-label/locale/es.yml @@ -0,0 +1 @@ +reportName: labelCollection \ No newline at end of file diff --git a/print/templates/reports/collection-label/options.json b/print/templates/reports/collection-label/options.json new file mode 100644 index 000000000..175b3c1db --- /dev/null +++ b/print/templates/reports/collection-label/options.json @@ -0,0 +1,11 @@ +{ + "width": "10.4cm", + "height": "4.8cm", + "margin": { + "top": "0cm", + "right": "0.5cm", + "bottom": "0cm", + "left": "0cm" + }, + "printBackground": true +} \ No newline at end of file diff --git a/print/templates/reports/collection-label/sql/labelsData.sql b/print/templates/reports/collection-label/sql/labelsData.sql new file mode 100644 index 000000000..6f5b47a54 --- /dev/null +++ b/print/templates/reports/collection-label/sql/labelsData.sql @@ -0,0 +1,35 @@ +SELECT c.itemPackingTypeFk, + CONCAT(tc.collectionFk, ' ', LEFT(cc.code, 4)) color, + CONCAT(tc.collectionFk, ' ', SUBSTRING('ABCDEFGH',tc.wagon, 1), '-', tc.`level`) levelV, + tc.ticketFk, + LEFT(COALESCE(et.description, zo.name, am.name),12) agencyDescription, + am.name, + t.clientFk, + CONCAT(CAST(SUM(sv.volume) AS DECIMAL(5, 2)), 'm³') m3 , + CAST(IF(ic.code = 'plant', CONCAT(MAX(i.`size`),' cm'), COUNT(*)) AS CHAR) size, + w.code workerCode, + tt.labelCount, + IF(HOUR(t.shipped), TIME_FORMAT(t.shipped, '%H:%i'), TIME_FORMAT(zo.`hour`, '%H:%i')) agencyHour, + DATE_FORMAT(t.shipped, '%d/%m/%y') shipped, + COUNT(*) lineCount, + t.nickName + FROM vn.ticket t + JOIN vn.ticketCollection tc ON tc.ticketFk = t.id + JOIN vn.collection c ON c.id = tc.collectionFk + LEFT JOIN vn.collectionColors cc ON cc.shelve = tc.`level` + AND cc.wagon = tc.wagon + AND cc.trainFk = c.trainFk + JOIN vn.sale s ON s.ticketFk = t.id + LEFT JOIN vn.saleVolume sv ON sv.saleFk = s.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it ON it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + JOIN vn.worker w ON w.id = c.workerFk + JOIN vn.agencyMode am ON am.id = t.agencyModeFk + LEFT JOIN vn.ticketTrolley tt ON tt.ticket = t.id + LEFT JOIN vn.`zone` zo ON t.zoneFk = zo.id + LEFT JOIN vn.routesMonitor rm ON rm.routeFk = t.routeFk + LEFT JOIN vn.expeditionTruck et ON et.id = rm.expeditionTruckFk + WHERE tc.ticketFk IN (?) + GROUP BY t.id + ORDER BY cc.`code`; \ No newline at end of file diff --git a/print/templates/reports/collection-label/sql/tickets.sql b/print/templates/reports/collection-label/sql/tickets.sql new file mode 100644 index 000000000..05deeba83 --- /dev/null +++ b/print/templates/reports/collection-label/sql/tickets.sql @@ -0,0 +1,3 @@ +SELECT ticketFk + FROM ticketCollection + WHERE collectionFk = ? \ No newline at end of file diff --git a/print/templates/reports/credit-request/assets/css/import.js b/print/templates/reports/credit-request/assets/css/import.js index fd8796c2b..37a98dfdd 100644 --- a/print/templates/reports/credit-request/assets/css/import.js +++ b/print/templates/reports/credit-request/assets/css/import.js @@ -1,9 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/spacing.css`, - `${appPath}/common/css/misc.css`, - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/credit-request/credit-request.html b/print/templates/reports/credit-request/credit-request.html index 975115eef..d5e336809 100644 --- a/print/templates/reports/credit-request/credit-request.html +++ b/print/templates/reports/credit-request/credit-request.html @@ -1,190 +1,164 @@ - - - - - - - + +
- - - - -
-
-

{{$t('fields.title')}}

-
-
- - - - - - - - - -
{{$t('fields.date')}}: -
- -
-
- - -
-
-
-
-

{{$t('fields.companyInfo')}}

+ +
+
+

{{$t('fields.title')}}

+
+
+ + + + + + + +
{{$t('fields.date')}}: +
+ +
+
+
+
+
+
+

{{$t('fields.companyInfo')}}

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('fields.companyName')}}: +
+
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{$t('fields.companyName')}}: -
- -
-
{{$t('fields.businessType')}}: -
- -
-
{{$t('fields.antiquity')}}: -
- -
-
{{$t('fields.surface')}}: -
- -
-
{{$t('fields.numberOfEmployees')}}: -
- -
-
{{$t('fields.owner')}}: -
- -
-
{{$t('fields.phone')}}: -
- -
-
{{$t('fields.payer')}}: -
- -
-
{{$t('fields.phone')}}: -
- -
-
+
{{$t('fields.businessType')}}: +
+
+
{{$t('fields.antiquity')}}: +
+ +
+
{{$t('fields.surface')}}: +
+ +
+
{{$t('fields.numberOfEmployees')}}: +
+ +
+
{{$t('fields.owner')}}: +
+ +
+
{{$t('fields.phone')}}: +
+ +
+
{{$t('fields.payer')}}: +
+ +
+
{{$t('fields.phone')}}: +
+ +
+
+
+
+
+
+
+
+
+
+

{{$t('fields.economicInfo')}}

+
+
+ + + + + + + + + + + + + + + +
{{$t('fields.previousSalesVolume')}}: +
+ +
+
{{$t('fields.forecastedSalesVolume')}}: +
+ +
+
{{$t('fields.forecastedPurchases')}}: +
+ +
+
+
+
+
+
+
+
+
+ + + + + + + - -
{{$t('fields.personFilling')}}: +
+
- - - - -
-
-
-
-

{{$t('fields.economicInfo')}}

-
-
- - - - - - - - - - - - - - - -
{{$t('fields.previousSalesVolume')}}: -
- -
-
{{$t('fields.forecastedSalesVolume')}}: -
- -
-
{{$t('fields.forecastedPurchases')}}: -
- -
-
-
+
{{$t('fields.phone')}}: +
+
- - - - -
-
-
- - - - - - - - - -
{{$t('fields.personFilling')}}: -
- -
-
{{$t('fields.phone')}}: -
- -
-
-
-
-
- - - - -
- - \ No newline at end of file + +
+ + + + + diff --git a/print/templates/reports/credit-request/credit-request.js b/print/templates/reports/credit-request/credit-request.js index d04106493..c1aa74e1b 100755 --- a/print/templates/reports/credit-request/credit-request.js +++ b/print/templates/reports/credit-request/credit-request.js @@ -1,5 +1,5 @@ -const Component = require(`${appPath}/core/component`); -const reportHeader = new Component('report-header'); +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body') const reportFooter = new Component('report-footer'); const rptCreditRequest = { @@ -12,7 +12,7 @@ const rptCreditRequest = { } }, components: { - 'report-header': reportHeader.build(), + 'report-body': reportBody.build(), 'report-footer': reportFooter.build() } }; diff --git a/print/templates/reports/delivery-note/assets/css/import.js b/print/templates/reports/delivery-note/assets/css/import.js index fd8796c2b..37a98dfdd 100644 --- a/print/templates/reports/delivery-note/assets/css/import.js +++ b/print/templates/reports/delivery-note/assets/css/import.js @@ -1,9 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/spacing.css`, - `${appPath}/common/css/misc.css`, - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/delivery-note/assets/css/style.css b/print/templates/reports/delivery-note/assets/css/style.css index f99c385fa..8405ae78d 100644 --- a/print/templates/reports/delivery-note/assets/css/style.css +++ b/print/templates/reports/delivery-note/assets/css/style.css @@ -37,4 +37,9 @@ h2 { .phytosanitary-info { margin-top: 10px +} + +.observations{ + text-align: justify; + text-justify: inter-word; } \ No newline at end of file diff --git a/print/templates/reports/delivery-note/delivery-note.html b/print/templates/reports/delivery-note/delivery-note.html index 36d9abde1..06653c949 100644 --- a/print/templates/reports/delivery-note/delivery-note.html +++ b/print/templates/reports/delivery-note/delivery-note.html @@ -1,293 +1,257 @@ - - - - - - - - - -
- - - - -
-
-
-
-
-

{{$t('title')}}

- - - - - - - - - - - - - - - - - - - -
{{$t('clientId')}}{{client.id}}
{{$t('ticketId')}}{{ticket.id}}
{{$t('date')}}{{ticket.shipped | date('%d-%m-%Y')}}
{{$t('packages')}}{{ticket.packages}}
-
-
-
-
-
{{$t('deliveryAddress')}}
-
-

{{address.nickname}}

-
- {{address.street}} -
-
- {{address.postalCode}}, {{address.city}} ({{address.province}}) -
-
-
- -
-
{{$t('fiscalData')}}
-
-
- {{client.socialName}} -
-
- {{client.street}} -
-
- {{client.fi}} -
-
-
-
-
- - -

{{$t('saleLines')}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{$t('reference')}}{{$t('quantity')}}{{$t('concept')}}{{$t('price')}}{{$t('discount')}}{{$t('vat')}}{{$t('amount')}}
{{sale.itemFk | zerofill('000000')}}{{sale.quantity}}{{sale.concept}}{{sale.price | currency('EUR', $i18n.locale)}}{{(sale.discount / 100) | percentage}}{{sale.vatType}}{{sale.price * sale.quantity * (1 - sale.discount / 100) | currency('EUR', $i18n.locale)}}
- - {{sale.tag5}} {{sale.value5}} - - - {{sale.tag6}} {{sale.value6}} - - - {{sale.tag7}} {{sale.value7}} - -
- {{$t('subtotal')}} - {{getSubTotal() | currency('EUR', $i18n.locale)}}
- - -
- -
-

{{$t('services.title')}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{$t('services.theader.quantity')}}{{$t('services.theader.concept')}}{{$t('services.theader.price')}}{{$t('services.theader.vat')}}{{$t('services.theader.amount')}}
{{service.quantity}}{{service.description}}{{service.price | currency('EUR', $i18n.locale)}}{{service.taxDescription}}{{service.price | currency('EUR', $i18n.locale)}}
- {{$t('services.tfoot.subtotal')}} - {{serviceTotal | currency('EUR', $i18n.locale)}}
- * {{ $t('services.warning') }} -
- -
-
- -
-

{{$t('packagings.title')}}

- - - - - - - - - - - - - - - -
{{$t('packagings.theader.reference')}}{{$t('packagings.theader.quantity')}}{{$t('packagings.theader.concept')}}
{{packaging.itemFk | zerofill('000000')}}{{packaging.quantity}}{{packaging.name}}
-
- -
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{$t('taxes.title')}}
{{$t('taxes.theader.type')}}{{$t('taxes.theader.taxBase')}}{{$t('taxes.theader.tax')}}{{$t('taxes.theader.fee')}}
{{tax.name}} - {{tax.Base | currency('EUR', $i18n.locale)}} - {{tax.vatPercent | percentage}}{{tax.tax | currency('EUR', $i18n.locale)}}
{{$t('subtotal')}} - {{getTotalBase() | currency('EUR', $i18n.locale)}} - {{getTotalTax()| currency('EUR', $i18n.locale)}}
{{$t('total')}}{{getTotal() | currency('EUR', $i18n.locale)}}
-
- + + +
+
+
+
+
+

{{$t(deliverNoteType)}}

+ + + + + + + + + + + + + + + + + + + +
{{$t('clientId')}}{{client.id}}
{{$t(deliverNoteType)}}{{ticket.id}}
{{$t('date')}}{{ticket.shipped | date('%d-%m-%Y')}}
{{$t('packages')}}{{ticket.packages}}
+
+
+
+
+
{{$t('deliveryAddress')}}
+
+

{{address.nickname}}

+
{{address.street}}
+
{{address.postalCode}}, {{address.city}} ({{address.province}})
+
+
- -
-
-
-
-
-
- -
-
- {{$t('plantPassport')}}
-
-
-
-
-
- A - {{getBotanical()}} -
-
- B - ES17462130 -
-
- C - {{ticket.id}} -
-
- D - ES -
-
-
-
-
- -
+
+
{{$t('fiscalData')}}
+
+
{{client.socialName}}
+
{{client.street}}
+
{{client.fi}}
+
+
+
+
+ +

{{$t('saleLines')}}

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('reference')}}{{$t('quantity')}}{{$t('concept')}}{{$t('price')}}{{$t('discount')}}{{$t('vat')}}{{$t('amount')}}
{{sale.itemFk | zerofill('000000')}}{{sale.quantity}}{{sale.concept}}{{sale.price | currency('EUR', $i18n.locale)}}{{(sale.discount / 100) | percentage}}{{sale.vatType}} + {{sale.price * sale.quantity * (1 - sale.discount / 100) | currency('EUR', $i18n.locale)}} +
+ {{sale.tag5}} {{sale.value5}} + {{sale.tag6}} {{sale.value6}} + {{sale.tag7}} {{sale.value7}} +
+ {{$t('subtotal')}} + {{getSubTotal() | currency('EUR', $i18n.locale)}}
+ +
+
+

{{$t('services.title')}}

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('services.theader.quantity')}}{{$t('services.theader.concept')}}{{$t('services.theader.price')}}{{$t('services.theader.vat')}}{{$t('services.theader.amount')}}
{{service.quantity}}{{service.description}}{{service.price | currency('EUR', $i18n.locale)}}{{service.taxDescription}}{{service.price | currency('EUR', $i18n.locale)}}
+ {{$t('services.tfoot.subtotal')}} + {{serviceTotal | currency('EUR', $i18n.locale)}}
+ * {{ $t('services.warning') }} +
+
+
+
+

{{$t('packagings.title')}}

+ + + + + + + + + + + + + + + +
{{$t('packagings.theader.reference')}}{{$t('packagings.theader.quantity')}}{{$t('packagings.theader.concept')}}
{{packaging.itemFk | zerofill('000000')}}{{packaging.quantity}}{{packaging.name}}
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('taxes.title')}}
{{$t('taxes.theader.type')}}{{$t('taxes.theader.taxBase')}}{{$t('taxes.theader.tax')}}{{$t('taxes.theader.fee')}}
{{tax.name}}{{tax.Base | currency('EUR', $i18n.locale)}}{{tax.vatPercent | percentage}}{{tax.tax | currency('EUR', $i18n.locale)}}
{{$t('subtotal')}}{{getTotalBase() | currency('EUR', $i18n.locale)}}{{getTotalTax()| currency('EUR', $i18n.locale)}}
{{$t('total')}}{{getTotal() | currency('EUR', $i18n.locale)}}
+
+ +
+
+
+
- -
-
-
{{$t('digitalSignature')}}
-
- -
{{signature.created | date('%d-%m-%Y')}}
-
-
+
+
- +
{{$t('plantPassport')}}
+
+
+
+
+ A + {{getBotanical()}} +
+
+ B + ES17462130 +
+
+ C + {{ticket.id}} +
+
+ D + ES
- - - -
- - \ No newline at end of file + + + +
+
+
+
{{$t('digitalSignature')}}
+
+ +
{{signature.created | date('%d-%m-%Y')}}
+
+
+
+
+
+
+

{{$t('observations')}}

+

{{ticket.description}}

+
+
+ + + + diff --git a/print/templates/reports/delivery-note/delivery-note.js b/print/templates/reports/delivery-note/delivery-note.js index 0ee7c8c91..1a1a57c59 100755 --- a/print/templates/reports/delivery-note/delivery-note.js +++ b/print/templates/reports/delivery-note/delivery-note.js @@ -1,5 +1,6 @@ -const config = require(`${appPath}/core/config`); -const Component = require(`${appPath}/core/component`); +const config = require(`vn-print/core/config`); +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); const reportHeader = new Component('report-header'); const reportFooter = new Component('report-footer'); const md5 = require('md5'); @@ -8,14 +9,14 @@ const fs = require('fs-extra'); module.exports = { name: 'delivery-note', async serverPrefetch() { - this.client = await this.fetchClient(this.ticketId); - this.ticket = await this.fetchTicket(this.ticketId); - this.sales = await this.fetchSales(this.ticketId); - this.address = await this.fetchAddress(this.ticketId); - this.services = await this.fetchServices(this.ticketId); - this.taxes = await this.fetchTaxes(this.ticketId); - this.packagings = await this.fetchPackagings(this.ticketId); - this.signature = await this.fetchSignature(this.ticketId); + this.client = await this.fetchClient(this.id); + this.ticket = await this.fetchTicket(this.id); + this.sales = await this.fetchSales(this.id); + this.address = await this.fetchAddress(this.id); + this.services = await this.fetchServices(this.id); + this.taxes = await this.fetchTaxes(this.id); + this.packagings = await this.fetchPackagings(this.id); + this.signature = await this.fetchSignature(this.id); if (!this.ticket) throw new Error('Something went wrong'); @@ -37,6 +38,9 @@ module.exports = { return `data:image/png;base64, ${base64}`; }, + deliverNoteType() { + return this.type ? this.type : 'deliveryNote'; + }, serviceTotal() { let total = 0.00; this.services.forEach(service => { @@ -44,32 +48,42 @@ module.exports = { }); return total; + }, + showPrices() { + return this.deliverNoteType != 'withoutPrices'; + }, + footerType() { + const translatedType = this.$t(this.deliverNoteType); + return `${translatedType} ${this.id}`; + }, + hasObservations() { + return this.ticket.description !== null; } }, methods: { - fetchClient(ticketId) { - return this.findOneFromDef('client', [ticketId]); + fetchClient(id) { + return this.findOneFromDef('client', [id]); }, - fetchTicket(ticketId) { - return this.findOneFromDef('ticket', [ticketId]); + fetchTicket(id) { + return this.findOneFromDef('ticket', [id]); }, - fetchAddress(ticketId) { - return this.findOneFromDef(`address`, [ticketId]); + fetchAddress(id) { + return this.findOneFromDef(`address`, [id]); }, - fetchSignature(ticketId) { - return this.findOneFromDef('signature', [ticketId]); + fetchSignature(id) { + return this.findOneFromDef('signature', [id]); }, - fetchTaxes(ticketId) { - return this.findOneFromDef(`taxes`, [ticketId]); + fetchTaxes(id) { + return this.findOneFromDef(`taxes`, [id]); }, - fetchSales(ticketId) { - return this.rawSqlFromDef('sales', [ticketId]); + fetchSales(id) { + return this.rawSqlFromDef('sales', [id]); }, - fetchPackagings(ticketId) { - return this.rawSqlFromDef('packagings', [ticketId]); + fetchPackagings(id) { + return this.rawSqlFromDef('packagings', [id]); }, - fetchServices(ticketId) { - return this.rawSqlFromDef('services', [ticketId]); + fetchServices(id) { + return this.rawSqlFromDef('services', [id]); }, getSubTotal() { @@ -112,13 +126,19 @@ module.exports = { } }, components: { + 'report-body': reportBody.build(), 'report-header': reportHeader.build(), 'report-footer': reportFooter.build() }, props: { - ticketId: { - type: [Number, String], - required: true + id: { + type: Number, + required: true, + description: 'The ticket id' + }, + type: { + type: String, + required: false } } }; diff --git a/print/templates/reports/delivery-note/locale/en.yml b/print/templates/reports/delivery-note/locale/en.yml index 16d0954e2..5902da8b3 100644 --- a/print/templates/reports/delivery-note/locale/en.yml +++ b/print/templates/reports/delivery-note/locale/en.yml @@ -1,6 +1,7 @@ reportName: delivery-note -title: Delivery note -ticketId: Delivery note +deliveryNote: Delivery note +proforma: Proforma +withoutPrices: Delivery note clientId: Client deliveryAddress: Delivery address fiscalData: Fiscal data @@ -17,7 +18,6 @@ total: Total subtotal: Subtotal vatType: VAT Type digitalSignature: Digital signature -ticket: Delivery note {0} plantPassport: Plant passport packages: Packages services: @@ -46,4 +46,5 @@ taxes: fee: Fee tfoot: subtotal: Subtotal - total: Total \ No newline at end of file + total: Total +observations: Observations \ No newline at end of file diff --git a/print/templates/reports/delivery-note/locale/es.yml b/print/templates/reports/delivery-note/locale/es.yml index ca670ad59..d87198f45 100644 --- a/print/templates/reports/delivery-note/locale/es.yml +++ b/print/templates/reports/delivery-note/locale/es.yml @@ -1,6 +1,7 @@ reportName: albaran -title: Albarán -ticketId: Albarán +deliveryNote: Albarán +proforma: Proforma +withoutPrices: Albarán clientId: Cliente deliveryAddress: Dirección de entrega fiscalData: Datos fiscales @@ -46,4 +47,5 @@ taxes: fee: Cuota tfoot: subtotal: Subtotal - total: Total \ No newline at end of file + total: Total +observations: Observaciones \ No newline at end of file diff --git a/print/templates/reports/delivery-note/locale/fr.yml b/print/templates/reports/delivery-note/locale/fr.yml index 6b3779a5b..603623a47 100644 --- a/print/templates/reports/delivery-note/locale/fr.yml +++ b/print/templates/reports/delivery-note/locale/fr.yml @@ -1,6 +1,7 @@ reportName: bon-de-livraison -title: Bon de livraison -ticketId: BL +deliveryNote: Bon de livraison +proforma: Proforma +withoutPrices: Bon de livraison clientId: Client deliveryAddress: Adresse de livraison fiscalData: Coordonnées @@ -46,4 +47,5 @@ taxes: fee: Quote tfoot: subtotal: Total partiel - total: Total \ No newline at end of file + total: Total +observations: Observations \ No newline at end of file diff --git a/print/templates/reports/delivery-note/locale/pt.yml b/print/templates/reports/delivery-note/locale/pt.yml index 1a9c1fbd1..fb49d230b 100644 --- a/print/templates/reports/delivery-note/locale/pt.yml +++ b/print/templates/reports/delivery-note/locale/pt.yml @@ -1,6 +1,7 @@ reportName: nota-de-entrega -title: Nota de Entrega -ticketId: Nota de Entrega +deliveryNote: Nota de Entrega +proforma: Proforma +withoutPrices: Nota de Entrega clientId: Cliente deliveryAddress: Morada de Entrega fiscalData: Dados Fiscais @@ -46,4 +47,5 @@ taxes: fee: Compartilhado tfoot: subtotal: Subtotal - total: Total \ No newline at end of file + total: Total +observations: Observações \ No newline at end of file diff --git a/print/templates/reports/delivery-note/sql/ticket.sql b/print/templates/reports/delivery-note/sql/ticket.sql index f78c72544..9eac2d322 100644 --- a/print/templates/reports/delivery-note/sql/ticket.sql +++ b/print/templates/reports/delivery-note/sql/ticket.sql @@ -2,7 +2,11 @@ SELECT t.id, t.shipped, c.code companyCode, - t.packages + t.packages, + tto.description FROM ticket t JOIN company c ON c.id = t.companyFk + LEFT JOIN ticketObservation tto + ON tto.ticketFk = t.id + AND tto.observationTypeFk = (SELECT id FROM observationType WHERE code = 'deliveryNote') WHERE t.id = ? \ No newline at end of file diff --git a/print/templates/reports/driver-route/assets/css/import.js b/print/templates/reports/driver-route/assets/css/import.js index fd8796c2b..37a98dfdd 100644 --- a/print/templates/reports/driver-route/assets/css/import.js +++ b/print/templates/reports/driver-route/assets/css/import.js @@ -1,9 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/spacing.css`, - `${appPath}/common/css/misc.css`, - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/driver-route/driver-route.html b/print/templates/reports/driver-route/driver-route.html index eed85e1d7..48489de6f 100644 --- a/print/templates/reports/driver-route/driver-route.html +++ b/print/templates/reports/driver-route/driver-route.html @@ -1,166 +1,141 @@ - - - - - - - - - -
- - - -
-
-

{{$t('route')}} {{route.id}}

-
-
{{$t('information')}}
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{$t('route')}}{{route.id}}{{$t('driver')}}{{route.userNickName}}
{{$t('date')}}{{route.created | date('%d-%m-%Y')}}{{$t('vehicle')}}{{route.vehicleTradeMark}} {{route.vehicleModel}}
{{$t('time')}}{{route.time | date('%H:%M')}}{{route.plateNumber}}
{{$t('volume')}}{{route.m3}}{{$t('agency')}}{{route.agencyName}}
-
- - - - - - - - - - - - - - - -
-

Hora inicio

-
-

Hora fin

-
-

Km inicio

-
-

Km fin

-
-
- -
-
-
- -
-
-
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - -
{{$t('order')}}{{$t('ticket')}}{{$t('client')}}{{$t('address')}}{{$t('packages')}}{{$t('packagingType')}}
{{ticket.priority}}{{ticket.id}}{{ticket.clientFk}} {{ticket.addressName}} - {{ticket.addressFk.toString().substr(0, - ticket.addressFk.toString().length - 3)}} - - {{ticket.addressFk.toString().substr(-3, 3)}} - - {{ticket.packages}}{{ticket.itemPackingTypes}}
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{$t('street')}}{{ticket.street}}{{$t('postcode')}}{{ticket.postalCode}}
{{$t('city')}}{{ticket.city}}{{$t('agency')}}{{ticket.ticketAgency}}
{{$t('mobile')}}{{ticket.mobile}}{{$t('phone')}}{{ticket.phone}}
{{$t('warehouse')}}{{ticket.warehouseName}}{{$t('salesPerson')}}{{ticket.salesPersonName}}
{{$t('import')}}{{ticket.import | currency('EUR', $i18n.locale)}}
-
-

{{ticket.description}}

-

{{$t('stowaway')}}: {{ticket.shipFk}}

-
-
-
+ +
+
+

{{$t('route')}} {{route.id}}

+
+
{{$t('information')}}
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('route')}}{{route.id}}{{$t('driver')}}{{route.userNickName}}
{{$t('date')}}{{route.created | date('%d-%m-%Y')}}{{$t('vehicle')}}{{route.vehicleTradeMark}} {{route.vehicleModel}}
{{$t('time')}}{{route.time | date('%H:%M')}}{{route.plateNumber}}
{{$t('volume')}}{{route.m3}}{{$t('agency')}}{{route.agencyName}}
+
+ + + + + + + + + + + + + + + +
+

Hora inicio

+
+

Hora fin

+
+

Km inicio

+
+

Km fin

+
+
+ +
+
+
+ +
+
- - - -
- - \ No newline at end of file + + +
+
+ + + + + + + + + + + + + + + + + + + + + +
{{$t('order')}}{{$t('ticket')}}{{$t('client')}}{{$t('address')}}{{$t('packages')}}{{$t('packagingType')}}
{{ticket.priority}}{{ticket.id}}{{ticket.clientFk}} {{ticket.addressName}} + {{ticket.addressFk.toString().substr(0, ticket.addressFk.toString().length - 3)}} + {{ticket.addressFk.toString().substr(-3, 3)}} + {{ticket.packages}}{{ticket.itemPackingTypes}}
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('street')}}{{ticket.street}}{{$t('postcode')}}{{ticket.postalCode}}
{{$t('city')}}{{ticket.city}}{{$t('agency')}}{{ticket.ticketAgency}}
{{$t('mobile')}}{{ticket.mobile}}{{$t('phone')}}{{ticket.phone}}
{{$t('warehouse')}}{{ticket.warehouseName}}{{$t('salesPerson')}}{{ticket.salesPersonName}}
+
+

{{ticket.description}}

+
+
+
+ + + + diff --git a/print/templates/reports/driver-route/driver-route.js b/print/templates/reports/driver-route/driver-route.js index c34de37cc..1b2e8871a 100755 --- a/print/templates/reports/driver-route/driver-route.js +++ b/print/templates/reports/driver-route/driver-route.js @@ -1,13 +1,18 @@ -const Component = require(`${appPath}/core/component`); -const reportHeader = new Component('report-header'); +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); const reportFooter = new Component('report-footer'); module.exports = { name: 'driver-route', async serverPrefetch() { - const routesId = this.routeId.split(','); - const routes = await this.fetchRoutes(routesId); - const tickets = await this.fetchTickets(routesId); + let ids = this.id; + + const hasMultipleRoutes = String(this.id).includes(','); + if (hasMultipleRoutes) + ids = this.id.split(','); + + const routes = await this.fetchRoutes(ids); + const tickets = await this.fetchTickets(ids); const map = new Map(); @@ -26,21 +31,22 @@ module.exports = { throw new Error('Something went wrong'); }, methods: { - fetchRoutes(routesId) { - return this.rawSqlFromDef('routes', [routesId]); + fetchRoutes(ids) { + return this.rawSqlFromDef('routes', [ids]); }, - fetchTickets(routesId) { - return this.rawSqlFromDef('tickets', [routesId, routesId]); + fetchTickets(ids) { + return this.rawSqlFromDef('tickets', [ids, ids]); } }, components: { - 'report-header': reportHeader.build(), + 'report-body': reportBody.build(), 'report-footer': reportFooter.build() }, props: { - routeId: { - type: [Number, String], - required: true + id: { + type: Number, + required: true, + description: 'The route id' } } }; diff --git a/print/templates/reports/driver-route/locale/es.yml b/print/templates/reports/driver-route/locale/es.yml index 4c922ba64..8f986b0d2 100644 --- a/print/templates/reports/driver-route/locale/es.yml +++ b/print/templates/reports/driver-route/locale/es.yml @@ -20,7 +20,6 @@ phone: Teléfono warehouse: Almacén salesPerson: Comercial import: Importe -stowaway: Encajado dentro del ticket -route: Ruta +route: Ruta routeId: Ruta {0} -ticket: Ticket \ No newline at end of file +ticket: Ticket diff --git a/print/templates/reports/driver-route/sql/routes.sql b/print/templates/reports/driver-route/sql/routes.sql index 3fbe59b0d..4b6f6a318 100644 --- a/print/templates/reports/driver-route/sql/routes.sql +++ b/print/templates/reports/driver-route/sql/routes.sql @@ -14,5 +14,6 @@ FROM route r LEFT JOIN account.user u ON u.id = w.userFk LEFT JOIN agencyMode am ON am.id = r.agencyModeFk LEFT JOIN agency a ON a.id = am.agencyFk - LEFT JOIN supplier s ON s.id = a.supplierFk + LEFT JOIN supplierAgencyTerm sa ON sa.agencyFk = a.id + LEFT JOIN supplier s ON s.id = sa.supplierFk WHERE r.id IN(?) \ No newline at end of file diff --git a/print/templates/reports/driver-route/sql/tickets.sql b/print/templates/reports/driver-route/sql/tickets.sql index 8806a0473..09e73819b 100644 --- a/print/templates/reports/driver-route/sql/tickets.sql +++ b/print/templates/reports/driver-route/sql/tickets.sql @@ -17,7 +17,6 @@ SELECT 0 AS import, am.name ticketAgency, tob.description, - s.shipFk, u.nickName salesPersonName, ipkg.itemPackingTypes FROM route r @@ -30,7 +29,6 @@ FROM route r LEFT JOIN province p ON a.provinceFk = p.id LEFT JOIN warehouse wh ON wh.id = t.warehouseFk LEFT JOIN agencyMode am ON am.id = t.agencyModeFk - LEFT JOIN stowaway s ON s.id = t.id LEFT JOIN ( SELECT t.id AS ticketFk, GROUP_CONCAT(DISTINCT(i.itemPackingTypeFk)) AS itemPackingTypes diff --git a/print/templates/reports/entry-order/assets/css/import.js b/print/templates/reports/entry-order/assets/css/import.js index fd8796c2b..37a98dfdd 100644 --- a/print/templates/reports/entry-order/assets/css/import.js +++ b/print/templates/reports/entry-order/assets/css/import.js @@ -1,9 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/spacing.css`, - `${appPath}/common/css/misc.css`, - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/entry-order/entry-order.html b/print/templates/reports/entry-order/entry-order.html index 956d4e2f6..bdc4b0759 100644 --- a/print/templates/reports/entry-order/entry-order.html +++ b/print/templates/reports/entry-order/entry-order.html @@ -1,127 +1,102 @@ - - - - - - - - - -
- - - - -
-
-
-
-
-

{{$t('title')}}

- - - - - - - - - - - - - - - -
{{$t('entryId')}}{{entry.id}}
{{$t('date')}}{{entry.landed | date('%d-%m-%Y')}}
{{$t('ref')}}{{entry.ref}}
-
-
-
-
-
{{$t('supplierData')}}
-
-

{{supplier.name}}

-
- {{supplier.street}} -
-
- {{supplier.postCode}}, {{supplier.city}}, ({{supplier.province}}) -
-
- {{supplier.nif}} -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{$t('boxes')}}{{$t('packing')}}{{$t('concept')}}{{$t('quantity')}}{{$t('price')}}{{$t('amount')}}
{{buy.box}}{{buy.packing}}{{buy.itemName}}{{buy.quantity | number($i18n.locale)}}{{buy.buyingValue | currency('EUR', $i18n.locale)}}{{buy.buyingValue * buy.quantity | currency('EUR', $i18n.locale)}}
- - {{buy.tag5}} {{buy.value5}} - - - {{buy.tag6}} {{buy.value6}} - - - {{buy.tag7}} {{buy.value7}} - -
- {{$t('total')}} - {{getTotal() | currency('EUR', $i18n.locale)}}
- -
-
-
-
-

{{$t('notes')}}

-
- {{entry.notes}} -
-
-
-
-
-
+ + +
+
+
+
+
+

{{$t('title')}}

+ + + + + + + + + + + + + + + +
{{$t('entryId')}}{{entry.id}}
{{$t('date')}}{{entry.landed | date('%d-%m-%Y')}}
{{$t('ref')}}{{entry.ref}}
+
+
+
+
+
{{$t('supplierData')}}
+
+

{{supplier.name}}

+
{{supplier.street}}
+
{{supplier.postCode}}, {{supplier.city}}, ({{supplier.province}})
+
{{supplier.nif}}
- - - -
- - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('boxes')}}{{$t('packing')}}{{$t('concept')}}{{$t('quantity')}}{{$t('price')}}{{$t('amount')}}
{{buy.box}}{{buy.packing}}{{buy.itemName}}{{buy.quantity | number($i18n.locale)}}{{buy.buyingValue | currency('EUR', $i18n.locale)}} + {{buy.buyingValue * buy.quantity | currency('EUR', $i18n.locale)}} +
+ {{buy.tag5}} {{buy.value5}} + {{buy.tag6}} {{buy.value6}} + {{buy.tag7}} {{buy.value7}} +
+ {{$t('total')}} + {{getTotal() | currency('EUR', $i18n.locale)}}
+
+
+
+
+

{{$t('notes')}}

+
{{entry.notes}}
+
+
+
+
+ + + + diff --git a/print/templates/reports/entry-order/entry-order.js b/print/templates/reports/entry-order/entry-order.js index 52a56bf03..22c5b55fe 100755 --- a/print/templates/reports/entry-order/entry-order.js +++ b/print/templates/reports/entry-order/entry-order.js @@ -1,13 +1,14 @@ -const Component = require(`${appPath}/core/component`); +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); const reportHeader = new Component('report-header'); const reportFooter = new Component('report-footer'); module.exports = { name: 'entry-order', async serverPrefetch() { - this.supplier = await this.fetchSupplier(this.entryId); - this.entry = await this.fetchEntry(this.entryId); - this.buys = await this.fetchBuys(this.entryId); + this.supplier = await this.fetchSupplier(this.id); + this.entry = await this.fetchEntry(this.id); + this.buys = await this.fetchBuys(this.id); if (!this.entry) throw new Error('Something went wrong'); @@ -16,14 +17,14 @@ module.exports = { return {totalBalance: 0.00}; }, methods: { - fetchSupplier(entryId) { - return this.findOneFromDef('supplier', [entryId]); + fetchSupplier(id) { + return this.findOneFromDef('supplier', [id]); }, - fetchEntry(entryId) { - return this.findOneFromDef('entry', [entryId]); + fetchEntry(id) { + return this.findOneFromDef('entry', [id]); }, - fetchBuys(entryId) { - return this.rawSqlFromDef('buys', [entryId]); + fetchBuys(id) { + return this.rawSqlFromDef('buys', [id]); }, getTotal() { let total = 0.00; @@ -35,13 +36,15 @@ module.exports = { } }, components: { + 'report-body': reportBody.build(), 'report-header': reportHeader.build(), 'report-footer': reportFooter.build() }, props: { - entryId: { - type: [Number, String], - required: true + id: { + type: Number, + required: true, + description: 'The entry id' } } }; diff --git a/print/templates/reports/exportation/assets/css/import.js b/print/templates/reports/exportation/assets/css/import.js index a2a9334cb..37a98dfdd 100644 --- a/print/templates/reports/exportation/assets/css/import.js +++ b/print/templates/reports/exportation/assets/css/import.js @@ -1,8 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, - `${appPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/exportation/exportation.html b/print/templates/reports/exportation/exportation.html index f08af2cdb..920e32a48 100644 --- a/print/templates/reports/exportation/exportation.html +++ b/print/templates/reports/exportation/exportation.html @@ -1,51 +1,35 @@ - - - - - - - - - -
- - - -
-
-

{{$t('title')}}

-

{{$t('toAttention')}}

-

-

-

    -
  • - {{responsibility}} -
  • -
-

-
-

{{$t('issued', [ - 'Algemesí', - invoice.issued.getDate(), - $t('months')[invoice.issued.getMonth()], - invoice.issued.getFullYear()]) - }} -

-

({{$t('signature')}})

- -

-

{{$t('signer.name')}}: JUAN VICENTE FERRER ROIG
-
{{$t('signer.ID')}}: 73943586N
-
{{$t('signer.position')}}: ADMINISTRADOR
-

-
-
-
- - - -
- - \ No newline at end of file + +
+
+

{{$t('title')}}

+

{{$t('toAttention')}}

+

+

+

    +
  • + {{responsibility}} +
  • +
+

+
+

{{$t('issued', [ + 'Algemesí', + invoice.issued.getDate(), + $t('months')[invoice.issued.getMonth()], + invoice.issued.getFullYear()]) + }} +

+

({{$t('signature')}})

+ +

+

{{$t('signer.name')}}: {{company.manager}}
+
{{$t('signer.ID')}}: {{company.managerFi}}
+
{{$t('signer.position')}}: {{$t('manager')}}
+

+
+
+
+ +
\ No newline at end of file diff --git a/print/templates/reports/exportation/exportation.js b/print/templates/reports/exportation/exportation.js index fbf663249..9f39aa1a1 100755 --- a/print/templates/reports/exportation/exportation.js +++ b/print/templates/reports/exportation/exportation.js @@ -1,18 +1,20 @@ -const Component = require(`${appPath}/core/component`); -const reportHeader = new Component('report-header'); +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); const reportFooter = new Component('report-footer'); module.exports = { name: 'exportation', async serverPrefetch() { - this.invoice = await this.fetchInvoice(this.invoiceId); + this.invoice = await this.fetchInvoice(this.reference); if (!this.invoice) throw new Error('Something went wrong'); + + this.company = await this.findOneFromDef('company', [this.invoice.companyFk]); }, methods: { - fetchInvoice(invoiceId) { - return this.findOneFromDef('invoice', [invoiceId]); + fetchInvoice(reference) { + return this.findOneFromDef('invoice', [reference]); } }, computed: { @@ -23,13 +25,14 @@ module.exports = { } }, components: { - 'report-header': reportHeader.build(), + 'report-body': reportBody.build(), 'report-footer': reportFooter.build() }, props: { - invoiceId: { - type: [Number, String], - required: true + reference: { + type: Number, + required: true, + description: 'The invoice ref' } } }; diff --git a/print/templates/reports/exportation/locale/es.yml b/print/templates/reports/exportation/locale/es.yml index a689e245b..230263cb9 100644 --- a/print/templates/reports/exportation/locale/es.yml +++ b/print/templates/reports/exportation/locale/es.yml @@ -36,6 +36,7 @@ signer: name: Nombre del firmante ID: DNI del firmante position: Cargo del firmante +manager: Gerente months: - 'Enero' - 'Febrero' diff --git a/print/templates/reports/exportation/sql/company.sql b/print/templates/reports/exportation/sql/company.sql new file mode 100644 index 000000000..3ecef2071 --- /dev/null +++ b/print/templates/reports/exportation/sql/company.sql @@ -0,0 +1,9 @@ +SELECT + s.name, + s.city, + cl.name AS manager, + cl.fi AS managerFi +FROM company c + JOIN supplier s ON s.id = c.id + JOIN client cl ON cl.id = c.workerManagerFk +WHERE c.id = ? \ No newline at end of file diff --git a/print/templates/reports/exportation/sql/invoice.sql b/print/templates/reports/exportation/sql/invoice.sql index 8e92333dd..14e1568e2 100644 --- a/print/templates/reports/exportation/sql/invoice.sql +++ b/print/templates/reports/exportation/sql/invoice.sql @@ -1,6 +1,8 @@ SELECT io.id, io.ref, - io.issued + io.issued, + io.companyFk FROM invoiceOut io -WHERE io.id = ? \ No newline at end of file + LEFT JOIN ticket t ON t.refFk = io.ref +WHERE t.refFk = ? \ No newline at end of file diff --git a/print/templates/reports/extra-community/assets/css/import.js b/print/templates/reports/extra-community/assets/css/import.js index fd8796c2b..37a98dfdd 100644 --- a/print/templates/reports/extra-community/assets/css/import.js +++ b/print/templates/reports/extra-community/assets/css/import.js @@ -1,9 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/spacing.css`, - `${appPath}/common/css/misc.css`, - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/extra-community/extra-community.html b/print/templates/reports/extra-community/extra-community.html index 86baf858b..42afedc76 100644 --- a/print/templates/reports/extra-community/extra-community.html +++ b/print/templates/reports/extra-community/extra-community.html @@ -1,84 +1,67 @@ - - - - - - - - - -
- - -
-
-

{{$t('title')}}

-
-
+ +
+
+

{{$t('title')}}

+
+
+
+
+
+
{{$t('information')}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
{{$t('reference')}}{{travel.ref}}{{$t('blockedKg')}}{{travel.kg | number($i18n.locale)}}
{{$t('packages')}}{{travel.stickers}}{{$t('volumeKg')}}{{travel.volumeKg | number($i18n.locale)}}
{{$t('shipped')}}{{travel.shipped | date('%d-%m-%Y')}}{{$t('physicalKg')}}{{travel.loadedKg | number($i18n.locale)}}
+
+
+
- -
-
-
-
{{$t('information')}}
-
-
- - - - - - - - - - - - - - - - - - - - - -
{{$t('reference')}}{{travel.ref}}{{$t('blockedKg')}}{{travel.kg | number($i18n.locale)}}
{{$t('packages')}}{{travel.stickers}}{{$t('volumeKg')}}{{travel.volumeKg | number($i18n.locale)}}
{{$t('shipped')}}{{travel.shipped | date('%d-%m-%Y')}}{{$t('physicalKg')}}{{travel.loadedKg | number($i18n.locale)}}
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
{{$t('supplier')}}{{$t('reference')}}{{$t('volKg')}}{{$t('phyKg')}}{{$t('packages')}}
{{entry.supplierName}}{{entry.ref}}{{entry.volumeKg | number($i18n.locale)}}{{entry.loadedKg | number($i18n.locale)}}{{entry.stickers}}
{{$t('noRows')}}
-
-
- - - -
- - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + +
{{$t('supplier')}}{{$t('reference')}}{{$t('volKg')}}{{$t('phyKg')}}{{$t('packages')}}
{{entry.supplierName}}{{entry.ref}}{{entry.volumeKg | number($i18n.locale)}}{{entry.loadedKg | number($i18n.locale)}}{{entry.stickers}}
{{$t('noRows')}}
+ + + + diff --git a/print/templates/reports/extra-community/extra-community.js b/print/templates/reports/extra-community/extra-community.js index c9d2fb2f3..4dfe6e278 100755 --- a/print/templates/reports/extra-community/extra-community.js +++ b/print/templates/reports/extra-community/extra-community.js @@ -1,18 +1,23 @@ -const Component = require(`${appPath}/core/component`); -const reportHeader = new Component('report-header'); +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); const reportFooter = new Component('report-footer'); -const db = require(`${appPath}/core/database`); +const db = require(`vn-print/core/database`); module.exports = { name: 'extra-community', async serverPrefetch() { this.filters = this.$options.filters; const args = { - landedFrom: this.landedStart, landedTo: this.landedEnd, shippedFrom: this.shippedStart, - shippedTo: this.shippedEnd, - continent: this.continent + continent: this.continent, + id: this.id, + agencyModeFk: this.agencyModeFk, + warehouseInFk: this.warehouseInFk, + warehouseOutFk: this.warehouseOutFk, + totalEntries: this.totalEntries, + ref: this.ref, + cargoSupplierFk: this.cargoSupplierFk }; const travels = await this.fetchTravels(args); @@ -38,11 +43,6 @@ module.exports = { dated: function() { return this.filters.date(new Date(), '%d-%m-%Y'); }, - landedStart: function() { - if (!this.landedFrom) return; - - return this.filters.date(this.landedFrom, '%Y-%m-%d'); - }, landedEnd: function() { if (!this.landedTo) return; @@ -52,11 +52,6 @@ module.exports = { if (!this.shippedFrom) return; return this.filters.date(this.shippedFrom, '%Y-%m-%d'); - }, - shippedEnd: function() { - if (!this.shippedTo) return; - - return this.filters.date(this.shippedTo, '%Y-%m-%d'); } }, methods: { @@ -65,20 +60,37 @@ module.exports = { switch (key) { case 'shippedFrom': return `t.shipped >= ${value}`; - case 'shippedTo': - return `t.shipped <= ${value}`; - case 'landedFrom': - return `t.landed >= ${value}`; case 'landedTo': return `t.landed <= ${value}`; case 'continent': return `cnt.code = ${value}`; + case 'ref': + return {'t.ref': {like: `%${value}%`}}; + case 'id': + return `t.id = ${value}`; + case 'agencyModeFk': + return `am.id = ${value}`; + case 'warehouseOutFk': + return `wo.id = ${value}`; + case 'warehouseInFk': + return `w.id = ${value}`; + case 'cargoSupplierFk': + return `s.id = ${value}`; } }); let query = this.getSqlFromDef('travels'); query = db.merge(query, where); query = db.merge(query, 'GROUP BY t.id'); + query = db.merge(query, ` + ORDER BY + shipped ASC, + landed ASC, + travelFk, + loadPriority, + agencyModeFk, + evaNotes + `); return this.rawSql(query); }, @@ -88,14 +100,19 @@ module.exports = { } }, components: { - 'report-header': reportHeader.build(), + 'report-body': reportBody.build(), 'report-footer': reportFooter.build() }, props: [ - 'landedFrom', 'landedTo', 'shippedFrom', - 'shippedTo', - 'continent' + 'continent', + 'reference', + 'id', + 'agencyModeFk', + 'warehouseOutFk', + 'warehouseInFk', + 'totalEntries', + 'cargoSupplierFk' ] }; diff --git a/print/templates/reports/extra-community/sql/entries.sql b/print/templates/reports/extra-community/sql/entries.sql index ad2529a1c..a90bf8b0b 100644 --- a/print/templates/reports/extra-community/sql/entries.sql +++ b/print/templates/reports/extra-community/sql/entries.sql @@ -1,17 +1,18 @@ SELECT - e.id, - e.travelFk, - e.ref, - s.name AS supplierName, - SUM(b.stickers) AS stickers, - CAST(SUM(i.density * b.stickers * IF(pkg.volume, pkg.volume, pkg.width * pkg.depth * pkg.height) / 1000000 ) as DECIMAL(10,0)) as loadedKg, - CAST(SUM(167.5 * b.stickers * IF(pkg.volume, pkg.volume, pkg.width * pkg.depth * pkg.height) / 1000000 ) as DECIMAL(10,0)) as volumeKg -FROM travel t - JOIN entry e ON e.travelFk = t.id - JOIN buy b ON b.entryFk = e.id - JOIN packaging pkg ON pkg.id = b.packageFk - JOIN item i ON i.id = b.itemFk - JOIN itemType it ON it.id = i.typeFk - JOIN supplier s ON s.id = e.supplierFk - WHERE t.id IN(?) -GROUP BY e.id \ No newline at end of file + e.id, + e.travelFk, + e.ref, + s.name AS supplierName, + SUM(b.stickers) AS stickers, + CAST(SUM(b.weight * b.stickers) as DECIMAL(10,0)) as loadedKg, + CAST(SUM(vc.aerealVolumetricDensity * b.stickers * IF(pkg.volume, pkg.volume, pkg.width * pkg.depth * pkg.height) / 1000000) as DECIMAL(10,0)) as volumeKg + FROM travel t + JOIN entry e ON e.travelFk = t.id + JOIN buy b ON b.entryFk = e.id + JOIN packaging pkg ON pkg.id = b.packageFk + JOIN item i ON i.id = b.itemFk + JOIN itemType it ON it.id = i.typeFk + JOIN supplier s ON s.id = e.supplierFk + JOIN vn.volumeConfig vc + WHERE t.id IN(?) + GROUP BY e.id \ No newline at end of file diff --git a/print/templates/reports/extra-community/sql/travels.sql b/print/templates/reports/extra-community/sql/travels.sql index 022767608..b0987c330 100644 --- a/print/templates/reports/extra-community/sql/travels.sql +++ b/print/templates/reports/extra-community/sql/travels.sql @@ -4,10 +4,12 @@ SELECT t.shipped, t.landed, t.kg, + am.id AS agencyModeFk, SUM(b.stickers) AS stickers, - CAST(SUM(i.density * b.stickers * IF(pkg.volume, pkg.volume, pkg.width * pkg.depth * pkg.height) / 1000000 ) as DECIMAL(10,0)) as loadedKg, - CAST(SUM(167.5 * b.stickers * IF(pkg.volume, pkg.volume, pkg.width * pkg.depth * pkg.height) / 1000000 ) as DECIMAL(10,0)) as volumeKg + CAST(SUM(b.weight * b.stickers) as DECIMAL(10,0)) as loadedKg, + CAST(SUM(vc.aerealVolumetricDensity * b.stickers * IF(pkg.volume, pkg.volume, pkg.width * pkg.depth * pkg.height) / 1000000) as DECIMAL(10,0)) as volumeKg FROM travel t + JOIN volumeConfig vc LEFT JOIN supplier s ON s.id = t.cargoSupplierFk LEFT JOIN entry e ON e.travelFk = t.id LEFT JOIN buy b ON b.entryFk = e.id @@ -18,4 +20,4 @@ FROM travel t JOIN warehouse wo ON wo.id = t.warehouseOutFk JOIN country c ON c.id = wo.countryFk LEFT JOIN continent cnt ON cnt.id = c.continentFk - JOIN agencyMode am ON am.id = t.agencyFk \ No newline at end of file + JOIN agencyMode am ON am.id = t.agencyModeFk \ No newline at end of file diff --git a/print/templates/reports/incoterms-authorization/assets/css/import.js b/print/templates/reports/incoterms-authorization/assets/css/import.js new file mode 100644 index 000000000..37a98dfdd --- /dev/null +++ b/print/templates/reports/incoterms-authorization/assets/css/import.js @@ -0,0 +1,12 @@ +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); + +module.exports = new Stylesheet([ + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, + `${__dirname}/style.css`]) + .mergeStyles(); diff --git a/print/templates/reports/cmr-authorization/assets/css/style.css b/print/templates/reports/incoterms-authorization/assets/css/style.css similarity index 69% rename from print/templates/reports/cmr-authorization/assets/css/style.css rename to print/templates/reports/incoterms-authorization/assets/css/style.css index adfe4b4c9..34545c951 100644 --- a/print/templates/reports/cmr-authorization/assets/css/style.css +++ b/print/templates/reports/incoterms-authorization/assets/css/style.css @@ -2,13 +2,8 @@ font-size: 1.2em } -.signature .dummy-signature { - width: 400px; - height: 190px; - display: block; - content: ''; - overflow: hidden; - clear:both +.signature { + margin-top: 100px } .signature img { diff --git a/print/templates/reports/cmr-authorization/assets/images/signature.png b/print/templates/reports/incoterms-authorization/assets/images/signature.png similarity index 100% rename from print/templates/reports/cmr-authorization/assets/images/signature.png rename to print/templates/reports/incoterms-authorization/assets/images/signature.png diff --git a/print/templates/reports/incoterms-authorization/incoterms-authorization.html b/print/templates/reports/incoterms-authorization/incoterms-authorization.html new file mode 100644 index 000000000..99a5e9caa --- /dev/null +++ b/print/templates/reports/incoterms-authorization/incoterms-authorization.html @@ -0,0 +1,61 @@ + +
+
+

+

+

+ +
+
+

{{client.name}}

+
+ + + + + + + + + + + + + + + +
{{$t('signer.representative')}}:
{{$t('signer.representativeRole')}}:
{{$t('signer.signed')}}:
+
+
+

{{ company.name }}

+ +
{{company.manager}}
+
{{$t('manager')}}
+
+
+
+
+ +
diff --git a/print/templates/reports/incoterms-authorization/incoterms-authorization.js b/print/templates/reports/incoterms-authorization/incoterms-authorization.js new file mode 100755 index 000000000..bfe675985 --- /dev/null +++ b/print/templates/reports/incoterms-authorization/incoterms-authorization.js @@ -0,0 +1,33 @@ +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); +const reportFooter = new Component('report-footer'); + +module.exports = { + name: 'incoterms-authorization', + async serverPrefetch() { + this.client = await this.findOneFromDef('client', [this.id]); + this.company = await this.findOneFromDef('company', [this.companyId]); + if (!this.client) + throw new Error('Something went wrong'); + }, + computed: { + issued: function() { + return new Date(); + } + }, + components: { + 'report-body': reportBody.build(), + 'report-footer': reportFooter.build() + }, + props: { + id: { + type: Number, + required: true, + description: 'The client id' + }, + companyId: { + type: Number, + required: true + } + } +}; diff --git a/print/templates/reports/cmr-authorization/locale/es.yml b/print/templates/reports/incoterms-authorization/locale/es.yml similarity index 58% rename from print/templates/reports/cmr-authorization/locale/es.yml rename to print/templates/reports/incoterms-authorization/locale/es.yml index 37e40202d..6936ebda9 100644 --- a/print/templates/reports/cmr-authorization/locale/es.yml +++ b/print/templates/reports/incoterms-authorization/locale/es.yml @@ -1,32 +1,32 @@ -reportName: autorizacion-cmr +reportName: autorizacion-incoterms description: '{socialName} una sociedad debidamente constituida con responsabilidad limitada y registrada conforme al derecho de sociedades de {country} y aquí representada por ___________________. {socialName}, con domicilio en {address}, CIF {fiscalID}. En adelante denominada {name}.' issued: 'En {0}, a {1} de {2} de {3}' -client: 'Client {0}' +client: 'Cliente {0}' declaration: '{socialName} declara por la presente que:' declarations: - - 'Todas las compras realizadas por {socialName} con Verdnatura Levante, S.L. se -entregan, Ex Works (Incoterms), en el almacén de Verdnatura Levante, S.L. situado en -{destinationWarehouse}.' - - '{socialName} reconoce que es importante para Verdnatura Levante, S.L. tener + - 'Todas las compras realizadas por {socialName} con {companyName} se +entregan, Ex Works (Incoterms), en el almacén de {companyName} situado en +{companyCity}.' + - '{socialName} reconoce que es importante para {companyName} tener comprobante de la entrega intracomunitaria de la mercancía a {destinationCountry} para poder facturar con 0% de IVA.' - 'Por tanto, al firmar este acuerdo, {socialName} declara que todos los bienes que -se compren a Verdnatura Levante, S.L. serán entregados a {destinationCountry}.' - - 'Además, {socialName} deberá, a primera solicitud de Verdnatura Levante, S.L., -proporcionar una prueba de que todos los productos comprados a Verdnatura Levante, S.L. han +se compren a {companyName} serán entregados a {destinationCountry}.' + - 'Además, {socialName} deberá, a primera solicitud de {companyName}, +proporcionar una prueba de que todos los productos comprados a {companyName} han sido entregados en {destinationCountry}.' - - 'Además de lo anterior, Verdnatura Levante, S.L. proporcionará a {socialName} + - 'Además de lo anterior, {companyName} proporcionará a {socialName} un resumen mensual en el que se incluyen todas las facturas (y las entregas correspondientes). -{socialName} firmará y devolverá el resumen mensual a Verdnatura Levante, +{socialName} firmará y devolverá el resumen mensual a {companyName}, S.L. dentro de los 5 días posteriores a la recepción del resumen.' -signature: Verdnatura Levante, S.L. signer: representative: Representante representativeRole: Cargo del representante signed: Fecha de firma +manager: Gerente months: - 'Enero' - 'Febrero' diff --git a/print/templates/reports/incoterms-authorization/locale/fr.yml b/print/templates/reports/incoterms-authorization/locale/fr.yml new file mode 100644 index 000000000..f1aeb0eff --- /dev/null +++ b/print/templates/reports/incoterms-authorization/locale/fr.yml @@ -0,0 +1,38 @@ +reportName: autorizacion-incoterms +description: '{socialName} une société dûment constituée à responsabilité limitée +et enregistrée en vertu du droit des sociétés de {country} et représentée aux présentes par +___________________. {socialName}, ayant son siège social {address}, +CIF {fiscalID}. Ci-après dénommé {name}.' +issued: 'A {0}, le {1} {2} {3}' +client: 'Client {0}' +declaration: '{socialName} déclare par la présente que:' +declarations: + - "Tous les achats réalisés par {socialName} avec {companyName} +sont livrés, Ex Works (Incoterms), sur l'entrepôt de {companyName} situé à {companyCity}." + - "{socialName} reconnaît qu'il est important pou {companyName} d'avoir +la preuve de la livraison intracommunautaire des biens à {destinationCountry} afin de pouvoir facturer à 0% de TVA." + - 'Par conséquent, en signant cet accord, {socialName} déclare que tous les biens achetés à {companyName} seront livrés à {destinationCountry}.' + - 'En outre, {socialName} doit, à la première demande de {companyName}, +fournir la preuve que tous les biens achetés à {companyName} ont été livrés à {destinationCountry}.' + - 'En plus de ce qui précède, {companyName} fournira à {socialName} +un résumé mensuel comprenant toutes les factures (et les livraisons correspondantes). +{socialName} signera et retournera le résumé mensuel à {companyName}, +dans les 5 jours suivant la réception du résumé.' +signer: + representative: Représentant + representativeRole: Position du représentant + signed: Date de la signature +manager: Gérente +months: + - 'Janvier' + - 'Fevrier' + - 'Mars' + - 'Avril' + - 'Mai' + - 'Juin' + - 'Juillet' + - 'Août' + - 'Septembre' + - 'Octobre' + - 'Novembre' + - 'Decembre' \ No newline at end of file diff --git a/print/templates/reports/incoterms-authorization/locale/pt.yml b/print/templates/reports/incoterms-authorization/locale/pt.yml new file mode 100644 index 000000000..2d33e6a1a --- /dev/null +++ b/print/templates/reports/incoterms-authorization/locale/pt.yml @@ -0,0 +1,42 @@ +reportName: autorizacion-incoterms +description: '{socialName} uma sociedade devidamente constituída com responsabilidade limitada e registada +conforme ao direito de sociedades da {country} e aqui representada por +___________________. {socialName}, com domicílio em {address}, +CIF {fiscalID}. Em adiante denominada {name}.' +issued: 'Em {0}, em {1} de {2} de {3}' +client: 'Cliente {0}' +declaration: '{socialName} declara através da presente que:' +declarations: + - 'Todas as compras realizadas por {socialName} a {companyName} se entregam, + Ex Works (Incoterms), no armazém da {companyName} situado em +{companyCity}.' + - '{socialName} reconhece ser importante para {companyName} + ter o comprovante da entrega intracomunitária da mercadoria a {destinationCountry} + para poder faturar com 0% de IVA.' + - 'Portanto, ao assinar este acordo, {socialName} declara que todos os bens + que se comprem na {companyName} serão entregues na {destinationCountry}.' + - 'Além disto, {socialName} deverá, na primeira solicitude da {companyName}, + proporcionar uma prova de que todos os produtos comprados na {companyName} + foram entregues na {destinationCountry}.' + - 'Além do anterio, {companyName} proporcionará a {socialName} +um resumo mensal onde se incluem todas as faturas (e as entregas correspondentes). +{socialName} assinará e devolverá o resumo mensal à {companyName}, +dentro dos 5 dias posteriores à receção do resumo.' +signer: + representative: Representante + representativeRole: Cargo de representante + signed: Data da assinatura +manager: Gerente +months: + - 'Janeiro' + - 'Fevereiro' + - 'Marchar' + - 'abril' + - 'Poderia' + - 'Junho' + - 'Julho' + - 'Agosto' + - 'Setembro' + - 'Outubro' + - 'Novembro' + - 'Dezembro' \ No newline at end of file diff --git a/print/templates/reports/cmr-authorization/sql/client.sql b/print/templates/reports/incoterms-authorization/sql/client.sql similarity index 100% rename from print/templates/reports/cmr-authorization/sql/client.sql rename to print/templates/reports/incoterms-authorization/sql/client.sql diff --git a/print/templates/reports/incoterms-authorization/sql/company.sql b/print/templates/reports/incoterms-authorization/sql/company.sql new file mode 100644 index 000000000..39c3290d1 --- /dev/null +++ b/print/templates/reports/incoterms-authorization/sql/company.sql @@ -0,0 +1,8 @@ +SELECT + s.name, + s.city, + cl.name AS manager +FROM company c + JOIN supplier s ON s.id = c.id + JOIN client cl ON cl.id = c.workerManagerFk +WHERE c.id = ? \ No newline at end of file diff --git a/print/templates/reports/invoice-incoterms/assets/css/import.js b/print/templates/reports/invoice-incoterms/assets/css/import.js index fd8796c2b..37a98dfdd 100644 --- a/print/templates/reports/invoice-incoterms/assets/css/import.js +++ b/print/templates/reports/invoice-incoterms/assets/css/import.js @@ -1,9 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/spacing.css`, - `${appPath}/common/css/misc.css`, - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/invoice-incoterms/invoice-incoterms.html b/print/templates/reports/invoice-incoterms/invoice-incoterms.html index f30667042..20c9ad440 100644 --- a/print/templates/reports/invoice-incoterms/invoice-incoterms.html +++ b/print/templates/reports/invoice-incoterms/invoice-incoterms.html @@ -1,123 +1,94 @@ - - - - - - - - - -
- - - - -
-
-
-
-
-

{{$t('title')}}

- - - - - - - - - - - - - - - -
{{$t('clientId')}}{{client.id}}
{{$t('invoice')}}{{invoice.ref}}
{{$t('date')}}{{invoice.issued | date('%d-%m-%Y')}}
-
-
-
-
-
{{$t('invoiceData')}}
-
-

{{client.socialName}}

-
- {{client.postalAddress}} -
-
- {{client.postcodeCity}} -
-
- {{$t('fiscalId')}}: {{client.fi}} -
-
-
-
-
- -
-
{{$t('incotermsTitle')}}
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- {{$t('incoterms')}} - {{incoterms.incotermsFk}} - {{incoterms.incotermsName}}
- {{$t('productDescription')}} - {{incoterms.intrastat}}
{{$t('expeditionDescription')}}
{{$t('packageNumber')}}{{incoterms.packages}}
{{$t('packageGrossWeight')}}{{incoterms.weight}} KG
{{$t('packageCubing')}}{{incoterms.volume}} m3
- -

-

- {{$t('customsInfo')}} - {{incoterms.customsAgentName}} -
-
- ( - {{incoterms.customsAgentNif}} - {{incoterms.customsAgentStreet}} - - ☎ {{incoterms.customsAgentPhone}} - - - ✉ {{incoterms.customsAgentEmail}} - - ) -
-

-

- {{$t('productDisclaimer')}} -

-
-
-
+ + +
+
+
+
+
+

{{$t('title')}}

+ + + + + + + + + + + + + + + +
{{$t('clientId')}}{{client.id}}
{{$t('invoice')}}{{invoice.ref}}
{{$t('date')}}{{invoice.issued | date('%d-%m-%Y')}}
+
+
+
+
+
{{$t('invoiceData')}}
+
+

{{client.socialName}}

+
{{client.postalAddress}}
+
{{client.postcodeCity}}
+
{{$t('fiscalId')}}: {{client.fi}}
-
- - \ No newline at end of file + + + + +
+
{{$t('incotermsTitle')}}
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('incoterms')}}{{incoterms.incotermsFk}} - {{incoterms.incotermsName}}
{{$t('productDescription')}}{{incoterms.intrastat}}
{{$t('expeditionDescription')}}
{{$t('packageNumber')}}{{incoterms.packages}}
{{$t('packageGrossWeight')}}{{incoterms.weight}} KG
{{$t('packageCubing')}}{{incoterms.volume}} m3
+ +
+ {{$t('customsInfo')}} + {{incoterms.customsAgentName}} +
+
+ ( + {{incoterms.customsAgentNif}} + {{incoterms.customsAgentStreet}} + ☎ {{incoterms.customsAgentPhone}} + ✉ {{incoterms.customsAgentEmail}} + ) +
+

+ {{$t('productDisclaimer')}} +

+
+
+ + + + diff --git a/print/templates/reports/invoice-incoterms/invoice-incoterms.js b/print/templates/reports/invoice-incoterms/invoice-incoterms.js index 99e23e15f..3afc50376 100755 --- a/print/templates/reports/invoice-incoterms/invoice-incoterms.js +++ b/print/templates/reports/invoice-incoterms/invoice-incoterms.js @@ -1,13 +1,13 @@ -const Component = require(`${appPath}/core/component`); +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); const reportHeader = new Component('report-header'); -const reportFooter = new Component('report-footer'); module.exports = { name: 'invoice-incoterms', async serverPrefetch() { - this.invoice = await this.fetchInvoice(this.invoiceId); - this.client = await this.fetchClient(this.invoiceId); - this.incoterms = await this.fetchIncoterms(this.invoiceId); + this.invoice = await this.fetchInvoice(this.reference); + this.client = await this.fetchClient(this.reference); + this.incoterms = await this.fetchIncoterms(this.reference); if (!this.invoice) throw new Error('Something went wrong'); @@ -16,24 +16,25 @@ module.exports = { }, methods: { - fetchInvoice(invoiceId) { - return this.findOneFromDef('invoice', [invoiceId]); + fetchInvoice(reference) { + return this.findOneFromDef('invoice', [reference]); }, - fetchClient(invoiceId) { - return this.findOneFromDef('client', [invoiceId]); + fetchClient(reference) { + return this.findOneFromDef('client', [reference]); }, - fetchIncoterms(invoiceId) { - return this.findOneFromDef('incoterms', [invoiceId, invoiceId, invoiceId]); + fetchIncoterms(reference) { + return this.findOneFromDef('incoterms', [reference, reference, reference]); } }, components: { - 'report-header': reportHeader.build(), - 'report-footer': reportFooter.build() + 'report-body': reportBody.build(), + 'report-header': reportHeader.build() }, props: { - invoiceId: { - type: [Number, String], - required: true + reference: { + type: Number, + required: true, + description: 'The invoice ref' } } }; diff --git a/print/templates/reports/invoice-incoterms/sql/client.sql b/print/templates/reports/invoice-incoterms/sql/client.sql index dd6035222..3e66c15c9 100644 --- a/print/templates/reports/invoice-incoterms/sql/client.sql +++ b/print/templates/reports/invoice-incoterms/sql/client.sql @@ -9,4 +9,5 @@ FROM vn.invoiceOut io JOIN vn.country cty ON cty.id = c.countryFk LEFT JOIN vn.invoiceOutSerial ios ON ios.code = io.serial AND ios.taxAreaFk = 'CEE' -WHERE io.id = ? \ No newline at end of file + LEFT JOIN ticket t ON t.refFk = io.ref +WHERE t.refFk = ? \ No newline at end of file diff --git a/print/templates/reports/invoice-incoterms/sql/incoterms.sql b/print/templates/reports/invoice-incoterms/sql/incoterms.sql index 5d894a4b2..6bb895129 100644 --- a/print/templates/reports/invoice-incoterms/sql/incoterms.sql +++ b/print/templates/reports/invoice-incoterms/sql/incoterms.sql @@ -51,7 +51,7 @@ SELECT io.issued, FROM vn.invoiceOut io JOIN vn.ticket t ON t.refFk = io.ref JOIN vn.saleVolume sv ON sv.ticketFk = t.id - WHERE io.id = ? + WHERE t.refFk = ? ) sub2 ON TRUE JOIN vn.itemTaxCountry itc ON itc.countryFk = su.countryFk AND itc.itemFk = s.itemFk JOIN vn.taxClass tc ON tc.id = itc.taxClassFk @@ -66,6 +66,7 @@ SELECT io.issued, JOIN vn.sale s ON t.id = s.ticketFk JOIN vn.item i ON i.id = s.itemFk JOIN vn.intrastat ir ON ir.id = i.intrastatFk - WHERE io.id = ? + WHERE t.refFk = ? )sub3 ON TRUE - WHERE io.id = ? + WHERE t.refFk = ? + diff --git a/print/templates/reports/invoice-incoterms/sql/invoice.sql b/print/templates/reports/invoice-incoterms/sql/invoice.sql index b9a929183..571ea2af3 100644 --- a/print/templates/reports/invoice-incoterms/sql/invoice.sql +++ b/print/templates/reports/invoice-incoterms/sql/invoice.sql @@ -14,4 +14,5 @@ FROM invoiceOut io JOIN company cny ON cny.id = io.companyFk JOIN supplierAccount sa ON sa.id = cny.supplierAccountFk LEFT JOIN invoiceOutSerial ios ON ios.code = io.serial -WHERE io.id = ? \ No newline at end of file + LEFT JOIN ticket t ON t.refFk = io.ref +WHERE t.refFk = ? \ No newline at end of file diff --git a/print/templates/reports/invoice/assets/css/import.js b/print/templates/reports/invoice/assets/css/import.js index fd8796c2b..37a98dfdd 100644 --- a/print/templates/reports/invoice/assets/css/import.js +++ b/print/templates/reports/invoice/assets/css/import.js @@ -1,9 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/spacing.css`, - `${appPath}/common/css/misc.css`, - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/invoice/assets/css/style.css b/print/templates/reports/invoice/assets/css/style.css index cd605db9b..9fda2a613 100644 --- a/print/templates/reports/invoice/assets/css/style.css +++ b/print/templates/reports/invoice/assets/css/style.css @@ -5,7 +5,7 @@ h2 { .table-title { margin-bottom: 15px; - font-size: 0.8rem + font-size: .8rem } .table-title h2 { @@ -16,9 +16,12 @@ h2 { font-size: 22px } + #nickname h2 { - max-width: 400px; - word-wrap: break-word + max-width: 400px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; } #phytosanitary { diff --git a/print/templates/reports/invoice/invoice.html b/print/templates/reports/invoice/invoice.html index 8b13f2a15..d23bba1e9 100644 --- a/print/templates/reports/invoice/invoice.html +++ b/print/templates/reports/invoice/invoice.html @@ -1,319 +1,266 @@ - - - - - - - - - -
+ + + +
+
+
+
+
+

{{$t('title')}}

+ + + + + + + + + + + + + + + +
{{$t('clientId')}}{{client.id}}
{{$t('invoice')}}{{invoice.ref}}
{{$t('date')}}{{invoice.issued | date('%d-%m-%Y')}}
+
+
+
+
+
{{$t('invoiceData')}}
+
+

{{client.socialName}}

+
{{client.postalAddress}}
+
{{client.postcodeCity}}
+
{{$t('fiscalId')}}: {{client.fi}}
+
+
+
+
+
+

{{$t('rectifiedInvoices')}}

+ + + + + + + + + + + + + + + + + +
{{$t('invoice')}}{{$t('issued')}}{{$t('amount')}}{{$t('description')}}
{{row.ref}}{{row.issued | date}}{{row.amount | currency('EUR', $i18n.locale)}}{{row.description}}
+
+
+
+
+

{{$t('deliveryNote')}}

+
+
+
+ {{ticket.id}} +
+
+
+

{{$t('shipped')}}

+
+
+
+ {{ticket.shipped | date}} +
+
+ +

{{ticket.nickname}}

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('reference')}}{{$t('quantity')}}{{$t('concept')}}{{$t('price')}}{{$t('discount')}}{{$t('vat')}}{{$t('amount')}}
{{sale.itemFk | zerofill('000000')}}{{sale.quantity}}{{sale.concept}}{{sale.price | currency('EUR', $i18n.locale)}}{{(sale.discount / 100) | percentage}}{{sale.vatType}}{{saleImport(sale) | currency('EUR', $i18n.locale)}}
+ {{sale.tag5}} {{sale.value5}} + {{sale.tag6}} {{sale.value6}} + {{sale.tag7}} {{sale.value7}} +
+ {{$t('subtotal')}} + {{ticketSubtotal(ticket) | currency('EUR', $i18n.locale)}}
+
- - - +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('taxBreakdown')}}
{{$t('type')}}{{$t('taxBase')}}{{$t('tax')}}{{$t('fee')}}
{{tax.name}}{{tax.base | currency('EUR', $i18n.locale)}}{{tax.vatPercent | percentage}}{{tax.vat | currency('EUR', $i18n.locale)}}
{{$t('subtotal')}} + {{sumTotal(taxes, 'base') | currency('EUR', $i18n.locale)}} + {{sumTotal(taxes, 'vat') | currency('EUR', $i18n.locale)}}
{{$t('total')}}{{taxTotal | currency('EUR', $i18n.locale)}}
- - - - -
-
-
-
-
-

{{$t('title')}}

- - - - - - - - - - - - - - - -
{{$t('clientId')}}{{client.id}}
{{$t('invoice')}}{{invoice.ref}}
{{$t('date')}}{{invoice.issued | date('%d-%m-%Y')}}
-
-
-
-
-
{{$t('invoiceData')}}
-
-

{{client.socialName}}

-
- {{client.postalAddress}} -
-
- {{client.postcodeCity}} -
-
- {{$t('fiscalId')}}: {{client.fi}} -
-
-
+
+
{{$t('notes')}}
+
+ {{invoice.footNotes}} +
+
+
+
+
+
+
+
+
+
+
{{$t('plantPassport')}}
- - -
-

{{$t('rectifiedInvoices')}}

- - - - - - - - - - - - - - - - - -
{{$t('invoice')}}{{$t('issued')}}{{$t('amount')}}{{$t('description')}}
{{row.ref}}{{row.issued | date}}{{row.amount | currency('EUR', $i18n.locale)}}{{row.description}}
+
+
+
+ A + {{botanical}}
- - - -
-
-
-

{{$t('deliveryNote')}} -

-
-
- {{ticket.id}} -
-
-
-

{{$t('shipped')}}

-
-
-
- {{ticket.shipped | date}} -
-
- -

{{ticket.nickname}}

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{$t('reference')}}{{$t('quantity')}}{{$t('concept')}}{{$t('price')}}{{$t('discount')}}{{$t('vat')}}{{$t('amount')}}
{{sale.itemFk | zerofill('000000')}}{{sale.quantity}}{{sale.concept}}{{sale.price | currency('EUR', $i18n.locale)}}{{(sale.discount / 100) | percentage}}{{sale.vatType}}{{saleImport(sale) | currency('EUR', $i18n.locale)}}
- - {{sale.tag5}} {{sale.value5}} - - - {{sale.tag6}} {{sale.value6}} - - - {{sale.tag7}} {{sale.value7}} - -
- {{$t('subtotal')}} - {{ticketSubtotal(ticket) | currency('EUR', $i18n.locale)}}
+
+ B + ES17462130
- - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{$t('taxBreakdown')}}
{{$t('type')}} - {{$t('taxBase')}} - {{$t('tax')}}{{$t('fee')}}
{{tax.name}} - {{tax.base | currency('EUR', $i18n.locale)}} - {{tax.vatPercent | percentage}}{{tax.vat | currency('EUR', $i18n.locale)}}
{{$t('subtotal')}} - {{sumTotal(taxes, 'base') | currency('EUR', $i18n.locale)}} - {{sumTotal(taxes, 'vat') | currency('EUR', $i18n.locale)}}
{{$t('total')}}{{taxTotal | currency('EUR', $i18n.locale)}}
- -
-
{{$t('notes')}}
-
- {{invoice.footNotes}} -
-
-
- - - -
-
-
-
-
-
- -
-
- {{$t('plantPassport')}}
-
-
-
-
-
- A - {{botanical}} -
-
- B - ES17462130 -
-
- C - {{ticketsId}} -
-
- D - ES -
-
-
-
-
- +
+ C + {{ticketsId}}
- - - -
-

{{$t('intrastat')}}

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{$t('code')}}{{$t('description')}}{{$t('stems')}}{{$t('netKg')}}{{$t('amount')}}
{{row.code}}{{row.description}}{{row.stems | number($i18n.locale)}}{{row.netKg | number($i18n.locale)}}{{row.subtotal | currency('EUR', $i18n.locale)}}
- {{sumTotal(intrastat, 'stems') | number($i18n.locale)}} - - {{sumTotal(intrastat, 'netKg') | number($i18n.locale)}} - - {{sumTotal(intrastat, 'subtotal') | currency('EUR', $i18n.locale)}} -
+
+ D + ES
- - - -
-
-
-
{{$t('observations')}}
-
-
{{$t('wireTransfer')}}
-
{{$t('accountNumber', [invoice.iban])}}
-
-
-
-
- -
- - - -
- - \ No newline at end of file + + + +
+

{{$t('intrastat')}}

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('code')}}{{$t('description')}}{{$t('stems')}}{{$t('netKg')}}{{$t('amount')}}
{{row.code}}{{row.description || $t('services') }}{{row.stems | number($i18n.locale)}}{{row.netKg | number($i18n.locale)}}{{row.subtotal | currency('EUR', $i18n.locale)}}
+ {{sumTotal(intrastat, 'stems') | number($i18n.locale)}} + + {{sumTotal(intrastat, 'netKg') | number($i18n.locale)}} + + {{sumTotal(intrastat, 'subtotal') | currency('EUR', $i18n.locale)}} +
+
+
+
+
+
{{$t('observations')}}
+
+
{{$t('wireTransfer')}}
+
{{$t('accountNumber', [invoice.iban])}}
+
+
+
+
+ + + + diff --git a/print/templates/reports/invoice/invoice.js b/print/templates/reports/invoice/invoice.js index bd85a812c..eebbde8ef 100755 --- a/print/templates/reports/invoice/invoice.js +++ b/print/templates/reports/invoice/invoice.js @@ -1,5 +1,6 @@ -const Component = require(`${appPath}/core/component`); -const Report = require(`${appPath}/core/report`); +const Component = require(`vn-print/core/component`); +const Report = require(`vn-print/core/report`); +const reportBody = new Component('report-body'); const reportHeader = new Component('report-header'); const reportFooter = new Component('report-footer'); const invoiceIncoterms = new Report('invoice-incoterms'); @@ -7,15 +8,15 @@ const invoiceIncoterms = new Report('invoice-incoterms'); module.exports = { name: 'invoice', async serverPrefetch() { - this.invoice = await this.fetchInvoice(this.invoiceId); - this.client = await this.fetchClient(this.invoiceId); - this.taxes = await this.fetchTaxes(this.invoiceId); - this.intrastat = await this.fetchIntrastat(this.invoiceId); - this.rectified = await this.fetchRectified(this.invoiceId); - this.hasIncoterms = await this.fetchHasIncoterms(this.invoiceId); + this.invoice = await this.fetchInvoice(this.reference); + this.client = await this.fetchClient(this.reference); + this.taxes = await this.fetchTaxes(this.reference); + this.intrastat = await this.fetchIntrastat(this.reference); + this.rectified = await this.fetchRectified(this.reference); + this.hasIncoterms = await this.fetchHasIncoterms(this.reference); - const tickets = await this.fetchTickets(this.invoiceId); - const sales = await this.fetchSales(this.invoiceId); + const tickets = await this.fetchTickets(this.reference); + const sales = await this.fetchSales(this.reference); const map = new Map(); @@ -27,7 +28,8 @@ module.exports = { for (let sale of sales) { const ticket = map.get(sale.ticketFk); - ticket.sales.push(sale); + + if (ticket) ticket.sales.push(sale); } this.tickets = tickets; @@ -64,29 +66,29 @@ module.exports = { } }, methods: { - fetchInvoice(invoiceId) { - return this.findOneFromDef('invoice', [invoiceId]); + fetchInvoice(reference) { + return this.findOneFromDef('invoice', [reference]); }, - fetchClient(invoiceId) { - return this.findOneFromDef('client', [invoiceId]); + fetchClient(reference) { + return this.findOneFromDef('client', [reference]); }, - fetchTickets(invoiceId) { - return this.rawSqlFromDef('tickets', [invoiceId]); + fetchTickets(reference) { + return this.rawSqlFromDef('tickets', [reference]); }, - fetchSales(invoiceId) { - return this.rawSqlFromDef('sales', [invoiceId, invoiceId]); + fetchSales(reference) { + return this.rawSqlFromDef('sales', [reference, reference]); }, - fetchTaxes(invoiceId) { - return this.rawSqlFromDef(`taxes`, [invoiceId]); + fetchTaxes(reference) { + return this.rawSqlFromDef(`taxes`, [reference]); }, - fetchIntrastat(invoiceId) { - return this.rawSqlFromDef(`intrastat`, [invoiceId]); + fetchIntrastat(reference) { + return this.rawSqlFromDef(`intrastat`, [reference, reference, reference, reference]); }, - fetchRectified(invoiceId) { - return this.rawSqlFromDef(`rectified`, [invoiceId]); + fetchRectified(reference) { + return this.rawSqlFromDef(`rectified`, [reference]); }, - fetchHasIncoterms(invoiceId) { - return this.findValueFromDef(`hasIncoterms`, [invoiceId]); + fetchHasIncoterms(reference) { + return this.findValueFromDef(`hasIncoterms`, [reference]); }, saleImport(sale) { const price = sale.quantity * sale.price; @@ -109,14 +111,15 @@ module.exports = { } }, components: { + 'report-body': reportBody.build(), 'report-header': reportHeader.build(), 'report-footer': reportFooter.build(), 'invoice-incoterms': invoiceIncoterms.build() }, props: { - invoiceId: { - type: [Number, String], - required: true + reference: { + type: String, + description: 'The invoice ref' } } }; diff --git a/print/templates/reports/invoice/locale/en.yml b/print/templates/reports/invoice/locale/en.yml index 4e4688b55..336592f0c 100644 --- a/print/templates/reports/invoice/locale/en.yml +++ b/print/templates/reports/invoice/locale/en.yml @@ -33,4 +33,5 @@ issued: Issued plantPassport: Plant passport observations: Observations wireTransfer: "Pay method: Transferencia" -accountNumber: "Account number: {0}" \ No newline at end of file +accountNumber: "Account number: {0}" +services: Services \ No newline at end of file diff --git a/print/templates/reports/invoice/locale/es.yml b/print/templates/reports/invoice/locale/es.yml index d37e77943..32f6fc708 100644 --- a/print/templates/reports/invoice/locale/es.yml +++ b/print/templates/reports/invoice/locale/es.yml @@ -33,4 +33,5 @@ issued: F. emisión plantPassport: Pasaporte fitosanitario observations: Observaciones wireTransfer: "Forma de pago: Transferencia" -accountNumber: "Número de cuenta: {0}" \ No newline at end of file +accountNumber: "Número de cuenta: {0}" +services: Servicios \ No newline at end of file diff --git a/print/templates/reports/invoice/sql/client.sql b/print/templates/reports/invoice/sql/client.sql index dd6035222..4c35838f2 100644 --- a/print/templates/reports/invoice/sql/client.sql +++ b/print/templates/reports/invoice/sql/client.sql @@ -9,4 +9,5 @@ FROM vn.invoiceOut io JOIN vn.country cty ON cty.id = c.countryFk LEFT JOIN vn.invoiceOutSerial ios ON ios.code = io.serial AND ios.taxAreaFk = 'CEE' -WHERE io.id = ? \ No newline at end of file + LEFT JOIN vn.ticket t ON t.refFk = io.ref +WHERE t.refFk = ? \ No newline at end of file diff --git a/print/templates/reports/invoice/sql/hasIncoterms.sql b/print/templates/reports/invoice/sql/hasIncoterms.sql index 27f61f57c..40a6db384 100644 --- a/print/templates/reports/invoice/sql/hasIncoterms.sql +++ b/print/templates/reports/invoice/sql/hasIncoterms.sql @@ -3,6 +3,6 @@ SELECT IF(incotermsFk IS NULL, FALSE, TRUE) AS hasIncoterms JOIN invoiceOut io ON io.ref = t.refFk JOIN client c ON c.id = t.clientFk JOIN address a ON a.id = t.addressFk - WHERE io.id = ? + WHERE t.refFk = ? AND IF(c.hasToinvoiceByAddress = FALSE, c.defaultAddressFk, TRUE) LIMIT 1 \ No newline at end of file diff --git a/print/templates/reports/invoice/sql/intrastat.sql b/print/templates/reports/invoice/sql/intrastat.sql index e391056ec..5cc3ebd7f 100644 --- a/print/templates/reports/invoice/sql/intrastat.sql +++ b/print/templates/reports/invoice/sql/intrastat.sql @@ -1,14 +1,32 @@ -SELECT - ir.id AS code, - ir.description AS description, - CAST(SUM(IFNULL(i.stems,1) * s.quantity) AS DECIMAL(10,2)) as stems, - CAST(SUM( weight) AS DECIMAL(10,2)) as netKg, - CAST(SUM((s.quantity * s.price * (100 - s.discount) / 100 )) AS DECIMAL(10,2)) AS subtotal - FROM vn.sale s - LEFT JOIN vn.saleVolume sv ON sv.saleFk = s.id - LEFT JOIN vn.ticket t ON t.id = s.ticketFk - LEFT JOIN vn.invoiceOut io ON io.ref = t.refFk - LEFT JOIN vn.item i ON i.id = s.itemFk - JOIN vn.intrastat ir ON ir.id = i.intrastatFk - WHERE io.id = ? - GROUP BY i.intrastatFk; \ No newline at end of file +(SELECT + ir.id code, + ir.description description, + CAST(SUM(IFNULL(i.stems, 1) * s.quantity) AS DECIMAL(10,2)) stems, + CAST(SUM(CAST(IFNULL(i.stems, 1) * s.quantity * IF(ic.grams, ic.grams, i.density * ic.cm3delivery / 1000) / 1000 AS DECIMAL(10,2)) * + IF(sub.weight, sub.weight / vn.invoiceOut_getWeight(?), 1)) AS DECIMAL(10,2)) netKg, + CAST(SUM((s.quantity * s.price * (100 - s.discount) / 100 )) AS DECIMAL(10,2)) subtotal + FROM vn.ticket t + JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemCost ic ON ic.itemFk = i.id AND ic.warehouseFk = t.warehouseFk + JOIN vn.intrastat ir ON ir.id = i.intrastatFk + LEFT JOIN ( + SELECT t2.weight + FROM vn.ticket t2 + WHERE refFk = ? AND weight + LIMIT 1 + ) sub ON TRUE + WHERE t.refFk = ? + AND i.intrastatFk + GROUP BY i.intrastatFk + ORDER BY i.intrastatFk) +UNION ALL +(SELECT + NULL AS code, + NULL AS description, + 0 AS stems, + 0 AS netKg, + CAST(SUM((ts.quantity * ts.price)) AS DECIMAL(10,2)) AS subtotal + FROM vn.ticketService ts + JOIN vn.ticket t ON ts.ticketFk = t.id + WHERE t.refFk = ?); \ No newline at end of file diff --git a/print/templates/reports/invoice/sql/invoice.sql b/print/templates/reports/invoice/sql/invoice.sql index aacbb0016..0f12e4f53 100644 --- a/print/templates/reports/invoice/sql/invoice.sql +++ b/print/templates/reports/invoice/sql/invoice.sql @@ -13,4 +13,5 @@ FROM invoiceOut io JOIN company cny ON cny.id = io.companyFk JOIN supplierAccount sa ON sa.id = cny.supplierAccountFk LEFT JOIN invoiceOutSerial ios ON ios.code = io.serial -WHERE io.id = ? \ No newline at end of file + LEFT JOIN ticket t ON t.refFk = io.ref +WHERE t.refFk = ? \ No newline at end of file diff --git a/print/templates/reports/invoice/sql/rectified.sql b/print/templates/reports/invoice/sql/rectified.sql index 1255b973c..ea814a05a 100644 --- a/print/templates/reports/invoice/sql/rectified.sql +++ b/print/templates/reports/invoice/sql/rectified.sql @@ -6,4 +6,5 @@ SELECT FROM vn.invoiceCorrection ic JOIN vn.invoiceOut io ON io.id = ic.correctedFk JOIN vn.invoiceCorrectionType ict ON ict.id = ic.invoiceCorrectionTypeFk -where ic.correctingFk = ? \ No newline at end of file + LEFT JOIN ticket t ON t.refFk = io.ref +WHERE t.refFk = ? \ No newline at end of file diff --git a/print/templates/reports/invoice/sql/sales.sql b/print/templates/reports/invoice/sql/sales.sql index cff8794db..f5721a594 100644 --- a/print/templates/reports/invoice/sql/sales.sql +++ b/print/templates/reports/invoice/sql/sales.sql @@ -37,7 +37,7 @@ SELECT JOIN vn.itemTaxCountry itc ON itc.countryFk = su.countryFk AND itc.itemFk = s.itemFk JOIN vn.taxClass tc ON tc.id = itc.taxClassFk - WHERE io.id = ? + WHERE t.refFk = ? UNION ALL SELECT io.ref, @@ -69,4 +69,4 @@ SELECT JOIN vn.company co ON co.id = io.companyFk JOIN vn.supplierAccount sa ON sa.id = co.supplierAccountFk JOIN vn.taxClass tc ON tc.id = ts.taxClassFk - WHERE io.id = ? \ No newline at end of file + WHERE t.refFk = ? \ No newline at end of file diff --git a/print/templates/reports/invoice/sql/taxes.sql b/print/templates/reports/invoice/sql/taxes.sql index 19b1cc00e..5c04d2c74 100644 --- a/print/templates/reports/invoice/sql/taxes.sql +++ b/print/templates/reports/invoice/sql/taxes.sql @@ -6,6 +6,6 @@ SELECT FROM invoiceOutTax iot JOIN pgc ON pgc.code = iot.pgcFk LEFT JOIN pgcEqu pe ON pe.equFk = pgc.code - JOIN invoiceOut io ON io.id = iot.invoiceOutFk - WHERE invoiceOutFk = ? + JOIN invoiceOut io ON io.id = iot.invoiceOutFk + WHERE io.ref = ? ORDER BY iot.id \ No newline at end of file diff --git a/print/templates/reports/invoice/sql/tickets.sql b/print/templates/reports/invoice/sql/tickets.sql index 7d135bd03..162f043e2 100644 --- a/print/templates/reports/invoice/sql/tickets.sql +++ b/print/templates/reports/invoice/sql/tickets.sql @@ -4,5 +4,5 @@ SELECT t.nickname FROM invoiceOut io JOIN ticket t ON t.refFk = io.ref -WHERE io.id = ? +WHERE t.refFk = ? ORDER BY t.shipped \ No newline at end of file diff --git a/print/templates/reports/invoiceIn/assets/css/import.js b/print/templates/reports/invoiceIn/assets/css/import.js new file mode 100644 index 000000000..37a98dfdd --- /dev/null +++ b/print/templates/reports/invoiceIn/assets/css/import.js @@ -0,0 +1,12 @@ +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); + +module.exports = new Stylesheet([ + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, + `${__dirname}/style.css`]) + .mergeStyles(); diff --git a/print/templates/reports/invoiceIn/assets/css/style.css b/print/templates/reports/invoiceIn/assets/css/style.css new file mode 100644 index 000000000..9fda2a613 --- /dev/null +++ b/print/templates/reports/invoiceIn/assets/css/style.css @@ -0,0 +1,42 @@ +h2 { + font-weight: 100; + color: #555 +} + +.table-title { + margin-bottom: 15px; + font-size: .8rem +} + +.table-title h2 { + margin: 0 15px 0 0 +} + +.ticket-info { + font-size: 22px +} + + +#nickname h2 { + max-width: 400px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +#phytosanitary { + padding-right: 10px +} + +#phytosanitary .flag img { + width: 100% +} + +#phytosanitary .flag .flag-text { + padding-left: 10px; + box-sizing: border-box; +} + +.phytosanitary-info { + margin-top: 10px +} \ No newline at end of file diff --git a/print/templates/reports/invoiceIn/assets/images/europe.png b/print/templates/reports/invoiceIn/assets/images/europe.png new file mode 100644 index 000000000..673be92ae Binary files /dev/null and b/print/templates/reports/invoiceIn/assets/images/europe.png differ diff --git a/print/templates/reports/invoiceIn/invoiceIn.html b/print/templates/reports/invoiceIn/invoiceIn.html new file mode 100644 index 000000000..69ce3d0f2 --- /dev/null +++ b/print/templates/reports/invoiceIn/invoiceIn.html @@ -0,0 +1,177 @@ + + +
+
+
+
+
+

{{$t('title')}}

+ + + + + + + + + + + + + + + +
{{$t('supplierId')}}{{invoice.supplierId}}
{{$t('invoiceId')}}{{invoice.id}}
{{$t('date')}}{{invoice.created | date('%d-%m-%Y')}}
+
+
+
+
+
{{$t('invoiceData')}}
+
+

{{invoice.name}}

+
{{invoice.postalAddress}}
+
{{invoice.postcodeCity}}
+
{{$t('fiscalId')}}: {{invoice.nif}}
+
{{$t('phone')}}: {{invoice.phone}}
+
+
+
+
+ +
+
+
+

{{$t('invoiceId')}}

+
+
+
+ {{entry.id}} +
+
+
+

{{$t('date')}}

+
+
+
+ {{entry.landed | date}} +
+
+ +
+

{{$t('reference')}}

+
+
+
+ {{entry.ref}} +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('item')}}{{$t('quantity')}}{{$t('buyingValue')}}{{$t('amount')}}
{{buy.name}}{{buy.quantity}}{{buy.buyingValue}}{{buyImport(buy) | currency('EUR', $i18n.locale)}}
+ {{buy.tag5}} {{buy.value5}} + {{buy.tag6}} {{buy.value6}} + {{buy.tag7}} {{buy.value7}} +
+ {{$t('subtotal')}} + {{entrySubtotal(entry) | currency('EUR', $i18n.locale)}}
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('taxBreakdown')}}
{{$t('type')}}{{$t('taxBase')}}{{$t('tax')}}{{$t('fee')}}
{{tax.name}}{{tax.taxableBase | currency('EUR', $i18n.locale)}}{{tax.rate | percentage}}{{tax.vat | currency('EUR', $i18n.locale)}}
{{$t('subtotal')}} + {{sumTotal(taxes, 'taxableBase') | currency('EUR', $i18n.locale)}} + {{sumTotal(taxes, 'vat') | currency('EUR', $i18n.locale)}}
{{$t('total')}}{{taxTotal() | currency('EUR', $i18n.locale)}}
+ +
+
{{$t('notes')}}
+
+ {{invoice.footNotes}} +
+
+
+
+
+
+
{{$t('observations')}}
+
+
{{$t('payMethod')}}
+
{{invoice.payMethod}}
+
+
+
+
+
+
+
+ +
diff --git a/print/templates/reports/invoiceIn/invoiceIn.js b/print/templates/reports/invoiceIn/invoiceIn.js new file mode 100755 index 000000000..40dd25a5b --- /dev/null +++ b/print/templates/reports/invoiceIn/invoiceIn.js @@ -0,0 +1,96 @@ +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); +const reportHeader = new Component('report-header'); +const reportFooter = new Component('report-footer'); + +module.exports = { + name: 'invoiceIn', + async serverPrefetch() { + this.invoice = await this.fetchInvoice(this.id); + this.taxes = await this.fetchTaxes(this.id); + + if (!this.invoice) + throw new Error('Something went wrong'); + + const entries = await this.fetchEntry(this.id); + const buys = await this.fetchBuy(this.id); + + const map = new Map(); + + for (let entry of entries) { + entry.buys = []; + + map.set(entry.id, entry); + } + + for (let buy of buys) { + const entry = map.get(buy.entryFk); + + if (entry) entry.buys.push(buy); + } + + this.entries = entries; + }, + computed: { + }, + methods: { + fetchInvoice(id) { + return this.findOneFromDef('invoice', [id]); + }, + fetchEntry(id) { + return this.rawSqlFromDef('entry', [id]); + }, + fetchBuy(id) { + return this.rawSqlFromDef('buy', [id]); + }, + async fetchTaxes(id) { + const taxes = await this.rawSqlFromDef(`taxes`, [id]); + return this.taxVat(taxes); + }, + buyImport(buy) { + return buy.quantity * buy.buyingValue; + }, + entrySubtotal(entry) { + let subTotal = 0.00; + for (let buy of entry.buys) + subTotal += this.buyImport(buy); + + return subTotal; + }, + sumTotal(rows, prop) { + let total = 0.00; + for (let row of rows) + total += parseFloat(row[prop]); + + return total; + }, + taxVat(taxes) { + for (tax of taxes) { + let vat = 0; + if (tax.rate && tax.taxableBase) + vat = (tax.rate / 100) * tax.taxableBase; + + tax.vat = vat; + } + + return taxes; + }, + taxTotal() { + const base = this.sumTotal(this.taxes, 'taxableBase'); + const vat = this.sumTotal(this.taxes, 'vat'); + + return base + vat; + } + }, + components: { + 'report-body': reportBody.build(), + 'report-header': reportHeader.build(), + 'report-footer': reportFooter.build(), + }, + props: { + id: { + type: Number, + description: 'The invoice id' + } + } +}; diff --git a/print/templates/reports/invoiceIn/locale/en.yml b/print/templates/reports/invoiceIn/locale/en.yml new file mode 100644 index 000000000..92d3b0c2d --- /dev/null +++ b/print/templates/reports/invoiceIn/locale/en.yml @@ -0,0 +1,25 @@ +reportName: invoice +title: Agricultural invoice +invoiceId: Agricultural invoice +supplierId: Proveedor +invoiceData: Invoice data +reference: Reference +fiscalId: FI / NIF +phone: Phone +date: Date +item: Item +quantity: Qty. +concept: Concept +buyingValue: PSP/u +discount: Disc. +vat: VAT +amount: Amount +type: Type +taxBase: Tax base +tax: Tax +fee: Fee +total: Total +subtotal: Subtotal +taxBreakdown: Tax breakdown +observations: Observations +payMethod: Pay method diff --git a/print/templates/reports/invoiceIn/locale/es.yml b/print/templates/reports/invoiceIn/locale/es.yml new file mode 100644 index 000000000..f2fb28e64 --- /dev/null +++ b/print/templates/reports/invoiceIn/locale/es.yml @@ -0,0 +1,25 @@ +reportName: factura +title: Factura Agrícola +invoiceId: Factura Agrícola +supplierId: Proveedor +invoiceData: Datos de facturación +reference: Referencia +fiscalId: CIF / NIF +phone: Tlf +date: Fecha +item: Artículo +quantity: Cant. +concept: Concepto +buyingValue: PVP/u +discount: Dto. +vat: IVA +amount: Importe +type: Tipo +taxBase: Base imp. +tax: Tasa +fee: Cuota +total: Total +subtotal: Subtotal +taxBreakdown: Desglose impositivo +observations: Observaciones +payMethod: Método de pago diff --git a/print/templates/reports/invoiceIn/sql/buy.sql b/print/templates/reports/invoiceIn/sql/buy.sql new file mode 100644 index 000000000..28a80ff9c --- /dev/null +++ b/print/templates/reports/invoiceIn/sql/buy.sql @@ -0,0 +1,18 @@ +SELECT + b.id, + e.id entryFk, + it.name, + b.quantity, + b.buyingValue, + (b.quantity * b.buyingValue) total, + it.tag5, + it.value5, + it.tag6, + it.value6, + it.tag7, + it.value7 + FROM entry e + JOIN invoiceIn i ON i.id = e.invoiceInFk + JOIN buy b ON b.entryFk = e.id + JOIN item it ON it.id = b.itemFk + WHERE i.id = ? diff --git a/print/templates/reports/invoiceIn/sql/entry.sql b/print/templates/reports/invoiceIn/sql/entry.sql new file mode 100644 index 000000000..0b29cd81c --- /dev/null +++ b/print/templates/reports/invoiceIn/sql/entry.sql @@ -0,0 +1,8 @@ +SELECT + e.id, + t.landed, + e.ref + FROM entry e + JOIN invoiceIn i ON i.id = e.invoiceInFk + JOIN travel t ON t.id = e.travelFk + WHERE i.id = ? diff --git a/print/templates/reports/invoiceIn/sql/invoice.sql b/print/templates/reports/invoiceIn/sql/invoice.sql new file mode 100644 index 000000000..fe9ef1e9e --- /dev/null +++ b/print/templates/reports/invoiceIn/sql/invoice.sql @@ -0,0 +1,14 @@ +SELECT + i.id, + s.id supplierId, + i.created, + s.name, + s.street AS postalAddress, + s.nif, + s.phone, + p.name payMethod + FROM invoiceIn i + JOIN supplier s ON s.id = i.supplierFk + JOIN company c ON c.id = i.companyFk + JOIN payMethod p ON p.id = s.payMethodFk + WHERE i.id = ? diff --git a/print/templates/reports/invoiceIn/sql/taxes.sql b/print/templates/reports/invoiceIn/sql/taxes.sql new file mode 100644 index 000000000..20df33f83 --- /dev/null +++ b/print/templates/reports/invoiceIn/sql/taxes.sql @@ -0,0 +1,8 @@ +SELECT + ti.iva as name, + ti.PorcentajeIva as rate, + iit.taxableBase + FROM invoiceIn ii + JOIN invoiceInTax iit ON ii.id = iit.invoiceInFk + JOIN sage.TiposIva ti ON ti.CodigoIva = iit.taxTypeSageFk + WHERE ii.id = ?; diff --git a/print/templates/reports/item-label/assets/css/import.js b/print/templates/reports/item-label/assets/css/import.js index fd8796c2b..37a98dfdd 100644 --- a/print/templates/reports/item-label/assets/css/import.js +++ b/print/templates/reports/item-label/assets/css/import.js @@ -1,9 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/spacing.css`, - `${appPath}/common/css/misc.css`, - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/item-label/item-label.html b/print/templates/reports/item-label/item-label.html index 3f2d7ce69..49593f7dd 100644 --- a/print/templates/reports/item-label/item-label.html +++ b/print/templates/reports/item-label/item-label.html @@ -1,35 +1,29 @@ - - - - - - - - - -
-
-
-

{{item.id}}

-
- -
-
-
-
{{item.name}}
-
{{tags.color}}
-
{{tags.producer}}
-
-
-
{{packing()}}
-
{{dated}}
-
{{labelPage}}
-
-
{{item.size}}
-
-
-
-
- - - + + +
+
+

{{item.id}}

+
+ +
+
+
+
{{item.name}}
+
{{tags.color}}
+
{{tags.producer}}
+
+
+
{{packing()}}
+
{{dated}}
+
{{labelPage}}
+
+
{{item.size}}
+
+
+
+ +
diff --git a/print/templates/reports/item-label/item-label.js b/print/templates/reports/item-label/item-label.js index 730d8ad99..6341bd11a 100755 --- a/print/templates/reports/item-label/item-label.js +++ b/print/templates/reports/item-label/item-label.js @@ -1,14 +1,13 @@ -const Component = require(`${appPath}/core/component`); -const reportHeader = new Component('report-header'); -const reportFooter = new Component('report-footer'); +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); const qrcode = require('qrcode'); module.exports = { name: 'item-label', async serverPrefetch() { - this.item = await this.fetchItem(this.itemId, this.warehouseId); - this.tags = await this.fetchItemTags(this.itemId); - this.barcode = await this.getBarcodeBase64(this.itemId); + this.item = await this.fetchItem(this.id, this.warehouseId); + this.tags = await this.fetchItemTags(this.id); + this.barcode = await this.getBarcodeBase64(this.id); if (!this.item) throw new Error('Something went wrong'); @@ -31,16 +30,18 @@ module.exports = { fetchItem(id, warehouseId) { return this.findOneFromDef('item', [id, warehouseId]); }, - fetchItemTags(itemId) { - return this.rawSqlFromDef('itemTags', [itemId]).then(rows => { + fetchItemTags(id) { + return this.rawSqlFromDef('itemTags', [id]).then(rows => { const tags = {}; rows.forEach(row => tags[row.code] = row.value); return tags; }); }, - getBarcodeBase64(itemId) { - return qrcode.toDataURL(itemId, {margin: 0}); + getBarcodeBase64(id) { + const data = String(id); + + return qrcode.toDataURL(data, {margin: 0}); }, packing() { const stems = this.item.stems ? this.item.stems : 1; @@ -48,21 +49,23 @@ module.exports = { } }, components: { - 'report-header': reportHeader.build(), - 'report-footer': reportFooter.build() + 'report-body': reportBody.build() }, props: { - itemId: { - required: true + id: { + type: Number, + required: true, + description: 'The item id' }, warehouseId: { + type: Number, required: true }, labelNumber: { - type: String + type: Number }, totalLabels: { - type: String + type: Number } } }; diff --git a/print/templates/reports/item-label/locale/es.yml b/print/templates/reports/item-label/locale/es.yml new file mode 100644 index 000000000..278946f3e --- /dev/null +++ b/print/templates/reports/item-label/locale/es.yml @@ -0,0 +1 @@ +reportName: Etiqueta \ No newline at end of file diff --git a/print/templates/reports/letter-debtor/assets/css/import.js b/print/templates/reports/letter-debtor/assets/css/import.js index fd8796c2b..37a98dfdd 100644 --- a/print/templates/reports/letter-debtor/assets/css/import.js +++ b/print/templates/reports/letter-debtor/assets/css/import.js @@ -1,9 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/spacing.css`, - `${appPath}/common/css/misc.css`, - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/letter-debtor/letter-debtor.html b/print/templates/reports/letter-debtor/letter-debtor.html index 88bf15bdb..962af021d 100644 --- a/print/templates/reports/letter-debtor/letter-debtor.html +++ b/print/templates/reports/letter-debtor/letter-debtor.html @@ -1,95 +1,78 @@ - - - - - - - - - -
- - - -
-
-
-
-
-

{{$t('title')}}

- - - - - - - - - - - -
{{$t('clientId')}}{{client.id}}
{{$t('date')}}{{dated}}
-
-
-
-
-
{{$t('clientData')}}
-
-

{{client.socialName}}

-
- {{client.street}} -
-
- {{client.postcode}}, {{client.city}} ({{client.province}}) -
-
- {{client.country}} -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{$t('date')}}{{$t('concept')}}{{$t('invoiced')}}{{$t('payed')}}{{$t('balance')}}
{{sale.issued | date('%d-%m-%Y')}}{{sale.ref}}{{sale.debtOut}}{{sale.debtIn}}{{getBalance(sale)}}
- Total - {{getTotalDebtOut() | currency('EUR', $i18n.locale)}} - {{getTotalDebtIn() | currency('EUR', $i18n.locale)}}{{totalBalance | currency('EUR', $i18n.locale)}}
-
+ +
+
+
+
+
+

{{$t('title')}}

+ + + + + + + + + + + +
{{$t('clientId')}}{{client.id}}
{{$t('date')}}{{dated}}
+
+
+
+
+
{{$t('clientData')}}
+
+

{{client.socialName}}

+
{{client.street}}
+
{{client.postcode}}, {{client.city}} ({{client.province}})
+
{{client.country}}
- - - -
- - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('date')}}{{$t('concept')}}{{$t('invoiced')}}{{$t('payed')}}{{$t('balance')}}
{{sale.issued | date('%d-%m-%Y')}}{{sale.ref}}{{sale.debtOut}}{{sale.debtIn}}{{getBalance(sale)}}
+ Total + {{getTotalDebtOut() | currency('EUR', $i18n.locale)}} + {{getTotalDebtIn() | currency('EUR', $i18n.locale)}}{{totalBalance | currency('EUR', $i18n.locale)}}
+ + + + diff --git a/print/templates/reports/letter-debtor/letter-debtor.js b/print/templates/reports/letter-debtor/letter-debtor.js index 354b1d8d8..749fde4ed 100755 --- a/print/templates/reports/letter-debtor/letter-debtor.js +++ b/print/templates/reports/letter-debtor/letter-debtor.js @@ -1,12 +1,12 @@ -const Component = require(`${appPath}/core/component`); -const reportHeader = new Component('report-header'); +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); const reportFooter = new Component('report-footer'); module.exports = { name: 'letter-debtor', async serverPrefetch() { - this.client = await this.fetchClient(this.recipientId); - this.sales = await this.fetchSales(this.recipientId, this.companyId); + this.client = await this.fetchClient(this.id); + this.sales = await this.fetchSales(this.id, this.companyId); if (!this.client) throw new Error('Something went wrong'); @@ -22,12 +22,12 @@ module.exports = { return {totalBalance: 0.00}; }, methods: { - fetchClient(clientId) { - return this.findOneFromDef('client', [clientId]); + fetchClient(id) { + return this.findOneFromDef('client', [id]); }, - fetchSales(clientId, companyId) { + fetchSales(id, companyId) { return this.findOneFromDef('sales', [ - clientId, + id, companyId ]); }, @@ -58,16 +58,17 @@ module.exports = { }, }, components: { - 'report-header': reportHeader.build(), + 'report-body': reportBody.build(), 'report-footer': reportFooter.build() }, props: { - recipientId: { - type: [Number, String], - required: true + id: { + type: Number, + required: true, + description: 'The client id' }, companyId: { - type: [Number, String], + type: Number, required: true } } diff --git a/print/templates/reports/receipt/assets/css/import.js b/print/templates/reports/receipt/assets/css/import.js index a2a9334cb..37a98dfdd 100644 --- a/print/templates/reports/receipt/assets/css/import.js +++ b/print/templates/reports/receipt/assets/css/import.js @@ -1,8 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, - `${appPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/receipt/receipt.html b/print/templates/reports/receipt/receipt.html index 5dc1846f7..e0bab5ecf 100644 --- a/print/templates/reports/receipt/receipt.html +++ b/print/templates/reports/receipt/receipt.html @@ -1,45 +1,30 @@ - - - - - - - - - -
- - - -
-
-
-

{{$t('title')}}

-

- Recibo de {{client.socialName}}, - la cantidad de {{receipt.amountPaid}} € en concepto de 'entrega a cuenta', - quedando pendiente en la cuenta del cliente - un saldo de {{receipt.amountUnpaid}} €. -

-
- -

{{$t('payed', [ - 'Algemesí', - receipt.payed.getDate(), - $t('months')[receipt.payed.getMonth()], - receipt.payed.getFullYear()]) - }} -

-
-
-
-
- - - -
- - \ No newline at end of file + +
+
+
+

{{$t('title')}}

+

+ Recibo de {{client.socialName}}, la cantidad de + {{receipt.amountPaid}} € en concepto de 'entrega a cuenta', quedando pendiente en + la cuenta del cliente un saldo de {{receipt.amountUnpaid}} €. +

+
+ +

+ {{$t('payed', [ 'Algemesí', receipt.payed.getDate(), $t('months')[receipt.payed.getMonth()], + receipt.payed.getFullYear()]) }} +

+
+
+
+
+ +
diff --git a/print/templates/reports/receipt/receipt.js b/print/templates/reports/receipt/receipt.js index d7f4dd6da..9a9ccd452 100755 --- a/print/templates/reports/receipt/receipt.js +++ b/print/templates/reports/receipt/receipt.js @@ -1,32 +1,33 @@ -const Component = require(`${appPath}/core/component`); -const reportHeader = new Component('report-header'); +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); const reportFooter = new Component('report-footer'); module.exports = { name: 'receipt', async serverPrefetch() { - this.client = await this.fetchClient(this.receiptId); - this.receipt = await this.fetchReceipt(this.receiptId); + this.client = await this.fetchClient(this.id); + this.receipt = await this.fetchReceipt(this.id); if (!this.receipt) throw new Error('Something went wrong'); }, methods: { - fetchClient(receiptId) { - return this.findOneFromDef('client', [receiptId]); + fetchClient(id) { + return this.findOneFromDef('client', [id]); }, - fetchReceipt(receiptId) { - return this.findOneFromDef('receipt', [receiptId]); + fetchReceipt(id) { + return this.findOneFromDef('receipt', [id]); } }, components: { - 'report-header': reportHeader.build(), + 'report-body': reportBody.build(), 'report-footer': reportFooter.build() }, props: { - receiptId: { - type: [Number, String], - required: true + id: { + type: Number, + required: true, + description: 'Receipt id' } } }; diff --git a/print/templates/reports/sepa-core/assets/css/import.js b/print/templates/reports/sepa-core/assets/css/import.js index fd8796c2b..37a98dfdd 100644 --- a/print/templates/reports/sepa-core/assets/css/import.js +++ b/print/templates/reports/sepa-core/assets/css/import.js @@ -1,9 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/spacing.css`, - `${appPath}/common/css/misc.css`, - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/sepa-core/sepa-core.html b/print/templates/reports/sepa-core/sepa-core.html index c935bc2a8..f2326e43c 100644 --- a/print/templates/reports/sepa-core/sepa-core.html +++ b/print/templates/reports/sepa-core/sepa-core.html @@ -1,201 +1,174 @@ - - - - - - - + + + + + + + + + + + + + + + + + + +
- - - -
-
-
-

{{$t('instructions.title')}}

-

- 1. {{$t('instructions.accountFields')}} -

-

- 2. {{$t('instructions.signDocument')}} -

-

- {{$t('instructions.thanks')}} -

-
-
-
+ +
+
+
+

{{$t('instructions.title')}}

+

1. {{$t('instructions.accountFields')}}

+

2. {{$t('instructions.signDocument')}}

+

{{$t('instructions.thanks')}}

+
+
+
- - - -
-
-

{{$t('title')}}

-
-
-
- {{$t('supplier.toCompleteBySupplier')}} -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{$t('supplier.orderReference')}}{{supplier.mandateCode}}
{{$t('supplier.identifier')}} -
ES89000B97367486
-
B97367486-000
-
{{$t('supplier.name')}}{{supplier.name}}
{{$t('supplier.street')}}{{supplier.street}}
{{$t('supplier.location')}}{{supplier.postCode}}, {{supplier.city}} ({{supplier.province}})
{{$t('supplier.country')}}{{supplier.country}}
+ +
+
+

{{$t('title')}}

+
+
+
{{$t('supplier.toCompleteBySupplier')}}
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{{$t('supplier.orderReference')}}{{supplier.mandateCode}}
{{$t('supplier.identifier')}} +
ES89000B97367486
+
B97367486-000
+
{{$t('supplier.name')}}{{supplier.name}}
{{$t('supplier.street')}}{{supplier.street}}
{{$t('supplier.location')}}{{supplier.postCode}}, {{supplier.city}} ({{supplier.province}})
{{$t('supplier.country')}}{{supplier.country}}
+
+
+ +

{{$t('description')}}

+

+ {{$t('documentCopy')}} +

+ +
+
+
{{$t('client.toCompleteByClient')}}
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - -
+ {{$t('client.name')}} +
{{$t('client.accountHolder')}}
+
{{client.socialName}}
{{$t('client.fiscalId')}}{{client.fi}}
{{$t('client.street')}}{{client.street}}
{{$t('client.location')}}{{client.postcode}}, {{client.city}} ({{client.province}})
{{$t('client.country')}}{{client.country}}
{{$t('client.swift')}} +
+
- - -

{{$t('description')}}

-

- {{$t('documentCopy')}} -

- -
-
-
- {{$t('client.toCompleteByClient')}} -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- {{$t('client.name')}} -
{{$t('client.accountHolder')}}
-
{{client.socialName}}
- {{$t('client.fiscalId')}} - {{client.fi}}
{{$t('client.street')}}{{client.street}}
{{$t('client.location')}}{{client.postcode}}, {{client.city}} ({{client.province}})
{{$t('client.country')}}{{client.country}}
{{$t('client.swift')}} -
- -
-
{{$t('client.accountNumber')}}
-
- {{client.countryCode.substr(0, 1)}} - {{client.countryCode.substr(1, 1)}} - -
-
-
- {{client.countryCode.substr(0, 1)}} - {{client.countryCode.substr(1, 1)}} - -
-
-
- {{$t('client.accountNumberFormat', [ - $t(`${client.country}`), - client.ibanLength, - client.countryCode - ])}} - -
-
{{$t('client.paymentType')}} - - - - - - - - -
-
- X -
-
{{$t('client.recurrent')}}O -
- -
-
{{$t('client.unique')}}
-
{{$t('client.signLocation')}}{{dated}}, {{client.province}}
{{$t('client.sign')}}
+
{{$t('client.accountNumber')}}
+
+ {{client.countryCode.substr(0, 1)}} + {{client.countryCode.substr(1, 1)}} +
- - -

{{$t('mandatoryFields')}}

-

{{$t('sendOrder')}}

- - - - - -
- - \ No newline at end of file +
+
+ {{client.countryCode.substr(0, 1)}} + {{client.countryCode.substr(1, 1)}} + +
+
+
+ {{$t('client.accountNumberFormat', [ $t(`${client.country}`), + client.ibanLength, client.countryCode ])}} + +
+
{{$t('client.paymentType')}} + + + + + + + + +
+
+ X +
+
{{$t('client.recurrent')}}O +
+ +
+
{{$t('client.unique')}}
+
{{$t('client.signLocation')}}{{dated}}, {{client.province}}
{{$t('client.sign')}}
+ + + +

{{$t('mandatoryFields')}}

+

{{$t('sendOrder')}}

+ + + + diff --git a/print/templates/reports/sepa-core/sepa-core.js b/print/templates/reports/sepa-core/sepa-core.js index 7e3dd3566..ee8a64842 100755 --- a/print/templates/reports/sepa-core/sepa-core.js +++ b/print/templates/reports/sepa-core/sepa-core.js @@ -1,12 +1,13 @@ -const Component = require(`${appPath}/core/component`); +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); const reportHeader = new Component('report-header'); const reportFooter = new Component('report-footer'); const rptSepaCore = { name: 'sepa-core', async serverPrefetch() { - this.client = await this.fetchClient(this.recipientId, this.companyId); - this.supplier = await this.fetchSupplier(this.recipientId, this.companyId); + this.client = await this.fetchClient(this.id, this.companyId); + this.supplier = await this.fetchSupplier(this.id, this.companyId); if (!this.client) throw new Error('Something went wrong'); @@ -19,32 +20,34 @@ const rptSepaCore = { } }, methods: { - fetchClient(clientId, companyId) { + fetchClient(id, companyId) { return this.findOneFromDef('client', [ companyId, companyId, - clientId + id ]); }, - fetchSupplier(clientId, companyId) { + fetchSupplier(id, companyId) { return this.findOneFromDef('supplier', [ companyId, companyId, - clientId + id ]); } }, components: { + 'report-body': reportBody.build(), 'report-header': reportHeader.build(), 'report-footer': reportFooter.build() }, props: { - recipientId: { - type: [Number, String], - required: true + id: { + type: Number, + required: true, + description: 'The client id' }, companyId: { - type: [Number, String], + type: Number, required: true } } diff --git a/print/templates/reports/supplier-campaign-metrics/assets/css/import.js b/print/templates/reports/supplier-campaign-metrics/assets/css/import.js index fd8796c2b..37a98dfdd 100644 --- a/print/templates/reports/supplier-campaign-metrics/assets/css/import.js +++ b/print/templates/reports/supplier-campaign-metrics/assets/css/import.js @@ -1,9 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/spacing.css`, - `${appPath}/common/css/misc.css`, - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/supplier-campaign-metrics/supplier-campaign-metrics.html b/print/templates/reports/supplier-campaign-metrics/supplier-campaign-metrics.html index 1303f2266..fd6ee5725 100644 --- a/print/templates/reports/supplier-campaign-metrics/supplier-campaign-metrics.html +++ b/print/templates/reports/supplier-campaign-metrics/supplier-campaign-metrics.html @@ -1,105 +1,81 @@ - - - - - - - - - -
- - - -
-
-
-
-

{{$t('title')}}

-
- - - - - - - - - - - - - - - -
{{$t('Supplier')}}{{supplier.id}}
{{$t('From')}}{{from | date('%d-%m-%Y')}}
{{$t('To')}}{{to | date('%d-%m-%Y')}}
-
-
-
-
-
{{$t('supplierData')}}
-
-

{{supplier.supplierName}}

-
- {{supplier.street}} -
-
- {{supplier.postcode}}, {{supplier.city}} ({{supplier.province}}) -
-
- {{supplier.country}} -
-
-
-
-
-
-

- {{$t('entry')}} {{entry.id}} - {{$t('dated')}} {{entry.shipped | date('%d-%m-%Y')}} - {{$t('reference')}} {{entry.ref}} -

- - - - - - - - - - - - - - - - - - - - -
{{$t('itemName')}}{{$t('Quantity')}}{{$t('price')}}{{$t('total')}}
{{buy.itemName}}{{buy.quantity}}{{buy.price | currency('EUR', $i18n.locale)}}{{buy.quantity * buy.price | currency('EUR', $i18n.locale)}}
- - {{buy.tag5}} {{buy.value5}} - - - {{buy.tag6}} {{buy.value6}} - - - {{buy.tag7}} {{buy.value7}} - -
- -
-
+ +
+
+
+
+

{{$t('title')}}

+
+ + + + + + + + + + + + + + + +
{{$t('Supplier')}}{{supplier.id}}
{{$t('From')}}{{from | date('%d-%m-%Y')}}
{{$t('To')}}{{to | date('%d-%m-%Y')}}
+
+
+
+
+
{{$t('supplierData')}}
+
+

{{supplier.supplierName}}

+
{{supplier.street}}
+
{{supplier.postcode}}, {{supplier.city}} ({{supplier.province}})
+
{{supplier.country}}
- - - -
- - \ No newline at end of file + + + +
+

+ {{$t('entry')}} {{entry.id}} + {{$t('dated')}} {{entry.shipped | date('%d-%m-%Y')}} + {{$t('reference')}} {{entry.ref}} +

+ + + + + + + + + + + + + + + + + + + + +
{{$t('itemName')}}{{$t('Quantity')}}{{$t('price')}}{{$t('total')}}
{{buy.itemName}}{{buy.quantity}}{{buy.price | currency('EUR', $i18n.locale)}}{{buy.quantity * buy.price | currency('EUR', $i18n.locale)}}
+ {{buy.tag5}} {{buy.value5}} + {{buy.tag6}} {{buy.value6}} + {{buy.tag7}} {{buy.value7}} +
+
+ + + + diff --git a/print/templates/reports/supplier-campaign-metrics/supplier-campaign-metrics.js b/print/templates/reports/supplier-campaign-metrics/supplier-campaign-metrics.js index 1a460daa9..f6fb4bd4e 100755 --- a/print/templates/reports/supplier-campaign-metrics/supplier-campaign-metrics.js +++ b/print/templates/reports/supplier-campaign-metrics/supplier-campaign-metrics.js @@ -1,12 +1,12 @@ -const Component = require(`${appPath}/core/component`); -const reportHeader = new Component('report-header'); +const Component = require(`vn-print/core/component`); +const reportBody = new Component('report-body'); const reportFooter = new Component('report-footer'); module.exports = { name: 'supplier-campaign-metrics', async serverPrefetch() { - this.supplier = await this.fetchSupplier(this.recipientId); - let entries = await this.fetchEntries(this.recipientId, this.from, this.to); + this.supplier = await this.fetchSupplier(this.id); + let entries = await this.fetchEntries(this.id, this.from, this.to); const entriesId = []; @@ -44,13 +44,14 @@ module.exports = { } }, components: { - 'report-header': reportHeader.build(), + 'report-body': reportBody.build(), 'report-footer': reportFooter.build() }, props: { - recipientId: { - type: [Number, String], - required: true + id: { + type: Number, + required: true, + description: 'The supplier id' }, from: { required: true diff --git a/print/templates/reports/cmr-authorization/assets/css/import.js b/print/templates/reports/vehicle-event-expired/assets/css/import.js similarity index 86% rename from print/templates/reports/cmr-authorization/assets/css/import.js rename to print/templates/reports/vehicle-event-expired/assets/css/import.js index a2a9334cb..fd8796c2b 100644 --- a/print/templates/reports/cmr-authorization/assets/css/import.js +++ b/print/templates/reports/vehicle-event-expired/assets/css/import.js @@ -1,8 +1,9 @@ const Stylesheet = require(`${appPath}/core/stylesheet`); module.exports = new Stylesheet([ + `${appPath}/common/css/spacing.css`, + `${appPath}/common/css/misc.css`, `${appPath}/common/css/layout.css`, `${appPath}/common/css/report.css`, - `${appPath}/common/css/misc.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/vehicle-event-expired/assets/css/style.css b/print/templates/reports/vehicle-event-expired/assets/css/style.css new file mode 100644 index 000000000..1b6428d3c --- /dev/null +++ b/print/templates/reports/vehicle-event-expired/assets/css/style.css @@ -0,0 +1,19 @@ +.column-oriented { + margin-top: 50px !important; +} + +.bottom-line > tr { + border-bottom: 1px solid #ccc; +} + +.bottom-line tr:nth-last-child() { + border-bottom: none; +} + +.report-info { + font-size: 20px +} + +.description strong { + text-transform: uppercase; +} \ No newline at end of file diff --git a/print/templates/reports/vehicle-event-expired/locale/es.yml b/print/templates/reports/vehicle-event-expired/locale/es.yml new file mode 100644 index 000000000..ba7685047 --- /dev/null +++ b/print/templates/reports/vehicle-event-expired/locale/es.yml @@ -0,0 +1,4 @@ +title: Expiración Tarjetas Vehículos +Plate: Matrícula +Concept: Concepto +expirationDate: Fecha caducidad \ No newline at end of file diff --git a/print/templates/reports/vehicle-event-expired/sql/vehicleEvents.sql b/print/templates/reports/vehicle-event-expired/sql/vehicleEvents.sql new file mode 100644 index 000000000..09f9e5853 --- /dev/null +++ b/print/templates/reports/vehicle-event-expired/sql/vehicleEvents.sql @@ -0,0 +1,7 @@ +SELECT + v.numberPlate, + ve.description, + ve.finished +FROM vehicleEvent ve + JOIN vehicle v ON v.id = ve.vehicleFk +WHERE ve.id IN (?) \ No newline at end of file diff --git a/print/templates/reports/vehicle-event-expired/vehicle-event-expired.html b/print/templates/reports/vehicle-event-expired/vehicle-event-expired.html new file mode 100644 index 000000000..65776851d --- /dev/null +++ b/print/templates/reports/vehicle-event-expired/vehicle-event-expired.html @@ -0,0 +1,25 @@ + +
+
+
+

{{$t('title')}}

+
+ + + + + + + + + + + + + + + +
{{$t('Plate')}}{{$t('Concept')}}{{$t('expirationDate')}}
{{vehicleEvent.numberPlate}}{{vehicleEvent.description}}{{vehicleEvent.finished | date('%d-%m-%Y')}}
+
+
+
diff --git a/print/templates/reports/vehicle-event-expired/vehicle-event-expired.js b/print/templates/reports/vehicle-event-expired/vehicle-event-expired.js new file mode 100755 index 000000000..278caeabf --- /dev/null +++ b/print/templates/reports/vehicle-event-expired/vehicle-event-expired.js @@ -0,0 +1,26 @@ +const Component = require(`${appPath}/core/component`); +const reportBody = new Component('report-body'); + +module.exports = { + name: 'vehicle-event-expired', + async serverPrefetch() { + this.vehicleEvents = await this.fetchVehicleEvent(this.eventIds); + + if (!this.vehicleEvents) + throw new Error('Something went wrong'); + }, + methods: { + fetchVehicleEvent(vehicleEventIds) { + return this.rawSqlFromDef('vehicleEvents', [vehicleEventIds]); + }, + }, + components: { + 'report-body': reportBody.build() + }, + props: { + eventIds: { + type: [Array], + required: true + } + } +}; diff --git a/print/templates/reports/zone/assets/css/import.js b/print/templates/reports/zone/assets/css/import.js index a2a9334cb..37a98dfdd 100644 --- a/print/templates/reports/zone/assets/css/import.js +++ b/print/templates/reports/zone/assets/css/import.js @@ -1,8 +1,12 @@ -const Stylesheet = require(`${appPath}/core/stylesheet`); +const Stylesheet = require(`vn-print/core/stylesheet`); + +const path = require('path'); +const vnPrintPath = path.resolve('print'); module.exports = new Stylesheet([ - `${appPath}/common/css/layout.css`, - `${appPath}/common/css/report.css`, - `${appPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/spacing.css`, + `${vnPrintPath}/common/css/misc.css`, + `${vnPrintPath}/common/css/layout.css`, + `${vnPrintPath}/common/css/report.css`, `${__dirname}/style.css`]) .mergeStyles(); diff --git a/print/templates/reports/zone/zone.html b/print/templates/reports/zone/zone.html index c1e8d1ec1..54c55e168 100644 --- a/print/templates/reports/zone/zone.html +++ b/print/templates/reports/zone/zone.html @@ -1,16 +1,5 @@ - - - - - - - - - -
-
{{zone.agencyName}}
-
{{zone.id}}
-
{{zone.plateNumber}} {{zone.time | date('%H:%M')}}
-
- - \ No newline at end of file + +
{{zone.agencyName}}
+
{{zone.id}}
+
{{zone.plateNumber}} {{zone.time | date('%H:%M')}}
+
diff --git a/print/templates/reports/zone/zone.js b/print/templates/reports/zone/zone.js index d611e1e53..463c28acf 100755 --- a/print/templates/reports/zone/zone.js +++ b/print/templates/reports/zone/zone.js @@ -1,20 +1,27 @@ +const Component = require(`${appPath}/core/component`); +const reportBody = new Component('report-body'); + module.exports = { name: 'zone', async serverPrefetch() { - this.zone = await this.fetchZone(this.routeId); + this.zone = await this.fetchZone(this.id); if (!this.zone) throw new Error('Something went wrong'); }, methods: { - fetchZone(routeId) { - return this.findOneFromDef('zone', [routeId]); + fetchZone(id) { + return this.findOneFromDef('zone', [id]); } }, + components: { + 'report-body': reportBody.build() + }, props: { - routeId: { - type: [Number, String], - required: true + id: { + type: Number, + required: true, + description: 'The zone id' } } }; diff --git a/storage/access/.keep b/storage/access/.keep new file mode 100644 index 000000000..8e2556896 --- /dev/null +++ b/storage/access/.keep @@ -0,0 +1 @@ +Forces tmp folder creation! \ No newline at end of file diff --git a/storage/dms/8f1/7.jpg b/storage/dms/8f1/7.jpg new file mode 100644 index 000000000..83052dea6 Binary files /dev/null and b/storage/dms/8f1/7.jpg differ diff --git a/storage/dms/c9f/8.mp4 b/storage/dms/c9f/8.mp4 new file mode 100644 index 000000000..b11552f9c Binary files /dev/null and b/storage/dms/c9f/8.mp4 differ diff --git a/storage/pdfs/invoice/.keep b/storage/pdfs/invoice/.keep new file mode 100644 index 000000000..e69de29bb