diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0bb15511b3..a2bb2e7e44 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,4 @@
+
# Changelog
All notable changes to this project will be documented in this file.
@@ -12,6 +13,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- (InvoiceOut -> Crear factura) Cuando falla al crear una factura, se devuelve un error
- (Worker -> Ver albarán) Ya no aparece la página en blanco
+### Changed
+- (InvoiceOut) Las facturas ahora muestran el ticket del cual proviene el abono
+
## [24.18.01] - 2024-05-07
## [24.16.01] - 2024-04-18
diff --git a/Jenkinsfile b/Jenkinsfile
index 9d5954f868..5e46b456a9 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -24,7 +24,7 @@ node {
FROM_GIT = env.JOB_NAME.startsWith('gitea/')
RUN_TESTS = !PROTECTED_BRANCH && FROM_GIT
RUN_BUILD = PROTECTED_BRANCH && FROM_GIT
- // env.DEBUG = 'strong-remoting:shared-method'
+
// https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#using-environment-variables
echo "NODE_NAME: ${env.NODE_NAME}"
echo "WORKSPACE: ${env.WORKSPACE}"
@@ -60,7 +60,6 @@ pipeline {
}
environment {
PROJECT_NAME = 'salix'
- STACK_NAME = "${env.PROJECT_NAME}-${env.BRANCH_NAME}"
}
stages {
stage('Install') {
@@ -204,19 +203,23 @@ pipeline {
sh 'npx myt push $NODE_ENV --force --commit'
}
}
- stage('Docker') {
+ stage('Kubernetes') {
when {
expression { FROM_GIT }
}
- environment {
- DOCKER_HOST = "${env.SWARM_HOST}"
- }
steps {
script {
def packageJson = readJSON file: 'package.json'
env.VERSION = packageJson.version
}
- sh "docker stack deploy --with-registry-auth --compose-file docker-compose.yml ${env.STACK_NAME}"
+ withKubeConfig([
+ serverUrl: "$KUBERNETES_API",
+ credentialsId: 'kubernetes',
+ namespace: 'salix'
+ ]) {
+ sh 'kubectl set image deployment/salix-back-$BRANCH_NAME salix-back-$BRANCH_NAME=$REGISTRY/salix-back:$VERSION'
+ sh 'kubectl set image deployment/salix-front-$BRANCH_NAME salix-front-$BRANCH_NAME=$REGISTRY/salix-front:$VERSION'
+ }
}
}
}
diff --git a/README.md b/README.md
index b420bc44f6..b052bd8bf3 100644
--- a/README.md
+++ b/README.md
@@ -11,11 +11,16 @@ Required applications.
* Node.js
* Docker
* Git
+* MYT
You will need to install globally the following items.
```
$ sudo npm install -g jest gulp-cli
```
+After installing MYT you will need the following item.
+```
+$ apt install libkrb5-dev libssl-dev
+```
## Installing dependencies and launching
@@ -54,6 +59,12 @@ For end-to-end tests run from project's root.
$ npm run test:e2e
```
+## Generate changeLog test → master
+```
+$ bash changelog.sh
+```
+
+
## Visual Studio Code extensions
Open Visual Studio Code, press Ctrl+P and paste the following commands.
diff --git a/back/methods/chat/sendCheckingPresence.js b/back/methods/chat/sendCheckingPresence.js
index 85b66e94be..7ab5d63fef 100644
--- a/back/methods/chat/sendCheckingPresence.js
+++ b/back/methods/chat/sendCheckingPresence.js
@@ -1,3 +1,5 @@
+const isProduction = require('vn-loopback/server/boot/isProduction');
+
module.exports = Self => {
Self.remoteMethodCtx('sendCheckingPresence', {
description: 'Creates a message in the chat model checking the user status',
@@ -37,7 +39,7 @@ module.exports = Self => {
if (!recipient)
throw new Error(`Could not send message "${message}" to worker id ${recipientId} from user ${userId}`);
- if (process.env.NODE_ENV == 'test')
+ if (!isProduction())
message = `[Test:Environment to user ${userId}] ` + message;
const chat = await models.Chat.create({
diff --git a/back/methods/chat/sendQueued.js b/back/methods/chat/sendQueued.js
index 9a23af3795..abda2ddc1c 100644
--- a/back/methods/chat/sendQueued.js
+++ b/back/methods/chat/sendQueued.js
@@ -1,4 +1,6 @@
const axios = require('axios');
+const isProduction = require('vn-loopback/server/boot/isProduction');
+
module.exports = Self => {
Self.remoteMethodCtx('sendQueued', {
description: 'Send a RocketChat message',
@@ -94,7 +96,7 @@ module.exports = Self => {
* @return {Promise} - The request promise
*/
Self.sendMessage = async function sendMessage(senderFk, recipient, message) {
- if (process.env.NODE_ENV !== 'production') {
+ if (!isProduction(false)) {
return new Promise(resolve => {
return resolve({
statusCode: 200,
@@ -149,7 +151,7 @@ module.exports = Self => {
* @return {Promise} - The request promise
*/
Self.getUserStatus = async function getUserStatus(username) {
- if (process.env.NODE_ENV !== 'production') {
+ if (!isProduction(false)) {
return new Promise(resolve => {
return resolve({
data: {
diff --git a/back/methods/dms/deleteTrashFiles.js b/back/methods/dms/deleteTrashFiles.js
index 239d654ef3..e07f93c90a 100644
--- a/back/methods/dms/deleteTrashFiles.js
+++ b/back/methods/dms/deleteTrashFiles.js
@@ -1,6 +1,7 @@
const UserError = require('vn-loopback/util/user-error');
const fs = require('fs-extra');
const path = require('path');
+const isProduction = require('vn-loopback/server/boot/isProduction');
module.exports = Self => {
Self.remoteMethod('deleteTrashFiles', {
@@ -22,7 +23,7 @@ module.exports = Self => {
if (typeof options == 'object')
Object.assign(myOptions, options);
- if (process.env.NODE_ENV == 'test')
+ if (!isProduction())
throw new UserError(`Action not allowed on the test environment`);
const models = Self.app.models;
diff --git a/back/methods/docuware/upload.js b/back/methods/docuware/upload.js
index 27be72295e..0102911e04 100644
--- a/back/methods/docuware/upload.js
+++ b/back/methods/docuware/upload.js
@@ -1,5 +1,6 @@
const UserError = require('vn-loopback/util/user-error');
const axios = require('axios');
+const isProduction = require('vn-loopback/server/boot/isProduction');
module.exports = Self => {
Self.remoteMethodCtx('upload', {
@@ -119,7 +120,7 @@ module.exports = Self => {
]
};
- if (process.env.NODE_ENV != 'production')
+ if (!isProduction(false))
throw new UserError('Action not allowed on the test environment');
// delete old
diff --git a/back/methods/image/scrub.js b/back/methods/image/scrub.js
index 99c6bcbf33..3c83b3be71 100644
--- a/back/methods/image/scrub.js
+++ b/back/methods/image/scrub.js
@@ -1,6 +1,7 @@
const fs = require('fs-extra');
const path = require('path');
const UserError = require('vn-loopback/util/user-error');
+const isProduction = require('vn-loopback/server/boot/isProduction');
module.exports = Self => {
Self.remoteMethod('scrub', {
@@ -43,8 +44,7 @@ module.exports = Self => {
Self.scrub = async function(collection, remove, limit, dryRun, skipLock) {
const $ = Self.app.models;
- const env = process.env.NODE_ENV;
- dryRun = dryRun || (env && env !== 'production');
+ dryRun = dryRun || !isProduction(false);
const instance = await $.ImageCollection.findOne({
fields: ['id'],
diff --git a/back/methods/image/upload.js b/back/methods/image/upload.js
index 51da327f67..b3cdfb88bb 100644
--- a/back/methods/image/upload.js
+++ b/back/methods/image/upload.js
@@ -1,6 +1,7 @@
const UserError = require('vn-loopback/util/user-error');
const fs = require('fs/promises');
const path = require('path');
+const isProduction = require('vn-loopback/server/boot/isProduction');
module.exports = Self => {
Self.remoteMethodCtx('upload', {
@@ -41,7 +42,7 @@ module.exports = Self => {
if (!hasWriteRole)
throw new UserError(`You don't have enough privileges`);
- if (process.env.NODE_ENV == 'test')
+ if (!isProduction())
throw new UserError(`Action not allowed on the test environment`);
// Upload file to temporary path
diff --git a/back/methods/mrw-config/cancelShipment.js b/back/methods/mrw-config/cancelShipment.js
index 218b6a96bb..86bbb7410c 100644
--- a/back/methods/mrw-config/cancelShipment.js
+++ b/back/methods/mrw-config/cancelShipment.js
@@ -39,8 +39,6 @@ module.exports = Self => {
const xmlString = response.data;
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, 'text/xml');
- const [resultElement] = xmlDoc.getElementsByTagName('Mensaje');
-
- return resultElement.textContent;
+ return xmlDoc.getElementsByTagName('Mensaje')[0].textContent;
};
};
diff --git a/back/methods/mrw-config/createShipment.ejs b/back/methods/mrw-config/createShipment.ejs
index bf8a07dab4..7468218f28 100644
--- a/back/methods/mrw-config/createShipment.ejs
+++ b/back/methods/mrw-config/createShipment.ejs
@@ -26,16 +26,24 @@
<%= expeditionData.fi %>
<%= expeditionData.clientName %>
<%= expeditionData.phone %>
+ <%= expeditionData.deliveryObservation %>
<%= expeditionData.created %>
- <%= expeditionData.expeditionDataId %>
+ <%= expeditionData.reference %>
<%= expeditionData.serviceType %>
1
<%= expeditionData.weekDays %>
- <%= expeditionData.kg %>
+
+
+ <%= mrw.defaultHeight %>
+ <%= mrw.defaultLength %>
+ <%= mrw.defaultWidth %>
+ <%= mrw.defaultWeight %>
+
+
diff --git a/back/methods/mrw-config/createShipment.js b/back/methods/mrw-config/createShipment.js
index 12263de033..dd2ed883a3 100644
--- a/back/methods/mrw-config/createShipment.js
+++ b/back/methods/mrw-config/createShipment.js
@@ -42,9 +42,10 @@ module.exports = Self => {
throw new UserError(`Some mrwConfig parameters are not set`);
const query =
- `SELECT CASE co.code
+ `SELECT
+ CASE co.code
WHEN 'ES' THEN a.postalCode
- WHEN 'PT' THEN LEFT(a.postalCode, 4)
+ WHEN 'PT' THEN LEFT(a.postalCode, mc.portugalPostCodeTrim)
WHEN 'AD' THEN REPLACE(a.postalCode, 'AD', '00')
END postalCode,
a.city,
@@ -55,9 +56,10 @@ module.exports = Self => {
c.phone,
DATE_FORMAT(t.shipped, '%d/%m/%Y') created,
t.shipped,
- e.id expeditionId,
- LPAD(IF(mw.params IS NULL, ms.serviceType, mw.serviceType), 4 ,'0') serviceType,
- IF(mw.weekdays, 'S', 'N') weekDays
+ CONCAT( e.ticketFk, LPAD(e.counter, mc.counterWidth, '0')) reference,
+ LPAD(IF(mw.params IS NULL, ms.serviceType, mw.serviceType), mc.serviceTypeWidth,'0') serviceType,
+ IF(mw.weekdays, 'S', 'N') weekDays,
+ oa.description deliveryObservation
FROM expedition e
JOIN ticket t ON e.ticketFk = t.id
JOIN agencyMode am ON am.id = t.agencyModeFk
@@ -65,8 +67,12 @@ module.exports = Self => {
LEFT JOIN mrwServiceWeekday mw ON mw.weekdays = DATE_FORMAT(t.shipped, '%a')
JOIN client c ON t.clientFk = c.id
JOIN address a ON t.addressFk = a.id
+ LEFT JOIN addressObservation oa ON oa.addressFk = a.id
+ LEFT JOIN observationType ot ON ot.id = oa.observationTypeFk
+ AND ot.code = 'delivery'
JOIN province p ON a.provinceFk = p.id
JOIN country co ON co.id = p.countryFk
+ JOIN mrwConfig mc
WHERE e.id = ?
LIMIT 1`;
@@ -89,14 +95,9 @@ module.exports = Self => {
const getLabelResponse = await sendXmlDoc('getLabel', {mrw, shipmentId}, 'text/xml');
const file = getTextByTag(getLabelResponse, 'EtiquetaFile');
- try {
- await models.Expedition.updateAll({id: expeditionFk}, {externalId: shipmentId}, myOptions);
- if (tx) await tx.commit();
- } catch (error) {
- if (tx) await tx.rollback();
- throw error;
- }
- return file;
+ if (tx) await tx.commit();
+
+ return {shipmentId, file};
};
function getTextByTag(xmlDoc, tag) {
diff --git a/back/methods/mrw-config/specs/createShipment.spec.js b/back/methods/mrw-config/specs/createShipment.spec.js
index 0f48bc2d31..f05f9a81d6 100644
--- a/back/methods/mrw-config/specs/createShipment.spec.js
+++ b/back/methods/mrw-config/specs/createShipment.spec.js
@@ -81,9 +81,9 @@ describe('MRWConfig createShipment()', () => {
spyOn(axios, 'post').and.callFake(() => Promise.resolve(mockPostResponses.pop()));
- const base64Binary = await models.MrwConfig.createShipment(expedition1.id, options);
+ const {file} = await models.MrwConfig.createShipment(expedition1.id, options);
- expect(base64Binary).toEqual(mockBase64Binary);
+ expect(file).toEqual(mockBase64Binary);
});
it('should fail if mrwConfig has no data', async() => {
diff --git a/back/methods/notification/send.js b/back/methods/notification/send.js
index b2748477d5..1bff7f6864 100644
--- a/back/methods/notification/send.js
+++ b/back/methods/notification/send.js
@@ -1,4 +1,5 @@
const {Email} = require('vn-print');
+const isProduction = require('vn-loopback/server/boot/isProduction');
module.exports = Self => {
Self.remoteMethod('send', {
@@ -70,7 +71,7 @@ module.exports = Self => {
const newParams = Object.assign({}, queueParams, sendParams);
const email = new Email(queueName, newParams);
- if (process.env.NODE_ENV != 'test')
+ if (isProduction())
await email.send();
await queue.updateAttribute('status', statusSent);
diff --git a/back/methods/postcode/filter.js b/back/methods/postcode/filter.js
index 4c3fc0cd34..8b0f64d978 100644
--- a/back/methods/postcode/filter.js
+++ b/back/methods/postcode/filter.js
@@ -45,7 +45,7 @@ module.exports = Self => {
{'pc.code': {like: `%${value}%`}},
{'t.name': {like: `%${value}%`}},
{'p.name': {like: `%${value}%`}},
- {'c.country': {like: `%${value}%`}}
+ {'c.name': {like: `%${value}%`}}
]
};
}
@@ -62,7 +62,7 @@ module.exports = Self => {
pc.code,
t.name as town,
p.name as province,
- c.country
+ c.name country
FROM
postCode pc
JOIN town t on t.id = pc.townFk
diff --git a/back/methods/vn-user/renew-token.js b/back/methods/vn-user/renew-token.js
index 8e5ffc095c..5581d19ace 100644
--- a/back/methods/vn-user/renew-token.js
+++ b/back/methods/vn-user/renew-token.js
@@ -18,15 +18,10 @@ module.exports = Self => {
Self.renewToken = async function(ctx) {
const {accessToken: token} = ctx.req;
- // Check if current token is valid
-
- const {renewPeriod, courtesyTime} = await models.AccessTokenConfig.findOne({
- fields: ['renewPeriod', 'courtesyTime']
+ const {courtesyTime} = await models.AccessTokenConfig.findOne({
+ fields: ['courtesyTime']
});
- const now = Date.now();
- const differenceMilliseconds = now - token.created;
- const differenceSeconds = Math.floor(differenceMilliseconds / 1000);
- const isNotExceeded = differenceSeconds < renewPeriod - courtesyTime;
+ const isNotExceeded = await Self.validateToken(ctx);
if (isNotExceeded)
return token;
diff --git a/back/methods/vn-user/validate-token.js b/back/methods/vn-user/validate-token.js
new file mode 100644
index 0000000000..3b75c7c349
--- /dev/null
+++ b/back/methods/vn-user/validate-token.js
@@ -0,0 +1,30 @@
+const {models} = require('vn-loopback/server/server');
+module.exports = Self => {
+ Self.remoteMethodCtx('validateToken', {
+ description: 'Validates the current logged user token',
+ accepts: [],
+ accessType: 'READ',
+ returns: {
+ type: 'Boolean',
+ root: true
+ },
+ http: {
+ path: `/validateToken`,
+ verb: 'GET'
+ }
+ });
+
+ Self.validateToken = async function(ctx) {
+ const {accessToken: token} = ctx.req;
+
+ // Check if current token is valid
+ const {renewPeriod, courtesyTime} = await models.AccessTokenConfig.findOne({
+ fields: ['renewPeriod', 'courtesyTime']
+ });
+ const now = Date.now();
+ const differenceMilliseconds = now - token.created;
+ const differenceSeconds = Math.floor(differenceMilliseconds / 1000);
+ const isNotExceeded = differenceSeconds < renewPeriod - courtesyTime;
+ return isNotExceeded;
+ };
+};
diff --git a/back/model-config.json b/back/model-config.json
index e64386300e..b643ab54f1 100644
--- a/back/model-config.json
+++ b/back/model-config.json
@@ -186,5 +186,8 @@
},
"AgencyWorkCenter": {
"dataSource": "vn"
+ },
+ "RouteConfig": {
+ "dataSource": "vn"
}
}
diff --git a/back/models/collection.json b/back/models/collection.json
index cb8dc3d7cd..8a8afeb891 100644
--- a/back/models/collection.json
+++ b/back/models/collection.json
@@ -1,6 +1,16 @@
{
"name": "Collection",
"base": "VnModel",
+ "properties": {
+ "id": {
+ "id": true,
+ "type": "number",
+ "required": true
+ },
+ "workerFk": {
+ "type": "number"
+ }
+ },
"options": {
"mysql": {
"table": "collection"
diff --git a/back/models/country.json b/back/models/country.json
index fd540d8194..a4c74d3303 100644
--- a/back/models/country.json
+++ b/back/models/country.json
@@ -13,7 +13,7 @@
"id": true,
"description": "Identifier"
},
- "country": {
+ "name": {
"type": "string",
"required": true
},
diff --git a/back/models/mrw-config.json b/back/models/mrw-config.json
index 50cf7e8fc5..b0e9754bda 100644
--- a/back/models/mrw-config.json
+++ b/back/models/mrw-config.json
@@ -27,6 +27,18 @@
},
"subscriberCode": {
"type": "string"
+ },
+ "defaultHeight": {
+ "type": "number"
+ },
+ "defaultLength": {
+ "type": "number"
+ },
+ "defaultWidth": {
+ "type": "number"
+ },
+ "defaultWeight": {
+ "type": "number"
}
}
}
diff --git a/back/models/routeConfig.json b/back/models/routeConfig.json
new file mode 100644
index 0000000000..f3d9297498
--- /dev/null
+++ b/back/models/routeConfig.json
@@ -0,0 +1,18 @@
+{
+ "name": "RouteConfig",
+ "base": "VnModel",
+ "options": {
+ "mysql": {
+ "table": "routeConfig"
+ }
+ },
+ "properties": {
+ "id": {
+ "type": "number",
+ "description": "Identifier"
+ },
+ "kmMax": {
+ "type": "number"
+ }
+ }
+}
diff --git a/back/models/vn-user.js b/back/models/vn-user.js
index b59f13ffad..d38fe5a92c 100644
--- a/back/models/vn-user.js
+++ b/back/models/vn-user.js
@@ -15,6 +15,7 @@ module.exports = function(Self) {
require('../methods/vn-user/renew-token')(Self);
require('../methods/vn-user/share-token')(Self);
require('../methods/vn-user/update-user')(Self);
+ require('../methods/vn-user/validate-token')(Self);
Self.definition.settings.acls = Self.definition.settings.acls.filter(acl => acl.property !== 'create');
diff --git a/back/models/vn-user.json b/back/models/vn-user.json
index 5f6ac3f47a..8e33040855 100644
--- a/back/models/vn-user.json
+++ b/back/models/vn-user.json
@@ -113,6 +113,13 @@
"principalId": "$everyone",
"permission": "ALLOW"
},
+ {
+ "property": "validateToken",
+ "accessType": "EXECUTE",
+ "principalType": "ROLE",
+ "principalId": "$authenticated",
+ "permission": "ALLOW"
+ },
{
"property": "privileges",
"accessType": "*",
diff --git a/changelog.sh b/changelog.sh
new file mode 100644
index 0000000000..8cd7b4716d
--- /dev/null
+++ b/changelog.sh
@@ -0,0 +1,34 @@
+features_types=(chore feat style)
+changes_types=(refactor perf)
+fix_types=(fix revert)
+file="CHANGELOG.md"
+file_tmp="temp_log.txt"
+file_current_tmp="temp_current_log.txt"
+
+setType(){
+ echo "### $1" >> $file_tmp
+ arr=("$@")
+ echo "" > $file_current_tmp
+ for i in "${arr[@]}"
+ do
+ git log --grep="$i" --oneline --no-merges --format="- %s %d by:%an" master..test >> $file_current_tmp
+ done
+ # remove duplicates
+ sort -o $file_current_tmp -u $file_current_tmp
+ cat $file_current_tmp >> $file_tmp
+ echo "" >> $file_tmp
+ # remove tmp current file
+ [ -e $file_current_tmp ] && rm $file_current_tmp
+}
+
+echo "# Version XX.XX - XXXX-XX-XX" >> $file_tmp
+echo "" >> $file_tmp
+
+setType "Added 🆕" "${features_types[@]}"
+setType "Changed 📦" "${changes_types[@]}"
+setType "Fixed 🛠️" "${fix_types[@]}"
+
+cat $file >> $file_tmp
+mv $file_tmp $file
+
+
diff --git a/db/.pullinfo.json b/db/.pullinfo.json
index f4afbc5fbb..0defed8458 100644
--- a/db/.pullinfo.json
+++ b/db/.pullinfo.json
@@ -9,7 +9,7 @@
},
"vn": {
"view": {
- "expeditionPallet_Print": "288cbd6e8289df083ed5eb1a2c808f7a82ba4c90c8ad9781104808a7a54471fb"
+ "expeditionPallet_Print": "06613719475fcdba8309607c38cc78efc2e348cca7bc96b48dc3ae3c12426f54"
}
}
}
diff --git a/db/dbWatcher.js b/db/dbWatcher.js
new file mode 100644
index 0000000000..e9389132d1
--- /dev/null
+++ b/db/dbWatcher.js
@@ -0,0 +1,24 @@
+const fs = require('fs');
+const {spawn} = require('child_process');
+
+function watchDatabaseChanges() {
+ console.log('Watching for changes in db/routines and db/versions');
+ fs.watch('db', {recursive: true}, (eventType, filename) => {
+ if (filename.endsWith('.sql')) {
+ let command;
+ if (filename.startsWith('routines')) command = 'push';
+ else if (filename.startsWith('versions')) command = 'run';
+
+ if (command) {
+ const process = spawn('myt', [command]);
+ process.stdout.on('data', data => console.log(data.toString()));
+ process.stderr.on('data', data => console.error(`stderr: ${data}`));
+ process.on('error', error => console.error(`error: ${error.message}`));
+ process.on('close', () => console.log('Watching for changes in db/routines and db/versions'));
+ }
+ }
+ });
+}
+
+if (require.main === module) watchDatabaseChanges();
+module.exports = watchDatabaseChanges;
diff --git a/db/dump/.dump/data.sql b/db/dump/.dump/data.sql
index aba4507cfa..778f6f23bf 100644
--- a/db/dump/.dump/data.sql
+++ b/db/dump/.dump/data.sql
@@ -3,7 +3,7 @@ USE `util`;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-INSERT INTO `version` VALUES ('vn-database','11018','878ee9e3039dd06ad456fa475f0d646d8bae3d4b','2024-05-07 07:34:42','11032');
+INSERT INTO `version` VALUES ('vn-database','11071','60ac8cf6fc77b99b199b27866011b1efe8c961e8','2024-05-28 07:32:50','11074');
INSERT INTO `versionLog` VALUES ('vn-database','10107','00-firstScript.sql','jenkins@10.0.2.69','2022-04-23 10:53:53',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10112','00-firstScript.sql','jenkins@10.0.2.69','2022-05-09 09:14:53',NULL,NULL);
@@ -651,6 +651,7 @@ INSERT INTO `versionLog` VALUES ('vn-database','10855','00-firstScript.sql','jen
INSERT INTO `versionLog` VALUES ('vn-database','10856','00-cloneAcl.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-02-22 08:32:57',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10857','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-02-22 08:32:57',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10858','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-02-15 09:46:06',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','10859','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:25',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10861','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-02-15 09:46:06',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10862','00-alterAgencyTermConfig.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-03-07 08:12:55',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10862','00-alterGastosResumen.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-03-07 08:12:55',NULL,NULL);
@@ -758,6 +759,7 @@ INSERT INTO `versionLog` VALUES ('vn-database','10953','06-srt.sql','jenkins@db-
INSERT INTO `versionLog` VALUES ('vn-database','10953','07-util.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-04 07:34:55',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10953','08-vn.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-04 07:34:56',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10953','08-vn2.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-04 07:34:58',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','10955','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:16',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10956','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-04 07:34:58',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10957','00-aclTicketClone.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-04 07:34:58',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10959','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-03-18 13:32:25',NULL,NULL);
@@ -776,16 +778,57 @@ INSERT INTO `versionLog` VALUES ('vn-database','10977','00-firstScript.sql','jen
INSERT INTO `versionLog` VALUES ('vn-database','10984','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10988','00-pbx_prefix.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-04-11 17:00:16',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10990','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','10991','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:26',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','10992','00-acl.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:26',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','10992','00-referenceRate.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:26',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10994','00-modifyAcls.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','10995','01-agencyLogCreate.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:26',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','10995','02-agencyWorkCenterCreate.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:26',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','10995','03-tableAcl.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:26',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10996','00-dropOrderRecalc.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10996','01-dropTicketRecalc.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10996','02-dropTravelRecalc.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:31:59',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','10997','00-groupingMode.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:34:21',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11000','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:16',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11001','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:26',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11002','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:26',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11003','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:34:21',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11006','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:16',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11007','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:34:21',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11008','00-alter.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:27',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11010','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:17',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11012','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:27',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11013','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:17',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11014','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:27',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11016','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-27 13:16:09',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11018','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-07 07:34:21',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11019','00-locker.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:17',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11019','01-aclLocker.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:17',NULL,NULL);
INSERT INTO `versionLog` VALUES ('vn-database','11021','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-04-30 09:07:56',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11022','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:17',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11026','00-entryAlter.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:27',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11026','01-entryUpdate.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:27',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11026','02-entryInternal.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:27',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11030','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:17',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11031','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-14 07:45:27',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11033','00-rollbackAcls.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-07 12:45:45',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11034','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:17',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11037','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:17',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11038','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:17',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11040','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:31',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11044','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:31',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11045','00-firstScript.sql','jenkins@db-proxy2.servers.dc.verdnatura.es','2024-05-10 14:53:29',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11046','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:46',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11051','00-sipConfig_callLimit.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-14 14:31:10',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11054','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:46',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11055','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:46',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11057','00-part.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:46',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11057','01-part.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:47',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11057','02-part.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:47',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11057','03-part.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:48',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11058','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:48',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11061','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:48',NULL,NULL);
+INSERT INTO `versionLog` VALUES ('vn-database','11071','00-firstScript.sql','jenkins@db-proxy1.servers.dc.verdnatura.es','2024-05-28 07:32:48',NULL,NULL);
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
@@ -1072,7 +1115,6 @@ INSERT INTO `roleInherit` VALUES (249,109,18,NULL);
INSERT INTO `roleInherit` VALUES (250,109,13,NULL);
INSERT INTO `roleInherit` VALUES (251,51,21,NULL);
INSERT INTO `roleInherit` VALUES (253,48,49,NULL);
-INSERT INTO `roleInherit` VALUES (254,110,1,NULL);
INSERT INTO `roleInherit` VALUES (255,110,76,NULL);
INSERT INTO `roleInherit` VALUES (256,48,69,NULL);
INSERT INTO `roleInherit` VALUES (257,47,111,NULL);
@@ -1147,6 +1189,7 @@ INSERT INTO `roleInherit` VALUES (360,101,129,NULL);
INSERT INTO `roleInherit` VALUES (361,50,112,NULL);
INSERT INTO `roleInherit` VALUES (362,122,15,NULL);
INSERT INTO `roleInherit` VALUES (364,35,18,NULL);
+INSERT INTO `roleInherit` VALUES (365,123,119,NULL);
INSERT INTO `userPassword` VALUES (1,7,1,0,2,1);
@@ -1683,9 +1726,9 @@ INSERT INTO `ACL` VALUES (610,'Ticket','deliveryNoteCsv','READ','ALLOW','ROLE','
INSERT INTO `ACL` VALUES (611,'State','find','READ','ALLOW','ROLE','employee');
INSERT INTO `ACL` VALUES (612,'State','findById','READ','ALLOW','ROLE','employee');
INSERT INTO `ACL` VALUES (613,'State','findOne','READ','ALLOW','ROLE','employee');
-INSERT INTO `ACL` VALUES (614,'Worker','find','READ','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (615,'Worker','findById','READ','ALLOW','ROLE','hr');
-INSERT INTO `ACL` VALUES (616,'Worker','findOne','READ','ALLOW','ROLE','hr');
+INSERT INTO `ACL` VALUES (614,'Worker','find','READ','ALLOW','ROLE','employee');
+INSERT INTO `ACL` VALUES (615,'Worker','findById','READ','ALLOW','ROLE','employee');
+INSERT INTO `ACL` VALUES (616,'Worker','findOne','READ','ALLOW','ROLE','employee');
INSERT INTO `ACL` VALUES (617,'Worker','filter','READ','ALLOW','ROLE','employee');
INSERT INTO `ACL` VALUES (618,'Worker','getWorkedHours','READ','ALLOW','ROLE','employee');
INSERT INTO `ACL` VALUES (619,'Worker','active','READ','ALLOW','ROLE','employee');
@@ -1861,7 +1904,22 @@ INSERT INTO `ACL` VALUES (825,'Application','getEnumValues','*','ALLOW','ROLE','
INSERT INTO `ACL` VALUES (826,'Ticket','editZone','WRITE','ALLOW','ROLE','salesAssistant');
INSERT INTO `ACL` VALUES (827,'TicketWeekly','deleteById','WRITE','ALLOW','ROLE','buyerBoss');
INSERT INTO `ACL` VALUES (828,'TicketWeekly','upsert','WRITE','ALLOW','ROLE','buyer');
-INSERT INTO `ACL` VALUES (829,'Worker','__get__summary','READ','ALLOW','ROLE','employee');
+INSERT INTO `ACL` VALUES (830,'InvoiceIn','*','READ','ALLOW','ROLE','deliveryBoss');
+INSERT INTO `ACL` VALUES (831,'InvoiceIn','exchangeRateUpdate','*','ALLOW','ROLE','employee');
+INSERT INTO `ACL` VALUES (832,'AgencyLog','*','READ','ALLOW','ROLE','employee');
+INSERT INTO `ACL` VALUES (833,'AgencyWorkCenter','*','READ','ALLOW','ROLE','employee');
+INSERT INTO `ACL` VALUES (834,'AgencyMode','*','READ','ALLOW','ROLE','employee');
+INSERT INTO `ACL` VALUES (835,'Agency','*','READ','ALLOW','ROLE','employee');
+INSERT INTO `ACL` VALUES (836,'Agency','*','WRITE','ALLOW','ROLE','deliveryAssistant');
+INSERT INTO `ACL` VALUES (837,'AgencyWorkCenter','*','WRITE','ALLOW','ROLE','deliveryAssistant');
+INSERT INTO `ACL` VALUES (838,'Worker','getAvailablePda','READ','ALLOW','ROLE','hr');
+INSERT INTO `ACL` VALUES (839,'Locker','__get__codes','READ','ALLOW','ROLE','employee');
+INSERT INTO `ACL` VALUES (840,'Locker','*','*','ALLOW','ROLE','hr');
+INSERT INTO `ACL` VALUES (841,'Locker','*','*','ALLOW','ROLE','productionBoss');
+INSERT INTO `ACL` VALUES (842,'Worker','__get__locker','READ','ALLOW','ROLE','hr');
+INSERT INTO `ACL` VALUES (843,'Worker','__get__locker','READ','ALLOW','ROLE','productionBoss');
+INSERT INTO `ACL` VALUES (844,'RoadmapStop','*','*','ALLOW','ROLE','production');
+INSERT INTO `ACL` VALUES (845,'RoadmapStop','*','*','ALLOW','ROLE','productionBoss');
INSERT INTO `fieldAcl` VALUES (1,'Client','name','update','employee');
INSERT INTO `fieldAcl` VALUES (2,'Client','contact','update','employee');
@@ -2007,6 +2065,7 @@ INSERT INTO `businessType` VALUES ('others','Otros');
INSERT INTO `businessType` VALUES ('otherSector','Profesional de otro sector');
INSERT INTO `businessType` VALUES ('restoration','Restauración');
INSERT INTO `businessType` VALUES ('trainingCentre','Centro de formación');
+INSERT INTO `businessType` VALUES ('VIP','Very important person');
INSERT INTO `businessType` VALUES ('wholesaler','Mayorista');
INSERT INTO `businessType` VALUES ('worker','Trabajador');
@@ -2180,8 +2239,8 @@ INSERT INTO `continent` VALUES (3,'África','AF');
INSERT INTO `continent` VALUES (4,'Europa','EU');
INSERT INTO `continent` VALUES (5,'Oceanía','OC');
-INSERT INTO `department` VALUES (1,'VN','VERDNATURA',1,118,763,0,0,0,0,26,NULL,'/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (22,'shopping','COMPRAS',2,3,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (1,'VN','VERDNATURA',1,110,763,0,0,0,0,25,NULL,'/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (22,'shopping','COMPRAS',2,3,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (23,'CMA','CAMARA',13,14,NULL,72,1,1,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,1,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (31,'it','INFORMATICA',4,5,NULL,72,0,0,1,0,1,'/1/','informatica-cau',1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (34,'accounting','CONTABILIDAD',6,7,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
@@ -2191,54 +2250,50 @@ INSERT INTO `department` VALUES (37,'PROD','PRODUCCION',12,35,NULL,72,1,1,1,11,1
INSERT INTO `department` VALUES (38,'picking','SACADO',15,16,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (39,'packing','ENCAJADO',17,18,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (41,'administration','ADMINISTRACION',36,37,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (43,'VT','VENTAS',38,77,NULL,0,0,0,1,19,1,'/1/',NULL,1,'',1,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (44,'management','GERENCIA',78,79,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (45,'logistic','LOGISTICA',80,81,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (46,'delivery','REPARTO',82,83,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (48,'storage','ALMACENAJE',84,85,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (49,NULL,'PROPIEDAD',86,87,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (52,NULL,'CARGA AEREA',88,89,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (43,'VT','VENTAS',38,71,NULL,0,0,0,1,16,1,'/1/',NULL,1,'',1,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (44,'management','GERENCIA',72,73,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (45,'logistic','LOGISTICA',74,75,NULL,72,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (46,'delivery','REPARTO',76,77,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (48,'storage','ALMACENAJE',78,79,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (49,NULL,'PROPIEDAD',80,81,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (52,NULL,'CARGA AEREA',82,83,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (53,'marketing','MARKETING Y COMUNICACIÓN',39,40,NULL,72,0,0,2,0,43,'/1/43/',NULL,1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (54,NULL,'ORNAMENTALES',90,91,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (54,NULL,'ORNAMENTALES',84,85,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (55,NULL,'TALLER NATURAL',19,20,14548,72,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,1118,NULL,NULL,NULL);
INSERT INTO `department` VALUES (56,NULL,'TALLER ARTIFICIAL',21,22,8470,72,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,1927,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (58,'CMP','CAMPOS',92,95,NULL,72,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (59,'maintenance','MANTENIMIENTO',96,97,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (58,'CMP','CAMPOS',86,89,NULL,72,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (59,'maintenance','MANTENIMIENTO',90,91,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (60,'claims','RECLAMACIONES',41,42,NULL,72,0,0,2,0,43,'/1/43/',NULL,1,NULL,1,1,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (61,NULL,'VNH',98,101,NULL,73,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (66,NULL,'VERDNAMADRID',102,103,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (61,NULL,'VNH',92,95,NULL,73,0,0,1,1,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (66,NULL,'VERDNAMADRID',96,97,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (68,NULL,'COMPLEMENTOS',23,24,NULL,72,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (69,NULL,'VERDNABARNA',104,105,NULL,74,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (80,'vallesTeam','EQUIPO J VALLES',43,44,4250,72,0,0,2,0,43,'/1/43/','jvp_equipo',1,'equipojvalles@verdnatura.es',0,0,0,0,NULL,NULL,'5300',NULL);
-INSERT INTO `department` VALUES (86,NULL,'LIMPIEZA',106,107,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (89,NULL,'COORDINACION',108,109,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (90,NULL,'TRAILER',99,100,NULL,0,0,0,2,0,61,'/1/61/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (69,NULL,'VERDNABARNA',98,99,NULL,74,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (80,'spainTeam5','EQUIPO ESPAÑA 5',43,44,4250,0,0,0,2,0,43,'/1/43/','es5_equipo',1,'es5@verdnatura.es',0,0,0,0,NULL,NULL,'5300',NULL);
+INSERT INTO `department` VALUES (86,NULL,'LIMPIEZA',100,101,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (89,NULL,'COORDINACION',102,103,NULL,0,1,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (90,NULL,'TRAILER',93,94,NULL,0,0,0,2,0,61,'/1/61/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (91,'artificial','ARTIFICIAL',25,26,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (92,NULL,'EQUIPO SILVERIO',45,46,1203,0,0,0,2,0,43,'/1/43/','sdc_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (94,'brocalTeam','EQUIPO J BROCAL',47,48,3797,0,0,0,2,0,43,'/1/43/','jes_equipo',0,'equipojbrocal@verdnatura.es',0,0,0,0,NULL,NULL,'5100',NULL);
-INSERT INTO `department` VALUES (95,'spainTeam1','EQUIPO ESPAÑA 1',49,50,24065,0,0,0,2,0,43,'/1/43/','es1_equipo',0,'españa1@verdnatura.es',0,0,0,0,NULL,NULL,'5000',NULL);
+INSERT INTO `department` VALUES (94,'spainTeam2','EQUIPO ESPAÑA 2',47,48,3797,0,0,0,2,0,43,'/1/43/','es2_equipo',0,'es2@verdnatura.es',0,0,0,0,NULL,NULL,'5100',NULL);
+INSERT INTO `department` VALUES (95,'spainTeam1','EQUIPO ESPAÑA 1',49,50,24065,0,0,0,2,0,43,'/1/43/','es1_equipo',0,'es1@verdnatura.es',0,0,0,0,NULL,NULL,'5000',NULL);
INSERT INTO `department` VALUES (96,NULL,'EQUIPO C LOPEZ',51,52,4661,0,0,0,2,0,43,'/1/43/','cla_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (115,NULL,'EQUIPO CLAUDI',53,54,3810,0,0,0,2,0,43,'/1/43/','csr_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (123,NULL,'EQUIPO ELENA BASCUÑANA',55,56,7102,0,0,0,2,0,43,'/1/43/','ebt_equipo',0,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (124,NULL,'CONTROL INTERNO',110,111,NULL,72,0,0,1,0,1,'/1/',NULL,0,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (125,'miriamMarTeam','EQUIPO MIRIAM MAR',57,58,1118,0,0,0,2,0,43,'/1/43/','mir_equipo',0,'equipomirgir@verdnatura.es',0,0,0,0,NULL,NULL,'5200',NULL);
+INSERT INTO `department` VALUES (124,NULL,'CONTROL INTERNO',57,58,NULL,72,0,0,2,0,43,'/1/43/',NULL,0,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (125,'spainTeam3','EQUIPO ESPAÑA 3',59,60,1118,0,0,0,2,0,43,'/1/43/','es3_equipo',0,'es3@verdnatura.es',0,0,0,0,NULL,NULL,'5200',NULL);
INSERT INTO `department` VALUES (126,NULL,'PRESERVADO',27,28,NULL,0,0,0,2,0,37,'/1/37/',NULL,0,NULL,0,1,1,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (128,NULL,'PALETIZADO',29,30,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (130,NULL,'REVISION',31,32,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (131,'greenhouse','INVERNADERO',93,94,NULL,0,0,0,2,0,58,'/1/58/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (132,NULL,'EQUIPO DC',59,60,1731,0,0,0,2,0,43,'/1/43/','dc_equipo',1,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (133,'franceTeam','EQUIPO FRANCIA',61,62,1731,72,0,0,2,0,43,'/1/43/','fr_equipo',1,'gestionfrancia@verdnatura.es',0,0,0,0,NULL,NULL,'3300',NULL);
-INSERT INTO `department` VALUES (134,'portugalTeam','EQUIPO PORTUGAL',63,64,6264,0,0,0,2,0,43,'/1/43/','pt_equipo',1,'portugal@verdnatura.es',0,0,0,0,NULL,NULL,'3500',NULL);
-INSERT INTO `department` VALUES (135,'routers','ENRUTADORES',112,113,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (136,'heavyVehicles','VEHICULOS PESADOS',114,115,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (137,'sorter','SORTER',116,117,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (139,'soriaTeam','EQUIPO J SORIA ',65,66,3803,0,0,0,2,0,43,'/1/43/','jss_equipo',1,'equipojsoria@verdnatura.es',0,0,0,0,NULL,NULL,'5400',NULL);
-INSERT INTO `department` VALUES (140,'hollandTeam','EQUIPO HOLANDA',67,68,NULL,0,0,0,2,0,43,'/1/43/','nl_equipo',1,NULL,1,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (131,'greenhouse','INVERNADERO',87,88,NULL,0,0,0,2,0,58,'/1/58/',NULL,0,NULL,0,1,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (132,NULL,'EQUIPO DC',61,62,1731,0,0,0,2,0,43,'/1/43/','dc_equipo',1,'gestioncomercial@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (133,'franceTeam','EQUIPO FRANCIA',63,64,1731,72,0,0,2,0,43,'/1/43/','fr_equipo',1,'gestionfrancia@verdnatura.es',0,0,0,0,NULL,NULL,'3300',NULL);
+INSERT INTO `department` VALUES (134,'portugalTeam','EQUIPO PORTUGAL',65,66,6264,0,0,0,2,0,43,'/1/43/','pt_equipo',1,'portugal@verdnatura.es',0,0,0,0,NULL,NULL,'3500',NULL);
+INSERT INTO `department` VALUES (135,'routers','ENRUTADORES',104,105,NULL,0,0,0,1,0,1,'/1/',NULL,1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (136,'heavyVehicles','VEHICULOS PESADOS',106,107,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (137,'sorter','SORTER',108,109,NULL,0,0,0,1,0,1,'/1/',NULL,0,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `department` VALUES (139,'spainTeam4','EQUIPO ESPAÑA 4',67,68,3803,0,0,0,2,0,43,'/1/43/','es4_equipo',1,'es4@verdnatura.es',0,0,0,0,NULL,NULL,'5400',NULL);
+INSERT INTO `department` VALUES (140,'hollandTeam','EQUIPO HOLANDA',69,70,NULL,0,0,0,2,0,43,'/1/43/','nl_equipo',1,NULL,0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `department` VALUES (141,NULL,'PREVIA',33,34,NULL,0,1,0,2,0,37,'/1/37/',NULL,0,NULL,0,0,0,1,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (142,NULL,'EQUIPO ESPAÑA 2',69,70,3797,0,0,0,2,0,43,'/1/43/','jes_equipo',0,'equipojbrocal@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (143,NULL,'EQUIPO ESPAÑA 3',71,72,4379,0,0,0,2,0,43,'/1/43/','mir_equipo',0,'equipomirgir@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (144,NULL,'EQUIPO ESPAÑA 4',73,74,3803,0,0,0,2,0,43,'/1/43/','jss_equipo',0,'equipojsoria@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
-INSERT INTO `department` VALUES (145,NULL,'EQUIPO ESPAÑA 5',75,76,4250,0,0,0,2,0,43,'/1/43/','jvp_equipo',0,'equipojvalles@verdnatura.es',0,0,0,0,NULL,NULL,NULL,NULL);
INSERT INTO `docuware` VALUES (1,'deliveryNote','Albaranes cliente','find','find','N__ALBAR_N',NULL);
INSERT INTO `docuware` VALUES (2,'deliveryNote','Albaranes cliente','store','Archivar','N__ALBAR_N',NULL);
@@ -2541,7 +2596,7 @@ INSERT INTO `volumeConfig` VALUES (2.67,1.60,0.8,150,0.30,120,57,2.0,50,200,10,1
INSERT INTO `workCenter` VALUES (1,'Silla',20,859,1,'Av espioca 100',552703,NULL);
INSERT INTO `workCenter` VALUES (2,'Mercaflor',19,NULL,NULL,NULL,NULL,NULL);
INSERT INTO `workCenter` VALUES (3,'Marjales',26,20008,NULL,NULL,NULL,NULL);
-INSERT INTO `workCenter` VALUES (4,'VNH',NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `workCenter` VALUES (4,'VNH',NULL,NULL,7,NULL,NULL,NULL);
INSERT INTO `workCenter` VALUES (5,'Madrid',28,2869,5,'Av constitución 3',554145,2.00);
INSERT INTO `workCenter` VALUES (6,'Vilassar',88,88038,NULL,'Cami del Crist, 33',556412,NULL);
INSERT INTO `workCenter` VALUES (7,'Tenerife',NULL,NULL,NULL,NULL,NULL,NULL);
diff --git a/db/dump/.dump/privileges.sql b/db/dump/.dump/privileges.sql
index ad060f997b..39b7d4a8c5 100644
--- a/db/dump/.dump/privileges.sql
+++ b/db/dump/.dump/privileges.sql
@@ -327,20 +327,16 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','logistic','price_fixed','
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','printQueue','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','preservedBoss','travel','alexm@%','0000-00-00 00:00:00','Insert,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyer','travel','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','logistic','Cubos_Retorno','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','hr','Cubos','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyerAssistant','itemType','jgallego@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyer','Cubos','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','salesPerson','Cubos','alexm@%','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyerBoss','Cubos_Retorno','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','artificialBoss','state','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','logistic','travel','alexm@%','0000-00-00 00:00:00','Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','administrative','Bancos_poliza','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','production','cmr','guillermo@db-proxy1.static.verdnatura.es','0000-00-00 00:00:00','Insert','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','administrative','duaDismissed','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','employee','edi_article','alexm@%','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','logistic','edi_bucket','alexm@%','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','logistic','edi_bucket_type','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyer','time','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','operator','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','payment','alexm@db-proxy1.static.verdnatura.es','0000-00-00 00:00:00','Insert','');
@@ -553,7 +549,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','client','alexm@%',
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','saleVolume','alexm@%','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','hr','Proveedores_gestdoc','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','hr','awb_gestdoc','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyerBoss','Cubos','alexm@%','0000-00-00 00:00:00','Insert,Update','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyerAssistant','Cubos','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Insert,Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','routesMonitor','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','Update');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','adminBoss','sale','alexm@%','0000-00-00 00:00:00','Insert','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','sale','alexm@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Delete','Update');
@@ -1304,7 +1300,7 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','claimState','juan@d
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','company','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','srt','grafana','buffer','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','greuge','juan@db-proxy2.static.verdnatura.es','0000-00-00 00:00:00','Select','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','item','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','','Select,Update');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','item','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','','Select,Update');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','coolerBoss','itemShelving','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Update','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','negativeOrigin','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','deliveryBoss','Vehiculos_consumo','carlosap@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
@@ -1379,9 +1375,9 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','zoneIncluded','guil
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','zoneGeo','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','quality','alexm@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','logisticAssist','category','alexm@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Update,Delete','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyerAssistant','edi_bucket_type','carlosap@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyer','edi_bucket','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','ektEntryAssign','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Delete','');
-INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyerAssistant','edi_bucket','carlosap@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyer','edi_bucket_type','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','calendarType','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','timeSlots','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','buyer','supplierFreight','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
@@ -1395,6 +1391,21 @@ INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','deliveryNote','guil
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','invoiceOutExpense','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','delivery','carlosap@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','entry','jenkins@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Update','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn2008','buyer','Cubos_Retorno','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','claimDestination','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','entryConfig','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','farmingDeliveryNote','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','sage','grafana','TiposIva','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','bs','buyer','waste','alexm@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','clientObservation','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','administrative','invoiceInConfig','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','workerActivity','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','bankPolicy','alexm@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Delete','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','bankPolicyDetail','alexm@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Delete','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','financial','bankPolicyReview','alexm@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select,Insert,Delete','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','grafana','chat','guillermo@db-proxy1.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','production','roadmapStop','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
+INSERT IGNORE INTO `tables_priv` VALUES ('','vn','employee','agencyWorkCenter','guillermo@db-proxy2.servers.dc.verdnatura.es','0000-00-00 00:00:00','Select','');
/*!40000 ALTER TABLE `tables_priv` ENABLE KEYS */;
/*!40000 ALTER TABLE `columns_priv` DISABLE KEYS */;
@@ -1590,10 +1601,7 @@ INSERT IGNORE INTO `columns_priv` VALUES ('','vn','employee','item','editorFk',
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','employee','item','recycledPlastic','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','employee','item','nonRecycledPlastic','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','employee','item','minQuantity','0000-00-00 00:00:00','Update');
-INSERT IGNORE INTO `columns_priv` VALUES ('','vn','buyer','item','size','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','buyer','item','originFk','0000-00-00 00:00:00','Select,Update');
-INSERT IGNORE INTO `columns_priv` VALUES ('','vn','buyer','item','longName','0000-00-00 00:00:00','Update');
-INSERT IGNORE INTO `columns_priv` VALUES ('','vn','buyer','item','name','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','employee','ticket','id','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','employee','ticket','warehouseFk','0000-00-00 00:00:00','Update');
INSERT IGNORE INTO `columns_priv` VALUES ('','vn','employee','ticket','shipped','0000-00-00 00:00:00','Update');
@@ -1719,18 +1727,13 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','buy_afterUpsert','PROC
INSERT IGNORE INTO `procs_priv` VALUES ('','util','grafana','dayend','FUNCTION','juan@db-proxy2.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','srt','production','buffer_settypebyname','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','buyUltimate','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn2008','financialBoss','balance_create','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','claimManager','buyUltimate','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','barcodeToItem','FUNCTION','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','ticket_splititempackingtype','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','entry_getCommission','FUNCTION','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','deliveryAssistant','expeditionstate_addbypallet','PROCEDURE','alexm@db-proxy2.static.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn2008','buyer','buy_tarifas_entry','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn2008','entryEditor','buy_tarifas','PROCEDURE','guillermo@db-proxy2.static.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn2008','claimManager','buy_tarifas_entry','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','hr','mail_insert','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','entry_fixMisfit','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn2008','employee','buy_tarifas_entry','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','util','guest','VN_CURDATE','FUNCTION','juan@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','marketingBoss','clientTaxArea','FUNCTION','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','clientTaxArea','FUNCTION','alexm@%','Execute','0000-00-00 00:00:00');
@@ -1766,7 +1769,6 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','productionBoss','saleSplit','P
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','grafana','client_getDebt','FUNCTION','guillermo@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','client_getDebt','PROCEDURE','guillermo@db-proxy2.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','util','guest','tx_commit','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn2008','hrBoss','balance_create','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','cooler','buyultimate','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','util','grafana','firstdayofyear','FUNCTION','juan@db-proxy2.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','util','claimManager','dayend','FUNCTION','alexm@%','Execute','0000-00-00 00:00:00');
@@ -1874,7 +1876,6 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','duaParcialMak
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','palletizerBoss','packingsite_startcollection','PROCEDURE','alexm@db-proxy2.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','sale_calculatecomponent','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','salesPerson','manaspellersrequery','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn','adminBoss','packageinvoicing','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','packinglistswitch','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','previoussticker_get','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','productioncontrol','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
@@ -1913,7 +1914,7 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','account','guest','myuser_hasroutine
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','productionAssi','timebusiness_calculateall','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','timecontrol_geterror','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','logistic','travel_weeklyclone','PROCEDURE','alexm@%','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','buy_recalcPricesByBuy','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','buy_recalcPricesByBuy','PROCEDURE','jenkins@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','handmadeBoss','confection_controlSource','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','bi','productionAssi','rutasanalyze','PROCEDURE','alexm@db-proxy2.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','productionPlus','workerCreateExternal','PROCEDURE','juan@10.5.1.2','Execute','0000-00-00 00:00:00');
@@ -1977,7 +1978,6 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','expeditionscan_ad
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','expeditionscan_list','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','expeditionscan_put','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','cmrpallet_add','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','itemtrash','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','item_getbalance','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','expedition_checkroute','FUNCTION','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','production','addnotefromdelivery','PROCEDURE','alexm@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
@@ -2030,7 +2030,6 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','expeditionscan_add'
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','expeditionscan_list','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','expeditionscan_put','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','cmrpallet_add','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','itemtrash','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','item_getbalance','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','expedition_checkroute','FUNCTION','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','delivery','addnotefromdelivery','PROCEDURE','guillermo@db-proxy1.static.verdnatura.es','Execute','0000-00-00 00:00:00');
@@ -2044,7 +2043,7 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','util','guest','tx_rollback','PROCED
INSERT IGNORE INTO `procs_priv` VALUES ('','util','guest','tx_start','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','buy_recalcPrices','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','buy_recalcPricesByAwb','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
-INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','buy_recalcPricesByEntry','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','buyer','buy_recalcPricesByEntry','PROCEDURE','jenkins@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','util','hr','accountNumberToIban','FUNCTION','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','util','financial','accountNumberToIban','FUNCTION','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','administrative','supplier_statement','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
@@ -2059,6 +2058,14 @@ INSERT IGNORE INTO `procs_priv` VALUES ('','vn','artificialBoss','confection_co
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','financial','remittance_calc','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','util','developer','connection_kill','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
INSERT IGNORE INTO `procs_priv` VALUES ('','vn','financial','client_getRisk','PROCEDURE','jenkins@db-proxy1.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','grafana','item_ValuateInventory','PROCEDURE','guillermo@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','financialBoss','balance_create','PROCEDURE','jenkins@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','hrBoss','balance_create','PROCEDURE','jenkins@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','claimManager','buy_recalcPricesByEntry','PROCEDURE','jenkins@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','buy_recalcPricesByEntry','PROCEDURE','jenkins@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','entryEditor','buy_recalcPricesByBuy','PROCEDURE','jenkins@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','claimManager','buy_recalcPricesByBuy','PROCEDURE','jenkins@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
+INSERT IGNORE INTO `procs_priv` VALUES ('','vn','employee','buy_recalcPricesByBuy','PROCEDURE','jenkins@db-proxy2.servers.dc.verdnatura.es','Execute','0000-00-00 00:00:00');
/*!40000 ALTER TABLE `procs_priv` ENABLE KEYS */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
diff --git a/db/dump/.dump/structure.sql b/db/dump/.dump/structure.sql
index b00758ac5d..b61cbcc5c2 100644
--- a/db/dump/.dump/structure.sql
+++ b/db/dump/.dump/structure.sql
@@ -2653,22 +2653,6 @@ SET character_set_client = utf8;
1 AS `Consumo` */;
SET character_set_client = @saved_cs_client;
---
--- Temporary table structure for view `last_Id_Cubo`
---
-
-DROP TABLE IF EXISTS `last_Id_Cubo`;
-/*!50001 DROP VIEW IF EXISTS `last_Id_Cubo`*/;
-SET @saved_cs_client = @@character_set_client;
-SET character_set_client = utf8;
-/*!50001 CREATE VIEW `last_Id_Cubo` AS SELECT
- 1 AS `Id_Compra`,
- 1 AS `Id_Article`,
- 1 AS `warehouse_id`,
- 1 AS `Id_Cubo`,
- 1 AS `Packing` */;
-SET character_set_client = @saved_cs_client;
-
--
-- Table structure for table `live_counter__`
--
@@ -2836,20 +2820,6 @@ CREATE TABLE `tarifa_warehouse__` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #5744 Deprecated 2023-06-06\nAlmacena los valores de gasto por almacen';
/*!40101 SET character_set_client = @saved_cs_client */;
---
--- Temporary table structure for view `v_ventas_contables`
---
-
-DROP TABLE IF EXISTS `v_ventas_contables`;
-/*!50001 DROP VIEW IF EXISTS `v_ventas_contables`*/;
-SET @saved_cs_client = @@character_set_client;
-SET character_set_client = utf8;
-/*!50001 CREATE VIEW `v_ventas_contables` AS SELECT
- 1 AS `year`,
- 1 AS `month`,
- 1 AS `importe` */;
-SET character_set_client = @saved_cs_client;
-
--
-- Dumping events for database 'bi'
--
@@ -2892,7 +2862,7 @@ BEGIN
WHERE Periodo < vMaxPeriod;
SELECT MIN(period) INTO vCurrentPeriod
- FROM vn2008.time
+ FROM vn.time
WHERE period > vPreviousPeriod;
SET vYear = FLOOR(vCurrentPeriod / 100);
@@ -2934,7 +2904,7 @@ BEGIN
WHERE periodo < vMaxPeriod;
SELECT MIN(period) INTO vCurrentPeriod
- FROM vn2008.time
+ FROM vn.time
WHERE period > vPreviousPeriod;
SET vYear = FLOOR(vCurrentPeriod / 100);
@@ -2976,7 +2946,7 @@ BEGIN
WHERE periodo < vMaxPeriod;
SELECT MIN(period) INTO vCurrentPeriod
- FROM vn2008.time
+ FROM vn.time
WHERE period > vPreviousPeriod;
SET vYear = FLOOR(vCurrentPeriod / 100);
@@ -3024,7 +2994,7 @@ BEGIN
WHERE periodo < vMaxPeriod;
SELECT MIN(period) INTO vCurrentPeriod
- FROM vn2008.time
+ FROM vn.time
WHERE period > vPreviousPeriod;
SET vYear = FLOOR(vCurrentPeriod / 100);
@@ -3066,7 +3036,7 @@ BEGIN
WHERE periodo < vMaxPeriod;
SELECT MIN(period) INTO vCurrentPeriod
- FROM vn2008.time
+ FROM vn.time
WHERE period > vPreviousPeriod;
SET vYear = FLOOR(vCurrentPeriod / 100);
@@ -3162,32 +3132,32 @@ BEGIN
Importe
)
SELECT
- tp.Tipo AS Familia,
- r.reino AS Reino,
- tr.CodigoTrabajador AS Comercial,
- tr2.CodigoTrabajador AS Comprador,
- p.name AS Provincia,
- w.name AS almacen,
- tm.year AS Año,
- tm.month AS Mes,
- tm.week AS Semana,
- dm.description AS Vista,
- bt.importe AS Importe
+ it.name,
+ ic.name,
+ w.code,
+ w2.code,
+ p.name,
+ wa.name,
+ tm.year,
+ tm.month,
+ tm.week,
+ dm.description,
+ bt.importe
FROM bs.ventas bt
- LEFT JOIN vn2008.Tipos tp ON tp.tipo_id = bt.tipo_id
- LEFT JOIN vn2008.reinos r ON r.id = tp.reino_id
- LEFT JOIN vn2008.Clientes c on c.Id_Cliente = bt.Id_Cliente
- LEFT JOIN vn2008.Trabajadores tr ON tr.Id_Trabajador = c.Id_Trabajador
- LEFT JOIN vn2008.Trabajadores tr2 ON tr2.Id_Trabajador = tp.Id_Trabajador
- JOIN vn2008.time tm ON tm.date = bt.fecha
- JOIN vn2008.Movimientos m ON m.Id_Movimiento = bt.Id_Movimiento
- LEFT JOIN vn.ticket t ON t.id = m.Id_Ticket
- JOIN vn2008.Agencias a ON a.Id_Agencia = t.agencyModeFk
- LEFT JOIN vn.deliveryMethod dm ON dm.id = a.Vista
- LEFT JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = t.addressFk
- LEFT JOIN vn2008.province p ON p.province_id = cs.province_id
- LEFT JOIN vn.warehouse w ON w.id = t.warehouseFk
- WHERE bt.fecha >= vLastMonth AND r.mercancia;
+ LEFT JOIN vn.itemType it ON it.id = bt.tipo_id
+ LEFT JOIN vn.itemCategory ic ON ic.id = it.categoryFk
+ LEFT JOIN vn.client c on c.id = bt.Id_Cliente
+ LEFT JOIN vn.worker w ON w.id = c.salesPersonFk
+ LEFT JOIN vn.worker w2 ON w2.id = it.workerFk
+ JOIN vn.time tm ON tm.dated = bt.fecha
+ JOIN vn.sale s ON s.id = bt.Id_Movimiento
+ LEFT JOIN vn.ticket t ON t.id = s.ticketFk
+ JOIN vn.agencyMode am ON am.id = t.agencyModeFk
+ LEFT JOIN vn.deliveryMethod dm ON dm.id = am.deliveryMethodFk
+ LEFT JOIN vn.address a ON a.id = t.addressFk
+ LEFT JOIN vn.province p ON p.id = a.provinceFk
+ LEFT JOIN vn.warehouse wa ON wa.id = t.warehouseFk
+ WHERE bt.fecha >= vLastMonth AND ic.merchandise;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -3218,46 +3188,45 @@ BEGIN
INSERT INTO vn.greuge(shipped, clientFk, description,
amount, greugeTypeFk, ticketFk)
- SELECT cm.Fecha
- , cm.Id_Cliente
- , concat('Claim ',cm.id,' : ', m.Concepte)
- ,round( -1 * ((sensib -1)/4) * Cantidad *
- Preu * (100 - Descuento) / 100, 2) AS Reclamaciones
+ SELECT c.ticketCreated
+ , c.clientFk
+ , concat('Claim ', c.id,' : ', s.concept)
+ ,round( -1 * ((c.responsibility -1)/4) * s.quantity *
+ s.price * (100 - s.discount) / 100, 2)
, 4
- , m.Id_Ticket
- FROM vn2008.Movimientos m
- JOIN vn2008.cl_act ca USING(Id_Movimiento)
- JOIN vn2008.cl_main cm ON cm.id = ca.cl_main_id
- WHERE ca.cl_sol_id NOT IN (1,5)
- AND ca.greuge = 0
- AND cm.cl_est_id = 3;
+ , s.ticketFk
+ FROM vn.sale s
+ JOIN vn.claimEnd ce ON ce.saleFk = s.id
+ JOIN vn.claim c ON c.id = ce.claimFk
+ WHERE ce.claimDestinationFk NOT IN (1,5)
+ AND NOT ce.isGreuge
+ AND c.claimStateFk = 3;
-- Reclamaciones que pasan a Maná
INSERT INTO vn.greuge(shipped, clientFk, description,
amount, greugeTypeFk, ticketFk)
- SELECT cm.Fecha
- , cm.Id_Cliente
- , concat('Claim_mana ',cm.id,' : ', m.Concepte)
- ,round( ((sensib -1)/4) * Cantidad * Preu * (100 - Descuento) / 100, 2)
- AS Reclamaciones
+ SELECT c.ticketCreated
+ , c.clientFk
+ , concat('Claim_mana ',c.id,' : ', s.concept)
+ ,round( ((c.responsibility -1)/4) * s.quantity * s.price * (100 - s.discount) / 100, 2)
,3
- ,m.Id_Ticket
- FROM vn2008.Movimientos m
- JOIN vn2008.cl_act ca USING(Id_Movimiento)
- JOIN vn2008.cl_main cm ON cm.id = ca.cl_main_id
- WHERE ca.cl_sol_id NOT IN (1,5)
- AND ca.greuge = 0
- AND cm.cl_est_id = 3
- AND cm.mana;
+ ,s.ticketFk
+ FROM vn.sale s
+ JOIN vn.claimEnd ce ON ce.saleFk = s.id
+ JOIN vn.claim c ON c.id = ce.claimFk
+ WHERE ce.claimDestinationFk NOT IN (1,5)
+ AND NOT ce.isGreuge
+ AND c.claimStateFk = 3
+ AND c.isChargedToMana;
-- Marcamos para no repetir
- UPDATE vn2008.cl_act ca
- JOIN vn2008.cl_main cm ON cm.id = ca.cl_main_id
- SET greuge = 1
- WHERE ca.cl_sol_id NOT IN (1,5)
- AND ca.greuge = 0
- AND cm.cl_est_id = 3;
+ UPDATE vn.claimEnd ce
+ JOIN vn.claim c ON c.id = ce.claimFk
+ SET c.isChargedToMana = TRUE
+ WHERE ce.claimDestinationFk NOT IN (1,5)
+ AND NOT ce.isGreuge
+ AND c.claimStateFk = 3;
-- Recobros
@@ -3265,17 +3234,17 @@ BEGIN
CREATE TEMPORARY TABLE tmp.ticket_list
(PRIMARY KEY (Id_Ticket))
SELECT DISTINCT t.id Id_Ticket
- FROM vn2008.Movimientos_componentes mc
- JOIN vn2008.Movimientos m ON mc.Id_Movimiento = m.Id_Movimiento
- JOIN vn.ticket t ON t.id = m.Id_Ticket
+ FROM vn.saleComponent sc
+ JOIN vn.sale s ON sc.saleFk = s.id
+ JOIN vn.ticket t ON t.id = s.ticketFk
JOIN vn.ticketLastState ts ON ts.ticketFk = t.id
JOIN vn.ticketTracking tt ON tt.id = ts.ticketTrackingFk
- JOIN vn.state s ON s.id = tt.stateFk
- WHERE mc.Id_Componente = 17
- AND mc.greuge = 0
+ JOIN vn.state st ON st.id = tt.stateFk
+ WHERE sc.componentFk = 17
+ AND sc.isGreuge = 0
AND t.shipped >= '2016-10-01'
AND t.shipped < util.VN_CURDATE()
- AND s.alertLevel >= 3;
+ AND st.alertLevel >= 3;
DELETE g.*
FROM vn.greuge g
@@ -3285,24 +3254,24 @@ BEGIN
INSERT INTO vn.greuge(clientFk, description, amount,shipped,
greugeTypeFk, ticketFk)
SELECT t.clientFk
- ,concat('recobro ', m.Id_Ticket), - round(SUM(mc.Valor*Cantidad),2)
- AS dif
- ,date(t.shipped)
+ ,concat('recobro ', s.ticketFk), - round(SUM(sc.value*s.quantity),2)
+ AS dif,
+ date(t.shipped)
, 2
,tt.Id_Ticket
- FROM vn2008.Movimientos m
- JOIN vn.ticket t ON t.id = m.Id_Ticket
+ FROM vn.sale s
+ JOIN vn.ticket t ON t.id = s.ticketFk
JOIN tmp.ticket_list tt ON tt.Id_Ticket = t.id
- JOIN vn2008.Movimientos_componentes mc
- ON mc.Id_Movimiento = m.Id_Movimiento AND mc.Id_Componente = 17
+ JOIN vn.saleComponent sc
+ ON sc.saleFk = s.id AND sc.componentFk = 17
GROUP BY t.id
HAVING ABS(dif) > 1;
- UPDATE vn2008.Movimientos_componentes mc
- JOIN vn2008.Movimientos m ON m.Id_Movimiento = mc.Id_Movimiento
- JOIN tmp.ticket_list tt ON tt.Id_Ticket = m.Id_Ticket
- SET greuge = 1
- WHERE Id_Componente = 17;
+ UPDATE vn.saleComponent sc
+ JOIN vn.sale s ON s.id = sc.saleFk
+ JOIN tmp.ticket_list tt ON tt.Id_Ticket = s.ticketFk
+ SET sc.isGreuge = 1
+ WHERE sc.componentFk = 17;
/*
* Recalculamos la ratio de las reclamaciones, que luego
@@ -3310,26 +3279,25 @@ BEGIN
*/
REPLACE bi.claims_ratio(Id_Cliente, Consumo, Reclamaciones, Ratio, recobro)
- SELECT Id_Cliente, 0,0,0,0
- FROM vn2008.Clientes;
+ SELECT id, 0,0,0,0
+ FROM vn.client;
REPLACE bi.claims_ratio(Id_Cliente, Consumo, Reclamaciones, Ratio, recobro)
SELECT fm.Id_Cliente, 12 * fm.Consumo, Reclamaciones,
- round(Reclamaciones / (12*fm.Consumo),4) AS Ratio, 0
+ round(Reclamaciones / (12*fm.Consumo),4), 0
FROM bi.facturacion_media_anual fm
LEFT JOIN(
- SELECT cm.Id_Cliente, round(sum(-1 * ((sensib -1)/4) *
- Cantidad * Preu * (100 - Descuento) / 100))
+ SELECT c.clientFk, round(sum(-1 * ((c.responsibility -1)/4) *
+ s.quantity * s.price * (100 - s.discount) / 100))
AS Reclamaciones
- FROM vn2008.Movimientos m
- JOIN vn2008.cl_act ca
- ON ca.Id_Movimiento = m.Id_Movimiento
- JOIN vn2008.cl_main cm ON cm.id = ca.cl_main_id
- WHERE ca.cl_sol_id NOT IN (1,5)
- AND cm.cl_est_id = 3
- AND cm.Fecha >= TIMESTAMPADD(YEAR, -1, util.VN_CURDATE())
- GROUP BY cm.Id_Cliente
- ) claims ON claims.Id_Cliente = fm.Id_Cliente;
+ FROM vn.sale s
+ JOIN vn.claimEnd ce ON ce.saleFk = s.id
+ JOIN vn.claim c ON c.id = ce.claimFk
+ WHERE ce.claimDestinationFk NOT IN (1,5)
+ AND c.claimStateFk = 3
+ AND c.ticketCreated >= TIMESTAMPADD(YEAR, -1, util.VN_CURDATE())
+ GROUP BY c.clientFk
+ ) claims ON claims.clientFk = fm.Id_Cliente;
-- Calculamos el porcentaje del recobro para añadirlo al precio de venta
@@ -3358,7 +3326,7 @@ BEGIN
-- CLIENTE 5523, VERDECORA
UPDATE bi.claims_ratio SET recobro = GREATEST(0.12, recobro) WHERE Id_Cliente = 5523;
- -- CLIENTE 15979, SERVEIS VETERINARIS
+ -- CLIENTE 15979, SERVEIS VETERINARIS
UPDATE bi.claims_ratio SET recobro = GREATEST(0.05, recobro) WHERE Id_Cliente = 15979;
-- CLIENTE 5189 i 8942, son de CSR i son el mateix client
@@ -3409,126 +3377,6 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `clean_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_unicode_ci */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `clean_launcher`()
-BEGIN
-/**
- * Borra registros de las principales tablas (excepto de "ticket").
- */
- CALL vn2008.clean(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 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `comparativa_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 */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `comparativa_add`()
-BEGIN
- DECLARE lastCOMP INT; # Se trata de una variable para almacenar el ultimo valor del Periodo
- DECLARE vMaxPeriod INT;
- DECLARE vMaxWeek INT;
-
- SELECT t.period, t.`week` INTO vMaxPeriod, vMaxWeek
- FROM vn.`time` t
- WHERE t.dated = util.VN_CURDATE();
-
- SELECT MAX(Periodo) INTO lastCOMP FROM vn2008.Comparativa;
- -- Fijaremos las ventas con más de un mes de antiguedad en la tabla Comparativa
-
- IF lastCOMP < vMaxPeriod - 3 AND vMaxWeek > 3 THEN
-
- REPLACE vn2008.Comparativa(Periodo, Id_Article, warehouse_id, Cantidad,price)
- SELECT tm.period as Periodo, m.Id_Article, t.warehouseFk, sum(m.Cantidad), sum(v.importe)
- FROM bs.ventas v
- JOIN vn2008.time tm ON tm.date = v.fecha
- JOIN vn2008.Movimientos m ON m.Id_Movimiento = v.Id_Movimiento
- JOIN vn2008.Tipos tp ON tp.tipo_id = v.tipo_id
- JOIN vn2008.reinos r ON r.id = tp.reino_id
- JOIN vn.ticket t ON t.id = m.Id_Ticket
- WHERE tm.period BETWEEN lastCOMP AND vMaxPeriod - 3
- AND t.clientFk NOT IN(400,200)
- AND t.warehouseFk NOT IN (0,13)
- GROUP BY m.Id_Article, Periodo, t.warehouseFk;
-
- 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_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `comparativa_add_manual` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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 */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `comparativa_add_manual`(IN vStarted DATE, IN vEnded DATE)
-BEGIN
-/**
- * Recalcula la tabla Comparativa para dos valores dados
- *
- * @param vStarted fecha desde
- * @param vEnded fecha hasta
- */
-
- DECLARE periodStart INT;
- DECLARE periodEnd INT;
-
- -- Seleccionamos la fecha minima/maxima del periodo que vamos a consultar
-
- SELECT t.period INTO periodStart
- FROM vn.`time` t
- WHERE t.dated = vStarted;
-
- SELECT t.period INTO periodEnd
- FROM vn.`time` t
- WHERE t.dated = vEnded;
-
- DELETE FROM vn2008.Comparativa
- WHERE Periodo BETWEEN periodStart AND periodEnd;
-
- INSERT INTO vn2008.Comparativa(Periodo, Id_Article, warehouse_id, Cantidad,price)
- SELECT tm.period as Periodo, m.Id_Article, t.warehouseFk, sum(m.Cantidad), sum(v.importe)
- FROM bs.ventas v
- JOIN vn2008.time tm ON tm.date = v.fecha
- JOIN vn2008.Movimientos m ON m.Id_Movimiento = v.Id_Movimiento
- JOIN vn2008.Tipos tp ON tp.tipo_id = v.tipo_id
- JOIN vn2008.reinos r ON r.id = tp.reino_id
- JOIN vn.ticket t ON t.id = m.Id_Ticket
- WHERE tm.period BETWEEN periodStart AND periodEnd
- AND t.clientFk NOT IN(400,200)
- AND t.warehouseFk NOT IN (0,13)
- GROUP BY m.Id_Article, Periodo, t.warehouseFk;
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `defaultersFromDate` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -3540,7 +3388,7 @@ DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `defaultersFromDate`(IN vDate DATE)
BEGIN
- SELECT t1.*, c.Cliente, w.code AS workerCode, c.pay_met_id,c.Vencimiento
+ SELECT t1.*, c.name Cliente, w.code workerCode, c.payMethodFk pay_met_id, c.dueDay Vencimiento
FROM (
-- Filtramos aquellos clientes cuyo saldo se ha incrementado de ayer a hoy
select * from(
@@ -3556,8 +3404,8 @@ BEGIN
having today.amount > 0 and difference <> 0
) newDefaulters
- )t1 left join vn2008.Clientes c ON t1.client = c.Id_Cliente
- left join vn.worker w ON w.id = c.Id_Trabajador;
+ )t1 left join vn.client c ON c.id = t1.client
+ left join vn.worker w ON w.id = c.salesPersonFk;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -3577,21 +3425,22 @@ DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `defaulting`(IN `vDate` DATE)
BEGIN
DECLARE vDone BOOLEAN;
- DECLARE vClient INT;
- DECLARE vAmount INT;
- DECLARE vDued DATE;
- DECLARE vAmountInvoice DECIMAL(10,2);
- DECLARE vGraceDays INT;
+ DECLARE vClient INT;
+ DECLARE vAmount INT;
+ DECLARE vDued DATE;
+ DECLARE vAmountInvoice DECIMAL(10,2);
+ DECLARE vGraceDays INT;
DECLARE defaulters CURSOR FOR
- SELECT client, amount, graceDays FROM bi.defaulters d
- JOIN vn2008.Clientes c ON c.Id_Cliente = d.client
- JOIN vn2008.pay_met pm ON pm.id = c.pay_met_id
- WHERE hasChanged AND date = vDate;
-
+ SELECT d.client, d.amount, pm.graceDays
+ FROM bi.defaulters d
+ JOIN vn.client c ON c.id = d.client
+ JOIN vn.payMethod pm ON pm.id = c.payMethodFk
+ WHERE hasChanged AND date = vDate;
+
DECLARE invoices CURSOR FOR
SELECT dued Vencimiento, amount importe FROM vn.invoiceOut
WHERE issued >= '2016-01-01' AND clientFk = vClient ORDER BY issued DESC;
-
+
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
DELETE FROM bi.defaulters WHERE date = vDate;
@@ -3601,7 +3450,7 @@ BEGIN
FROM vn.`client` c
LEFT JOIN bi.customerRiskOverdue cro ON c.id = cro.customer_id
GROUP BY c.id;
-
+
-- marcamos si ha cambiado y heredamos la fecha defaulterSince
UPDATE bi.defaulters d
LEFT JOIN (
@@ -3610,16 +3459,16 @@ BEGIN
WHERE date <= TIMESTAMPADD(DAY,-1, vDate)
ORDER BY date DESC
LIMIT 10000000000000000000) t GROUP BY client
- ) yesterday using(client)
+ ) yesterday using(client)
SET d.hasChanged = (IFNULL(d.amount,0) <> IFNULL(yesterday.amount,0)),
d.defaulterSince = yesterday.defaulterSince,
- d.frozened = yesterday.frozened
+ d.frozened = yesterday.frozened
WHERE d.date = vDate ;
-
- OPEN defaulters;
+
+ OPEN defaulters;
defaulters: LOOP
SET vDone = FALSE;
- SET vAmount = 0;
+ SET vAmount = 0;
FETCH defaulters INTO vClient,vAmount, vGraceDays;
IF vDone THEN
LEAVE defaulters;
@@ -3635,7 +3484,7 @@ BEGIN
IF TIMESTAMPADD(DAY, vGraceDays, vDued) <= vDate THEN
SET vAmount = vAmount - vAmountInvoice;
IF vAmount <= 0 THEN
-
+
UPDATE defaulters SET defaulterSince = vDued
WHERE client = vClient and date = vDate;
@@ -3648,20 +3497,20 @@ BEGIN
END LOOP;
CLOSE defaulters;
- DELETE FROM defaulters
+ DELETE FROM defaulters
WHERE amount = 0
AND hasChanged = FALSE
- AND `date` = vDate;
-
- UPDATE defaulters d
+ AND `date` = vDate;
+
+ UPDATE defaulters d
JOIN vn.config ON TRUE
SET d.frozened = NULL
WHERE `date` = vDate
AND d.amount <= config.defaultersMaxAmount;
-
- CALL vn.clientFreeze();
-
- -- actualizamos defaulting
+
+ CALL vn.clientFreeze();
+
+ -- actualizamos defaulting
DELETE FROM bi.defaulting WHERE date = vDate;
INSERT INTO bi.defaulting(date, amount)
@@ -3946,15 +3795,15 @@ BEGIN
-- Recobro
UPDATE bi.Greuge_Evolution ge
JOIN (
- SELECT cs.Id_Cliente, sum(Valor * Cantidad) as Importe
+ SELECT a.clientFk Id_Cliente, sum(sc.value * s.quantity) as Importe
FROM vn.ticket t
- JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.addressFk
- JOIN vn2008.Movimientos m on m.Id_Ticket = t.id
- JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = m.Id_Movimiento
+ JOIN vn.address a on a.id = t.addressFk
+ JOIN vn.sale s on s.ticketFk = t.id
+ JOIN vn.saleComponent sc on sc.saleFk = s.id
WHERE t.shipped >= datFEC
AND t.shipped < datFEC_TOMORROW
- AND mc.Id_Componente = 17 -- Recobro
- GROUP BY cs.Id_Cliente
+ AND sc.componentFk = 17 -- Recobro
+ GROUP BY a.clientFk
) sub using(Id_Cliente)
SET Recobro = Importe
WHERE ge.Fecha = datFEC;
@@ -4154,40 +4003,6 @@ CREATE DATABASE /*!32312 IF NOT EXISTS*/ `bs` /*!40100 DEFAULT CHARACTER SET utf
USE `bs`;
---
--- Temporary table structure for view `VentasPorCliente`
---
-
-DROP TABLE IF EXISTS `VentasPorCliente`;
-/*!50001 DROP VIEW IF EXISTS `VentasPorCliente`*/;
-SET @saved_cs_client = @@character_set_client;
-SET character_set_client = utf8;
-/*!50001 CREATE VIEW `VentasPorCliente` AS SELECT
- 1 AS `Id_Cliente`,
- 1 AS `VentaBasica`,
- 1 AS `year`,
- 1 AS `month` */;
-SET character_set_client = @saved_cs_client;
-
---
--- Temporary table structure for view `bajasLaborales`
---
-
-DROP TABLE IF EXISTS `bajasLaborales`;
-/*!50001 DROP VIEW IF EXISTS `bajasLaborales`*/;
-SET @saved_cs_client = @@character_set_client;
-SET character_set_client = utf8;
-/*!50001 CREATE VIEW `bajasLaborales` AS SELECT
- 1 AS `firstname`,
- 1 AS `name`,
- 1 AS `businessFk`,
- 1 AS `lastDate`,
- 1 AS `endContract`,
- 1 AS `type`,
- 1 AS `dias`,
- 1 AS `userFk` */;
-SET character_set_client = @saved_cs_client;
-
--
-- Table structure for table `bancos_evolution`
--
@@ -4358,7 +4173,8 @@ CREATE TABLE `defaulter` (
`frozened` date DEFAULT NULL,
PRIMARY KEY (`clientFk`,`created`),
KEY `client` (`clientFk`),
- KEY `date` (`created`)
+ KEY `date` (`created`),
+ KEY `defaulter_amount_IDX` (`amount`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -4395,21 +4211,6 @@ CREATE TABLE `fondo_maniobra` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
---
--- Temporary table structure for view `horasSilla`
---
-
-DROP TABLE IF EXISTS `horasSilla`;
-/*!50001 DROP VIEW IF EXISTS `horasSilla`*/;
-SET @saved_cs_client = @@character_set_client;
-SET character_set_client = utf8;
-/*!50001 CREATE VIEW `horasSilla` AS SELECT
- 1 AS `Fecha`,
- 1 AS `Departamento`,
- 1 AS `Horas`,
- 1 AS `Salarios` */;
-SET character_set_client = @saved_cs_client;
-
--
-- Table structure for table `indicators`
--
@@ -4642,45 +4443,6 @@ CREATE TABLE `payMethodClientEvolution` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
---
--- Temporary table structure for view `s1_ticketDetail`
---
-
-DROP TABLE IF EXISTS `s1_ticketDetail`;
-/*!50001 DROP VIEW IF EXISTS `s1_ticketDetail`*/;
-SET @saved_cs_client = @@character_set_client;
-SET character_set_client = utf8;
-/*!50001 CREATE VIEW `s1_ticketDetail` AS SELECT
- 1 AS `ticketFk`,
- 1 AS `ticketAmount`,
- 1 AS `ticketLines`,
- 1 AS `ticketM3`,
- 1 AS `shipped` */;
-SET character_set_client = @saved_cs_client;
-
---
--- Temporary table structure for view `s21_saleDetail`
---
-
-DROP TABLE IF EXISTS `s21_saleDetail`;
-/*!50001 DROP VIEW IF EXISTS `s21_saleDetail`*/;
-SET @saved_cs_client = @@character_set_client;
-SET character_set_client = utf8;
-/*!50001 CREATE VIEW `s21_saleDetail` AS SELECT
- 1 AS `dia`,
- 1 AS `año`,
- 1 AS `mes`,
- 1 AS `concepto`,
- 1 AS `unidades`,
- 1 AS `precio`,
- 1 AS `venta`,
- 1 AS `familia`,
- 1 AS `comprador`,
- 1 AS `itemFk`,
- 1 AS `ticketFk`,
- 1 AS `volume` */;
-SET character_set_client = @saved_cs_client;
-
--
-- Table structure for table `sale`
--
@@ -5099,131 +4861,6 @@ BEGIN
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 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!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_unicode_ci */ ;
-DELIMITER ;;
-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, 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;
-
- SET vCurrentDate = vStartingDate;
-
- INSERT INTO bs.bancos_evolution(Fecha, Id_Banco, saldo)
- 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)
- 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
- WHERE at2.code IN ('wireTransfer','fundingLine')
- AND Cajafecha = vCurrentDate
- AND (Serie = 'MB' OR at2.code = 'fundingLine')
- GROUP BY Id_Banco
- )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
- 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)
- 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;
-
- -- 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 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
- JOIN vn2008.Recibos r ON r.Fechacobro <= t.dated
- 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
- 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
- WHERE at2.code IN ('wireTransfer','fundingLine')
- AND t.dated BETWEEN vStartingDate AND vMaxDate
- 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
- WHERE Fecha >= vStartingDate;
-
- -- Deuda
- UPDATE bs.bancos_evolution be
- JOIN vn2008.Bancos b using(Id_Banco)
- 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
- 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 */ ;
@@ -5550,130 +5187,6 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!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_unicode_ci */ ;
-DELIMITER ;;
-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
- c.Id_Cliente id_cliente,
- c.Cliente cliente,
- cr.recobro * 100 tarifa,
- c.Telefono telefono,
- c.movil,
- c.POBLACION poblacion,
- p.`name` provincia,
- ROUND(f.futur, 2) futur,
- c.Credito credito,
- pm.`name` forma_pago,
- ROUND(c365 / 12, 2) consumo_medio365,
- ROUND(c365, 2) consumo365,
- ROUND(CmLy.peso, 2) peso_mes_año_pasado,
- ROUND(CmLy.peso * 1.19, 2) objetivo,
- tr.CodigoTrabajador,
- ROUND(mes_actual.consumo, 2) consumoMes,
- ROUND(IFNULL(mes_actual.consumo, 0) - IFNULL(CmLy.peso * 1.19, 0), 2) como_lo_llevo,
- DATE(LastTicket) ultimo_ticket,
- dead.muerto,
- g.Greuge,
- cr.recobro
- FROM
- vn2008.Clientes c
- LEFT JOIN
- (SELECT g.clientFk Id_Cliente, CAST( SUM(g.amount) as DECIMAL(12,2)) AS Greuge
- FROM vn.greuge g
- JOIN vn.`client` c ON c.id = g.clientFk
- 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.clientFk Id_Cliente, SUM(m.preu * m.Cantidad * (1 - m.Descuento / 100)) futur
- FROM vn.ticket t
- JOIN vn2008.Clientes c ON c.Id_Cliente = t.clientFk
- JOIN vn2008.Movimientos m ON m.Id_Ticket = t.id
- LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador
- WHERE
- (c.Id_Trabajador = vWorker OR tr.boss = vWorker)
- AND t.shipped 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.shipped) LastTicket, c.Id_Cliente
- FROM vn.ticket t
- JOIN vn2008.Clientes c ON c.Id_cliente = t.clientFk
- LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador
- WHERE
- (c.Id_Trabajador = vWorker OR tr.boss = vWorker)
- GROUP BY t.clientFk) 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(io.issued) < DATE_FORMAT(TIMESTAMPADD(MONTH, - 1, vDate), '%Y- %m-01'), TRUE, FALSE) muerto
- FROM vn.invoiceOut io
- JOIN vn2008.Clientes c ON c.Id_cliente = io.clientFk
- 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 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `compradores_evolution_add` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -5885,10 +5398,10 @@ BEGIN
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
+ JOIN vn.company c ON c.id = v.empresa_id
+ JOIN vn.companyGroup cg ON cg.id = c.companyGroupFk
WHERE fecha BETWEEN oneYearBefore AND vDated
- AND eg.grupo = 'Verdnatura'
+ AND cg.code = 'Verdnatura'
)
WHERE updated = vDated;
@@ -6223,98 +5736,91 @@ BEGIN
DECLARE vFromDated DATE;
DECLARE vForDeleteDated DATE;
DECLARE vManaId INT;
- DECLARE vManaAutoId INT;
- DECLARE vClaimManaId INT;
- DECLARE vManaBankId INT;
- DECLARE vManaGreugeTypeId INT;
- DECLARE vManaFromDays INT;
- DECLARE vManaToDays INT;
+ DECLARE vManaAutoId INT;
+ DECLARE vClaimManaId INT;
+ DECLARE vManaBankId INT;
+ DECLARE vManaGreugeTypeId INT;
+ DECLARE vManaFromDays INT;
+ DECLARE vManaToDays INT;
- SELECT id INTO vManaId
- FROM vn.component WHERE code = 'mana';
+ SELECT id INTO vManaId
+ FROM vn.component WHERE code = 'mana';
- SELECT id INTO vManaAutoId
+ SELECT id INTO vManaAutoId
FROM vn.component WHERE code = 'autoMana';
SELECT id INTO vClaimManaId
FROM vn.component WHERE code = 'manaClaim';
- SELECT id INTO vManaBankId
+ SELECT id INTO vManaBankId
FROM vn.accounting WHERE code = 'mana';
- SELECT id INTO vManaGreugeTypeId
+ SELECT id INTO vManaGreugeTypeId
FROM vn.greugeType WHERE code = 'mana';
- SELECT manaFromDays, manaToDays
- INTO vManaFromDays, vManaToDays
- FROM vn.salespersonConfig;
+ SELECT manaFromDays, manaToDays
+ INTO vManaFromDays, vManaToDays
+ FROM vn.salespersonConfig;
- SELECT MAX(dated)
- INTO vFromDated
- FROM vn.clientManaCache;
+ SELECT MAX(dated) INTO vFromDated
+ FROM vn.clientManaCache;
- DELETE
- FROM vn.clientManaCache
- WHERE dated = vFromDated;
-
- SELECT MAX(dated)
- INTO vFromDated
- FROM vn.clientManaCache;
-
- IF ISNULL(vFromDated) THEN
- SELECT manaDateFrom
- INTO vFromDated
- FROM vn.salespersonConfig;
- END IF;
+ DELETE FROM vn.clientManaCache
+ WHERE dated = vFromDated;
+
+ SELECT MAX(dated) INTO vFromDated
+ FROM vn.clientManaCache;
+
+ IF vFromDated IS NULL THEN
+ SELECT manaDateFrom
+ INTO vFromDated
+ FROM vn.salespersonConfig;
+ END IF;
- WHILE vFromDated + INTERVAL vManaToDays DAY < util.VN_CURDATE() DO
- SELECT
- vFromDated + INTERVAL vManaToDays DAY,
- vFromDated - INTERVAL vManaFromDays DAY
- INTO
- vToDated,
- vForDeleteDated;
-
- DELETE FROM vn.clientManaCache
- WHERE dated <= vForDeleteDated;
+ WHILE vFromDated + INTERVAL vManaToDays DAY < util.VN_CURDATE() DO
+ SELECT vFromDated + INTERVAL vManaToDays DAY,
+ vFromDated - INTERVAL vManaFromDays DAY
+ INTO vToDated,
+ vForDeleteDated;
+
+ DELETE FROM vn.clientManaCache
+ WHERE dated <= vForDeleteDated;
- INSERT INTO vn.clientManaCache(clientFk, mana, dated)
- SELECT
- Id_Cliente,
- SUM(mana),
- vToDated
- FROM
- (
- SELECT cs.Id_Cliente, Cantidad * Valor as mana
- FROM vn.ticket t
- JOIN vn2008.Consignatarios cs using(Id_Consigna)
- JOIN vn2008.Movimientos m on m.Id_Ticket = t.id
- JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = m.Id_Movimiento
- WHERE Id_Componente IN (vManaAutoId, vManaId, vClaimManaId)
- AND t.shipped > vFromDated
- AND date(t.shipped) <= vToDated
- UNION ALL
- SELECT r.Id_Cliente, - Entregado
- FROM vn2008.Recibos r
- WHERE Id_Banco = vManaBankId
- AND Fechacobro > vFromDated
- AND Fechacobro <= vToDated
- UNION ALL
- SELECT clientFk, amount
- FROM vn.greuge
- WHERE greugeTypeFk = vManaGreugeTypeId
- AND shipped > vFromDated
- AND shipped <= vToDated
- UNION ALL
- SELECT clientFk, mana
- FROM vn.clientManaCache
- WHERE dated = vFromDated
- ) sub
- GROUP BY Id_Cliente
- HAVING Id_Cliente;
+ INSERT INTO vn.clientManaCache(clientFk, mana, dated)
+ SELECT Id_Cliente,
+ SUM(mana),
+ vToDated
+ FROM (
+ SELECT a.clientFk Id_Cliente, s.quantity * sc.value mana
+ FROM vn.ticket t
+ JOIN vn.address a ON a.id = t.addressFk
+ JOIN vn.sale s ON s.ticketFk = t.id
+ JOIN vn.saleComponent sc ON sc.saleFk = s.id
+ WHERE sc.componentFk IN (vManaAutoId, vManaId, vClaimManaId)
+ AND t.shipped > vFromDated
+ AND DATE(t.shipped) <= vToDated
+ UNION ALL
+ SELECT clientFk, - amountPaid
+ FROM vn.receipt
+ WHERE bankFk = vManaBankId
+ AND payed > vFromDated
+ AND payed <= vToDated
+ UNION ALL
+ SELECT clientFk, amount
+ FROM vn.greuge
+ WHERE greugeTypeFk = vManaGreugeTypeId
+ AND shipped > vFromDated
+ AND shipped <= vToDated
+ UNION ALL
+ SELECT clientFk, mana
+ FROM vn.clientManaCache
+ WHERE dated = vFromDated
+ ) sub
+ GROUP BY Id_Cliente
+ HAVING Id_Cliente;
- SET vFromDated = vToDated;
- END WHILE;
+ SET vFromDated = vToDated;
+ END WHILE;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -6917,6 +6423,108 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `sales_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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `sales_addLauncher`()
+BEGIN
+/**
+ * Añade las ventas a la tabla bs.sale que se realizaron desde hace un mes hasta hoy
+ *
+ */
+ DECLARE vCurDate DATE DEFAULT util.VN_CURDATE();
+
+ CALL sale_add(vCurDate - INTERVAL 1 MONTH, 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 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `sale_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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_add`(
+ IN vStarted DATE,
+ IN vEnded DATE
+)
+BEGIN
+/**
+ * Añade las ventas que se realizaron entre 2 fechas a la tabla bs.sale
+ *
+ * @param vStarted Fecha de inicio
+ * @param vEnded Fecha de fin
+ *
+ */
+ IF vStarted < (util.VN_CURDATE() - INTERVAL 5 YEAR) OR vStarted > vEnded THEN
+ CALL util.throw('Wrong date');
+ END IF;
+
+ DELETE FROM sale
+ WHERE dated BETWEEN vStarted AND vEnded;
+
+ REPLACE sale(
+ saleFk,
+ amount,
+ surcharge,
+ dated,
+ typeFk,
+ clientFk,
+ companyFk,
+ margin
+ )WITH calculatedSales AS(
+ SELECT s.id saleFk,
+ CAST(SUM(IF(ct.isBase, s.quantity * sc.value, 0)) AS DECIMAL(10, 3)) amount,
+ CAST(SUM(IF(ct.isBase, 0, s.quantity * sc.value)) AS DECIMAL(10, 3)) surcharge,
+ s.total,
+ DATE(t.shipped) dated,
+ i.typeFk,
+ t.clientFk,
+ t.companyFk,
+ CAST(SUM(IF(ct.isMargin, s.quantity * sc.value, 0 )) AS DECIMAL(10, 3)) marginComponents
+ FROM vn.ticket t
+ STRAIGHT_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.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 vStarted AND vEnded
+ AND s.quantity <> 0
+ AND ic.merchandise
+ GROUP BY s.id
+ )SELECT saleFk,
+ amount,
+ surcharge,
+ dated,
+ typeFk,
+ clientFk,
+ companyFk,
+ IF (marginComponents IS NULL,
+ 0,
+ CAST(marginComponents + amount + surcharge - total AS DECIMAL(10, 3)))
+ FROM calculatedSales;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `vendedores_add_launcher` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -6930,123 +6538,6 @@ BEGIN
CALL bs.salesByclientSalesPerson_add(util.VN_CURDATE()- INTERVAL 45 DAY);
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!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_unicode_ci */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `ventas_add`(
- IN vStarted DATETIME,
- IN vEnded DATETIME)
-BEGIN
-/**
-* Añade las ventas que se realizaron entre
-* vStarted y vEnded
-*
-* @param vStarted Fecha de inicio
-* @param vEnded Fecha de finalizacion
-*
-**/
- DECLARE vStartingDate DATETIME;
- DECLARE vEndingDate DATETIME;
-
- 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 = util.dayEnd(vStartingDate);
-
- DELETE
- FROM sale
- WHERE dated BETWEEN vStartingDate AND vEnded;
-
- WHILE vEndingDate <= vEnded DO
-
- REPLACE ventas(Id_Movimiento, importe, recargo, fecha, tipo_id, Id_Cliente, empresa_id)
- 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 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);
-
- 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 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `ventas_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_unicode_ci */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `ventas_add_launcher`()
-BEGIN
-/**
- * Añade las ventas a la tabla bs.sale que se realizaron desde hace un mes hasta hoy
- *
- */
-
- DECLARE vCurDate DATE DEFAULT util.VN_CURDATE();
- CALL ventas_add(vCurDate - INTERVAL 1 MONTH, vCurDate);
-
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -7102,35 +6593,35 @@ BEGIN
SELECT vYear
, vMonth
- , round(sum(Cantidad * Preu * (100 - m.Descuento)/100))
+ , round(sum(s.quantity * s.price * (100 - s.discount)/100))
, IF(
- e.empresa_grupo = e2.empresa_grupo
+ co.companyGroupFk = co2.companyGroupFk
,1
- ,IF(e2.empresa_grupo,2,0)
+ ,IF(co2.companyGroupFk,2,0)
) as grupo
- , tp.reino_id
- , a.tipo_id
+ , it.categoryFk
+ , i.typeFk
, t.companyFk
- , a.expenseFk
- + IF(e.empresa_grupo = e2.empresa_grupo
+ , i.expenseFk
+ + IF(co.companyGroupFk = co2.companyGroupFk
,1
- ,IF(e2.empresa_grupo,2,0)
+ ,IF(co2.companyGroupFk,2,0)
) * 100000
- + tp.reino_id * 1000 as Gasto
- FROM vn2008.Movimientos m
- JOIN vn.ticket t ON t.id = m.Id_Ticket
- JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.addressFk
- JOIN vn2008.Clientes c on c.Id_Cliente = cs.Id_Cliente
+ + it.categoryFk * 1000 as Gasto
+ FROM vn.sale s
+ JOIN vn.ticket t ON t.id = s.ticketFk
+ JOIN vn.address a on a.id = t.addressFk
+ JOIN vn.client c on c.id = a.clientFk
JOIN tmp.ticket_list tt on tt.id = t.id
- JOIN vn2008.Articles a on m.Id_Article = a.Id_Article
- JOIN vn2008.empresa e on e.id = t.companyFk
- 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, companyFk, Gasto;
+ JOIN vn.item i on s.itemFk = i.id
+ JOIN vn.company co on co.id = t.companyFk
+ LEFT JOIN vn.company co2 on co2.clientFk = c.id
+ JOIN vn.itemType it on it.id = i.typeFk
+ WHERE s.quantity <> 0
+ AND s.price <> 0
+ AND s.discount <> 100
+ AND i.typeFk <> TIPO_PATRIMONIAL
+ GROUP BY grupo, it.categoryFk, i.typeFk, t.companyFk, Gasto;
INSERT INTO bs.ventas_contables(year
, month
@@ -7189,142 +6680,6 @@ BEGIN
CALL bs.ventas_contables_add(YEAR(TIMESTAMPADD(MONTH,-1,util.VN_CURDATE())), MONTH(TIMESTAMPADD(MONTH,-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 */ ;
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `ventas_contables_por_cliente` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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 */ ;
-DELIMITER ;;
-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
- (PRIMARY KEY (id))
- SELECT t.id
- FROM vn.ticket t
- JOIN vn.invoiceOut io ON io.id = t.refFk
- WHERE year(io.issued) = vYear
- AND month(io.issued) = vMonth;
-
- SELECT vYear Año,
- vMonth Mes,
- t.clientFk Id_Cliente,
- round(sum(Cantidad * Preu * (100 - m.Descuento)/100)) Venta,
- IF(e.empresa_grupo = e2.empresa_grupo,
- 1,
- IF(e2.empresa_grupo,2,0))
- AS grupo,
- t.companyFk empresa
- FROM vn2008.Movimientos m
- JOIN vn.ticket t ON t.id = m.Id_Ticket
- JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = t.addressFk
- JOIN vn2008.Clientes c ON c.Id_Cliente = cs.Id_Cliente
- JOIN tmp.ticket_list tt ON tt.id = t.id
- JOIN vn2008.Articles a ON m.Id_Article = a.Id_Article
- JOIN vn2008.empresa e ON e.id = t.companyFk
- 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 != 188
- GROUP BY t.clientFk, grupo,t.companyFk;
-
- DROP TEMPORARY TABLE 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 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `vivosMuertos` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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 */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `vivosMuertos`()
-BEGIN
-
- /**
- * Devuelve el número de clientes nuevos y muertos,
- * dependiendo de la fecha actual.
- *
- * @param @datSTART Fecha de inicio a buscar
- * @param @datEND Fecha de finalización a buscar
- */
-
- 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
- JOIN
- (SELECT DISTINCT yearMonth
- FROM vn2008.time
- WHERE date BETWEEN @datSTART
- AND @datEND ) tm
- LEFT JOIN
- (SELECT DISTINCT tm.yearMonth, io.clientFk Id_Cliente , 1 as Compra
- FROM vn.invoiceOut io
- JOIN vn2008.time tm ON tm.date = io.issued
- WHERE io.issued 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, io.clientFk Id_Cliente
- FROM vn.invoiceOut io
- JOIN vn2008.time tm ON tm.date = io.issued
- WHERE io.issued BETWEEN @datSTART AND @datEND
- GROUP BY io.clientFk) fm ON fm.firstMonth = vm.yearMonth
- 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, io.clientFk Id_Cliente
- FROM vn.invoiceOut io
- JOIN vn2008.time tm ON tm.date = io.issued
- WHERE io.issued BETWEEN @datSTART AND @datEND
- GROUP BY io.clientFk) fm ON fm.firstMonth = vm.yearMonth
- AND fm.Id_Cliente = vm.Id_Cliente
-
- SET Muerto = 1
-
- WHERE yearMonth < @lastYearMonth;
-
- SELECT * FROM tmp.VivosMuertos;
-
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -7755,25 +7110,6 @@ CREATE TABLE `last_buy` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
---
--- Table structure for table `prod_graphic_source`
---
-
-DROP TABLE IF EXISTS `prod_graphic_source`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!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,
- `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 utf8mb3 COLLATE utf8mb3_general_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 `stock`
--
@@ -8601,55 +7937,6 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `prod_graphic_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 */ ;
-DELIMITER ;;
-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;
-
- INSERT INTO prod_graphic_source (warehouse_id, graphCategory, m3, hora, `order`, Agencia)
- SELECT
- wh_id,
- st.graphCategory,
- CAST(SUM(m3) AS DECIMAL(10,0)) as m3,
- pb.Hora,
- pb.state_order,
- pb.Agencia
- FROM tmp.production_buffer pb
- JOIN vn.state st ON st.id = pb.state
- WHERE Fecha = util.VN_CURDATE()
- GROUP BY wh_id, graphCategory
- ;
-
-
- 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 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `stock_refresh` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -8981,7 +8268,7 @@ BEGIN
vPrinterFk,
IFNULL(right(`t`.`routeFk`, 3),0),
if (@vVolume := vn.ticketTotalVolume(t.id) > 1.5, @vVolume, IFNULL( rm.beachFk, 0)),
- LEFT(IFNULL(et.description ,replace(`z`.`name`, 'ZONA ', 'Z')),14) truckName,
+ LEFT(IFNULL(rs.description ,replace(`z`.`name`, 'ZONA ', 'Z')),14) truckName,
t.clientFk ,
ifnull(c.mobile, ifnull(a.mobile, ifnull(c.phone, a.phone))),
LEFT(p.name, 20),
@@ -8993,7 +8280,7 @@ BEGIN
JOIN vn.address a ON a.id = t.addressFk
JOIN vn.province p ON p.id = a.provinceFk
LEFT JOIN vn.routesMonitor rm ON rm.routeFk = t.routeFk
- LEFT JOIN vn.expeditionTruck et ON et.id = rm.expeditionTruckFk
+ LEFT JOIN vn.roadmapStop rs ON rs.id = rm.expeditionTruckFk
LEFT JOIN vn.beach b ON b.code = rm.beachFk
LEFT JOIN vn.`zone`z ON z.id = t.zoneFk
JOIN vn.agencyMode am ON t.agencyModeFk = am.id
@@ -10471,16 +9758,16 @@ proc:BEGIN
ELSE
- INSERT IGNORE INTO vn2008.Cubos (Id_Cubo, X, Y, Z)
+ INSERT IGNORE INTO vn.packaging (id, width, depth, height)
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
+ INSERT INTO vn.mail SET
`subject` = 'Cubo añadido',
- `text` = CONCAT('Se ha añadido el cubo: ', vPackage),
- `to` = 'ekt@verdnatura.es';
+ `body` = CONCAT('Se ha añadido el cubo: ', vPackage),
+ `receiver` = 'ekt@verdnatura.es';
END IF;
END IF;
@@ -11872,6 +11159,7 @@ CREATE TABLE `order` (
`isPaid` tinyint(1) NOT NULL DEFAULT 0,
`payed` datetime DEFAULT NULL,
`created` timestamp NULL DEFAULT current_timestamp(),
+ `observations` text DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `catalogueFk` (`catalogueFk`),
CONSTRAINT `order_ibfk_1` FOREIGN KEY (`catalogueFk`) REFERENCES `catalogue` (`id`) ON UPDATE CASCADE
@@ -15812,7 +15100,7 @@ BEGIN
-- Código redundante
- DO vn.till_new(
+ CALL vn.till_new(
vCustomer
,vBank
,vAmount / 100
@@ -16733,7 +16021,7 @@ SET character_set_client = utf8;
1 AS `permit`,
1 AS `type`,
1 AS `context`,
- 1 AS `incominglimit`,
+ 1 AS `call-limit`,
1 AS `pickupgroup`,
1 AS `directmedia`,
1 AS `insecure`,
@@ -16765,7 +16053,7 @@ CREATE TABLE `sipConfig` (
`permit` varchar(95) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`type` enum('user','peer','friend') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`context` varchar(80) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
- `incomingLimit` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `call-limit` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`pickupGroup` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`directMedia` enum('yes','no') DEFAULT NULL,
`insecure` varchar(45) NOT NULL,
@@ -18631,7 +17919,7 @@ BEGIN
IFNULL(c.street, ''),
c.accountingAccount,
@fi := IF(cu.code = LEFT(TRIM(c.fi), 2) AND c.isVies, MID(TRIM(c.fi), 3, LENGTH(TRIM(c.fi))-1), TRIM(c.fi)),
- IF(c.isVies, CONCAT(cu.code, @fi ), TRIM(c.fi)),
+ IF(c.isVies, CONCAT(IFNULL(cu.viesCode,cu.code), @fi ), TRIM(c.fi)),
IFNULL(c.postcode, ''),
IFNULL(c.city, ''),
IFNULL(pr.CodigoProvincia, ''),
@@ -18669,7 +17957,7 @@ BEGIN
IFNULL(s.street, ''),
s.account,
@nif := IF(co.code = LEFT(TRIM(s.nif), 2), MID(TRIM(s.nif), 3, LENGTH(TRIM(s.nif))-1), TRIM(s.nif)),
- IF(s.isVies, CONCAT(co.code, @nif), TRIM(s.nif)),
+ IF(s.isVies, CONCAT(IFNULL(co.viesCode,co.code), @nif), TRIM(s.nif)),
IFNULL(s.postCode,''),
IFNULL(s.city, ''),
IFNULL(pr.CodigoProvincia, ''),
@@ -20982,14 +20270,14 @@ BEGIN
DECLARE vDayMinute INT;
- SELECT HOUR(IFNULL(et.ETD, z.`hour`)) * 60 + MINUTE(IFNULL(et.ETD, z.`hour`)) INTO vDayMinute
+ SELECT HOUR(IFNULL(rs.ETD, z.`hour`)) * 60 + MINUTE(IFNULL(rs.ETD, z.`hour`)) INTO vDayMinute
FROM vn.expedition e
JOIN vn.ticket t ON e.ticketFk = t.id
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 t.routeFk = rm.routeFk
- LEFT JOIN vn.expeditionTruck et ON rm.expeditionTruckFk = et.id
+ LEFT JOIN vn.roadmapStop rs ON rm.expeditionTruckFk = rs.id
WHERE e.id = vExpeditionFk;
RETURN vDayMinute;
@@ -22508,8 +21796,8 @@ BEGIN
SET @dm := (24 * 60) - 10;
- UPDATE vn.expeditionTruck et
- SET et.eta = timestampadd(MINUTE ,@dm := 1 + @dm,util.VN_CURDATE())
+ UPDATE vn.roadmapStop rs
+ SET rs.eta = timestampadd(MINUTE ,@dm := 1 + @dm,util.VN_CURDATE())
WHERE description LIKE 'PRU%' ;
DELETE FROM srt.movingLog ;
@@ -26848,6 +26136,7 @@ CREATE TABLE `absenceType` (
`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',
+ `isFestiveEligible` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Para marcar un tipo de absence',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -27148,13 +26437,16 @@ CREATE TABLE `agency` (
`isOwn` tinyint(1) NOT NULL DEFAULT 0,
`workCenterFk` int(11) DEFAULT NULL,
`isAnyVolumeAllowed` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Permite vender productos que tengan vn.itemType.IsUnconventionalSize = TRUE',
+ `editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `warehouse_id` (`warehouseFk`),
KEY `agencias_alias_idx` (`warehouseAliasFk__`),
KEY `agency_ibfk_3_idx` (`workCenterFk`),
+ KEY `agency_user_FK` (`editorFk`),
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_3` FOREIGN KEY (`workCenterFk`) REFERENCES `workCenter` (`id`) ON UPDATE CASCADE
+ CONSTRAINT `agency_ibfk_3` FOREIGN KEY (`workCenterFk`) REFERENCES `workCenter` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `agency_user_FK` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -27178,6 +26470,34 @@ CREATE TABLE `agencyExtraCharge` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `agencyLog`
+--
+
+DROP TABLE IF EXISTS `agencyLog`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `agencyLog` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `originFk` smallint(5) unsigned DEFAULT NULL,
+ `userFk` int(10) unsigned DEFAULT NULL,
+ `action` set('insert','update','delete','select') NOT NULL,
+ `creationDate` timestamp NULL DEFAULT current_timestamp(),
+ `description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
+ `changedModel` enum('agency','agencyMode') NOT NULL DEFAULT 'agency',
+ `oldInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`oldInstance`)),
+ `newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
+ `changedModelId` int(11) NOT NULL,
+ `changedModelValue` varchar(45) DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `logAgencyUserFk` (`userFk`),
+ KEY `agencyLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
+ KEY `agencyLog_originFk` (`originFk`,`creationDate`),
+ CONSTRAINT `agencyOriginFk` FOREIGN KEY (`originFk`) REFERENCES `agency` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
+ CONSTRAINT `agencyUserFk` 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 */;
+
--
-- Table structure for table `agencyMode`
--
@@ -27283,6 +26603,28 @@ CREATE TABLE `agencyTermConfig` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `agencyWorkCenter`
+--
+
+DROP TABLE IF EXISTS `agencyWorkCenter`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `agencyWorkCenter` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `agencyFk` smallint(5) unsigned NOT NULL,
+ `workCenterFk` int(11) NOT NULL,
+ `editorFk` int(10) unsigned DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `agencyWorkCenter_unique` (`agencyFk`,`workCenterFk`),
+ KEY `agencyWorkCenter_workCenter_FK` (`workCenterFk`),
+ KEY `agencyWorkCenter_user_FK` (`editorFk`),
+ CONSTRAINT `agencyWorkCenter_agency_FK` FOREIGN KEY (`agencyFk`) REFERENCES `agency` (`id`) ON DELETE CASCADE,
+ CONSTRAINT `agencyWorkCenter_user_FK` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
+ CONSTRAINT `agencyWorkCenter_workCenter_FK` FOREIGN KEY (`workCenterFk`) REFERENCES `workCenter` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `airline`
--
@@ -28166,7 +27508,7 @@ CREATE TABLE `buy` (
`packing` int(11) NOT NULL DEFAULT 1 CHECK (`packing` > 0),
`grouping` smallint(5) unsigned NOT NULL DEFAULT 1,
`groupingMode` enum('grouping','packing') DEFAULT NULL,
- `containerFk` smallint(5) unsigned DEFAULT NULL,
+ `containerFk__` smallint(5) unsigned DEFAULT NULL,
`comissionValue` decimal(10,3) NOT NULL DEFAULT 0.000,
`packageValue` decimal(10,3) NOT NULL DEFAULT 0.000,
`location` varchar(5) DEFAULT NULL,
@@ -28191,7 +27533,7 @@ CREATE TABLE `buy` (
KEY `CompresId_Trabajador` (`workerFk`),
KEY `Id_Cubo` (`packagingFk`),
KEY `Id_Entrada` (`entryFk`),
- KEY `container_id` (`containerFk`),
+ KEY `container_id` (`containerFk__`),
KEY `buy_edi_id` (`ektFk`),
KEY `itemFk_entryFk` (`itemFk`,`entryFk`),
KEY `buy_fk_4_idx` (`deliveryFk`),
@@ -28199,7 +27541,6 @@ CREATE TABLE `buy` (
KEY `buy_itemFk_IDX` (`itemFk`) USING BTREE,
KEY `buy_fk_editor` (`editorFk`),
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_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`),
@@ -28503,7 +27844,7 @@ CREATE TABLE `claimBeginning` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`claimFk` int(10) unsigned NOT NULL,
`saleFk` int(11) DEFAULT NULL,
- `quantity` double DEFAULT NULL,
+ `quantity` double DEFAULT 0,
`editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `Id_Movimiento` (`saleFk`),
@@ -28942,6 +28283,7 @@ CREATE TABLE `clientConfig` (
`defaultIsTaxDataChecked` tinyint(1) DEFAULT NULL,
`defaultHasCoreVnl` tinyint(1) DEFAULT NULL,
`defaultMandateTypeFk` smallint(5) DEFAULT NULL,
+ `monthsToDisableUser` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `clientNewConfigPayMethod_FK` (`defaultPayMethodFk`),
KEY `clientNewConfigMandateType_FK` (`defaultMandateTypeFk`),
@@ -30010,19 +29352,18 @@ CREATE TABLE `conveyorType` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Table structure for table `coolerPathDetail`
+-- Table structure for table `coolerPathDetail__`
--
-DROP TABLE IF EXISTS `coolerPathDetail`;
+DROP TABLE IF EXISTS `coolerPathDetail__`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `coolerPathDetail` (
+CREATE TABLE `coolerPathDetail__` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`coolerPathFk` int(11) NOT NULL DEFAULT 1,
`hallway` varchar(3) NOT NULL,
PRIMARY KEY (`coolerPathFk`,`hallway`),
- UNIQUE KEY `cooler_path_detail_id_UNIQUE` (`id`),
- CONSTRAINT `coolerPathDetail_FK` FOREIGN KEY (`coolerPathFk`) REFERENCES `vn2008`.`cooler_path__` (`cooler_path_id`) ON UPDATE CASCADE
+ UNIQUE KEY `cooler_path_detail_id_UNIQUE` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -30050,9 +29391,10 @@ 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) NOT NULL,
+ `name` varchar(25) NOT NULL,
`CEE` tinyint(1) NOT NULL DEFAULT 1,
`code` varchar(2) NOT NULL,
+ `viesCode` varchar(2) DEFAULT NULL,
`currencyFk` tinyint(3) unsigned NOT NULL DEFAULT 1,
`politicalCountryFk__` mediumint(8) unsigned DEFAULT NULL COMMENT 'Pais Real(apaño por culpa del España Exento)',
`geoFk` int(11) DEFAULT NULL,
@@ -30062,11 +29404,12 @@ CREATE TABLE `country` (
`continentFk` tinyint(4) DEFAULT NULL,
`a3Code` int(11) DEFAULT NULL COMMENT 'Código país para a3',
`isSocialNameUnique` tinyint(1) NOT NULL DEFAULT 1,
+ `country` varchar(25) GENERATED ALWAYS AS (`name`) VIRTUAL,
PRIMARY KEY (`id`),
UNIQUE KEY `country_unique` (`code`),
KEY `Id_Paisreal` (`politicalCountryFk__`),
KEY `currency_id_fk_idx` (`currencyFk`),
- KEY `country_Ix4` (`country`),
+ KEY `country_Ix4` (`name`),
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,
@@ -30316,7 +29659,7 @@ CREATE TABLE `deliveryNote` (
`supervisorFk` int(10) unsigned NOT NULL,
`departmentFk` int(11) NOT NULL,
`invoiceInFk` mediumint(8) unsigned DEFAULT NULL,
- `farmingFk` int(10) unsigned DEFAULT NULL,
+ `farmingFk__` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fk_albaran_Proveedores_idx` (`supplierFk`),
KEY `fk_albaran_empresa1_idx` (`companyFk`),
@@ -30326,9 +29669,9 @@ CREATE TABLE `deliveryNote` (
KEY `fk_albaran_Trabajadores2_idx` (`supervisorFk`),
KEY `fk_albaran_department1_idx` (`departmentFk`),
KEY `fk_albaran_recibida_idx` (`invoiceInFk`),
- KEY `albaran_FK` (`farmingFk`),
+ KEY `albaran_FK` (`farmingFk__`),
CONSTRAINT `albaranCompany_Fk` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `albaran_FK` FOREIGN KEY (`farmingFk`) REFERENCES `farming` (`id`),
+ CONSTRAINT `albaran_FK` FOREIGN KEY (`farmingFk__`) REFERENCES `farming` (`id`),
CONSTRAINT `albaran_supplierFk` FOREIGN KEY (`supplierFk`) REFERENCES `supplier` (`id`) ON UPDATE CASCADE,
CONSTRAINT `fk_albaran_Trabajadores1` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE,
CONSTRAINT `fk_albaran_Trabajadores2` FOREIGN KEY (`supervisorFk`) REFERENCES `worker` (`id`) ON UPDATE CASCADE,
@@ -30575,6 +29918,7 @@ CREATE TABLE `deviceProductionConfig` (
`id` int(10) unsigned NOT NULL,
`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',
+ `maxDevicesPerUser` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `deviceProductionConfig_check` CHECK (`id` = 1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
@@ -30648,16 +29992,18 @@ DROP TABLE IF EXISTS `deviceProductionUser`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `deviceProductionUser` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`deviceProductionFk` int(11) NOT NULL,
`userFk` int(10) unsigned NOT NULL,
`created` timestamp NULL DEFAULT current_timestamp(),
`editorFk` int(10) unsigned DEFAULT NULL,
- PRIMARY KEY (`deviceProductionFk`),
- UNIQUE KEY `deviceProductionUser_UN` (`userFk`),
+ `simSerialNumber` text DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `deviceProductionUser_unique` (`deviceProductionFk`),
KEY `userFgn_idx` (`userFk`),
KEY `deviceProductionUser_fk_editor` (`editorFk`),
- 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,
+ CONSTRAINT `deviceProductionUser_deviceProduction_FK` FOREIGN KEY (`deviceProductionFk`) REFERENCES `deviceProduction` (`id`),
CONSTRAINT `deviceProductionUser_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -31241,6 +30587,7 @@ DROP TABLE IF EXISTS `entryType`;
CREATE TABLE `entryType` (
`code` varchar(100) NOT NULL,
`description` varchar(100) NOT NULL,
+ `isInformal` tinyint(4) NOT NULL DEFAULT 0,
PRIMARY KEY (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -31455,43 +30802,6 @@ SET character_set_client = utf8;
1 AS `rate` */;
SET character_set_client = @saved_cs_client;
---
--- Temporary table structure for view `exchangeReportSource`
---
-
-DROP TABLE IF EXISTS `exchangeReportSource`;
-/*!50001 DROP VIEW IF EXISTS `exchangeReportSource`*/;
-SET @saved_cs_client = @@character_set_client;
-SET character_set_client = utf8;
-/*!50001 CREATE VIEW `exchangeReportSource` AS SELECT
- 1 AS `dated`,
- 1 AS `amountIn`,
- 1 AS `rateIn`,
- 1 AS `amountOut`,
- 1 AS `rateOut`,
- 1 AS `amountEntry`,
- 1 AS `rateEntry`,
- 1 AS `rateECB` */;
-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 VIEW `exchangeReportSourcePrevious` AS SELECT
- 1 AS `dated`,
- 1 AS `amountIn`,
- 1 AS `rateIn`,
- 1 AS `amountOut`,
- 1 AS `rateOut`,
- 1 AS `amountEntry`,
- 1 AS `rateEntry` */;
-SET character_set_client = @saved_cs_client;
-
--
-- Table structure for table `excuse`
--
@@ -31646,7 +30956,7 @@ CREATE TABLE `expeditionPallet` (
`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
+ CONSTRAINT `expeditionPallet_fk1` FOREIGN KEY (`truckFk`) REFERENCES `roadmapStop` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -31841,33 +31151,23 @@ SET character_set_client = utf8;
SET character_set_client = @saved_cs_client;
--
--- Table structure for table `expeditionTruck`
+-- Temporary table structure for view `expeditionTruck`
--
DROP TABLE IF EXISTS `expeditionTruck`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `expeditionTruck` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `roadmapFk` int(10) unsigned DEFAULT NULL,
- `warehouseFk` smallint(6) unsigned DEFAULT NULL,
- `eta` datetime DEFAULT NULL COMMENT 'Estimated time of arrival',
- `description` varchar(45) NOT NULL,
- `bufferFk` int(11) DEFAULT NULL COMMENT 'buffer destino de las cajas',
- `created` timestamp NULL DEFAULT current_timestamp(),
- `userFk` int(10) unsigned DEFAULT NULL,
- PRIMARY KEY (`id`),
- KEY `expeditionTruck_idx1` (`eta`),
- KEY `expeditionTruck_FK` (`bufferFk`),
- KEY `expeditionTruck_FK_1` (`warehouseFk`),
- KEY `expeditionTruck_FK_2` (`roadmapFk`),
- KEY `expeditionTruck_FK_3` (`userFk`),
- CONSTRAINT `expeditionTruck_FK` FOREIGN KEY (`bufferFk`) REFERENCES `srt`.`buffer` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
- CONSTRAINT `expeditionTruck_FK_1` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `expeditionTruck_FK_2` FOREIGN KEY (`roadmapFk`) REFERENCES `roadmap` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `expeditionTruck_FK_3` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Distintas paradas que hacen los trocales';
-/*!40101 SET character_set_client = @saved_cs_client */;
+/*!50001 DROP VIEW IF EXISTS `expeditionTruck`*/;
+SET @saved_cs_client = @@character_set_client;
+SET character_set_client = utf8;
+/*!50001 CREATE VIEW `expeditionTruck` AS SELECT
+ 1 AS `id`,
+ 1 AS `roadmapFk`,
+ 1 AS `warehouseFk`,
+ 1 AS `eta`,
+ 1 AS `description`,
+ 1 AS `bufferFk`,
+ 1 AS `created`,
+ 1 AS `userFk` */;
+SET character_set_client = @saved_cs_client;
--
-- Temporary table structure for view `expeditionTruck_Control`
@@ -32779,12 +32079,12 @@ CREATE TABLE `invoiceInConfig` (
`id` int(10) unsigned NOT NULL,
`retentionRate` int(3) NOT NULL,
`retentionName` varchar(25) NOT NULL,
- `sageWithholdingFk` smallint(6) NOT NULL,
+ `sageFarmerWithholdingFk` smallint(6) NOT NULL,
`daysAgo` int(10) unsigned DEFAULT 45 COMMENT 'Días en el pasado para mostrar facturas en invoiceIn series en salix',
`taxRowLimit` int(11) DEFAULT 4 COMMENT 'Número máximo de líneas de IVA que puede tener una factura',
PRIMARY KEY (`id`),
- KEY `invoiceInConfig_sageWithholdingFk` (`sageWithholdingFk`),
- CONSTRAINT `invoiceInConfig_sageWithholdingFk` FOREIGN KEY (`sageWithholdingFk`) REFERENCES `sage`.`TiposRetencion` (`CodigoRetencion`) ON DELETE CASCADE ON UPDATE CASCADE,
+ KEY `invoiceInConfig_sageWithholdingFk` (`sageFarmerWithholdingFk`),
+ CONSTRAINT `invoiceInConfig_sageWithholdingFk` FOREIGN KEY (`sageFarmerWithholdingFk`) REFERENCES `sage`.`TiposRetencion` (`CodigoRetencion`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `invoiceInConfig_check` CHECK (`id` = 1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -33225,8 +32525,8 @@ CREATE TABLE `item` (
`lastUsed` datetime DEFAULT current_timestamp(),
`weightByPiece` int(10) unsigned DEFAULT NULL COMMENT 'peso por defecto para un articulo por tallo/unidad',
`editorFk` int(10) unsigned DEFAULT NULL,
- `recycledPlastic` int(11) DEFAULT NULL,
- `nonRecycledPlastic` int(11) DEFAULT NULL,
+ `recycledPlastic` decimal(10,2) DEFAULT NULL,
+ `nonRecycledPlastic` decimal(10,2) DEFAULT NULL,
`minQuantity` int(10) unsigned DEFAULT NULL COMMENT 'Cantidad mínima para una línea de venta',
`isBoxPickingMode` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'FALSE: using item.packingOut TRUE: boxPicking using itemShelving.packing',
PRIMARY KEY (`id`),
@@ -34325,6 +33625,22 @@ SET character_set_client = utf8;
1 AS `totalAmount` */;
SET character_set_client = @saved_cs_client;
+--
+-- Table structure for table `ledgerCompany`
+--
+
+DROP TABLE IF EXISTS `ledgerCompany`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `ledgerCompany` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `fiscalYear` int(10) unsigned NOT NULL COMMENT 'Año del ejercicio contable',
+ `bookEntry` int(10) unsigned NOT NULL DEFAULT 1 COMMENT 'Contador asiento contable',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `ledgerCompany_unique` (`fiscalYear`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Contador para asientos contables';
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Table structure for table `ledgerConfig`
--
@@ -34333,9 +33649,28 @@ DROP TABLE IF EXISTS `ledgerConfig`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ledgerConfig` (
- `lastBookEntry` int(11) NOT NULL,
+ `lastBookEntry__` int(11) NOT NULL COMMENT '@deprecated 2024-05-28 refs #7400 Modificar contador asientos contables',
`maxTolerance` decimal(10,2) NOT NULL,
- PRIMARY KEY (`lastBookEntry`)
+ PRIMARY KEY (`lastBookEntry__`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `locker`
+--
+
+DROP TABLE IF EXISTS `locker`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `locker` (
+ `id` int(100) NOT NULL AUTO_INCREMENT,
+ `code` varchar(10) DEFAULT NULL,
+ `gender` enum('M','F') DEFAULT NULL,
+ `workerFk` int(10) unsigned DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `code` (`code`),
+ UNIQUE KEY `workerFk` (`workerFk`),
+ CONSTRAINT `locker_ibfk_1` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -35201,9 +34536,9 @@ DROP TABLE IF EXISTS `packaging`;
CREATE TABLE `packaging` (
`id` varchar(10) NOT NULL,
`volume` decimal(10,2) DEFAULT NULL CHECK (`volume` >= coalesce(`width`,1) * coalesce(`depth`,1) * coalesce(`height`,1)),
- `width` decimal(10,2) DEFAULT 0.00,
- `depth` decimal(10,2) DEFAULT 0.00,
- `height` decimal(10,2) DEFAULT 0.00,
+ `width` decimal(10,2) DEFAULT NULL,
+ `depth` decimal(10,2) DEFAULT NULL,
+ `height` decimal(10,2) DEFAULT NULL,
`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(),
@@ -35488,14 +34823,15 @@ CREATE TABLE `parking` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`column` varchar(5) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT '--',
`row` varchar(5) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT '--',
- `sectorFk` int(11) NOT NULL DEFAULT 2,
+ `sectorFk` int(11) NOT NULL,
`code` varchar(8) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
`pickingOrder` int(11) DEFAULT NULL,
`editorFk` 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
+ CONSTRAINT `parking_fk1` FOREIGN KEY (`sectorFk`) REFERENCES `sector` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
+ CONSTRAINT `chkParkingCodeFormat` CHECK (char_length(`code`) > 4 and `code` like '%-%')
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Tabla con los parkings del altillo';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -35627,14 +34963,14 @@ DROP TABLE IF EXISTS `paymentExchangeInsurance`;
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
/*!50001 CREATE VIEW `paymentExchangeInsurance` AS SELECT
- 1 AS `id`,
- 1 AS `amount`,
- 1 AS `created`,
- 1 AS `dueDay`,
- 1 AS `entityFk`,
+ 1 AS `pago_sdc_id`,
+ 1 AS `importe`,
+ 1 AS `fecha`,
+ 1 AS `vencimiento`,
+ 1 AS `entity_id`,
1 AS `ref`,
1 AS `rate`,
- 1 AS `companyFk`,
+ 1 AS `empresa_id`,
1 AS `financialProductTypefk`,
1 AS `upperBarrier`,
1 AS `lowerBarrier`,
@@ -36265,12 +35601,12 @@ DROP TABLE IF EXISTS `productionConfig`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `productionConfig` (
+ `id` int(10) unsigned NOT NULL,
`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(10) unsigned NOT NULL,
`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',
@@ -36293,6 +35629,8 @@ CREATE TABLE `productionConfig` (
`backupPrinterNotificationDelay` int(10) unsigned DEFAULT NULL COMMENT 'Minimum seconds Interval to Prevent Spam from Same-Type Notifications',
`collection_new_lockname` varchar(100) NOT NULL DEFAULT 'collection_new' COMMENT 'Lockname value for proc vn.collection_new',
`collection_assign_lockname` varchar(100) DEFAULT 'collection_assign' COMMENT 'Lockname value for proc vn.collection_new',
+ `defaultSectorFk` int(10) unsigned NOT NULL DEFAULT 37 COMMENT 'Default sector',
+ `scannableCodeType` enum('qr','barcode') NOT NULL DEFAULT 'barcode',
PRIMARY KEY (`id`),
KEY `productionConfig_FK` (`shortageAddressFk`),
KEY `productionConfig_FK_1` (`clientSelfConsumptionFk`),
@@ -36584,7 +35922,7 @@ CREATE TABLE `province` (
`name` varchar(30) 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,
+ `zoneFk` int(11) DEFAULT NULL,
`geoFk` int(11) DEFAULT NULL,
`autonomyFk` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
@@ -36595,7 +35933,7 @@ CREATE TABLE `province` (
KEY `province_FK` (`autonomyFk`),
CONSTRAINT `province_FK` FOREIGN KEY (`autonomyFk`) REFERENCES `autonomy` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
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 `province_zone_FK` FOREIGN KEY (`zoneFk`) REFERENCES `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=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -36857,10 +36195,12 @@ DROP TABLE IF EXISTS `referenceRate`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `referenceRate` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
`currencyFk` tinyint(3) unsigned NOT NULL,
`dated` date NOT NULL,
`value` float unsigned NOT NULL,
- PRIMARY KEY (`currencyFk`,`dated`),
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `referenceRate_currencyFk_IDX` (`currencyFk`,`dated`) USING BTREE,
KEY `date` (`dated`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -36960,6 +36300,35 @@ CREATE TABLE `roadmap` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Troncales diarios que se contratan';
/*!40101 SET character_set_client = @saved_cs_client */;
+--
+-- Table structure for table `roadmapStop`
+--
+
+DROP TABLE IF EXISTS `roadmapStop`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `roadmapStop` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `roadmapFk` int(10) unsigned DEFAULT NULL,
+ `warehouseFk` smallint(6) unsigned DEFAULT NULL,
+ `eta` datetime DEFAULT NULL COMMENT 'Estimated time of arrival',
+ `description` varchar(45) NOT NULL,
+ `bufferFk` int(11) DEFAULT NULL COMMENT 'buffer destino de las cajas',
+ `created` timestamp NULL DEFAULT current_timestamp(),
+ `userFk` int(10) unsigned DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `expeditionTruck_idx1` (`eta`),
+ KEY `expeditionTruck_FK` (`bufferFk`),
+ KEY `expeditionTruck_FK_1` (`warehouseFk`),
+ KEY `expeditionTruck_FK_2` (`roadmapFk`),
+ KEY `expeditionTruck_FK_3` (`userFk`),
+ CONSTRAINT `expeditionTruck_FK` FOREIGN KEY (`bufferFk`) REFERENCES `srt`.`buffer` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
+ CONSTRAINT `expeditionTruck_FK_1` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `expeditionTruck_FK_2` FOREIGN KEY (`roadmapFk`) REFERENCES `roadmap` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `expeditionTruck_FK_3` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Distintas paradas que hacen los trocales';
+/*!40101 SET character_set_client = @saved_cs_client */;
+
--
-- Temporary table structure for view `role`
--
@@ -37002,7 +36371,7 @@ DROP TABLE IF EXISTS `route`;
CREATE TABLE `route` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`workerFk` int(10) unsigned DEFAULT NULL,
- `firstEditorFk` int(10) unsigned NOT NULL COMMENT 'Usuario creador de la ruta',
+ `firstEditorFk` int(10) unsigned DEFAULT NULL,
`created` date NOT NULL,
`vehicleFk` int(10) unsigned DEFAULT NULL,
`agencyModeFk` int(11) DEFAULT NULL,
@@ -37032,13 +36401,17 @@ CREATE TABLE `route` (
KEY `route_idxIsOk` (`isOk`),
KEY `route_WorkCenterFk_idx` (`commissionWorkCenterFk`),
KEY `route_fk_editor` (`editorFk`),
+ KEY `route_vehicleFk` (`vehicleFk`),
+ KEY `route_firstEditorFk` (`firstEditorFk`),
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_firstEditorFk` FOREIGN KEY (`firstEditorFk`) REFERENCES `account`.`user` (`id`),
CONSTRAINT `route_fk5` FOREIGN KEY (`agencyModeFk`) REFERENCES `agencyMode` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `route_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`),
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
+ CONSTRAINT `route_invoiceInFk` FOREIGN KEY (`invoiceInFk`) REFERENCES `invoiceIn` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
+ CONSTRAINT `route_vehicleFk` FOREIGN KEY (`vehicleFk`) REFERENCES `vehicle` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -37340,7 +36713,7 @@ CREATE TABLE `routesMonitor` (
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,
- CONSTRAINT `routesMonitor_FK_3` FOREIGN KEY (`expeditionTruckFk`) REFERENCES `expeditionTruck` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `routesMonitor_FK_3` FOREIGN KEY (`expeditionTruckFk`) REFERENCES `roadmapStop` (`id`) ON UPDATE CASCADE,
CONSTRAINT `routesMonitor_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -37369,6 +36742,7 @@ CREATE TABLE `sale` (
`isAdded` tinyint(1) NOT NULL DEFAULT 0,
`total` decimal(10,2) GENERATED ALWAYS AS (`price` * `quantity` * (100 - `discount`) / 100) VIRTUAL,
`editorFk` int(10) unsigned DEFAULT NULL,
+ `problem` set('hasItemShortage','hasComponentLack','hasItemDelay','hasRounding','hasItemLost') NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `Id_Ticket` (`ticketFk`),
KEY `itemFk_ticketFk` (`itemFk`,`ticketFk`),
@@ -38165,7 +37539,8 @@ CREATE TABLE `shelving` (
KEY `shelving_fk_editor` (`editorFk`),
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,
- CONSTRAINT `shelving_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`)
+ CONSTRAINT `shelving_fk_editor` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`),
+ CONSTRAINT `chkShelvingCodeFormat` CHECK (char_length(`code`) <= 4 and `code` not like '%-%')
) ENGINE=InnoDB DEFAULT 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 */;
@@ -38692,7 +38067,7 @@ CREATE TABLE `supplier` (
`countryFk` mediumint(8) unsigned 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,
+ `isFarmer__` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'refs #7345 @deprecated 2024-05-10 - Utilizar withholdingSageFk',
`retAccount` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
`phone` varchar(16) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
`commission` float NOT NULL DEFAULT 0,
@@ -39272,6 +38647,8 @@ CREATE TABLE `ticket` (
`clonedFrom` int(11) DEFAULT NULL,
`cmrFk` int(11) DEFAULT NULL,
`editorFk` int(10) unsigned DEFAULT NULL,
+ `problem` set('hasTicketRequest','isFreezed','hasRisk','hasHighRisk','isTaxDataChecked','isTooLittle') NOT NULL DEFAULT '',
+ `risk` decimal(10,2) DEFAULT NULL COMMENT 'cache calculada con el riesgo del cliente',
PRIMARY KEY (`id`),
KEY `Id_Cliente` (`clientFk`),
KEY `Id_Consigna` (`addressFk`),
@@ -39343,7 +38720,10 @@ CREATE TABLE `ticketConfig` (
`packagingInvoicingDated` date NOT NULL DEFAULT '2017-11-21' COMMENT 'Fecha desde la cual se gestiona el registro de embalajes de tickets (tabla vn.ticketPackaging)',
`packingDelay` int(11) DEFAULT 1 COMMENT 'Horas que marcará el retraso respecto hora de cierre web del ticket',
`daysForWarningClaim` int(11) NOT NULL DEFAULT 2 COMMENT 'dias restantes hasta que salte el aviso de reclamación fuera de plazo',
+ `defaultAttenderFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
+ KEY `ticketConfig_worker_FK` (`defaultAttenderFk`),
+ CONSTRAINT `ticketConfig_worker_FK` FOREIGN KEY (`defaultAttenderFk`) REFERENCES `worker` (`id`),
CONSTRAINT `ticketConfig_check` CHECK (`id` = 1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -39505,33 +38885,6 @@ CREATE TABLE `ticketLog` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci `PAGE_COMPRESSED`=1;
/*!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 VIEW `ticketMRW` AS SELECT
- 1 AS `id_Agencia`,
- 1 AS `empresa_id`,
- 1 AS `Consignatario`,
- 1 AS `DOMICILIO`,
- 1 AS `POBLACION`,
- 1 AS `CODPOSTAL`,
- 1 AS `telefono`,
- 1 AS `movil`,
- 1 AS `IF`,
- 1 AS `Id_Ticket`,
- 1 AS `warehouse_id`,
- 1 AS `Id_Consigna`,
- 1 AS `CodigoPais`,
- 1 AS `Fecha`,
- 1 AS `province_id`,
- 1 AS `landing` */;
-SET character_set_client = @saved_cs_client;
-
--
-- Temporary table structure for view `ticketNotInvoiced`
--
@@ -39736,7 +39089,7 @@ CREATE TABLE `ticketRequest` (
`ordered` datetime DEFAULT NULL,
`shipped` datetime DEFAULT NULL,
`salesPersonCode` varchar(3) DEFAULT NULL,
- `buyerCode` varchar(3) NOT NULL DEFAULT 'NOE',
+ `buyerCode__` varchar(3) NOT NULL COMMENT '@deprecated 2024-04-23 refs #6731 field not used',
`quantity` int(11) DEFAULT NULL,
`price` double DEFAULT NULL,
`itemFk` double DEFAULT NULL,
@@ -39755,7 +39108,7 @@ CREATE TABLE `ticketRequest` (
UNIQUE KEY `Id_Movimiento_UNIQUE` (`saleFk`),
KEY `Id_ARTICLE` (`itemFk`),
KEY `Id_CLIENTE` (`clientFk`),
- KEY `Id_Comprador` (`buyerCode`),
+ KEY `Id_Comprador` (`buyerCode__`),
KEY `Id_Movimiento` (`saleFk`),
KEY `Id_Vendedor` (`salesPersonCode`),
KEY `fgnRequester_idx` (`requesterFk`),
@@ -39872,35 +39225,6 @@ SET character_set_client = utf8;
1 AS `isPicked` */;
SET character_set_client = @saved_cs_client;
---
--- Temporary table structure for view `ticketToPrepare`
---
-
-DROP TABLE IF EXISTS `ticketToPrepare`;
-/*!50001 DROP VIEW IF EXISTS `ticketToPrepare`*/;
-SET @saved_cs_client = @@character_set_client;
-SET character_set_client = utf8;
-/*!50001 CREATE VIEW `ticketToPrepare` AS SELECT
- 1 AS `Id_Ticket`,
- 1 AS `Id_Movimiento`,
- 1 AS `Id_Movimiento_mark`,
- 1 AS `Id_Trabjador`,
- 1 AS `Id_Article`,
- 1 AS `Concepte`,
- 1 AS `subName`,
- 1 AS `Cantidad`,
- 1 AS `original_quantity`,
- 1 AS `Hora`,
- 1 AS `Departure`,
- 1 AS `Minuto`,
- 1 AS `agency_id`,
- 1 AS `warehouse_id`,
- 1 AS `province_id`,
- 1 AS `picked`,
- 1 AS `zoneFk`,
- 1 AS `sectorFk` */;
-SET character_set_client = @saved_cs_client;
-
--
-- Table structure for table `ticketTracking`
--
@@ -39999,35 +39323,6 @@ CREATE TABLE `ticketWeekly` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
---
--- Temporary table structure for view `ticketeToPreparePrepared`
---
-
-DROP TABLE IF EXISTS `ticketeToPreparePrepared`;
-/*!50001 DROP VIEW IF EXISTS `ticketeToPreparePrepared`*/;
-SET @saved_cs_client = @@character_set_client;
-SET character_set_client = utf8;
-/*!50001 CREATE VIEW `ticketeToPreparePrepared` AS SELECT
- 1 AS `Id_Ticket`,
- 1 AS `Id_Movimiento`,
- 1 AS `Id_Movimiento_mark`,
- 1 AS `Id_Trabjador`,
- 1 AS `Id_Article`,
- 1 AS `Concepte`,
- 1 AS `subName`,
- 1 AS `Cantidad`,
- 1 AS `original_quantity`,
- 1 AS `Hora`,
- 1 AS `Departure`,
- 1 AS `Minuto`,
- 1 AS `agency_id`,
- 1 AS `warehouse_id`,
- 1 AS `province_id`,
- 1 AS `picked`,
- 1 AS `trabajador`,
- 1 AS `sectorFk` */;
-SET character_set_client = @saved_cs_client;
-
--
-- Table structure for table `till`
--
@@ -40390,15 +39685,22 @@ CREATE TABLE `travelConfig` (
`warehouseOutFk` smallint(6) unsigned NOT NULL DEFAULT 60 COMMENT 'Warehouse destino',
`agencyFk` int(11) NOT NULL DEFAULT 1378 COMMENT 'Agencia por defecto',
`companyFk` int(10) unsigned NOT NULL DEFAULT 442 COMMENT 'Compañía por defecto',
+ `devalueWarehouseOutFk` smallint(6) unsigned DEFAULT NULL COMMENT 'Datos del travel para las entradas generadas al devaluar artículos de A1 a A2',
+ `devalueAgencyModeFk` int(11) DEFAULT NULL,
+ `devalueRef` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `travelConfig_FK` (`warehouseInFk`),
KEY `travelConfig_FK_1` (`warehouseOutFk`),
KEY `travelConfig_FK_2` (`agencyFk`),
KEY `travelConfig_FK_3` (`companyFk`),
+ KEY `travelConfig_agencyMode_FK` (`devalueAgencyModeFk`),
+ KEY `travelConfig_warehouse_FK` (`devalueWarehouseOutFk`),
CONSTRAINT `travelConfig_FK` FOREIGN KEY (`warehouseInFk`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `travelConfig_FK_1` FOREIGN KEY (`warehouseOutFk`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `travelConfig_FK_2` FOREIGN KEY (`agencyFk`) REFERENCES `agencyMode` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `travelConfig_FK_3` FOREIGN KEY (`companyFk`) REFERENCES `company` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
+ CONSTRAINT `travelConfig_agencyMode_FK` FOREIGN KEY (`devalueAgencyModeFk`) REFERENCES `agencyMode` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
+ CONSTRAINT `travelConfig_warehouse_FK` FOREIGN KEY (`devalueWarehouseOutFk`) REFERENCES `warehouse` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `travelConfig_check` CHECK (`id` = 1)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -41102,12 +40404,10 @@ CREATE TABLE `worker` (
`sex` enum('M','F') NOT NULL DEFAULT 'F' COMMENT 'M Masculino F Femenino',
`businessFk` int(11) DEFAULT NULL,
`balance` decimal(10,2) DEFAULT NULL,
- `locker` int(10) unsigned DEFAULT NULL,
`editorFk` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `CodigoTrabajador_UNIQUE` (`code`),
UNIQUE KEY `worker_business` (`businessFk`),
- UNIQUE KEY `locker` (`locker`),
KEY `sub` (`sub`),
KEY `boss_idx` (`bossFk`),
KEY `worker_FK` (`labelerFk__`),
@@ -41504,7 +40804,7 @@ CREATE TABLE `workerLog` (
`action` set('insert','update','delete') NOT NULL,
`creationDate` timestamp NULL DEFAULT current_timestamp(),
`description` text DEFAULT NULL,
- `changedModel` enum('Worker','Calendar','WorkerTimeControlMail','Business','WorkerDms','WorkerTimeControl') NOT NULL DEFAULT 'Worker',
+ `changedModel` enum('Worker','Calendar','WorkerTimeControlMail','Business','WorkerDms','WorkerTimeControl','Locker') NOT NULL DEFAULT 'Worker',
`oldInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`oldInstance`)),
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
`changedModelId` int(11) NOT NULL,
@@ -42320,38 +41620,7 @@ CREATE TABLE `zoneWarehouse` (
-- Dumping events for database 'vn'
--
/*!50106 SET @save_time_zone= @@TIME_ZONE */ ;
-/*!50106 DROP EVENT IF EXISTS `clientsDisable` */;
-DELIMITER ;;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
-/*!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 `clientsDisable` ON SCHEDULE EVERY 1 MONTH STARTS '2023-06-01 00:00:00' ON COMPLETION PRESERVE ENABLE DO BEGIN
- UPDATE account.user u
- JOIN client c ON c.id = u.id
- SET u.active = FALSE
- WHERE c.typeFk = 'normal'
- AND u.id NOT IN (
- SELECT DISTINCT c.id
- FROM client c
- LEFT JOIN ticket t ON t.clientFk = c.id
- WHERE c.salesPersonFk IS NOT NULL
- OR t.created > util.VN_CURDATE() - INTERVAL 2 MONTH
- OR shipped > util.VN_CURDATE() - INTERVAL 2 MONTH
- );
-END */ ;;
-/*!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 `client_unassignSalesPerson` */;;
+/*!50106 DROP EVENT IF EXISTS `client_unassignSalesPerson` */;
DELIMITER ;;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
@@ -42369,6 +41638,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 */ ;;
+/*!50106 DROP EVENT IF EXISTS `client_userDisable` */;;
+DELIMITER ;;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;;
+/*!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 `client_userDisable` ON SCHEDULE EVERY 1 MONTH STARTS '2023-06-01 00:00:00' ON COMPLETION PRESERVE ENABLE DO CALL client_userDisable() */ ;;
+/*!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 `collection_make` */;;
DELIMITER ;;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;;
@@ -44194,57 +43481,6 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP FUNCTION IF EXISTS `getAlert3StateTest` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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 */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` FUNCTION `getAlert3StateTest`(vTicket INT) RETURNS varchar(45) CHARSET latin1 COLLATE latin1_swedish_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 ticket t
- JOIN vn2008.Agencias a ON a.Id_Agencia = 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 t.warehouseFk <> w.warehouse_id INTO isWaitingForPickUp
- FROM ticket t
- LEFT JOIN vn2008.warehouse_pickup w
- ON w.agency_id = t.agencyModeFk AND w.warehouse_id = t.warehouseFk
- WHERE t.id = 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 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP FUNCTION IF EXISTS `getDueDate` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -45747,6 +44983,46 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP FUNCTION IF EXISTS `sale_hasComponentLack` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` FUNCTION `sale_hasComponentLack`(vSelf INT
+) RETURNS tinyint(1)
+ READS SQL DATA
+BEGIN
+/**
+ * Check if a sales line has all the required components.
+ *
+ * @param vSelf Id de sale
+ * @return BOOL
+ */
+ DECLARE vHasComponentLack TINYINT(1);
+
+ WITH componentRequired AS(
+ SELECT COUNT(*) total
+ FROM vn.component
+ WHERE isRequired
+ )SELECT SUM(IF(c.isRequired, TRUE, FALSE)) <> cr.total INTO vHasComponentLack
+ FROM vn.sale s
+ JOIN componentRequired cr
+ LEFT JOIN vn.saleComponent sc ON sc.saleFk = s.id
+ LEFT JOIN vn.component c ON c.id = sc.componentFk
+ WHERE s.id = vSelf;
+
+ RETURN vHasComponentLack;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP FUNCTION IF EXISTS `specie_IsForbidden` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -46095,11 +45371,11 @@ SELECT t.routeFk, t.warehouseFk, IFNULL(ts.productionOrder,0)
LEFT JOIN ticketState ts on ts.ticketFk = t.id
WHERE t.id = vTicketId;
-SELECT (ag.`name` = 'VN_VALENCIA')
+SELECT (a.`name` = 'VN_VALENCIA')
INTO vIsValenciaPath
FROM `route` r
- JOIN vn2008.Agencias a on a.Id_Agencia = r.agencyModeFk
- JOIN vn2008.agency ag on ag.agency_id = a.agency_id
+ JOIN agencyMode am on am.id = r.agencyModeFk
+ JOIN agency a on a.id = am.agencyFk
WHERE r.id = vMyPath;
IF vIsValenciaPath THEN -- Rutas Valencia
@@ -46168,9 +45444,9 @@ BEGIN
SELECT CONCAT(printedStickers,'/',Total, IF(printedStickers = Total ,' LS','')) INTO vSplitCounter
FROM
(
- 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
+ SELECT count(sl.saleFk) as printedStickers, COUNT(*) as Total
+ FROM sale s
+ LEFT JOIN saleLabel sl ON sl.saleFk = s.id
WHERE ticketFk = vTicketFk
) sub;
@@ -46521,6 +45797,42 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP FUNCTION IF EXISTS `ticket_isTooLittle` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` FUNCTION `ticket_isTooLittle`(vSelf INT
+) RETURNS tinyint(1)
+ READS SQL DATA
+BEGIN
+/**
+ * Check if the ticket is small based on the volume and amount parameters.
+ *
+ * @param vSelf Id ticket
+ * @return BOOL
+ */
+ DECLARE vIsTooLittle TINYINT(1);
+
+ SELECT (SUM(IFNULL(sv.litros, 0)) < vc.minTicketVolume
+ OR IFNULL(t.totalWithoutVat, 0) < vc.minTicketValue) INTO vIsTooLittle
+ FROM ticket t
+ LEFT JOIN saleVolume sv ON sv.ticketFk = t.id
+ JOIN volumeConfig vc
+ WHERE t.id = vSelf;
+
+ RETURN vIsTooLittle;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP FUNCTION IF EXISTS `till_new` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -47133,61 +46445,6 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP FUNCTION IF EXISTS `xdiario_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 */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` FUNCTION `xdiario_new`(vAsiento INT,
- vDated DATE,
- vSubaccount VARCHAR(12),
- vAccount VARCHAR(12),
- vConcept VARCHAR(25),
- vDebit DOUBLE,
- vCredit DOUBLE,
- vEuro DOUBLE,
- vSerie CHAR(1),
- vInvoice VARCHAR(8),
- vVat DOUBLE,
- vRe DOUBLE,
- vAux TINYINT,
- vCompany INT
-) RETURNS int(11)
- NO SQL
-BEGIN
- IF vAsiento IS NULL THEN
- CALL vn.ledger_next(vAsiento);
- END IF;
-
- INSERT INTO XDiario
- SET ASIEN = vAsiento,
- FECHA = vDated,
- SUBCTA = vSubaccount,
- CONTRA = vAccount,
- CONCEPTO = vConcept,
- EURODEBE = vDebit,
- EUROHABER = vCredit,
- BASEEURO = vEuro,
- SERIE = vSerie,
- FACTURA = vInvoice,
- IVA = vVat,
- RECEQUIV = vRe,
- AUXILIAR = IF(vAux = FALSE, NULL, '*'),
- MONEDAUSO = 2,
- empresa_id = vCompany;
-
- RETURN vAsiento;
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP FUNCTION IF EXISTS `zoneGeo_new` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -47732,7 +46989,7 @@ BEGIN
DECLARE vEnded DATETIME DEFAULT util.dayEnd(util.VN_CURDATE());
SELECT ag.id agency_id,
- CONCAT(RPAD(c.country, 16,' _') ,' ',ag.name) Agencia,
+ CONCAT(RPAD(c.name, 16,' _') ,' ',ag.name) Agencia,
COUNT(*) expediciones,
SUM(t.packages) Bultos,
SUM(tpe.boxes) Faltan
@@ -47835,6 +47092,157 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `available_traslate` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `available_traslate`(
+ vWarehouseLanding INT,
+ vDated DATE,
+ vWarehouseShipment INT)
+proc: BEGIN
+/**
+ * Calcular la disponibilidad dependiendo del almacen
+ * de origen y destino según la fecha.
+ *
+ * @param vWarehouseLanding Almacén de llegada
+ * @param vDated Fecha del calculo para la disponibilidad de articulos
+ * @param vWarehouseShipment Almacén de destino
+ */
+ DECLARE vDatedFrom DATE;
+ DECLARE vDatedTo DATETIME;
+ DECLARE vDatedReserve DATETIME;
+ DECLARE vDatedInventory DATE;
+
+ IF vDated < util.VN_CURDATE() THEN
+ LEAVE proc;
+ END IF;
+
+ CALL item_getStock (vWarehouseLanding, vDated, NULL);
+
+ -- Calcula algunos parámetros necesarios.
+ SET vDatedFrom = vDated;
+ SET vDatedTo = util.dayEnd (vDated + INTERVAL 4 DAY);
+ SELECT inventoried INTO vDatedInventory FROM config;
+ SELECT SUBTIME(util.VN_NOW(), reserveTime) INTO vDatedReserve
+ FROM hedera.orderConfig;
+
+ -- Calcula el ultimo dia de vida para cada producto.
+ CREATE OR REPLACE TEMPORARY TABLE tItemRange
+ (PRIMARY KEY (itemFk))
+ ENGINE = MEMORY
+ SELECT c.itemFk, MAX(t.landed) dated
+ FROM buy c
+ JOIN entry e ON c.entryFk = e.id
+ JOIN travel t ON t.id = e.travelFk
+ JOIN warehouse w ON w.id = t.warehouseInFk
+ WHERE t.landed BETWEEN vDatedInventory AND vDatedFrom
+ AND t.warehouseInFk = vWarehouseLanding
+ AND NOT e.isExcludedFromAvailable
+ AND NOT e.isRaid
+ GROUP BY c.itemFk;
+
+ -- Tabla con el ultimo dia de last_buy para cada producto
+ -- que hace un replace de la anterior.
+ CALL buyUltimate(vWarehouseShipment, util.VN_CURDATE());
+
+ INSERT INTO tItemRange
+ SELECT t.itemFk, tr.landed
+ FROM tmp.buyUltimate t
+ JOIN buy b ON b.id = t.buyFk
+ JOIN entry e ON e.id = b.entryFk
+ JOIN travel tr ON tr.id = e.travelFk
+ LEFT JOIN tItemRange i ON t.itemFk = i.itemFk
+ WHERE t.warehouseFk = vWarehouseShipment
+ AND NOT e.isRaid
+ ON DUPLICATE KEY UPDATE tItemRange.dated = GREATEST(tItemRange.dated,
+ tr.landed);
+
+ CREATE OR REPLACE TEMPORARY TABLE tItemRangeLive
+ (PRIMARY KEY (itemFk))
+ ENGINE = MEMORY
+ SELECT ir.itemFk, util.dayEnd(ir.dated + INTERVAL it.life DAY) dated
+ FROM tItemRange ir
+ JOIN item i ON i.id = ir.itemFk
+ JOIN itemType it ON it.id = i.typeFk
+ HAVING dated >= vDatedFrom OR dated IS NULL;
+
+ -- Calcula el ATP.
+ CREATE OR REPLACE TEMPORARY TABLE tmp.itemCalc
+ (INDEX (itemFk,warehouseFk))
+ ENGINE = MEMORY
+ SELECT i.itemFk,
+ vWarehouseLanding warehouseFk,
+ i.shipped dated,
+ i.quantity
+ FROM itemTicketOut i
+ JOIN tItemRangeLive ir ON ir.itemFK = i.itemFk
+ WHERE i.shipped >= vDatedFrom
+ AND (ir.dated IS NULL OR i.shipped <= ir.dated)
+ AND i.warehouseFk = vWarehouseLanding
+ UNION ALL
+ SELECT b.itemFk,
+ vWarehouseLanding,
+ t.landed,
+ b.quantity
+ FROM buy b
+ JOIN entry e ON b.entryFk = e.id
+ JOIN travel t ON t.id = e.travelFk
+ JOIN tItemRangeLive ir ON ir.itemFk = b.itemFk
+ WHERE NOT e.isExcludedFromAvailable
+ AND b.quantity <> 0
+ AND NOT e.isRaid
+ AND t.warehouseInFk = vWarehouseLanding
+ AND t.landed >= vDatedFrom
+ AND (ir.dated IS NULL OR t.landed <= ir.dated)
+ UNION ALL
+ SELECT i.itemFk, vWarehouseLanding, i.shipped, i.quantity
+ FROM itemEntryOut i
+ JOIN tItemRangeLive ir ON ir.itemFk = i.itemFk
+ WHERE i.shipped >= vDatedFrom
+ AND (ir.dated IS NULL OR i.shipped <= ir.dated)
+ AND i.warehouseOutFk = vWarehouseLanding
+ UNION ALL
+ SELECT r.item_id, vWarehouseLanding, r.shipment, -r.amount
+ FROM hedera.order_row r
+ JOIN hedera.`order` o ON o.id = r.order_id
+ JOIN tItemRangeLive ir ON ir.itemFk = r.item_id
+ WHERE r.shipment >= vDatedFrom
+ AND (ir.dated IS NULL OR r.shipment <= ir.dated)
+ AND r.warehouse_id = vWarehouseLanding
+ AND r.created >= vDatedReserve
+ AND NOT o.confirmed;
+
+ CALL item_getAtp(vDated);
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.availableTraslate
+ (PRIMARY KEY (item_id))
+ ENGINE = MEMORY
+ SELECT t.item_id, SUM(stock) available
+ FROM (
+ SELECT ti.itemFk item_id, stock
+ FROM tmp.itemList ti
+ JOIN tItemRange ir ON ir.itemFk = ti.itemFk
+ UNION ALL
+ SELECT itemFk, quantity
+ FROM tmp.itemAtp
+ ) t
+ GROUP BY t.item_id
+ HAVING available <> 0;
+
+ DROP TEMPORARY TABLE tmp.itemList, tItemRange, tItemRangeLive;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `balanceNestTree_addChild` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -48096,6 +47504,237 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `balance_create` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `balance_create`(
+ vStartingMonth INT,
+ vEndingMonth INT,
+ vCompany INT,
+ vIsConsolidated BOOLEAN,
+ vInterGroupSalesIncluded BOOLEAN
+)
+BEGIN
+/**
+ * Crea un balance financiero para una empresa durante
+ * un período de tiempo determinado.
+ *
+ * @param vStartingMonth Mes de inicio del período
+ * @param vEndingMonth Mes de finalización del período
+ * @param vCompany Identificador de la empresa
+ * @param vIsConsolidated Indica si se trata de un balance consolidado
+ * @param vInterGroupSalesIncluded Indica si se incluyen las ventas del grupo
+ */
+ DECLARE intGAP INT DEFAULT 7;
+ DECLARE vYears INT DEFAULT 2;
+ DECLARE vYear TEXT;
+ DECLARE vOneYearAgo TEXT;
+ DECLARE vTwoYearsAgo TEXT;
+ DECLARE vQuery TEXT;
+ DECLARE vConsolidatedGroup INT;
+ DECLARE vStartingDate DATE DEFAULT '2020-01-01';
+ DECLARE vCurYear INT DEFAULT YEAR(util.VN_CURDATE());
+ DECLARE vStartingYear INT DEFAULT vCurYear - 2;
+ DECLARE vTable TEXT;
+
+ SET vTable = util.quoteIdentifier('balanceNestTree');
+ SET vYear = util.quoteIdentifier(vCurYear);
+ SET vOneYearAgo = util.quoteIdentifier(vCurYear-1);
+ SET vTwoYearsAgo = util.quoteIdentifier(vCurYear-2);
+
+ -- Solicitamos la tabla tmp.nest, como base para el balance.
+ DROP TEMPORARY TABLE IF EXISTS tmp.nest;
+
+ EXECUTE IMMEDIATE CONCAT(
+ 'CREATE TEMPORARY TABLE tmp.nest
+ SELECT node.id
+ ,CONCAT( REPEAT(REPEAT(" ",?), COUNT(parent.id) - 1),
+ node.name) name,
+ node.lft,
+ node.rgt,
+ COUNT(parent.id) - 1 depth,
+ CAST((node.rgt - node.lft - 1) / 2 AS DECIMAL) sons
+ FROM ', vTable, ' node,
+ ', vTable, ' parent
+ WHERE node.lft BETWEEN parent.lft AND parent.rgt
+ GROUP BY node.id
+ ORDER BY node.lft')
+ USING intGAP;
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.balance
+ SELECT * FROM tmp.nest;
+
+ SELECT companyGroupFk INTO vConsolidatedGroup
+ FROM company
+ WHERE id = vCompany;
+
+ CREATE OR REPLACE TEMPORARY TABLE tCompanyReceiving
+ SELECT id companyFk
+ FROM company
+ WHERE id = vCompany
+ OR companyGroupFk = IF(vIsConsolidated, vConsolidatedGroup, NULL);
+
+ CREATE OR REPLACE TEMPORARY TABLE tCompanyIssuing
+ SELECT id companyFk
+ FROM supplier p;
+
+ IF NOT vInterGroupSalesIncluded THEN
+
+ DELETE ci
+ FROM tCompanyIssuing ci
+ JOIN company e on e.id = ci.companyFk
+ WHERE e.companyGroupFk = vConsolidatedGroup;
+
+ END IF;
+
+ -- Se calculan las facturas que intervienen,
+ -- para luego poder servir el desglose desde aqui.
+ CREATE OR REPLACE TEMPORARY TABLE tmp.balanceDetail
+ SELECT cr.companyFk receivingId,
+ ci.companyFk issuingId,
+ YEAR(IFNULL(r.bookEntried,IFNULL(r.booked, r.issued))) `year`,
+ MONTH(IFNULL(r.bookEntried,IFNULL(r.booked, r.issued))) `month`,
+ expenseFk,
+ SUM(taxableBase) amount
+ FROM invoiceIn r
+ JOIN invoiceInTax ri on ri.invoiceInFk = r.id
+ JOIN tCompanyReceiving cr on cr.companyFk = r.companyFk
+ JOIN tCompanyIssuing ci ON ci.companyFk = r.supplierFk
+ WHERE COALESCE(r.bookEntried, r.booked, r.issued) >= vStartingDate
+ AND r.isBooked
+ GROUP BY expenseFk, `year`, `month`, ci.companyFk, cr.companyFk;
+
+ INSERT INTO tmp.balanceDetail(
+ receivingId,
+ issuingId,
+ `year`,
+ `month`,
+ expenseFk,
+ amount)
+ SELECT em.companyFk,
+ em.companyFk,
+ `year`,
+ `month`,
+ expenseFk,
+ SUM(em.amount)
+ FROM expenseManual em
+ JOIN tCompanyReceiving er ON er.companyFk = em.companyFk
+ WHERE `year` >= vStartingYear
+ AND `month` BETWEEN vStartingMonth AND vEndingMonth
+ GROUP BY expenseFk, `year`, `month`, em.companyFk;
+
+ DELETE FROM tmp.balanceDetail
+ WHERE `month` < vStartingMonth
+ OR `month` > vEndingMonth;
+
+ -- Ahora el balance
+ EXECUTE IMMEDIATE CONCAT(
+ 'ALTER TABLE tmp.balance
+ ADD COLUMN ', vTwoYearsAgo ,' INT(10) NULL ,
+ ADD COLUMN ', vOneYearAgo ,' INT(10) NULL ,
+ ADD COLUMN ', vYear,' INT(10) NULL ,
+ ADD COLUMN expenseFk VARCHAR(10) NULL,
+ ADD COLUMN expenseName VARCHAR(45) NULL');
+
+ -- Añadimos los gastos, para facilitar el formulario
+ UPDATE tmp.balance b
+ JOIN balanceNestTree bnt on bnt.id = b.id
+ JOIN expense e ON e.id = bnt.expenseFk COLLATE utf8_general_ci
+ SET b.expenseFk = e.id COLLATE utf8_general_ci,
+ b.expenseName = e.name COLLATE utf8_general_ci ;
+
+ -- Rellenamos los valores de primer nivel, los que corresponden
+ -- a los gastos simples.
+ WHILE vYears >= 0 DO
+ SET vQuery = CONCAT(
+ 'UPDATE tmp.balance b
+ JOIN (
+ SELECT expenseFk, SUM(amount) amount
+ FROM tmp.balanceDetail
+ WHERE year = ?
+ GROUP BY expenseFk
+ ) sub on sub.expenseFk = b.expenseFk COLLATE utf8_general_ci
+ SET ', util.quoteIdentifier(vCurYear - vYears), ' = - amount');
+
+ EXECUTE IMMEDIATE vQuery
+ USING vCurYear - vYears;
+
+ SET vYears = vYears - 1;
+ END WHILE;
+
+ -- Añadimos las ventas.
+ EXECUTE IMMEDIATE CONCAT(
+ 'UPDATE tmp.balance b
+ JOIN (
+ SELECT SUM(IF(year = ?, venta, 0)) y2,
+ SUM(IF(year = ?, venta, 0)) y1,
+ SUM(IF(year = ?, venta, 0)) y0,
+ c.Gasto
+ FROM bs.ventas_contables c
+ JOIN tCompanyReceiving cr ON cr.companyFk = c.empresa_id
+ WHERE month BETWEEN ? AND ?
+ GROUP BY c.Gasto
+ ) sub ON sub.gasto = b.expenseFk COLLATE utf8_general_ci
+ SET b.', vTwoYearsAgo, '= IFNULL(b.', vTwoYearsAgo, ', 0) + sub.y2,
+ b.', vOneYearAgo, '= IFNULL(b.', vOneYearAgo, ', 0) + sub.y1,
+ b.', vYear, '= IFNULL(b.', vYear, ', 0) + sub.y0')
+ USING vCurYear-2,
+ vCurYear-1,
+ vCurYear,
+ vStartingMonth,
+ vEndingMonth;
+
+ -- Ventas intra grupo.
+ IF NOT vInterGroupSalesIncluded THEN
+
+ SELECT lft, rgt INTO @groupLft, @groupRgt
+ FROM tmp.balance b
+ WHERE TRIM(b.`name`) = 'Grupo';
+
+ DELETE
+ FROM tmp.balance
+ WHERE lft BETWEEN @groupLft AND @groupRgt;
+
+ END IF;
+
+ -- Rellenamos el valor de los padres con la suma de los hijos.
+ CREATE OR REPLACE TEMPORARY TABLE tmp.balance_aux
+ SELECT * FROM tmp.balance;
+
+ EXECUTE IMMEDIATE
+ CONCAT('UPDATE tmp.balance b
+ JOIN (
+ SELECT b1.id,
+ b1.name,
+ SUM(b2.', vYear,') thisYear,
+ SUM(b2.', vOneYearAgo,') oneYearAgo,
+ SUM(b2.', vTwoYearsAgo,') twoYearsAgo
+ FROM tmp.nest b1
+ JOIN tmp.balance_aux b2 on b2.lft BETWEEN b1.lft and b1.rgt
+ GROUP BY b1.id
+ )sub ON sub.id = b.id
+ SET b.', vYear, ' = thisYear,
+ b.', vOneYearAgo, ' = oneYearAgo,
+ b.', vTwoYearsAgo, ' = twoYearsAgo');
+
+ SELECT *, CONCAT('',IFNULL(expenseFk,'')) newgasto
+ FROM tmp.balance;
+
+ DROP TEMPORARY TABLE IF EXISTS tCompanyReceiving, tCompanyIssuing;
+
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `bankEntity_checkBic` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -48525,6 +48164,76 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `buy_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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_clone`(vEntryFk INT)
+BEGIN
+/**
+ * Clone buys to an entry
+ *
+ * @param vEntryFk The entry id
+ * @table tmp.buy(id)
+ */
+ INSERT INTO buy(
+ entryFk,
+ itemFk,
+ quantity,
+ buyingValue,
+ freightValue,
+ isIgnored,
+ stickers,
+ packagingFk,
+ packing,
+ `grouping`,
+ groupingMode,
+ comissionValue,
+ packageValue,
+ price1,
+ price2,
+ price3,
+ minPrice,
+ isChecked,
+ location,
+ weight,
+ itemOriginalFk)
+ SELECT vEntryFk,
+ b.itemFk,
+ b.quantity,
+ b.buyingValue,
+ b.freightValue,
+ b.isIgnored,
+ b.stickers,
+ b.packagingFk,
+ b.packing,
+ b.`grouping`,
+ b.groupingMode,
+ b.comissionValue,
+ b.packageValue,
+ b.price1,
+ b.price2,
+ b.price3,
+ b.minPrice,
+ b.isChecked,
+ b.location,
+ b.weight,
+ b.itemOriginalFk
+ FROM tmp.buy tb
+ JOIN vn.buy b ON b.id = tb.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_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `buy_getSplit` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -48873,16 +48582,18 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_recalcPricesByBuy`(IN vBuyFk INT(11))
+CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_recalcPricesByBuy`(
+ vBuyFk INT(11)
+)
BEGIN
/**
* Recalcula los precios de una compra
*
* @param vBuyFk
- */
+ */
DROP TEMPORARY TABLE IF EXISTS tmp.buyRecalc;
- CREATE TEMPORARY TABLE tmp.buyRecalc
+ CREATE TEMPORARY TABLE tmp.buyRecalc
SELECT vBuyFk id;
CALL buy_recalcPrices();
@@ -48904,13 +48615,15 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_recalcPricesByEntry`(IN vEntryFk INT(11))
+CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_recalcPricesByEntry`(
+ vEntryFk INT(11)
+)
BEGIN
/**
* Recalcula los precios de una entrada
*
* @param vEntryFk
- */
+ */
DROP TEMPORARY TABLE IF EXISTS tmp.buyRecalc;
CREATE TEMPORARY TABLE tmp.buyRecalc
@@ -49560,7 +49273,7 @@ BEGIN
JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk
AND tcs.warehouseFk = tcc.warehouseFk
WHERE IFNULL(tcs.classRate, 1) = 1
- AND NOT tcc.groupingMode = 'packing'
+ AND (tcc.groupingMode = 'grouping' OR tcc.groupingMode IS NULL)
AND (tcc.packing > tcc.`grouping` OR tcc.groupingMode IS NULL)
GROUP BY tcs.warehouseFk, tcs.itemFk;
@@ -49770,7 +49483,7 @@ BEGIN
WHERE cs.description = 'Anulado'
AND c.created < v2Months;
- DELETE FROM expeditionTruck WHERE eta < v3Months;
+ DELETE FROM roadmapStop WHERE eta < v3Months;
DELETE FROM XDiario WHERE FECHA < v3Months OR FECHA IS NULL;
-- Borrar travels sin entradas
@@ -50941,7 +50654,7 @@ BEGIN
c.credit,
CAST(r.risk AS DECIMAL (10,2)) risk,
CAST(c.credit - r.risk AS DECIMAL (10,2)) difference,
- co.country
+ co.name country
FROM client c
JOIN tmp.risk r ON r.clientFk = c.id
JOIN country co ON co.id = c.countryFk
@@ -51094,6 +50807,52 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `client_userDisable` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `client_userDisable`()
+BEGIN
+/**
+* Desactiva los clientes inactivos en los últimos X meses.
+*/
+ DECLARE vMonths INT;
+
+ SELECT monthsToDisableUser INTO vMonths
+ FROM clientConfig;
+
+ IF vMonths IS NULL THEN
+ CALL util.throw('Config parameter not set');
+ END IF;
+
+ UPDATE account.user u
+ JOIN client c ON c.id = u.id
+ LEFT JOIN account.account a ON a.id = u.id
+ SET u.active = FALSE
+ WHERE c.typeFk = 'normal'
+ AND a.id IS NULL
+ AND u.active
+ AND c.created < util.VN_CURDATE() - INTERVAL vMonths MONTH
+ AND u.id NOT IN (
+ SELECT DISTINCT c.id
+ FROM client c
+ LEFT JOIN ticket t ON t.clientFk = c.id
+ WHERE c.salesPersonFk IS NOT NULL
+ OR t.created > util.VN_CURDATE() - INTERVAL vMonths MONTH
+ OR shipped > util.VN_CURDATE() - INTERVAL vMonths MONTH
+ );
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `cmrPallet_add` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -51412,6 +51171,7 @@ BEGIN
BEGIN
IF vLockName IS NOT NULL THEN
DO RELEASE_LOCK(vLockName);
+ CALL util.debugAdd('releaseLock', vLockName); -- Tmp
END IF;
RESIGNAL;
@@ -51420,7 +51180,10 @@ BEGIN
-- Si hay colecciones sin terminar, sale del proceso
CALL collection_get(vUserFk);
- SELECT (pc.maxNotReadyCollections - COUNT(*)) <= 0 INTO vHasTooMuchCollections
+ SELECT (pc.maxNotReadyCollections - COUNT(*)) <= 0,
+ collection_assign_lockname
+ INTO vHasTooMuchCollections,
+ vLockName
FROM productionConfig pc
LEFT JOIN tCollection ON TRUE;
@@ -51900,6 +51663,7 @@ BEGIN
BEGIN
IF vLockName IS NOT NULL THEN
DO RELEASE_LOCK(vLockName);
+ CALL util.debugAdd('releaseLock', vLockName); -- Tmp
END IF;
RESIGNAL;
@@ -52567,11 +52331,12 @@ BEGIN
FROM tPendingDuedates vp
LEFT JOIN supplier s ON s.id = vp.supplierFk
LEFT JOIN client c ON c.fi = s.nif
- LEFT JOIN clientRisk cr ON cr.clientFk = c.id
+ LEFT JOIN clientRisk cr ON cr.clientFk = c.id
AND cr.companyFk = vp.companyFk
LEFT JOIN supplierAccount sa ON sa.supplierFk = s.id
LEFT JOIN bankEntity be ON be.id = sa.bankEntityFk
- LEFT JOIN country co ON co.id = be.countryFk;
+ LEFT JOIN country co ON co.id = be.countryFk
+ GROUP BY vp.id;
DROP TEMPORARY TABLE tOpeningBalances;
DROP TEMPORARY TABLE tPendingDuedates;
@@ -52805,7 +52570,7 @@ BEGIN
10 * p.height as height,
IFNULL(t.routeFk,am.agencyFk) routeFk,
hour(e.created) * 60 + minute(e.created),
- IFNULL(et.description , a.name),
+ IFNULL(rs.description , a.name),
IFNULL(t.routeFk,am.agencyFk) criterion,
IFNULL(p.conveyorBuildingClassFk , pc.defaultConveyorBuildingClass)
FROM vn.expedition e
@@ -52815,7 +52580,7 @@ BEGIN
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
+ LEFT JOIN vn.roadmapStop rs ON rs.id = rm.expeditionTruckFk
JOIN vn.packagingConfig pc
WHERE t.warehouseFk IN (60,1,44)
AND e.created BETWEEN vStarted AND vEnded
@@ -52942,7 +52707,7 @@ BEGIN
cac.invoiced billedAnnually,
c.dueDay,
cgd.grade,
- c2.country
+ c2.name country
FROM tmp.clientGetDebt cgd
LEFT JOIN tmp.risk r ON r.clientFk = cgd.clientFk
JOIN client c ON c.id = cgd.clientFk
@@ -53692,11 +53457,10 @@ BEGIN
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),
+ SET 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.isBooked = TRUE,
e.isConfirmed = TRUE
WHERE d.id = vDuaFk;
@@ -53735,6 +53499,10 @@ BEGIN
SET ASIEN = vASIEN
WHERE id = vDuaFk;
+ UPDATE invoiceIn ii
+ JOIN duaInvoiceIn dii ON dii.invoiceInFk = ii.id
+ SET ii.isBooked = TRUE
+ WHERE dii.duaFk = vDuaFk;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -53788,127 +53556,121 @@ DELIMITER ;;
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, util.VN_CURDATE()) INTO vBookNumber, vBookDated
- FROM dua
+ DECLARE vBookDated DATE;
+ DECLARE vDiff DECIMAL(10,2);
+ DECLARE vApunte BIGINT;
+
+ 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);
+ CALL ledger_next(YEAR(vBookDated), vBookNumber);
END IF;
-- Apunte de la aduana
-
INSERT INTO XDiario(
- ASIEN,
- FECHA,
- SUBCTA,
- CONCEPTO,
- EUROHABER,
- SERIE,
- empresa_id,
- CLAVE,
- FACTURA)
+ ASIEN,
+ FECHA,
+ SUBCTA,
+ CONCEPTO,
+ EUROHABER,
+ SERIE,
+ empresa_id,
+ CLAVE,
+ FACTURA)
+ SELECT vBookNumber,
+ d.bookEntried,
+ '4700000999',
+ CONCAT('DUA ',d.`code`),
+ sum(dt.base * dt.rate / 100) EUROHABER,
+ 'R',
+ d.companyFk,
+ vDuaFk,
+ vDuaFk
+ FROM duaTax dt
+ JOIN dua d ON d.id = dt.duaFk
+ WHERE dt.duaFk = vDuaFk;
- SELECT
- vBookNumber,
- d.bookEntried,
- '4700000999',
- CONCAT('DUA ',d.`code`),
- sum(dt.base * dt.rate / 100) EUROHABER,
- 'R',
- d.companyFk,
- vDuaFk,
- vDuaFk
- 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,
- 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(c.code = 'ES', 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
- LIMIT 10000000000000000000
- ) tba
- GROUP BY rate
+ -- 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(c.code = 'ES', 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
+ LIMIT 10000000000000000000
+ ) tba
+ GROUP BY rate
) tr ON tr.rate = dt.rate
- JOIN supplier s ON s.id = d.companyFk
- JOIN country c ON c.id = s.countryFk
- WHERE d.id = vDuaFk
- GROUP BY dt.rate;
+ JOIN supplier s ON s.id = d.companyFk
+ JOIN country c ON c.id = s.countryFk
+ 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
@@ -53917,7 +53679,6 @@ BEGIN
UPDATE dua
SET ASIEN = vBookNumber
WHERE id = vDuaFk;
-
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -54407,8 +54168,8 @@ BEGIN
* Clones an entry header.
*
* @param vSelf The entry id
+ * @param OUT vNewEntryFk The new entry id
* @param vTravelFk Travel for the new entry or %NULL to use the source entry travel
- * @param vNewEntryFk The new entry id
*/
INSERT INTO entry(
travelFk,
@@ -54486,62 +54247,21 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `entry_copyBuys`(vSelf INT, vCopyTo INT)
+CREATE DEFINER=`root`@`localhost` PROCEDURE `entry_copyBuys`(vSelf INT, vDestinationEntryFk INT)
BEGIN
/**
- * Copies an entry buys to another buy.
+ * Copies all buys from an entry to an entry.
*
* @param vSelf The entry id
- * @param vCopyTo The destination entry id
+ * @param vDestinationEntryFk The destination entry id
*/
- INSERT INTO buy(
- entryFk,
- itemFk,
- quantity,
- buyingValue,
- freightValue,
- isIgnored,
- stickers,
- packing,
- `grouping`,
- groupingMode,
- containerFk,
- comissionValue,
- packageValue,
- packagingFk,
- price1,
- price2,
- price3,
- minPrice,
- isChecked,
- location,
- weight,
- itemOriginalFk
- )
- SELECT vCopyTo,
- itemFk,
- quantity,
- buyingValue,
- freightValue,
- isIgnored,
- stickers,
- packing,
- `grouping`,
- groupingMode,
- containerFk,
- comissionValue,
- packageValue,
- packagingFk,
- price1,
- price2,
- price3,
- minPrice,
- isChecked,
- location,
- weight,
- itemOriginalFk
+ CREATE OR REPLACE TEMPORARY TABLE tmp.buy
+ SELECT id
FROM buy
WHERE entryFk = vSelf;
+
+ CALL buy_clone(vDestinationEntryFk);
+ DROP TEMPORARY TABLE tmp.buy;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -54585,7 +54305,6 @@ BEGIN
packing,
`grouping`,
groupingMode,
- containerFk,
comissionValue,
packageValue,
location,
@@ -54605,7 +54324,6 @@ BEGIN
packing,
`grouping`,
groupingMode,
- containerFk,
comissionValue,
packageValue,
location,
@@ -54739,19 +54457,19 @@ BEGIN
AND v.`visible`
ON DUPLICATE KEY UPDATE visibleLanding = v.`visible`;
- CALL vn2008.availableTraslate(vWarehouseOut, vDateShipped, NULL);
+ CALL available_traslate(vWarehouseOut, vDateShipped, NULL);
INSERT INTO tItem(itemFk, available)
SELECT a.item_id, a.available
- FROM vn2008.availableTraslate a
+ FROM tmp.availableTraslate a
WHERE a.available
ON DUPLICATE KEY UPDATE available = a.available;
- CALL vn2008.availableTraslate(vWarehouseIn, vDateLanded, vWarehouseOut);
+ CALL available_traslate(vWarehouseIn, vDateLanded, vWarehouseOut);
INSERT INTO tItem(itemFk, availableLanding)
SELECT a.item_id, a.available
- FROM vn2008.availableTraslate a
+ FROM tmp.availableTraslate a
WHERE a.available
ON DUPLICATE KEY UPDATE availableLanding = a.available;
ELSE
@@ -54972,7 +54690,6 @@ BEGIN
packing,
`grouping`,
groupingMode,
- containerFk,
comissionValue,
packageValue,
packagingFk,
@@ -54993,7 +54710,6 @@ BEGIN
packing,
`grouping`,
groupingMode,
- containerFk,
comissionValue,
packageValue,
packagingFk,
@@ -55030,7 +54746,6 @@ BEGIN
packing,
`grouping`,
groupingMode,
- containerFk,
comissionValue,
packageValue,
location,
@@ -55049,7 +54764,6 @@ BEGIN
packing,
`grouping`,
groupingMode,
- containerFk,
comissionValue,
packageValue,
location,
@@ -55177,7 +54891,7 @@ BEGIN
LEAVE l;
END IF;
- CALL vn2008.buy_tarifas_entry(vEntryFk);
+ CALL buy_recalcPricesByEntry(vEntryFk);
END LOOP;
CLOSE vCur;
@@ -55274,7 +54988,6 @@ BEGIN
packing,
`grouping`,
groupingMode,
- containerFk,
comissionValue,
packageValue,
location,
@@ -55301,7 +55014,6 @@ BEGIN
packing,
`grouping`,
groupingMode,
- containerFk,
comissionValue,
packageValue,
location,
@@ -56062,7 +55774,7 @@ DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `expeditionTruck_Add`(vHour VARCHAR(5), vDescription VARCHAR(45))
BEGIN
- INSERT INTO vn.expeditionTruck(eta,description)
+ INSERT INTO vn.roadmapStop(eta,description)
VALUES(CONCAT(util.VN_CURDATE(), ' ', vHour), vDescription);
END ;;
@@ -56086,10 +55798,10 @@ BEGIN
SELECT id truckFk,
eta,
- description Destino
- FROM expeditionTruck
- WHERE eta BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE())
- ORDER BY eta;
+ description Destino
+ FROM roadmapStop
+ WHERE eta BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE())
+ ORDER BY eta;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -56196,8 +55908,8 @@ BEGIN
am.name zonaRuta,
t.routeFk ruta,
rm.beachFk ubicacion,
- et.eta ,
- et.description camion,
+ rs.eta ,
+ rs.description camion,
vTicketsPendientes AS ticketsPendientes,
vEtiquetasTotales AS etiquetasTotales,
vEtiquetasEscaneadas AS etiquetasEscaneadas
@@ -56209,7 +55921,7 @@ BEGIN
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
+ LEFT JOIN vn.roadmapStop rs ON rs.id = rm.expeditionTruckFk
WHERE e.id = vExpeditionFk;
END ;;
@@ -56282,8 +55994,8 @@ BEGIN
am.name zonaRuta,
t.routeFk ruta,
rm.beachFk ubicacion,
- et.eta ,
- et.description camion,
+ rs.eta ,
+ rs.description camion,
vTicketsPendientes AS ticketsPendientes,
vEtiquetasTotales AS etiquetasTotales,
vEtiquetasEscaneadas AS etiquetasEscaneadas,
@@ -56296,7 +56008,7 @@ BEGIN
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
+ LEFT JOIN vn.roadmapStop rs ON rs.id = rm.expeditionTruckFk
WHERE e.id = vExpeditionFk;
END ;;
@@ -56326,120 +56038,6 @@ BEGIN
WHERE r.workerFk = workerFk
ORDER BY r.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 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `fv_pca` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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 */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `fv_pca`()
-BEGIN
-
-DECLARE done INT DEFAULT FALSE;
-
-DECLARE vTicketFk INT;
-DECLARE vSaleFk INT;
-DECLARE vClonTicket INT DEFAULT 0;
-
-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
- JOIN vn.itemType it ON it.id = i.typeFk
- WHERE t.shipped BETWEEN '2020-10-18' AND '2020-10-31'
- AND it.code IN ('ANT','ANS','ORQ','TRO')
- and t.warehouseFk = 1;
-
-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 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,
- addressFk,
- agencyModeFk,
- nickname,
- warehouseFk,
- companyFk,
- landed,
- zoneFk,
- zonePrice,
- zoneBonus,
- routeFk
- )
- SELECT
- clientFk,
- shipped,
- addressFk,
- agencyModeFk,
- nickname,
- 44,
- companyFk,
- landed,
- zoneFk,
- zonePrice,
- zoneBonus,
- routeFk
-
- FROM ticket
- WHERE id = vTicketFk;
-
- SET vClonTicket = LAST_INSERT_ID();
-
- SELECT 'lstID', vClonTicket;
- /*
- INSERT INTO ticketObservation(ticketFk, observationTypeFk, description)
- SELECT vTicketFk, ao.observationTypeFk, ao.description
- FROM addressObservation ao
- JOIN ticket t ON t.addressFk = ao.addressFk
- WHERE t.id = vClonTicket;
-*/
- INSERT INTO ticketLog
- 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;
-
-
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -56776,7 +56374,7 @@ BEGIN
SELECT id
FROM warehouse
WHERE isInventory;
-
+
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
@@ -56793,18 +56391,18 @@ BEGIN
INTO vMaxRecentInventories,
vWarehouseOutFkInventory,
vAgencyModeFkInventory
- FROM inventoryConfig
+ FROM inventoryConfig
LIMIT 1;
- IF vDateLastInventory IS NULL
+ IF vDateLastInventory IS NULL
OR vInventorySupplierFk IS NULL
- OR vMaxRecentInventories IS NULL
- OR vInventoryDate IS NULL
+ OR vMaxRecentInventories IS NULL
+ OR vInventoryDate IS NULL
OR vWarehouseOutFkInventory IS NULL
OR vAgencyModeFkInventory IS NULL THEN
CALL util.throw('Some config parameters are not set');
END IF;
-
+
START TRANSACTION;
OPEN cWarehouses;
@@ -56832,7 +56430,7 @@ BEGIN
LIMIT 1;
IF vTravelFk IS NULL THEN
- INSERT INTO travel
+ INSERT INTO travel
SET warehouseOutFk = vWarehouseOutFkInventory,
warehouseInFk = vWarehouseFk,
shipped = vInventoryDate,
@@ -56849,15 +56447,16 @@ BEGIN
SELECT id INTO vEntryFk
FROM entry
WHERE supplierFk = vInventorySupplierFk
- AND travelFk = vTravelFk;
+ AND travelFk = vTravelFk
+ AND typeFk = 'inventory';
IF vEntryFk IS NULL THEN
- INSERT INTO entry
+ INSERT INTO entry
SET supplierFk = vInventorySupplierFk,
isConfirmed = TRUE,
isOrdered = TRUE,
- travelFk = vTravelFk;
-
+ travelFk = vTravelFk,
+ typeFk = 'inventory';
SELECT LAST_INSERT_ID() INTO vEntryFk;
ELSE
DELETE FROM buy WHERE entryFk = vEntryFk;
@@ -56979,15 +56578,15 @@ BEGIN
JOIN tInventory i2 ON i2.itemFk = i.id
SET i.lastUsed = NOW()
WHERE i2.quantity;
-
+
DROP TEMPORARY TABLE tInventory;
END LOOP;
-
+
CLOSE cWarehouses;
UPDATE config SET inventoried = vInventoryDate;
-
+
CREATE OR REPLACE TEMPORARY TABLE tEntryToDelete
(INDEX(entryId)) ENGINE = MEMORY
SELECT e.id entryId,
@@ -57007,7 +56606,7 @@ BEGIN
WHERE e.supplierFk = vInventorySupplierFk
AND t.shipped IN (sub.shipped);
- DELETE e
+ DELETE e
FROM `entry` e
JOIN tEntryToDelete tmp ON tmp.entryId = e.id;
@@ -57492,8 +57091,6 @@ BEGIN
DECLARE vLines INT;
DECLARE vHasDistinctTransactions INT;
- CALL invoiceIn_checkBooked(vInvoiceInFk);
-
SELECT taxRowLimit INTO vTaxRowLimit FROM invoiceInConfig;
SELECT COUNT(*) INTO vLines
@@ -57580,28 +57177,26 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceInTax_getFromEntries`(IN vInvoiceInFk INT)
+CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceInTax_getFromEntries`(
+ IN vInvoiceInFk INT
+)
BEGIN
DECLARE vRate DOUBLE DEFAULT 1;
- DECLARE vDated DATE;
DECLARE vExpenseFk VARCHAR(10);
- CALL invoiceIn_checkBooked(vInvoiceInFk);
-
- SELECT MAX(rr.dated) INTO vDated
- FROM referenceRate rr
- JOIN invoiceIn ii ON ii.id = vInvoiceInFk
- WHERE rr.dated <= ii.issued
- AND rr.currencyFk = ii.currencyFk ;
-
- IF vDated THEN
- SELECT `value` INTO vRate
- FROM referenceRate
- WHERE dated = vDated;
- END IF;
+ WITH rate AS(
+ SELECT MAX(rr.dated) dated, ii.currencyFk
+ FROM vn.invoiceIn ii
+ JOIN vn.referenceRate rr ON rr.currencyFk = ii.currencyFk
+ WHERE ii.id = vInvoiceInFk
+ AND rr.dated <= ii.issued
+ ) SELECT `value` INTO vRate
+ FROM vn.referenceRate rr
+ JOIN rate r ON r.dated = rr.dated
+ AND r.currencyFk = rr.currencyFk;
SELECT id INTO vExpenseFk
- FROM vn.expense
+ FROM expense
WHERE `name` = 'Adquisición mercancia Extracomunitaria'
GROUP BY id
LIMIT 1;
@@ -57609,19 +57204,25 @@ BEGIN
DELETE FROM invoiceInTax
WHERE invoiceInFk = vInvoiceInFk;
- INSERT INTO invoiceInTax(invoiceInFk, taxableBase, expenseFk, foreignValue, taxTypeSageFk, transactionTypeSageFk)
- SELECT ii.id,
- SUM(b.buyingValue * b.quantity) / IFNULL(vRate,1) taxableBase,
- vExpenseFk,
- IF(ii.currencyFk = 1,NULL,SUM(b.buyingValue * b.quantity )) divisa,
- taxTypeSageFk,
+ INSERT INTO invoiceInTax(
+ invoiceInFk,
+ taxableBase,
+ expenseFk,
+ foreignValue,
+ taxTypeSageFk,
transactionTypeSageFk
+ )SELECT ii.id,
+ SUM(b.buyingValue * b.quantity) / vRate taxableBase,
+ vExpenseFk,
+ IF(ii.currencyFk = 1,
+ NULL,
+ SUM(b.buyingValue * b.quantity )),
+ taxTypeSageFk,
+ transactionTypeSageFk
FROM invoiceIn ii
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
- AND rr.dated = ii.issued
WHERE ii.id = vInvoiceInFk
HAVING taxableBase IS NOT NULL;
END ;;
@@ -57713,6 +57314,7 @@ DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceIn_booking`(vSelf INT)
BEGIN
DECLARE vBookNumber INT;
+ DECLARE vFiscalYear INT;
CREATE OR REPLACE TEMPORARY TABLE tInvoiceIn
ENGINE = MEMORY
@@ -57767,7 +57369,8 @@ BEGIN
LEFT JOIN sage.taxType tt ON tt.id = ti.CodigoIva
WHERE ii.id = vSelf;
- CALL vn.ledger_next(vBookNumber);
+ SELECT YEAR(bookEntried) INTO vFiscalYear FROM tInvoiceIn LIMIT 1;
+ CALL ledger_next(vFiscalYear, vBookNumber);
-- Apunte del proveedor
INSERT INTO XDiario(
@@ -58113,22 +57716,24 @@ DELIMITER ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceOutBooking`(IN vInvoice INT)
BEGIN
-/* Asienta la factura emitida
-*
-* param vInvoice factura_id
-*/
+/**
+ * Asienta una factura emitida
+ *
+ * @param vInvoice Id invoiceOut
+ */
DECLARE vBookNumber INT;
- DECLARE vExpenseConcept VARCHAR(50);
- DECLARE vSpainCountryFk INT;
- DECLARE vOldBookNumber INT;
+ DECLARE vExpenseConcept VARCHAR(50);
+ DECLARE vSpainCountryFk INT;
+ DECLARE vOldBookNumber INT;
+ DECLARE vFiscalYear INT;
- SELECT id INTO vSpainCountryFk FROM country WHERE code = 'ES';
+ SELECT id INTO vSpainCountryFk FROM country WHERE `code` = 'ES';
- SELECT ASIEN
+ SELECT ASIEN
INTO vOldBookNumber
FROM XDiario x
JOIN invoiceOut io ON io.id = vInvoice
- WHERE x.SERIE = io.serial
+ WHERE x.SERIE = io.serial
AND x.FACTURA = RIGHT(io.ref, LENGTH(io.ref) - 1)
LIMIT 1;
@@ -58138,140 +57743,133 @@ BEGIN
DROP TEMPORARY TABLE IF EXISTS rs;
CREATE TEMPORARY TABLE rs
- SELECT
- c.accountingAccount AS clientBookingAccount,
- io.amount as totalAmount,
- CONCAT('n/fra ', io.ref) as simpleConcept,
- CONCAT('n/fra ', io.ref, ' ', c.name) as Concept,
- io.serial AS SERIE,
- io.issued AS FECHA_EX,
- io.issued AS FECHA_OP,
- io.issued AS FECHA,
- 1 AS NFACTICK,
- IF(ic.correctingFk,'D','') AS TIPOOPE,
- io.siiTrascendencyInvoiceOutFk AS TIPOCLAVE,
- io.cplusTaxBreakFk AS TIPOEXENCI,
- io.cplusSubjectOpFk AS TIPONOSUJE,
- io.siiTypeInvoiceOutFk AS TIPOFACT,
- ic.cplusRectificationTypeFk AS TIPORECTIF,
+ SELECT c.accountingAccount clientBookingAccount,
+ io.amount totalAmount,
+ CONCAT('n/fra ', io.ref) simpleConcept,
+ CONCAT('n/fra ', io.ref, ' ', c.name) Concept,
+ io.serial SERIE,
+ io.issued FECHA_EX,
+ io.issued FECHA_OP,
+ io.issued FECHA,
+ 1 NFACTICK,
+ IF(ic.correctingFk,'D','') TIPOOPE,
+ io.siiTrascendencyInvoiceOutFk TIPOCLAVE,
+ io.cplusTaxBreakFk TIPOEXENCI,
+ io.cplusSubjectOpFk TIPONOSUJE,
+ io.siiTypeInvoiceOutFk TIPOFACT,
+ ic.cplusRectificationTypeFk TIPORECTIF,
io.companyFk,
- RIGHT(io.ref, LENGTH(io.ref) - 1) AS invoiceNum,
- IF(c.countryFk = vSpainCountryFk, vSpainCountryFk, IF(ct.isUeeMember,2,4)) AS TERIDNIF,
- CONCAT(IF(ct.isUeeMember AND c.countryFk <> vSpainCountryFk,ct.code,''),c.fi) AS TERNIF,
- c.socialName AS TERNOM,
- ior.serial AS SERIE_RT,
- RIGHT(ior.ref, LENGTH(ior.ref) - 1) AS FACTU_RT,
- ior.issued AS FECHA_RT,
- IF(ior.id,TRUE,FALSE) AS RECTIFICA
+ RIGHT(io.ref, LENGTH(io.ref) - 1) invoiceNum,
+ IF(c.countryFk = vSpainCountryFk, vSpainCountryFk, IF(ct.isUeeMember,2,4)) TERIDNIF,
+ CONCAT(IF(ct.isUeeMember AND c.countryFk <> vSpainCountryFk,ct.code,''),c.fi) TERNIF,
+ c.socialName TERNOM,
+ ior.serial SERIE_RT,
+ RIGHT(ior.ref, LENGTH(ior.ref) - 1) FACTU_RT,
+ ior.issued FECHA_RT,
+ IF(ior.id,TRUE,FALSE) RECTIFICA
FROM invoiceOut io
JOIN invoiceOutSerial ios ON ios.code = io.serial
JOIN client c ON c.id = io.clientFk
JOIN country ct ON ct.id = c.countryFk
LEFT JOIN invoiceCorrection ic ON ic.correctingFk = io.id
- LEFT JOIN invoiceOut ior ON ior.id = ic.correctedFk
+ LEFT JOIN invoiceOut ior ON ior.id = ic.correctedFk
WHERE io.id = vInvoice;
- CALL vn.ledger_next(vBookNumber);
-
+ SELECT YEAR(FECHA) INTO vFiscalYear FROM rs LIMIT 1;
+ CALL ledger_next(vFiscalYear, vBookNumber);
-- Linea del cliente
INSERT INTO XDiario(
- ASIEN,
- FECHA,
- SUBCTA,
- EURODEBE,
- CONCEPTO,
- FECHA_EX,
- FECHA_OP,
- empresa_id
- )
- SELECT
- vBookNumber AS ASIEN,
+ ASIEN,
+ FECHA,
+ SUBCTA,
+ EURODEBE,
+ CONCEPTO,
+ FECHA_EX,
+ FECHA_OP,
+ empresa_id)
+ SELECT vBookNumber,
rs.FECHA,
- rs.clientBookingAccount AS SUBCTA,
- rs.totalAmount AS EURODEBE,
- rs.simpleConcept AS CONCEPTO,
+ rs.clientBookingAccount,
+ rs.totalAmount,
+ rs.simpleConcept,
rs.FECHA_EX,
rs.FECHA_OP,
- rs.companyFk AS empresa_id
+ rs.companyFk
FROM rs;
-- Lineas de gasto
INSERT INTO XDiario(
- ASIEN,
- FECHA,
- SUBCTA,
- CONTRA,
- EUROHABER,
- CONCEPTO,
- FECHA_EX,
- FECHA_OP,
- empresa_id
- )
- SELECT
- vBookNumber AS ASIEN,
- rs.FECHA,
- ioe.expenseFk AS SUBCTA,
- rs.clientBookingAccount AS CONTRA,
- ioe.amount AS EUROHABER,
- rs.Concept AS CONCEPTO,
- rs.FECHA_EX,
- rs.FECHA_OP,
- rs.companyFk AS empresa_id
- FROM rs
- JOIN invoiceOutExpense ioe
- WHERE ioe.invoiceOutFk = vInvoice;
+ ASIEN,
+ FECHA,
+ SUBCTA,
+ CONTRA,
+ EUROHABER,
+ CONCEPTO,
+ FECHA_EX,
+ FECHA_OP,
+ empresa_id)
+ SELECT vBookNumber,
+ rs.FECHA,
+ ioe.expenseFk,
+ rs.clientBookingAccount,
+ ioe.amount,
+ rs.Concept,
+ rs.FECHA_EX,
+ rs.FECHA_OP,
+ rs.companyFk
+ FROM rs
+ JOIN invoiceOutExpense ioe
+ WHERE ioe.invoiceOutFk = vInvoice;
- SELECT GROUP_CONCAT(`name` SEPARATOR ',')
- INTO vExpenseConcept
- FROM expense e
- JOIN invoiceOutExpense ioe ON ioe.expenseFk = e.id
- WHERE ioe.invoiceOutFk = vInvoice;
+ SELECT GROUP_CONCAT(`name` SEPARATOR ',')
+ INTO vExpenseConcept
+ FROM expense e
+ JOIN invoiceOutExpense ioe ON ioe.expenseFk = e.id
+ WHERE ioe.invoiceOutFk = vInvoice;
- -- Lineas de IVA
+ -- Lineas de IVA
INSERT INTO XDiario(
- ASIEN,
- FECHA,
- SUBCTA,
- CONTRA,
- EUROHABER,
- BASEEURO,
- CONCEPTO,
- FACTURA,
- IVA,
- RECEQUIV,
- AUXILIAR,
- SERIE,
- SERIE_RT,
- FACTU_RT,
- RECTIFICA,
- FECHA_RT,
- FECHA_OP,
- FECHA_EX,
- TIPOOPE,
- NFACTICK,
- TERIDNIF,
- TERNIF,
- TERNOM,
- L340,
- TIPOCLAVE,
- TIPOEXENCI,
- TIPONOSUJE,
- TIPOFACT,
- TIPORECTIF,
- empresa_id
- )
- SELECT
- vBookNumber AS ASIEN,
+ ASIEN,
+ FECHA,
+ SUBCTA,
+ CONTRA,
+ EUROHABER,
+ BASEEURO,
+ CONCEPTO,
+ FACTURA,
+ IVA,
+ RECEQUIV,
+ AUXILIAR,
+ SERIE,
+ SERIE_RT,
+ FACTU_RT,
+ RECTIFICA,
+ FECHA_RT,
+ FECHA_OP,
+ FECHA_EX,
+ TIPOOPE,
+ NFACTICK,
+ TERIDNIF,
+ TERNIF,
+ TERNOM,
+ L340,
+ TIPOCLAVE,
+ TIPOEXENCI,
+ TIPONOSUJE,
+ TIPOFACT,
+ TIPORECTIF,
+ empresa_id)
+ SELECT vBookNumber ASIEN,
rs.FECHA,
- iot.pgcFk AS SUBCTA,
- rs.clientBookingAccount AS CONTRA,
- iot.vat AS EUROHABER,
- iot.taxableBase AS BASEEURO,
- CONCAT(vExpenseConcept,' : ',rs.Concept) AS CONCEPTO,
- rs.invoiceNum AS FACTURA,
- IF(pe2.equFk,0,pgc.rate) AS IVA,
- IF(pe2.equFk,0,pgce.rate) AS RECEQUIV,
- IF(pgc.mod347,'','*') AS AUXILIAR,
+ iot.pgcFk SUBCTA,
+ rs.clientBookingAccount CONTRA,
+ iot.vat EUROHABER,
+ iot.taxableBase BASEEURO,
+ CONCAT(vExpenseConcept,' : ',rs.Concept) CONCEPTO,
+ rs.invoiceNum FACTURA,
+ IF(pe2.equFk,0,pgc.rate) IVA,
+ IF(pe2.equFk,0,pgce.rate) RECEQUIV,
+ IF(pgc.mod347,'','*') AUXILIAR,
rs.SERIE,
rs.SERIE_RT,
rs.FACTU_RT,
@@ -58280,28 +57878,28 @@ BEGIN
rs.FECHA_OP,
rs.FECHA_EX,
rs.TIPOOPE,
- rs.NFACTICK,
+ rs.NFACTICK,
rs.TERIDNIF,
rs.TERNIF,
rs.TERNOM,
- pgc.mod340 AS L340,
- pgc.siiTrascendencyInvoiceOutFk AS TIPOCLAVE,
- pgc.cplusTaxBreakFk as TIPOEXENCI,
+ pgc.mod340 L340,
+ pgc.siiTrascendencyInvoiceOutFk TIPOCLAVE,
+ pgc.cplusTaxBreakFk TIPOEXENCI,
rs.TIPONOSUJE,
rs.TIPOFACT,
rs.TIPORECTIF,
- rs.companyFk AS empresa_id
+ rs.companyFk
FROM rs
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 pgcEqu pe2 ON pe2.equFk = iot.pgcFk -- --------------- Comprueba si la linea es de rec.equiv.
+ 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 = util.VN_CURDATE()
- WHERE id = vInvoice;
+
+ UPDATE invoiceOut
+ SET booked = util.VN_CURDATE()
+ WHERE id = vInvoice;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -59303,11 +58901,12 @@ BEGIN
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
- WHERE sc.id = vSectorFk
- AND ish.visible > 0
+ WHERE ish.visible > 0
AND ish.itemFk = vItemFk
GROUP BY ish.id
- ORDER BY sh.priority DESC,
+ ORDER BY
+ (sc.id = vSectorFk) DESC,
+ sh.priority DESC,
ish.created,
p.pickingOrder;
END ;;
@@ -59703,17 +59302,17 @@ BEGIN
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
- 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
+ v.visible, s.isPicked, s.reserved, t.shipped, tst.productionOrder, st.saleFk
+ FROM ticket t
+ JOIN ticketState tst ON tst.ticketFk = t.id
+ JOIN sale s ON s.ticketFk = t.id
+ JOIN 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
+ LEFT JOIN saleTracking st ON st.saleFk = s.id AND st.stateFk = 26
+ JOIN itemShelvingStock iss ON iss.itemFk = v.item_id
LEFT JOIN
(SELECT itemFk, sum(saldo) as transit
- FROM vn.itemPlacementSupplyList
+ FROM itemPlacementSupplyList
WHERE saldo > 0
AND sectorFk = vSectorFk
GROUP BY itemFk) sub3 ON sub3.itemFk = i.id
@@ -59725,7 +59324,7 @@ BEGIN
AND tst.isPreviousPreparable = TRUE
AND t.warehouseFk = vWarehouseFk
AND iss.sectorFk = vSectorFk
- AND mm.Id_Movimiento IS NULL
+ AND st.saleFk IS NULL
ORDER BY itemFk;
END ;;
@@ -59747,7 +59346,7 @@ DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelvingRadar`(
vSectorFk INT
)
-proc:BEGIN
+BEGIN
/**
* Calcula la información detallada respecto un sector.
*
@@ -59760,37 +59359,24 @@ proc:BEGIN
DECLARE vWarehouseFk INT DEFAULT 0;
DECLARE vSonSectorFk INT;
DECLARE vWorkerFk INT;
-
- SELECT s.workerFk
- INTO vWorkerFk
- FROM vn.sector s
+
+ SELECT s.workerFk INTO vWorkerFk
+ FROM sector s
WHERE s.id = vSectorFk;
- SELECT w.id, s.warehouseFk INTO vBuyerFk, vWarehouseFk
- 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
- AND s.isMain;
-
SELECT COUNT(*) INTO hasFatherSector
- FROM vn.sector
+ FROM sector
WHERE sonFk = vSectorFk;
-
+
SELECT warehouseFk, sonFk INTO vWarehouseFk, vSonSectorFk
- FROM vn.sector
+ FROM sector
WHERE id = vSectorFk;
-
+
CALL cache.visible_refresh(vCalcVisibleFk, TRUE, vWarehouseFk);
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
+ CREATE OR REPLACE TEMPORARY TABLE tItemShelvingRadar
(PRIMARY KEY (itemFk))
ENGINE = MEMORY
SELECT *
@@ -59799,57 +59385,77 @@ proc:BEGIN
i.longName,
i.size,
i.subName producer,
- IFNULL(a.available,0) available,
- SUM(IF(s.sonFk = vSectorFk, IFNULL(iss.visible,0), 0)) upstairs,
- SUM(IF(iss.sectorFk = vSectorFk, IFNULL(iss.visible,0), 0)) downstairs,
- IF(it.isPackaging, NULL, IFNULL(v.visible,0)) as visible,
- vSectorFk 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 AND vBuyerFk IN (0,it.workerFk)
- 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
+ IFNULL(a.available, 0) available,
+ SUM(IF(s.sonFk = vSectorFk, IFNULL(iss.visible, 0), 0)) upstairs,
+ SUM(IF(iss.sectorFk = vSectorFk, IFNULL(iss.visible, 0), 0)) downstairs,
+ IF(it.isPackaging, NULL, IFNULL(v.visible, 0)) visible,
+ vSectorFk sectorFk,
+ ish.isChecked,
+ sub.isAllChecked
+ FROM itemShelvingStock iss
+ JOIN itemShelving ish ON ish.shelvingFk = iss.shelvingFk
+ LEFT JOIN (
+ SELECT itemFk,
+ IF(
+ COUNT(*) = SUM(IF(isChecked >= 0, 1, 0)),
+ TRUE,
+ FALSE
+ ) isAllChecked
+ FROM itemShelving is2
+ GROUP BY itemFk
+ ) sub ON sub.itemFk = ish.itemFk
+ 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.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
WHERE vSectorFk IN (iss.sectorFk, s.sonFk)
GROUP BY iss.itemFk
-
UNION ALL
-
- SELECT v.item_id,
+ SELECT v.item_id,
i.longName,
i.size,
- i.subName producer,
- IFNULL(a.available,0) as available,
- 0 upstairs,
- 0 downstairs,
- IF(it.isPackaging, NULL, v.visible) visible,
- vSectorFk as sectorFk
+ i.subName,
+ IFNULL(a.available, 0),
+ 0,
+ 0,
+ IF(it.isPackaging, NULL, v.visible),
+ vSectorFk,
+ NULL,
+ NULL
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
- LEFT JOIN cache.available a ON a.item_id = v.item_id AND a.calc_id = vCalcAvailableFk
+ 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
+ AND iss.warehouseFk = vWarehouseFk
+ LEFT JOIN cache.available a ON a.item_id = v.item_id
+ AND a.calc_id = vCalcAvailableFk
WHERE v.calc_id = vCalcVisibleFk
AND iss.itemFk IS NULL
AND it.isInventory
- ) sub GROUP BY itemFk;
+ ) sub
+ GROUP BY itemFk;
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
- JOIN vn.item i ON i.id = ishr.itemFk
- LEFT JOIN (SELECT s.itemFk, sum(s.quantity) as notPickedYed
- FROM vn.ticket t
- JOIN vn.ticketStateToday tst ON tst.ticketFk = t.id
- JOIN vn.sale s ON s.ticketFk = t.id
- WHERE t.warehouseFk = vWarehouseFk
- AND tst.alertLevel = 0
- GROUP BY s.itemFk
- ) sub ON sub.itemFk = ishr.itemFk
- ORDER BY i.typeFk, i.longName;
+ CAST(visible - upstairs - downstairs AS DECIMAL(10, 0)) nicho,
+ CAST(downstairs - IFNULL(notPickedYed, 0) AS DECIMAL(10, 0)) pendiente
+ FROM tItemShelvingRadar ishr
+ JOIN item i ON i.id = ishr.itemFk
+ LEFT JOIN (
+ SELECT s.itemFk, SUM(s.quantity) notPickedYed
+ FROM ticket t
+ JOIN ticketStateToday tst ON tst.ticketFk = t.id
+ JOIN alertLevel al ON al.id = tst.alertLevel
+ JOIN sale s ON s.ticketFk = t.id
+ WHERE t.warehouseFk = vWarehouseFk
+ AND al.code = 'FREE'
+ GROUP BY s.itemFk
+ ) sub ON sub.itemFk = ishr.itemFk
+ ORDER BY i.typeFk, i.longName;
ELSE
- CREATE TEMPORARY TABLE tmp.itemShelvingRadar
+ CREATE OR REPLACE TEMPORARY TABLE tItemShelvingRadar
(PRIMARY KEY (itemFk))
ENGINE = MEMORY
SELECT iss.itemFk,
@@ -59860,80 +59466,86 @@ proc:BEGIN
i.size,
i.subName producer,
i.upToDown,
- 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(i.minimum * b.packing,0) itemPlacementSize,
+ 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(i.minimum * b.packing, 0) itemPlacementSize,
ips.onTheWay,
iss.visible itemShelvingStock,
- IFNULL(v.visible,0) visible,
+ IFNULL(v.visible, 0) visible,
b.isPickedOff,
iss.sectorFk
- FROM vn.itemShelvingStock iss
- JOIN vn.item i on i.id = iss.itemFk
- 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
- GROUP BY itemFk
- ) ips ON ips.itemFk = i.id
- WHERE IFNULL(iss.sectorFk,0) IN (0, vSectorFk)
- OR iss.sectorFk = vSectorFk;
+ FROM itemShelvingStock iss
+ JOIN item i ON i.id = iss.itemFk
+ LEFT JOIN cache.last_buy lb ON lb.item_id = iss.itemFk
+ AND lb.warehouse_id = vWarehouseFk
+ LEFT JOIN 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) onTheWay
+ FROM itemPlacementSupplyList
+ WHERE saldo > 0
+ GROUP BY itemFk
+ ) ips ON ips.itemFk = i.id
+ WHERE iss.sectorFk = vSectorFk
+ OR iss.sectorFk IS NULL;
- DROP TEMPORARY TABLE IF EXISTS tmp.itemOutTime;
- CREATE TEMPORARY TABLE tmp.itemOutTime
- SELECT *,SUM(amount) quantity
- FROM
- (SELECT io.itemFk,
- io.quantity 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 itemTicketOut io
- JOIN tmp.itemShelvingRadar isr ON isr.itemFk = io.itemFk
- JOIN vn.ticket t on t.id= io.ticketFk
- 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 > util.VN_CURDATE()
- AND st.isChecked
- ) stPrevious ON `stPrevious`.`saleFk` = io.saleFk
- WHERE t.warehouseFk = vWarehouseFk
- AND s.isPicked = 0
- AND NOT io.reserved
- AND stPrevious.saleFk IS NULL
- AND io.shipped >= util.VN_CURDATE()
- AND io.shipped < util.VN_CURDATE() + INTERVAL 1 DAY
- ) sub
- GROUP BY itemFk, hours, minutes;
+ CREATE OR REPLACE TEMPORARY TABLE tmp.itemOutTime
+ SELECT *, SUM(amount) quantity
+ FROM (
+ SELECT io.itemFk,
+ io.quantity amount,
+ IF(HOUR(t.shipped), HOUR(t.shipped), HOUR(z.`hour`)) `hours`,
+ IF(MINUTE(t.shipped), MINUTE(t.shipped), MINUTE(z.`hour`)) `minutes`
+ FROM itemTicketOut `io`
+ JOIN tItemShelvingRadar isr ON isr.itemFk = io.itemFk
+ JOIN ticket t ON t.id= io.ticketFk
+ JOIN ticketState ts ON ts.ticketFk = io.ticketFk
+ JOIN `state` s ON s.id = ts.stateFk
+ LEFT JOIN `zone` z ON z.id = t.zoneFk
+ LEFT JOIN (
+ SELECT DISTINCT saleFk
+ FROM saleTracking st
+ WHERE st.created > util.VN_CURDATE()
+ AND st.isChecked
+ ) stPrevious ON stPrevious.saleFk = io.saleFk
+ WHERE t.warehouseFk = vWarehouseFk
+ AND NOT s.isPicked
+ AND NOT io.reserved
+ AND stPrevious.saleFk IS NULL
+ AND io.shipped >= util.VN_CURDATE()
+ AND io.shipped < util.VN_CURDATE() + INTERVAL 1 DAY
+ ) sub
+ GROUP BY itemFk, `hours`, `minutes`;
- INSERT INTO tmp.itemShelvingRadar (itemFk)
+ INSERT INTO tItemShelvingRadar (itemFk)
SELECT itemFk FROM tmp.itemOutTime
- 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);
+ 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);
- UPDATE tmp.itemShelvingRadar isr
- JOIN (SELECT s.itemFk, sum(s.quantity) amount
- FROM sale s
- JOIN ticket t ON t.id = s.ticketFk
- JOIN ticketLastState tls ON tls.ticketFk = t.id
- WHERE t.shipped BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE())
- AND tls.name = 'Prep Camara'
- GROUP BY s.itemFk) sub ON sub.itemFk = isr.itemFk
+ UPDATE tItemShelvingRadar isr
+ JOIN (
+ SELECT s.itemFk, SUM(s.quantity) amount
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ JOIN ticketState ts ON ts.ticketFk = t.id
+ WHERE t.shipped BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE())
+ AND ts.code = 'COOLER_PREPARATION'
+ GROUP BY s.itemFk
+ ) sub ON sub.itemFk = isr.itemFk
SET isr.dayEndVisible = dayEndVisible + sub.amount,
firstNegative = firstNegative + sub.amount;
- SELECT * FROM tmp.itemShelvingRadar;
+ SELECT * FROM tItemShelvingRadar;
END IF;
- DROP TEMPORARY TABLE tmp.itemShelvingRadar;
+ DROP TEMPORARY TABLE tItemShelvingRadar;
END ;;
DELIMITER ;
@@ -60481,7 +60093,7 @@ DELIMITER ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelving_add`(IN vShelvingFk VARCHAR(8), IN vBarcode VARCHAR(22), 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.
@@ -60493,34 +60105,27 @@ BEGIN
* @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
- *
+ *
**/
DECLARE vItemFk INT;
SELECT barcodeToItem(vBarcode) INTO vItemFk;
-
- SET vPacking = COALESCE(vPacking, GREATEST(vn.itemPacking(vBarcode,vWarehouseFk), 1));
- SET vQuantity = vQuantity * vPacking;
-
- 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)
- SELECT vShelvingFk, id
- FROM parking
- WHERE `code` = vShelvingFk COLLATE utf8_unicode_ci;
+ IF vPacking IS NULL
+ THEN
+ SET vPacking = itemPacking(vBarcode, vWarehouseFk);
+ SET vQuantity = vQuantity * vPacking;
END IF;
- IF (SELECT COUNT(*) FROM itemShelving
- WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk
- AND itemFk = vItemFk
+ IF (SELECT COUNT(*) FROM itemShelving
+ WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk
+ AND itemFk = vItemFk
AND packing = vPacking) = 1 THEN
UPDATE itemShelving
SET visible = visible+vQuantity
- WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk AND itemFk = vItemFk AND packing = vPacking;
+ WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk AND itemFk = vItemFk AND packing = vPacking;
ELSE
CALL cache.last_buy_refresh(FALSE);
@@ -60862,6 +60467,74 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `itemShelving_getItemDetails` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `itemShelving_getItemDetails`(
+ vBarcodeItem INT,
+ vShelvingFK VARCHAR(10)
+)
+BEGIN
+/**
+ * Obtiene el precio y visible de un item
+ *
+ * @param vBarcodeItem barcode de artículo
+ * @param vShelvingFK Ubicación actual del artículo
+ */
+ DECLARE vIsItem BOOL;
+ DECLARE vBuyFk INT;
+ DECLARE vWarehouseFk INT;
+
+ SELECT COUNT(*) > 0 INTO vIsItem
+ FROM item
+ WHERE id = vBarcodeItem;
+
+ IF vIsItem THEN
+ SELECT warehouseFk INTO vWarehouseFk
+ FROM operator
+ WHERE workerFk = account.myUser_getId();
+
+ CALL buyUltimate(vWarehouseFk, util.VN_CURDATE());
+
+ SELECT buyFk INTO vBuyFk
+ FROM tmp.buyUltimate
+ WHERE itemFk = vBarcodeItem
+ AND warehouseFk = vWarehouseFk;
+
+ DELETE FROM tmp.buyUltimate;
+ ELSE
+ SELECT vBarcodeItem INTO vBuyFk;
+ END IF;
+
+ WITH visible AS(
+ SELECT itemFk,
+ IFNULL(buyingValue, 0) +
+ IFNULL(freightValue, 0) +
+ IFNULL(comissionValue, 0) +
+ IFNULL(packageValue, 0) itemCost
+ FROM vn.buy b
+ WHERE b.id = vBuyFk
+ ) SELECT v.itemFk,
+ vShelvingFK,
+ v.itemCost,
+ SUM(ish.visible) visible
+ FROM vn.itemShelving ish
+ JOIN visible v
+ WHERE ish.shelvingFK = vShelvingFK COLLATE utf8mb3_general_ci
+ AND ish.itemFk = v.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 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `itemShelving_getSaleDate` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -61523,75 +61196,6 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!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_unicode_ci */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `itemTrash`(
- vItemFk INT,
- vWarehouseFk INT,
- vQuantity INT,
- vIsTrash BOOLEAN)
-BEGIN
- DECLARE vTicketFk INT;
- DECLARE vClientFk INT;
- DECLARE vCompanyVnlFk INT DEFAULT 442;
- DECLARE vCalc INT;
-
- 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
- WHERE t.warehouseFk = vWarehouseFk
- AND t.clientFk = vClientFk
- AND DATE(t.shipped) = util.VN_CURDATE()
- AND a.isDefaultAddress
- LIMIT 1;
-
- CALL cache.visible_refresh(vCalc, TRUE, vWarehouseFk);
-
- IF vTicketFk IS NULL THEN
- CALL ticket_add(
- 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,' ',worker_getCode(), ' ', LEFT(CAST(util.VN_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 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `itemUpdateTag` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -61756,9 +61360,6 @@ BEGIN
DELETE FROM itemCost
WHERE itemFk = vItemOld;
- DELETE FROM vn2008.rec_translator
- WHERE Id_Article = vItemOld;
-
DELETE FROM bs.waste
WHERE itemFk = vItemOld;
@@ -62216,6 +61817,427 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `item_devalueA2` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `item_devalueA2`(
+ vSelf INT,
+ vShelvingFK VARCHAR(10),
+ vBuyingValue DECIMAL(10,4),
+ vQuantity INT
+)
+BEGIN
+/**
+ * Devalua un item modificando su calidad de A1 a A2.
+ * Si no existe el item A2 lo crea y genera los movimientos de las entradas
+ * de almacén y shelvings correspondientes
+ *
+ * @param vSelf Id de artículo a devaluar
+ * @param vShelvingFK Ubicación actual del artículo
+ * @param vBuyingValue Nuevo precio de coste
+ * @param vQuantity Cantidad del ítem a pasar a A2
+ */
+ DECLARE vItemA2Fk INT;
+ DECLARE vLastBuyFk BIGINT;
+ DECLARE vA1BuyFk INT;
+ DECLARE vA2BuyFk INT;
+ DECLARE vTargetEntryFk INT;
+ DECLARE vTargetEntryDate DATE;
+ DECLARE vTargetItemShelvingFk BIGINT;
+ DECLARE vWarehouseFk INT;
+ DECLARE vCacheFk INT;
+ DECLARE vLastEntryFk INT;
+ DECLARE vCurrentVisible INT;
+ DECLARE vDevalueTravelFk INT;
+ DECLARE vCurdate DATE;
+ DECLARE vBuyingValueOriginal DECIMAL(10,4);
+
+ DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
+
+ IF (SELECT TRUE FROM item WHERE id = vSelf AND (category <> 'A1' OR category IS NULL)) THEN
+ CALL util.throw('Item has not category A1');
+ END IF;
+
+ SELECT warehouseFk INTO vWarehouseFk
+ FROM userConfig
+ WHERE userFk = account.myUser_getId();
+
+ IF NOT vWarehouseFk OR vWarehouseFk IS NULL THEN
+ CALL util.throw ('Operator has not a valid warehouse');
+ END IF;
+
+ IF vQuantity <= 0 OR vQuantity IS NULL THEN
+ CALL util.throw ('The quantity is incorrect');
+ END IF;
+
+ SELECT util.VN_CURDATE() INTO vCurdate;
+
+ SELECT t.id INTO vDevalueTravelFk
+ FROM travel t
+ JOIN travelConfig tc
+ WHERE t.shipped = vCurdate
+ AND t.landed = vCurdate
+ AND t.warehouseInFk = vWarehouseFk
+ AND t.warehouseOutFk = tc.devalueWarehouseOutFk
+ AND t.agencyModeFk = tc.devalueAgencyModeFk
+ LIMIT 1;
+
+ IF NOT vDevalueTravelFk OR vDevalueTravelFk IS NULL THEN
+ INSERT INTO travel (
+ shipped,
+ landed,
+ warehouseInFk,
+ warehouseOutFk,
+ `ref`,
+ isReceived,
+ agencyModeFk)
+ SELECT vCurdate,
+ vCurdate,
+ vWarehouseFk,
+ tc.devalueWarehouseOutFk,
+ tc.devalueRef,
+ TRUE,
+ tc.devalueAgencyModeFk
+ FROM travelConfig tc;
+ SET vDevalueTravelFk = LAST_INSERT_ID();
+ END IF;
+
+ SELECT id, DATE(dated) INTO vTargetEntryFk, vTargetEntryDate
+ FROM `entry` e
+ WHERE DATE(dated) = vCurdate
+ AND typeFk = 'devaluation'
+ AND travelFk = vDevalueTravelFk
+ ORDER BY created DESC
+ LIMIT 1;
+
+ CALL buyUltimate(vWarehouseFk, vCurdate);
+
+ SELECT b.entryFk, bu.buyFk,IFNULL(b.buyingValue, 0) INTO vLastEntryFk, vLastBuyFk, vBuyingValueOriginal
+ FROM tmp.buyUltimate bu
+ JOIN vn.buy b ON b.id = bu.buyFk
+ WHERE bu.itemFk = vSelf
+ AND bu.warehouseFk = vWarehouseFk;
+
+ IF vBuyingValue > vBuyingValueOriginal THEN
+ CALL util.throw ('Price not valid');
+ END IF;
+
+ IF vLastEntryFk IS NULL OR vLastBuyFk IS NULL THEN
+ CALL util.throw ('The item has not a buy');
+ END IF;
+
+ SELECT id,visible INTO vTargetItemShelvingFk, vCurrentVisible
+ FROM itemShelving
+ WHERE shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci
+ AND itemFk = vSelf
+ LIMIT 1;
+
+ IF vCurrentVisible IS NULL THEN
+ CALL util.throw ('The shelving has not a visible for this item');
+ END IF;
+
+ IF vQuantity > vCurrentVisible THEN
+ CALL util.throw('Quantity is greater than visible');
+ END IF;
+
+ START TRANSACTION;
+
+ IF NOT vTargetEntryFk OR vTargetEntryFk IS NULL
+ OR NOT vTargetEntryDate <=> vCurdate THEN
+ INSERT INTO entry(
+ travelFk,
+ supplierFk,
+ dated,
+ commission,
+ currencyFk,
+ companyFk,
+ clonedFrom,
+ typeFk
+ )
+ SELECT vDevalueTravelFk,
+ supplierFk,
+ vCurdate,
+ commission,
+ currencyFk,
+ companyFk,
+ vLastEntryFk,
+ 'devaluation'
+ FROM entry
+ WHERE id = vLastEntryFk;
+
+ SET vTargetEntryFk = LAST_INSERT_ID();
+ END IF;
+
+ SELECT i.id INTO vItemA2Fk
+ FROM 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 item i
+ WHERE i.id = vSelf
+ )i2 ON i2.name <=> i.name
+ AND i2.subname <=> i.subname
+ AND i2.value5 <=> i.value5
+ AND i2.value6 <=> i.value6
+ 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 i.id <> i2.id
+ AND i.category = 'A2'
+ LIMIT 1;
+
+ IF vItemA2Fk IS NULL THEN
+ INSERT INTO item (
+ equivalent,
+ name,
+ `size`,
+ stems,
+ minPrice,
+ isToPrint,
+ family,
+ box,
+ category,
+ originFk,
+ doPhoto,
+ image,
+ inkFk,
+ intrastatFk,
+ hasMinPrice,
+ created,
+ comment,
+ typeFk,
+ generic,
+ producerFk,
+ description,
+ density,
+ relevancy,
+ expenseFk,
+ isActive,
+ longName,
+ subName,
+ minimum,
+ upToDown,
+ supplyResponseFk,
+ hasKgPrice,
+ isFloramondo,
+ isFragile,
+ numberOfItemsPerCask,
+ embalageCode,
+ quality,
+ stemMultiplier,
+ itemPackingTypeFk,
+ packingOut,
+ genericFk,
+ isLaid,
+ lastUsed,
+ weightByPiece,
+ editorFk,
+ recycledPlastic,
+ nonRecycledPlastic)
+ SELECT equivalent,
+ name,
+ `size`,
+ stems,
+ minPrice,
+ isToPrint,
+ family,
+ box,
+ 'A2',
+ originFk,
+ doPhoto,
+ image,
+ inkFk,
+ intrastatFk,
+ hasMinPrice,
+ created,
+ comment,
+ typeFk,
+ generic,
+ producerFk,
+ description,
+ density,
+ relevancy,
+ expenseFk,
+ isActive,
+ longName,
+ subName,
+ minimum,
+ upToDown,
+ supplyResponseFk,
+ hasKgPrice,
+ isFloramondo,
+ isFragile,
+ numberOfItemsPerCask,
+ embalageCode,
+ quality,
+ stemMultiplier,
+ itemPackingTypeFk,
+ packingOut,
+ genericFk,
+ isLaid,
+ lastUsed,
+ weightByPiece,
+ editorFk,
+ recycledPlastic,
+ nonRecycledPlastic
+ FROM item
+ WHERE id = vSelf;
+
+ SET vItemA2Fk = LAST_INSERT_ID();
+
+ INSERT INTO itemTag (itemFk, tagFk, `value`, intValue, priority, editorFk)
+ SELECT vItemA2Fk, tagFk, `value`, intValue, priority, editorFk
+ FROM itemTag
+ WHERE id = vSelf;
+
+ UPDATE itemTaxCountry itc
+ JOIN itemTaxCountry itc2 ON itc2.itemFk = vSelf
+ AND itc2.countryFk = itc.countryFk
+ SET itc2.taxClassFk = itc.taxClassFk
+ WHERE itc.id = vItemA2Fk;
+
+ INSERT INTO itemBotanical (itemFk, genusFk, specieFk)
+ SELECT vItemA2Fk, genusFk, specieFk
+ FROM itemBotanical
+ WHERE itemFk = vSelf;
+ END IF;
+
+ IF vQuantity = vCurrentVisible THEN
+ DELETE FROM itemShelving
+ WHERE id = vTargetItemShelvingFk;
+ ELSE
+ UPDATE itemShelving
+ SET visible = vCurrentVisible - vQuantity
+ WHERE id = vTargetItemShelvingFk;
+ END IF;
+
+ INSERT INTO buy(
+ entryFk,
+ itemFk,
+ quantity,
+ buyingValue,
+ freightValue,
+ isIgnored,
+ stickers,
+ packagingFk,
+ packing,
+ `grouping`,
+ groupingMode,
+ comissionValue,
+ packageValue,
+ price1,
+ price2,
+ price3,
+ minPrice,
+ isChecked,
+ location,
+ weight,
+ itemOriginalFk)
+ SELECT vTargetEntryFk,
+ itemFk,
+ - LEAST(vQuantity, vCurrentVisible),
+ buyingValue,
+ freightValue,
+ TRUE,
+ stickers,
+ packagingFk,
+ packing,
+ `grouping`,
+ groupingMode,
+ comissionValue,
+ packageValue,
+ price1,
+ price2,
+ price3,
+ minPrice,
+ isChecked,
+ location,
+ weight,
+ itemOriginalFk
+ FROM vn.buy
+ WHERE id = vLastBuyFk
+ UNION
+ SELECT vTargetEntryFk,
+ vItemA2Fk,
+ vQuantity,
+ vBuyingValue,
+ freightValue,
+ TRUE,
+ stickers,
+ packagingFk,
+ packing,
+ `grouping`,
+ groupingMode,
+ comissionValue,
+ packageValue,
+ price1,
+ price2,
+ price3,
+ minPrice,
+ isChecked,
+ location,
+ weight,
+ itemOriginalFk
+ FROM vn.buy
+ WHERE id = vLastBuyFk;
+
+ INSERT IGNORE INTO itemShelving (
+ itemFk,
+ shelvingFk,
+ visible,
+ `grouping`,
+ packing,
+ packagingFk,
+ userFk,
+ isChecked)
+ SELECT vItemA2Fk,
+ shelvingFk,
+ vQuantity ,
+ `grouping`,
+ packing,
+ packagingFk,
+ account.myUser_getId(),
+ isChecked
+ FROM itemShelving
+ WHERE itemFK = vSelf
+ AND shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci
+ ON DUPLICATE KEY UPDATE
+ visible = vQuantity + VALUES(visible);
+
+ COMMIT;
+ CALL cache.visible_refresh(vCacheFk, TRUE, vWarehouseFk);
+ CALL cache.available_refresh(vCacheFk, TRUE, vWarehouseFk, vCurdate);
+ CALL buy_recalcPricesByBuy(vA2BuyFk);
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `item_getAtp` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -62295,7 +62317,7 @@ BEGIN
* @vItemFk item a buscar
* @vWarehouseFk almacen donde buscar
* @vDate Si la fecha es null, muestra el histórico desde el inventario.
- * Si la fecha no es null, muestra histórico desde la fecha pasada.
+ * Si la fecha no es null, muestra histórico desde la fecha de vDate.
*/
DECLARE vDateInventory DATETIME;
@@ -62326,145 +62348,183 @@ BEGIN
inventorySupplierFk INT(10)
);
- INSERT INTO tItemDiary
- SELECT tr.landed shipped,
- b.quantity `in`,
- NULL `out`,
- st.alertLevel ,
- st.name stateName,
- s.name `name`,
- e.invoiceNumber reference,
- e.id origin,
- s.id clientFk,
- IF(st.`code` = 'DELIVERED', TRUE, FALSE) isPicked,
- FALSE isTicket,
- b.id lineFk,
- NULL `order`,
- NULL clientType,
- NULL claimFk,
- ec.inventorySupplierFk
- 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 state st ON st.`code` = IF( tr.landed < util.VN_CURDATE()
- OR (util.VN_CURDATE() AND tr.isReceived),
- 'DELIVERED',
- 'FREE')
- JOIN entryConfig ec
- WHERE tr.landed >= vDateInventory
- AND vWarehouseFk = tr.warehouseInFk
- AND (s.id <> ec.inventorySupplierFk OR vDate IS NULL)
- AND b.itemFk = vItemFk
- AND e.isExcludedFromAvailable = FALSE
- AND e.isRaid = FALSE
- UNION ALL
- SELECT tr.shipped,
- NULL,
- b.quantity,
- st.alertLevel,
- st.name,
- s.name,
- e.invoiceNumber,
- e.id,
- s.id,
- IF(st.`code` = 'DELIVERED' , TRUE, FALSE),
- FALSE,
- b.id,
- NULL,
- NULL,
- NULL,
- ec.inventorySupplierFk
- 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 state st ON st.`code` = IF(tr.shipped < util.VN_CURDATE()
+ INSERT INTO tItemDiary
+ WITH entriesIn AS (
+ SELECT tr.landed shipped,
+ b.quantity `in`,
+ NULL `out`,
+ st.alertLevel ,
+ st.name stateName,
+ s.name `name`,
+ e.invoiceNumber reference,
+ e.id origin,
+ s.id clientFk,
+ IF(st.`code` = 'DELIVERED', TRUE, FALSE) isPicked,
+ FALSE isTicket,
+ b.id lineFk,
+ NULL `order`,
+ NULL clientType,
+ NULL claimFk,
+ ec.inventorySupplierFk
+ FROM vn.buy b
+ JOIN vn.entry e ON e.id = b.entryFk
+ JOIN vn.travel tr ON tr.id = e.travelFk
+ JOIN vn.supplier s ON s.id = e.supplierFk
+ JOIN vn.state st ON st.`code` = IF( tr.landed < util.VN_CURDATE()
+ OR (util.VN_CURDATE() AND tr.isReceived),
+ 'DELIVERED',
+ 'FREE')
+ JOIN vn.entryConfig ec
+ WHERE tr.landed >= vDateInventory
+ AND vWarehouseFk = tr.warehouseInFk
+ AND (s.id <> ec.inventorySupplierFk OR vDate IS NULL)
+ AND b.itemFk = vItemFk
+ AND NOT e.isExcludedFromAvailable
+ AND NOT e.isRaid
+ ), entriesOut AS (
+ SELECT tr.shipped,
+ NULL,
+ b.quantity,
+ st.alertLevel,
+ st.name stateName,
+ s.name ,
+ e.invoiceNumber,
+ e.id entryFk,
+ s.id supplierFk,
+ IF(st.`code` = 'DELIVERED' , TRUE, FALSE),
+ FALSE isTicket,
+ b.id,
+ NULL `order`,
+ NULL clientType,
+ NULL claimFk,
+ ec.inventorySupplierFk
+ FROM vn.buy b
+ JOIN vn.entry e ON e.id = b.entryFk
+ JOIN vn.travel tr ON tr.id = e.travelFk
+ JOIN vn.warehouse w ON w.id = tr.warehouseOutFk
+ JOIN vn.supplier s ON s.id = e.supplierFk
+ JOIN vn.state st ON st.`code` = IF(tr.shipped < util.VN_CURDATE()
OR (tr.shipped = util.VN_CURDATE() AND tr.isReceived),
- 'DELIVERED',
- 'FREE')
- JOIN entryConfig ec
- WHERE tr.shipped >= vDateInventory
- AND vWarehouseFk = tr.warehouseOutFk
- AND (s.id <> ec.inventorySupplierFk OR vDate IS NULL)
- AND b.itemFk = vItemFk
- AND e.isExcludedFromAvailable = FALSE
- AND w.isFeedStock = FALSE
- AND e.isRaid = FALSE
- UNION ALL
- SELECT DATE(t.shipped),
- NULL,
- s.quantity,
- st2.alertLevel,
- st2.name,
- t.nickname,
- t.refFk,
- t.id,
- t.clientFk,
- stk.id,
- TRUE,
- s.id,
- st.`order`,
- c.typeFk,
- cb.claimFk,
- NULL
- FROM sale s
- JOIN ticket t ON t.id = s.ticketFk
- LEFT JOIN ticketState ts ON ts.ticketFk = t.id
- LEFT JOIN state st ON st.`code` = ts.`code`
- JOIN client c ON c.id = t.clientFk
- JOIN state st2 ON st2.`code` = IF(t.shipped < util.VN_CURDATE(),
- 'DELIVERED',
- IF (t.shipped > util.dayEnd(util.VN_CURDATE()),
- 'FREE',
- IFNULL(ts.code, 'FREE')))
- 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 = vItemFk
- AND vWarehouseFk =t.warehouseFk
- ORDER BY shipped,
- (inventorySupplierFk = clientFk) DESC,
- alertLevel DESC,
- isTicket,
- `order` DESC,
- isPicked DESC,
- `in` DESC,
- `out` DESC;
+ 'DELIVERED',
+ 'FREE')
+ JOIN vn.entryConfig ec
+ WHERE tr.shipped >= vDateInventory
+ AND vWarehouseFk = tr.warehouseOutFk
+ AND (s.id <> ec.inventorySupplierFk OR vDate IS NULL)
+ AND b.itemFk = vItemFk
+ AND NOT e.isExcludedFromAvailable
+ AND NOT w.isFeedStock
+ AND NOT e.isRaid
+ ), sales AS (
+ SELECT DATE(t.shipped) shipped,
+ s.quantity,
+ st2.alertLevel,
+ st2.name,
+ t.nickname,
+ t.refFk,
+ t.id ticketFk,
+ t.clientFk,
+ s.id saleFk,
+ st.`order`,
+ c.typeFk,
+ cb.claimFk
+ FROM vn.sale s
+ JOIN vn.ticket t ON t.id = s.ticketFk
+ LEFT JOIN vn.ticketState ts ON ts.ticketFk = t.id
+ LEFT JOIN vn.state st ON st.`code` = ts.`code`
+ JOIN vn.client c ON c.id = t.clientFk
+ JOIN vn.state st2 ON st2.`code` = IF(t.shipped < util.VN_CURDATE(),
+ 'DELIVERED',
+ IF (t.shipped > util.dayEnd(util.VN_CURDATE()),
+ 'FREE',
+ IFNULL(ts.code, 'FREE')))
+ LEFT JOIN vn.claimBeginning cb ON s.id = cb.saleFk
+ WHERE t.shipped >= vDateInventory
+ AND s.itemFk = vItemFk
+ AND vWarehouseFk = t.warehouseFk
+ ),sale AS (
+ SELECT s.shipped,
+ NULL `in`,
+ s.quantity,
+ s.alertLevel,
+ s.name,
+ s.nickname,
+ s.refFk,
+ s.ticketFk,
+ s.clientFk,
+ IF(stk.saleFk, TRUE, NULL),
+ TRUE,
+ s.saleFk,
+ s.`order`,
+ s.typeFk,
+ s.claimFk,
+ NULL
+ FROM sales s
+ LEFT JOIN vn.state stPrep ON stPrep.`code` = 'PREPARED'
+ LEFT JOIN vn.saleTracking stk ON stk.saleFk = s.saleFk
+ AND stk.stateFk = stPrep.id
+ GROUP BY s.saleFk
+ ) SELECT shipped,
+ `in`,
+ `out`,
+ alertLevel,
+ stateName,
+ `name`,
+ reference,
+ origin,
+ clientFk,
+ isPicked,
+ isTicket,
+ lineFk,
+ `order`,
+ clientType,
+ claimFk,
+ inventorySupplierFk
+ FROM entriesIn
+ UNION ALL
+ SELECT * FROM entriesOut
+ UNION ALL
+ SELECT * FROM sale
+ ORDER BY shipped,
+ (inventorySupplierFk = clientFk) DESC,
+ alertLevel DESC,
+ isTicket,
+ `order` DESC,
+ isPicked DESC,
+ `in` DESC,
+ `out` DESC;
IF vDate IS NULL THEN
-
+
SET @a := 0;
SET @currentLineFk := 0;
SET @shipped := '';
- SELECT DATE(@shipped:= shipped) shipped,
- alertLevel,
- stateName,
- origin,
- reference,
- clientFk,
- name,
- `in` invalue,
- `out`,
- @a := @a + IFNULL(`in`, 0) - IFNULL(`out`, 0) balance,
+ SELECT DATE(@shipped:= t.shipped) shipped,
+ t.alertLevel,
+ t.stateName,
+ t.origin,
+ t.reference,
+ t.clientFk,
+ t.name,
+ t.`in` invalue,
+ t.`out`,
+ @a := @a + IFNULL(t.`in`, 0) - IFNULL(t.`out`, 0) balance,
@currentLineFk := IF (@shipped < util.VN_CURDATE()
- OR (@shipped = util.VN_CURDATE() AND (isPicked OR a.`code` >= 'ON_PREPARATION')),
- lineFk,
+ OR (@shipped = util.VN_CURDATE() AND (t.isPicked OR a.`code` >= 'ON_PREPARATION')),
+ t.lineFk,
@currentLineFk) lastPreparedLineFk,
- isTicket,
- lineFk,
- isPicked,
- clientType,
- claimFk
- FROM tItemDiary
- LEFT JOIN alertLevel a ON a.id = tItemDiary.alertLevel;
+ t.isTicket,
+ t.lineFk,
+ t.isPicked,
+ t.clientType,
+ t.claimFk,
+ t.`order`
+ FROM tItemDiary t
+ LEFT JOIN alertLevel a ON a.id = t.alertLevel;
ELSE
- SELECT SUM(`in`) - SUM(`out`) INTO @a
+ SELECT IFNULL(SUM(IFNULL(`in`, 0)) - SUM(IFNULL(`out`, 0)), 0) INTO @a
FROM tItemDiary
WHERE shipped < vDate;
@@ -62483,7 +62543,8 @@ BEGIN
0 lineFk,
0 isPicked,
0 clientType,
- 0 claimFk
+ 0 claimFk,
+ NULL `order`
UNION ALL
SELECT shipped,
alertlevel,
@@ -62499,11 +62560,12 @@ BEGIN
lineFk,
isPicked,
clientType,
- claimFk
+ claimFk,
+ `order`
FROM tItemDiary
WHERE shipped >= vDate;
END IF;
-
+
DROP TEMPORARY TABLE tItemDiary;
END ;;
DELIMITER ;
@@ -62827,7 +62889,7 @@ BEGIN
CALL cache.available_refresh(vCalcFk, FALSE, vWarehouseFk, vDated);
- -- Añadido temporalmente para ver si ya no sucede el cuelgue de db
+ -- Añadido temporalmente para que no se cuelgue la db
SET vShowType = TRUE;
WITH itemTags AS (
@@ -62888,7 +62950,7 @@ BEGIN
AND iss.warehouseFk = vWarehouseFk
JOIN itemTags its
WHERE a.available > 0
- AND IF(vShowType, i.typeFk = its.typeFk, TRUE)
+ AND (i.typeFk = its.typeFk OR NOT vShowType)
AND i.id <> vSelf
ORDER BY `counter` DESC,
(t.name = its.name) DESC,
@@ -63785,7 +63847,15 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-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))
+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
@@ -63795,29 +63865,31 @@ BEGIN
* @param vBankFk banco de la compensacion
* @param vConcept descripcion
* @param vAmount cantidad que se compensa
- * @param vCompany empresa
+ * @param vCompanyFk empresa
* @param vOriginalAccount cuenta contable desde la cual se compensa
*
- */
+ */
DECLARE vNewBookEntry INT;
- DECLARE vIsClientCompensation INT;
+ DECLARE vIsClientCompensation INT;
DECLARE vClientFk INT;
- DECLARE vSupplierFk INT;
- DECLARE vIsOriginalAClient BOOL;
- DECLARE vPayMethodCompensation INT;
-
- CALL ledger_next(vNewBookEntry);
+ DECLARE vSupplierFk INT;
+ DECLARE vIsOriginalAClient BOOL;
+ DECLARE vPayMethodCompensation INT;
- SELECT COUNT(id) INTO vIsOriginalAClient FROM client WHERE accountingAccount LIKE vOriginalAccount COLLATE utf8_general_ci;
+ CALL ledger_next(YEAR(vDated), 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
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)
+ INSERT INTO XDiario (ASIEN, FECHA, SUBCTA, CONTRA, CONCEPTO, EURODEBE, EUROHABER, empresa_id)
VALUES ( vNewBookEntry,
vDated,
vOriginalAccount,
@@ -63835,31 +63907,52 @@ BEGIN
),
vCompanyFk
),
- ( vNewBookEntry,
- vDated,
- vCompensationAccount,
- vOriginalAccount,
- vConcept,
- @vAmount2,
+ ( 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)
- VALUES (vConcept, vAmount, vDated, vBankFk, vCompanyFk, vClientFk, TRUE);
- ELSE
- IF NOT vIsOriginalAClient THEN
- SET vAmount = -vAmount;
- 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;
+ vCompanyFk);
+
+ IF vIsClientCompensation THEN
+ IF vIsOriginalAClient THEN
+ SET vAmount = -vAmount;
+ END IF;
+
+ INSERT INTO receipt
+ SET invoiceFk = vConcept,
+ amountPaid = vAmount,
+ payed = vDated,
+ bankFk = vBankFk,
+ companyFk = vCompanyFk,
+ clientFk = vClientFk,
+ isConciliate = TRUE;
+ ELSE
+ IF NOT vIsOriginalAClient THEN
+ SET vAmount = -vAmount;
+ 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
+ SET received = vDated,
+ dueDated = vDated,
+ supplierFk = vSupplierFk,
+ amount = vAmount,
+ bankFk = vBankFk,
+ payMethodFk = vPayMethodCompensation,
+ concept = vConcept,
+ companyFk = vCompanyFk,
+ isConciliated = TRUE;
+ END IF;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -63876,12 +63969,58 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `ledger_next`(OUT vNewBookEntry INT)
+CREATE DEFINER=`root`@`localhost` PROCEDURE `ledger_next`(
+ IN vFiscalYear INT,
+ OUT vLastBookEntry INT
+)
BEGIN
-
- UPDATE vn.ledgerConfig SET lastBookEntry = LAST_INSERT_ID(lastBookEntry + 1);
- SET vNewBookEntry = LAST_INSERT_ID();
-
+ DECLARE vHasStartTransaction BOOLEAN;
+
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+
+ IF vHasStartTransaction THEN
+ ROLLBACK TO sp;
+ RESIGNAL;
+ ELSE
+ ROLLBACK;
+ CALL util.throw ('It has not been possible to generate a new ledger');
+ END IF;
+ END;
+
+ IF vFiscalYear IS NULL THEN
+ CALL util.throw('Fiscal year is required');
+ END IF;
+
+ SELECT @@in_transaction INTO vHasStartTransaction;
+
+ IF NOT vHasStartTransaction THEN
+ START TRANSACTION;
+ ELSE
+ SAVEPOINT sp;
+ END IF;
+
+ SELECT bookEntry + 1 INTO vLastBookEntry
+ FROM ledgerCompany
+ WHERE fiscalYear = vFiscalYear
+ FOR UPDATE;
+
+ IF vLastBookEntry IS NULL THEN
+ INSERT INTO ledgerCompany
+ SET fiscalYear = vFiscalYear,
+ bookEntry = 1;
+ SET vLastBookEntry = 1;
+ END IF;
+
+ UPDATE ledgerCompany
+ SET bookEntry = vLastBookEntry
+ WHERE fiscalYear = vFiscalYear;
+
+ IF vHasStartTransaction THEN
+ RELEASE SAVEPOINT sp;
+ ELSE
+ COMMIT;
+ END IF;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -64842,166 +64981,6 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `packageInvoicing` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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 */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `packageInvoicing`(
- IN vClient INT,
- IN vDate DATE,
- IN vCompany INT,
- IN vIsAllInvoiceable BOOLEAN,
- OUT vNewTicket INT(11)
- )
-BEGIN
-
- DECLARE vGraceDays INT;
- DECLARE vDateStart DATE DEFAULT '2017-11-21';
- DECLARE vIsInvoiceable BOOLEAN;
- DECLARE vWarehouse INT DEFAULT 13;
- DECLARE vComponentCost INT DEFAULT 28;
- DECLARE vGraceDate DATE;
- DECLARE vDateEnd DATE;
-
- SET vGraceDays = IF(vIsAllInvoiceable ,0, 30);
- SET vGraceDate = TIMESTAMPADD(DAY, - vGraceDays, vDate);
-
- /* 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;
-
- CREATE TEMPORARY TABLE tmp.packageToInvoice
- SELECT p.itemFk,
- tp.packagingFk,
- IF(tp.quantity < 0 OR t.shipped < vGraceDate, tp.quantity, 0) quantity,
- tp.ticketFk,
- p.price
- FROM ticketPackaging tp
- JOIN packaging p ON p.id = tp.packagingFk
- JOIN ticket t ON t.id = tp.ticketFk
- WHERE t.shipped BETWEEN vDateStart AND vDateEnd
- AND t.clientFk = vClient;
-
- DROP TEMPORARY TABLE IF EXISTS tmp.packageToInvoicePositives;
-
- CREATE TEMPORARY TABLE tmp.packageToInvoicePositives
- SELECT itemFk, sum(quantity) as totalQuantity
- FROM tmp.packageToInvoice
- GROUP BY itemFk
- HAVING totalQuantity > 0;
-
- SELECT COUNT(*)
- INTO vIsInvoiceable
- FROM tmp.packageToInvoicePositives;
-
- IF vIsInvoiceable THEN
-
- CALL ticket_add(vClient,
- vDateEnd,
- vWarehouse,
- vCompany,
- NULL,
- NULL,
- NULL,
- vDateEnd,
- account.myUser_getId(),
- TRUE,
- vNewTicket);
-
- INSERT INTO ticketPackaging(
- ticketFk,
- packagingFk,
- quantity,
- pvp)
- 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
- OR vIsAllInvoiceable
- GROUP BY packagingFk
- HAVING totalQuantity;
-
- INSERT INTO sale(
- ticketFk,
- itemFk,
- concept,
- quantity,
- price
- )
- 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
- 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 */ ;
-/*!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_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `packingListPrinted` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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 */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `packingListPrinted`(ticketFk INT)
-BEGIN
-
- UPDATE vn2008.Movimientos_mark mm
- JOIN vn2008.Movimientos m ON m.Id_Movimiento = mm.Id_Movimiento
- SET mm.valor = 2 -- Impreso
- 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 */ ;
-/*!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_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `packingListSwitch` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -65016,14 +64995,14 @@ BEGIN
DECLARE valueFk INT;
DECLARE encajando INT DEFAULT 9;
- SELECT valor INTO valueFk
- FROM vn2008.Movimientos_mark
- WHERE Id_Movimiento = saleFk
+ SELECT isChecked INTO valueFk
+ FROM saleTracking
+ WHERE saleFk = saleFk
AND stateFk = encajando;
SET valueFk = (IFNULL(valueFk,0) + 1) MOD 3;
- REPLACE vn2008.Movimientos_mark(Id_Movimiento, valor, Id_Trabajador, stateFk)
+ REPLACE saleTracking(saleFk, isChecked, workerFk, stateFk)
VALUES(saleFk,valueFk,account.myUser_getId(),encajando);
@@ -66417,93 +66396,6 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!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_unicode_ci */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `recipe_Cook`(vItemFk INT, vBunchesQuantity INT, vDate DATE)
-BEGIN
-
- DECLARE vCalc INT;
- DECLARE vWarehouseFk INT DEFAULT 1; -- Silla FV
-
- SET @element := '';
- SET @counter := 0;
-
- 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,
- @element := element COLLATE utf8_general_ci
- FROM
- (
- SELECT i.id itemFk,
- CONCAT(i.longName, ' (ref: ',i.id,')') longName,
- i.size,
- i.inkFk,
- a.available,
- r.element,
- vBunchesQuantity * r.quantity as quantity,
- r.itemFk as bunchItemFk,
- 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.typeFk = r.typeFk),0) as matches,
- i.typeFk,
- rl.previousSelected
- 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
- AND rl.log_element = r.element
- AND rl.selected_ItemFk = i.id
- WHERE r.itemFk = vItemFk
- AND a.available > vBunchesQuantity * r.quantity
- UNION ALL
- SELECT 100 itemFk,
- CONCAT('? ',r.element,' ',IFNULL(r.size,''),' ',IFNULL(r.inkFk,'')) as longName,
- NULL,
- NULL,
- 0,
- r.element,
- vBunchesQuantity * r.quantity as quantity,
- r.itemFk as bunchItemFk,
- -1 as matches,
- r.typeFk,
- NULL
- FROM vn.recipe r
- WHERE r.itemFk = vItemFk
- GROUP BY r.element
- ) sub
-
- ORDER BY element, matches DESC, previousSelected DESC;
-
- SELECT *
- FROM tmp.recipeCook
- WHERE counter < 6
- OR itemFk = 100
- ;
-
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `recipe_Plaster` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -66664,7 +66556,7 @@ BEGIN
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,
+ LEFT(COALESCE(rs.description, zo.name, am.name),12) agencyDescription,
am.name,
t.clientFk,
CONCAT(CAST(SUM(sv.volume) AS DECIMAL(5, 2)), 'm³') m3 ,
@@ -66691,7 +66583,7 @@ BEGIN
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
+ LEFT JOIN roadmapStop rs ON rs.id = rm.expeditionTruckFk
WHERE IF(vIsCollection, tc.collectionFk = vParam, tc.ticketFk = vParam)
GROUP BY t.id
ORDER BY cc.code;
@@ -66993,8 +66885,8 @@ BEGIN
SET rm.m3boxes = sub.m3boxes;
UPDATE routesMonitor rm
- JOIN vn.expeditionTruck et ON et.id = rm.expeditionTruckFk
- SET rm.etd = et.eta;
+ JOIN vn.roadmapStop rs ON rs.id = rm.expeditionTruckFk
+ SET rm.etd = rs.eta;
DROP TEMPORARY TABLE tmp.routesMonitor;
END ;;
@@ -68479,7 +68371,7 @@ BEGIN
ticketFk INT(11),
saleFk INT(11),
isFreezed INTEGER(1) DEFAULT 0,
- risk DECIMAL(10,2) DEFAULT 0,
+ risk DECIMAL(10,1) DEFAULT 0,
hasHighRisk TINYINT(1) DEFAULT 0,
hasTicketRequest INTEGER(1) DEFAULT 0,
itemShortage VARCHAR(255),
@@ -68489,6 +68381,7 @@ BEGIN
hasComponentLack INTEGER(1),
hasRounding VARCHAR(255),
isTooLittle BOOL DEFAULT FALSE,
+ isVip BOOL DEFAULT FALSE,
PRIMARY KEY (ticketFk, saleFk)
) ENGINE = MEMORY;
@@ -68524,6 +68417,14 @@ BEGIN
JOIN volumeConfig vc
WHERE sub.litros < vc.minTicketVolume
AND sub.totalWithoutVat < vc.minTicketValue;
+
+ -- VIP
+ INSERT INTO tmp.sale_problems(ticketFk, isVip)
+ SELECT DISTINCT tl.ticketFk, TRUE
+ FROM tmp.ticket_list tl
+ JOIN client c ON c.id = tl.clientFk
+ WHERE c.businessTypeFk = 'VIP'
+ ON DUPLICATE KEY UPDATE isVip = TRUE;
-- Faltan componentes
INSERT INTO tmp.sale_problems(ticketFk, hasComponentLack, saleFk)
@@ -69095,6 +68996,160 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `sale_setProblem` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_setProblem`(
+ vProblemCode VARCHAR(25)
+)
+BEGIN
+/**
+ * Update column sale.problem with a problem code
+ * @param vProblemCode Code to set or unset
+ * @table tmp.sale(saleFk, hasProblem)
+ */
+ UPDATE sale s
+ JOIN tmp.sale ts ON ts.saleFk = s.id
+ SET s.problem = CONCAT(
+ IF(ts.hasProblem,
+ CONCAT(s.problem, ',', vProblemCode),
+ REPLACE(s.problem, vProblemCode , '')));
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `sale_setProblemComponentLack` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_setProblemComponentLack`(
+ vSelf INT
+)
+BEGIN
+/**
+ * Update the problems for sales lines that have or no longer have problems with components,
+ * verify whether all mandatory components are present or not
+ *
+ * @param vSelf Id del sale
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale
+ (INDEX(saleFk))
+ ENGINE = MEMORY
+ SELECT vSelf saleFk, sale_hasComponentLack(vSelf) hasProblem;
+
+ CALL sale_setProblem('hasComponentLack');
+
+ 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 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `sale_setProblemComponentLackByComponent` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_setProblemComponentLackByComponent`(
+ vComponentFk INT
+)
+BEGIN
+/**
+ * Update the issues for sales lines that have or no longer have problems with components, verify
+ * whether all mandatory components are present or not resulting from changes in the table vn.component
+ *
+ * @param vComponentFk Id component
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale
+ (INDEX(saleFk))
+ ENGINE = MEMORY
+ SELECT saleFk, sale_hasComponentLack(saleFk)hasProblem
+ FROM (
+ SELECT s.id saleFk
+ FROM ticket t
+ JOIN sale s ON s.ticketFk = t.id
+ LEFT JOIN saleComponent sc ON sc.saleFk = s.id
+ WHERE t.shipped >= util.midnight()
+ AND (vComponentFk IS NULL OR sc.componentFk = vComponentFk)
+ GROUP BY s.id) sub;
+
+ CALL sale_setProblem('hasComponentLack');
+
+ 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 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `sale_setProblemRounding` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `sale_setProblemRounding`(
+ vSelf INT
+)
+BEGIN
+/**
+ * Update the rounding problem for a sales line
+ * @param vSelf Id sale
+ */
+ DECLARE vItemFk INT;
+ DECLARE vWarehouseFk INT;
+ DECLARE vShipped DATE;
+ DECLARE vQuantity INT;
+
+ SELECT s.itemFk, t.warehouseFk, t.shipped, s.quantity
+ INTO vItemFk, vWarehouseFk, vShipped, vQuantity
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ WHERE s.id = vSelf;
+
+ CALL buyUltimate(vWarehouseFk, vShipped);
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale
+ SELECT vSelf saleFk, MOD(vQuantity, b.`grouping`) hasProblem
+ FROM tmp.buyUltimate bu
+ JOIN buy b ON b.id = bu.buyFk
+ WHERE bu.itemFk = vItemFk;
+
+ CALL sale_setProblem('hasRounding');
+
+ DROP TEMPORARY TABLE tmp.sale;
+ 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 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `sectorCollectionSaleGroup_add` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -69926,7 +69981,7 @@ BEGIN
INSERT INTO stockBuyed(buyed, dated, description)
SELECT SUM(ic.cm3 * ito.quantity / vc.palletM3 / 1000000),
vDated,
- IF(c.code = 'ES', p.name, c.country) destiny
+ IF(c.code = 'ES', p.name, c.name) destiny
FROM itemTicketOut ito
JOIN ticket t ON t.id = ito.ticketFk
JOIN `address` a ON a.id = t.addressFk
@@ -70210,7 +70265,7 @@ BEGIN
itemFk,
longName,
supplier,
- entryFk,
+ CONCAT('E',entryFk) entryFk,
landed,
`in`,
`out`,
@@ -70224,16 +70279,98 @@ BEGIN
itemFk,
longName,
supplier,
- 'previous',
+ 'E previous',
vFromDated,
SUM(`in`),
SUM(`out`),
NULL,
- buyingValue
+ AVG(buyingValue)
FROM supplierPackaging
WHERE supplierFk = vSupplierFk
AND landed < vFromDated
GROUP BY itemFk
+ UNION ALL
+ SELECT vSupplierFk,
+ s.itemFk,
+ i.longName,
+ c.name,
+ CONCAT('T',s.ticketFk),
+ DATE(t.shipped),
+ -LEAST(s.quantity,0) `in`,
+ GREATEST(s.quantity,0) `out`,
+ t.warehouseFk,
+ s.price * (100 - s.discount) / 100
+ FROM sale s
+ JOIN item i ON i.id = s.itemFk
+ JOIN packaging p ON p.itemFk = i.id
+ JOIN ticket t ON t.id = s.ticketFk
+ JOIN client c ON c.id = t.clientFk
+ JOIN supplier su ON su.nif = c.fi
+ WHERE su.id = vSupplierFk
+ AND t.shipped >= vFromDated
+ AND p.isPackageReturnable
+ UNION ALL
+ SELECT vSupplierFk,
+ s.itemFk,
+ i.longName,
+ c.name,
+ 'T previous',
+ vFromDated,
+ SUM(-LEAST(s.quantity,0)) `in`,
+ SUM(GREATEST(s.quantity,0)) `out`,
+ NULL,
+ AVG(s.price * (100 - s.discount) / 100)
+ FROM sale s
+ JOIN item i ON i.id = s.itemFk
+ JOIN packaging p ON p.itemFk = i.id
+ JOIN ticket t ON t.id = s.ticketFk
+ JOIN client c ON c.id = t.clientFk
+ JOIN supplier su ON su.nif = c.fi
+ WHERE su.id = vSupplierFk
+ AND t.shipped < vFromDated
+ AND p.isPackageReturnable
+ GROUP BY s.itemFk
+ UNION ALL
+ SELECT vSupplierFk,
+ p.itemFk,
+ i.longName,
+ c.name,
+ CONCAT('TP',tp.ticketFk),
+ DATE(t.shipped),
+ -LEAST(tp.quantity,0) `in`,
+ GREATEST(tp.quantity,0) `out`,
+ t.warehouseFk,
+ 0
+ FROM ticketPackaging tp
+ JOIN packaging p ON p.id = tp.packagingFk
+ JOIN item i ON i.id = p.itemFk
+ JOIN ticket t ON t.id = tp.ticketFk
+ JOIN client c ON c.id = t.clientFk
+ JOIN supplier su ON su.nif = c.fi
+ WHERE su.id = vSupplierFk
+ AND t.shipped >= vFromDated
+ AND p.isPackageReturnable
+ UNION ALL
+ SELECT vSupplierFk,
+ p.itemFk,
+ i.longName,
+ c.name,
+ 'TP previous',
+ vFromDated,
+ SUM(-LEAST(tp.quantity,0)) `in`,
+ SUM(GREATEST(tp.quantity,0)) `out`,
+ NULL,
+ 0
+ FROM ticketPackaging tp
+ JOIN packaging p ON p.id = tp.packagingFk
+ JOIN item i ON i.id = p.itemFk
+ JOIN ticket t ON t.id = tp.ticketFk
+ JOIN client c ON c.id = t.clientFk
+ JOIN supplier su ON su.nif = c.fi
+ WHERE su.id = vSupplierFk
+ AND t.shipped >= vFromDated
+ AND p.isPackageReturnable
+ GROUP BY p.itemFk
ORDER BY itemFk, landed, entryFk
) sub
WHERE `out` OR `in`;
@@ -70244,8 +70381,8 @@ BEGIN
supplier,
entryFk,
landed,
- `in`,
- `out`,
+ CAST(`in` AS DECIMAL(10,0)) `in`,
+ CAST(`out` AS DECIMAL(10,0)) `out`,
warehouse,
buyingValue,
balance
@@ -70656,14 +70793,14 @@ DELIMITER ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!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 = utf8mb3 */ ;
-/*!50003 SET character_set_results = utf8mb3 */ ;
-/*!50003 SET collation_connection = utf8mb3_general_ci */ ;
+/*!50003 SET character_set_client = utf8mb4 */ ;
+/*!50003 SET character_set_results = utf8mb4 */ ;
+/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `ticketCalculateClon`(IN vTicketNew INT, vTicketOld INT)
BEGIN
@@ -70695,7 +70832,7 @@ BEGIN
FROM sale
WHERE ticketFk = vTicketNew AND price > 0;
- CALL sale_recalcComponent('imbalance');
+ CALL sale_recalcComponent('buyerDiscount');
DROP TEMPORARY TABLE IF EXISTS tmp.recalculateSales;
@@ -71682,69 +71819,6 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!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 */ ;
-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 refundTicketFk = 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 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!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 = utf8mb4 */ ;
-/*!50003 SET character_set_results = utf8mb4 */ ;
-/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
-DELIMITER ;;
-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,
- requesterFk)
- VALUES(vDescription,
- vQuantity,
- vPrice,
- 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 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `ticketStateToday_setState` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -73361,7 +73435,7 @@ BEGIN
*
* @param vSelf El id del ticket
*/
- DECLARE vCmrFk, vPreviousCmrFk, vCurrentCmrFk INT;
+ DECLARE vCmrFk INT;
SELECT cmrFk INTO vCmrFk
FROM ticket
WHERE id = vSelf;
@@ -73398,8 +73472,6 @@ BEGIN
AND t.id = vSelf
GROUP BY t.id;
- START TRANSACTION;
-
IF vCmrFk THEN
UPDATE cmr c
JOIN tTicket t
@@ -73411,9 +73483,7 @@ BEGIN
c.supplierFk = t.supplierFk,
c.ead = t.landed
WHERE id = vCmrFk;
- ELSE
- SELECT MAX(id) INTO vPreviousCmrFk FROM cmr;
-
+ ELSE
INSERT INTO cmr (
senderInstruccions,
truckPlate,
@@ -73424,17 +73494,14 @@ BEGIN
ead
)
SELECT * FROM tTicket;
-
- SELECT MAX(id) INTO vCurrentCmrFk FROM cmr;
- IF vPreviousCmrFk <> vCurrentCmrFk THEN
+ IF (SELECT EXISTS(SELECT * FROM tTicket)) THEN
UPDATE ticket
- SET cmrFk = vCurrentCmrFk
+ SET cmrFk = LAST_INSERT_ID()
WHERE id = vSelf;
END IF;
END IF;
- COMMIT;
DROP TEMPORARY TABLE tTicket;
END ;;
DELIMITER ;
@@ -73686,6 +73753,7 @@ BEGIN
MAX(itemDelay) itemDelay,
MAX(hasRounding) hasRounding,
MAX(itemLost) itemLost,
+ MAX(isVip) isVip,
0 totalProblems
FROM tmp.sale_problems
GROUP BY ticketFk;
@@ -73701,7 +73769,8 @@ BEGIN
(tp.isTooLittle) +
(tp.itemLost) +
(tp.hasRounding) +
- (tp.itemShortage)
+ (tp.itemShortage) +
+ (tp.isVip)
);
DROP TEMPORARY TABLE tmp.sale_problems;
@@ -74538,6 +74607,425 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `ticket_setProblem` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setProblem`(
+ vProblemCode VARCHAR(25)
+)
+BEGIN
+/**
+ * Update column ticket.problem with a problem code
+ *
+ * @param vProblemCode Code to set or unset
+ * @table tmp.ticket(ticketFk, hasProblem)
+ */
+ UPDATE ticket t
+ JOIN tmp.ticket tt ON tt.ticketFk = t.id
+ SET t.problem = CONCAT(
+ IF(tt.hasProblem,
+ CONCAT(problem, ',', vProblemCode),
+ REPLACE(problem, vProblemCode , '')));
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `ticket_setProblemFreeze` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setProblemFreeze`(
+ vClientFk INT
+)
+BEGIN
+/**
+ * Update the problem of tickets whose client is frozen or unfrozen
+ *
+ * @param vClientFk Id Cliente, if NULL all clients
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
+ (INDEX(ticketFk))
+ ENGINE = MEMORY
+ SELECT t.id ticketFk, FALSE hasProblem
+ FROM ticket t
+ WHERE t.shipped >= util.midnight()
+ AND (vClientFk IS NULL OR t.clientFk = vClientFk);
+
+ UPDATE tmp.ticket t
+ JOIN ticket ti ON ti.id = t.ticketFk
+ JOIN client c ON c.id = ti.clientFk
+ SET t.hasProblem = TRUE
+ WHERE c.isFreezed;
+
+ CALL ticket_setProblem('isFreezed');
+
+ 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 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `ticket_setProblemRequest` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setProblemRequest`(
+ vSelf INT
+)
+BEGIN
+/**
+ * Update the problems of tickets that have a pending ticketRequest or no longer have it
+ *
+ * @param vSelf Id ticket, if NULL ALL tickets
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
+ (INDEX(ticketFk))
+ ENGINE = MEMORY
+ SELECT t.id ticketFk, FALSE hasProblem
+ FROM ticket t
+ WHERE t.shipped >= util.midnight()
+ AND (vSelf IS NULL OR t.id = vSelf);
+
+ UPDATE tmp.ticket t
+ JOIN ticketRequest tr ON tr.ticketFk = t.ticketFk
+ SET t.hasProblem = TRUE
+ WHERE tr.isOK IS NULL;
+
+ CALL ticket_setProblem('hasTicketRequest');
+
+ 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 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `ticket_setProblemRisk` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setProblemRisk`(
+ vSelf INT
+)
+BEGIN
+/**
+ * Update the risk problem for a specific ticket
+ *
+ * @param vSelf Id ticket
+ */
+ DECLARE vHasRisk BOOL;
+ DECLARE vHasHighRisk BOOL;
+
+ SELECT t.risk > (c.credit + 10), ((t.risk - cc.riskTolerance) > (c.credit + 10))
+ INTO vHasRisk, vHasHighRisk
+ FROM client c
+ JOIN ticket t ON t.clientFk = c.id
+ JOIN clientConfig cc
+ WHERE t.id = vSelf;
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
+ SELECT vSelf ticketFk, vHasRisk hasProblem;
+
+ CALL ticket_setProblem('hasRisk');
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
+ SELECT vSelf ticketFk, vHasHighRisk hasProblem;
+
+ CALL ticket_setProblem('hasHighRisk');
+
+ 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 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `ticket_setProblemRounding` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setProblemRounding`(
+ vSelf INT
+)
+BEGIN
+/**
+ * Update the rounding problem for the sales lines of a ticket
+ *
+ * @param vSelf Id de ticket
+ */
+ DECLARE vWarehouseFk INT;
+ DECLARE vDated DATE;
+
+ SELECT warehouseFk, shipped
+ INTO vWarehouseFk, vDated
+ FROM ticket
+ WHERE id = vSelf;
+
+ CALL buyUltimate(vWarehouseFk, vDated);
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale
+ SELECT s.id saleFk , MOD(s.quantity, b.`grouping`) hasProblem
+ FROM ticket t
+ JOIN sale s ON s.ticketFk = t.id
+ JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk
+ JOIN buy b ON b.id = bu.buyFk
+ WHERE t.id = vSelf;
+
+ CALL sale_setProblem('hasRounding');
+
+ DROP TEMPORARY TABLE tmp.sale;
+ 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 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `ticket_setProblemTaxDataChecked` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setProblemTaxDataChecked`(vClientFk INT)
+BEGIN
+/**
+ * Update the problem of tickets, depending on whether
+ * the client taxDataCheched is verified or not
+ *
+ * @param vClientFk Id cliente, if NULL all clients
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
+ (INDEX(ticketFk))
+ ENGINE = MEMORY
+ SELECT t.id ticketFk, IF(c.isTaxDataChecked, FALSE, TRUE) hasProblem
+ FROM ticket t
+ JOIN client c ON c.id = t.clientFk
+ WHERE t.shipped >= util.midnight()
+ AND (c.id = vClientFk OR vClientFk IS NULL);
+
+ CALL ticket_setProblem('isTaxDataChecked');
+
+ 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 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `ticket_setProblemTooLittle` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setProblemTooLittle`(
+ vSelf INT
+)
+BEGIN
+/**
+ * Update the problems when the ticket is too small or is no longer so
+ *
+ * @param vSelf Id del ticket
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
+ (INDEX(ticketFk))
+ ENGINE = MEMORY
+ SELECT vSelf ticketFk, ticket_isTooLittle(vSelf) hasProblem;
+
+ CALL ticket_setProblem('isTooLittle');
+
+ 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 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `ticket_setProblemTooLittleItemCost` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setProblemTooLittleItemCost`(
+ vItemFk INT
+)
+BEGIN
+/**
+ * Update the problems when the ticket is too small or is no longer so,
+ * derived from changes in the itemCost table
+ *
+ * @param vItemFk Id del item, NULL ALL items
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
+ (INDEX(ticketFk))
+ ENGINE = MEMORY
+ WITH tickets AS(
+ SELECT t.id ticketFk
+ FROM vn.ticket t
+ LEFT JOIN vn.sale s ON s.ticketFk = t.id
+ WHERE t.shipped >= util.midnight()
+ AND (s.itemFk = vItemFk OR vItemFk IS NULL)
+ GROUP BY t.id
+ )SELECT ticketFk, ticket_isTooLittle(ticketFk) hasProblem
+ FROM tickets;
+
+ CALL ticket_setProblem('isTooLittle');
+
+ 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 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `ticket_setRisk` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `ticket_setRisk`(
+ vClientFk INT)
+BEGIN
+/**
+ * Update the risk for a client with pending tickets
+ *
+ * @param vClientFk Id cliente
+ */
+ DECLARE vHasDebt BOOL;
+
+ SELECT COUNT(*) INTO vHasDebt
+ FROM `client`
+ WHERE id = vClientFk
+ AND typeFk = 'normal';
+
+ IF vHasDebt THEN
+
+ CREATE OR REPLACE TEMPORARY TABLE tTicketRisk
+ (KEY (ticketFk))
+ ENGINE = MEMORY
+ WITH ticket AS(
+ SELECT id ticketFk, companyFk, DATE(shipped) dated
+ FROM vn.ticket t
+ WHERE clientFk = vClientFk
+ AND refFk IS NULL
+ AND NOT isDeleted
+ AND totalWithoutVat <> 0
+ ), dated AS(
+ SELECT t.companyFk, MIN(DATE(t.dated) - INTERVAL cc.riskScope MONTH) started,
+ MAX(DATE(t.dated)) ended
+ FROM ticket t
+ JOIN vn.clientConfig cc
+ GROUP BY t.companyFk
+ ), balance AS(
+ SELECT SUM(amount)amount, companyFk
+ FROM (
+ SELECT amount, companyFk
+ FROM vn.clientRisk
+ WHERE clientFk = vClientFk
+ UNION ALL
+ SELECT -(SUM(amount) / 100) amount, tm.companyFk
+ FROM hedera.tpvTransaction t
+ JOIN hedera.tpvMerchant tm ON t.id = t.merchantFk
+ WHERE clientFk = vClientFk
+ AND receiptFk IS NULL
+ AND status = 'ok'
+ ) sub
+ WHERE companyFk
+ GROUP BY companyFk
+ ), uninvoiced AS(
+ SELECT t.companyFk, DATE(t.shipped) dated, SUM(IFNULL(t.totalWithVat, 0)) amount
+ FROM vn.ticket t
+ JOIN dated d
+ WHERE t.clientFk = vClientFk
+ AND t.refFk IS NULL
+ AND t.shipped BETWEEN d.started AND d.ended
+ GROUP BY t.companyFk, DATE(t.shipped)
+ ), receipt AS(
+ SELECT companyFk,DATE(payed) dated, SUM(amountPaid) amount
+ FROM vn.receipt
+ WHERE clientFk = vClientFk
+ AND payed > util.VN_CURDATE()
+ GROUP BY companyFk, DATE(payed)
+ ), risk AS(
+ SELECT b.companyFk,
+ ui.dated,
+ SUM(ui.amount) OVER (PARTITION BY b.companyFk ORDER BY ui.dated ) +
+ b.amount +
+ SUM(IFNULL(r.amount, 0)) amount
+ FROM balance b
+ JOIN uninvoiced ui ON ui.companyFk = b.companyFk
+ LEFT JOIN receipt r ON r.dated > ui.dated AND r.companyFk = ui.companyFk
+ GROUP BY b.companyFk, ui.dated
+ )
+ SELECT ti.ticketFk, r.amount
+ FROM ticket ti
+ JOIN risk r ON r.dated = ti.dated AND r.companyFk = ti.companyFk;
+
+ UPDATE ticket t
+ JOIN tTicketRisk tr ON tr.ticketFk = t.id
+ SET t.risk = tr.amount;
+
+ DROP TEMPORARY TABLE tTicketRisk;
+ 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_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `ticket_setState` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -74925,6 +75413,92 @@ BEGIN
GROUP BY ib.ediBotanic, o.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 SET @saved_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `till_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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `till_new`(
+ vClient INT,
+ vBank INT,
+ vAmount DOUBLE,
+ vConcept VARCHAR(25),
+ vDated DATE,
+ vSerie CHAR(1),
+ vBatch TINYINT,
+ vNumber INT,
+ vCompany SMALLINT,
+ vWorker INT
+)
+BEGIN
+ DECLARE vAccount VARCHAR(12);
+ DECLARE vSubaccount VARCHAR(12);
+ DECLARE vAsiento INT DEFAULT NULL;
+
+ -- Inserta el registro en cajas
+ INSERT INTO till
+ SET
+ workerFk = vWorker,
+ bankFk = vBank,
+ `in` = vAmount,
+ concept = vConcept,
+ dated = vDated,
+ serie = vSerie,
+ isAccountable = vBatch,
+ `number` = vNumber,
+ companyFk = vCompany;
+
+ -- Inserta los asientos contables
+ SELECT account INTO vAccount
+ FROM accounting WHERE id = vBank;
+
+ SELECT accountingAccount INTO vSubaccount
+ FROM `client` WHERE id = vClient;
+
+ CALL xdiario_new(
+ vAsiento,
+ vDated,
+ vAccount,
+ vSubaccount,
+ vConcept,
+ vAmount,
+ 0,
+ 0,
+ NULL, -- Serie
+ NULL, -- Factura
+ NULL, -- IVA
+ NULL, -- Recargo
+ FALSE, -- Auxiliar
+ vCompany,
+ vAsiento);
+
+ CALL xdiario_new(
+ vAsiento,
+ vDated,
+ vSubaccount,
+ vAccount,
+ vConcept,
+ 0,
+ vAmount,
+ 0,
+ NULL, -- Serie
+ NULL, -- Factura
+ NULL, -- IVA
+ NULL, -- Recargo
+ FALSE, -- Auxiliar
+ vCompany,
+ vAsiento);
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -77073,6 +77647,10 @@ mainLabel:BEGIN
UPDATE `client` c
SET c.salesPersonFk = null
WHERE c.salesPersonFk = vUserId;
+
+ UPDATE locker l
+ SET l.workerFk = NULL
+ WHERE l.workerFk = vUserId;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -78103,15 +78681,17 @@ BEGIN
CALL util.throw(vErrorCode);
END IF;
+
-- DIRECCION CORRECTA
CALL workerTimeControl_direction(vWorkerFk, vTimed);
IF (SELECT
- IF(IF(option1 IN ('inMiddle', 'outMiddle'),
+ IF((IF(option1 IN ('inMiddle', 'outMiddle'),
'middle',
option1) <> vDirection
AND IF(option2 IN ('inMiddle', 'outMiddle'),
'middle',
- IFNULL(option2, '')) <> vDirection,
+ IFNULL(option2, '')) <> vDirection)
+ OR (option1 IS NULL AND option2 IS NULL),
TRUE ,
FALSE)
FROM tmp.workerTimeControlDirection
@@ -78119,12 +78699,17 @@ BEGIN
SET vIsError = TRUE;
END IF;
- DROP TEMPORARY TABLE tmp.workerTimeControlDirection;
+
IF vIsError THEN
SET vErrorCode = 'WRONG_DIRECTION';
+ IF(SELECT option1 IS NULL AND option2 IS NULL
+ FROM tmp.workerTimeControlDirection) THEN
+
+ SET vErrorCode = 'DAY_MAX_TIME';
+ END IF;
CALL util.throw(vErrorCode);
END IF;
-
+ DROP TEMPORARY TABLE tmp.workerTimeControlDirection;
-- FICHADAS IMPARES
SELECT timed INTO vLastIn
FROM workerTimeControl
@@ -78902,6 +79487,43 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `worker_checkMultipleDevice` */;
+/*!50003 SET @saved_cs_client = @@character_set_client */ ;
+/*!50003 SET @saved_cs_results = @@character_set_results */ ;
+/*!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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `worker_checkMultipleDevice`(
+ vSelf INT
+)
+BEGIN
+/**
+ * Verify if a worker has multiple assigned devices,
+ * except for freelancers.
+ *
+ * @param vUserFk worker id.
+ */
+ DECLARE vHasPda BOOLEAN;
+ DECLARE vIsFreelance BOOLEAN;
+ DECLARE vMaxDevicesPerUser INT;
+
+ SELECT COUNT(*) INTO vHasPda FROM deviceProductionUser WHERE userFk = vSelf;
+ SELECT IFNULL(isFreelance, FALSE) INTO vIsFreelance FROM worker WHERE id = vSelf;
+ SELECT IFNULL(maxDevicesPerUser, FALSE) INTO vMaxDevicesPerUser FROM deviceProductionConfig LIMIT 1;
+
+ IF NOT vIsFreelance AND vHasPda > vMaxDevicesPerUser THEN
+ CALL util.throw('You can only have one PDA');
+ 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_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `worker_getFromHasMistake` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -79010,7 +79632,7 @@ DELIMITER ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `worker_updateBalance`(vSelfFk INT(11), vCredit DECIMAL(10,2), vDebit DECIMAL(10,2))
+CREATE DEFINER=`root`@`localhost` PROCEDURE `worker_updateBalance`(vSelf INT(11), vCredit DECIMAL(10,2), vDebit DECIMAL(10,2))
BEGIN
/**
* Actualiza la columna balance de worker.
@@ -79019,7 +79641,7 @@ BEGIN
*/
UPDATE worker
SET balance = IFNULL(balance, 0) + IFNULL(vCredit, 0) - IFNULL(vDebit, 0)
- WHERE id = vSelfFk;
+ WHERE id = vSelf;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -79330,6 +79952,62 @@ DELIMITER ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
+/*!50003 DROP PROCEDURE IF EXISTS `xdiario_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 */ ;
+DELIMITER ;;
+CREATE DEFINER=`root`@`localhost` PROCEDURE `xdiario_new`(
+ vBookNumber INT,
+ vDated DATE,
+ vSubaccount VARCHAR(12),
+ vAccount VARCHAR(12),
+ vConcept VARCHAR(25),
+ vDebit DOUBLE,
+ vCredit DOUBLE,
+ vEuro DOUBLE,
+ vSerie CHAR(1),
+ vInvoice VARCHAR(8),
+ vVat DOUBLE,
+ vRe DOUBLE,
+ vAux TINYINT,
+ vCompanyFk INT,
+ OUT vNewBookNumber INT
+)
+BEGIN
+ IF vBookNumber IS NULL THEN
+ CALL ledger_next(YEAR(vDated), vBookNumber);
+ END IF;
+
+ INSERT INTO XDiario
+ SET ASIEN = vBookNumber,
+ FECHA = vDated,
+ SUBCTA = vSubaccount,
+ CONTRA = vAccount,
+ CONCEPTO = vConcept,
+ EURODEBE = vDebit,
+ EUROHABER = vCredit,
+ BASEEURO = vEuro,
+ SERIE = vSerie,
+ FACTURA = vInvoice,
+ IVA = vVat,
+ RECEQUIV = vRe,
+ AUXILIAR = IF(vAux = FALSE, NULL, '*'),
+ MONEDAUSO = 2,
+ empresa_id = vCompanyFk;
+
+ SET vNewBookNumber = vBookNumber;
+END ;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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_sql_mode = @@sql_mode */ ;
+/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
/*!50003 DROP PROCEDURE IF EXISTS `zoneClosure_recalc` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -80856,29 +81534,6 @@ SET character_set_client = utf8;
1 AS `isRiskFree` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Agencias_province__`
---
-
-DROP TABLE IF EXISTS `Agencias_province__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Agencias_province__` (
- `province_id` smallint(6) unsigned NOT NULL,
- `agency_id` smallint(5) unsigned NOT NULL,
- `zona` tinyint(4) NOT NULL,
- `warehouse_id` smallint(6) unsigned NOT NULL,
- `route` tinyint(4) NOT NULL COMMENT 'Etiqueta zeleris',
- `isVolumetric` tinyint(1) NOT NULL DEFAULT 0,
- PRIMARY KEY (`province_id`,`agency_id`,`warehouse_id`),
- KEY `warehouse_id` (`warehouse_id`),
- KEY `agency_id` (`agency_id`),
- CONSTRAINT `Agencias_province___ibfk_1` FOREIGN KEY (`province_id`) REFERENCES `vn`.`province` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `Agencias_province___ibfk_2` FOREIGN KEY (`warehouse_id`) REFERENCES `vn`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `Agencias_province___ibfk_3` FOREIGN KEY (`agency_id`) REFERENCES `vn`.`agency` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Articles`
--
@@ -80938,21 +81593,6 @@ SET character_set_client = utf8;
1 AS `packingOut` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Baldas__`
---
-
-DROP TABLE IF EXISTS `Baldas__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Baldas__` (
- `Id_Estanterias` int(11) NOT NULL,
- `Id_Baldas` int(11) NOT NULL,
- `h` int(11) NOT NULL,
- PRIMARY KEY (`Id_Estanterias`,`Id_Baldas`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Bancos`
--
@@ -81001,25 +81641,6 @@ SET character_set_client = utf8;
1 AS `insuranceExpired` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Brasa__`
---
-
-DROP TABLE IF EXISTS `Brasa__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Brasa__` (
- `Id_Cliente` int(10) unsigned NOT NULL DEFAULT 0,
- `Cliente` varchar(50) NOT NULL,
- `Vista` int(10) unsigned NOT NULL DEFAULT 0,
- `Reg` bigint(21) unsigned NOT NULL DEFAULT 0,
- `Consumo` double NOT NULL,
- `Grupo` int(10) unsigned NOT NULL,
- PRIMARY KEY (`Id_Cliente`),
- KEY `Index_1` (`Id_Cliente`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Cajas`
--
@@ -81051,20 +81672,6 @@ SET character_set_client = utf8;
1 AS `Proveedores_account_Id` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Clases__`
---
-
-DROP TABLE IF EXISTS `Clases__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Clases__` (
- `Id_Clase` int(11) NOT NULL DEFAULT 0,
- `Clase` varchar(50) DEFAULT NULL,
- PRIMARY KEY (`Id_Clase`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Clientes`
--
@@ -81115,97 +81722,10 @@ SET character_set_client = utf8;
1 AS `hasInvoiceSimplified`,
1 AS `Id_Trabajador`,
1 AS `vies`,
- 1 AS `EYPBC`,
1 AS `bankEntityFk`,
1 AS `typeFk` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Clientes_dits__`
---
-
-DROP TABLE IF EXISTS `Clientes_dits__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Clientes_dits__` (
- `idClientes_dits` int(11) NOT NULL AUTO_INCREMENT,
- `idaccion_dits` int(11) NOT NULL,
- `ODBC_DATE` timestamp NOT NULL DEFAULT current_timestamp(),
- `Id_Ticket` int(11) NOT NULL,
- `Id_Trabajador` int(11) NOT NULL,
- `value_old` varchar(100) DEFAULT NULL,
- `value_new` varchar(100) DEFAULT NULL,
- PRIMARY KEY (`idClientes_dits`),
- KEY `idaccion_dits` (`idaccion_dits`),
- CONSTRAINT `Clientes_dits___ibfk_1` FOREIGN KEY (`idaccion_dits`) REFERENCES `accion_dits__` (`idaccion_dits`) ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `Clientes_empresa__`
---
-
-DROP TABLE IF EXISTS `Clientes_empresa__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Clientes_empresa__` (
- `Id_Clientes_empresa` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
- `Id_Cliente` int(11) NOT NULL,
- `empresa_id` int(10) unsigned NOT NULL,
- `fecha_ini` date NOT NULL,
- `fecha_fin` date NOT NULL,
- PRIMARY KEY (`Id_Clientes_empresa`),
- KEY `empresa_id_idx` (`empresa_id`),
- CONSTRAINT `Clientes_empresaCompany_Fk` FOREIGN KEY (`empresa_id`) REFERENCES `vn`.`company` (`id`) ON DELETE NO ACTION
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `Clientes_event__`
---
-
-DROP TABLE IF EXISTS `Clientes_event__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Clientes_event__` (
- `Id_Cliente` int(11) NOT NULL,
- `quantity` tinyint(3) unsigned NOT NULL,
- `odbc_date` timestamp NOT NULL DEFAULT current_timestamp(),
- PRIMARY KEY (`Id_Cliente`),
- CONSTRAINT `Clientes_event___ibfk_1` FOREIGN KEY (`Id_Cliente`) REFERENCES `vn`.`client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `Clientes_potenciales__`
---
-
-DROP TABLE IF EXISTS `Clientes_potenciales__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Clientes_potenciales__` (
- `id` int(11) NOT NULL,
- `PAIS` varchar(12) DEFAULT NULL,
- `ACTIVIDAD` varchar(10) DEFAULT NULL,
- `NOMBRE` varchar(45) NOT NULL DEFAULT '',
- `PROVINCIA` varchar(25) DEFAULT NULL,
- `POBLACION` varchar(45) NOT NULL DEFAULT '',
- `CP` varchar(10) DEFAULT NULL,
- `DIR_POSTAL` varchar(45) NOT NULL DEFAULT '',
- `TELEFONO` varchar(12) NOT NULL DEFAULT '',
- `TELEFONO2` varchar(12) NOT NULL DEFAULT '',
- `FAX` varchar(12) NOT NULL DEFAULT '',
- `E-MAIL` varchar(45) DEFAULT NULL,
- `pagweb` varchar(45) DEFAULT NULL,
- `SERVICIOS` varchar(45) DEFAULT NULL,
- `state_id` smallint(6) DEFAULT 0 COMMENT '0 no se ha hecho nada\n1 ya existe el cliente\n2 cliente conseguido\n3 desestimado',
- `Id_Trabajador` smallint(6) DEFAULT NULL,
- `Notas` varchar(255) DEFAULT NULL,
- `odbc_date` timestamp NULL DEFAULT current_timestamp(),
- PRIMARY KEY (`NOMBRE`,`POBLACION`,`DIR_POSTAL`,`TELEFONO`,`TELEFONO2`,`FAX`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Comparativa`
--
@@ -81259,7 +81779,6 @@ SET character_set_client = utf8;
1 AS `Id_Trabajador`,
1 AS `weight`,
1 AS `dispatched`,
- 1 AS `container_id`,
1 AS `itemOriginalFk` */;
SET character_set_client = @saved_cs_client;
@@ -81278,30 +81797,6 @@ SET character_set_client = utf8;
1 AS `odbc_date` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Compres_ok__`
---
-
-DROP TABLE IF EXISTS `Compres_ok__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Compres_ok__` (
- `Id_Compra` int(11) NOT NULL,
- `valor` tinyint(3) unsigned NOT NULL DEFAULT 0,
- `odbc_date` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `original_quantity` double DEFAULT NULL,
- `Id_Trabajador` int(10) unsigned NOT NULL,
- `Id_Accion` varchar(45) NOT NULL,
- `Id_Compra_ok` int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (`Id_Compra_ok`),
- KEY `Id_Movimiento` (`Id_Compra`),
- KEY `Id_Accion` (`Id_Accion`),
- KEY `Compres_ok_Id_Trabajador_idx` (`Id_Trabajador`),
- CONSTRAINT `Compres_ok_Id_Trabajador` FOREIGN KEY (`Id_Trabajador`) REFERENCES `vn`.`worker` (`id`),
- CONSTRAINT `Compres_ok___ibfk_1` FOREIGN KEY (`Id_Compra`) REFERENCES `vn`.`buy` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Consignatarios`
--
@@ -81328,39 +81823,6 @@ SET character_set_client = utf8;
1 AS `active` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Consignatarios_devices__`
---
-
-DROP TABLE IF EXISTS `Consignatarios_devices__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Consignatarios_devices__` (
- `Id_Consigna` int(11) NOT NULL,
- `serialNumber` varchar(45) NOT NULL,
- `notas` varchar(45) DEFAULT NULL,
- PRIMARY KEY (`Id_Consigna`,`serialNumber`),
- CONSTRAINT `Condigna_devices` FOREIGN KEY (`Id_Consigna`) REFERENCES `vn`.`address` (`id`) ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `Conteo__`
---
-
-DROP TABLE IF EXISTS `Conteo__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Conteo__` (
- `Id_Conteo` int(11) NOT NULL AUTO_INCREMENT,
- `Id_Article` int(11) NOT NULL,
- `Fecha` timestamp NOT NULL DEFAULT current_timestamp(),
- `dispositivo` varchar(15) DEFAULT NULL,
- `warehouse_id` int(10) unsigned NOT NULL DEFAULT 1,
- PRIMARY KEY (`Id_Conteo`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Cubos`
--
@@ -81452,24 +81914,6 @@ SET character_set_client = utf8;
1 AS `Id_Entrada` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Entradas_kop__`
---
-
-DROP TABLE IF EXISTS `Entradas_kop__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Entradas_kop__` (
- `Id_Entradas_kop` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
- `Id_Entrada` int(11) NOT NULL,
- `kop` int(11) DEFAULT NULL,
- `sub` mediumint(8) unsigned DEFAULT NULL,
- PRIMARY KEY (`Id_Entradas_kop`),
- KEY `entradas_entradas_kop_idx` (`Id_Entrada`),
- CONSTRAINT `entradas_entradas_kop` FOREIGN KEY (`Id_Entrada`) REFERENCES `vn`.`entry` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Entradas_orden`
--
@@ -81483,85 +81927,6 @@ SET character_set_client = utf8;
1 AS `orden` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Espionajes__`
---
-
-DROP TABLE IF EXISTS `Espionajes__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Espionajes__` (
- `idEspionaje` int(11) NOT NULL AUTO_INCREMENT,
- `Id_Trabajador` varchar(45) DEFAULT NULL,
- `Fecha` date DEFAULT NULL,
- `HoraEntrada` time DEFAULT NULL,
- `HoraSalida` time DEFAULT NULL,
- `Id_Equipo` int(11) DEFAULT NULL,
- PRIMARY KEY (`idEspionaje`),
- KEY `index` (`Id_Trabajador`,`Fecha`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `Estados__`
---
-
-DROP TABLE IF EXISTS `Estados__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Estados__` (
- `Id_Estado` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
- `Estado` varchar(50) DEFAULT NULL,
- PRIMARY KEY (`Id_Estado`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `Familias__`
---
-
-DROP TABLE IF EXISTS `Familias__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Familias__` (
- `Familia` varchar(3) NOT NULL,
- `Subcuenta` varchar(10) DEFAULT NULL,
- `Descripcion` varchar(50) DEFAULT NULL,
- PRIMARY KEY (`Familia`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `Forms__`
---
-
-DROP TABLE IF EXISTS `Forms__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Forms__` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `titulo` varchar(50) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `Grupos__`
---
-
-DROP TABLE IF EXISTS `Grupos__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Grupos__` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `name` varchar(50) NOT NULL,
- `Grupo` varchar(45) NOT NULL,
- `observation_type_id` tinyint(3) unsigned NOT NULL,
- PRIMARY KEY (`id`),
- KEY `name` (`name`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Impresoras`
--
@@ -81578,38 +81943,6 @@ SET character_set_client = utf8;
1 AS `isLabeler` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Informes__`
---
-
-DROP TABLE IF EXISTS `Informes__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Informes__` (
- `Id_Informe` tinyint(3) unsigned NOT NULL,
- `Informe` varchar(50) DEFAULT NULL,
- PRIMARY KEY (`Id_Informe`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `Jefes__`
---
-
-DROP TABLE IF EXISTS `Jefes__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Jefes__` (
- `Id_Trabajador` int(10) unsigned NOT NULL,
- `Id_Jefe` int(10) unsigned NOT NULL,
- `Departamento` varchar(45) NOT NULL,
- PRIMARY KEY (`Id_Trabajador`,`Id_Jefe`),
- KEY `trabajador_jefe_idx` (`Id_Jefe`),
- CONSTRAINT `trabajador_jefe` FOREIGN KEY (`Id_Jefe`) REFERENCES `vn`.`worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `trabajador_trabajador` FOREIGN KEY (`Id_Trabajador`) REFERENCES `vn`.`worker` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Deprecated 27-02-2023';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Monedas`
--
@@ -81625,33 +81958,6 @@ SET character_set_client = utf8;
1 AS `Cambio` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Monitoring__`
---
-
-DROP TABLE IF EXISTS `Monitoring__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Monitoring__` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `equipo_id` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
- `user_id` int(10) unsigned NOT NULL,
- `form_id` int(11) NOT NULL,
- `cliente_id` int(11) NOT NULL,
- `ticket_id` int(11) NOT NULL,
- `ODBC_TIME` timestamp NOT NULL DEFAULT current_timestamp(),
- PRIMARY KEY (`id`),
- KEY `equipo_id` (`equipo_id`,`user_id`,`form_id`,`cliente_id`,`ticket_id`),
- KEY `user_id` (`user_id`),
- KEY `form_id` (`form_id`),
- KEY `cliente_id` (`cliente_id`),
- KEY `ticket_id` (`ticket_id`),
- CONSTRAINT `Monitoring_FK` FOREIGN KEY (`equipo_id`) REFERENCES `vn`.`host` (`code`) ON UPDATE CASCADE,
- CONSTRAINT `Monitoring___ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `vn`.`worker` (`id`),
- CONSTRAINT `Monitoring___ibfk_3` FOREIGN KEY (`form_id`) REFERENCES `Forms__` (`id`) ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Movimientos`
--
@@ -81677,23 +81983,6 @@ SET character_set_client = utf8;
1 AS `isAdded` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Movimientos_avisar__`
---
-
-DROP TABLE IF EXISTS `Movimientos_avisar__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Movimientos_avisar__` (
- `Id_Movimiento` int(11) NOT NULL,
- `Id_Remitente` int(11) DEFAULT NULL,
- PRIMARY KEY (`Id_Movimiento`),
- KEY `Movimiento` (`Id_Movimiento`),
- KEY `Remitente` (`Id_Remitente`),
- CONSTRAINT `Id_Movimientos_avisar_fk` FOREIGN KEY (`Id_Movimiento`) REFERENCES `vn`.`sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Movimientos_componentes`
--
@@ -81728,40 +82017,6 @@ SET character_set_client = utf8;
1 AS `stateFk` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Movimientos_revisar__`
---
-
-DROP TABLE IF EXISTS `Movimientos_revisar__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Movimientos_revisar__` (
- `Id_Movimiento` int(11) NOT NULL,
- `Comentario` varchar(255) DEFAULT NULL,
- `Revisado` tinyint(1) NOT NULL DEFAULT 0,
- `Id_Remitente` int(11) DEFAULT NULL,
- `Id_Destinatario` int(11) DEFAULT NULL,
- PRIMARY KEY (`Id_Movimiento`),
- KEY `Remitente` (`Id_Remitente`),
- KEY `Destinatario` (`Id_Destinatario`),
- CONSTRAINT `Movimientos_revisar___ibfk_1` FOREIGN KEY (`Id_Movimiento`) REFERENCES `vn`.`sale` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `Objetivos__`
---
-
-DROP TABLE IF EXISTS `Objetivos__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Objetivos__` (
- `Periodo` int(11) NOT NULL,
- `Objetivo` double NOT NULL,
- PRIMARY KEY (`Periodo`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Deprecated 27-02-2023';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Ordenes`
--
@@ -81786,7 +82041,6 @@ SET character_set_client = utf8;
1 AS `datORDEN`,
1 AS `datTICKET`,
1 AS `CodVENDEDOR`,
- 1 AS `CodCOMPRADOR`,
1 AS `Id_CLIENTE`,
1 AS `TOTAL`,
1 AS `datCOMPRA` */;
@@ -81843,26 +82097,6 @@ SET character_set_client = utf8;
1 AS `hasDailyInvoice` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Permisos__`
---
-
-DROP TABLE IF EXISTS `Permisos__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Permisos__` (
- `Id_Grupo` int(10) unsigned NOT NULL,
- `Id_Trabajador` int(10) unsigned NOT NULL,
- `empresa_id` int(10) unsigned NOT NULL DEFAULT 442,
- PRIMARY KEY (`Id_Grupo`,`Id_Trabajador`),
- KEY `empresa_id` (`empresa_id`),
- KEY `Permisos_ibfk_3_idx` (`Id_Trabajador`),
- CONSTRAINT `PermisosCompany_Fk` FOREIGN KEY (`empresa_id`) REFERENCES `vn`.`company` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `Permisos___ibfk_2` FOREIGN KEY (`Id_Grupo`) REFERENCES `Grupos__` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `Permisos___ibfk_3` FOREIGN KEY (`Id_Trabajador`) REFERENCES `vn`.`worker` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `PreciosEspeciales`
--
@@ -81892,7 +82126,6 @@ SET character_set_client = utf8;
1 AS `cuenta`,
1 AS `pais_id`,
1 AS `NIF`,
- 1 AS `Agricola`,
1 AS `Telefono`,
1 AS `cuentaret`,
1 AS `ComisionProveedor`,
@@ -81932,41 +82165,6 @@ SET character_set_client = utf8;
1 AS `Id_Proveedor` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Proveedores_comunicados__`
---
-
-DROP TABLE IF EXISTS `Proveedores_comunicados__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Proveedores_comunicados__` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `Id_Proveedor` int(10) unsigned NOT NULL,
- `escrito_id` int(11) NOT NULL,
- `fecha` timestamp NULL DEFAULT current_timestamp(),
- PRIMARY KEY (`id`),
- KEY `Proveedor` (`Id_Proveedor`),
- KEY `Escrito` (`escrito_id`),
- CONSTRAINT `Proveedores_comunicados___ibfk_4` FOREIGN KEY (`escrito_id`) REFERENCES `Proveedores_escritos__` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `Proveedores_comunicados_supplierFk` FOREIGN KEY (`Id_Proveedor`) REFERENCES `vn`.`supplier` (`id`) ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `Proveedores_escritos__`
---
-
-DROP TABLE IF EXISTS `Proveedores_escritos__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Proveedores_escritos__` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `escrito` varchar(45) NOT NULL,
- `informe` varchar(45) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Proveedores_gestdoc`
--
@@ -82001,21 +82199,6 @@ SET character_set_client = utf8;
1 AS `conciliado` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Recibos_recorded__`
---
-
-DROP TABLE IF EXISTS `Recibos_recorded__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Recibos_recorded__` (
- `Id_Recibos` int(11) NOT NULL,
- `recorded` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'Marcado si se ha contabilizado',
- PRIMARY KEY (`Id_Recibos`),
- CONSTRAINT `Recibos_recorded___ibfk_1` FOREIGN KEY (`Id_Recibos`) REFERENCES `vn`.`receipt` (`Id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Deprecated 27-02-2023';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Remesas`
--
@@ -82031,34 +82214,6 @@ SET character_set_client = utf8;
1 AS `empresa_id` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Reservas__`
---
-
-DROP TABLE IF EXISTS `Reservas__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Reservas__` (
- `Id_Reserva` int(11) NOT NULL AUTO_INCREMENT,
- `Id_Ticket` int(11) DEFAULT 0,
- `Fecha` datetime DEFAULT NULL,
- `Alias` varchar(50) DEFAULT NULL,
- `article` varchar(50) DEFAULT NULL,
- `medida` varchar(50) DEFAULT NULL,
- `categoria` varchar(50) DEFAULT NULL,
- `color` varchar(50) DEFAULT NULL,
- `origen` varchar(50) DEFAULT NULL,
- `cantidad` int(11) DEFAULT 0,
- `Id_Article` double DEFAULT 0,
- `buyFk` int(11) NOT NULL,
- `grouping` int(11) DEFAULT NULL,
- `packing` int(11) DEFAULT NULL,
- PRIMARY KEY (`Id_Reserva`),
- KEY `Id_1` (`Id_Ticket`),
- KEY `Id_Article` (`Id_Article`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='Deprecated 27-02-2023';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Rutas`
--
@@ -82102,21 +82257,6 @@ SET character_set_client = utf8;
1 AS `empresa_id` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Series__`
---
-
-DROP TABLE IF EXISTS `Series__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Series__` (
- `Id_Serie` varchar(2) NOT NULL,
- `Serie` varchar(30) DEFAULT NULL,
- `Cuenta` varchar(10) DEFAULT NULL,
- PRIMARY KEY (`Id_Serie`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Split_lines`
--
@@ -82188,22 +82328,6 @@ SET character_set_client = utf8;
1 AS `totalWithoutVat` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Tickets_stack__`
---
-
-DROP TABLE IF EXISTS `Tickets_stack__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Tickets_stack__` (
- `Id_Ticket` int(11) NOT NULL,
- `orden` smallint(5) unsigned NOT NULL,
- `label_number` smallint(6) DEFAULT 0,
- `preparado` tinyint(4) DEFAULT 0,
- PRIMARY KEY (`Id_Ticket`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Tickets_state`
--
@@ -82278,20 +82402,6 @@ SET character_set_client = utf8;
1 AS `profit` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `Tipos_f11__`
---
-
-DROP TABLE IF EXISTS `Tipos_f11__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `Tipos_f11__` (
- `f11_id` tinyint(4) NOT NULL AUTO_INCREMENT,
- `description` varchar(15) NOT NULL,
- PRIMARY KEY (`f11_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `Trabajadores`
--
@@ -82381,21 +82491,6 @@ SET character_set_client = utf8;
1 AS `gasoline` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `accion_dits__`
---
-
-DROP TABLE IF EXISTS `accion_dits__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `accion_dits__` (
- `idaccion_dits` int(11) NOT NULL AUTO_INCREMENT,
- `accion` varchar(255) DEFAULT NULL,
- PRIMARY KEY (`idaccion_dits`),
- UNIQUE KEY `accion_UNIQUE` (`accion`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `account_conciliacion`
--
@@ -82444,24 +82539,6 @@ SET character_set_client = utf8;
1 AS `description` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `agencia_descuadre__`
---
-
-DROP TABLE IF EXISTS `agencia_descuadre__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `agencia_descuadre__` (
- `agencia_descuadre_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `Id_Ticket` int(11) NOT NULL,
- `date` date NOT NULL,
- `price` double(7,2) NOT NULL,
- `Consignatario` varchar(50) NOT NULL,
- `Tipo` varchar(30) NOT NULL,
- PRIMARY KEY (`agencia_descuadre_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `agency`
--
@@ -82478,50 +82555,6 @@ SET character_set_client = utf8;
1 AS `workCenterFk` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `agency_hour__`
---
-
-DROP TABLE IF EXISTS `agency_hour__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `agency_hour__` (
- `agency_hour_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
- `week_day` tinyint(3) unsigned DEFAULT NULL COMMENT 'funcion de mysql Lunes = 0, Domingo = 6',
- `agency_id` smallint(5) unsigned DEFAULT NULL,
- `warehouse_id` smallint(5) unsigned DEFAULT NULL,
- `province_id` smallint(5) unsigned DEFAULT NULL,
- `subtract_day` tinyint(10) unsigned NOT NULL COMMENT 'dias a restar de la Fecha de entrega',
- `max_hour` tinyint(3) unsigned NOT NULL COMMENT 'maxima hora hasta la cual se pueden hacer pedidos',
- PRIMARY KEY (`agency_hour_id`),
- UNIQUE KEY `week_day` (`week_day`,`agency_id`,`warehouse_id`,`province_id`,`max_hour`),
- KEY `agency_id` (`agency_id`),
- KEY `warehouse_id` (`warehouse_id`),
- KEY `province_id` (`province_id`),
- CONSTRAINT `agency_hour___ibfk_1` FOREIGN KEY (`agency_id`) REFERENCES `vn`.`agency` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `agency_hour___ibfk_2` FOREIGN KEY (`warehouse_id`) REFERENCES `vn`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `agency_hour___ibfk_3` FOREIGN KEY (`province_id`) REFERENCES `vn`.`province` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `agency_warehouse__`
---
-
-DROP TABLE IF EXISTS `agency_warehouse__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `agency_warehouse__` (
- `agency_id` smallint(5) unsigned NOT NULL,
- `warehouse_id` smallint(5) unsigned NOT NULL DEFAULT 1,
- `Vista` tinyint(3) unsigned NOT NULL DEFAULT 0,
- PRIMARY KEY (`agency_id`,`warehouse_id`),
- KEY `warehouse_id` (`warehouse_id`),
- CONSTRAINT `agency_warehouse___ibfk_1` FOREIGN KEY (`agency_id`) REFERENCES `vn`.`agency` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `agency_warehouse___ibfk_2` FOREIGN KEY (`warehouse_id`) REFERENCES `vn`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `airline`
--
@@ -82570,8 +82603,7 @@ SET character_set_client = utf8;
1 AS `Id_Trabajador`,
1 AS `Id_Responsable`,
1 AS `department_id`,
- 1 AS `recibida_id`,
- 1 AS `farmingFk` */;
+ 1 AS `recibida_id` */;
SET character_set_client = @saved_cs_client;
--
@@ -82937,37 +82969,6 @@ SET character_set_client = utf8;
1 AS `description` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `call_information__`
---
-
-DROP TABLE IF EXISTS `call_information__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `call_information__` (
- `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
- `Descripcio` text NOT NULL,
- `Conclusio` tinyint(3) unsigned NOT NULL,
- `Id_Cliente` int(11) NOT NULL,
- `fecha` date NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `call_option__`
---
-
-DROP TABLE IF EXISTS `call_option__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `call_option__` (
- `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
- `descripcion` varchar(20) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `cdr`
--
@@ -83057,20 +83058,6 @@ SET character_set_client = utf8;
1 AS `consecuencia` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `cl_dep__`
---
-
-DROP TABLE IF EXISTS `cl_dep__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `cl_dep__` (
- `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
- `departamento` varchar(20) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `cl_det`
--
@@ -83120,34 +83107,6 @@ SET character_set_client = utf8;
1 AS `motivo` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `cl_pet__`
---
-
-DROP TABLE IF EXISTS `cl_pet__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `cl_pet__` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `peticion` varchar(15) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `cl_que__`
---
-
-DROP TABLE IF EXISTS `cl_que__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `cl_que__` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `queja` varchar(25) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `cl_res`
--
@@ -83176,39 +83135,6 @@ SET character_set_client = utf8;
1 AS `addressFk` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `commission__`
---
-
-DROP TABLE IF EXISTS `commission__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `commission__` (
- `commisision_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
- `percentage` tinyint(3) unsigned NOT NULL,
- `value` float unsigned NOT NULL,
- PRIMARY KEY (`commisision_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `config__`
---
-
-DROP TABLE IF EXISTS `config__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `config__` (
- `id` int(11) NOT NULL,
- `generic_item` int(11) NOT NULL COMMENT 'Id del artículo genérico',
- `edi_entry` int(11) NOT NULL COMMENT 'Entrada usada para los EKTs',
- `lastMana` int(11) NOT NULL DEFAULT 0,
- `lastNicho` varchar(10) DEFAULT NULL,
- `lastReserve` varchar(10) DEFAULT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `config_host`
--
@@ -83227,26 +83153,6 @@ SET character_set_client = utf8;
1 AS `route_days_after` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `config_host_forms__`
---
-
-DROP TABLE IF EXISTS `config_host_forms__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `config_host_forms__` (
- `config_host_id` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
- `formname` varchar(56) NOT NULL,
- `x` int(8) NOT NULL,
- `y` int(8) NOT NULL,
- `h` int(8) NOT NULL,
- `l` int(8) NOT NULL,
- `odbc_date` timestamp NULL DEFAULT current_timestamp(),
- PRIMARY KEY (`config_host_id`,`formname`),
- CONSTRAINT `config_host_forms_FK` FOREIGN KEY (`config_host_id`) REFERENCES `vn`.`host` (`code`) ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `consignatarios_observation`
--
@@ -83262,51 +83168,6 @@ SET character_set_client = utf8;
1 AS `text` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `container__`
---
-
-DROP TABLE IF EXISTS `container__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `container__` (
- `container_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
- `Continente` varchar(10) DEFAULT NULL,
- PRIMARY KEY (`container_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `cooler_path__`
---
-
-DROP TABLE IF EXISTS `cooler_path__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `cooler_path__` (
- `cooler_path_id` int(11) NOT NULL AUTO_INCREMENT,
- `description` varchar(45) DEFAULT NULL,
- PRIMARY KEY (`cooler_path_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `cp__`
---
-
-DROP TABLE IF EXISTS `cp__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `cp__` (
- `cp_id` int(11) NOT NULL AUTO_INCREMENT,
- `cpd` int(11) NOT NULL,
- `cph` int(11) NOT NULL,
- `zone_id` smallint(6) DEFAULT NULL,
- `town` varchar(45) NOT NULL,
- PRIMARY KEY (`cp_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `credit`
--
@@ -83323,62 +83184,6 @@ SET character_set_client = utf8;
1 AS `odbc_date` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `credit_card__`
---
-
-DROP TABLE IF EXISTS `credit_card__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `credit_card__` (
- `credit_card_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
- `Id_Cliente` int(10) NOT NULL,
- `number` varchar(20) NOT NULL,
- `expiration_month` tinyint(2) unsigned zerofill NOT NULL,
- `expiration_year` tinyint(2) unsigned zerofill NOT NULL,
- `priority` tinyint(3) unsigned NOT NULL DEFAULT 1,
- `obs` varchar(45) DEFAULT NULL,
- PRIMARY KEY (`credit_card_id`),
- KEY `Id_Cliente` (`Id_Cliente`),
- CONSTRAINT `credit_card___ibfk_1` FOREIGN KEY (`Id_Cliente`) REFERENCES `vn`.`client` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `cyc__`
---
-
-DROP TABLE IF EXISTS `cyc__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `cyc__` (
- `Id_Cliente` int(11) NOT NULL,
- `Riesgo` double DEFAULT NULL,
- `Fecha` timestamp NOT NULL DEFAULT current_timestamp(),
- `cyc_id` int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (`cyc_id`),
- KEY `Cliente` (`Id_Cliente`),
- CONSTRAINT `Cliente` FOREIGN KEY (`Id_Cliente`) REFERENCES `vn`.`client` (`id`) ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `cyc_declaration__`
---
-
-DROP TABLE IF EXISTS `cyc_declaration__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `cyc_declaration__` (
- `factura_id` int(10) unsigned NOT NULL,
- `Riesgo` double DEFAULT NULL,
- `Fecha` date NOT NULL,
- `Vencimiento` int(10) NOT NULL DEFAULT 0,
- PRIMARY KEY (`factura_id`),
- CONSTRAINT `Factura` FOREIGN KEY (`factura_id`) REFERENCES `vn`.`invoiceOut` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `definitivo`
--
@@ -83395,37 +83200,6 @@ SET character_set_client = utf8;
1 AS `fecha` */;
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__` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `code` varchar(5) NOT NULL,
- `xPos` int(11) DEFAULT NULL,
- `yPos` int(11) DEFAULT NULL,
- PRIMARY KEY (`id`),
- UNIQUE KEY `code_UNIQUE` (`code`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-03-05';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `duaDismissed__`
---
-
-DROP TABLE IF EXISTS `duaDismissed__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `duaDismissed__` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `ticketFk` varchar(45) NOT NULL,
- PRIMARY KEY (`id`,`ticketFk`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `edi_article`
--
@@ -83511,36 +83285,6 @@ SET character_set_client = utf8;
1 AS `company_name` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `edi_testigos__`
---
-
-DROP TABLE IF EXISTS `edi_testigos__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `edi_testigos__` (
- `id` smallint(6) NOT NULL AUTO_INCREMENT,
- `table` varchar(25) NOT NULL,
- `field` varchar(32) NOT NULL,
- `testigo` varchar(5) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `emp_day_pay__`
---
-
-DROP TABLE IF EXISTS `emp_day_pay__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `emp_day_pay__` (
- `id` smallint(5) unsigned NOT NULL,
- `emp_day_pay` tinyint(3) unsigned NOT NULL,
- PRIMARY KEY (`id`,`emp_day_pay`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `empresa`
--
@@ -83625,65 +83369,6 @@ SET character_set_client = utf8;
1 AS `observationWorkerCode` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `expeditions_deleted__`
---
-
-DROP TABLE IF EXISTS `expeditions_deleted__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `expeditions_deleted__` (
- `expeditions_id` int(11) NOT NULL AUTO_INCREMENT,
- `agency_id` int(11) NOT NULL,
- `ticket_id` int(10) NOT NULL,
- `EsBulto` int(11) DEFAULT 1,
- `odbc_date` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `reembolso` bit(1) DEFAULT b'0',
- `recogida` bit(1) DEFAULT b'0',
- `Id_Article` int(11) DEFAULT NULL,
- `counter` smallint(5) unsigned NOT NULL,
- `checked` tinyint(4) NOT NULL DEFAULT 0,
- `completed` tinyint(4) DEFAULT 0,
- `expedicion` varchar(45) DEFAULT NULL,
- `Id_Trabajador` int(11) DEFAULT NULL,
- PRIMARY KEY (`expeditions_id`),
- KEY `index1` (`agency_id`),
- KEY `index2` (`EsBulto`),
- KEY `index3` (`odbc_date`),
- KEY `index4` (`ticket_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `expeditions_pictures__`
---
-
-DROP TABLE IF EXISTS `expeditions_pictures__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `expeditions_pictures__` (
- `Id_Article` int(11) NOT NULL,
- `NoImprimirEtiqueta` bit(1) DEFAULT b'0',
- PRIMARY KEY (`Id_Article`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6371 deprecated 2024-01-11';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `filtros__`
---
-
-DROP TABLE IF EXISTS `filtros__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `filtros__` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `name` varchar(45) NOT NULL,
- `sql` varchar(255) NOT NULL,
- `Estanteria` tinyint(1) DEFAULT 0,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-21;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `financialProductType`
--
@@ -83716,23 +83401,6 @@ SET character_set_client = utf8;
1 AS `airport_in` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `form_query__`
---
-
-DROP TABLE IF EXISTS `form_query__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `form_query__` (
- `form_query_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
- `query` varchar(50) NOT NULL,
- `response1` varchar(10) NOT NULL,
- `response2` varchar(10) NOT NULL,
- `type_id` enum('gest_doc') NOT NULL,
- PRIMARY KEY (`form_query_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-21;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `gastos_resumen`
--
@@ -83750,38 +83418,6 @@ SET character_set_client = utf8;
1 AS `empresa_id` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `guillen__`
---
-
-DROP TABLE IF EXISTS `guillen__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `guillen__` (
- `bulto` tinyint(3) unsigned NOT NULL,
- `1` float unsigned NOT NULL,
- `2` float unsigned NOT NULL,
- `re_exp` float unsigned NOT NULL,
- PRIMARY KEY (`bulto`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `guillen_carry__`
---
-
-DROP TABLE IF EXISTS `guillen_carry__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `guillen_carry__` (
- `carry` tinyint(3) unsigned NOT NULL,
- `1` float unsigned NOT NULL,
- `2` float unsigned NOT NULL,
- `re_exp` float unsigned NOT NULL,
- PRIMARY KEY (`carry`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `integra2`
--
@@ -83796,23 +83432,6 @@ SET character_set_client = utf8;
1 AS `warehouse_id` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `integra2_escala__`
---
-
-DROP TABLE IF EXISTS `integra2_escala__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `integra2_escala__` (
- `province_id` smallint(6) unsigned NOT NULL,
- `warehouse_id` smallint(6) unsigned NOT NULL,
- PRIMARY KEY (`province_id`,`warehouse_id`),
- KEY `warehouse_escala_idx` (`warehouse_id`),
- CONSTRAINT `province_escala` FOREIGN KEY (`province_id`) REFERENCES `vn`.`province` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `warehouse_escala` FOREIGN KEY (`warehouse_id`) REFERENCES `vn`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `integra2_province`
--
@@ -83826,72 +83445,6 @@ SET character_set_client = utf8;
1 AS `franquicia` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `invoice_observation__`
---
-
-DROP TABLE IF EXISTS `invoice_observation__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `invoice_observation__` (
- `invoice_observation_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
- `desde` date NOT NULL,
- `hasta` date NOT NULL,
- `serie` varchar(1) NOT NULL DEFAULT '0',
- `empresa_id` smallint(5) unsigned NOT NULL DEFAULT 0,
- `text` text NOT NULL,
- PRIMARY KEY (`invoice_observation_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `jerarquia`
---
-
-DROP TABLE IF EXISTS `jerarquia`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `jerarquia` (
- `worker_id` int(10) unsigned NOT NULL,
- `boss_id` int(10) unsigned NOT NULL,
- `vinculado` tinyint(3) unsigned NOT NULL DEFAULT 0,
- PRIMARY KEY (`worker_id`,`boss_id`),
- KEY `worker_trabajador` (`worker_id`),
- KEY `jerarquiaBossFk_idx` (`boss_id`),
- CONSTRAINT `jerarquiaBossFk` FOREIGN KEY (`boss_id`) REFERENCES `account`.`account` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `jerarquiaWorkerFk` FOREIGN KEY (`worker_id`) REFERENCES `account`.`account` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `language__`
---
-
-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) NOT NULL,
- `name` varchar(20) NOT NULL,
- `active` tinyint(1) NOT NULL DEFAULT 0,
- PRIMARY KEY (`code`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `link__`
---
-
-DROP TABLE IF EXISTS `link__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `link__` (
- `Id_Cliente` int(11) NOT NULL,
- `Id_Proveedor` int(11) NOT NULL,
- PRIMARY KEY (`Id_Cliente`,`Id_Proveedor`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `mail`
--
@@ -83946,19 +83499,6 @@ SET character_set_client = utf8;
1 AS `Nombre` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `nichos__`
---
-
-DROP TABLE IF EXISTS `nichos__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `nichos__` (
- `id` varchar(5) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `pago`
--
@@ -84050,45 +83590,6 @@ SET character_set_client = utf8;
1 AS `isNotified` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `payroll_basess__`
---
-
-DROP TABLE IF EXISTS `payroll_basess__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `payroll_basess__` (
- `id_payroll_Basess` int(11) NOT NULL AUTO_INCREMENT,
- `empresa_id` int(10) NOT NULL,
- `id_tipobasess` int(11) NOT NULL,
- `valor` double NOT NULL,
- `fechadesde` date NOT NULL,
- `fechahasta` date DEFAULT NULL,
- `contratotemporal` tinyint(1) DEFAULT 0,
- PRIMARY KEY (`id_payroll_Basess`),
- KEY `payroll_basess_1_idx` (`id_tipobasess`),
- KEY `payroll_basess_2_idx` (`empresa_id`),
- CONSTRAINT `payroll_basess_1` FOREIGN KEY (`id_tipobasess`) REFERENCES `payroll_tipobasess__` (`id_payroll_tipobasess`) ON DELETE NO ACTION ON UPDATE CASCADE,
- CONSTRAINT `payroll_basess_2` FOREIGN KEY (`empresa_id`) REFERENCES `vn`.`payrollWorkCenter` (`empresa_id__`) ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `payroll_bonificaciones__`
---
-
-DROP TABLE IF EXISTS `payroll_bonificaciones__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `payroll_bonificaciones__` (
- `codtrabajador` int(11) NOT NULL,
- `codempresa` int(11) NOT NULL,
- `Fecha` date NOT NULL,
- `bonificacionSS` double NOT NULL,
- PRIMARY KEY (`codtrabajador`,`codempresa`,`Fecha`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `payroll_categorias`
--
@@ -84132,49 +83633,6 @@ SET character_set_client = utf8;
1 AS `isException` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `payroll_datos__`
---
-
-DROP TABLE IF EXISTS `payroll_datos__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `payroll_datos__` (
- `codtrabajador` int(11) NOT NULL,
- `codempresa` int(10) NOT NULL,
- `Fecha` date NOT NULL,
- `conceptoid` int(11) NOT NULL,
- `orden` tinyint(4) DEFAULT NULL,
- `dias` smallint(6) DEFAULT NULL,
- `Importe` decimal(8,2) NOT NULL,
- `DH` tinyint(4) DEFAULT NULL,
- `T_Paga` tinyint(4) NOT NULL,
- `TributaIRPF` tinyint(4) NOT NULL,
- PRIMARY KEY (`codtrabajador`,`codempresa`,`conceptoid`,`Fecha`),
- KEY `fgkey_payrolldatos_1_idx` (`conceptoid`),
- CONSTRAINT `fgkey_payrolldatos_1` FOREIGN KEY (`conceptoid`) REFERENCES `vn`.`payrollComponent` (`id`) ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `payroll_embargos__`
---
-
-DROP TABLE IF EXISTS `payroll_embargos__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `payroll_embargos__` (
- `codtrabajador` int(11) NOT NULL,
- `codempresa` int(10) NOT NULL,
- `conceptoid` int(11) NOT NULL,
- `Fecha` date NOT NULL,
- `pagado` double NOT NULL,
- `pendiente` double DEFAULT NULL,
- `total` double NOT NULL,
- PRIMARY KEY (`codtrabajador`,`codempresa`,`Fecha`,`conceptoid`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `payroll_employee`
--
@@ -84189,41 +83647,6 @@ SET character_set_client = utf8;
1 AS `workerFk` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `payroll_tipobasess__`
---
-
-DROP TABLE IF EXISTS `payroll_tipobasess__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `payroll_tipobasess__` (
- `id_payroll_tipobasess` int(11) NOT NULL AUTO_INCREMENT,
- `name` varchar(255) DEFAULT NULL,
- PRIMARY KEY (`id_payroll_tipobasess`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `payrroll_apEmpresarial__`
---
-
-DROP TABLE IF EXISTS `payrroll_apEmpresarial__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `payrroll_apEmpresarial__` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `codTrabajador` int(11) NOT NULL,
- `Fecha` date NOT NULL,
- `CosteEmpresaAT` decimal(8,2) NOT NULL,
- `costeEmpresaCC` decimal(8,2) NOT NULL,
- `costeEmpresaDesempleo` decimal(8,2) NOT NULL,
- `costeEmpresaFP` decimal(8,2) NOT NULL,
- `costeEmpresaFogasa` decimal(8,2) NOT NULL,
- `costeEmpresaExtra` decimal(8,2) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `plantpassport`
--
@@ -84253,22 +83676,6 @@ SET character_set_client = utf8;
1 AS `Paises_Id` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `preparation_exception__`
---
-
-DROP TABLE IF EXISTS `preparation_exception__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `preparation_exception__` (
- `exception_day` date NOT NULL COMMENT 'preparation day',
- `warehouse_id` smallint(6) unsigned DEFAULT NULL,
- `percentage` tinyint(2) NOT NULL DEFAULT 0,
- UNIQUE KEY `exception_day_UNIQUE` (`exception_day`),
- UNIQUE KEY `warehouse_id_UNIQUE` (`warehouse_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `price_fixed`
--
@@ -84340,22 +83747,6 @@ SET character_set_client = utf8;
1 AS `geoFk` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `rec_translator__`
---
-
-DROP TABLE IF EXISTS `rec_translator__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `rec_translator__` (
- `Id_Article` int(11) NOT NULL,
- `denominacion` varchar(85) NOT NULL,
- PRIMARY KEY (`Id_Article`,`denominacion`),
- KEY `id_article_rec_idx` (`Id_Article`),
- CONSTRAINT `id_article_rec` FOREIGN KEY (`Id_Article`) REFERENCES `vn`.`item` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `recibida`
--
@@ -84389,21 +83780,6 @@ SET character_set_client = utf8;
1 AS `expenseFkDeductible` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `recibida_agricola__`
---
-
-DROP TABLE IF EXISTS `recibida_agricola__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `recibida_agricola__` (
- `recibida_id` mediumint(8) unsigned NOT NULL,
- `num` smallint(5) unsigned NOT NULL,
- PRIMARY KEY (`recibida_id`),
- CONSTRAINT `recibida_agricola___ibfk_1` FOREIGN KEY (`recibida_id`) REFERENCES `vn`.`invoiceIn` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `recibida_intrastat`
--
@@ -84506,150 +83882,6 @@ SET character_set_client = utf8;
1 AS `efimero` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `rounding__`
---
-
-DROP TABLE IF EXISTS `rounding__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `rounding__` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `amount` double NOT NULL DEFAULT 0,
- `price` double DEFAULT 0,
- `discount` double NOT NULL DEFAULT 0,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `route__`
---
-
-DROP TABLE IF EXISTS `route__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `route__` (
- `agency_id` smallint(5) unsigned NOT NULL,
- `week_day` tinyint(3) unsigned NOT NULL COMMENT 'weekday de access el domingo = 1, sabado = 7. Intentar cambiar al de Mysql Lunes = 0',
- PRIMARY KEY (`agency_id`,`week_day`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `scanTree__`
---
-
-DROP TABLE IF EXISTS `scanTree__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `scanTree__` (
- `id` int(11) NOT NULL DEFAULT 0,
- `name` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
- `lft` int(11) NOT NULL,
- `rgt` int(11) NOT NULL,
- `depth` bigint(22) NOT NULL DEFAULT 0,
- `sons` int(11) DEFAULT 0,
- `lastScanned` datetime DEFAULT NULL,
- `routeCount` int(11) DEFAULT NULL,
- `minRoute` int(11) DEFAULT NULL,
- `maxRoute` int(11) DEFAULT NULL,
- `scanned` int(11) DEFAULT NULL,
- PRIMARY KEY (`id`),
- KEY `lft_rgt_depth` (`lft`,`rgt`,`depth`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `scan__`
---
-
-DROP TABLE IF EXISTS `scan__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `scan__` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `lft` int(11) NOT NULL,
- `rgt` int(11) NOT NULL,
- `name` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
- `odbc_date` timestamp NOT NULL DEFAULT current_timestamp(),
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `scan_line__`
---
-
-DROP TABLE IF EXISTS `scan_line__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `scan_line__` (
- `scan_line_id` int(11) NOT NULL AUTO_INCREMENT,
- `scan_id` int(11) NOT NULL,
- `code` varchar(45) NOT NULL,
- `odbc_date` timestamp NOT NULL DEFAULT current_timestamp(),
- PRIMARY KEY (`scan_line_id`),
- KEY `id_scan_id_idx` (`scan_id`),
- CONSTRAINT `id_scan_id` FOREIGN KEY (`scan_id`) REFERENCES `scan__` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `sort_merge_results_ernesto__`
---
-
-DROP TABLE IF EXISTS `sort_merge_results_ernesto__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `sort_merge_results_ernesto__` (
- `hora` datetime NOT NULL,
- `uptime` int(11) DEFAULT NULL,
- `log_output` varchar(5) DEFAULT NULL,
- `uptime_since_flush` int(11) DEFAULT NULL,
- `smp_old` int(11) DEFAULT NULL,
- `smp_new` int(11) DEFAULT NULL,
- `smp` int(11) DEFAULT NULL,
- `smp_hour` int(11) DEFAULT NULL,
- `connections` int(11) DEFAULT NULL,
- `Threads_created` int(11) DEFAULT NULL,
- `Threads_cached` int(11) DEFAULT NULL,
- `Thread_cache_size` int(11) DEFAULT NULL,
- `comment` varchar(255) DEFAULT NULL,
- `TABLE_OPEN_CACHE_OVERFLOWS` int(11) DEFAULT NULL,
- `TABLE_OPEN_CACHE_MISSES` int(11) DEFAULT NULL,
- `TABLE_OPEN_CACHE_HITS` int(11) DEFAULT NULL,
- `table_open_cache` int(11) DEFAULT NULL,
- `table_open_cache_instances` int(11) DEFAULT NULL,
- `open_tables` int(11) DEFAULT NULL,
- `opened_tables` int(11) DEFAULT NULL,
- `Innodb_os_log_written` double DEFAULT NULL,
- `table_definition_cache` int(11) DEFAULT NULL,
- `Open_table_definitions` int(11) DEFAULT NULL,
- `sort_buffer_size` int(11) DEFAULT NULL,
- `join_buffer_size` int(11) DEFAULT NULL,
- `read_rnd_buffer_size` int(11) DEFAULT NULL,
- `tmp_table_size` int(11) DEFAULT NULL,
- `max_heap_table_size` int(11) DEFAULT NULL,
- `created_tmp_disk_tables` int(11) DEFAULT NULL,
- `created_tmp_tables` int(11) DEFAULT NULL,
- `Created_tmp_files` int(11) DEFAULT NULL,
- `OpenTablesxUptimeDivOpened` float DEFAULT NULL,
- `innodb_open_files` int(11) DEFAULT NULL,
- `Innodb_num_open_files` int(11) DEFAULT NULL,
- `open_files_limit` int(11) DEFAULT NULL,
- `query_cache_size` int(11) DEFAULT NULL,
- `query_cache_type` varchar(3) DEFAULT NULL,
- `trx_rseg_history_len` int(11) DEFAULT NULL,
- `Qcache_hits` int(11) DEFAULT NULL,
- `Qcache_inserts` int(11) DEFAULT NULL,
- `Qcache_not_cached` int(11) DEFAULT NULL,
- PRIMARY KEY (`hora`),
- UNIQUE KEY `hora_UNIQUE` (`hora`),
- KEY `uptime` (`uptime`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `state`
--
@@ -84764,78 +83996,6 @@ SET character_set_client = utf8;
1 AS `ASIEN` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `tblIVA__`
---
-
-DROP TABLE IF EXISTS `tblIVA__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `tblIVA__` (
- `tipoiva` varchar(50) NOT NULL,
- `iva` smallint(6) NOT NULL DEFAULT 0,
- `cuenta` double DEFAULT 0,
- `cuentaRE` double DEFAULT 0,
- `cuentaivaRE` double DEFAULT 0,
- `REQ` double DEFAULT 0,
- PRIMARY KEY (`tipoiva`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `template_bionic_component__`
---
-
-DROP TABLE IF EXISTS `template_bionic_component__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `template_bionic_component__` (
- `warehouse_id` smallint(5) unsigned NOT NULL,
- `item_id` int(11) NOT NULL,
- `component_id` int(10) unsigned NOT NULL,
- `cost` decimal(10,4) NOT NULL,
- UNIQUE KEY `item_warehouse_component` (`item_id`,`warehouse_id`,`component_id`) USING HASH,
- KEY `item_warehouse` (`item_id`,`warehouse_id`) USING BTREE
-) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `template_bionic_lot__`
---
-
-DROP TABLE IF EXISTS `template_bionic_lot__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `template_bionic_lot__` (
- `warehouse_id` smallint(5) unsigned NOT NULL,
- `item_id` int(11) NOT NULL,
- `available` double DEFAULT NULL,
- `buy_id` int(11) DEFAULT NULL,
- `fix` tinyint(3) unsigned DEFAULT 0,
- UNIQUE KEY `warehouse_id` (`warehouse_id`,`item_id`),
- KEY `item_id` (`item_id`)
-) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `template_bionic_price__`
---
-
-DROP TABLE IF EXISTS `template_bionic_price__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `template_bionic_price__` (
- `warehouse_id` smallint(5) unsigned NOT NULL,
- `item_id` int(11) NOT NULL,
- `rate` tinyint(3) unsigned NOT NULL,
- `items` int(11) DEFAULT NULL,
- `grouping` int(11) DEFAULT NULL,
- `price` decimal(10,2) DEFAULT NULL,
- UNIQUE KEY `warehouse_id` (`warehouse_id`,`item_id`,`rate`),
- KEY `item_id` (`item_id`) USING BTREE
-) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `thermograph`
--
@@ -84895,52 +84055,6 @@ SET character_set_client = utf8;
1 AS `yearMonth` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `tipsa__`
---
-
-DROP TABLE IF EXISTS `tipsa__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `tipsa__` (
- `kilos` tinyint(3) unsigned NOT NULL,
- `importe` double unsigned NOT NULL,
- `zona` tinyint(3) unsigned NOT NULL,
- PRIMARY KEY (`kilos`,`zona`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `tmpNEWTARIFAS__`
---
-
-DROP TABLE IF EXISTS `tmpNEWTARIFAS__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `tmpNEWTARIFAS__` (
- `Id_Cliente` int(11) NOT NULL,
- `Cliente` varchar(50) NOT NULL,
- `Consumo_medio_mensual` double(17,0) DEFAULT NULL,
- `Tarifa_Actual` int(11) DEFAULT 0,
- `Nueva_Tarifa` int(11) DEFAULT NULL,
- `Id_Trabajador` int(11) DEFAULT 20,
- PRIMARY KEY (`Id_Cliente`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `transport__`
---
-
-DROP TABLE IF EXISTS `transport__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `transport__` (
- `wday` tinyint(4) NOT NULL,
- PRIMARY KEY (`wday`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `travel`
--
@@ -84969,196 +84083,6 @@ SET character_set_client = utf8;
1 AS `awbFk` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `travel_pattern__`
---
-
-DROP TABLE IF EXISTS `travel_pattern__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `travel_pattern__` (
- `travel_pattern_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
- `week_start` tinyint(3) unsigned NOT NULL,
- `week_end` tinyint(3) unsigned NOT NULL,
- `warehouse_out` smallint(5) unsigned NOT NULL,
- `warehouse_in` smallint(5) unsigned NOT NULL,
- `agency_id` int(11) NOT NULL,
- `day_out` tinyint(3) unsigned NOT NULL,
- `duration` tinyint(3) unsigned NOT NULL,
- `ref` varchar(20) NOT NULL,
- `cargoSupplierFk` int(10) unsigned DEFAULT NULL,
- `kg` decimal(10,0) unsigned DEFAULT NULL,
- `travelFk` int(10) unsigned DEFAULT NULL COMMENT 'travel origen para clonar ademas sus entradas',
- PRIMARY KEY (`travel_pattern_id`),
- KEY `warehouse_out` (`warehouse_out`),
- KEY `warehouse_in` (`warehouse_in`),
- KEY `agency_id` (`agency_id`),
- KEY `travel_pattern_ibfk_6_idx` (`cargoSupplierFk`),
- KEY `travel_pattern_FK` (`travelFk`),
- CONSTRAINT `travel_pattern_FK` FOREIGN KEY (`travelFk`) REFERENCES `vn`.`travel` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `travel_pattern___ibfk_3` FOREIGN KEY (`warehouse_out`) REFERENCES `vn`.`warehouse` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `travel_pattern___ibfk_4` FOREIGN KEY (`agency_id`) REFERENCES `vn`.`agencyMode` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `travel_pattern___ibfk_5` FOREIGN KEY (`warehouse_in`) REFERENCES `vn`.`warehouse` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `travel_pattern_supplierFk` FOREIGN KEY (`cargoSupplierFk`) REFERENCES `vn`.`supplier` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `travel_reserve__`
---
-
-DROP TABLE IF EXISTS `travel_reserve__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `travel_reserve__` (
- `travel_reserve_id` int(11) NOT NULL AUTO_INCREMENT,
- `travel_id` int(11) unsigned NOT NULL,
- `Id_Trabajador` int(11) NOT NULL,
- `reserved` decimal(4,1) DEFAULT NULL,
- `buyed` decimal(4,1) DEFAULT NULL,
- `askingfor` decimal(4,1) DEFAULT NULL,
- `odbc_date` timestamp NULL DEFAULT current_timestamp(),
- `labeled` decimal(4,1) unsigned NOT NULL DEFAULT 0.0,
- PRIMARY KEY (`Id_Trabajador`,`travel_id`),
- UNIQUE KEY `travel_reserve_id_UNIQUE` (`travel_reserve_id`),
- KEY `travel_travel_reserve_idx` (`travel_id`),
- KEY `traveL_buyer_id_idx` (`Id_Trabajador`),
- CONSTRAINT `travel_reserve___ibfk_1` FOREIGN KEY (`travel_id`) REFERENCES `vn`.`travel` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `trolley__`
---
-
-DROP TABLE IF EXISTS `trolley__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `trolley__` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `fecha` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `ref` varchar(4) DEFAULT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `unary`
---
-
-DROP TABLE IF EXISTS `unary`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `unary` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `parent` int(11) DEFAULT NULL,
- PRIMARY KEY (`id`),
- UNIQUE KEY `idunary_UNIQUE` (`id`),
- KEY `unary_parent_idx` (`parent`),
- CONSTRAINT `unary_parent` FOREIGN KEY (`parent`) REFERENCES `unary` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `unaryScanFilter__`
---
-
-DROP TABLE IF EXISTS `unaryScanFilter__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `unaryScanFilter__` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `name` varchar(50) NOT NULL,
- `filter` text NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `unary_scan__`
---
-
-DROP TABLE IF EXISTS `unary_scan__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `unary_scan__` (
- `unary_id` int(11) NOT NULL,
- `name` varchar(45) DEFAULT NULL,
- `odbc_date` timestamp NOT NULL DEFAULT current_timestamp(),
- `type` set('BUYS','EXPEDITIONS') NOT NULL,
- PRIMARY KEY (`unary_id`),
- KEY `scan_unary_idx` (`unary_id`),
- CONSTRAINT `unary_scan` FOREIGN KEY (`unary_id`) REFERENCES `unary` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `unary_scan_line__`
---
-
-DROP TABLE IF EXISTS `unary_scan_line__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `unary_scan_line__` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `code` varchar(45) NOT NULL,
- `odbc_date` timestamp NOT NULL DEFAULT current_timestamp(),
- `unary_id` int(11) NOT NULL,
- PRIMARY KEY (`id`),
- UNIQUE KEY `id_UNIQUE` (`id`),
- KEY `unary_line_idx` (`unary_id`),
- CONSTRAINT `unary_line` FOREIGN KEY (`unary_id`) REFERENCES `unary_scan__` (`unary_id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `unary_scan_line_buy__`
---
-
-DROP TABLE IF EXISTS `unary_scan_line_buy__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `unary_scan_line_buy__` (
- `scan_line_id` int(11) NOT NULL,
- `Id_Article` int(11) NOT NULL,
- PRIMARY KEY (`scan_line_id`),
- UNIQUE KEY `scan_line_id_UNIQUE` (`scan_line_id`),
- KEY `Id_Article_buy_idx` (`Id_Article`),
- CONSTRAINT `Id_Article_buy` FOREIGN KEY (`Id_Article`) REFERENCES `vn`.`item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `scan_line_id_patriarcal` FOREIGN KEY (`scan_line_id`) REFERENCES `unary_scan_line__` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `unary_scan_line_expedition__`
---
-
-DROP TABLE IF EXISTS `unary_scan_line_expedition__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `unary_scan_line_expedition__` (
- `scan_line_id` int(11) NOT NULL,
- `expedition_id` int(11) NOT NULL,
- PRIMARY KEY (`scan_line_id`),
- UNIQUE KEY `scan_line_id_UNIQUE` (`scan_line_id`),
- KEY `expedition_id_scan_idx` (`expedition_id`),
- CONSTRAINT `expedition_id_scan` FOREIGN KEY (`expedition_id`) REFERENCES `vn`.`expedition` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `unary_source__`
---
-
-DROP TABLE IF EXISTS `unary_source__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `unary_source__` (
- `name` varchar(100) NOT NULL,
- PRIMARY KEY (`name`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `v_Articles_botanical`
--
@@ -85278,90 +84202,6 @@ SET character_set_client = utf8;
1 AS `critical` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `viaxpress__`
---
-
-DROP TABLE IF EXISTS `viaxpress__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `viaxpress__` (
- `codigo_postal` varchar(5) NOT NULL,
- `zona` tinyint(4) NOT NULL DEFAULT 2,
- `m_t` tinyint(4) NOT NULL DEFAULT 0,
- `POBLACION` varchar(25) NOT NULL,
- `PROVINCIA` varchar(20) NOT NULL,
- PRIMARY KEY (`codigo_postal`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `warehouse_filtro__`
---
-
-DROP TABLE IF EXISTS `warehouse_filtro__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `warehouse_filtro__` (
- `warehouse_id` smallint(6) unsigned NOT NULL,
- `Id_Trabajador` int(11) NOT NULL,
- `ok` tinyint(3) unsigned DEFAULT 1,
- PRIMARY KEY (`Id_Trabajador`,`warehouse_id`),
- KEY `wh_worker_idx` (`Id_Trabajador`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `warehouse_group__`
---
-
-DROP TABLE IF EXISTS `warehouse_group__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `warehouse_group__` (
- `warehouse_alias_id` smallint(5) unsigned NOT NULL DEFAULT 22,
- `warehouse_id` smallint(5) unsigned NOT NULL,
- PRIMARY KEY (`warehouse_alias_id`,`warehouse_id`),
- KEY `warehosue_group_ware_idx` (`warehouse_id`),
- CONSTRAINT `warehosue_group_ware` FOREIGN KEY (`warehouse_id`) REFERENCES `vn`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
- CONSTRAINT `warehouse_group_alias` FOREIGN KEY (`warehouse_alias_id`) REFERENCES `vn`.`warehouseAlias__` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `warehouse_joined__`
---
-
-DROP TABLE IF EXISTS `warehouse_joined__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `warehouse_joined__` (
- `warehouse_id` smallint(5) unsigned NOT NULL,
- `warehouse_alias_id` smallint(5) unsigned NOT NULL,
- PRIMARY KEY (`warehouse_id`,`warehouse_alias_id`),
- CONSTRAINT `warehouse_joined___ibfk_3` FOREIGN KEY (`warehouse_id`) REFERENCES `vn`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `warehouse_lc__`
---
-
-DROP TABLE IF EXISTS `warehouse_lc__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `warehouse_lc__` (
- `whin` smallint(6) unsigned NOT NULL,
- `whout` smallint(6) unsigned NOT NULL,
- `m3` double NOT NULL DEFAULT 15,
- `days` int(11) NOT NULL DEFAULT 1,
- PRIMARY KEY (`whin`,`whout`),
- KEY `whout_wh_idx` (`whout`),
- CONSTRAINT `whin_wh` FOREIGN KEY (`whin`) REFERENCES `vn`.`warehouse` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `whout_wh` FOREIGN KEY (`whout`) REFERENCES `vn`.`warehouse` (`id`) ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Temporary table structure for view `warehouse_pickup`
--
@@ -85375,71 +84215,6 @@ SET character_set_client = utf8;
1 AS `agency_id` */;
SET character_set_client = @saved_cs_client;
---
--- Table structure for table `wh_selection__`
---
-
-DROP TABLE IF EXISTS `wh_selection__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `wh_selection__` (
- `Id_Trabajador` int(10) unsigned NOT NULL,
- `warehouse_id` smallint(6) unsigned NOT NULL,
- PRIMARY KEY (`Id_Trabajador`,`warehouse_id`),
- KEY `Trabajadores` (`Id_Trabajador`),
- KEY `Warehouse` (`warehouse_id`),
- CONSTRAINT `Trabajadores` FOREIGN KEY (`Id_Trabajador`) REFERENCES `vn`.`worker` (`id`) ON UPDATE CASCADE,
- CONSTRAINT `Warehouse` FOREIGN KEY (`warehouse_id`) REFERENCES `vn`.`warehouse` (`id`) ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-11-28;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `widget__`
---
-
-DROP TABLE IF EXISTS `widget__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `widget__` (
- `widget_id` int(11) NOT NULL,
- `chr` int(11) NOT NULL,
- PRIMARY KEY (`widget_id`),
- UNIQUE KEY `chr_UNIQUE` (`chr`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `wks__`
---
-
-DROP TABLE IF EXISTS `wks__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `wks__` (
- `wk` int(10) unsigned NOT NULL,
- `yr` int(10) unsigned NOT NULL,
- `vwk` int(10) unsigned NOT NULL,
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `comments` text DEFAULT NULL,
- PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Table structure for table `zones__`
---
-
-DROP TABLE IF EXISTS `zones__`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `zones__` (
- `zone_id` tinyint(4) NOT NULL,
- `name` varchar(45) NOT NULL,
- `printingOrder` int(11) NOT NULL DEFAULT 0,
- PRIMARY KEY (`zone_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #6372 @deprecated 2023-12-13;';
-/*!40101 SET character_set_client = @saved_cs_client */;
-
--
-- Dumping events for database 'vn2008'
--
@@ -85447,449 +84222,6 @@ CREATE TABLE `zones__` (
--
-- Dumping routines for database 'vn2008'
--
-/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `article_multiple_buy` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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 */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `article_multiple_buy`(v_date DATETIME, wh INT)
-BEGIN
- CALL vn.item_multipleBuy(v_date, wh);
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `article_multiple_buy_date` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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 */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `article_multiple_buy_date`(
- IN vDated DATETIME,
- IN vWarehouseFk TINYINT(3)
-)
-BEGIN
- CALL vn.item_multipleBuyByDate(vDated, vWarehouseFk);
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `availableTraslate` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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 */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `availableTraslate`(
- vWarehouseLanding INT,
- vDated DATE,
- vWarehouseShipment INT)
-proc: BEGIN
- DECLARE vDatedFrom DATE;
- DECLARE vDatedTo DATETIME;
- DECLARE vDatedReserve DATETIME;
- DECLARE vDatedInventory DATE;
-
- IF vDated < util.VN_CURDATE() THEN
- LEAVE proc;
- END IF;
-
- CALL vn.item_getStock (vWarehouseLanding, vDated, NULL);
-
- -- Calcula algunos parámetros necesarios
- SET vDatedFrom = TIMESTAMP(vDated, '00:00:00');
- SET vDatedTo = TIMESTAMP(TIMESTAMPADD(DAY, 4, vDated), '23:59:59');
- SELECT inventoried INTO vDatedInventory FROM vn.config;
- SELECT SUBTIME(util.VN_NOW(), reserveTime) INTO vDatedReserve
- FROM hedera.orderConfig;
-
- -- Calcula el ultimo dia de vida para cada producto
- DROP TEMPORARY TABLE IF EXISTS itemRange;
- CREATE TEMPORARY TABLE itemRange
- (PRIMARY KEY (itemFk))
- ENGINE = MEMORY
- SELECT c.itemFk, MAX(t.landed) dated
- FROM vn.buy c
- JOIN vn.entry e ON c.entryFk = e.id
- JOIN vn.travel t ON t.id = e.travelFk
- JOIN vn.warehouse w ON w.id = t.warehouseInFk
- WHERE t.landed BETWEEN vDatedInventory AND vDatedFrom
- AND t.warehouseInFk = vWarehouseLanding
- AND NOT e.isExcludedFromAvailable
- AND NOT e.isRaid
- GROUP BY c.itemFk;
-
- -- Tabla con el ultimo dia de last_buy para cada producto que hace un replace de la anterior
- CALL vn.buyUltimate(vWarehouseShipment, util.VN_CURDATE());
-
- INSERT INTO itemRange
- SELECT t.itemFk, tr.landed
- FROM tmp.buyUltimate t
- JOIN vn.buy b ON b.id = t.buyFk
- JOIN vn.entry e ON e.id = b.entryFk
- JOIN vn.travel tr ON tr.id = e.travelFk
- LEFT JOIN itemRange i ON t.itemFk = i.itemFk
- WHERE t.warehouseFk = vWarehouseShipment
- AND NOT e.isRaid
- ON DUPLICATE KEY UPDATE itemRange.dated = GREATEST(itemRange.dated, tr.landed);
-
- DROP TEMPORARY TABLE IF EXISTS itemRangeLive;
- CREATE TEMPORARY TABLE itemRangeLive
- (PRIMARY KEY (itemFk))
- ENGINE = MEMORY
- SELECT ir.itemFk, TIMESTAMP(TIMESTAMPADD(DAY, it.life, ir.dated), '23:59:59') dated
- FROM itemRange ir
- JOIN vn.item i ON i.id = ir.itemFk
- JOIN vn.itemType it ON it.id = i.typeFk
- HAVING dated >= vDatedFrom OR dated IS NULL;
-
- -- Calcula el ATP
- DROP TEMPORARY TABLE IF EXISTS tmp.itemCalc;
- CREATE TEMPORARY TABLE tmp.itemCalc
- (INDEX (itemFk,warehouseFk))
- ENGINE = MEMORY
- SELECT i.itemFk, vWarehouseLanding warehouseFk, i.shipped dated, i.quantity
- FROM vn.itemTicketOut i
- JOIN itemRangeLive ir ON ir.itemFK = i.itemFk
- WHERE i.shipped >= vDatedFrom
- AND (ir.dated IS NULL OR i.shipped <= ir.dated)
- AND i.warehouseFk = vWarehouseLanding
- UNION ALL
- SELECT b.itemFk, vWarehouseLanding, t.landed, b.quantity
- FROM vn.buy b
- JOIN vn.entry e ON b.entryFk = e.id
- JOIN vn.travel t ON t.id = e.travelFk
- JOIN itemRangeLive ir ON ir.itemFk = b.itemFk
- WHERE NOT e.isExcludedFromAvailable
- AND b.quantity <> 0
- AND NOT e.isRaid
- AND t.warehouseInFk = vWarehouseLanding
- AND t.landed >= vDatedFrom
- AND (ir.dated IS NULL OR t.landed <= ir.dated)
- UNION ALL
- SELECT i.itemFk, vWarehouseLanding, i.shipped, i.quantity
- FROM vn.itemEntryOut i
- JOIN itemRangeLive ir ON ir.itemFk = i.itemFk
- WHERE i.shipped >= vDatedFrom
- AND (ir.dated IS NULL OR i.shipped <= ir.dated)
- AND i.warehouseOutFk = vWarehouseLanding
- UNION ALL
- SELECT r.item_id, vWarehouseLanding, r.shipment, -r.amount
- FROM hedera.order_row r
- JOIN hedera.`order` o ON o.id = r.order_id
- JOIN itemRangeLive ir ON ir.itemFk = r.item_id
- WHERE r.shipment >= vDatedFrom
- AND (ir.dated IS NULL OR r.shipment <= ir.dated)
- AND r.warehouse_id = vWarehouseLanding
- AND r.created >= vDatedReserve
- AND NOT o.confirmed;
-
- CALL vn.item_getAtp(vDated);
-
- DROP TEMPORARY TABLE IF EXISTS availableTraslate;
- CREATE TEMPORARY TABLE availableTraslate
- (PRIMARY KEY (item_id))
- ENGINE = MEMORY
- SELECT t.item_id, SUM(stock) available
- FROM (
- SELECT ti.itemFk item_id, stock
- FROM tmp.itemList ti
- JOIN itemRange ir ON ir.itemFk = ti.itemFk
- UNION ALL
- SELECT itemFk, quantity
- FROM tmp.itemAtp
- ) t
- GROUP BY t.item_id
- HAVING available <> 0;
-
- DROP TEMPORARY TABLE tmp.itemList, itemRange, itemRangeLive;
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `balance_create` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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 */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `balance_create`(
- IN vStartingMonth INT,
- IN vEndingMonth INT,
- IN vCompany INT,
- IN vIsConsolidated BOOLEAN,
- IN vInterGroupSalesIncluded BOOLEAN)
-BEGIN
- DECLARE intGAP INT DEFAULT 7;
- DECLARE vYears INT DEFAULT 2;
- DECLARE vYear TEXT;
- DECLARE vOneYearAgo TEXT;
- DECLARE vTwoYearsAgo TEXT;
- DECLARE vQuery TEXT;
- DECLARE vConsolidatedGroup INT;
- DECLARE vStartingDate DATE DEFAULT '2020-01-01';
- DECLARE vCurYear INT DEFAULT YEAR(util.VN_CURDATE());
- DECLARE vStartingYear INT DEFAULT vCurYear - 2;
- DECLARE vTable TEXT;
-
- SET vTable = util.quoteIdentifier('balance_nest_tree');
- SET vYear = util.quoteIdentifier(vCurYear);
- SET vOneYearAgo = util.quoteIdentifier(vCurYear-1);
- SET vTwoYearsAgo = util.quoteIdentifier(vCurYear-2);
-
- -- Solicitamos la tabla tmp.nest, como base para el balance
- DROP TEMPORARY TABLE IF EXISTS tmp.nest;
-
- EXECUTE IMMEDIATE CONCAT(
- 'CREATE TEMPORARY TABLE tmp.nest
- SELECT node.id
- ,CONCAT( REPEAT(REPEAT(" ",?), COUNT(parent.id) - 1), node.name) AS name
- ,node.lft
- ,node.rgt
- ,COUNT(parent.id) - 1 as depth
- ,cast((node.rgt - node.lft - 1) / 2 as DECIMAL) as sons
- FROM ', vTable, ' AS node,
- ', vTable, ' AS parent
- WHERE node.lft BETWEEN parent.lft AND parent.rgt
- GROUP BY node.id
- ORDER BY node.lft')
- USING intGAP;
-
- DROP TEMPORARY TABLE IF EXISTS tmp.balance;
- CREATE TEMPORARY TABLE tmp.balance
- SELECT * FROM tmp.nest;
-
- DROP TEMPORARY TABLE IF EXISTS tmp.empresas_receptoras;
- DROP TEMPORARY TABLE IF EXISTS tmp.empresas_emisoras;
-
- SELECT empresa_grupo INTO vConsolidatedGroup
- FROM empresa
- WHERE id = vCompany;
-
- CREATE TEMPORARY TABLE tmp.empresas_receptoras
- SELECT id as empresa_id
- FROM vn2008.empresa
- WHERE id = vCompany
- OR empresa_grupo = IF(vIsConsolidated, vConsolidatedGroup, NULL);
-
- CREATE TEMPORARY TABLE tmp.empresas_emisoras
- SELECT Id_Proveedor as empresa_id FROM vn2008.Proveedores p;
-
- IF vInterGroupSalesIncluded = FALSE THEN
-
- DELETE ee.*
- FROM tmp.empresas_emisoras ee
- JOIN vn2008.empresa e on e.id = ee.empresa_id
- WHERE e.empresa_grupo = vConsolidatedGroup;
-
- END IF;
-
- -- Se calculan las facturas que intervienen, para luego poder servir el desglose desde aqui
- DROP TEMPORARY TABLE IF EXISTS tmp.balance_desglose;
- CREATE TEMPORARY TABLE tmp.balance_desglose
- SELECT er.empresa_id receptora_id,
- ee.empresa_id emisora_id,
- year(IFNULL(r.bookEntried,IFNULL(r.dateBooking, r.Fecha))) `year`,
- month(IFNULL(r.bookEntried,IFNULL(r.dateBooking, r.Fecha))) `month`,
- gastos_id Id_Gasto,
- SUM(bi) importe
- FROM recibida r
- JOIN recibida_iva ri on ri.recibida_id = r.id
- JOIN tmp.empresas_receptoras er on er.empresa_id = r.empresa_id
- JOIN tmp.empresas_emisoras ee ON ee.empresa_id = r.proveedor_id
- WHERE IFNULL(r.bookEntried,IFNULL(r.dateBooking, r.Fecha)) >= vStartingDate
- AND r.contabilizada
- GROUP BY Id_Gasto, year, month, emisora_id, receptora_id;
-
- INSERT INTO tmp.balance_desglose(
- receptora_id,
- emisora_id,
- year,
- month,
- Id_Gasto,
- importe)
- SELECT gr.empresa_id,
- gr.empresa_id,
- year,
- month,
- Id_Gasto,
- SUM(importe)
- FROM gastos_resumen gr
- JOIN tmp.empresas_receptoras er on gr.empresa_id = er.empresa_id
- WHERE year >= vStartingYear
- AND month BETWEEN vStartingMonth AND vEndingMonth
- GROUP BY Id_Gasto, year, month, gr.empresa_id;
-
- DELETE FROM tmp.balance_desglose
- WHERE month < vStartingMonth
- OR month > vEndingMonth;
-
- -- Ahora el balance
- EXECUTE IMMEDIATE CONCAT(
- 'ALTER TABLE tmp.balance
- ADD COLUMN ', vTwoYearsAgo ,' INT(10) NULL ,
- ADD COLUMN ', vOneYearAgo ,' INT(10) NULL ,
- ADD COLUMN ', vYear,' INT(10) NULL ,
- ADD COLUMN Id_Gasto VARCHAR(10) NULL,
- ADD COLUMN Gasto VARCHAR(45) NULL');
-
- -- Añadimos los gastos, para facilitar el formulario
- UPDATE tmp.balance b
- JOIN vn2008.balance_nest_tree bnt on bnt.id = b.id
- JOIN (SELECT id Id_Gasto, name Gasto
- FROM vn.expense
- GROUP BY id) g ON g.Id_Gasto = bnt.Id_Gasto COLLATE utf8_general_ci
- SET b.Id_Gasto = g.Id_Gasto COLLATE utf8_general_ci
- , b.Gasto = g.Gasto COLLATE utf8_general_ci ;
-
- -- Rellenamos los valores de primer nivel, los que corresponden a los gastos simples
- WHILE vYears >= 0 DO
- SET vQuery = CONCAT(
- 'UPDATE tmp.balance b
- JOIN
- (SELECT Id_Gasto, SUM(Importe) as Importe
- FROM tmp.balance_desglose
- WHERE year = ?
- GROUP BY Id_Gasto
- ) sub on sub.Id_Gasto = b.Id_Gasto COLLATE utf8_general_ci
- SET ', util.quoteIdentifier(vCurYear - vYears), ' = - Importe');
-
- EXECUTE IMMEDIATE vQuery
- USING vCurYear - vYears;
-
- SET vYears = vYears - 1;
- END WHILE;
-
- -- Añadimos las ventas
- EXECUTE IMMEDIATE CONCAT(
- 'UPDATE tmp.balance b
- JOIN (
- SELECT SUM(IF(year = ?, venta, 0)) y2,
- SUM(IF(year = ?, venta, 0)) y1,
- SUM(IF(year = ?, venta, 0)) y0,
- c.Gasto
- FROM bs.ventas_contables c
- JOIN tmp.empresas_receptoras er on er.empresa_id = c.empresa_id
- WHERE month BETWEEN ? AND ?
- GROUP BY c.Gasto
- ) sub ON sub.Gasto = b.Id_Gasto COLLATE utf8_general_ci
- SET b.', vTwoYearsAgo, '= IFNULL(b.', vTwoYearsAgo, ', 0) + sub.y2,
- b.', vOneYearAgo, '= IFNULL(b.', vOneYearAgo, ', 0) + sub.y1,
- b.', vYear, '= IFNULL(b.', vYear, ', 0) + sub.y0')
- USING vCurYear-2,
- vCurYear-1,
- vCurYear,
- vStartingMonth,
- vEndingMonth;
-
- -- Ventas intra grupo
- IF NOT vInterGroupSalesIncluded THEN
-
- SELECT lft, rgt INTO @grupoLft, @grupoRgt
- FROM tmp.balance b
- WHERE TRIM(b.`name`) = 'Grupo';
-
- DELETE
- FROM tmp.balance
- WHERE lft BETWEEN @grupoLft AND @grupoRgt;
-
- END IF;
-
- -- Rellenamos el valor de los padres con la suma de los hijos
- DROP TEMPORARY TABLE IF EXISTS tmp.balance_aux;
- CREATE TEMPORARY TABLE tmp.balance_aux
- SELECT * FROM tmp.balance;
-
- EXECUTE IMMEDIATE
- CONCAT('UPDATE tmp.balance b
- JOIN (
- SELECT b1.id,
- b1.name,
- SUM(b2.', vYear,') thisYear,
- SUM(b2.', vOneYearAgo,') oneYearAgo,
- SUM(b2.', vTwoYearsAgo,') twoYearsAgo
- FROM tmp.nest b1
- JOIN tmp.balance_aux b2 on b2.lft BETWEEN b1.lft and b1.rgt
- GROUP BY b1.id)sub ON sub.id = b.id
- SET b.', vYear, ' = thisYear,
- b.', vOneYearAgo, ' = oneYearAgo,
- b.', vTwoYearsAgo, ' = twoYearsAgo');
-
- SELECT *, CONCAT('',ifnull(Id_Gasto,'')) newgasto
- FROM tmp.balance;
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `buy_tarifas` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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 */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_tarifas`(vBuyFk INT)
-BEGIN
- CALL vn.buy_recalcPricesByBuy(vBuyFk);
-END ;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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_sql_mode = @@sql_mode */ ;
-/*!50003 SET sql_mode = 'IGNORE_SPACE,NO_ENGINE_SUBSTITUTION' */ ;
-/*!50003 DROP PROCEDURE IF EXISTS `buy_tarifas_entry` */;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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 */ ;
-DELIMITER ;;
-CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_tarifas_entry`(IN vEntryFk INT(11))
-BEGIN
-/**
- * Recalcula los precios de una entrada
- *
- * @param vEntryFk
- */
- CALL vn.buy_recalcPricesByEntry(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 */ ;
--
-- Current Database: `account`
@@ -86084,24 +84416,6 @@ USE `bi`;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
---
--- Final view structure for view `last_Id_Cubo`
---
-
-/*!50001 DROP VIEW IF EXISTS `last_Id_Cubo`*/;
-/*!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 `last_Id_Cubo` AS select `C`.`Id_Compra` AS `Id_Compra`,`C`.`Id_Article` AS `Id_Article`,`tr`.`warehouse_id` AS `warehouse_id`,`C`.`Id_Cubo` AS `Id_Cubo`,`C`.`Packing` AS `Packing` from ((`vn2008`.`Compres` `C` join `vn2008`.`Entradas` `E` on(`C`.`Id_Entrada` = `E`.`Id_Entrada`)) join `vn2008`.`travel` `tr` on(`E`.`travel_id` = `tr`.`id`)) where `C`.`Id_Cubo` is not null and `C`.`Id_Cubo` <> '--' and `tr`.`landing` > `util`.`VN_CURDATE`() - interval 18 month order by `C`.`Id_Compra` 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 `rotacion`
--
@@ -86156,84 +84470,12 @@ USE `bi`;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
---
--- Final view structure for view `v_ventas_contables`
---
-
-/*!50001 DROP VIEW IF EXISTS `v_ventas_contables`*/;
-/*!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 `v_ventas_contables` AS select `time`.`year` AS `year`,`time`.`month` AS `month`,cast(sum(`m`.`Cantidad` * `m`.`Preu` * (100 - `m`.`Descuento`) / 100) as decimal(10,0)) AS `importe` from (((`vn`.`ticket` `t` join `bi`.`f_tvc` on(`t`.`id` = `bi`.`f_tvc`.`Id_Ticket`)) join `vn2008`.`Movimientos` `m` on(`t`.`id` = `m`.`Id_Ticket`)) join `vn2008`.`time` on(`time`.`date` = cast(`t`.`shipped` as date))) where `t`.`shipped` >= '2014-01-01' group by `time`.`year`,`time`.`month` */;
-/*!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: `bs`
--
USE `bs`;
---
--- Final view structure for view `VentasPorCliente`
---
-
-/*!50001 DROP VIEW IF EXISTS `VentasPorCliente`*/;
-/*!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 `VentasPorCliente` AS select `v`.`Id_Cliente` AS `Id_Cliente`,round(sum(`v`.`importe`),0) AS `VentaBasica`,`t`.`year` AS `year`,`t`.`month` AS `month` from (`vn2008`.`time` `t` join `bs`.`ventas` `v` on(`v`.`fecha` = `t`.`date`)) group by `v`.`Id_Cliente`,`t`.`year`,`t`.`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 `bajasLaborales`
---
-
-/*!50001 DROP VIEW IF EXISTS `bajasLaborales`*/;
-/*!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 `bajasLaborales` AS select `w`.`firstName` AS `firstname`,`w`.`lastName` AS `name`,`b`.`id` AS `businessFk`,max(`c`.`dated`) 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 (((`vn`.`calendar` `c` join `vn`.`business` `b` on(`b`.`id` = `c`.`businessFk`)) join `vn`.`worker` `w` on(`w`.`id` = `b`.`workerFk`)) join `vn`.`absenceType` `at` on(`at`.`id` = `c`.`dayOffTypeFk`)) where `c`.`dated` >= `util`.`VN_CURDATE`() + interval -1 year and `at`.`name` not in ('Vacaciones','Vacaciones 1/2 día','Compensar','Festivo') group by `w`.`id`,`at`.`id` 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 */;
-
---
--- Final view structure for view `horasSilla`
---
-
-/*!50001 DROP VIEW IF EXISTS `horasSilla`*/;
-/*!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 `horasSilla` AS select `wj`.`dated` AS `Fecha`,`d`.`name` AS `Departamento`,cast(sum(`wj`.`total`) as decimal(10,2)) AS `Horas`,cast(sum((`wj`.`total` + `wj`.`lunch`) * `wj`.`priceOrdinaryHour`) as decimal(10,2)) AS `Salarios` from ((`vn`.`workerJourney` `wj` join `vn`.`business` `b` on(`b`.`id` = `wj`.`businessFk`)) join `vn`.`department` `d` on(`d`.`id` = `b`.`departmentFk`)) where `d`.`name` in ('CAMARA','ENCAJADO','PALETIZADORES','PRODUCCION','SACADORES') group by `wj`.`dated`,`d`.`name` */;
-/*!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 `lastIndicators`
--
@@ -86270,42 +84512,6 @@ USE `bs`;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
---
--- Final view structure for view `s1_ticketDetail`
---
-
-/*!50001 DROP VIEW IF EXISTS `s1_ticketDetail`*/;
-/*!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 `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 */;
-
---
--- Final view structure for view `s21_saleDetail`
---
-
-/*!50001 DROP VIEW IF EXISTS `s21_saleDetail`*/;
-/*!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 `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 `ventas`
--
@@ -86883,7 +85089,7 @@ USE `pbx`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `sipConf` AS select `s`.`user_id` AS `id`,`s`.`extension` AS `name`,`s`.`extension` AS `regexten`,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`.`directMedia` AS `directmedia`,`c`.`insecure` AS `insecure`,`c`.`transport` AS `transport`,`c`.`nat` AS `nat`,`c`.`disallow` AS `disallow`,`c`.`allow` AS `allow`,`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 VIEW `sipConf` AS select `s`.`user_id` AS `id`,`s`.`extension` AS `name`,`s`.`extension` AS `regexten`,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`.`call-limit` AS `call-limit`,`c`.`pickupGroup` AS `pickupgroup`,`c`.`directMedia` AS `directmedia`,`c`.`insecure` AS `insecure`,`c`.`transport` AS `transport`,`c`.`nat` AS `nat`,`c`.`disallow` AS `disallow`,`c`.`allow` AS `allow`,`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 */;
@@ -87069,7 +85275,7 @@ USE `srt`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `bufferDayMinute` AS select `b`.`id` AS `bufferFk`,`e`.`id` AS `expeditionFk`,`srt`.`dayMinute`(ifnull(`et`.`eta`,`z`.`hour`)) AS `dayMinute`,`e`.`position` AS `position`,ifnull(`et`.`eta`,`util`.`VN_CURDATE`() + interval `srt`.`dayMinute`(`z`.`hour`) minute) AS `ETD`,`e2`.`ticketFk` AS `ticketFk`,ifnull(`t`.`routeFk`,`t`.`agencyModeFk`) AS `routeFk`,`z`.`name` AS `zonaTicket`,`es`.`description` AS `expeditionState` from ((((((((`srt`.`buffer` `b` left join `srt`.`expedition` `e` on(`b`.`id` = `e`.`bufferFk`)) left join `srt`.`expeditionState` `es` on(`es`.`id` = `e`.`stateFk`)) join `srt`.`bufferType` `bt` on(`bt`.`id` = `b`.`typeFk`)) left join `vn`.`expedition` `e2` on(`e2`.`id` = `e`.`id`)) left join `vn`.`ticket` `t` on(`e2`.`ticketFk` = `t`.`id`)) left join `vn`.`routesMonitor` `rm` on(`t`.`routeFk` = `rm`.`routeFk`)) left join `vn`.`expeditionTruck` `et` on(`rm`.`expeditionTruckFk` = `et`.`id`)) left join `vn`.`zone` `z` on(`z`.`id` = `t`.`zoneFk`)) where `b`.`isActive` <> 0 */;
+/*!50001 VIEW `bufferDayMinute` AS select `b`.`id` AS `bufferFk`,`e`.`id` AS `expeditionFk`,`srt`.`dayMinute`(ifnull(`rs`.`eta`,`z`.`hour`)) AS `dayMinute`,`e`.`position` AS `position`,ifnull(`rs`.`eta`,`util`.`VN_CURDATE`() + interval `srt`.`dayMinute`(`z`.`hour`) minute) AS `ETD`,`e2`.`ticketFk` AS `ticketFk`,ifnull(`t`.`routeFk`,`t`.`agencyModeFk`) AS `routeFk`,`z`.`name` AS `zonaTicket`,`es`.`description` AS `expeditionState` from ((((((((`srt`.`buffer` `b` left join `srt`.`expedition` `e` on(`b`.`id` = `e`.`bufferFk`)) left join `srt`.`expeditionState` `es` on(`es`.`id` = `e`.`stateFk`)) join `srt`.`bufferType` `bt` on(`bt`.`id` = `b`.`typeFk`)) left join `vn`.`expedition` `e2` on(`e2`.`id` = `e`.`id`)) left join `vn`.`ticket` `t` on(`e2`.`ticketFk` = `t`.`id`)) left join `vn`.`routesMonitor` `rm` on(`t`.`routeFk` = `rm`.`routeFk`)) left join `vn`.`roadmapStop` `rs` on(`rm`.`expeditionTruckFk` = `rs`.`id`)) left join `vn`.`zone` `z` on(`z`.`id` = `t`.`zoneFk`)) where `b`.`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 */;
@@ -87105,7 +85311,7 @@ USE `srt`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `bufferStock` AS select `e`.`id` AS `expeditionFk`,`e`.`bufferFk` AS `bufferFk`,`e`.`position` AS `position`,`srt`.`dayMinute`(ifnull(`et`.`eta`,`z`.`hour`)) AS `dayMinute`,ifnull(`et`.`eta`,`util`.`VN_CURDATE`() + interval `srt`.`dayMinute`(`z`.`hour`) + 120 minute) AS `eta`,`ve`.`ticketFk` AS `ticketFk`,ifnull(`t`.`routeFk`,`t`.`agencyModeFk`) AS `routeFk`,`z`.`name` AS `zonaTicket`,`et`.`description` AS `truck`,`es`.`description` AS `expeditionState`,`b`.`hasWorkerWaiting` AS `hasWorkerWaiting`,`b`.`isActive` AS `isActive`,if(`et`.`id` is null,`c`.`bufferDefault`,`et`.`bufferFk`) AS `bufferTruck`,`bt`.`typeName` AS `typeName`,`rm`.`bufferFk` AS `routeBuffer` from (((((((((`srt`.`expedition` `e` left join `vn`.`expedition` `ve` on(`ve`.`id` = `e`.`id`)) join `srt`.`expeditionState` `es` on(`es`.`id` = `e`.`stateFk`)) join `srt`.`buffer` `b` on(`b`.`id` = `e`.`bufferFk`)) left join `vn`.`ticket` `t` on(`t`.`id` = `ve`.`ticketFk`)) left join `vn`.`zone` `z` on(`z`.`id` = `t`.`zoneFk`)) left join `vn`.`routesMonitor` `rm` on(`t`.`routeFk` = `rm`.`routeFk`)) left join `vn`.`expeditionTruck` `et` on(`rm`.`expeditionTruckFk` = `et`.`id`)) join `srt`.`config` `c`) join `srt`.`bufferType` `bt` on(`bt`.`id` = `b`.`typeFk`)) where `bt`.`typeName` <> 'DISABLED' */;
+/*!50001 VIEW `bufferStock` AS select `e`.`id` AS `expeditionFk`,`e`.`bufferFk` AS `bufferFk`,`e`.`position` AS `position`,`srt`.`dayMinute`(ifnull(`rs`.`eta`,`z`.`hour`)) AS `dayMinute`,ifnull(`rs`.`eta`,`util`.`VN_CURDATE`() + interval `srt`.`dayMinute`(`z`.`hour`) + 120 minute) AS `eta`,`ve`.`ticketFk` AS `ticketFk`,ifnull(`t`.`routeFk`,`t`.`agencyModeFk`) AS `routeFk`,`z`.`name` AS `zonaTicket`,`rs`.`description` AS `truck`,`es`.`description` AS `expeditionState`,`b`.`hasWorkerWaiting` AS `hasWorkerWaiting`,`b`.`isActive` AS `isActive`,if(`rs`.`id` is null,`c`.`bufferDefault`,`rs`.`bufferFk`) AS `bufferTruck`,`bt`.`typeName` AS `typeName`,`rm`.`bufferFk` AS `routeBuffer` from (((((((((`srt`.`expedition` `e` left join `vn`.`expedition` `ve` on(`ve`.`id` = `e`.`id`)) join `srt`.`expeditionState` `es` on(`es`.`id` = `e`.`stateFk`)) join `srt`.`buffer` `b` on(`b`.`id` = `e`.`bufferFk`)) left join `vn`.`ticket` `t` on(`t`.`id` = `ve`.`ticketFk`)) left join `vn`.`zone` `z` on(`z`.`id` = `t`.`zoneFk`)) left join `vn`.`routesMonitor` `rm` on(`t`.`routeFk` = `rm`.`routeFk`)) left join `vn`.`roadmapStop` `rs` on(`rm`.`expeditionTruckFk` = `rs`.`id`)) join `srt`.`config` `c`) join `srt`.`bufferType` `bt` on(`bt`.`id` = `b`.`typeFk`)) where `bt`.`typeName` <> 'DISABLED' */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -87195,7 +85401,7 @@ USE `srt`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `upperStickers` AS select `e`.`id` AS `expeditionFk`,`e`.`id` MOD 10000 AS `expedition`,ifnull(`et`.`eta`,`util`.`VN_CURDATE`() + interval `srt`.`dayMinute`(`z`.`hour`) + 120 minute) AS `ETD`,`ve`.`ticketFk` AS `ticketFk`,right(ifnull(`t`.`routeFk`,`t`.`agencyModeFk`),3) AS `routeFk`,`z`.`name` AS `zonaTicket`,`et`.`description` AS `truck`,`epo`.`workerCode` AS `worker`,`p`.`name` AS `labeler`,`ve`.`counter` AS `expeditionCounter`,`vn`.`ticketTotalVolume`(`t`.`id`) AS `m3`,`t`.`clientFk` AS `clientFk` from (((((((`srt`.`expedition` `e` left join `vn`.`expedition` `ve` on(`ve`.`id` = `e`.`id`)) left join `vn`.`ticket` `t` on(`t`.`id` = `ve`.`ticketFk`)) left join `vn`.`zone` `z` on(`z`.`id` = `t`.`zoneFk`)) left join `vn`.`routesMonitor` `rm` on(`t`.`routeFk` = `rm`.`routeFk`)) left join `vn`.`expeditionTruck` `et` on(`rm`.`expeditionTruckFk` = `et`.`id`)) join `dipole`.`expedition_PrintOut` `epo` on(`epo`.`expeditionFk` = `e`.`id`)) join `vn`.`printer` `p` on(`p`.`id` = `epo`.`printerFk`)) */;
+/*!50001 VIEW `upperStickers` AS select `e`.`id` AS `expeditionFk`,`e`.`id` MOD 10000 AS `expedition`,ifnull(`rs`.`eta`,`util`.`VN_CURDATE`() + interval `srt`.`dayMinute`(`z`.`hour`) + 120 minute) AS `ETD`,`ve`.`ticketFk` AS `ticketFk`,right(ifnull(`t`.`routeFk`,`t`.`agencyModeFk`),3) AS `routeFk`,`z`.`name` AS `zonaTicket`,`rs`.`description` AS `truck`,`epo`.`workerCode` AS `worker`,`p`.`name` AS `labeler`,`ve`.`counter` AS `expeditionCounter`,`vn`.`ticketTotalVolume`(`t`.`id`) AS `m3`,`t`.`clientFk` AS `clientFk` from (((((((`srt`.`expedition` `e` left join `vn`.`expedition` `ve` on(`ve`.`id` = `e`.`id`)) left join `vn`.`ticket` `t` on(`t`.`id` = `ve`.`ticketFk`)) left join `vn`.`zone` `z` on(`z`.`id` = `t`.`zoneFk`)) left join `vn`.`routesMonitor` `rm` on(`t`.`routeFk` = `rm`.`routeFk`)) left join `vn`.`roadmapStop` `rs` on(`rm`.`expeditionTruckFk` = `rs`.`id`)) join `dipole`.`expedition_PrintOut` `epo` on(`epo`.`expeditionFk` = `e`.`id`)) join `vn`.`printer` `p` on(`p`.`id` = `epo`.`printerFk`)) */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -87525,7 +85731,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `especialPrice` AS select `p`.`Id_PrecioEspecial` AS `id`,`p`.`Id_Cliente` AS `clientFk`,`p`.`Id_Article` AS `itemFk`,`p`.`PrecioEspecial` AS `value` from `vn2008`.`PreciosEspeciales` `p` */;
+/*!50001 VIEW `especialPrice` AS select `sp`.`id` AS `id`,`sp`.`clientFk` AS `clientFk`,`sp`.`itemFk` AS `itemFk`,`sp`.`value` AS `value` from `specialPrice` `sp` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -87602,42 +85808,6 @@ USE `vn`;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
---
--- Final view structure for view `exchangeReportSource`
---
-
-/*!50001 DROP VIEW IF EXISTS `exchangeReportSource`*/;
-/*!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 `exchangeReportSource` AS select `e`.`dated` AS `dated`,cast(sum(`e`.`amountIn`) as decimal(10,2)) AS `amountIn`,cast(sum(`e`.`rateIn`) as decimal(10,4)) AS `rateIn`,cast(sum(`e`.`amountOut`) as decimal(10,2)) AS `amountOut`,cast(sum(`e`.`rateOut`) as decimal(10,4)) AS `rateOut`,cast(sum(`e`.`amountEntry`) as decimal(10,2)) AS `amountEntry`,cast(sum(`e`.`rateEntry`) as decimal(10,4)) AS `rateEntry`,cast(ifnull(`rr`.`value`,`rrc`.`simulatedValue`) as decimal(10,4)) AS `rateECB` from ((`exchangeReportSourcePrevious` `e` left join `referenceRate` `rr` on(`rr`.`dated` = `e`.`dated`)) join `referenceRateConfig` `rrc` on(1)) group by `e`.`dated` order by `e`.`dated` */;
-/*!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 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 = 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 `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 `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 `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 `exchangeInsuranceEntry` */;
-/*!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 `expeditionCommon`
--
@@ -87651,7 +85821,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `expeditionCommon` AS select `et`.`id` AS `truckFk`,`et`.`eta` AS `eta`,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`.`eta` >= `util`.`VN_CURDATE`() */;
+/*!50001 VIEW `expeditionCommon` AS select `rs`.`id` AS `truckFk`,`rs`.`eta` AS `eta`,ifnull(ucase(`rs`.`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 (((((`roadmapStop` `rs` left join `routesMonitor` `r` on(`rs`.`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 `rs`.`eta` >= `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 */;
@@ -87669,7 +85839,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` 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` > `util`.`VN_CURDATE`() + interval 1 day,ucase(dayname(`r`.`created`)),NULL) AS `nombreDia` from (((((((`expeditionTruck` `et` join `expeditionPallet` `ep` on(`ep`.`truckFk` = `et`.`id`)) join `expeditionScan` `es` on(`es`.`palletFk` = `ep`.`id`)) join `expedition` `e` on(`e`.`id` = `es`.`expeditionFk`)) join `ticket` `t` on(`t`.`id` = `e`.`ticketFk`)) join `route` `r` on(`r`.`id` = `t`.`routeFk`)) left join `routesMonitor` `rm` on(`rm`.`routeFk` = `r`.`id`)) left join `expeditionTruck` `et2` on(`et2`.`id` = `rm`.`expeditionTruckFk`)) group by `ep`.`id`,`t`.`routeFk` */;
+/*!50001 VIEW `expeditionPallet_Print` AS select `rs2`.`description` AS `truck`,`t`.`routeFk` AS `routeFk`,`r`.`description` AS `zone`,count(`es`.`id`) AS `eti`,`ep`.`id` AS `palletFk`,`rs`.`id` <=> `rm`.`expeditionTruckFk` AS `isMatch`,`t`.`warehouseFk` AS `warehouseFk`,if(`r`.`created` > `util`.`VN_CURDATE`() + interval 1 day,ucase(dayname(`r`.`created`)),NULL) AS `nombreDia` from (((((((`roadmapStop` `rs` join `expeditionPallet` `ep` on(`ep`.`truckFk` = `rs`.`id`)) join `expeditionScan` `es` on(`es`.`palletFk` = `ep`.`id`)) join `expedition` `e` on(`e`.`id` = `es`.`expeditionFk`)) join `ticket` `t` on(`t`.`id` = `e`.`ticketFk`)) join `route` `r` on(`r`.`id` = `t`.`routeFk`)) left join `routesMonitor` `rm` on(`rm`.`routeFk` = `r`.`id`)) left join `roadmapStop` `rs2` on(`rs2`.`id` = `rm`.`expeditionTruckFk`)) group by `ep`.`id`,`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 */;
@@ -87687,7 +85857,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!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`)) where `r`.`created` >= `util`.`yesterday`() group by `r`.`id` */;
+/*!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 `roadmapStop` `rs` on(`rs`.`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`)) where `r`.`created` >= `util`.`yesterday`() 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 */;
@@ -87723,7 +85893,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `expeditionScan_Monitor` AS select `et`.`id` AS `truckFk`,`et`.`eta` 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 VIEW `expeditionScan_Monitor` AS select `rs`.`id` AS `truckFk`,`rs`.`eta` AS `ETD`,`rs`.`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 ((`roadmapStop` `rs` left join `expeditionPallet` `ep` on(`ep`.`truckFk` = `rs`.`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 */;
@@ -87741,7 +85911,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!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 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(`rs`.`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 `roadmapStop` `rs` on(`rs`.`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 */;
@@ -87759,7 +85929,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!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`.`eta` > `util`.`VN_CURDATE`() */;
+/*!50001 VIEW `expeditionTicket_NoBoxes` AS select `t`.`id` AS `ticketFk`,`t`.`warehouseFk` AS `warehouseFk`,`t`.`routeFk` AS `routeFk`,`rs`.`description` AS `description` from (((`ticket` `t` left join `expedition` `e` on(`e`.`ticketFk` = `t`.`id`)) join `routesMonitor` `rm` on(`rm`.`routeFk` = `t`.`routeFk`)) join `roadmapStop` `rs` on(`rs`.`id` = `rm`.`expeditionTruckFk`)) where `e`.`id` is null and `rs`.`eta` > `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 */;
@@ -87782,6 +85952,24 @@ USE `vn`;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
+--
+-- Final view structure for view `expeditionTruck`
+--
+
+/*!50001 DROP VIEW IF EXISTS `expeditionTruck`*/;
+/*!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 `expeditionTruck` AS select `rs`.`id` AS `id`,`rs`.`roadmapFk` AS `roadmapFk`,`rs`.`warehouseFk` AS `warehouseFk`,`rs`.`eta` AS `eta`,`rs`.`description` AS `description`,`rs`.`bufferFk` AS `bufferFk`,`rs`.`created` AS `created`,`rs`.`userFk` AS `userFk` from `roadmapStop` `rs` */;
+/*!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 `expeditionTruck_Control`
--
@@ -87831,7 +86019,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `expeditionTruck_Control_Detail_Pallet` AS select `e`.`truckFk` AS `id`,`e`.`eta` AS `eta`,`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 VIEW `expeditionTruck_Control_Detail_Pallet` AS select `e`.`truckFk` AS `id`,`e`.`eta` AS `eta`,`e`.`description` AS `destino`,`e`.`palletFk` AS `pallet`,`e`.`routeFk` AS `route`,count(distinct `e`.`scanFk`) AS `scans`,`rs`.`description` AS `destinos`,sum(`e`.`truckFk` <> `e`.`expeditionTruckFk`) AS `fallos`,`e`.`expeditionTruckFk` AS `expeditionTruckFk`,max(`e`.`lastPacked`) AS `lastPacked` from (`expeditionCommon` `e` left join `roadmapStop` `rs` on(`rs`.`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 */;
@@ -88479,7 +86667,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `paymentExchangeInsurance` AS select `p`.`pago_sdc_id` AS `id`,`p`.`importe` AS `amount`,`p`.`fecha` AS `created`,`p`.`vencimiento` AS `dueDay`,`p`.`entity_id` AS `entityFk`,`p`.`ref` AS `ref`,`p`.`rate` AS `rate`,`p`.`empresa_id` AS `companyFk`,`p`.`financialProductTypefk` AS `financialProductTypefk`,`p`.`upperBarrier` AS `upperBarrier`,`p`.`lowerBarrier` AS `lowerBarrier`,`p`.`strike` AS `strike` from `vn2008`.`pago_sdc` `p` */;
+/*!50001 VIEW `paymentExchangeInsurance` AS select `ei`.`id` AS `pago_sdc_id`,`ei`.`amount` AS `importe`,`ei`.`dated` AS `fecha`,`ei`.`dueDated` AS `vencimiento`,`ei`.`entityFk` AS `entity_id`,`ei`.`ref` AS `ref`,`ei`.`rate` AS `rate`,`ei`.`companyFk` AS `empresa_id`,`ei`.`financialProductTypefk` AS `financialProductTypefk`,`ei`.`upperBarrier` AS `upperBarrier`,`ei`.`lowerBarrier` AS `lowerBarrier`,`ei`.`strike` AS `strike` from `exchangeInsurance` `ei` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -88605,7 +86793,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `routesControl` AS select `t`.`routeFk` AS `routeFk`,count(`e`.`id`) AS `expeditions`,count(`es`.`id`) AS `scanned`,count(distinct `es`.`palletFk`) AS `pallets`,max(`es`.`scanned`) AS `lastScanned`,max(`et`.`description`) AS `description`,max(`et`.`eta`) AS `eta` from ((((`ticket` `t` join `expedition` `e` on(`t`.`id` = `e`.`ticketFk`)) left join `expeditionScan` `es` on(`es`.`expeditionFk` = `e`.`id`)) left join `expeditionPallet` `ep` on(`ep`.`id` = `es`.`palletFk`)) left join `expeditionTruck` `et` on(`et`.`id` = `ep`.`truckFk`)) where `t`.`shipped` >= `util`.`VN_CURDATE`() and `t`.`routeFk` <> 0 group by `t`.`routeFk` order by max(`et`.`eta`) */;
+/*!50001 VIEW `routesControl` AS select `t`.`routeFk` AS `routeFk`,count(`e`.`id`) AS `expeditions`,count(`es`.`id`) AS `scanned`,count(distinct `es`.`palletFk`) AS `pallets`,max(`es`.`scanned`) AS `lastScanned`,max(`rs`.`description`) AS `description`,max(`rs`.`eta`) AS `eta` from ((((`ticket` `t` join `expedition` `e` on(`t`.`id` = `e`.`ticketFk`)) left join `expeditionScan` `es` on(`es`.`expeditionFk` = `e`.`id`)) left join `expeditionPallet` `ep` on(`ep`.`id` = `es`.`palletFk`)) left join `roadmapStop` `rs` on(`rs`.`id` = `ep`.`truckFk`)) where `t`.`shipped` >= `util`.`VN_CURDATE`() and `t`.`routeFk` <> 0 group by `t`.`routeFk` order by max(`rs`.`eta`) */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -88713,7 +86901,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!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` - ifnull(`t`.`zoneBonus`,0),`z`.`price` - `z`.`bonus`) / (`vc`.`standardFlowerBox` * 1000) * `z`.`inflation` 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 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` - ifnull(`t`.`zoneBonus`,0),`z`.`price` - `z`.`bonus`) / (`vc`.`standardFlowerBox` * 1000) * `z`.`inflation` 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` FORCE INDEX (PRIMARY) 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 */;
@@ -88731,7 +86919,7 @@ USE `vn`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!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 VIEW `saleVolume_Today_VNH` AS select `t`.`nickname` AS `Cliente`,`p`.`name` AS `Provincia`,`c`.`name` 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 */;
@@ -88898,24 +87086,6 @@ USE `vn`;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
---
--- Final view structure for view `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_unicode_ci */;
-/*!50001 CREATE ALGORITHM=UNDEFINED */
-/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `ticketMRW` AS select `vn`.`ticket`.`agencyModeFk` AS `id_Agencia`,`vn`.`ticket`.`companyFk` 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`,`vn`.`ticket`.`id` AS `Id_Ticket`,`vn`.`ticket`.`warehouseFk` AS `warehouse_id`,`Consignatarios`.`id_consigna` AS `Id_Consigna`,`Paises`.`Codigo` AS `CodigoPais`,`vn`.`ticket`.`shipped` AS `Fecha`,`province`.`province_id` AS `province_id`,`vn`.`ticket`.`landed` AS `landing` from ((((`vn2008`.`Clientes` join `vn2008`.`Consignatarios` on(`Clientes`.`id_cliente` = `Consignatarios`.`Id_cliente`)) join `vn`.`ticket` on(`Consignatarios`.`id_consigna` = `vn`.`ticket`.`addressFk`)) join `vn2008`.`province` on(`Consignatarios`.`province_id` = `province`.`province_id`)) join `vn2008`.`Paises` on(`province`.`Paises_Id` = `Paises`.`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 `ticketNotInvoiced`
--
@@ -89006,42 +87176,6 @@ USE `vn`;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
---
--- Final view structure for view `ticketToPrepare`
---
-
-/*!50001 DROP VIEW IF EXISTS `ticketToPrepare`*/;
-/*!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 `ticketToPrepare` AS select `m`.`Id_Ticket` AS `Id_Ticket`,`mk`.`Id_Movimiento` AS `Id_Movimiento`,`mk`.`Id_Movimiento_mark` AS `Id_Movimiento_mark`,`mk`.`Id_Trabajador` AS `Id_Trabjador`,`m`.`Id_Article` AS `Id_Article`,`m`.`Concepte` AS `Concepte`,`art`.`subName` AS `subName`,`mk`.`original_quantity` - ifnull(`is`.`quantity`,0) AS `Cantidad`,`mk`.`original_quantity` AS `original_quantity`,if(hour(`t`.`shipped`),hour(`t`.`shipped`),hour(`z`.`hour`)) 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`.`zoneFk` AS `zoneFk`,`p`.`sectorFk` AS `sectorFk` from ((((((((((`vn2008`.`Movimientos_mark` `mk` join `vn2008`.`Movimientos` `m` on(`m`.`Id_Movimiento` = `mk`.`Id_Movimiento`)) join `vn`.`ticket` `t` on(`m`.`Id_Ticket` = `t`.`id`)) join `vn`.`agencyMode` `am` on(`am`.`id` = `t`.`agencyModeFk`)) join `vn`.`address` `a` on(`a`.`id` = `t`.`addressFk`)) left join `vn`.`itemShelvingSale` `is` on(`is`.`saleFk` = `mk`.`Id_Movimiento`)) left join `vn`.`itemShelving` `ish` on(`ish`.`id` = `is`.`itemShelvingFk`)) left join `vn`.`shelving` `sh` on(`sh`.`code` = `ish`.`shelvingFk`)) left join `vn`.`parking` `p` on(`p`.`id` = `sh`.`parkingFk`)) left join `vn2008`.`Articles` `art` on(`art`.`Id_Article` = `m`.`Id_Article`)) left join `vn`.`zone` `z` on(`z`.`id` = `t`.`zoneFk`)) where `mk`.`stateFk` = 26 and `mk`.`valor` <> 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 `ticketeToPreparePrepared`
---
-
-/*!50001 DROP VIEW IF EXISTS `ticketeToPreparePrepared`*/;
-/*!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 `ticketeToPreparePrepared` AS select `m`.`Id_Ticket` AS `Id_Ticket`,`mk`.`Id_Movimiento` AS `Id_Movimiento`,`mk`.`Id_Movimiento_mark` AS `Id_Movimiento_mark`,`mk`.`Id_Trabajador` AS `Id_Trabjador`,`m`.`Id_Article` AS `Id_Article`,`m`.`Concepte` AS `Concepte`,`art`.`subName` AS `subName`,`mk`.`original_quantity` - ifnull(`is`.`quantity`,0) AS `Cantidad`,`mk`.`original_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` from ((((((((`vn2008`.`Movimientos_mark` `mk` join `vn`.`state` `st` on(`st`.`id` = `mk`.`stateFk`)) join `vn2008`.`Movimientos` `m` on(`m`.`Id_Movimiento` = `mk`.`Id_Movimiento`)) join `vn`.`ticket` `t` on(`m`.`Id_Ticket` = `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`.`Id_Article`)) left join `vn2008`.`Trabajadores` `t` on(`t`.`Id_Trabajador` = `mk`.`Id_Trabajador`)) where `st`.`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 `tr2`
--
@@ -89403,7 +87537,7 @@ USE `vn2008`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `Clientes` AS select `c`.`id` AS `id_cliente`,`c`.`name` AS `cliente`,`c`.`fi` AS `if`,`c`.`socialName` AS `razonSocial`,`c`.`contact` AS `contacto`,`c`.`street` AS `domicilio`,`c`.`city` AS `poblacion`,`c`.`postcode` AS `codPostal`,`c`.`phone` AS `telefono`,`c`.`mobile` AS `movil`,`c`.`isRelevant` AS `real`,`c`.`email` AS `e-mail`,`c`.`iban` AS `iban`,`c`.`dueDay` AS `vencimiento`,`c`.`accountingAccount` AS `Cuenta`,`c`.`isEqualizated` AS `RE`,`c`.`provinceFk` AS `province_id`,`c`.`hasToInvoice` AS `invoice`,`c`.`credit` AS `credito`,`c`.`countryFk` AS `Id_Pais`,`c`.`isActive` AS `activo`,`c`.`gestdocFk` AS `gestdoc_id`,`c`.`quality` AS `calidad`,`c`.`payMethodFk` AS `pay_met_id`,`c`.`created` AS `created`,`c`.`isToBeMailed` AS `mail`,`c`.`contactChannelFk` AS `chanel_id`,`c`.`hasSepaVnl` AS `sepaVnl`,`c`.`hasCoreVnl` AS `coreVnl`,`c`.`hasCoreVnh` AS `coreVnh`,`c`.`hasLcr` AS `hasLcr`,`c`.`defaultAddressFk` AS `default_address`,`c`.`riskCalculated` AS `risk_calculated`,`c`.`hasToInvoiceByAddress` AS `invoiceByAddress`,`c`.`isTaxDataChecked` AS `contabilizado`,`c`.`isFreezed` AS `congelado`,`c`.`creditInsurance` AS `creditInsurance`,`c`.`isCreatedAsServed` AS `isCreatedAsServed`,`c`.`hasInvoiceSimplified` AS `hasInvoiceSimplified`,`c`.`salesPersonFk` AS `Id_Trabajador`,`c`.`isVies` AS `vies`,`c`.`eypbc` AS `EYPBC`,`c`.`bankEntityFk` AS `bankEntityFk`,`c`.`typeFk` AS `typeFk` from `vn`.`client` `c` */;
+/*!50001 VIEW `Clientes` AS select `c`.`id` AS `id_cliente`,`c`.`name` AS `cliente`,`c`.`fi` AS `if`,`c`.`socialName` AS `razonSocial`,`c`.`contact` AS `contacto`,`c`.`street` AS `domicilio`,`c`.`city` AS `poblacion`,`c`.`postcode` AS `codPostal`,`c`.`phone` AS `telefono`,`c`.`mobile` AS `movil`,`c`.`isRelevant` AS `real`,`c`.`email` AS `e-mail`,`c`.`iban` AS `iban`,`c`.`dueDay` AS `vencimiento`,`c`.`accountingAccount` AS `Cuenta`,`c`.`isEqualizated` AS `RE`,`c`.`provinceFk` AS `province_id`,`c`.`hasToInvoice` AS `invoice`,`c`.`credit` AS `credito`,`c`.`countryFk` AS `Id_Pais`,`c`.`isActive` AS `activo`,`c`.`gestdocFk` AS `gestdoc_id`,`c`.`quality` AS `calidad`,`c`.`payMethodFk` AS `pay_met_id`,`c`.`created` AS `created`,`c`.`isToBeMailed` AS `mail`,`c`.`contactChannelFk` AS `chanel_id`,`c`.`hasSepaVnl` AS `sepaVnl`,`c`.`hasCoreVnl` AS `coreVnl`,`c`.`hasCoreVnh` AS `coreVnh`,`c`.`hasLcr` AS `hasLcr`,`c`.`defaultAddressFk` AS `default_address`,`c`.`riskCalculated` AS `risk_calculated`,`c`.`hasToInvoiceByAddress` AS `invoiceByAddress`,`c`.`isTaxDataChecked` AS `contabilizado`,`c`.`isFreezed` AS `congelado`,`c`.`creditInsurance` AS `creditInsurance`,`c`.`isCreatedAsServed` AS `isCreatedAsServed`,`c`.`hasInvoiceSimplified` AS `hasInvoiceSimplified`,`c`.`salesPersonFk` AS `Id_Trabajador`,`c`.`isVies` AS `vies`,`c`.`bankEntityFk` AS `bankEntityFk`,`c`.`typeFk` AS `typeFk` from `vn`.`client` `c` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -89434,12 +87568,12 @@ USE `vn2008`;
/*!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 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 `Compres` AS select `c`.`id` AS `Id_Compra`,`c`.`entryFk` AS `Id_Entrada`,`c`.`itemFk` AS `Id_Article`,`c`.`buyingValue` AS `Costefijo`,`c`.`quantity` AS `Cantidad`,`c`.`packagingFk` AS `Id_Cubo`,`c`.`stickers` AS `Etiquetas`,`c`.`freightValue` AS `Portefijo`,`c`.`packageValue` AS `Embalajefijo`,`c`.`comissionValue` AS `Comisionfija`,`c`.`packing` AS `Packing`,`c`.`grouping` AS `grouping`,`c`.`groupingMode` AS `caja`,`c`.`location` AS `Nicho`,`c`.`price1` AS `Tarifa1`,`c`.`price2` AS `Tarifa2`,`c`.`price3` AS `Tarifa3`,`c`.`minPrice` AS `PVP`,`c`.`printedStickers` AS `Vida`,`c`.`isChecked` AS `punteo`,`c`.`ektFk` AS `buy_edi_id`,`c`.`created` AS `odbc_date`,`c`.`isIgnored` AS `Novincular`,`c`.`isPickedOff` AS `isPickedOff`,`c`.`workerFk` AS `Id_Trabajador`,`c`.`weight` AS `weight`,`c`.`dispatched` AS `dispatched`,`c`.`containerFk` AS `container_id`,`c`.`itemOriginalFk` AS `itemOriginalFk` from `vn`.`buy` `c` */;
+/*!50001 VIEW `Compres` AS select `c`.`id` AS `Id_Compra`,`c`.`entryFk` AS `Id_Entrada`,`c`.`itemFk` AS `Id_Article`,`c`.`buyingValue` AS `Costefijo`,`c`.`quantity` AS `Cantidad`,`c`.`packagingFk` AS `Id_Cubo`,`c`.`stickers` AS `Etiquetas`,`c`.`freightValue` AS `Portefijo`,`c`.`packageValue` AS `Embalajefijo`,`c`.`comissionValue` AS `Comisionfija`,`c`.`packing` AS `Packing`,`c`.`grouping` AS `grouping`,`c`.`groupingMode` AS `caja`,`c`.`location` AS `Nicho`,`c`.`price1` AS `Tarifa1`,`c`.`price2` AS `Tarifa2`,`c`.`price3` AS `Tarifa3`,`c`.`minPrice` AS `PVP`,`c`.`printedStickers` AS `Vida`,`c`.`isChecked` AS `punteo`,`c`.`ektFk` AS `buy_edi_id`,`c`.`created` AS `odbc_date`,`c`.`isIgnored` AS `Novincular`,`c`.`isPickedOff` AS `isPickedOff`,`c`.`workerFk` AS `Id_Trabajador`,`c`.`weight` AS `weight`,`c`.`dispatched` AS `dispatched`,`c`.`itemOriginalFk` AS `itemOriginalFk` from `vn`.`buy` `c` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -89673,7 +87807,7 @@ USE `vn2008`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `Ordenes` AS select `tr`.`id` AS `Id_ORDEN`,`tr`.`description` AS `ORDEN`,`tr`.`requesterFk` AS `requesterFk`,`tr`.`attenderFk` AS `attenderFk`,`tr`.`quantity` AS `CANTIDAD`,`tr`.`itemFk` AS `Id_ARTICLE`,`tr`.`price` AS `PRECIOMAX`,`tr`.`isOk` AS `isOk`,`tr`.`saleFk` AS `Id_Movimiento`,`tr`.`ticketFk` AS `ticketFk`,`tr`.`response` AS `COMENTARIO`,`tr`.`created` AS `odbc_date`,`tr`.`ordered` AS `datORDEN`,`tr`.`shipped` AS `datTICKET`,`tr`.`salesPersonCode` AS `CodVENDEDOR`,`tr`.`buyerCode` AS `CodCOMPRADOR`,`tr`.`clientFk` AS `Id_CLIENTE`,`tr`.`total` AS `TOTAL`,`tr`.`buyed` AS `datCOMPRA` from `vn`.`ticketRequest` `tr` */;
+/*!50001 VIEW `Ordenes` AS select `tr`.`id` AS `Id_ORDEN`,`tr`.`description` AS `ORDEN`,`tr`.`requesterFk` AS `requesterFk`,`tr`.`attenderFk` AS `attenderFk`,`tr`.`quantity` AS `CANTIDAD`,`tr`.`itemFk` AS `Id_ARTICLE`,`tr`.`price` AS `PRECIOMAX`,`tr`.`isOk` AS `isOk`,`tr`.`saleFk` AS `Id_Movimiento`,`tr`.`ticketFk` AS `ticketFk`,`tr`.`response` AS `COMENTARIO`,`tr`.`created` AS `odbc_date`,`tr`.`ordered` AS `datORDEN`,`tr`.`shipped` AS `datTICKET`,`tr`.`salesPersonCode` AS `CodVENDEDOR`,`tr`.`clientFk` AS `Id_CLIENTE`,`tr`.`total` AS `TOTAL`,`tr`.`buyed` AS `datCOMPRA` from `vn`.`ticketRequest` `tr` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -89727,7 +87861,7 @@ USE `vn2008`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `Paises` AS select `c`.`id` AS `Id`,`c`.`country` AS `Pais`,`c`.`CEE` AS `CEE`,`c`.`isUeeMember` AS `isUeeMember`,`c`.`code` AS `Codigo`,`c`.`currencyFk` AS `Id_Moneda`,`c`.`geoFk` AS `geoFk`,`c`.`ibanLength` AS `ibanLength`,`c`.`hasDailyInvoice` AS `hasDailyInvoice` from `vn`.`country` `c` */;
+/*!50001 VIEW `Paises` AS select `c`.`id` AS `Id`,`c`.`name` AS `Pais`,`c`.`CEE` AS `CEE`,`c`.`isUeeMember` AS `isUeeMember`,`c`.`code` AS `Codigo`,`c`.`currencyFk` AS `Id_Moneda`,`c`.`geoFk` AS `geoFk`,`c`.`ibanLength` AS `ibanLength`,`c`.`hasDailyInvoice` AS `hasDailyInvoice` from `vn`.`country` `c` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -89763,7 +87897,7 @@ USE `vn2008`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `Proveedores` AS select `s`.`id` AS `Id_Proveedor`,`s`.`name` AS `Proveedor`,`s`.`account` AS `cuenta`,`s`.`countryFk` AS `pais_id`,`s`.`nif` AS `NIF`,`s`.`isFarmer` AS `Agricola`,`s`.`phone` AS `Telefono`,`s`.`retAccount` AS `cuentaret`,`s`.`commission` AS `ComisionProveedor`,`s`.`created` AS `odbc_time`,`s`.`postcodeFk` AS `postcode_id`,`s`.`isActive` AS `active`,`s`.`street` AS `Domicilio`,`s`.`city` AS `Localidad`,`s`.`provinceFk` AS `province_id`,`s`.`postCode` AS `codpos`,`s`.`payMethodFk` AS `pay_met_id`,`s`.`payDemFk` AS `pay_dem_id`,`s`.`nickname` AS `Alias`,`s`.`isOfficial` AS `oficial`,`s`.`workerFk` AS `workerFk`,`s`.`payDay` AS `pay_day`,`s`.`isReal` AS `serious`,`s`.`note` AS `notas`,`s`.`taxTypeSageFk` AS `taxTypeSageFk`,`s`.`withholdingSageFk` AS `withholdingSageFk`,`s`.`isTrucker` AS `isTrucker`,`s`.`transactionTypeSageFk` AS `transactionTypeSageFk`,`s`.`supplierActivityFk` AS `supplierActivityFk`,`s`.`healthRegister` AS `healthRegister`,`s`.`isPayMethodChecked` AS `isPayMethodChecked` from `vn`.`supplier` `s` */;
+/*!50001 VIEW `Proveedores` AS select `s`.`id` AS `Id_Proveedor`,`s`.`name` AS `Proveedor`,`s`.`account` AS `cuenta`,`s`.`countryFk` AS `pais_id`,`s`.`nif` AS `NIF`,`s`.`phone` AS `Telefono`,`s`.`retAccount` AS `cuentaret`,`s`.`commission` AS `ComisionProveedor`,`s`.`created` AS `odbc_time`,`s`.`postcodeFk` AS `postcode_id`,`s`.`isActive` AS `active`,`s`.`street` AS `Domicilio`,`s`.`city` AS `Localidad`,`s`.`provinceFk` AS `province_id`,`s`.`postCode` AS `codpos`,`s`.`payMethodFk` AS `pay_met_id`,`s`.`payDemFk` AS `pay_dem_id`,`s`.`nickname` AS `Alias`,`s`.`isOfficial` AS `oficial`,`s`.`workerFk` AS `workerFk`,`s`.`payDay` AS `pay_day`,`s`.`isReal` AS `serious`,`s`.`note` AS `notas`,`s`.`taxTypeSageFk` AS `taxTypeSageFk`,`s`.`withholdingSageFk` AS `withholdingSageFk`,`s`.`isTrucker` AS `isTrucker`,`s`.`transactionTypeSageFk` AS `transactionTypeSageFk`,`s`.`supplierActivityFk` AS `supplierActivityFk`,`s`.`healthRegister` AS `healthRegister`,`s`.`isPayMethodChecked` AS `isPayMethodChecked` from `vn`.`supplier` `s` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -90195,7 +88329,7 @@ USE `vn2008`;
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
-/*!50001 VIEW `albaran` AS select `dn`.`id` AS `albaran_id`,`dn`.`ref` AS `ref`,`dn`.`note` AS `note`,`dn`.`shipped` AS `fecha`,`dn`.`landed` AS `fecha_entrega`,`dn`.`amount` AS `valor`,`dn`.`supplierFk` AS `Id_Proveedor`,`dn`.`companyFk` AS `empresa_id`,`dn`.`warehouseFk` AS `warehouse_id`,`dn`.`stateFk` AS `albaran_state_id`,`dn`.`workerFk` AS `Id_Trabajador`,`dn`.`supervisorFk` AS `Id_Responsable`,`dn`.`departmentFk` AS `department_id`,`dn`.`invoiceInFk` AS `recibida_id`,`dn`.`farmingFk` AS `farmingFk` from `vn`.`deliveryNote` `dn` */;
+/*!50001 VIEW `albaran` AS select `dn`.`id` AS `albaran_id`,`dn`.`ref` AS `ref`,`dn`.`note` AS `note`,`dn`.`shipped` AS `fecha`,`dn`.`landed` AS `fecha_entrega`,`dn`.`amount` AS `valor`,`dn`.`supplierFk` AS `Id_Proveedor`,`dn`.`companyFk` AS `empresa_id`,`dn`.`warehouseFk` AS `warehouse_id`,`dn`.`stateFk` AS `albaran_state_id`,`dn`.`workerFk` AS `Id_Trabajador`,`dn`.`supervisorFk` AS `Id_Responsable`,`dn`.`departmentFk` AS `department_id`,`dn`.`invoiceInFk` AS `recibida_id` from `vn`.`deliveryNote` `dn` */;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
@@ -91721,4 +89855,4 @@ USE `vn2008`;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2024-05-07 5:48:20
+-- Dump completed on 2024-05-28 6:58:24
diff --git a/db/dump/.dump/triggers.sql b/db/dump/.dump/triggers.sql
index ad4eb24a58..fd10421389 100644
--- a/db/dump/.dump/triggers.sql
+++ b/db/dump/.dump/triggers.sql
@@ -1855,6 +1855,26 @@ DELIMITER ;
/*!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`.`agency_beforeInsert`
+ BEFORE INSERT ON `agency`
+ FOR EACH ROW
+BEGIN
+ SET NEW.editorFk = 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 = utf8mb4 */ ;
+/*!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`.`agency_afterInsert`
AFTER INSERT ON `agency`
FOR EACH ROW
@@ -3211,12 +3231,6 @@ BEGIN
UPDATE `address` SET isDefaultAddress = TRUE
WHERE id = NEW.defaultAddressFk;
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 */ ;
@@ -3775,7 +3789,7 @@ DELIMITER ;;
BEFORE INSERT ON `country`
FOR EACH ROW
BEGIN
- SET NEW.geoFk = zoneGeo_new('country', NEW.country, NULL);
+ SET NEW.geoFk = zoneGeo_new('country', NEW.name, NULL);
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -3797,14 +3811,17 @@ DELIMITER ;;
BEGIN
UPDATE sage.Naciones
SET countryFk = NEW.id
- WHERE Nacion = NEW.country;
+ WHERE Nacion = NEW.name;
IF ROW_COUNT() = 0 THEN
CALL mail_insert(
'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 \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)
+ 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.name,
+ ' en la tabla sage.Naciones y actualizar el campo sage.Naciones.countryFk con el valor ', NEW.id)
);
END IF;
END */;;
@@ -3848,8 +3865,8 @@ DELIMITER ;;
AFTER UPDATE ON `country`
FOR EACH ROW
BEGIN
- IF !(OLD.country <=> NEW.country) THEN
- UPDATE zoneGeo SET `name` = NEW.country
+ IF !(OLD.name <=> NEW.name) THEN
+ UPDATE zoneGeo SET `name` = NEW.name
WHERE id = NEW.geoFk;
END IF;
END */;;
@@ -4311,10 +4328,32 @@ DELIMITER ;
/*!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`.`deviceProductionUser_afterInsert`
+ AFTER INSERT ON `deviceProductionUser`
+ FOR EACH ROW
+BEGIN
+ CALL worker_checkMultipleDevice(NEW.userFk);
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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`.`deviceProductionUser_beforeUpdate`
BEFORE UPDATE ON `deviceProductionUser`
FOR EACH ROW
BEGIN
+
+ CALL worker_checkMultipleDevice(NEW.userFk);
SET NEW.editorFk = account.myUser_getId();
END */;;
DELIMITER ;
@@ -4577,9 +4616,19 @@ BEGIN
DECLARE vIsVirtual BOOL;
DECLARE vPrintedCount INT;
DECLARE vHasDistinctWarehouses BOOL;
+ DECLARE vTotalBuy INT;
IF NEW.isBooked = OLD.isBooked THEN
CALL entry_checkBooked(OLD.id);
+ ELSE
+ IF NEW.isBooked THEN
+ SELECT COUNT(*) INTO vTotalBuy
+ FROM buy
+ WHERE entryFk = NEW.id;
+ IF NOT vTotalBuy THEN
+ CALL util.throw('Entry must have lines to be marked booked');
+ END IF;
+ END IF;
END IF;
SET NEW.editorFk = account.myUser_getId();
@@ -4587,7 +4636,7 @@ BEGIN
IF NOT (NEW.travelFk <=> OLD.travelFk) THEN
IF NEW.travelFk IS NOT NULL AND NOT travel_hasUniqueAwb(NEW.travelFk) THEN
- CALL util.throw('The travel is incorrect, there is a different AWB in the associated entries');
+ CALL util.throw('The travel is incorrect, there is a different AWB in the associated entries');
END IF;
SELECT COUNT(*) > 0 INTO vIsVirtual
@@ -5036,50 +5085,6 @@ BEGIN
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 */ ;
-/*!50003 SET @saved_cs_client = @@character_set_client */ ;
-/*!50003 SET @saved_cs_results = @@character_set_results */ ;
-/*!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`.`expeditionTruck_beforeInsert`
- BEFORE INSERT ON `expeditionTruck`
- FOR EACH ROW
-BEGIN
-
- SET NEW.description = UCASE(NEW.description);
-
-END */;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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`.`expeditionTruck_beforeUpdate`
- BEFORE UPDATE ON `expeditionTruck`
- FOR EACH ROW
-BEGIN
-
- SET NEW.description = UCASE(NEW.description);
-
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -5295,10 +5300,6 @@ DELIMITER ;;
BEGIN
DECLARE vWithholdingSageFk INT;
- IF NEW.isBooked = OLD.isBooked THEN
- CALL invoiceIn_checkBooked(OLD.id);
- END IF;
-
IF NOT (NEW.supplierRef <=> OLD.supplierRef) AND NOT util.checkPrintableChars(NEW.supplierRef) THEN
CALL util.throw('The invoiceIn reference contains invalid characters');
END IF;
@@ -5419,74 +5420,12 @@ DELIMITER ;
/*!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`.`invoiceInCorrection_beforeInsert`
- BEFORE INSERT ON `invoiceInCorrection`
- FOR EACH ROW
-BEGIN
- CALL invoiceIn_checkBooked(NEW.correctingFk);
-END */;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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`.`invoiceInCorrection_beforeUpdate`
- BEFORE UPDATE ON `invoiceInCorrection`
- FOR EACH ROW
-BEGIN
- CALL invoiceIn_checkBooked(OLD.correctingFk);
-END */;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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`.`invoiceInCorrection_beforeDelete`
- BEFORE DELETE ON `invoiceInCorrection`
- FOR EACH ROW
-BEGIN
- CALL invoiceIn_checkBooked(OLD.correctingFk);
-END */;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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`.`invoiceInDueDay_beforeInsert`
BEFORE INSERT ON `invoiceInDueDay`
FOR EACH ROW
BEGIN
DECLARE vIsNotified BOOLEAN;
- CALL invoiceIn_checkBooked(NEW.invoiceInFk);
-
SET NEW.editorFk = account.myUser_getId();
SELECT isNotified INTO vIsNotified
@@ -5529,7 +5468,6 @@ DELIMITER ;;
BEGIN
DECLARE vIsNotified BOOLEAN;
- CALL invoiceIn_checkBooked(OLD.invoiceInFk);
SET NEW.editorFk = account.myUser_getId();
SELECT isNotified INTO vIsNotified
@@ -5566,26 +5504,6 @@ DELIMITER ;
/*!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`.`invoiceInDueDay_beforeDelete`
- BEFORE DELETE ON `invoiceInDueDay`
- FOR EACH ROW
-BEGIN
- CALL invoiceIn_checkBooked(OLD.invoiceInFk);
-END */;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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`.`invoiceInDueDay_afterDelete`
AFTER DELETE ON `invoiceInDueDay`
FOR EACH ROW
@@ -5610,66 +5528,6 @@ DELIMITER ;
/*!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`.`invoiceInIntrastat_beforeInsert`
- BEFORE INSERT ON `invoiceInIntrastat`
- FOR EACH ROW
-BEGIN
- CALL invoiceIn_checkBooked(NEW.invoiceInFk);
-END */;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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`.`invoiceInIntrastat_beforeUpdate`
- BEFORE UPDATE ON `invoiceInIntrastat`
- FOR EACH ROW
-BEGIN
- CALL invoiceIn_checkBooked(OLD.invoiceInFk);
-END */;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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`.`invoiceInIntrastat_beforeDelete`
- BEFORE DELETE ON `invoiceInIntrastat`
- FOR EACH ROW
-BEGIN
- CALL invoiceIn_checkBooked(OLD.invoiceInFk);
-END */;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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`.`invoiceInTax_beforeInsert`
BEFORE INSERT ON `invoiceInTax`
FOR EACH ROW
@@ -5695,8 +5553,6 @@ DELIMITER ;;
BEFORE UPDATE ON `invoiceInTax`
FOR EACH ROW
BEGIN
- CALL invoiceIn_checkBooked(OLD.invoiceInFk);
-
IF NOT (NEW.invoiceInFk <=> OLD.invoiceInFk) THEN
CALL invoiceInTax_afterUpsert(NEW.invoiceInFk);
END IF;
@@ -5717,26 +5573,6 @@ DELIMITER ;
/*!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`.`invoiceInTax_beforeDelete`
- BEFORE DELETE ON `invoiceInTax`
- FOR EACH ROW
-BEGIN
- CALL invoiceIn_checkBooked(OLD.invoiceInFk);
-END */;;
-DELIMITER ;
-/*!50003 SET sql_mode = @saved_sql_mode */ ;
-/*!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`.`invoiceInTax_afterDelete`
AFTER DELETE ON `invoiceInTax`
FOR EACH ROW
@@ -6941,94 +6777,95 @@ DELIMITER ;;
BEFORE INSERT ON `payment`
FOR EACH ROW
BEGIN
- DECLARE cuenta_banco,cuenta_proveedor DOUBLE;
- DECLARE vNewBookEntry INT;
- DECLARE bolCASH BOOLEAN;
- DECLARE isSupplierActive BOOLEAN;
+ DECLARE vBankAccount DOUBLE;
+ DECLARE vSupplierAccount DOUBLE;
+ DECLARE vNewBookEntry INT;
+ DECLARE vIsCash BOOLEAN;
+ DECLARE vIsSupplierActive 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 accounting a
- JOIN accountingType at2 ON at2.id = a.accountingTypeFk
- WHERE a.id = NEW.bankFk;
+ -- PAK 10/02/15 No se asientan los pagos directamente, salvo en el caso de las cajas de CASH
+ SELECT (at2.code = 'cash') INTO vIsCash
+ FROM accounting a
+ JOIN accountingType at2 ON at2.id = a.accountingTypeFk
+ WHERE a.id = NEW.bankFk;
- IF bolCASH THEN
-
- SELECT account INTO cuenta_banco
- FROM accounting
- WHERE id = NEW.bankFk;
-
- SELECT account INTO cuenta_proveedor
- FROM supplier
- WHERE id = NEW.supplierFk;
+ IF vIsCash THEN
+ SELECT account INTO vBankAccount
+ FROM accounting
+ WHERE id = NEW.bankFk;
- CALL 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;
-
- 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
- WHERE s.id = NEW.supplierFk;
- END IF;
- END IF;
-
- SET NEW.dueDated = IFNULL(NEW.dueDated, NEW.received);
-
- SELECT isActive INTO isSupplierActive
+ SELECT account INTO vSupplierAccount
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 */;;
+
+ CALL ledger_next(YEAR(NEW.received), NEW.companyFk, 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 vBankAccount SUBCTA,
+ vSupplierAccount CONTRA,
+ 0 EURODEBE,
+ NEW.amount + NEW.bankingFees EUROHABER
+ UNION ALL
+ SELECT vSupplierAccount SUBCTA,
+ vBankAccount 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)),
+ vBankAccount,
+ 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;
+
+ SET NEW.dueDated = IFNULL(NEW.dueDated, NEW.received);
+
+ SELECT isActive INTO vIsSupplierActive
+ FROM supplier
+ WHERE id = NEW.supplierFk;
+
+ IF vIsSupplierActive = 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 */ ;
@@ -7617,6 +7454,48 @@ DELIMITER ;
/*!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`.`expeditionTruck_beforeInsert`
+ BEFORE INSERT ON `roadmapStop` FOR EACH ROW
+BEGIN
+
+ SET NEW.description = UCASE(NEW.description);
+
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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`.`expeditionTruck_beforeUpdate`
+ BEFORE UPDATE ON `roadmapStop` FOR EACH ROW
+BEGIN
+
+ SET NEW.description = UCASE(NEW.description);
+
+END */;;
+DELIMITER ;
+/*!50003 SET sql_mode = @saved_sql_mode */ ;
+/*!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_beforeInsert`
BEFORE INSERT ON `route`
FOR EACH ROW
@@ -8459,8 +8338,8 @@ DELIMITER ;;
AFTER INSERT ON `solunionCAP`
FOR EACH ROW
BEGIN
- UPDATE vn2008.Clientes c
- JOIN creditClassification cc ON c.Id_Cliente = cc.client
+ UPDATE client c
+ JOIN creditClassification cc ON cc.client = c.id
JOIN creditInsurance ci ON ci.creditClassification = cc.id
SET creditInsurance = ci.credit * 2 WHERE ci.id = NEW.creditInsurance;
END */;;
@@ -8483,13 +8362,13 @@ DELIMITER ;;
FOR EACH ROW
BEGIN
IF NEW.dateLeaving IS NOT NULL THEN
- UPDATE vn2008.Clientes c
- JOIN creditClassification cc ON c.Id_Cliente = cc.client
+ UPDATE client c
+ JOIN creditClassification cc ON cc.client = c.id
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
+ UPDATE client c
+ JOIN creditClassification cc ON cc.client = c.id
JOIN creditInsurance ci ON ci.creditClassification = cc.id
SET creditInsurance = ci.credit * 2 WHERE ci.id = OLD.creditInsurance;
END IF;
@@ -8512,8 +8391,8 @@ DELIMITER ;;
BEFORE DELETE ON `solunionCAP`
FOR EACH ROW
BEGIN
- UPDATE vn2008.Clientes c
- JOIN creditClassification cc ON c.Id_Cliente = cc.client
+ UPDATE client c
+ JOIN creditClassification cc ON cc.client = c.id
JOIN creditInsurance ci ON ci.creditClassification = cc.id
SET creditInsurance = ci.credit WHERE ci.id = OLD.creditInsurance;
END */;;
@@ -9106,6 +8985,8 @@ BEGIN
UPDATE expedition
SET hasNewRoute = TRUE
WHERE ticketFk = NEW.id;
+
+ CALL ticket_doCmr(NEW.id);
END IF;
END */;;
DELIMITER ;
@@ -9463,7 +9344,6 @@ DELIMITER ;;
FOR EACH ROW
BEGIN
SET NEW.editorFk = account.myUser_getId();
- CALL ticketRefund_beforeUpsert(NEW.refundTicketFk, NEW.originalTicketFk);
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -9484,7 +9364,6 @@ DELIMITER ;;
FOR EACH ROW
BEGIN
SET NEW.editorFk = account.myUser_getId();
- CALL ticketRefund_beforeUpsert(NEW.refundTicketFk, NEW.originalTicketFk);
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -9539,7 +9418,7 @@ BEGIN
END IF;
IF NEW.attenderFk IS NULL THEN
- SET NEW.attenderFk = (SELECT w.id FROM worker w WHERE w.code = NEW.buyerCode);
+ SET NEW.attenderFk = (SELECT defaultAttenderFk FROM ticketConfig LIMIT 1);
END IF;
END */;;
DELIMITER ;
@@ -9569,10 +9448,6 @@ BEGIN
IF NEW.salesPersonCode <> OLD.salesPersonCode THEN
SET NEW.requesterFk = (SELECT w.id FROM worker w WHERE w.code = NEW.salesPersonCode);
END IF;
-
- IF NEW.buyerCode <> OLD.buyerCode THEN
- SET NEW.attenderFk = (SELECT w.id FROM worker w WHERE w.code = NEW.buyerCode);
- END IF;
END */;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -9804,11 +9679,6 @@ BEGIN
`changedModel` = 'TicketTracking',
`changedModelId` = OLD.id,
`userFk` = account.myUser_getId();
-
- CALL util.debugAdd('deletedState',
- CONCAT('interFk: ', OLD.id,
- ' ticketFk: ', OLD.ticketFk,
- ' stateFk: ', OLD.stateFk));
SELECT i.ticketFk, i.id, s.`name`
INTO vTicketFk, vTicketTrackingFk, vStateName
@@ -10954,4 +10824,4 @@ USE `vn2008`;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2024-05-07 5:48:41
+-- Dump completed on 2024-05-28 6:58:42
diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql
index 06e94c99ed..6818e7200a 100644
--- a/db/dump/fixtures.before.sql
+++ b/db/dump/fixtures.before.sql
@@ -162,7 +162,7 @@ INSERT INTO `vn`.`currency`(`id`, `code`, `name`, `ratio`)
(4, 'JPY', 'Yen Japones', 1),
(5, 'CNY', 'Yuan Chino', 1.2);
-INSERT INTO `vn`.`country`(`id`, `country`, `isUeeMember`, `code`, `currencyFk`, `ibanLength`, `continentFk`, `hasDailyInvoice`, `CEE`)
+INSERT INTO `vn`.`country`(`id`, `name`, `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),
@@ -762,7 +762,12 @@ INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeF
(30, 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(), NULL, NULL),
(31, 1, 8, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL + 2 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL),
(32, 1, 8, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL + 2 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE(), NULL, NULL),
- (33, 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(), NULL, NULL);
+ (33, 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(), NULL, NULL),
+ (34, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1103, 'BEJAR', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL),
+ (35, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Somewhere in Philippines', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL),
+ (36, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1102, 'Ant-Man Adventure', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL),
+ (37, 1, 1, 1, 3, util.VN_CURDATE(), util.VN_CURDATE(), 1110, 'Deadpool swords', 123, NULL, 0, 1, 16, 0, util.VN_CURDATE(), NULL, NULL);
+
INSERT INTO `vn`.`ticketObservation`(`id`, `ticketFk`, `observationTypeFk`, `description`)
VALUES
(1, 11, 1, 'ready'),
@@ -808,7 +813,10 @@ INSERT INTO `vn`.`ticketTracking`(`ticketFk`, `stateFk`, `userFk`, `created`)
(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());
+ (24, 16, 21, util.VN_NOW()),
+ (34, 14, 49, util.VN_NOW()),
+ (35, 14, 18, util.VN_NOW()),
+ (36, 14, 18, util.VN_NOW());
INSERT INTO `vn`.`deliveryPoint` (`id`, `name`, `ubication`)
VALUES
@@ -1068,7 +1076,10 @@ INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `pric
(37, 4, 31, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
(36, 4, 30, 'Melee weapon heavy shield 100cm', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
(38, 2, 32, 'Melee weapon combat fist 15cm', 30, 7.07, 0, 0, 0, DATE_ADD(util.VN_CURDATE(), INTERVAL +1 MONTH)),
- (39, 1, 32, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE());
+ (39, 1, 32, 'Ranged weapon longbow 200cm', 2, 103.49, 0, 0, 0, util.VN_CURDATE()),
+ (40, 2, 34, 'Melee weapon combat fist 15cm', 10.00, 3.91, 0, 0, 0, util.VN_CURDATE()),
+ (41, 2, 35, 'Melee weapon combat fist 15cm', 8.00, 3.01, 0, 0, 0, util.VN_CURDATE()),
+ (42, 2, 36, 'Melee weapon combat fist 15cm', 6.00, 2.50, 0, 0, 0, util.VN_CURDATE());
INSERT INTO `vn`.`saleComponent`(`saleFk`, `componentFk`, `value`)
VALUES
@@ -1205,11 +1216,11 @@ INSERT INTO `vn`.`saleComponent`(`saleFk`, `componentFk`, `value`)
(32, 36, -92.324),
(32, 39, 0.994);
-INSERT INTO `vn`.`itemShelving` (`itemFk`, `shelvingFk`, `visible`, `grouping`, `packing`, `userFk`)
+INSERT INTO `vn`.`itemShelving` (`itemFk`, `shelvingFk`, `visible`, `grouping`, `packing`,`buyFk`, `userFk`)
VALUES
- (2, 'GVC', 1, 1, 1, 1106),
- (4, 'HEJ', 1, 1, 1, 1106),
- (1, 'UXN', 2, 12, 12, 1106);
+ (2, 'GVC', 1, 1, 1, 2,1106),
+ (4, 'HEJ', 1, 1, 1, NULL,1106),
+ (1, 'UXN', 2, 12, 12, NULL,1106);
INSERT INTO `vn`.`itemShelvingSale` (`itemShelvingFk`, `saleFk`, `quantity`, `created`, `userFk`)
VALUES
@@ -1247,14 +1258,20 @@ INSERT INTO `vn`.`operator` (`workerFk`, `numberOfWagons`, `trainFk`, `itemPacki
INSERT INTO `vn`.`collection`(`id`, `workerFk`, `stateFk`, `created`, `trainFk`)
VALUES
(1, 1106, 5, DATE_ADD(util.VN_CURDATE(),INTERVAL +1 DAY), 1),
- (2, 1106, 14, util.VN_CURDATE(), 1);
+ (2, 1106, 14, util.VN_CURDATE(), 1),
+ (4, 49, 5, util.VN_CURDATE(), 1),
+ (5, 18, 5, util.VN_CURDATE(), 1),
+ (6, 18, 5, util.VN_CURDATE(), 1);
INSERT INTO `vn`.`ticketCollection`(`ticketFk`, `collectionFk`, `level`)
VALUES
(1, 1, 1),
(2, 1, NULL),
(3, 2, NULL),
- (23, 1, NULL);
+ (23, 1, NULL),
+ (34, 4, 1),
+ (35, 5, 1),
+ (8, 6, 1);
INSERT INTO `vn`.`genus`(`id`, `name`)
VALUES
@@ -2549,20 +2566,20 @@ INSERT INTO `vn`.`duaEntry` (`duaFk`, `entryFk`, `value`, `customsValue`, `euroV
(7, 7, 1.00, 1.00, 1.00),
(8, 8, 1.00, 1.00, 1.00);
-REPLACE INTO `vn`.`invoiceIn`(`id`, `serialNumber`,`serial`, `supplierFk`, `issued`, `created`, `supplierRef`, `isBooked`, `companyFk`, `docFk`)
+REPLACE INTO `vn`.`invoiceIn`(`id`, `serialNumber`,`serial`, `supplierFk`, `issued`, `created`, `supplierRef`, `isBooked`, `companyFk`, `docFk`, `bookEntried`)
VALUES
- (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, 0, 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, 0, 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, 0, 442, 1),
- (8, 1008, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1241, 0, 442, 1),
- (9, 1009, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1242, 0, 442, 1),
- (10, 1010, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1243, 0, 442, 1);
+ (1, 1001, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1234, 0, 442, 1,util.VN_CURDATE()),
+ (2, 1002, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1235, 0, 442, 1,util.VN_CURDATE()),
+ (3, 1003, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1236, 0, 442, 1,util.VN_CURDATE()),
+ (4, 1004, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1237, 0, 442, 1,util.VN_CURDATE()),
+ (5, 1005, 'R', 1, util.VN_CURDATE(), util.VN_CURDATE(), 1238, 0, 442, 1,util.VN_CURDATE()),
+ (6, 1006, 'R', 2, util.VN_CURDATE(), util.VN_CURDATE(), 1239, 0, 442, 1,util.VN_CURDATE()),
+ (7, 1007, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1240, 0, 442, 1,util.VN_CURDATE()),
+ (8, 1008, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1241, 0, 442, 1,util.VN_CURDATE()),
+ (9, 1009, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1242, 0, 442, 1,util.VN_CURDATE()),
+ (10, 1010, 'R', 2, DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), DATE_ADD(util.VN_CURDATE(), INTERVAL -1 MONTH), 1243, 0, 442, 1,util.VN_CURDATE());
-INSERT INTO `vn`.`invoiceInConfig` (`id`, `retentionRate`, `retentionName`, `sageWithholdingFk`, `daysAgo`)
+INSERT INTO `vn`.`invoiceInConfig` (`id`, `retentionRate`, `retentionName`, `sageFarmerWithholdingFk`, `daysAgo`)
VALUES
(1, -2, '2% retention', 2, 45);
@@ -3705,7 +3722,8 @@ INSERT IGNORE INTO vn.saleGroup
SET id = 4,
userFk = 1,
parkingFk = 9,
- sectorFk = 9992;
+ sectorFk = 9992,
+ ticketFk = 36;
INSERT IGNORE INTO vn.sectorCollectionSaleGroup
SET id = 9999,
@@ -3788,5 +3806,46 @@ INSERT INTO vn.workerTeam(id, team, workerFk)
VALUES
(8, 1, 19);
-INSERT INTO vn.workCenter (id, name, payrollCenterFk, counter, warehouseFk, street, geoFk, deliveryManAdjustment)
- VALUES(100, 'workCenterOne', 1, NULL, 1, 'gotham', NULL, NULL);
\ No newline at end of file
+INSERT INTO vn.workCenter (id, name, payrollCenterFk, counter, warehouseFk, street, geoFk, deliveryManAdjustment)
+ VALUES(100, 'workCenterOne', 1, NULL, 1, 'gotham', NULL, NULL);
+
+INSERT INTO `vn`.`locker` (code, gender, workerFk) VALUES
+ ('1M', 'M', 1),
+ ('2M', 'M', 9),
+ ('3M', 'M', NULL),
+ ('4M', 'M', NULL),
+ ('1F', 'F', 1110),
+ ('2F', 'F', NULL),
+ ('3F', 'F', NULL),
+ ('4F', 'F', NULL);
+
+INSERT INTO `vn`.`ledgerCompany` SET
+ fiscalYear = YEAR(util.VN_CURDATE()),
+ bookEntry = 2;
+
+INSERT INTO `vn`.`ledgerConfig` SET
+ maxTolerance = 0.01;
+
+INSERT INTO vn.sectorCollection
+ SET id = 2,
+ userFk = 18,
+ sectorFk = 1;
+
+INSERT INTO vn.sectorCollectionSaleGroup
+ SET id = 8,
+ sectorCollectionFk = 2,
+ saleGroupFk = 4;
+
+INSERT INTO vn.saleGroup (userFk, parkingFk, sectorFk, ticketFk)
+ VALUES
+ (1, 1, 1, 37);
+
+INSERT INTO vn.sectorCollection
+ SET id = 3,
+ userFk = 18,
+ sectorFk = 1;
+
+INSERT INTO vn.sectorCollectionSaleGroup
+ SET id = 9,
+ sectorCollectionFk = 3,
+ saleGroupFk = 6;
\ No newline at end of file
diff --git a/db/routines/bi/procedures/claim_ratio_routine.sql b/db/routines/bi/procedures/claim_ratio_routine.sql
index ae87e15a20..40b8794832 100644
--- a/db/routines/bi/procedures/claim_ratio_routine.sql
+++ b/db/routines/bi/procedures/claim_ratio_routine.sql
@@ -48,7 +48,7 @@ BEGIN
-- Marcamos para no repetir
UPDATE vn.claimEnd ce
JOIN vn.claim c ON c.id = ce.claimFk
- SET c.isChargedToMana = TRUE
+ SET ce.isGreuge = TRUE
WHERE ce.claimDestinationFk NOT IN (1,5)
AND NOT ce.isGreuge
AND c.claimStateFk = 3;
diff --git a/db/routines/bs/procedures/manaCustomerUpdate.sql b/db/routines/bs/procedures/manaCustomerUpdate.sql
index b77ddc1fdf..e9ba704234 100644
--- a/db/routines/bs/procedures/manaCustomerUpdate.sql
+++ b/db/routines/bs/procedures/manaCustomerUpdate.sql
@@ -5,97 +5,90 @@ BEGIN
DECLARE vFromDated DATE;
DECLARE vForDeleteDated DATE;
DECLARE vManaId INT;
- DECLARE vManaAutoId INT;
- DECLARE vClaimManaId INT;
- DECLARE vManaBankId INT;
- DECLARE vManaGreugeTypeId INT;
- DECLARE vManaFromDays INT;
- DECLARE vManaToDays INT;
+ DECLARE vManaAutoId INT;
+ DECLARE vClaimManaId INT;
+ DECLARE vManaBankId INT;
+ DECLARE vManaGreugeTypeId INT;
+ DECLARE vManaFromDays INT;
+ DECLARE vManaToDays INT;
- SELECT id INTO vManaId
- FROM vn.component WHERE code = 'mana';
+ SELECT id INTO vManaId
+ FROM vn.component WHERE code = 'mana';
- SELECT id INTO vManaAutoId
+ SELECT id INTO vManaAutoId
FROM vn.component WHERE code = 'autoMana';
SELECT id INTO vClaimManaId
FROM vn.component WHERE code = 'manaClaim';
- SELECT id INTO vManaBankId
+ SELECT id INTO vManaBankId
FROM vn.accounting WHERE code = 'mana';
- SELECT id INTO vManaGreugeTypeId
+ SELECT id INTO vManaGreugeTypeId
FROM vn.greugeType WHERE code = 'mana';
- SELECT manaFromDays, manaToDays
- INTO vManaFromDays, vManaToDays
- FROM vn.salespersonConfig;
+ SELECT manaFromDays, manaToDays
+ INTO vManaFromDays, vManaToDays
+ FROM vn.salespersonConfig;
- SELECT MAX(dated)
- INTO vFromDated
- FROM vn.clientManaCache;
+ SELECT MAX(dated) INTO vFromDated
+ FROM vn.clientManaCache;
- DELETE
- FROM vn.clientManaCache
- WHERE dated = vFromDated;
-
- SELECT MAX(dated)
- INTO vFromDated
- FROM vn.clientManaCache;
-
- IF ISNULL(vFromDated) THEN
- SELECT manaDateFrom
- INTO vFromDated
- FROM vn.salespersonConfig;
- END IF;
+ DELETE FROM vn.clientManaCache
+ WHERE dated = vFromDated;
+
+ SELECT MAX(dated) INTO vFromDated
+ FROM vn.clientManaCache;
+
+ IF vFromDated IS NULL THEN
+ SELECT manaDateFrom
+ INTO vFromDated
+ FROM vn.salespersonConfig;
+ END IF;
- WHILE vFromDated + INTERVAL vManaToDays DAY < util.VN_CURDATE() DO
- SELECT
- vFromDated + INTERVAL vManaToDays DAY,
- vFromDated - INTERVAL vManaFromDays DAY
- INTO
- vToDated,
- vForDeleteDated;
-
- DELETE FROM vn.clientManaCache
- WHERE dated <= vForDeleteDated;
+ WHILE vFromDated + INTERVAL vManaToDays DAY < util.VN_CURDATE() DO
+ SELECT vFromDated + INTERVAL vManaToDays DAY,
+ vFromDated - INTERVAL vManaFromDays DAY
+ INTO vToDated,
+ vForDeleteDated;
+
+ DELETE FROM vn.clientManaCache
+ WHERE dated <= vForDeleteDated;
- INSERT INTO vn.clientManaCache(clientFk, mana, dated)
- SELECT
- Id_Cliente,
- SUM(mana),
- vToDated
- FROM
- (
- SELECT a.clientFk Id_Cliente, s.quantity * sc.value as mana
- FROM vn.ticket t
- JOIN vn.address a ON a.id = t.addressFk
- JOIN vn.sale s on s.ticketFk = t.id
- JOIN vn.saleComponent sc on sc.saleFk = s.id
- WHERE sc.componentFk IN (vManaAutoId, vManaId, vClaimManaId)
- AND t.shipped > vFromDated
- AND date(t.shipped) <= vToDated
- UNION ALL
- SELECT clientFk, - amountPaid
- FROM vn.receipt
- WHERE bankFk = vManaBankId
- AND payed > vFromDated
- AND payed <= vToDated
- UNION ALL
- SELECT clientFk, amount
- FROM vn.greuge
- WHERE greugeTypeFk = vManaGreugeTypeId
- AND shipped > vFromDated
- AND shipped <= vToDated
- UNION ALL
- SELECT clientFk, mana
- FROM vn.clientManaCache
- WHERE dated = vFromDated
- ) sub
- GROUP BY Id_Cliente
- HAVING Id_Cliente;
+ INSERT INTO vn.clientManaCache(clientFk, mana, dated)
+ SELECT Id_Cliente,
+ SUM(mana),
+ vToDated
+ FROM (
+ SELECT a.clientFk Id_Cliente, s.quantity * sc.value mana
+ FROM vn.ticket t
+ JOIN vn.address a ON a.id = t.addressFk
+ JOIN vn.sale s ON s.ticketFk = t.id
+ JOIN vn.saleComponent sc ON sc.saleFk = s.id
+ WHERE sc.componentFk IN (vManaAutoId, vManaId, vClaimManaId)
+ AND t.shipped > vFromDated
+ AND DATE(t.shipped) <= vToDated
+ UNION ALL
+ SELECT clientFk, - amountPaid
+ FROM vn.receipt
+ WHERE bankFk = vManaBankId
+ AND payed > vFromDated
+ AND payed <= vToDated
+ UNION ALL
+ SELECT clientFk, amount
+ FROM vn.greuge
+ WHERE greugeTypeFk = vManaGreugeTypeId
+ AND shipped > vFromDated
+ AND shipped <= vToDated
+ UNION ALL
+ SELECT clientFk, mana
+ FROM vn.clientManaCache
+ WHERE dated = vFromDated
+ ) sub
+ GROUP BY Id_Cliente
+ HAVING Id_Cliente;
- SET vFromDated = vToDated;
- END WHILE;
+ SET vFromDated = vToDated;
+ END WHILE;
END$$
DELIMITER ;
diff --git a/db/routines/bs/procedures/sale_add.sql b/db/routines/bs/procedures/sale_add.sql
index 64beb47763..c50d27b814 100644
--- a/db/routines/bs/procedures/sale_add.sql
+++ b/db/routines/bs/procedures/sale_add.sql
@@ -1,7 +1,8 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`sale_add`(
IN vStarted DATE,
- IN vEnded DATE)
+ IN vEnded DATE
+)
BEGIN
/**
* Añade las ventas que se realizaron entre 2 fechas a la tabla bs.sale
@@ -10,63 +11,54 @@ BEGIN
* @param vEnded Fecha de fin
*
*/
- DECLARE vLoopDate DATE;
- DECLARE vLoopDateTime DATETIME;
-
IF vStarted < (util.VN_CURDATE() - INTERVAL 5 YEAR) OR vStarted > vEnded THEN
CALL util.throw('Wrong date');
END IF;
- SET vLoopDate = vStarted;
-
DELETE FROM sale
WHERE dated BETWEEN vStarted AND vEnded;
- WHILE vLoopDate <= vEnded DO
- SET vLoopDateTime = util.dayEnd(vLoopDate);
-
- REPLACE sale(
- saleFk,
- amount,
- surcharge,
- dated,
- typeFk,
- clientFk,
- companyFk,
- margin
- )WITH calculatedSales AS(
- SELECT s.id saleFk,
- SUM(IF(ct.isBase, s.quantity * sc.value, 0)) amount,
- SUM(IF(ct.isBase, 0, s.quantity * sc.value)) surcharge,
- s.total pvp,
- DATE(t.shipped) dated,
- i.typeFk,
- t.clientFk,
- t.companyFk,
- SUM(IF(ct.isMargin, s.quantity * sc.value, 0 )) marginComponents
- FROM vn.ticket t
- STRAIGHT_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.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 vLoopDate AND vLoopDateTime
- AND s.quantity <> 0
- AND ic.merchandise
- GROUP BY s.id
- )SELECT saleFk,
- amount,
- surcharge,
- dated,
- typeFk,
- clientFk,
- companyFk,
- marginComponents + amount + surcharge - pvp
- FROM calculatedSales;
-
- SET vLoopDate = vLoopDate + INTERVAL 1 DAY;
- END WHILE;
+ REPLACE sale(
+ saleFk,
+ amount,
+ surcharge,
+ dated,
+ typeFk,
+ clientFk,
+ companyFk,
+ margin
+ )WITH calculatedSales AS(
+ SELECT s.id saleFk,
+ CAST(SUM(IF(ct.isBase, s.quantity * sc.value, 0)) AS DECIMAL(10, 3)) amount,
+ CAST(SUM(IF(ct.isBase, 0, s.quantity * sc.value)) AS DECIMAL(10, 3)) surcharge,
+ s.total,
+ DATE(t.shipped) dated,
+ i.typeFk,
+ t.clientFk,
+ t.companyFk,
+ CAST(SUM(IF(ct.isMargin, s.quantity * sc.value, 0 )) AS DECIMAL(10, 3)) marginComponents
+ FROM vn.ticket t
+ STRAIGHT_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.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 vStarted AND vEnded
+ AND s.quantity <> 0
+ AND ic.merchandise
+ GROUP BY s.id
+ )SELECT saleFk,
+ amount,
+ surcharge,
+ dated,
+ typeFk,
+ clientFk,
+ companyFk,
+ IF (marginComponents IS NULL,
+ 0,
+ CAST(marginComponents + amount + surcharge - total AS DECIMAL(10, 3)))
+ FROM calculatedSales;
END$$
DELIMITER ;
diff --git a/db/routines/dipole/procedures/expedition_add.sql b/db/routines/dipole/procedures/expedition_add.sql
index a88c4d25a2..e224cd2d25 100644
--- a/db/routines/dipole/procedures/expedition_add.sql
+++ b/db/routines/dipole/procedures/expedition_add.sql
@@ -34,7 +34,7 @@ BEGIN
vPrinterFk,
IFNULL(right(`t`.`routeFk`, 3),0),
if (@vVolume := vn.ticketTotalVolume(t.id) > 1.5, @vVolume, IFNULL( rm.beachFk, 0)),
- LEFT(IFNULL(et.description ,replace(`z`.`name`, 'ZONA ', 'Z')),14) truckName,
+ LEFT(IFNULL(rs.description ,replace(`z`.`name`, 'ZONA ', 'Z')),14) truckName,
t.clientFk ,
ifnull(c.mobile, ifnull(a.mobile, ifnull(c.phone, a.phone))),
LEFT(p.name, 20),
@@ -46,7 +46,7 @@ BEGIN
JOIN vn.address a ON a.id = t.addressFk
JOIN vn.province p ON p.id = a.provinceFk
LEFT JOIN vn.routesMonitor rm ON rm.routeFk = t.routeFk
- LEFT JOIN vn.expeditionTruck et ON et.id = rm.expeditionTruckFk
+ LEFT JOIN vn.roadmapStop rs ON rs.id = rm.expeditionTruckFk
LEFT JOIN vn.beach b ON b.code = rm.beachFk
LEFT JOIN vn.`zone`z ON z.id = t.zoneFk
JOIN vn.agencyMode am ON t.agencyModeFk = am.id
diff --git a/db/routines/edi/procedures/ekt_scan.sql b/db/routines/edi/procedures/ekt_scan.sql
index b0b75a6a7b..0cf8bb4669 100644
--- a/db/routines/edi/procedures/ekt_scan.sql
+++ b/db/routines/edi/procedures/ekt_scan.sql
@@ -23,42 +23,39 @@ BEGIN
DECLARE vXtraLongAgj INT;
DECLARE vDefaultKlo INT;
- SELECT
- ec.usefulAuctionLeftSegmentLength,
- ec.standardBarcodeLength,
- ec.floridayBarcodeLength,
- ec.floramondoBarcodeLength,
- ec.defaultKlo
- INTO
- vUsefulAuctionLeftSegmentLength,
+ SELECT usefulAuctionLeftSegmentLength,
+ standardBarcodeLength,
+ floridayBarcodeLength,
+ floramondoBarcodeLength,
+ defaultKlo
+ INTO vUsefulAuctionLeftSegmentLength,
vStandardBarcodeLength,
vFloridayBarcodeLength,
vFloramondoBarcodeLength,
vDefaultKlo
- FROM edi.ektConfig ec;
+ FROM ektConfig;
- DROP TEMPORARY TABLE IF EXISTS tmp.ekt;
- CREATE TEMPORARY TABLE tmp.ekt
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ekt
ENGINE = MEMORY
SELECT id ektFk FROM ekt LIMIT 0;
- CASE
+ CASE
WHEN LENGTH(vBarcode) <= vFloridayBarcodeLength THEN
INSERT INTO tmp.ekt
SELECT id
- FROM edi.ektRecent e
+ FROM ektRecent e
WHERE e.cps = vBarcode
OR e.batchNumber = vBarcode;
WHEN LENGTH(vBarcode) = vFloramondoBarcodeLength THEN
INSERT INTO tmp.ekt
SELECT e.id
- FROM edi.ektRecent e
+ FROM ektRecent e
WHERE e.pro = MID(vBarcode,2,6)
- AND CAST(e.ptd AS SIGNED) = MID(vBarcode,8,5);
+ AND CAST(e.ptd AS SIGNED) = MID(vBarcode, 8, 5);
ELSE
- SET vBarcode = LPAD(vBarcode,vStandardBarcodeLength,'0');
+ 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));
@@ -69,21 +66,23 @@ BEGIN
-- Clásico de subasta
-- Trade standard
-- Trade que construye como la subasta
- -- Trade como el anterior pero sin trade code
+ -- Trade como el anterior pero sin trade code
INSERT INTO tmp.ekt
SELECT id
FROM ekt
WHERE fec >= vFec - INTERVAL 1 DAY
- AND ((
- vKlo = vDefaultKlo
+ AND (
+ (vKlo = vDefaultKlo
AND (klo = vKlo OR klo IS NULL OR klo = 0)
- AND agj IN (vShortAgj, vLongAgj, vXtraLongAgj))
- OR (klo = vKlo
+ AND agj IN (vShortAgj, vLongAgj, vXtraLongAgj)
+ ) OR (
+ klo = vKlo
AND auction = vAuction
- AND agj = vShortAgj)
+ AND agj = vShortAgj
+ )
)
- ORDER BY agj DESC, fec DESC
- LIMIT 1;
+ ORDER BY agj DESC, fec DESC
+ LIMIT 1;
SELECT COUNT(*) FROM tmp.ekt INTO vIsFound;
@@ -91,9 +90,11 @@ BEGIN
IF NOT vIsFound THEN
INSERT INTO tmp.ekt
SELECT id
- FROM edi.ektRecent e
- WHERE e.batchNumber
- = LEFT(vBarcode,vUsefulAuctionLeftSegmentLength)
+ FROM ektRecent e
+ WHERE e.batchNumber = LEFT(
+ vBarcode,
+ vUsefulAuctionLeftSegmentLength
+ )
AND e.batchNumber > 0;
SELECT COUNT(*) FROM tmp.ekt INTO vIsFound;
@@ -103,7 +104,7 @@ BEGIN
IF NOT vIsFound THEN
INSERT INTO tmp.ekt
SELECT id
- FROM edi.ektRecent e
+ FROM ektRecent e
WHERE e.putOrderFk = vBarcode;
SELECT COUNT(*) FROM tmp.ekt INTO vIsFound;
@@ -113,18 +114,28 @@ BEGIN
IF NOT vIsFound THEN
INSERT INTO tmp.ekt
SELECT id
- FROM edi.ektRecent e
- WHERE e.deliveryNumber
- = MID(vBarcode, 4, 13)
+ FROM ektRecent e
+ WHERE e.deliveryNumber = MID(vBarcode, 4, 13)
AND e.deliveryNumber > 0;
SELECT COUNT(*) FROM tmp.ekt INTO vIsFound;
END IF;
+
+ -- Solo campo agj
+ IF NOT vIsFound THEN
+ INSERT INTO tmp.ekt
+ SELECT id
+ FROM ektRecent
+ WHERE agj = vShortAgj;
+
+ 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
+ JOIN tmp.ekt t ON t.ektFk = e.id
SET e.scanned = TRUE;
END IF;
END$$
diff --git a/db/routines/floranet/procedures/catalogue_get.sql b/db/routines/floranet/procedures/catalogue_get.sql
index 32624f383c..7ce32cfac8 100644
--- a/db/routines/floranet/procedures/catalogue_get.sql
+++ b/db/routines/floranet/procedures/catalogue_get.sql
@@ -40,19 +40,28 @@ proc:BEGIN
postalCode,
`type`,
image,
- description
+ description,
+ addressFk
)
- SELECT i.name,
- i.`size`,
- i.id,
+ SELECT CONCAT(i.name, ' by ',a.nickname),
+ r.price + apc.deliveryCost,
+ r.itemFk,
vLanded,
vPostalCode,
it.name,
CONCAT('https://cdn.verdnatura.es/image/catalog/1600x900/', i.image),
- i.description
+ i.description,
+ apc.addressFk
FROM vn.item i
+ JOIN (SELECT itemFk, SUM(quantity * cost) price
+ FROM recipe
+ GROUP BY itemFk) r ON r.itemFk = i.id
JOIN vn.itemType it ON it.id = i.typeFk
- WHERE it.code IN ('FNR','FNP');
+ JOIN addressPostCode apc
+ ON apc.dayOfWeek = dayOfWeek(vLanded)
+ AND NOW() < vLanded - INTERVAL apc.hoursInAdvance HOUR
+ AND apc.postCode = vPostalCode
+ JOIN vn.address a ON a.id = apc.addressFk;
SELECT *
FROM catalogue
diff --git a/db/routines/floranet/procedures/contact_request.sql b/db/routines/floranet/procedures/contact_request.sql
index 2ca25b87dd..2132a86fc0 100644
--- a/db/routines/floranet/procedures/contact_request.sql
+++ b/db/routines/floranet/procedures/contact_request.sql
@@ -13,8 +13,17 @@ BEGIN
/**
* Set actions for contact request
*
- * @param vPostalCode Delivery address postal code
+ * @param vName Name
+ * @param vPhone Phone number
+ * @param vEmail e-mail
+ * @param vMessage text of the message
*/
-
+
+ CALL vn.mail_insert(
+ 'floranet@verdnatura.es',
+ vEmail,
+ 'Contact request',
+ CONCAT('Phone: ',vPhone, ' Message: ', vMessage)
+ );
END$$
DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/floranet/procedures/deliveryDate_get.sql b/db/routines/floranet/procedures/deliveryDate_get.sql
index 75e9d6257b..a235e8c31b 100644
--- a/db/routines/floranet/procedures/deliveryDate_get.sql
+++ b/db/routines/floranet/procedures/deliveryDate_get.sql
@@ -21,7 +21,7 @@ BEGIN
apc.dayOfWeek - vCurrentDayOfWeek,
7 - apc.dayOfWeek
) DAY nextDay,
- NOW() + INTERVAL apc.hoursInAdvance - 12 HOUR minDeliveryTime
+ NOW() + INTERVAL apc.hoursInAdvance HOUR minDeliveryTime
FROM addressPostCode apc
WHERE apc.postCode = vPostalCode
HAVING nextDay > minDeliveryTime) sub;
diff --git a/db/routines/floranet/procedures/order_confirm.sql b/db/routines/floranet/procedures/order_confirm.sql
index b6aec033d5..3b9413da97 100644
--- a/db/routines/floranet/procedures/order_confirm.sql
+++ b/db/routines/floranet/procedures/order_confirm.sql
@@ -1,25 +1,167 @@
-DROP PROCEDURE IF EXISTS floranet.order_confirm;
-
DELIMITER $$
$$
-CREATE DEFINER=`root`@`localhost`PROCEDURE floranet.order_confirm(vCatalogueFk INT)
+CREATE OR REPLACE DEFINER=`root`@`localhost`PROCEDURE floranet.order_confirm(vCatalogueFk INT)
READS SQL DATA
-BEGIN
-/** Update order.isPaid field.
+proc:BEGIN
+/** Update order.isPaid field, and makes the ticket
*
* @param vCatalogueFk floranet.catalogue.id
*
* @returns floranet.order.isPaid
*/
+ DECLARE vNewTicketFk INT;
+ DECLARE vCustomerEmail VARCHAR(255);
+ DECLARE vFloranetEmail VARCHAR(255);
+ DECLARE vSubjectEmail VARCHAR(100);
+ DECLARE vBodyEmail TEXT;
+ DECLARE vZoneFk INT;
+
+ DECLARE exit handler FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+
+ GET DIAGNOSTICS CONDITION 2 @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT;
+
+ SELECT CONCAT('ERROR ', IFNULL(@errno,0), ': ', ifnull(@text,'texto')) AS `SQLEXCEPTION`;
+
+ CALL vn.mail_insert(
+ 'floranet@verdnatura.es,pako@verdnatura.es',
+ 'noreply@verdnatura.es',
+ 'Floranet.order_confirm failure',
+ CONCAT('CatalogueFk: ', vCatalogueFk, '\n','ERROR ', IFNULL(@errno, 0), ': ', ifnull(@text, 'texto'))
+ );
+ END;
+
+ IF (SELECT isPaid FROM `order` WHERE catalogueFk = vCatalogueFk) THEN
+ SELECT CONCAT('CatalogueFk: ', vCatalogueFk, ' Esta orden ya está confirmada') AS `ERROR`;
+ LEAVE proc;
+ END IF;
+
+ START TRANSACTION;
+
UPDATE `order`
SET isPaid = TRUE,
payed = NOW()
WHERE catalogueFk = vCatalogueFk;
- SELECT isPaid
+ SELECT zoneFk
+ INTO vZoneFk
+ FROM (
+ SELECT zoneFk, COUNT(*) totalCount
+ FROM vn.ticket t
+ JOIN catalogue c ON c.id = vCatalogueFk
+ WHERE t.shipped > util.VN_CURDATE() - INTERVAL 1 YEAR
+ AND t.addressFk = c.addressFk
+ GROUP BY zoneFk
+ ORDER BY totalCount DESC
+ LIMIT 10000000000000000000
+ ) sub
+ LIMIT 1;
+
+ INSERT INTO vn.ticket (
+ clientFk,
+ shipped,
+ addressFk,
+ agencyModeFk,
+ nickname,
+ warehouseFk,
+ routeFk,
+ companyFk,
+ landed,
+ zoneFk
+ )
+ SELECT a.clientFk,
+ c.dated - INTERVAL 1 DAY,
+ c.addressFk,
+ a.agencyModeFk,
+ a.nickname,
+ ag.warehouseFk,
+ NULL,
+ co.id,
+ c.dated,
+ vZoneFk
+ FROM vn.address a
+ JOIN vn.agencyMode am ON am.id = a.agencyModeFk
+ JOIN vn.agency ag ON ag.id = am.agencyFk
+ JOIN catalogue c ON c.addressFk = a.id
+ JOIN vn.company co ON co.code = 'VNL'
+ WHERE c.id = vCatalogueFk;
+
+ SET vNewTicketFk = LAST_INSERT_ID();
+
+ INSERT INTO vn.sale(
+ ticketFk,
+ itemFk,
+ concept,
+ price,
+ quantity)
+ SELECT
+ vNewTicketFk,
+ c.itemFk,
+ CONCAT('Entrega: ',c.name),
+ - c.price,
+ 1
+ FROM catalogue c
+ JOIN addressPostCode apc
+ ON apc.addressFk = c.addressFk
+ AND apc.dayOfWeek = dayOfWeek(c.dated)
+ WHERE c.id = vCatalogueFk;
+
+ INSERT INTO vn.sale(
+ ticketFk,
+ itemFk,
+ concept,
+ price,
+ quantity)
+ SELECT
+ vNewTicketFk,
+ r.elementFk,
+ i.longName,
+ r.cost,
+ r.quantity
+ FROM catalogue c
+ JOIN recipe r ON r.itemFk = c.itemFk
+ JOIN vn.item i ON i.id = r.elementFk
+ WHERE c.id = vCatalogueFk;
+
+ SELECT cl.email,
+ cf.email,
+ CONCAT('Nuevo pedido FLORANET para entrega el ',c.dated),
+ CONCAT_WS('\n',
+ CONCAT('Producto: ', c.name),
+ CONCAT('Fecha de entrega: ',c.dated),
+ CONCAT('Destinatario: ', o.deliveryName),
+ CONCAT('Dirección: ', o.address),
+ CONCAT('CP: ', c.postalCode),
+ CONCAT('Foto: ', c.image),
+ CONCAT('Mensaje: ', IFNULL(o.message,"Ninguno.")),
+ CONCAT('Teléfono: ',IFNULL(o.deliveryPhone,"--")),
+ CONCAT('Observaciones: ', IFNULL(o.observations,"No hay."))
+ )
+ INTO vCustomerEmail,
+ vFloranetEmail,
+ vSubjectEmail,
+ vBodyEmail
+ FROM vn.client cl
+ JOIN vn.address a ON a.clientFk = cl.id
+ JOIN catalogue c ON c.addressFk = a.id
+ JOIN `order` o ON o.catalogueFk = c.id
+ JOIN config cf
+ WHERE c.id = vCatalogueFk;
+
+ CALL vn.mail_insert(
+ vCustomerEmail,
+ vFloranetEmail,
+ vSubjectEmail,
+ vBodyEmail);
+
+ SELECT isPaid, vNewTicketFk
FROM `order`
WHERE catalogueFk = vCatalogueFk;
+
+ COMMIT;
+
END$$
DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/floranet/procedures/order_put.sql b/db/routines/floranet/procedures/order_put.sql
index 979588f8ff..c5eb714728 100644
--- a/db/routines/floranet/procedures/order_put.sql
+++ b/db/routines/floranet/procedures/order_put.sql
@@ -7,7 +7,7 @@ BEGIN
*
* @param vJsonData The order data in json format
*/
- INSERT INTO `order`
+ REPLACE `order`
SET catalogueFk = JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.products[0].id')),
customerName = JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.customerName')),
email = JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.email')),
@@ -15,7 +15,8 @@ BEGIN
message= JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.message')),
deliveryName = JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.deliveryName')),
address = JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.address')),
- deliveryPhone = JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.deliveryPhone'));
+ deliveryPhone = JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.deliveryPhone')),
+ observations = JSON_UNQUOTE(JSON_EXTRACT(vJsonData, '$.customer.customerData.observations'));
SELECT LAST_INSERT_ID() orderFk;
END$$
diff --git a/db/routines/floranet/procedures/sliders_get.sql b/db/routines/floranet/procedures/sliders_get.sql
index 0e4aa297aa..bafda47324 100644
--- a/db/routines/floranet/procedures/sliders_get.sql
+++ b/db/routines/floranet/procedures/sliders_get.sql
@@ -9,12 +9,11 @@ BEGIN
* Returns list of url for sliders.
*/
SELECT
- CONCAT('https://cdn.verdnatura.es/image/catalog/1600x900/', i.image) url,
- i.longName
- FROM vn.item i
- JOIN vn.itemType it ON it.id = i.typeFk
- WHERE it.code IN ('FNR','FNP')
- LIMIT 3;
-
+ CONCAT('https://cdn.verdnatura.es/image/catalog/1600x900/', i.image) url,
+ i.longName
+ FROM vn.item i
+ JOIN vn.itemType it ON it.id = i.typeFk
+ WHERE it.code IN ('FNR','FNP')
+ LIMIT 3;
END$$
DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/hedera/procedures/tpvTransaction_confirm.sql b/db/routines/hedera/procedures/tpvTransaction_confirm.sql
index e4a8c932fb..60a6d8452a 100644
--- a/db/routines/hedera/procedures/tpvTransaction_confirm.sql
+++ b/db/routines/hedera/procedures/tpvTransaction_confirm.sql
@@ -81,7 +81,7 @@ BEGIN
-- Código redundante
- DO vn.till_new(
+ CALL vn.till_new(
vCustomer
,vBank
,vAmount / 100
diff --git a/db/routines/pbx/views/sipConf.sql b/db/routines/pbx/views/sipConf.sql
index 443cf7beec..0765264bcd 100644
--- a/db/routines/pbx/views/sipConf.sql
+++ b/db/routines/pbx/views/sipConf.sql
@@ -12,7 +12,7 @@ AS SELECT `s`.`user_id` AS `id`,
`c`.`permit` AS `permit`,
`c`.`type` AS `type`,
`c`.`context` AS `context`,
- `c`.`incomingLimit` AS `incominglimit`,
+ `c`.`call-limit` AS `call-limit`,
`c`.`pickupGroup` AS `pickupgroup`,
`c`.`directMedia` AS `directmedia`,
`c`.`insecure` AS `insecure`,
diff --git a/db/routines/sage/procedures/clientSupplier_add.sql b/db/routines/sage/procedures/clientSupplier_add.sql
index 7a0aec6e27..70f3ef3d0b 100644
--- a/db/routines/sage/procedures/clientSupplier_add.sql
+++ b/db/routines/sage/procedures/clientSupplier_add.sql
@@ -53,7 +53,7 @@ BEGIN
IFNULL(c.street, ''),
c.accountingAccount,
@fi := IF(cu.code = LEFT(TRIM(c.fi), 2) AND c.isVies, MID(TRIM(c.fi), 3, LENGTH(TRIM(c.fi))-1), TRIM(c.fi)),
- IF(c.isVies, CONCAT(cu.code, @fi ), TRIM(c.fi)),
+ IF(c.isVies, CONCAT(IFNULL(cu.viesCode,cu.code), @fi ), TRIM(c.fi)),
IFNULL(c.postcode, ''),
IFNULL(c.city, ''),
IFNULL(pr.CodigoProvincia, ''),
@@ -91,7 +91,7 @@ BEGIN
IFNULL(s.street, ''),
s.account,
@nif := IF(co.code = LEFT(TRIM(s.nif), 2), MID(TRIM(s.nif), 3, LENGTH(TRIM(s.nif))-1), TRIM(s.nif)),
- IF(s.isVies, CONCAT(co.code, @nif), TRIM(s.nif)),
+ IF(s.isVies, CONCAT(IFNULL(co.viesCode,co.code), @nif), TRIM(s.nif)),
IFNULL(s.postCode,''),
IFNULL(s.city, ''),
IFNULL(pr.CodigoProvincia, ''),
diff --git a/db/routines/srt/functions/expedition_getDayMinute.sql b/db/routines/srt/functions/expedition_getDayMinute.sql
index 7a8fae6868..9331f77e50 100644
--- a/db/routines/srt/functions/expedition_getDayMinute.sql
+++ b/db/routines/srt/functions/expedition_getDayMinute.sql
@@ -15,14 +15,14 @@ BEGIN
DECLARE vDayMinute INT;
- SELECT HOUR(IFNULL(et.ETD, z.`hour`)) * 60 + MINUTE(IFNULL(et.ETD, z.`hour`)) INTO vDayMinute
+ SELECT HOUR(IFNULL(rs.ETD, z.`hour`)) * 60 + MINUTE(IFNULL(rs.ETD, z.`hour`)) INTO vDayMinute
FROM vn.expedition e
JOIN vn.ticket t ON e.ticketFk = t.id
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 t.routeFk = rm.routeFk
- LEFT JOIN vn.expeditionTruck et ON rm.expeditionTruckFk = et.id
+ LEFT JOIN vn.roadmapStop rs ON rm.expeditionTruckFk = rs.id
WHERE e.id = vExpeditionFk;
RETURN vDayMinute;
diff --git a/db/routines/srt/procedures/expedition_reset.sql b/db/routines/srt/procedures/expedition_reset.sql
index 712c93e18c..153edfad22 100644
--- a/db/routines/srt/procedures/expedition_reset.sql
+++ b/db/routines/srt/procedures/expedition_reset.sql
@@ -296,8 +296,8 @@ BEGIN
SET @dm := (24 * 60) - 10;
- UPDATE vn.expeditionTruck et
- SET et.eta = timestampadd(MINUTE ,@dm := 1 + @dm,util.VN_CURDATE())
+ UPDATE vn.roadmapStop rs
+ SET rs.eta = timestampadd(MINUTE ,@dm := 1 + @dm,util.VN_CURDATE())
WHERE description LIKE 'PRU%' ;
DELETE FROM srt.movingLog ;
diff --git a/db/routines/srt/views/bufferDayMinute.sql b/db/routines/srt/views/bufferDayMinute.sql
index 8ee732c564..41db2bcf75 100644
--- a/db/routines/srt/views/bufferDayMinute.sql
+++ b/db/routines/srt/views/bufferDayMinute.sql
@@ -3,10 +3,10 @@ CREATE OR REPLACE DEFINER=`root`@`localhost`
VIEW `srt`.`bufferDayMinute`
AS SELECT `b`.`id` AS `bufferFk`,
`e`.`id` AS `expeditionFk`,
- `srt`.`dayMinute`(IFNULL(`et`.`eta`, `z`.`hour`)) AS `dayMinute`,
+ `srt`.`dayMinute`(IFNULL(`rs`.`eta`, `z`.`hour`)) AS `dayMinute`,
`e`.`position` AS `position`,
IFNULL(
- `et`.`eta`,
+ `rs`.`eta`,
`util`.`VN_CURDATE`() + INTERVAL `srt`.`dayMinute`(`z`.`hour`) MINUTE
) AS `ETD`,
`e2`.`ticketFk` AS `ticketFk`,
@@ -34,7 +34,7 @@ FROM (
)
LEFT JOIN `vn`.`routesMonitor` `rm` ON(`t`.`routeFk` = `rm`.`routeFk`)
)
- LEFT JOIN `vn`.`expeditionTruck` `et` ON(`rm`.`expeditionTruckFk` = `et`.`id`)
+ LEFT JOIN `vn`.`roadmapStop` `rs` ON(`rm`.`expeditionTruckFk` = `rs`.`id`)
)
LEFT JOIN `vn`.`zone` `z` ON(`z`.`id` = `t`.`zoneFk`)
)
diff --git a/db/routines/srt/views/bufferStock.sql b/db/routines/srt/views/bufferStock.sql
index 6f9d7e2fe6..7494cf0a98 100644
--- a/db/routines/srt/views/bufferStock.sql
+++ b/db/routines/srt/views/bufferStock.sql
@@ -4,22 +4,22 @@ CREATE OR REPLACE DEFINER=`root`@`localhost`
AS SELECT `e`.`id` AS `expeditionFk`,
`e`.`bufferFk` AS `bufferFk`,
`e`.`position` AS `position`,
- `srt`.`dayMinute`(IFNULL(`et`.`eta`, `z`.`hour`)) AS `dayMinute`,
+ `srt`.`dayMinute`(IFNULL(`rs`.`eta`, `z`.`hour`)) AS `dayMinute`,
IFNULL(
- `et`.`eta`,
+ `rs`.`eta`,
`util`.`VN_CURDATE`() + INTERVAL `srt`.`dayMinute`(`z`.`hour`) + 120 MINUTE
) AS `eta`,
`ve`.`ticketFk` AS `ticketFk`,
IFNULL(`t`.`routeFk`, `t`.`agencyModeFk`) AS `routeFk`,
`z`.`name` AS `zonaTicket`,
- `et`.`description` AS `truck`,
+ `rs`.`description` AS `truck`,
`es`.`description` AS `expeditionState`,
`b`.`hasWorkerWaiting` AS `hasWorkerWaiting`,
`b`.`isActive` AS `isActive`,
IF(
- `et`.`id` IS NULL,
+ `rs`.`id` IS NULL,
`c`.`bufferDefault`,
- `et`.`bufferFk`
+ `rs`.`bufferFk`
) AS `bufferTruck`,
`bt`.`typeName` AS `typeName`,
`rm`.`bufferFk` AS `routeBuffer`
@@ -45,7 +45,7 @@ FROM (
)
LEFT JOIN `vn`.`routesMonitor` `rm` ON(`t`.`routeFk` = `rm`.`routeFk`)
)
- LEFT JOIN `vn`.`expeditionTruck` `et` ON(`rm`.`expeditionTruckFk` = `et`.`id`)
+ LEFT JOIN `vn`.`roadmapStop` `rs` ON(`rm`.`expeditionTruckFk` = `rs`.`id`)
)
JOIN `srt`.`config` `c`
)
diff --git a/db/routines/srt/views/upperStickers.sql b/db/routines/srt/views/upperStickers.sql
index d7e7b98981..a230408d97 100644
--- a/db/routines/srt/views/upperStickers.sql
+++ b/db/routines/srt/views/upperStickers.sql
@@ -4,13 +4,13 @@ CREATE OR REPLACE DEFINER=`root`@`localhost`
AS SELECT `e`.`id` AS `expeditionFk`,
`e`.`id` MOD 10000 AS `expedition`,
IFNULL(
- `et`.`eta`,
+ `rs`.`eta`,
`util`.`VN_CURDATE`() + INTERVAL `srt`.`dayMinute`(`z`.`hour`) + 120 MINUTE
) AS `ETD`,
`ve`.`ticketFk` AS `ticketFk`,
right(IFNULL(`t`.`routeFk`, `t`.`agencyModeFk`), 3) AS `routeFk`,
`z`.`name` AS `zonaTicket`,
- `et`.`description` AS `truck`,
+ `rs`.`description` AS `truck`,
`epo`.`workerCode` AS `worker`,
`p`.`name` AS `labeler`,
`ve`.`counter` AS `expeditionCounter`,
@@ -32,7 +32,7 @@ FROM (
)
LEFT JOIN `vn`.`routesMonitor` `rm` ON(`t`.`routeFk` = `rm`.`routeFk`)
)
- LEFT JOIN `vn`.`expeditionTruck` `et` ON(`rm`.`expeditionTruckFk` = `et`.`id`)
+ LEFT JOIN `vn`.`roadmapStop` `rs` ON(`rm`.`expeditionTruckFk` = `rs`.`id`)
)
JOIN `dipole`.`expedition_PrintOut` `epo` ON(`epo`.`expeditionFk` = `e`.`id`)
)
diff --git a/db/routines/vn/events/client_userDisable.sql b/db/routines/vn/events/client_userDisable.sql
new file mode 100644
index 0000000000..b3354f8fd2
--- /dev/null
+++ b/db/routines/vn/events/client_userDisable.sql
@@ -0,0 +1,8 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`client_userDisable`
+ ON SCHEDULE EVERY 1 MONTH
+ STARTS '2023-06-01 00:00:00.000'
+ ON COMPLETION PRESERVE
+ ENABLE
+DO CALL client_userDisable()$$
+DELIMITER ;
diff --git a/db/routines/vn/events/clientsDisable.sql b/db/routines/vn/events/clientsDisable.sql
deleted file mode 100644
index 238e060ddb..0000000000
--- a/db/routines/vn/events/clientsDisable.sql
+++ /dev/null
@@ -1,21 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`clientsDisable`
- ON SCHEDULE EVERY 1 MONTH
- STARTS '2023-06-01 00:00:00.000'
- ON COMPLETION PRESERVE
- ENABLE
-DO BEGIN
- UPDATE account.user u
- JOIN client c ON c.id = u.id
- SET u.active = FALSE
- WHERE c.typeFk = 'normal'
- AND u.id NOT IN (
- SELECT DISTINCT c.id
- FROM client c
- LEFT JOIN ticket t ON t.clientFk = c.id
- WHERE c.salesPersonFk IS NOT NULL
- OR t.created > util.VN_CURDATE() - INTERVAL 2 MONTH
- OR shipped > util.VN_CURDATE() - INTERVAL 2 MONTH
- );
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/functions/client_getFromPhone.sql b/db/routines/vn/functions/client_getFromPhone.sql
index c6ded691b0..5e4daa5324 100644
--- a/db/routines/vn/functions/client_getFromPhone.sql
+++ b/db/routines/vn/functions/client_getFromPhone.sql
@@ -11,10 +11,7 @@ BEGIN
*/
DECLARE vClient INT DEFAULT NULL;
- -- SET vPhone = vPhone COLLATE 'utf8_unicode_ci';
-
- DROP TEMPORARY TABLE IF EXISTS tClient;
- CREATE TEMPORARY TABLE tClient
+ CREATE OR REPLACE TEMPORARY TABLE tClient
ENGINE = MEMORY
SELECT id clientFk
FROM `client`
@@ -27,13 +24,14 @@ BEGIN
OR mobile = vPhone
UNION
SELECT clientFk
- FROM vn.clientContact
+ FROM clientContact
WHERE phone = vPhone;
SELECT t.clientFk INTO vClient
FROM tClient t
JOIN `client` c ON c.id = t.clientFk
WHERE c.isActive
+ AND c.salesPersonFk
LIMIT 1;
DROP TEMPORARY TABLE tClient;
diff --git a/db/routines/vn/functions/sale_hasComponentLack.sql b/db/routines/vn/functions/sale_hasComponentLack.sql
new file mode 100644
index 0000000000..912d5f107c
--- /dev/null
+++ b/db/routines/vn/functions/sale_hasComponentLack.sql
@@ -0,0 +1,28 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`sale_hasComponentLack`(
+ vSelf INT
+)RETURNS tinyint(1)
+ READS SQL DATA
+BEGIN
+/**
+ * Check if a sales line has all the required components.
+ *
+ * @param vSelf Id de sale
+ * @return BOOL
+ */
+ DECLARE vHasComponentLack TINYINT(1);
+
+ WITH componentRequired AS(
+ SELECT COUNT(*) total
+ FROM vn.component
+ WHERE isRequired
+ )SELECT SUM(IF(c.isRequired, TRUE, FALSE)) <> cr.total INTO vHasComponentLack
+ FROM vn.sale s
+ JOIN componentRequired cr
+ LEFT JOIN vn.saleComponent sc ON sc.saleFk = s.id
+ LEFT JOIN vn.component c ON c.id = sc.componentFk
+ WHERE s.id = vSelf;
+
+ RETURN vHasComponentLack;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/functions/ticket_isTooLittle.sql b/db/routines/vn/functions/ticket_isTooLittle.sql
new file mode 100644
index 0000000000..2ce24f0fa7
--- /dev/null
+++ b/db/routines/vn/functions/ticket_isTooLittle.sql
@@ -0,0 +1,25 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`ticket_isTooLittle`(
+ vSelf INT
+)
+ RETURNS tinyint(1)
+ READS SQL DATA
+BEGIN
+/**
+ * Check if the ticket is small based on the volume and amount parameters.
+ *
+ * @param vSelf Id ticket
+ * @return BOOL
+ */
+ DECLARE vIsTooLittle TINYINT(1);
+
+ SELECT (SUM(IFNULL(sv.litros, 0)) < vc.minTicketVolume
+ OR IFNULL(t.totalWithoutVat, 0) < vc.minTicketValue) INTO vIsTooLittle
+ FROM ticket t
+ LEFT JOIN saleVolume sv ON sv.ticketFk = t.id
+ JOIN volumeConfig vc
+ WHERE t.id = vSelf;
+
+ RETURN vIsTooLittle;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/functions/till_new.sql b/db/routines/vn/functions/till_new.sql
index 24f4f2b798..b930725964 100644
--- a/db/routines/vn/functions/till_new.sql
+++ b/db/routines/vn/functions/till_new.sql
@@ -1,79 +1,73 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`till_new`(vClient INT
- ,vBank INT
- ,vAmount DOUBLE
- ,vConcept VARCHAR(25)
- ,vDated DATE
- ,vSerie CHAR(1)
- ,vBatch TINYINT
- ,vNumber INT
- ,vCompany SMALLINT
- ,vWorker INT
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`till_new`(
+ vClient INT,
+ vBank INT,
+ vAmount DOUBLE,
+ vConcept VARCHAR(25),
+ vDated DATE,
+ vSerie CHAR(1),
+ vBatch TINYINT,
+ vNumber INT,
+ vCompany SMALLINT,
+ vWorker INT
)
- RETURNS int(11)
- DETERMINISTIC
BEGIN
DECLARE vAccount VARCHAR(12);
DECLARE vSubaccount VARCHAR(12);
DECLARE vAsiento INT DEFAULT NULL;
-- Inserta el registro en cajas
-
INSERT INTO till
SET
- workerFk = vWorker
- ,bankFk = vBank
- ,`in` = vAmount
- ,concept = vConcept
- ,dated = vDated
- ,serie = vSerie
- ,isAccountable = vBatch
- ,`number` = vNumber
- ,companyFk = vCompany;
+ workerFk = vWorker,
+ bankFk = vBank,
+ `in` = vAmount,
+ concept = vConcept,
+ dated = vDated,
+ serie = vSerie,
+ isAccountable = vBatch,
+ `number` = vNumber,
+ companyFk = vCompany;
-- Inserta los asientos contables
-
SELECT account INTO vAccount
FROM accounting WHERE id = vBank;
SELECT accountingAccount INTO vSubaccount
FROM `client` WHERE id = vClient;
- SET vAsiento = xdiario_new
- (
- vAsiento
- ,vDated
- ,vAccount
- ,vSubaccount
- ,vConcept
- ,vAmount
- ,0
- ,0
- ,NULL -- Serie
- ,NULL -- Factura
- ,NULL -- IVA
- ,NULL -- Recargo
- ,FALSE -- Auxiliar
- ,vCompany
- );
- DO xdiario_new
- (
- vAsiento
- ,vDated
- ,vSubaccount
- ,vAccount
- ,vConcept
- ,0
- ,vAmount
- ,0
- ,NULL -- Serie
- ,NULL -- Factura
- ,NULL -- IVA
- ,NULL -- Recargo
- ,FALSE -- Auxiliar
- ,vCompany
- );
+ CALL xdiario_new(
+ vAsiento,
+ vDated,
+ vAccount,
+ vSubaccount,
+ vConcept,
+ vAmount,
+ 0,
+ 0,
+ NULL, -- Serie
+ NULL, -- Factura
+ NULL, -- IVA
+ NULL, -- Recargo
+ FALSE, -- Auxiliar
+ vCompany,
+ vAsiento);
- RETURN NULL;
+ CALL xdiario_new(
+ vAsiento,
+ vDated,
+ vSubaccount,
+ vAccount,
+ vConcept,
+ 0,
+ vAmount,
+ 0,
+ NULL, -- Serie
+ NULL, -- Factura
+ NULL, -- IVA
+ NULL, -- Recargo
+ FALSE, -- Auxiliar
+ vCompany,
+ vAsiento);
END$$
DELIMITER ;
diff --git a/db/routines/vn/functions/xdiario_new.sql b/db/routines/vn/functions/xdiario_new.sql
deleted file mode 100644
index 06e6e57b24..0000000000
--- a/db/routines/vn/functions/xdiario_new.sql
+++ /dev/null
@@ -1,44 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`xdiario_new`(vAsiento INT,
- vDated DATE,
- vSubaccount VARCHAR(12),
- vAccount VARCHAR(12),
- vConcept VARCHAR(25),
- vDebit DOUBLE,
- vCredit DOUBLE,
- vEuro DOUBLE,
- vSerie CHAR(1),
- vInvoice VARCHAR(8),
- vVat DOUBLE,
- vRe DOUBLE,
- vAux TINYINT,
- vCompany INT
-)
- RETURNS int(11)
- NOT DETERMINISTIC
- NO SQL
-BEGIN
- IF vAsiento IS NULL THEN
- CALL vn.ledger_next(vAsiento);
- END IF;
-
- INSERT INTO XDiario
- SET ASIEN = vAsiento,
- FECHA = vDated,
- SUBCTA = vSubaccount,
- CONTRA = vAccount,
- CONCEPTO = vConcept,
- EURODEBE = vDebit,
- EUROHABER = vCredit,
- BASEEURO = vEuro,
- SERIE = vSerie,
- FACTURA = vInvoice,
- IVA = vVat,
- RECEQUIV = vRe,
- AUXILIAR = IF(vAux = FALSE, NULL, '*'),
- MONEDAUSO = 2,
- empresa_id = vCompany;
-
- RETURN vAsiento;
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/procedures/agencyVolume.sql b/db/routines/vn/procedures/agencyVolume.sql
index 176b777266..ef47834ba0 100644
--- a/db/routines/vn/procedures/agencyVolume.sql
+++ b/db/routines/vn/procedures/agencyVolume.sql
@@ -9,7 +9,7 @@ BEGIN
DECLARE vEnded DATETIME DEFAULT util.dayEnd(util.VN_CURDATE());
SELECT ag.id agency_id,
- CONCAT(RPAD(c.country, 16,' _') ,' ',ag.name) Agencia,
+ CONCAT(RPAD(c.name, 16,' _') ,' ',ag.name) Agencia,
COUNT(*) expediciones,
SUM(t.packages) Bultos,
SUM(tpe.boxes) Faltan
diff --git a/db/routines/vn/procedures/balance_create.sql b/db/routines/vn/procedures/balance_create.sql
index 1b3b2162ce..366707e583 100644
--- a/db/routines/vn/procedures/balance_create.sql
+++ b/db/routines/vn/procedures/balance_create.sql
@@ -1,10 +1,11 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`balance_create`(
- IN vStartingMonth INT,
- IN vEndingMonth INT,
- IN vCompany INT,
- IN vIsConsolidated BOOLEAN,
- IN vInterGroupSalesIncluded BOOLEAN)
+ vStartingMonth INT,
+ vEndingMonth INT,
+ vCompany INT,
+ vIsConsolidated BOOLEAN,
+ vInterGroupSalesIncluded BOOLEAN
+)
BEGIN
/**
* Crea un balance financiero para una empresa durante
diff --git a/db/routines/vn/procedures/buy_clone.sql b/db/routines/vn/procedures/buy_clone.sql
new file mode 100644
index 0000000000..7b77204c9e
--- /dev/null
+++ b/db/routines/vn/procedures/buy_clone.sql
@@ -0,0 +1,57 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_clone`(vEntryFk INT)
+BEGIN
+/**
+ * Clone buys to an entry
+ *
+ * @param vEntryFk The entry id
+ * @table tmp.buy(id)
+ */
+ INSERT INTO buy(
+ entryFk,
+ itemFk,
+ quantity,
+ buyingValue,
+ freightValue,
+ isIgnored,
+ stickers,
+ packagingFk,
+ packing,
+ `grouping`,
+ groupingMode,
+ comissionValue,
+ packageValue,
+ price1,
+ price2,
+ price3,
+ minPrice,
+ isChecked,
+ location,
+ weight,
+ itemOriginalFk)
+ SELECT vEntryFk,
+ b.itemFk,
+ b.quantity,
+ b.buyingValue,
+ b.freightValue,
+ b.isIgnored,
+ b.stickers,
+ b.packagingFk,
+ b.packing,
+ b.`grouping`,
+ b.groupingMode,
+ b.comissionValue,
+ b.packageValue,
+ b.price1,
+ b.price2,
+ b.price3,
+ b.minPrice,
+ b.isChecked,
+ b.location,
+ b.weight,
+ b.itemOriginalFk
+ FROM tmp.buy tb
+ JOIN vn.buy b ON b.id = tb.id;
+
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/buy_recalcPricesByBuy.sql b/db/routines/vn/procedures/buy_recalcPricesByBuy.sql
index b963bae143..b699e42d78 100644
--- a/db/routines/vn/procedures/buy_recalcPricesByBuy.sql
+++ b/db/routines/vn/procedures/buy_recalcPricesByBuy.sql
@@ -1,14 +1,16 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_recalcPricesByBuy`(IN vBuyFk INT(11))
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_recalcPricesByBuy`(
+ vBuyFk INT(11)
+)
BEGIN
/**
* Recalcula los precios de una compra
*
* @param vBuyFk
- */
+ */
DROP TEMPORARY TABLE IF EXISTS tmp.buyRecalc;
- CREATE TEMPORARY TABLE tmp.buyRecalc
+ CREATE TEMPORARY TABLE tmp.buyRecalc
SELECT vBuyFk id;
CALL buy_recalcPrices();
diff --git a/db/routines/vn/procedures/buy_recalcPricesByEntry.sql b/db/routines/vn/procedures/buy_recalcPricesByEntry.sql
index db0fc0690a..8d70d3626e 100644
--- a/db/routines/vn/procedures/buy_recalcPricesByEntry.sql
+++ b/db/routines/vn/procedures/buy_recalcPricesByEntry.sql
@@ -1,11 +1,13 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_recalcPricesByEntry`(IN vEntryFk INT(11))
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_recalcPricesByEntry`(
+ vEntryFk INT(11)
+)
BEGIN
/**
* Recalcula los precios de una entrada
*
* @param vEntryFk
- */
+ */
DROP TEMPORARY TABLE IF EXISTS tmp.buyRecalc;
CREATE TEMPORARY TABLE tmp.buyRecalc
diff --git a/db/routines/vn/procedures/catalog_componentCalculate.sql b/db/routines/vn/procedures/catalog_componentCalculate.sql
index 4b860103df..92fe233c5d 100644
--- a/db/routines/vn/procedures/catalog_componentCalculate.sql
+++ b/db/routines/vn/procedures/catalog_componentCalculate.sql
@@ -259,7 +259,7 @@ BEGIN
JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk
AND tcs.warehouseFk = tcc.warehouseFk
WHERE IFNULL(tcs.classRate, 1) = 1
- AND NOT tcc.groupingMode = 'packing'
+ AND (tcc.groupingMode = 'grouping' OR tcc.groupingMode IS NULL)
AND (tcc.packing > tcc.`grouping` OR tcc.groupingMode IS NULL)
GROUP BY tcs.warehouseFk, tcs.itemFk;
diff --git a/db/routines/vn/procedures/clean.sql b/db/routines/vn/procedures/clean.sql
index 36ef85834d..6645b9cb24 100644
--- a/db/routines/vn/procedures/clean.sql
+++ b/db/routines/vn/procedures/clean.sql
@@ -86,7 +86,7 @@ BEGIN
WHERE cs.description = 'Anulado'
AND c.created < v2Months;
- DELETE FROM expeditionTruck WHERE eta < v3Months;
+ DELETE FROM roadmapStop WHERE eta < v3Months;
DELETE FROM XDiario WHERE FECHA < v3Months OR FECHA IS NULL;
-- Borrar travels sin entradas
diff --git a/db/routines/vn/procedures/client_getRisk.sql b/db/routines/vn/procedures/client_getRisk.sql
index 7fbade303f..106284c2fb 100644
--- a/db/routines/vn/procedures/client_getRisk.sql
+++ b/db/routines/vn/procedures/client_getRisk.sql
@@ -22,7 +22,7 @@ BEGIN
c.credit,
CAST(r.risk AS DECIMAL (10,2)) risk,
CAST(c.credit - r.risk AS DECIMAL (10,2)) difference,
- co.country
+ co.name country
FROM client c
JOIN tmp.risk r ON r.clientFk = c.id
JOIN country co ON co.id = c.countryFk
diff --git a/db/routines/vn/procedures/client_userDisable.sql b/db/routines/vn/procedures/client_userDisable.sql
new file mode 100644
index 0000000000..f2ba65c1cd
--- /dev/null
+++ b/db/routines/vn/procedures/client_userDisable.sql
@@ -0,0 +1,33 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_userDisable`()
+BEGIN
+/**
+* Desactiva los clientes inactivos en los últimos X meses.
+*/
+ DECLARE vMonths INT;
+
+ SELECT monthsToDisableUser INTO vMonths
+ FROM clientConfig;
+
+ IF vMonths IS NULL THEN
+ CALL util.throw('Config parameter not set');
+ END IF;
+
+ UPDATE account.user u
+ JOIN client c ON c.id = u.id
+ LEFT JOIN account.account a ON a.id = u.id
+ SET u.active = FALSE
+ WHERE c.typeFk = 'normal'
+ AND a.id IS NULL
+ AND u.active
+ AND c.created < util.VN_CURDATE() - INTERVAL vMonths MONTH
+ AND u.id NOT IN (
+ SELECT DISTINCT c.id
+ FROM client c
+ LEFT JOIN ticket t ON t.clientFk = c.id
+ WHERE c.salesPersonFk IS NOT NULL
+ OR t.created > util.VN_CURDATE() - INTERVAL vMonths MONTH
+ OR shipped > util.VN_CURDATE() - INTERVAL vMonths MONTH
+ );
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/procedures/collection_assign.sql b/db/routines/vn/procedures/collection_assign.sql
index 196764c426..fc9f9a7115 100644
--- a/db/routines/vn/procedures/collection_assign.sql
+++ b/db/routines/vn/procedures/collection_assign.sql
@@ -13,24 +13,12 @@ BEGIN
* @param vCollectionFk Id de colección
*/
DECLARE vHasTooMuchCollections BOOL;
- DECLARE vItemPackingTypeFk VARCHAR(1);
- DECLARE vWarehouseFk INT;
- DECLARE vLockName VARCHAR(215);
- DECLARE vLockTime INT DEFAULT 30;
-
- DECLARE EXIT HANDLER FOR SQLEXCEPTION
- BEGIN
- IF vLockName IS NOT NULL THEN
- DO RELEASE_LOCK(vLockName);
- END IF;
-
- RESIGNAL;
- END;
-- Si hay colecciones sin terminar, sale del proceso
CALL collection_get(vUserFk);
- SELECT (pc.maxNotReadyCollections - COUNT(*)) <= 0 INTO vHasTooMuchCollections
+ SELECT (pc.maxNotReadyCollections - COUNT(*)) <= 0
+ INTO vHasTooMuchCollections
FROM productionConfig pc
LEFT JOIN tCollection ON TRUE;
@@ -40,21 +28,6 @@ BEGIN
CALL util.throw('Hay colecciones pendientes');
END IF;
- SELECT warehouseFk, itemPackingTypeFk
- INTO vWarehouseFk, vItemPackingTypeFk
- FROM operator
- WHERE workerFk = vUserFk;
-
- SET vLockName = CONCAT_WS('/',
- vLockName,
- vWarehouseFk,
- vItemPackingTypeFk
- );
-
- IF NOT GET_LOCK(vLockName, vLockTime) THEN
- CALL util.throw(CONCAT('Cannot get lock: ', vLockName));
- END IF;
-
-- Se eliminan las colecciones sin asignar que estan obsoletas
INSERT INTO ticketTracking(stateFk, ticketFk)
SELECT s.id, tc.ticketFk
@@ -62,7 +35,7 @@ BEGIN
JOIN ticketCollection tc ON tc.collectionFk = c.id
JOIN `state` s ON s.code = 'PRINTED_AUTO'
JOIN productionConfig pc
- WHERE c.workerFk IS NULL
+ WHERE c.workerFk IS NULL
AND TIMEDIFF(util.VN_NOW(), c.created) > pc.maxNotAssignedCollectionLifeTime;
DELETE c.*
@@ -76,8 +49,7 @@ BEGIN
VALUES(vUserFk);
-- Comprueba si hay colecciones disponibles que se ajustan a su configuracion
- SELECT MIN(c.id)
- INTO vCollectionFk
+ SELECT MIN(c.id) INTO vCollectionFk
FROM `collection` c
JOIN operator o
ON (o.itemPackingTypeFk = c.itemPackingTypeFk OR c.itemPackingTypeFk IS NULL)
@@ -103,7 +75,5 @@ BEGIN
UPDATE `collection`
SET workerFk = vUserFk
WHERE id = vCollectionFk;
-
- DO RELEASE_LOCK(vLockName);
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/collection_new.sql b/db/routines/vn/procedures/collection_new.sql
index 8a1eff4a11..370b59ae5d 100644
--- a/db/routines/vn/procedures/collection_new.sql
+++ b/db/routines/vn/procedures/collection_new.sql
@@ -49,6 +49,7 @@ BEGIN
BEGIN
IF vLockName IS NOT NULL THEN
DO RELEASE_LOCK(vLockName);
+ CALL util.debugAdd('releaseLock', vLockName); -- Tmp
END IF;
RESIGNAL;
diff --git a/db/routines/vn/procedures/company_getSuppliersDebt.sql b/db/routines/vn/procedures/company_getSuppliersDebt.sql
index 6335ccbe38..83043f337d 100644
--- a/db/routines/vn/procedures/company_getSuppliersDebt.sql
+++ b/db/routines/vn/procedures/company_getSuppliersDebt.sql
@@ -188,11 +188,12 @@ BEGIN
FROM tPendingDuedates vp
LEFT JOIN supplier s ON s.id = vp.supplierFk
LEFT JOIN client c ON c.fi = s.nif
- LEFT JOIN clientRisk cr ON cr.clientFk = c.id
+ LEFT JOIN clientRisk cr ON cr.clientFk = c.id
AND cr.companyFk = vp.companyFk
LEFT JOIN supplierAccount sa ON sa.supplierFk = s.id
LEFT JOIN bankEntity be ON be.id = sa.bankEntityFk
- LEFT JOIN country co ON co.id = be.countryFk;
+ LEFT JOIN country co ON co.id = be.countryFk
+ GROUP BY vp.id;
DROP TEMPORARY TABLE tOpeningBalances;
DROP TEMPORARY TABLE tPendingDuedates;
diff --git a/db/routines/vn/procedures/conveyorExpedition_Add.sql b/db/routines/vn/procedures/conveyorExpedition_Add.sql
index c57c2ea37f..daaf33f2fa 100644
--- a/db/routines/vn/procedures/conveyorExpedition_Add.sql
+++ b/db/routines/vn/procedures/conveyorExpedition_Add.sql
@@ -24,7 +24,7 @@ BEGIN
10 * p.height as height,
IFNULL(t.routeFk,am.agencyFk) routeFk,
hour(e.created) * 60 + minute(e.created),
- IFNULL(et.description , a.name),
+ IFNULL(rs.description , a.name),
IFNULL(t.routeFk,am.agencyFk) criterion,
IFNULL(p.conveyorBuildingClassFk , pc.defaultConveyorBuildingClass)
FROM vn.expedition e
@@ -34,7 +34,7 @@ BEGIN
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
+ LEFT JOIN vn.roadmapStop rs ON rs.id = rm.expeditionTruckFk
JOIN vn.packagingConfig pc
WHERE t.warehouseFk IN (60,1,44)
AND e.created BETWEEN vStarted AND vEnded
diff --git a/db/routines/vn/procedures/creditInsurance_getRisk.sql b/db/routines/vn/procedures/creditInsurance_getRisk.sql
index 8ddb9d721e..eccc37ca13 100644
--- a/db/routines/vn/procedures/creditInsurance_getRisk.sql
+++ b/db/routines/vn/procedures/creditInsurance_getRisk.sql
@@ -27,7 +27,7 @@ BEGIN
cac.invoiced billedAnnually,
c.dueDay,
cgd.grade,
- c2.country
+ c2.name country
FROM tmp.clientGetDebt cgd
LEFT JOIN tmp.risk r ON r.clientFk = cgd.clientFk
JOIN client c ON c.id = cgd.clientFk
diff --git a/db/routines/vn/procedures/duaInvoiceInBooking.sql b/db/routines/vn/procedures/duaInvoiceInBooking.sql
index f95e836b12..035b4eab1f 100644
--- a/db/routines/vn/procedures/duaInvoiceInBooking.sql
+++ b/db/routines/vn/procedures/duaInvoiceInBooking.sql
@@ -6,12 +6,12 @@ BEGIN
*
* @param vDuaFk Id del dua a recalcular
*/
- DECLARE done BOOL DEFAULT FALSE;
+ DECLARE vDone BOOL DEFAULT FALSE;
DECLARE vInvoiceFk INT;
- DECLARE vASIEN BIGINT DEFAULT 0;
- DECLARE vCounter INT DEFAULT 0;
+ DECLARE vBookEntry INT;
+ DECLARE vFiscalYear INT;
- DECLARE rs CURSOR FOR
+ DECLARE vInvoicesIn CURSOR FOR
SELECT DISTINCT e.invoiceInFk
FROM entry e
JOIN duaEntry de ON de.entryFk = e.id
@@ -20,56 +20,55 @@ BEGIN
AND de.customsValue
AND ii.isBooked = FALSE;
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-
- OPEN rs;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
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),
+ SET 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.isBooked = TRUE,
e.isConfirmed = TRUE
WHERE d.id = vDuaFk;
- SELECT IFNULL(ASIEN,0) INTO vASIEN
- FROM dua
- WHERE id = vDuaFk;
+ SELECT ASIEN INTO vBookEntry FROM dua WHERE id = vDuaFk;
- FETCH rs INTO vInvoiceFk;
+ IF vBookEntry IS NULL THEN
+ SELECT YEAR(IFNULL(ii.bookEntried, d.bookEntried)) INTO vFiscalYear
+ FROM 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
+ WHERE d.id = vDuaFk
+ LIMIT 1;
+ CALL ledger_next(vFiscalYear, FALSE, vBookEntry);
+ END IF;
- WHILE NOT done DO
+ OPEN vInvoicesIn;
- CALL invoiceIn_booking(vInvoiceFk);
-
- IF vCounter > 0 OR vASIEN > 0 THEN
-
- UPDATE XDiario x
- JOIN ledgerConfig lc ON lc.lastBookEntry = x.ASIEN
- SET x.ASIEN = vASIEN;
-
- ELSE
-
- SELECT lastBookEntry INTO vASIEN FROM ledgerConfig;
+l: LOOP
+ SET vDone = FALSE;
+ FETCH vInvoicesIn INTO vInvoiceFk;
+ IF vDone THEN
+ LEAVE l;
END IF;
- SET vCounter = vCounter + 1;
+ CALL invoiceIn_booking(vInvoiceFk, vBookEntry);
+ END LOOP;
- FETCH rs INTO vInvoiceFk;
-
- END WHILE;
-
- CLOSE rs;
+ CLOSE vInvoicesIn;
UPDATE dua
- SET ASIEN = vASIEN
+ SET ASIEN = vBookEntry
WHERE id = vDuaFk;
+ UPDATE invoiceIn ii
+ JOIN duaInvoiceIn dii ON dii.invoiceInFk = ii.id
+ SET ii.isBooked = TRUE
+ WHERE dii.duaFk = vDuaFk;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/duaTaxBooking.sql b/db/routines/vn/procedures/duaTaxBooking.sql
index 1fef11e96f..8d8effe902 100644
--- a/db/routines/vn/procedures/duaTaxBooking.sql
+++ b/db/routines/vn/procedures/duaTaxBooking.sql
@@ -2,127 +2,121 @@ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`duaTaxBooking`(vDuaFk INT)
BEGIN
DECLARE vBookNumber INT;
- DECLARE vBookDated DATE;
- DECLARE vDiff DECIMAL(10,2);
- DECLARE vApunte BIGINT;
-
- SELECT ASIEN, IFNULL(bookEntried, util.VN_CURDATE()) INTO vBookNumber, vBookDated
- FROM dua
+ DECLARE vBookDated DATE;
+ DECLARE vDiff DECIMAL(10,2);
+ DECLARE vApunte BIGINT;
+
+ 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);
+ CALL ledger_next(YEAR(vBookDated), FALSE, vBookNumber);
END IF;
-- Apunte de la aduana
-
INSERT INTO XDiario(
- ASIEN,
- FECHA,
- SUBCTA,
- CONCEPTO,
- EUROHABER,
- SERIE,
- empresa_id,
- CLAVE,
- FACTURA)
+ ASIEN,
+ FECHA,
+ SUBCTA,
+ CONCEPTO,
+ EUROHABER,
+ SERIE,
+ empresa_id,
+ CLAVE,
+ FACTURA)
+ SELECT vBookNumber,
+ d.bookEntried,
+ '4700000999',
+ CONCAT('DUA ',d.`code`),
+ sum(dt.base * dt.rate / 100) EUROHABER,
+ 'R',
+ d.companyFk,
+ vDuaFk,
+ vDuaFk
+ FROM duaTax dt
+ JOIN dua d ON d.id = dt.duaFk
+ WHERE dt.duaFk = vDuaFk;
- SELECT
- vBookNumber,
- d.bookEntried,
- '4700000999',
- CONCAT('DUA ',d.`code`),
- sum(dt.base * dt.rate / 100) EUROHABER,
- 'R',
- d.companyFk,
- vDuaFk,
- vDuaFk
- 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,
- 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(c.code = 'ES', 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
- LIMIT 10000000000000000000
- ) tba
- GROUP BY rate
+ -- 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(c.code = 'ES', 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
+ LIMIT 10000000000000000000
+ ) tba
+ GROUP BY rate
) tr ON tr.rate = dt.rate
- JOIN supplier s ON s.id = d.companyFk
- JOIN country c ON c.id = s.countryFk
- WHERE d.id = vDuaFk
- GROUP BY dt.rate;
+ JOIN supplier s ON s.id = d.companyFk
+ JOIN country c ON c.id = s.countryFk
+ 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
@@ -131,6 +125,5 @@ BEGIN
UPDATE dua
SET ASIEN = vBookNumber
WHERE id = vDuaFk;
-
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/entry_cloneHeader.sql b/db/routines/vn/procedures/entry_cloneHeader.sql
index 6a6df9194d..7f94266632 100644
--- a/db/routines/vn/procedures/entry_cloneHeader.sql
+++ b/db/routines/vn/procedures/entry_cloneHeader.sql
@@ -9,8 +9,8 @@ BEGIN
* Clones an entry header.
*
* @param vSelf The entry id
+ * @param OUT vNewEntryFk The new entry id
* @param vTravelFk Travel for the new entry or %NULL to use the source entry travel
- * @param vNewEntryFk The new entry id
*/
INSERT INTO entry(
travelFk,
diff --git a/db/routines/vn/procedures/entry_copyBuys.sql b/db/routines/vn/procedures/entry_copyBuys.sql
index a00fbc846b..9bf4a55e4d 100644
--- a/db/routines/vn/procedures/entry_copyBuys.sql
+++ b/db/routines/vn/procedures/entry_copyBuys.sql
@@ -1,59 +1,18 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_copyBuys`(vSelf INT, vCopyTo INT)
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_copyBuys`(vSelf INT, vDestinationEntryFk INT)
BEGIN
/**
- * Copies an entry buys to another buy.
+ * Copies all buys from an entry to an entry.
*
* @param vSelf The entry id
- * @param vCopyTo The destination entry id
+ * @param vDestinationEntryFk The destination entry id
*/
- INSERT INTO buy(
- entryFk,
- itemFk,
- quantity,
- buyingValue,
- freightValue,
- isIgnored,
- stickers,
- packing,
- `grouping`,
- groupingMode,
- containerFk,
- comissionValue,
- packageValue,
- packagingFk,
- price1,
- price2,
- price3,
- minPrice,
- isChecked,
- location,
- weight,
- itemOriginalFk
- )
- SELECT vCopyTo,
- itemFk,
- quantity,
- buyingValue,
- freightValue,
- isIgnored,
- stickers,
- packing,
- `grouping`,
- groupingMode,
- containerFk,
- comissionValue,
- packageValue,
- packagingFk,
- price1,
- price2,
- price3,
- minPrice,
- isChecked,
- location,
- weight,
- itemOriginalFk
+ CREATE OR REPLACE TEMPORARY TABLE tmp.buy
+ SELECT id
FROM buy
WHERE entryFk = vSelf;
+
+ CALL buy_clone(vDestinationEntryFk);
+ DROP TEMPORARY TABLE tmp.buy;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/entry_fixMisfit.sql b/db/routines/vn/procedures/entry_fixMisfit.sql
index 3e57d362e3..986a0ae9ee 100644
--- a/db/routines/vn/procedures/entry_fixMisfit.sql
+++ b/db/routines/vn/procedures/entry_fixMisfit.sql
@@ -26,7 +26,6 @@ BEGIN
packing,
`grouping`,
groupingMode,
- containerFk,
comissionValue,
packageValue,
location,
@@ -46,7 +45,6 @@ BEGIN
packing,
`grouping`,
groupingMode,
- containerFk,
comissionValue,
packageValue,
location,
diff --git a/db/routines/vn/procedures/entry_moveNotPrinted.sql b/db/routines/vn/procedures/entry_moveNotPrinted.sql
index 526ae9d437..3a12007d17 100644
--- a/db/routines/vn/procedures/entry_moveNotPrinted.sql
+++ b/db/routines/vn/procedures/entry_moveNotPrinted.sql
@@ -56,7 +56,6 @@ BEGIN
packing,
`grouping`,
groupingMode,
- containerFk,
comissionValue,
packageValue,
packagingFk,
@@ -77,7 +76,6 @@ BEGIN
packing,
`grouping`,
groupingMode,
- containerFk,
comissionValue,
packageValue,
packagingFk,
@@ -114,7 +112,6 @@ BEGIN
packing,
`grouping`,
groupingMode,
- containerFk,
comissionValue,
packageValue,
location,
@@ -133,7 +130,6 @@ BEGIN
packing,
`grouping`,
groupingMode,
- containerFk,
comissionValue,
packageValue,
location,
diff --git a/db/routines/vn/procedures/entry_splitByShelving.sql b/db/routines/vn/procedures/entry_splitByShelving.sql
index b7d9c77b31..2898141eae 100644
--- a/db/routines/vn/procedures/entry_splitByShelving.sql
+++ b/db/routines/vn/procedures/entry_splitByShelving.sql
@@ -76,7 +76,6 @@ BEGIN
packing,
`grouping`,
groupingMode,
- containerFk,
comissionValue,
packageValue,
location,
@@ -103,7 +102,6 @@ BEGIN
packing,
`grouping`,
groupingMode,
- containerFk,
comissionValue,
packageValue,
location,
diff --git a/db/routines/vn/procedures/expeditionTruck_Add.sql b/db/routines/vn/procedures/expeditionTruck_Add.sql
index e4009ca47a..eabfa452c3 100644
--- a/db/routines/vn/procedures/expeditionTruck_Add.sql
+++ b/db/routines/vn/procedures/expeditionTruck_Add.sql
@@ -2,7 +2,7 @@ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`expeditionTruck_Add`(vHour VARCHAR(5), vDescription VARCHAR(45))
BEGIN
- INSERT INTO vn.expeditionTruck(eta,description)
+ INSERT INTO vn.roadmapStop(eta,description)
VALUES(CONCAT(util.VN_CURDATE(), ' ', vHour), vDescription);
END$$
diff --git a/db/routines/vn/procedures/expeditionTruck_List.sql b/db/routines/vn/procedures/expeditionTruck_List.sql
index 2434f92748..c358df5e32 100644
--- a/db/routines/vn/procedures/expeditionTruck_List.sql
+++ b/db/routines/vn/procedures/expeditionTruck_List.sql
@@ -4,9 +4,9 @@ BEGIN
SELECT id truckFk,
eta,
- description Destino
- FROM expeditionTruck
- WHERE eta BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE())
- ORDER BY eta;
+ description Destino
+ FROM roadmapStop
+ WHERE eta BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE())
+ ORDER BY eta;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/expedition_StateGet.sql b/db/routines/vn/procedures/expedition_StateGet.sql
index 17fcf91e58..e58ec3afd8 100644
--- a/db/routines/vn/procedures/expedition_StateGet.sql
+++ b/db/routines/vn/procedures/expedition_StateGet.sql
@@ -53,8 +53,8 @@ BEGIN
am.name zonaRuta,
t.routeFk ruta,
rm.beachFk ubicacion,
- et.eta ,
- et.description camion,
+ rs.eta ,
+ rs.description camion,
vTicketsPendientes AS ticketsPendientes,
vEtiquetasTotales AS etiquetasTotales,
vEtiquetasEscaneadas AS etiquetasEscaneadas,
@@ -67,7 +67,7 @@ BEGIN
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
+ LEFT JOIN vn.roadmapStop rs ON rs.id = rm.expeditionTruckFk
WHERE e.id = vExpeditionFk;
END$$
diff --git a/db/routines/vn/procedures/expedition_getState.sql b/db/routines/vn/procedures/expedition_getState.sql
index 96e247e4de..f3f94a8898 100644
--- a/db/routines/vn/procedures/expedition_getState.sql
+++ b/db/routines/vn/procedures/expedition_getState.sql
@@ -37,8 +37,8 @@ BEGIN
am.name zonaRuta,
t.routeFk ruta,
rm.beachFk ubicacion,
- et.eta ,
- et.description camion,
+ rs.eta ,
+ rs.description camion,
vTicketsPendientes AS ticketsPendientes,
vEtiquetasTotales AS etiquetasTotales,
vEtiquetasEscaneadas AS etiquetasEscaneadas
@@ -50,7 +50,7 @@ BEGIN
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
+ LEFT JOIN vn.roadmapStop rs ON rs.id = rm.expeditionTruckFk
WHERE e.id = vExpeditionFk;
END$$
diff --git a/db/routines/vn/procedures/fv_pca.sql b/db/routines/vn/procedures/fv_pca.sql
deleted file mode 100644
index b8e7343ef2..0000000000
--- a/db/routines/vn/procedures/fv_pca.sql
+++ /dev/null
@@ -1,101 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`fv_pca`()
-BEGIN
-
-DECLARE done INT DEFAULT FALSE;
-
-DECLARE vTicketFk INT;
-DECLARE vSaleFk INT;
-DECLARE vClonTicket INT DEFAULT 0;
-
-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
- JOIN vn.itemType it ON it.id = i.typeFk
- WHERE t.shipped BETWEEN '2020-10-18' AND '2020-10-31'
- AND it.code IN ('ANT','ANS','ORQ','TRO')
- and t.warehouseFk = 1;
-
-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 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,
- addressFk,
- agencyModeFk,
- nickname,
- warehouseFk,
- companyFk,
- landed,
- zoneFk,
- zonePrice,
- zoneBonus,
- routeFk
- )
- SELECT
- clientFk,
- shipped,
- addressFk,
- agencyModeFk,
- nickname,
- 44,
- companyFk,
- landed,
- zoneFk,
- zonePrice,
- zoneBonus,
- routeFk
-
- FROM ticket
- WHERE id = vTicketFk;
-
- SET vClonTicket = LAST_INSERT_ID();
-
- SELECT 'lstID', vClonTicket;
- /*
- INSERT INTO ticketObservation(ticketFk, observationTypeFk, description)
- SELECT vTicketFk, ao.observationTypeFk, ao.description
- FROM addressObservation ao
- JOIN ticket t ON t.addressFk = ao.addressFk
- WHERE t.id = vClonTicket;
-*/
- INSERT INTO ticketLog
- 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;
-
-
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/procedures/invoiceInTax_afterUpsert.sql b/db/routines/vn/procedures/invoiceInTax_afterUpsert.sql
index 43d54c28c8..60ec34696d 100644
--- a/db/routines/vn/procedures/invoiceInTax_afterUpsert.sql
+++ b/db/routines/vn/procedures/invoiceInTax_afterUpsert.sql
@@ -10,8 +10,6 @@ BEGIN
DECLARE vLines INT;
DECLARE vHasDistinctTransactions INT;
- CALL invoiceIn_checkBooked(vInvoiceInFk);
-
SELECT taxRowLimit INTO vTaxRowLimit FROM invoiceInConfig;
SELECT COUNT(*) INTO vLines
diff --git a/db/routines/vn/procedures/invoiceInTax_getFromEntries.sql b/db/routines/vn/procedures/invoiceInTax_getFromEntries.sql
index 631b8f31c1..5f2ceeb4fb 100644
--- a/db/routines/vn/procedures/invoiceInTax_getFromEntries.sql
+++ b/db/routines/vn/procedures/invoiceInTax_getFromEntries.sql
@@ -1,26 +1,24 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceInTax_getFromEntries`(IN vInvoiceInFk INT)
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceInTax_getFromEntries`(
+ IN vInvoiceInFk INT
+)
BEGIN
DECLARE vRate DOUBLE DEFAULT 1;
- DECLARE vDated DATE;
DECLARE vExpenseFk VARCHAR(10);
- CALL invoiceIn_checkBooked(vInvoiceInFk);
-
- SELECT MAX(rr.dated) INTO vDated
- FROM referenceRate rr
- JOIN invoiceIn ii ON ii.id = vInvoiceInFk
- WHERE rr.dated <= ii.issued
- AND rr.currencyFk = ii.currencyFk ;
-
- IF vDated THEN
- SELECT `value` INTO vRate
- FROM referenceRate
- WHERE dated = vDated;
- END IF;
+ WITH rate AS(
+ SELECT MAX(rr.dated) dated, ii.currencyFk
+ FROM vn.invoiceIn ii
+ JOIN vn.referenceRate rr ON rr.currencyFk = ii.currencyFk
+ WHERE ii.id = vInvoiceInFk
+ AND rr.dated <= ii.issued
+ ) SELECT `value` INTO vRate
+ FROM vn.referenceRate rr
+ JOIN rate r ON r.dated = rr.dated
+ AND r.currencyFk = rr.currencyFk;
SELECT id INTO vExpenseFk
- FROM vn.expense
+ FROM expense
WHERE `name` = 'Adquisición mercancia Extracomunitaria'
GROUP BY id
LIMIT 1;
@@ -28,19 +26,25 @@ BEGIN
DELETE FROM invoiceInTax
WHERE invoiceInFk = vInvoiceInFk;
- INSERT INTO invoiceInTax(invoiceInFk, taxableBase, expenseFk, foreignValue, taxTypeSageFk, transactionTypeSageFk)
- SELECT ii.id,
- SUM(b.buyingValue * b.quantity) / IFNULL(vRate,1) taxableBase,
- vExpenseFk,
- IF(ii.currencyFk = 1,NULL,SUM(b.buyingValue * b.quantity )) divisa,
- taxTypeSageFk,
+ INSERT INTO invoiceInTax(
+ invoiceInFk,
+ taxableBase,
+ expenseFk,
+ foreignValue,
+ taxTypeSageFk,
transactionTypeSageFk
+ )SELECT ii.id,
+ SUM(b.buyingValue * b.quantity) / vRate taxableBase,
+ vExpenseFk,
+ IF(ii.currencyFk = 1,
+ NULL,
+ SUM(b.buyingValue * b.quantity )),
+ taxTypeSageFk,
+ transactionTypeSageFk
FROM invoiceIn ii
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
- AND rr.dated = ii.issued
WHERE ii.id = vInvoiceInFk
HAVING taxableBase IS NOT NULL;
END$$
diff --git a/db/routines/vn/procedures/invoiceIn_booking.sql b/db/routines/vn/procedures/invoiceIn_booking.sql
index a75b2269ae..cd311ba9d4 100644
--- a/db/routines/vn/procedures/invoiceIn_booking.sql
+++ b/db/routines/vn/procedures/invoiceIn_booking.sql
@@ -1,7 +1,18 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceIn_booking`(vSelf INT)
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceIn_booking`(
+ vSelf INT,
+ vBookNumber INT
+)
BEGIN
- DECLARE vBookNumber INT;
+/**
+ * Genera la contabilidad para una factura y la marca como contabilizada
+ * Cuadra el asiento generado en si encuentra problemas derivados
+ * de los calculos con decimales
+ *
+ * @param vSelf Id invoiceIn
+ * @param vBookEntry Id de asiento, si es NULL se genera uno nuevo
+ */
+ DECLARE vFiscalYear INT;
CREATE OR REPLACE TEMPORARY TABLE tInvoiceIn
ENGINE = MEMORY
@@ -56,7 +67,11 @@ BEGIN
LEFT JOIN sage.taxType tt ON tt.id = ti.CodigoIva
WHERE ii.id = vSelf;
- CALL vn.ledger_next(vBookNumber);
+ SELECT YEAR(bookEntried) INTO vFiscalYear FROM tInvoiceIn LIMIT 1;
+
+ IF vBookNumber IS NULL THEN
+ CALL ledger_next(vFiscalYear, FALSE, vBookNumber);
+ END IF;
-- Apunte del proveedor
INSERT INTO XDiario(
@@ -185,7 +200,7 @@ BEGIN
LEFT JOIN (
SELECT e.id
FROM tInvoiceIn tii
- JOIN expense e ON e.id = tii.expenseFk
+ JOIN expense e ON e.id = tii.expenseFk
WHERE e.isWithheld
LIMIT 1
) eWithheld ON TRUE
diff --git a/db/routines/vn/procedures/invoiceOutBooking.sql b/db/routines/vn/procedures/invoiceOutBooking.sql
index bd109e1ec8..b50b89eaf0 100644
--- a/db/routines/vn/procedures/invoiceOutBooking.sql
+++ b/db/routines/vn/procedures/invoiceOutBooking.sql
@@ -1,22 +1,24 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceOutBooking`(IN vInvoice INT)
BEGIN
-/* Asienta la factura emitida
-*
-* param vInvoice factura_id
-*/
+/**
+ * Asienta una factura emitida
+ *
+ * @param vInvoice Id invoiceOut
+ */
DECLARE vBookNumber INT;
- DECLARE vExpenseConcept VARCHAR(50);
- DECLARE vSpainCountryFk INT;
- DECLARE vOldBookNumber INT;
+ DECLARE vExpenseConcept VARCHAR(50);
+ DECLARE vSpainCountryFk INT;
+ DECLARE vOldBookNumber INT;
+ DECLARE vFiscalYear INT;
- SELECT id INTO vSpainCountryFk FROM country WHERE code = 'ES';
+ SELECT id INTO vSpainCountryFk FROM country WHERE `code` = 'ES';
- SELECT ASIEN
+ SELECT ASIEN
INTO vOldBookNumber
FROM XDiario x
JOIN invoiceOut io ON io.id = vInvoice
- WHERE x.SERIE = io.serial
+ WHERE x.SERIE = io.serial
AND x.FACTURA = RIGHT(io.ref, LENGTH(io.ref) - 1)
LIMIT 1;
@@ -26,140 +28,133 @@ BEGIN
DROP TEMPORARY TABLE IF EXISTS rs;
CREATE TEMPORARY TABLE rs
- SELECT
- c.accountingAccount AS clientBookingAccount,
- io.amount as totalAmount,
- CONCAT('n/fra ', io.ref) as simpleConcept,
- CONCAT('n/fra ', io.ref, ' ', c.name) as Concept,
- io.serial AS SERIE,
- io.issued AS FECHA_EX,
- io.issued AS FECHA_OP,
- io.issued AS FECHA,
- 1 AS NFACTICK,
- IF(ic.correctingFk,'D','') AS TIPOOPE,
- io.siiTrascendencyInvoiceOutFk AS TIPOCLAVE,
- io.cplusTaxBreakFk AS TIPOEXENCI,
- io.cplusSubjectOpFk AS TIPONOSUJE,
- io.siiTypeInvoiceOutFk AS TIPOFACT,
- ic.cplusRectificationTypeFk AS TIPORECTIF,
+ SELECT c.accountingAccount clientBookingAccount,
+ io.amount totalAmount,
+ CONCAT('n/fra ', io.ref) simpleConcept,
+ CONCAT('n/fra ', io.ref, ' ', c.name) Concept,
+ io.serial SERIE,
+ io.issued FECHA_EX,
+ io.issued FECHA_OP,
+ io.issued FECHA,
+ 1 NFACTICK,
+ IF(ic.correctingFk,'D','') TIPOOPE,
+ io.siiTrascendencyInvoiceOutFk TIPOCLAVE,
+ io.cplusTaxBreakFk TIPOEXENCI,
+ io.cplusSubjectOpFk TIPONOSUJE,
+ io.siiTypeInvoiceOutFk TIPOFACT,
+ ic.cplusRectificationTypeFk TIPORECTIF,
io.companyFk,
- RIGHT(io.ref, LENGTH(io.ref) - 1) AS invoiceNum,
- IF(c.countryFk = vSpainCountryFk, vSpainCountryFk, IF(ct.isUeeMember,2,4)) AS TERIDNIF,
- CONCAT(IF(ct.isUeeMember AND c.countryFk <> vSpainCountryFk,ct.code,''),c.fi) AS TERNIF,
- c.socialName AS TERNOM,
- ior.serial AS SERIE_RT,
- RIGHT(ior.ref, LENGTH(ior.ref) - 1) AS FACTU_RT,
- ior.issued AS FECHA_RT,
- IF(ior.id,TRUE,FALSE) AS RECTIFICA
+ RIGHT(io.ref, LENGTH(io.ref) - 1) invoiceNum,
+ IF(c.countryFk = vSpainCountryFk, vSpainCountryFk, IF(ct.isUeeMember,2,4)) TERIDNIF,
+ CONCAT(IF(ct.isUeeMember AND c.countryFk <> vSpainCountryFk,ct.code,''),c.fi) TERNIF,
+ c.socialName TERNOM,
+ ior.serial SERIE_RT,
+ RIGHT(ior.ref, LENGTH(ior.ref) - 1) FACTU_RT,
+ ior.issued FECHA_RT,
+ IF(ior.id,TRUE,FALSE) RECTIFICA
FROM invoiceOut io
JOIN invoiceOutSerial ios ON ios.code = io.serial
JOIN client c ON c.id = io.clientFk
JOIN country ct ON ct.id = c.countryFk
LEFT JOIN invoiceCorrection ic ON ic.correctingFk = io.id
- LEFT JOIN invoiceOut ior ON ior.id = ic.correctedFk
+ LEFT JOIN invoiceOut ior ON ior.id = ic.correctedFk
WHERE io.id = vInvoice;
- CALL vn.ledger_next(vBookNumber);
-
+ SELECT YEAR(FECHA) INTO vFiscalYear FROM rs LIMIT 1;
+ CALL ledger_next(vFiscalYear, FALSE, vBookNumber);
-- Linea del cliente
INSERT INTO XDiario(
- ASIEN,
- FECHA,
- SUBCTA,
- EURODEBE,
- CONCEPTO,
- FECHA_EX,
- FECHA_OP,
- empresa_id
- )
- SELECT
- vBookNumber AS ASIEN,
+ ASIEN,
+ FECHA,
+ SUBCTA,
+ EURODEBE,
+ CONCEPTO,
+ FECHA_EX,
+ FECHA_OP,
+ empresa_id)
+ SELECT vBookNumber,
rs.FECHA,
- rs.clientBookingAccount AS SUBCTA,
- rs.totalAmount AS EURODEBE,
- rs.simpleConcept AS CONCEPTO,
+ rs.clientBookingAccount,
+ rs.totalAmount,
+ rs.simpleConcept,
rs.FECHA_EX,
rs.FECHA_OP,
- rs.companyFk AS empresa_id
+ rs.companyFk
FROM rs;
-- Lineas de gasto
INSERT INTO XDiario(
- ASIEN,
- FECHA,
- SUBCTA,
- CONTRA,
- EUROHABER,
- CONCEPTO,
- FECHA_EX,
- FECHA_OP,
- empresa_id
- )
- SELECT
- vBookNumber AS ASIEN,
- rs.FECHA,
- ioe.expenseFk AS SUBCTA,
- rs.clientBookingAccount AS CONTRA,
- ioe.amount AS EUROHABER,
- rs.Concept AS CONCEPTO,
- rs.FECHA_EX,
- rs.FECHA_OP,
- rs.companyFk AS empresa_id
- FROM rs
- JOIN invoiceOutExpense ioe
- WHERE ioe.invoiceOutFk = vInvoice;
+ ASIEN,
+ FECHA,
+ SUBCTA,
+ CONTRA,
+ EUROHABER,
+ CONCEPTO,
+ FECHA_EX,
+ FECHA_OP,
+ empresa_id)
+ SELECT vBookNumber,
+ rs.FECHA,
+ ioe.expenseFk,
+ rs.clientBookingAccount,
+ ioe.amount,
+ rs.Concept,
+ rs.FECHA_EX,
+ rs.FECHA_OP,
+ rs.companyFk
+ FROM rs
+ JOIN invoiceOutExpense ioe
+ WHERE ioe.invoiceOutFk = vInvoice;
- SELECT GROUP_CONCAT(`name` SEPARATOR ',')
- INTO vExpenseConcept
- FROM expense e
- JOIN invoiceOutExpense ioe ON ioe.expenseFk = e.id
- WHERE ioe.invoiceOutFk = vInvoice;
+ SELECT GROUP_CONCAT(`name` SEPARATOR ',')
+ INTO vExpenseConcept
+ FROM expense e
+ JOIN invoiceOutExpense ioe ON ioe.expenseFk = e.id
+ WHERE ioe.invoiceOutFk = vInvoice;
- -- Lineas de IVA
+ -- Lineas de IVA
INSERT INTO XDiario(
- ASIEN,
- FECHA,
- SUBCTA,
- CONTRA,
- EUROHABER,
- BASEEURO,
- CONCEPTO,
- FACTURA,
- IVA,
- RECEQUIV,
- AUXILIAR,
- SERIE,
- SERIE_RT,
- FACTU_RT,
- RECTIFICA,
- FECHA_RT,
- FECHA_OP,
- FECHA_EX,
- TIPOOPE,
- NFACTICK,
- TERIDNIF,
- TERNIF,
- TERNOM,
- L340,
- TIPOCLAVE,
- TIPOEXENCI,
- TIPONOSUJE,
- TIPOFACT,
- TIPORECTIF,
- empresa_id
- )
- SELECT
- vBookNumber AS ASIEN,
+ ASIEN,
+ FECHA,
+ SUBCTA,
+ CONTRA,
+ EUROHABER,
+ BASEEURO,
+ CONCEPTO,
+ FACTURA,
+ IVA,
+ RECEQUIV,
+ AUXILIAR,
+ SERIE,
+ SERIE_RT,
+ FACTU_RT,
+ RECTIFICA,
+ FECHA_RT,
+ FECHA_OP,
+ FECHA_EX,
+ TIPOOPE,
+ NFACTICK,
+ TERIDNIF,
+ TERNIF,
+ TERNOM,
+ L340,
+ TIPOCLAVE,
+ TIPOEXENCI,
+ TIPONOSUJE,
+ TIPOFACT,
+ TIPORECTIF,
+ empresa_id)
+ SELECT vBookNumber ASIEN,
rs.FECHA,
- iot.pgcFk AS SUBCTA,
- rs.clientBookingAccount AS CONTRA,
- iot.vat AS EUROHABER,
- iot.taxableBase AS BASEEURO,
- CONCAT(vExpenseConcept,' : ',rs.Concept) AS CONCEPTO,
- rs.invoiceNum AS FACTURA,
- IF(pe2.equFk,0,pgc.rate) AS IVA,
- IF(pe2.equFk,0,pgce.rate) AS RECEQUIV,
- IF(pgc.mod347,'','*') AS AUXILIAR,
+ iot.pgcFk SUBCTA,
+ rs.clientBookingAccount CONTRA,
+ iot.vat EUROHABER,
+ iot.taxableBase BASEEURO,
+ CONCAT(vExpenseConcept,' : ',rs.Concept) CONCEPTO,
+ rs.invoiceNum FACTURA,
+ IF(pe2.equFk,0,pgc.rate) IVA,
+ IF(pe2.equFk,0,pgce.rate) RECEQUIV,
+ IF(pgc.mod347,'','*') AUXILIAR,
rs.SERIE,
rs.SERIE_RT,
rs.FACTU_RT,
@@ -168,27 +163,27 @@ BEGIN
rs.FECHA_OP,
rs.FECHA_EX,
rs.TIPOOPE,
- rs.NFACTICK,
+ rs.NFACTICK,
rs.TERIDNIF,
rs.TERNIF,
rs.TERNOM,
- pgc.mod340 AS L340,
- pgc.siiTrascendencyInvoiceOutFk AS TIPOCLAVE,
- pgc.cplusTaxBreakFk as TIPOEXENCI,
+ pgc.mod340 L340,
+ pgc.siiTrascendencyInvoiceOutFk TIPOCLAVE,
+ pgc.cplusTaxBreakFk TIPOEXENCI,
rs.TIPONOSUJE,
rs.TIPOFACT,
rs.TIPORECTIF,
- rs.companyFk AS empresa_id
+ rs.companyFk
FROM rs
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 pgcEqu pe2 ON pe2.equFk = iot.pgcFk -- --------------- Comprueba si la linea es de rec.equiv.
+ 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 = util.VN_CURDATE()
- WHERE id = vInvoice;
+
+ UPDATE invoiceOut
+ SET booked = util.VN_CURDATE()
+ WHERE id = vInvoice;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/itemPlacementSupplyStockGetTargetList.sql b/db/routines/vn/procedures/itemPlacementSupplyStockGetTargetList.sql
index bdc13ae9d9..86d62cad48 100644
--- a/db/routines/vn/procedures/itemPlacementSupplyStockGetTargetList.sql
+++ b/db/routines/vn/procedures/itemPlacementSupplyStockGetTargetList.sql
@@ -18,11 +18,12 @@ BEGIN
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
- WHERE sc.id = vSectorFk
- AND ish.visible > 0
+ WHERE ish.visible > 0
AND ish.itemFk = vItemFk
GROUP BY ish.id
- ORDER BY sh.priority DESC,
+ ORDER BY
+ (sc.id = vSectorFk) DESC,
+ sh.priority DESC,
ish.created,
p.pickingOrder;
END$$
diff --git a/db/routines/vn/procedures/itemShelvingRadar.sql b/db/routines/vn/procedures/itemShelvingRadar.sql
index c89a190aef..7875c47911 100644
--- a/db/routines/vn/procedures/itemShelvingRadar.sql
+++ b/db/routines/vn/procedures/itemShelvingRadar.sql
@@ -2,7 +2,7 @@ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelvingRadar`(
vSectorFk INT
)
-proc:BEGIN
+BEGIN
/**
* Calcula la información detallada respecto un sector.
*
@@ -15,37 +15,24 @@ proc:BEGIN
DECLARE vWarehouseFk INT DEFAULT 0;
DECLARE vSonSectorFk INT;
DECLARE vWorkerFk INT;
-
- SELECT s.workerFk
- INTO vWorkerFk
- FROM vn.sector s
+
+ SELECT s.workerFk INTO vWorkerFk
+ FROM sector s
WHERE s.id = vSectorFk;
- SELECT w.id, s.warehouseFk INTO vBuyerFk, vWarehouseFk
- 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
- AND s.isMain;
-
SELECT COUNT(*) INTO hasFatherSector
- FROM vn.sector
+ FROM sector
WHERE sonFk = vSectorFk;
-
+
SELECT warehouseFk, sonFk INTO vWarehouseFk, vSonSectorFk
- FROM vn.sector
+ FROM sector
WHERE id = vSectorFk;
-
+
CALL cache.visible_refresh(vCalcVisibleFk, TRUE, vWarehouseFk);
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
+ CREATE OR REPLACE TEMPORARY TABLE tItemShelvingRadar
(PRIMARY KEY (itemFk))
ENGINE = MEMORY
SELECT *
@@ -54,57 +41,77 @@ proc:BEGIN
i.longName,
i.size,
i.subName producer,
- IFNULL(a.available,0) available,
- SUM(IF(s.sonFk = vSectorFk, IFNULL(iss.visible,0), 0)) upstairs,
- SUM(IF(iss.sectorFk = vSectorFk, IFNULL(iss.visible,0), 0)) downstairs,
- IF(it.isPackaging, NULL, IFNULL(v.visible,0)) as visible,
- vSectorFk 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 AND vBuyerFk IN (0,it.workerFk)
- 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
+ IFNULL(a.available, 0) available,
+ SUM(IF(s.sonFk = vSectorFk, IFNULL(iss.visible, 0), 0)) upstairs,
+ SUM(IF(iss.sectorFk = vSectorFk, IFNULL(iss.visible, 0), 0)) downstairs,
+ IF(it.isPackaging, NULL, IFNULL(v.visible, 0)) visible,
+ vSectorFk sectorFk,
+ ish.isChecked,
+ sub.isAllChecked
+ FROM itemShelvingStock iss
+ JOIN itemShelving ish ON ish.shelvingFk = iss.shelvingFk
+ LEFT JOIN (
+ SELECT itemFk,
+ IF(
+ COUNT(*) = SUM(IF(isChecked >= 0, 1, 0)),
+ TRUE,
+ FALSE
+ ) isAllChecked
+ FROM itemShelving is2
+ GROUP BY itemFk
+ ) sub ON sub.itemFk = ish.itemFk
+ 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.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
WHERE vSectorFk IN (iss.sectorFk, s.sonFk)
GROUP BY iss.itemFk
-
UNION ALL
-
- SELECT v.item_id,
+ SELECT v.item_id,
i.longName,
i.size,
- i.subName producer,
- IFNULL(a.available,0) as available,
- 0 upstairs,
- 0 downstairs,
- IF(it.isPackaging, NULL, v.visible) visible,
- vSectorFk as sectorFk
+ i.subName,
+ IFNULL(a.available, 0),
+ 0,
+ 0,
+ IF(it.isPackaging, NULL, v.visible),
+ vSectorFk,
+ NULL,
+ NULL
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
- LEFT JOIN cache.available a ON a.item_id = v.item_id AND a.calc_id = vCalcAvailableFk
+ 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
+ AND iss.warehouseFk = vWarehouseFk
+ LEFT JOIN cache.available a ON a.item_id = v.item_id
+ AND a.calc_id = vCalcAvailableFk
WHERE v.calc_id = vCalcVisibleFk
AND iss.itemFk IS NULL
AND it.isInventory
- ) sub GROUP BY itemFk;
+ ) sub
+ GROUP BY itemFk;
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
- JOIN vn.item i ON i.id = ishr.itemFk
- LEFT JOIN (SELECT s.itemFk, sum(s.quantity) as notPickedYed
- FROM vn.ticket t
- JOIN vn.ticketStateToday tst ON tst.ticketFk = t.id
- JOIN vn.sale s ON s.ticketFk = t.id
- WHERE t.warehouseFk = vWarehouseFk
- AND tst.alertLevel = 0
- GROUP BY s.itemFk
- ) sub ON sub.itemFk = ishr.itemFk
- ORDER BY i.typeFk, i.longName;
+ CAST(visible - upstairs - downstairs AS DECIMAL(10, 0)) nicho,
+ CAST(downstairs - IFNULL(notPickedYed, 0) AS DECIMAL(10, 0)) pendiente
+ FROM tItemShelvingRadar ishr
+ JOIN item i ON i.id = ishr.itemFk
+ LEFT JOIN (
+ SELECT s.itemFk, SUM(s.quantity) notPickedYed
+ FROM ticket t
+ JOIN ticketStateToday tst ON tst.ticketFk = t.id
+ JOIN alertLevel al ON al.id = tst.alertLevel
+ JOIN sale s ON s.ticketFk = t.id
+ WHERE t.warehouseFk = vWarehouseFk
+ AND al.code = 'FREE'
+ GROUP BY s.itemFk
+ ) sub ON sub.itemFk = ishr.itemFk
+ ORDER BY i.typeFk, i.longName;
ELSE
- CREATE TEMPORARY TABLE tmp.itemShelvingRadar
+ CREATE OR REPLACE TEMPORARY TABLE tItemShelvingRadar
(PRIMARY KEY (itemFk))
ENGINE = MEMORY
SELECT iss.itemFk,
@@ -115,80 +122,86 @@ proc:BEGIN
i.size,
i.subName producer,
i.upToDown,
- 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(i.minimum * b.packing,0) itemPlacementSize,
+ 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(i.minimum * b.packing, 0) itemPlacementSize,
ips.onTheWay,
iss.visible itemShelvingStock,
- IFNULL(v.visible,0) visible,
+ IFNULL(v.visible, 0) visible,
b.isPickedOff,
iss.sectorFk
- FROM vn.itemShelvingStock iss
- JOIN vn.item i on i.id = iss.itemFk
- 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
- GROUP BY itemFk
- ) ips ON ips.itemFk = i.id
- WHERE IFNULL(iss.sectorFk,0) IN (0, vSectorFk)
- OR iss.sectorFk = vSectorFk;
+ FROM itemShelvingStock iss
+ JOIN item i ON i.id = iss.itemFk
+ LEFT JOIN cache.last_buy lb ON lb.item_id = iss.itemFk
+ AND lb.warehouse_id = vWarehouseFk
+ LEFT JOIN 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) onTheWay
+ FROM itemPlacementSupplyList
+ WHERE saldo > 0
+ GROUP BY itemFk
+ ) ips ON ips.itemFk = i.id
+ WHERE iss.sectorFk = vSectorFk
+ OR iss.sectorFk IS NULL;
- DROP TEMPORARY TABLE IF EXISTS tmp.itemOutTime;
- CREATE TEMPORARY TABLE tmp.itemOutTime
- SELECT *,SUM(amount) quantity
- FROM
- (SELECT io.itemFk,
- io.quantity 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 itemTicketOut io
- JOIN tmp.itemShelvingRadar isr ON isr.itemFk = io.itemFk
- JOIN vn.ticket t on t.id= io.ticketFk
- 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 > util.VN_CURDATE()
- AND st.isChecked
- ) stPrevious ON `stPrevious`.`saleFk` = io.saleFk
- WHERE t.warehouseFk = vWarehouseFk
- AND s.isPicked = 0
- AND NOT io.reserved
- AND stPrevious.saleFk IS NULL
- AND io.shipped >= util.VN_CURDATE()
- AND io.shipped < util.VN_CURDATE() + INTERVAL 1 DAY
- ) sub
- GROUP BY itemFk, hours, minutes;
+ CREATE OR REPLACE TEMPORARY TABLE tmp.itemOutTime
+ SELECT *, SUM(amount) quantity
+ FROM (
+ SELECT io.itemFk,
+ io.quantity amount,
+ IF(HOUR(t.shipped), HOUR(t.shipped), HOUR(z.`hour`)) `hours`,
+ IF(MINUTE(t.shipped), MINUTE(t.shipped), MINUTE(z.`hour`)) `minutes`
+ FROM itemTicketOut `io`
+ JOIN tItemShelvingRadar isr ON isr.itemFk = io.itemFk
+ JOIN ticket t ON t.id= io.ticketFk
+ JOIN ticketState ts ON ts.ticketFk = io.ticketFk
+ JOIN `state` s ON s.id = ts.stateFk
+ LEFT JOIN `zone` z ON z.id = t.zoneFk
+ LEFT JOIN (
+ SELECT DISTINCT saleFk
+ FROM saleTracking st
+ WHERE st.created > util.VN_CURDATE()
+ AND st.isChecked
+ ) stPrevious ON stPrevious.saleFk = io.saleFk
+ WHERE t.warehouseFk = vWarehouseFk
+ AND NOT s.isPicked
+ AND NOT io.reserved
+ AND stPrevious.saleFk IS NULL
+ AND io.shipped >= util.VN_CURDATE()
+ AND io.shipped < util.VN_CURDATE() + INTERVAL 1 DAY
+ ) sub
+ GROUP BY itemFk, `hours`, `minutes`;
- INSERT INTO tmp.itemShelvingRadar (itemFk)
+ INSERT INTO tItemShelvingRadar (itemFk)
SELECT itemFk FROM tmp.itemOutTime
- 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);
+ 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);
- UPDATE tmp.itemShelvingRadar isr
- JOIN (SELECT s.itemFk, sum(s.quantity) amount
- FROM sale s
- JOIN ticket t ON t.id = s.ticketFk
- JOIN ticketLastState tls ON tls.ticketFk = t.id
- WHERE t.shipped BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE())
- AND tls.name = 'Prep Camara'
- GROUP BY s.itemFk) sub ON sub.itemFk = isr.itemFk
+ UPDATE tItemShelvingRadar isr
+ JOIN (
+ SELECT s.itemFk, SUM(s.quantity) amount
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ JOIN ticketState ts ON ts.ticketFk = t.id
+ WHERE t.shipped BETWEEN util.VN_CURDATE() AND util.dayend(util.VN_CURDATE())
+ AND ts.code = 'COOLER_PREPARATION'
+ GROUP BY s.itemFk
+ ) sub ON sub.itemFk = isr.itemFk
SET isr.dayEndVisible = dayEndVisible + sub.amount,
firstNegative = firstNegative + sub.amount;
- SELECT * FROM tmp.itemShelvingRadar;
+ SELECT * FROM tItemShelvingRadar;
END IF;
- DROP TEMPORARY TABLE tmp.itemShelvingRadar;
+ DROP TEMPORARY TABLE tItemShelvingRadar;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/itemShelvingTransfer.sql b/db/routines/vn/procedures/itemShelvingTransfer.sql
index 326f8108ba..ae82bfe9dd 100644
--- a/db/routines/vn/procedures/itemShelvingTransfer.sql
+++ b/db/routines/vn/procedures/itemShelvingTransfer.sql
@@ -17,13 +17,15 @@ BEGIN
SELECT
itemFk,
packing,
- created
+ created,
+ buyFk
FROM itemShelving
WHERE id = vItemShelvingFk
) ish2
ON ish2.itemFk = ish.itemFk
AND ish2.packing = ish.packing
AND date(ish2.created) = date(ish.created)
+ AND ish2.buyFk = ish.buyFk
WHERE ish.shelvingFk = vShelvingFk COLLATE utf8_unicode_ci;
IF vNewItemShelvingFk THEN
diff --git a/db/routines/vn/procedures/itemShelving_add.sql b/db/routines/vn/procedures/itemShelving_add.sql
index 0dc7f30980..9395f5d80e 100644
--- a/db/routines/vn/procedures/itemShelving_add.sql
+++ b/db/routines/vn/procedures/itemShelving_add.sql
@@ -2,7 +2,6 @@ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_add`(IN vShelvingFk VARCHAR(8), IN vBarcode VARCHAR(22), 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.
*
@@ -15,42 +14,58 @@ BEGIN
* @param vWarehouseFk indica el sector
*
**/
-
DECLARE vItemFk INT;
+ DECLARE vBuyFk INT;
+
+ SELECT id INTO vBuyFk
+ FROM buy WHERE id = vBarcode;
SELECT barcodeToItem(vBarcode) INTO vItemFk;
- SET vPacking = COALESCE(vPacking, GREATEST(vn.itemPacking(vBarcode,vWarehouseFk), 1));
- SET vQuantity = vQuantity * vPacking;
+ IF vBuyFk IS NULL THEN
+ CALL cache.last_buy_refresh(FALSE);
+
+ SELECT buy_id INTO vBuyFk
+ FROM cache.last_buy
+ WHERE item_id = vItemFk
+ AND warehouse_id = vWarehouseFk;
+ END IF;
+
+ IF vPacking IS NULL
+ THEN
+ SET vPacking = itemPacking(vBarcode, vWarehouseFk);
+ SET vQuantity = vQuantity * vPacking;
+ END IF;
IF (SELECT COUNT(*) FROM itemShelving
WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk
AND itemFk = vItemFk
- AND packing = vPacking) = 1 THEN
+ AND packing = vPacking
+ AND buyFk = vBuyFk) THEN
UPDATE itemShelving
- SET visible = visible+vQuantity
+ 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,
- visible,
- grouping,
- packing,
- packagingFk)
- SELECT vItemFk,
- vShelvingFk,
- vQuantity,
- IFNULL(vGrouping, b.grouping),
- IFNULL(vPacking, b.packing),
- IFNULL(vPackagingFk, b.packagingFk)
- 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;
+ INSERT INTO itemShelving(
+ itemFk,
+ shelvingFk,
+ visible,
+ grouping,
+ packing,
+ packagingFk,
+ buyFk)
+ SELECT vItemFk,
+ vShelvingFk,
+ vQuantity,
+ IFNULL(vGrouping, b.grouping),
+ IFNULL(vPacking, b.packing),
+ IFNULL(vPackagingFk, b.packagingFk),
+ id
+ FROM buy b
+ WHERE id = vBuyFk;
END IF;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/itemShelving_getItemDetails.sql b/db/routines/vn/procedures/itemShelving_getItemDetails.sql
new file mode 100644
index 0000000000..c01bc348ca
--- /dev/null
+++ b/db/routines/vn/procedures/itemShelving_getItemDetails.sql
@@ -0,0 +1,55 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_getItemDetails`(
+ vBarcodeItem INT,
+ vShelvingFK VARCHAR(10)
+)
+BEGIN
+/**
+ * Obtiene el precio y visible de un item
+ *
+ * @param vBarcodeItem barcode de artículo
+ * @param vShelvingFK Ubicación actual del artículo
+ */
+ DECLARE vIsItem BOOL;
+ DECLARE vBuyFk INT;
+ DECLARE vWarehouseFk INT;
+
+ SELECT COUNT(*) > 0 INTO vIsItem
+ FROM item
+ WHERE id = vBarcodeItem;
+
+ IF vIsItem THEN
+ SELECT warehouseFk INTO vWarehouseFk
+ FROM operator
+ WHERE workerFk = account.myUser_getId();
+
+ CALL buyUltimate(vWarehouseFk, util.VN_CURDATE());
+
+ SELECT buyFk INTO vBuyFk
+ FROM tmp.buyUltimate
+ WHERE itemFk = vBarcodeItem
+ AND warehouseFk = vWarehouseFk;
+
+ DELETE FROM tmp.buyUltimate;
+ ELSE
+ SELECT vBarcodeItem INTO vBuyFk;
+ END IF;
+
+ WITH visible AS(
+ SELECT itemFk,
+ IFNULL(buyingValue, 0) +
+ IFNULL(freightValue, 0) +
+ IFNULL(comissionValue, 0) +
+ IFNULL(packageValue, 0) itemCost
+ FROM vn.buy b
+ WHERE b.id = vBuyFk
+ ) SELECT v.itemFk,
+ vShelvingFK,
+ v.itemCost,
+ SUM(ish.visible) visible
+ FROM vn.itemShelving ish
+ JOIN visible v
+ WHERE ish.shelvingFK = vShelvingFK COLLATE utf8mb3_general_ci
+ AND ish.itemFk = v.itemFk;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/itemTrash.sql b/db/routines/vn/procedures/itemTrash.sql
deleted file mode 100644
index bbb30b78ac..0000000000
--- a/db/routines/vn/procedures/itemTrash.sql
+++ /dev/null
@@ -1,56 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemTrash`(
- vItemFk INT,
- vWarehouseFk INT,
- vQuantity INT,
- vIsTrash BOOLEAN)
-BEGIN
- DECLARE vTicketFk INT;
- DECLARE vClientFk INT;
- DECLARE vCompanyVnlFk INT DEFAULT 442;
- DECLARE vCalc INT;
-
- 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
- WHERE t.warehouseFk = vWarehouseFk
- AND t.clientFk = vClientFk
- AND DATE(t.shipped) = util.VN_CURDATE()
- AND a.isDefaultAddress
- LIMIT 1;
-
- CALL cache.visible_refresh(vCalc, TRUE, vWarehouseFk);
-
- IF vTicketFk IS NULL THEN
- CALL ticket_add(
- 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,' ',worker_getCode(), ' ', LEFT(CAST(util.VN_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 ;
diff --git a/db/routines/vn/procedures/item_comparative.sql b/db/routines/vn/procedures/item_comparative.sql
index e721883631..d429cf009a 100644
--- a/db/routines/vn/procedures/item_comparative.sql
+++ b/db/routines/vn/procedures/item_comparative.sql
@@ -6,7 +6,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_comparative`(
vAvailableSince DATE,
vBuyerFk INT,
vIsFloramondo BOOL,
- vCountryFk INT
+ vCountryFk INT
)
proc: BEGIN
/**
@@ -23,7 +23,6 @@ proc: BEGIN
* @param tmp.comparativeFilterType(filterFk INT ,itemTypeFk INT)
* @return tmp.comparative
*/
-
DECLARE vDayRangeStart DATE;
DECLARE vDayRangeEnd DATE;
DECLARE w1, w2, w3, w4, w5, w6, w7 INT;
@@ -59,14 +58,14 @@ proc: BEGIN
END IF;
SELECT MIN(dated) INTO vDayRangeStart
- FROM vn.time
+ FROM `time`
WHERE dated <= vDate
GROUP BY period
ORDER BY dated desc
LIMIT 1 OFFSET vWeekRange;
SELECT MAX(dated) INTO vDayRangeEnd
- FROM vn.time
+ FROM `time`
WHERE dated >= vDate
GROUP BY period
ORDER BY dated ASC
@@ -83,12 +82,11 @@ proc: BEGIN
JOIN itemType t ON t.id = i.typeFk
JOIN itemCategory c ON c.id = t.categoryFk
LEFT JOIN worker w ON w.id = t.workerFk
- WHERE (NOT vHasTypeFilter
- OR t.id IN (SELECT itemTypeFk FROM tmp.comparativeFilterType))
- AND (vBuyerFk IS NULL
- OR t.workerFk = vBuyerFk)
- AND (vIsFloramondo IS NULL
- OR i.isFloramondo = vIsFloramondo);
+ WHERE (NOT vHasTypeFilter OR t.id IN (
+ SELECT itemTypeFk FROM tmp.comparativeFilterType
+ ))
+ AND (vBuyerFk IS NULL OR t.workerFk = vBuyerFk)
+ AND (vIsFloramondo IS NULL OR i.isFloramondo = vIsFloramondo);
IF vDate < util.VN_CURDATE() THEN
ALTER TABLE tmp.itemInventory
@@ -115,10 +113,11 @@ proc: BEGIN
SET i = i + 1;
SELECT t.period INTO vPeriod
- FROM vn.`time` t
+ FROM `time` t
WHERE t.dated = vDayRangeStart + INTERVAL (vWeekCount * (i - 1)) DAY;
- INSERT IGNORE INTO tTable(cy, ly, zy) VALUES(vPeriod, vPeriod - 100, vPeriod - 200);
+ INSERT IGNORE INTO tTable(cy, ly, zy)
+ VALUES(vPeriod, vPeriod - 100, vPeriod - 200);
UNTIL i = vWeekCount END REPEAT;
SELECT cy, ly, zy INTO w1, y1, z1 FROM tTable LIMIT 1;
@@ -130,7 +129,6 @@ proc: BEGIN
SELECT cy, ly, zy INTO w7, y7, z7 FROM tTable WHERE cy > w6 LIMIT 1;
-- Genera una tabla con los datos del año pasado.
-
CREATE OR REPLACE TEMPORARY TABLE tLastYear
(KEY (lItemFk))
ENGINE = MEMORY
@@ -151,15 +149,14 @@ proc: BEGIN
SUM(IF(c.timePeriod = y7, c.price, 0)) lprice7
FROM tmp.itemInventory ai
JOIN comparative c ON c.itemFk = ai.id
- JOIN warehouse w on w.id = c.warehouseFk
+ JOIN warehouse w ON w.id = c.warehouseFk
JOIN tTable wt ON c.timePeriod = wt.ly
- WHERE IFNULL(vWarehouseFk, c.warehouseFk) = c.warehouseFk
+ WHERE (vWarehouseFk IS NULL OR vWarehouseFk = c.warehouseFk)
AND w.isComparative
AND (vCountryFk IS NULL OR c.countryFk = vCountryFk)
GROUP BY ai.id;
- -- Genera una tabla con los datos de hace DOS años.
-
+ -- Genera una tabla con los datos de hace 2 años
CREATE OR REPLACE TEMPORARY TABLE tTwoYearsAgo
(KEY (tItemFk))
ENGINE = MEMORY
@@ -180,73 +177,72 @@ proc: BEGIN
SUM(IF(c.timePeriod = z7, c.price, 0)) vlprice7
FROM tmp.itemInventory ai
JOIN comparative c ON c.itemFk = ai.id
- JOIN warehouse w on w.id = c.warehouseFk
+ JOIN warehouse w ON w.id = c.warehouseFk
JOIN tTable wt ON c.timePeriod = wt.zy
- WHERE IFNULL(vWarehouseFk, c.warehouseFk) = c.warehouseFk
+ WHERE (vWarehouseFk IS NULL OR vWarehouseFk = c.warehouseFk)
AND w.isComparative
AND (vCountryFk IS NULL OR c.countryFk = vCountryFk)
GROUP BY ai.id;
- -- Genera una tabla con los datos de este año.ss
-
+ -- Genera una tabla con los datos de este año
CREATE OR REPLACE TEMPORARY TABLE tCurrentYear
(KEY (cItemFk))
ENGINE = MEMORY
SELECT t.itemFk cItemFk,
- SUM(IF(week = w1, total, 0)) cweek1,
- SUM(IF(week = w2, total, 0)) cweek2,
- SUM(IF(week = w3, total, 0)) cweek3,
- SUM(IF(week = w4, total, 0)) cweek4,
- SUM(IF(week = w5, total, 0)) cweek5,
- SUM(IF(week = w6, total, 0)) cweek6,
- SUM(IF(week = w7, total, 0)) cweek7,
- SUM(IF(week = w1, price, 0)) cprice1,
- SUM(IF(week = w2, price, 0)) cprice2,
- SUM(IF(week = w3, price, 0)) cprice3,
- SUM(IF(week = w4, price, 0)) cprice4,
- SUM(IF(week = w5, price, 0)) cprice5,
- SUM(IF(week = w6, price, 0)) cprice6,
- SUM(IF(week = w7, price, 0)) cprice7
+ SUM(IF(`week` = w1, total, 0)) cweek1,
+ SUM(IF(`week` = w2, total, 0)) cweek2,
+ SUM(IF(`week` = w3, total, 0)) cweek3,
+ SUM(IF(`week` = w4, total, 0)) cweek4,
+ SUM(IF(`week` = w5, total, 0)) cweek5,
+ SUM(IF(`week` = w6, total, 0)) cweek6,
+ SUM(IF(`week` = w7, total, 0)) cweek7,
+ SUM(IF(`week` = w1, price, 0)) cprice1,
+ SUM(IF(`week` = w2, price, 0)) cprice2,
+ SUM(IF(`week` = w3, price, 0)) cprice3,
+ SUM(IF(`week` = w4, price, 0)) cprice4,
+ SUM(IF(`week` = w5, price, 0)) cprice5,
+ SUM(IF(`week` = w6, price, 0)) cprice6,
+ SUM(IF(`week` = w7, price, 0)) cprice7
FROM (
SELECT s.itemFk,
ti.period `week`,
SUM(s.quantity) total,
- TRUNCATE(SUM(s.quantity * s.priceFixed),0) price
- FROM ticket t
+ TRUNCATE(SUM(s.quantity * s.priceFixed), 0) price
+ FROM ticket t FORCE INDEX (Fecha)
JOIN sale s ON t.id = s.ticketFk
- JOIN tmp.itemInventory it ON it.id = s.itemFk
- JOIN time ti ON ti.dated = DATE(t.shipped)
+ JOIN tmp.itemInventory it ON it.id = s.itemFk
+ JOIN `time` ti ON ti.dated = DATE(t.shipped)
JOIN item i ON i.id = s.itemFk
JOIN itemType tp ON tp.id = i.typeFk
JOIN itemCategory ic ON ic.id = tp.categoryFk
JOIN warehouse w ON w.id = t.warehouseFk
- STRAIGHT_JOIN address ad ON ad.id = t.addressFk
- JOIN province p ON p.id = ad.provinceFk
+ JOIN `address` ad ON ad.id = t.addressFk
+ JOIN province p ON p.id = ad.provinceFk
JOIN `client` c ON c.id = ad.clientFk
WHERE t.shipped BETWEEN vDayRangeStart AND util.dayEnd(vDayRangeEnd)
- AND c.typeFk IN ('Normal','handMaking')
- AND w.id = COALESCE(vWarehouseFk, w.id)
+ AND c.typeFk IN ('normal', 'handMaking')
+ AND (vWarehouseFk IS NULL OR vWarehouseFk = w.id)
+ AND (vCountryFk IS NULL OR p.countryFk = vCountryFk)
AND w.isComparative
- AND (vCountryFk IS NULL OR p.countryFk = vCountryFk)
- GROUP BY i.id, week
+ GROUP BY i.id, `week`
) t
GROUP BY t.itemFk;
- -- Genera la tabla con la comparativa.
+ -- Genera la tabla con la comparativa
CREATE OR REPLACE TEMPORARY TABLE tmp.comparative
ENGINE = MEMORY
- SELECT it.subName productor,
- b.packing,
+ SELECT it.subName productor,
+ b.packing,
b.buyingValue costefijo,
b.groupingMode caja,
it.image ArticleImage,
- IFNULL(it.inkFk,"?") color,
+ IFNULL(it.inkFk, '?') color,
tp.code tipo,
it.typeFk tipo_id,
o.code origen,
it.category categoria,
it.stems tallos,
- it.size medida,
+ it.`size` medida,
it.name article,
w.code codigoTrabajador,
tp.categoryFk reino_id,
@@ -257,24 +253,27 @@ proc: BEGIN
it.id Id_Article,
i.buy_id,
tp.life,
- IFNULL(i.sd,0) sd,
+ IFNULL(i.sd, 0) sd,
i.avalaible,
i.visible,
i.buy_date,
e.id provider_id,
it.comment comments,
it.description itemDescription,
- IF(cy.cItemFk IS NULL AND i.visible = 0 AND i.avalaible = 0
- AND IFNULL(i.sd, 0) = 0, FALSE, TRUE) filtret,
+ IF(cy.cItemFk IS NULL AND i.visible = 0
+ AND i.avalaible = 0 AND (i.sd IS NULL OR i.sd = 0),
+ FALSE,
+ TRUE
+ ) filtret,
IF(it.hasMinPrice, FORMAT(it.minPrice, 2), "") pvp,
s.company_name
FROM tmp.itemInventory i
JOIN item it ON it.id = i.id
- LEFT JOIN itemType tp ON tp.id = it.typeFk
- LEFT JOIN worker w ON w.id = tp.workerFk
+ JOIN itemType tp ON tp.id = it.typeFk
+ JOIN worker w ON w.id = tp.workerFk
LEFT JOIN buy b ON b.id = i.buy_id
- LEFT JOIN entry e ON e.id = b.entryFk
- LEFT JOIN origin o ON o.id = it.originFk
+ LEFT JOIN `entry` e ON e.id = b.entryFk
+ JOIN origin o ON o.id = it.originFk
LEFT JOIN tLastYear ly ON ly.lItemFk = it.id
LEFT JOIN tCurrentYear cy ON cy.cItemFk = it.id
LEFT JOIN tTwoYearsAgo zy ON zy.tItemFk = it.id
@@ -287,8 +286,8 @@ proc: BEGIN
OR ly.lweek1 OR ly.lweek2 OR ly.lweek3 OR ly.lweek4 OR ly.lweek5 OR ly.lweek6 OR ly.lweek7
OR zy.vlweek1 OR zy.vlweek2 OR zy.vlweek3 OR zy.vlweek4 OR zy.vlweek5 OR zy.vlweek6 OR zy.vlweek7;
- -- Elimina las tablas temporales creadas...
- DROP TEMPORARY TABLE IF EXISTS tmp.itemInventory,
+ DROP TEMPORARY TABLE IF EXISTS
+ tmp.itemInventory,
tTwoYearsAgo,
tLastYear,
tCurrentYear,
diff --git a/db/routines/vn/procedures/item_devalueA2.sql b/db/routines/vn/procedures/item_devalueA2.sql
new file mode 100644
index 0000000000..c9f716d8fa
--- /dev/null
+++ b/db/routines/vn/procedures/item_devalueA2.sql
@@ -0,0 +1,408 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_devalueA2`(
+ vSelf INT,
+ vShelvingFK VARCHAR(10),
+ vBuyingValue DECIMAL(10,4),
+ vQuantity INT
+)
+BEGIN
+/**
+ * Devalua un item modificando su calidad de A1 a A2.
+ * Si no existe el item A2 lo crea y genera los movimientos de las entradas
+ * de almacén y shelvings correspondientes
+ *
+ * @param vSelf Id de artículo a devaluar
+ * @param vShelvingFK Ubicación actual del artículo
+ * @param vBuyingValue Nuevo precio de coste
+ * @param vQuantity Cantidad del ítem a pasar a A2
+ */
+ DECLARE vItemA2Fk INT;
+ DECLARE vLastBuyFk BIGINT;
+ DECLARE vA1BuyFk INT;
+ DECLARE vA2BuyFk INT;
+ DECLARE vTargetEntryFk INT;
+ DECLARE vTargetEntryDate DATE;
+ DECLARE vTargetItemShelvingFk BIGINT;
+ DECLARE vWarehouseFk INT;
+ DECLARE vCacheFk INT;
+ DECLARE vLastEntryFk INT;
+ DECLARE vCurrentVisible INT;
+ DECLARE vDevalueTravelFk INT;
+ DECLARE vCurdate DATE;
+ DECLARE vBuyingValueOriginal DECIMAL(10,4);
+
+ DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
+
+ IF (SELECT TRUE FROM item WHERE id = vSelf AND (category <> 'A1' OR category IS NULL)) THEN
+ CALL util.throw('Item has not category A1');
+ END IF;
+
+ SELECT warehouseFk INTO vWarehouseFk
+ FROM userConfig
+ WHERE userFk = account.myUser_getId();
+
+ IF NOT vWarehouseFk OR vWarehouseFk IS NULL THEN
+ CALL util.throw ('Operator has not a valid warehouse');
+ END IF;
+
+ IF vQuantity <= 0 OR vQuantity IS NULL THEN
+ CALL util.throw ('The quantity is incorrect');
+ END IF;
+
+ SELECT util.VN_CURDATE() INTO vCurdate;
+
+ SELECT t.id INTO vDevalueTravelFk
+ FROM travel t
+ JOIN travelConfig tc
+ WHERE t.shipped = vCurdate
+ AND t.landed = vCurdate
+ AND t.warehouseInFk = vWarehouseFk
+ AND t.warehouseOutFk = tc.devalueWarehouseOutFk
+ AND t.agencyModeFk = tc.devalueAgencyModeFk
+ LIMIT 1;
+
+ IF NOT vDevalueTravelFk OR vDevalueTravelFk IS NULL THEN
+ INSERT INTO travel (
+ shipped,
+ landed,
+ warehouseInFk,
+ warehouseOutFk,
+ `ref`,
+ isReceived,
+ agencyModeFk)
+ SELECT vCurdate,
+ vCurdate,
+ vWarehouseFk,
+ tc.devalueWarehouseOutFk,
+ tc.devalueRef,
+ TRUE,
+ tc.devalueAgencyModeFk
+ FROM travelConfig tc;
+ SET vDevalueTravelFk = LAST_INSERT_ID();
+ END IF;
+
+ SELECT id, DATE(dated) INTO vTargetEntryFk, vTargetEntryDate
+ FROM `entry` e
+ WHERE DATE(dated) = vCurdate
+ AND typeFk = 'devaluation'
+ AND travelFk = vDevalueTravelFk
+ ORDER BY created DESC
+ LIMIT 1;
+
+ CALL buyUltimate(vWarehouseFk, vCurdate);
+
+ SELECT b.entryFk, bu.buyFk,IFNULL(b.buyingValue, 0) INTO vLastEntryFk, vLastBuyFk, vBuyingValueOriginal
+ FROM tmp.buyUltimate bu
+ JOIN vn.buy b ON b.id = bu.buyFk
+ WHERE bu.itemFk = vSelf
+ AND bu.warehouseFk = vWarehouseFk;
+
+ IF vBuyingValue > vBuyingValueOriginal THEN
+ CALL util.throw ('Price not valid');
+ END IF;
+
+ IF vLastEntryFk IS NULL OR vLastBuyFk IS NULL THEN
+ CALL util.throw ('The item has not a buy');
+ END IF;
+
+ SELECT id,visible INTO vTargetItemShelvingFk, vCurrentVisible
+ FROM itemShelving
+ WHERE shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci
+ AND itemFk = vSelf
+ LIMIT 1;
+
+ IF vCurrentVisible IS NULL THEN
+ CALL util.throw ('The shelving has not a visible for this item');
+ END IF;
+
+ IF vQuantity > vCurrentVisible THEN
+ CALL util.throw('Quantity is greater than visible');
+ END IF;
+
+ START TRANSACTION;
+
+ IF NOT vTargetEntryFk OR vTargetEntryFk IS NULL
+ OR NOT vTargetEntryDate <=> vCurdate THEN
+ INSERT INTO entry(
+ travelFk,
+ supplierFk,
+ dated,
+ commission,
+ currencyFk,
+ companyFk,
+ clonedFrom,
+ typeFk
+ )
+ SELECT vDevalueTravelFk,
+ supplierFk,
+ vCurdate,
+ commission,
+ currencyFk,
+ companyFk,
+ vLastEntryFk,
+ 'devaluation'
+ FROM entry
+ WHERE id = vLastEntryFk;
+
+ SET vTargetEntryFk = LAST_INSERT_ID();
+ END IF;
+
+ SELECT i.id INTO vItemA2Fk
+ FROM 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 item i
+ WHERE i.id = vSelf
+ )i2 ON i2.name <=> i.name
+ AND i2.subname <=> i.subname
+ AND i2.value5 <=> i.value5
+ AND i2.value6 <=> i.value6
+ 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 i.id <> i2.id
+ AND i.category = 'A2'
+ LIMIT 1;
+
+ IF vItemA2Fk IS NULL THEN
+ INSERT INTO item (
+ equivalent,
+ name,
+ `size`,
+ stems,
+ minPrice,
+ isToPrint,
+ family,
+ box,
+ category,
+ originFk,
+ doPhoto,
+ image,
+ inkFk,
+ intrastatFk,
+ hasMinPrice,
+ created,
+ comment,
+ typeFk,
+ generic,
+ producerFk,
+ description,
+ density,
+ relevancy,
+ expenseFk,
+ isActive,
+ longName,
+ subName,
+ minimum,
+ upToDown,
+ supplyResponseFk,
+ hasKgPrice,
+ isFloramondo,
+ isFragile,
+ numberOfItemsPerCask,
+ embalageCode,
+ quality,
+ stemMultiplier,
+ itemPackingTypeFk,
+ packingOut,
+ genericFk,
+ isLaid,
+ lastUsed,
+ weightByPiece,
+ editorFk,
+ recycledPlastic,
+ nonRecycledPlastic)
+ SELECT equivalent,
+ name,
+ `size`,
+ stems,
+ minPrice,
+ isToPrint,
+ family,
+ box,
+ 'A2',
+ originFk,
+ doPhoto,
+ image,
+ inkFk,
+ intrastatFk,
+ hasMinPrice,
+ created,
+ comment,
+ typeFk,
+ generic,
+ producerFk,
+ description,
+ density,
+ relevancy,
+ expenseFk,
+ isActive,
+ longName,
+ subName,
+ minimum,
+ upToDown,
+ supplyResponseFk,
+ hasKgPrice,
+ isFloramondo,
+ isFragile,
+ numberOfItemsPerCask,
+ embalageCode,
+ quality,
+ stemMultiplier,
+ itemPackingTypeFk,
+ packingOut,
+ genericFk,
+ isLaid,
+ lastUsed,
+ weightByPiece,
+ editorFk,
+ recycledPlastic,
+ nonRecycledPlastic
+ FROM item
+ WHERE id = vSelf;
+
+ SET vItemA2Fk = LAST_INSERT_ID();
+
+ INSERT INTO itemTag (itemFk, tagFk, `value`, intValue, priority, editorFk)
+ SELECT vItemA2Fk, tagFk, `value`, intValue, priority, editorFk
+ FROM itemTag
+ WHERE id = vSelf;
+
+ UPDATE itemTaxCountry itc
+ JOIN itemTaxCountry itc2 ON itc2.itemFk = vSelf
+ AND itc2.countryFk = itc.countryFk
+ SET itc2.taxClassFk = itc.taxClassFk
+ WHERE itc.id = vItemA2Fk;
+
+ INSERT INTO itemBotanical (itemFk, genusFk, specieFk)
+ SELECT vItemA2Fk, genusFk, specieFk
+ FROM itemBotanical
+ WHERE itemFk = vSelf;
+ END IF;
+
+ IF vQuantity = vCurrentVisible THEN
+ DELETE FROM itemShelving
+ WHERE id = vTargetItemShelvingFk;
+ ELSE
+ UPDATE itemShelving
+ SET visible = vCurrentVisible - vQuantity
+ WHERE id = vTargetItemShelvingFk;
+ END IF;
+
+ INSERT INTO buy(
+ entryFk,
+ itemFk,
+ quantity,
+ buyingValue,
+ freightValue,
+ isIgnored,
+ stickers,
+ packagingFk,
+ packing,
+ `grouping`,
+ groupingMode,
+ comissionValue,
+ packageValue,
+ price1,
+ price2,
+ price3,
+ minPrice,
+ isChecked,
+ location,
+ weight,
+ itemOriginalFk)
+ SELECT vTargetEntryFk,
+ itemFk,
+ - LEAST(vQuantity, vCurrentVisible),
+ buyingValue,
+ freightValue,
+ TRUE,
+ stickers,
+ packagingFk,
+ packing,
+ `grouping`,
+ groupingMode,
+ comissionValue,
+ packageValue,
+ price1,
+ price2,
+ price3,
+ minPrice,
+ isChecked,
+ location,
+ weight,
+ itemOriginalFk
+ FROM vn.buy
+ WHERE id = vLastBuyFk
+ UNION
+ SELECT vTargetEntryFk,
+ vItemA2Fk,
+ vQuantity,
+ vBuyingValue,
+ freightValue,
+ TRUE,
+ stickers,
+ packagingFk,
+ packing,
+ `grouping`,
+ groupingMode,
+ comissionValue,
+ packageValue,
+ price1,
+ price2,
+ price3,
+ minPrice,
+ isChecked,
+ location,
+ weight,
+ itemOriginalFk
+ FROM vn.buy
+ WHERE id = vLastBuyFk;
+
+ INSERT IGNORE INTO itemShelving (
+ itemFk,
+ shelvingFk,
+ visible,
+ `grouping`,
+ packing,
+ packagingFk,
+ userFk,
+ isChecked)
+ SELECT vItemA2Fk,
+ shelvingFk,
+ vQuantity ,
+ `grouping`,
+ packing,
+ packagingFk,
+ account.myUser_getId(),
+ isChecked
+ FROM itemShelving
+ WHERE itemFK = vSelf
+ AND shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci
+ ON DUPLICATE KEY UPDATE
+ visible = vQuantity + VALUES(visible);
+
+ COMMIT;
+ CALL cache.visible_refresh(vCacheFk, TRUE, vWarehouseFk);
+ CALL cache.available_refresh(vCacheFk, TRUE, vWarehouseFk, vCurdate);
+ CALL buy_recalcPricesByBuy(vA2BuyFk);
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/item_getBalance.sql b/db/routines/vn/procedures/item_getBalance.sql
index 88583cf00b..a4942af6f1 100644
--- a/db/routines/vn/procedures/item_getBalance.sql
+++ b/db/routines/vn/procedures/item_getBalance.sql
@@ -9,7 +9,7 @@ BEGIN
* @vItemFk item a buscar
* @vWarehouseFk almacen donde buscar
* @vDate Si la fecha es null, muestra el histórico desde el inventario.
- * Si la fecha no es null, muestra histórico desde la fecha pasada.
+ * Si la fecha no es null, muestra histórico desde la fecha de vDate.
*/
DECLARE vDateInventory DATETIME;
@@ -40,117 +40,154 @@ BEGIN
inventorySupplierFk INT(10)
);
- INSERT INTO tItemDiary
- SELECT tr.landed shipped,
- b.quantity `in`,
- NULL `out`,
- st.alertLevel ,
- st.name stateName,
- s.name `name`,
- e.invoiceNumber reference,
- e.id origin,
- s.id clientFk,
- IF(st.`code` = 'DELIVERED', TRUE, FALSE) isPicked,
- FALSE isTicket,
- b.id lineFk,
- NULL `order`,
- NULL clientType,
- NULL claimFk,
- ec.inventorySupplierFk
- 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 state st ON st.`code` = IF( tr.landed < util.VN_CURDATE()
- OR (util.VN_CURDATE() AND tr.isReceived),
- 'DELIVERED',
- 'FREE')
- JOIN entryConfig ec
- WHERE tr.landed >= vDateInventory
- AND vWarehouseFk = tr.warehouseInFk
- AND (s.id <> ec.inventorySupplierFk OR vDate IS NULL)
- AND b.itemFk = vItemFk
- AND e.isExcludedFromAvailable = FALSE
- AND e.isRaid = FALSE
- UNION ALL
- SELECT tr.shipped,
- NULL,
- b.quantity,
- st.alertLevel,
- st.name,
- s.name,
- e.invoiceNumber,
- e.id,
- s.id,
- IF(st.`code` = 'DELIVERED' , TRUE, FALSE),
- FALSE,
- b.id,
- NULL,
- NULL,
- NULL,
- ec.inventorySupplierFk
- 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 state st ON st.`code` = IF(tr.shipped < util.VN_CURDATE()
+ INSERT INTO tItemDiary
+ WITH entriesIn AS (
+ SELECT tr.landed shipped,
+ b.quantity `in`,
+ NULL `out`,
+ st.alertLevel ,
+ st.name stateName,
+ s.name `name`,
+ e.invoiceNumber reference,
+ e.id origin,
+ s.id clientFk,
+ IF(st.`code` = 'DELIVERED', TRUE, FALSE) isPicked,
+ FALSE isTicket,
+ b.id lineFk,
+ NULL `order`,
+ NULL clientType,
+ NULL claimFk,
+ ec.inventorySupplierFk
+ FROM vn.buy b
+ JOIN vn.entry e ON e.id = b.entryFk
+ JOIN vn.travel tr ON tr.id = e.travelFk
+ JOIN vn.supplier s ON s.id = e.supplierFk
+ JOIN vn.state st ON st.`code` = IF( tr.landed < util.VN_CURDATE()
+ OR (util.VN_CURDATE() AND tr.isReceived),
+ 'DELIVERED',
+ 'FREE')
+ JOIN vn.entryConfig ec
+ WHERE tr.landed >= vDateInventory
+ AND vWarehouseFk = tr.warehouseInFk
+ AND (s.id <> ec.inventorySupplierFk OR vDate IS NULL)
+ AND b.itemFk = vItemFk
+ AND NOT e.isExcludedFromAvailable
+ AND NOT e.isRaid
+ ), entriesOut AS (
+ SELECT tr.shipped,
+ NULL,
+ b.quantity,
+ st.alertLevel,
+ st.name stateName,
+ s.name ,
+ e.invoiceNumber,
+ e.id entryFk,
+ s.id supplierFk,
+ IF(st.`code` = 'DELIVERED' , TRUE, FALSE),
+ FALSE isTicket,
+ b.id,
+ NULL `order`,
+ NULL clientType,
+ NULL claimFk,
+ ec.inventorySupplierFk
+ FROM vn.buy b
+ JOIN vn.entry e ON e.id = b.entryFk
+ JOIN vn.travel tr ON tr.id = e.travelFk
+ JOIN vn.warehouse w ON w.id = tr.warehouseOutFk
+ JOIN vn.supplier s ON s.id = e.supplierFk
+ JOIN vn.state st ON st.`code` = IF(tr.shipped < util.VN_CURDATE()
OR (tr.shipped = util.VN_CURDATE() AND tr.isReceived),
- 'DELIVERED',
- 'FREE')
- JOIN entryConfig ec
- WHERE tr.shipped >= vDateInventory
- AND vWarehouseFk = tr.warehouseOutFk
- AND (s.id <> ec.inventorySupplierFk OR vDate IS NULL)
- AND b.itemFk = vItemFk
- AND e.isExcludedFromAvailable = FALSE
- AND w.isFeedStock = FALSE
- AND e.isRaid = FALSE
- UNION ALL
- SELECT DATE(t.shipped),
- NULL,
- s.quantity,
- st2.alertLevel,
- st2.name,
- t.nickname,
- t.refFk,
- t.id,
- t.clientFk,
- stk.id,
- TRUE,
- s.id,
- st.`order`,
- c.typeFk,
- cb.claimFk,
- NULL
- FROM sale s
- JOIN ticket t ON t.id = s.ticketFk
- LEFT JOIN ticketState ts ON ts.ticketFk = t.id
- LEFT JOIN state st ON st.`code` = ts.`code`
- JOIN client c ON c.id = t.clientFk
- JOIN state st2 ON st2.`code` = IF(t.shipped < util.VN_CURDATE(),
- 'DELIVERED',
- IF (t.shipped > util.dayEnd(util.VN_CURDATE()),
- 'FREE',
- IFNULL(ts.code, 'FREE')))
- 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 = vItemFk
- AND vWarehouseFk =t.warehouseFk
- ORDER BY shipped,
- (inventorySupplierFk = clientFk) DESC,
- alertLevel DESC,
- isTicket,
- `order` DESC,
- isPicked DESC,
- `in` DESC,
- `out` DESC;
+ 'DELIVERED',
+ 'FREE')
+ JOIN vn.entryConfig ec
+ WHERE tr.shipped >= vDateInventory
+ AND vWarehouseFk = tr.warehouseOutFk
+ AND (s.id <> ec.inventorySupplierFk OR vDate IS NULL)
+ AND b.itemFk = vItemFk
+ AND NOT e.isExcludedFromAvailable
+ AND NOT w.isFeedStock
+ AND NOT e.isRaid
+ ), sales AS (
+ SELECT DATE(t.shipped) shipped,
+ s.quantity,
+ st2.alertLevel,
+ st2.name,
+ t.nickname,
+ t.refFk,
+ t.id ticketFk,
+ t.clientFk,
+ s.id saleFk,
+ st.`order`,
+ c.typeFk,
+ cb.claimFk
+ FROM vn.sale s
+ JOIN vn.ticket t ON t.id = s.ticketFk
+ LEFT JOIN vn.ticketState ts ON ts.ticketFk = t.id
+ LEFT JOIN vn.state st ON st.`code` = ts.`code`
+ JOIN vn.client c ON c.id = t.clientFk
+ JOIN vn.state st2 ON st2.`code` = IF(t.shipped < util.VN_CURDATE(),
+ 'DELIVERED',
+ IF (t.shipped > util.dayEnd(util.VN_CURDATE()),
+ 'FREE',
+ IFNULL(ts.code, 'FREE')))
+ LEFT JOIN vn.claimBeginning cb ON s.id = cb.saleFk
+ WHERE t.shipped >= vDateInventory
+ AND s.itemFk = vItemFk
+ AND vWarehouseFk = t.warehouseFk
+ ),sale AS (
+ SELECT s.shipped,
+ NULL `in`,
+ s.quantity,
+ s.alertLevel,
+ s.name,
+ s.nickname,
+ s.refFk,
+ s.ticketFk,
+ s.clientFk,
+ IF(stk.saleFk, TRUE, NULL),
+ TRUE,
+ s.saleFk,
+ s.`order`,
+ s.typeFk,
+ s.claimFk,
+ NULL
+ FROM sales s
+ LEFT JOIN vn.state stPrep ON stPrep.`code` = 'PREPARED'
+ LEFT JOIN vn.saleTracking stk ON stk.saleFk = s.saleFk
+ AND stk.stateFk = stPrep.id
+ GROUP BY s.saleFk
+ ) SELECT shipped,
+ `in`,
+ `out`,
+ alertLevel,
+ stateName,
+ `name`,
+ reference,
+ origin,
+ clientFk,
+ isPicked,
+ isTicket,
+ lineFk,
+ `order`,
+ clientType,
+ claimFk,
+ inventorySupplierFk
+ FROM entriesIn
+ UNION ALL
+ SELECT * FROM entriesOut
+ UNION ALL
+ SELECT * FROM sale
+ ORDER BY shipped,
+ (inventorySupplierFk = clientFk) DESC,
+ alertLevel DESC,
+ isTicket,
+ `order` DESC,
+ isPicked DESC,
+ `in` DESC,
+ `out` DESC;
IF vDate IS NULL THEN
-
+
SET @a := 0;
SET @currentLineFk := 0;
SET @shipped := '';
@@ -220,7 +257,7 @@ BEGIN
FROM tItemDiary
WHERE shipped >= vDate;
END IF;
-
+
DROP TEMPORARY TABLE tItemDiary;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/item_getSimilar.sql b/db/routines/vn/procedures/item_getSimilar.sql
index 6f275de86f..762c253423 100644
--- a/db/routines/vn/procedures/item_getSimilar.sql
+++ b/db/routines/vn/procedures/item_getSimilar.sql
@@ -21,7 +21,7 @@ BEGIN
CALL cache.available_refresh(vCalcFk, FALSE, vWarehouseFk, vDated);
- -- Añadido temporalmente para ver si ya no sucede el cuelgue de db
+ -- Añadido temporalmente para que no se cuelgue la db
SET vShowType = TRUE;
WITH itemTags AS (
@@ -82,7 +82,7 @@ BEGIN
AND iss.warehouseFk = vWarehouseFk
JOIN itemTags its
WHERE a.available > 0
- AND IF(vShowType, i.typeFk = its.typeFk, TRUE)
+ AND (i.typeFk = its.typeFk OR NOT vShowType)
AND i.id <> vSelf
ORDER BY `counter` DESC,
(t.name = its.name) DESC,
diff --git a/db/routines/vn/procedures/item_ValuateInventory.sql b/db/routines/vn/procedures/item_valuateInventory.sql
similarity index 74%
rename from db/routines/vn/procedures/item_ValuateInventory.sql
rename to db/routines/vn/procedures/item_valuateInventory.sql
index bfd96fa82c..18aefdf7b9 100644
--- a/db/routines/vn/procedures/item_ValuateInventory.sql
+++ b/db/routines/vn/procedures/item_valuateInventory.sql
@@ -1,5 +1,7 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_ValuateInventory`(vDated DATE, vIsDetailed BOOLEAN)
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_valuateInventory`(
+ vDated DATE
+)
BEGIN
DECLARE vInventoried DATE;
DECLARE vHasNotInventory BOOLEAN DEFAULT FALSE;
@@ -15,8 +17,7 @@ BEGIN
SELECT tr.landed INTO vInventoried
FROM travel tr
JOIN `entry` e ON e.travelFk = tr.id
- JOIN entryConfig ec
- WHERE landed <= vDateDayEnd
+ WHERE tr.landed <= vDateDayEnd
AND e.supplierFk = vInventorySupplierFk
ORDER BY tr.landed DESC
LIMIT 1;
@@ -27,8 +28,7 @@ BEGIN
SELECT landed INTO vInventoryClone
FROM travel tr
JOIN `entry` e ON e.travelFk = tr.id
- JOIN entryConfig ec
- WHERE landed >= vDated
+ WHERE tr.landed >= vDated
AND e.supplierFk = vInventorySupplierFk
ORDER BY landed ASC
LIMIT 1;
@@ -38,13 +38,14 @@ BEGIN
END IF;
CREATE OR REPLACE TEMPORARY TABLE tInventory(
- warehouseFk SMALLINT,
- itemFk BIGINT,
- quantity INT,
- cost DOUBLE DEFAULT 0,
- total DOUBLE DEFAULT 0,
- warehouseInventory VARCHAR(20),
- PRIMARY KEY (warehouseInventory, itemFk) USING HASH
+ warehouseFk SMALLINT,
+ itemFk BIGINT,
+ quantity INT,
+ volume DECIMAL(10,2),
+ cost DOUBLE DEFAULT 0,
+ total DOUBLE DEFAULT 0,
+ warehouseInventory VARCHAR(20),
+ PRIMARY KEY (warehouseInventory, itemFk) USING HASH
)
ENGINE = MEMORY;
@@ -60,9 +61,8 @@ BEGIN
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
- JOIN entryConfig ec
- WHERE landed = vDateDayEnd
+ JOIN warehouse w ON w.id = tr.warehouseInFk
+ WHERE tr.landed = vDateDayEnd
AND e.supplierFk = vInventorySupplierFk
AND w.valuatedInventory
AND t.isInventory
@@ -78,9 +78,8 @@ BEGIN
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
- JOIN entryConfig ec
- WHERE landed = vInventoried
+ JOIN warehouse w ON w.id = tr.warehouseInFk
+ WHERE tr.landed = vInventoried
AND e.supplierFk = vInventorySupplierFk
AND w.valuatedInventory
AND t.isInventory
@@ -99,7 +98,6 @@ BEGIN
JOIN travel tr ON tr.id = e.travelFk
JOIN itemType t ON t.id = i.typeFk
JOIN warehouse w ON w.id = tr.warehouseInFk
- JOIN entryConfig ec
WHERE tr.landed BETWEEN vInventoried AND vDateDayEnd
AND IF(tr.landed = util.VN_CURDATE(), tr.isReceived, TRUE)
AND NOT e.isRaid
@@ -183,52 +181,37 @@ BEGIN
AND e.isConfirmed
ON DUPLICATE KEY UPDATE tInventory.quantity = tInventory.quantity + (b.quantity);
- CALL vn.buyUltimate(NULL, vDateDayEnd);
+ CALL buyUltimate(NULL, vDateDayEnd);
+
+ DELETE FROM tInventory WHERE quantity IS NULL OR NOT quantity;
UPDATE tInventory i
JOIN tmp.buyUltimate bu ON i.warehouseFk = bu.warehouseFk AND i.itemFk = bu.itemFk
JOIN buy b ON b.id = bu.buyFk
- SET total = i.quantity * (IFNULL(b.buyingValue, 0) + IFNULL(b.packageValue, 0) + IFNULL(b.freightValue, 0) + IFNULL(b.comissionValue, 0)),
- cost = IFNULL(b.buyingValue, 0) + IFNULL(b.packageValue, 0) + IFNULL(b.freightValue, 0) + IFNULL(b.comissionValue, 0)
- WHERE i.quantity;
+ LEFT JOIN itemCost ic ON ic.itemFk = i.itemFk
+ AND ic.warehouseFk = i.warehouseFk
+ SET i.total = i.quantity * (IFNULL(b.buyingValue, 0) + IFNULL(b.packageValue, 0) + IFNULL(b.freightValue, 0) + IFNULL(b.comissionValue, 0)),
+ i.cost = IFNULL(b.buyingValue, 0) + IFNULL(b.packageValue, 0) + IFNULL(b.freightValue, 0) + IFNULL(b.comissionValue, 0),
+ i.volume = i.quantity * ic.cm3delivery / 1000000;
- DELETE FROM tInventory
- WHERE quantity IS NULL OR NOT quantity;
-
- IF vIsDetailed THEN
- SELECT ti.warehouseFk,
- i.id itemFk,
- i.longName,
- i.size,
- ti.quantity,
- tp.name Tipo,
- ic.name Reino,
- ti.cost,
- CAST(ti.total AS DECIMAL(10, 2)) total,
- ti.warehouseInventory almacen
- FROM tInventory ti
- JOIN warehouse w ON w.id = warehouseFk
- JOIN item i ON i.id = ti.itemFk
- JOIN itemType tp ON tp.id = i.typeFk
- JOIN itemCategory ic ON ic.id = tp.categoryFk
- WHERE w.valuatedInventory
- AND ti.total > 0
- ORDER BY ti.total DESC;
- ELSE
- SELECT i.warehouseInventory Almacen,
- ic.name Reino,
- CAST(i.total AS DECIMAL(10, 2)) Euros,
- w.code Comprador,
- it.id
- FROM tInventory i
- JOIN warehouse wh ON wh.id = warehouseFk
- JOIN item it ON it.id = i.itemFk
- 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;
+ SELECT ti.warehouseFk,
+ i.id,
+ i.longName,
+ i.size,
+ ti.quantity,
+ ti.volume,
+ tp.name itemTypeName,
+ ic.name itemCategoryName,
+ ti.cost,
+ ti.total,
+ ti.warehouseInventory
+ FROM tInventory ti
+ JOIN warehouse w ON w.id = warehouseFk
+ JOIN item i ON i.id = ti.itemFk
+ JOIN itemType tp ON tp.id = i.typeFk
+ JOIN itemCategory ic ON ic.id = tp.categoryFk
+ WHERE w.valuatedInventory
+ AND ti.total > 0;
DROP TEMPORARY TABLE
tmp.buyUltimate,
diff --git a/db/routines/vn/procedures/ledger_doCompensation.sql b/db/routines/vn/procedures/ledger_doCompensation.sql
index e45db376c3..a9e4e42511 100644
--- a/db/routines/vn/procedures/ledger_doCompensation.sql
+++ b/db/routines/vn/procedures/ledger_doCompensation.sql
@@ -1,5 +1,13 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ledger_doCompensation`(vDated DATE, vCompensationAccount VARCHAR(10) , vBankFk VARCHAR(10), vConcept VARCHAR(255), vAmount DECIMAL(10,2), vCompanyFk INT, vOriginalAccount VARCHAR(10))
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`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
@@ -9,29 +17,31 @@ BEGIN
* @param vBankFk banco de la compensacion
* @param vConcept descripcion
* @param vAmount cantidad que se compensa
- * @param vCompany empresa
+ * @param vCompanyFk empresa
* @param vOriginalAccount cuenta contable desde la cual se compensa
*
- */
+ */
DECLARE vNewBookEntry INT;
- DECLARE vIsClientCompensation INT;
+ DECLARE vIsClientCompensation INT;
DECLARE vClientFk INT;
- DECLARE vSupplierFk INT;
- DECLARE vIsOriginalAClient BOOL;
- DECLARE vPayMethodCompensation INT;
-
- CALL ledger_next(vNewBookEntry);
+ DECLARE vSupplierFk INT;
+ DECLARE vIsOriginalAClient BOOL;
+ DECLARE vPayMethodCompensation INT;
- SELECT COUNT(id) INTO vIsOriginalAClient FROM client WHERE accountingAccount LIKE vOriginalAccount COLLATE utf8_general_ci;
+ CALL ledger_next(YEAR(vDated), FALSE, 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
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)
+ INSERT INTO XDiario (ASIEN, FECHA, SUBCTA, CONTRA, CONCEPTO, EURODEBE, EUROHABER, empresa_id)
VALUES ( vNewBookEntry,
vDated,
vOriginalAccount,
@@ -49,30 +59,51 @@ BEGIN
),
vCompanyFk
),
- ( vNewBookEntry,
- vDated,
- vCompensationAccount,
- vOriginalAccount,
- vConcept,
- @vAmount2,
+ ( 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)
- VALUES (vConcept, vAmount, vDated, vBankFk, vCompanyFk, vClientFk, TRUE);
- ELSE
- IF NOT vIsOriginalAClient THEN
- SET vAmount = -vAmount;
- 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;
+ vCompanyFk);
+
+ IF vIsClientCompensation THEN
+ IF vIsOriginalAClient THEN
+ SET vAmount = -vAmount;
+ END IF;
+
+ INSERT INTO receipt
+ SET invoiceFk = vConcept,
+ amountPaid = vAmount,
+ payed = vDated,
+ bankFk = vBankFk,
+ companyFk = vCompanyFk,
+ clientFk = vClientFk,
+ isConciliate = TRUE;
+ ELSE
+ IF NOT vIsOriginalAClient THEN
+ SET vAmount = -vAmount;
+ 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
+ SET received = vDated,
+ dueDated = vDated,
+ supplierFk = vSupplierFk,
+ amount = vAmount,
+ bankFk = vBankFk,
+ payMethodFk = vPayMethodCompensation,
+ concept = vConcept,
+ companyFk = vCompanyFk,
+ isConciliated = TRUE;
+ END IF;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/ledger_next.sql b/db/routines/vn/procedures/ledger_next.sql
index a45ebdd29a..2d565ff996 100644
--- a/db/routines/vn/procedures/ledger_next.sql
+++ b/db/routines/vn/procedures/ledger_next.sql
@@ -1,9 +1,60 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ledger_next`(OUT vNewBookEntry INT)
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ledger_next`(
+ IN vFiscalYear INT,
+ IN vIsManageTransaction BOOLEAN,
+ OUT vLastBookEntry INT
+)
BEGIN
-
- UPDATE vn.ledgerConfig SET lastBookEntry = LAST_INSERT_ID(lastBookEntry + 1);
- SET vNewBookEntry = LAST_INSERT_ID();
-
+ DECLARE vHasStartTransaction BOOLEAN;
+
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+
+ IF vHasStartTransaction THEN
+ ROLLBACK TO sp;
+ RESIGNAL;
+ ELSE
+ ROLLBACK;
+ CALL util.throw ('It has not been possible to generate a new ledger');
+ END IF;
+ END;
+
+ IF vFiscalYear IS NULL THEN
+ CALL util.throw('Fiscal year is required');
+ END IF;
+
+ IF NOT vIsManageTransaction THEN
+ SELECT @@in_transaction INTO vHasStartTransaction;
+
+ IF NOT vHasStartTransaction THEN
+ START TRANSACTION;
+ ELSE
+ SAVEPOINT sp;
+ END IF;
+ END IF;
+
+ SELECT bookEntry + 1 INTO vLastBookEntry
+ FROM ledgerCompany
+ WHERE fiscalYear = vFiscalYear
+ FOR UPDATE;
+
+ IF vLastBookEntry IS NULL THEN
+ INSERT INTO ledgerCompany
+ SET fiscalYear = vFiscalYear,
+ bookEntry = 1;
+ SET vLastBookEntry = 1;
+ END IF;
+
+ UPDATE ledgerCompany
+ SET bookEntry = vLastBookEntry
+ WHERE fiscalYear = vFiscalYear;
+
+ IF NOT vIsManageTransaction THEN
+ IF vHasStartTransaction THEN
+ RELEASE SAVEPOINT sp;
+ ELSE
+ COMMIT;
+ END IF;
+ END IF;
END$$
-DELIMITER ;
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/packageInvoicing.sql b/db/routines/vn/procedures/packageInvoicing.sql
deleted file mode 100644
index 7dae8dcf20..0000000000
--- a/db/routines/vn/procedures/packageInvoicing.sql
+++ /dev/null
@@ -1,121 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`packageInvoicing`(
- IN vClient INT,
- IN vDate DATE,
- IN vCompany INT,
- IN vIsAllInvoiceable BOOLEAN,
- OUT vNewTicket INT(11)
- )
-BEGIN
-
- DECLARE vGraceDays INT;
- DECLARE vDateStart DATE DEFAULT '2017-11-21';
- DECLARE vIsInvoiceable BOOLEAN;
- DECLARE vWarehouse INT DEFAULT 13;
- DECLARE vComponentCost INT DEFAULT 28;
- DECLARE vGraceDate DATE;
- DECLARE vDateEnd DATE;
-
- SET vGraceDays = IF(vIsAllInvoiceable ,0, 30);
- SET vGraceDate = TIMESTAMPADD(DAY, - vGraceDays, vDate);
-
- /* 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;
-
- CREATE TEMPORARY TABLE tmp.packageToInvoice
- SELECT p.itemFk,
- tp.packagingFk,
- IF(tp.quantity < 0 OR t.shipped < vGraceDate, tp.quantity, 0) quantity,
- tp.ticketFk,
- p.price
- FROM ticketPackaging tp
- JOIN packaging p ON p.id = tp.packagingFk
- JOIN ticket t ON t.id = tp.ticketFk
- WHERE t.shipped BETWEEN vDateStart AND vDateEnd
- AND t.clientFk = vClient;
-
- DROP TEMPORARY TABLE IF EXISTS tmp.packageToInvoicePositives;
-
- CREATE TEMPORARY TABLE tmp.packageToInvoicePositives
- SELECT itemFk, sum(quantity) as totalQuantity
- FROM tmp.packageToInvoice
- GROUP BY itemFk
- HAVING totalQuantity > 0;
-
- SELECT COUNT(*)
- INTO vIsInvoiceable
- FROM tmp.packageToInvoicePositives;
-
- IF vIsInvoiceable THEN
-
- CALL ticket_add(vClient,
- vDateEnd,
- vWarehouse,
- vCompany,
- NULL,
- NULL,
- NULL,
- vDateEnd,
- account.myUser_getId(),
- TRUE,
- vNewTicket);
-
- INSERT INTO ticketPackaging(
- ticketFk,
- packagingFk,
- quantity,
- pvp)
- 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
- OR vIsAllInvoiceable
- GROUP BY packagingFk
- HAVING totalQuantity;
-
- INSERT INTO sale(
- ticketFk,
- itemFk,
- concept,
- quantity,
- price
- )
- 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
- 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 ;
diff --git a/db/routines/vn/procedures/reportLabelCollection_get.sql b/db/routines/vn/procedures/reportLabelCollection_get.sql
index 6ad5ae964e..e7f8f2bc3c 100644
--- a/db/routines/vn/procedures/reportLabelCollection_get.sql
+++ b/db/routines/vn/procedures/reportLabelCollection_get.sql
@@ -20,7 +20,7 @@ BEGIN
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,
+ LEFT(COALESCE(rs.description, zo.name, am.name),12) agencyDescription,
am.name,
t.clientFk,
CONCAT(CAST(SUM(sv.volume) AS DECIMAL(5, 2)), 'm³') m3 ,
@@ -47,7 +47,7 @@ BEGIN
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
+ LEFT JOIN roadmapStop rs ON rs.id = rm.expeditionTruckFk
WHERE IF(vIsCollection, tc.collectionFk = vParam, tc.ticketFk = vParam)
GROUP BY t.id
ORDER BY cc.code;
diff --git a/db/routines/vn/procedures/routeMonitor_calculate.sql b/db/routines/vn/procedures/routeMonitor_calculate.sql
index af7f5297e8..04a31a1616 100644
--- a/db/routines/vn/procedures/routeMonitor_calculate.sql
+++ b/db/routines/vn/procedures/routeMonitor_calculate.sql
@@ -106,8 +106,8 @@ BEGIN
SET rm.m3boxes = sub.m3boxes;
UPDATE routesMonitor rm
- JOIN vn.expeditionTruck et ON et.id = rm.expeditionTruckFk
- SET rm.etd = et.eta;
+ JOIN vn.roadmapStop rs ON rs.id = rm.expeditionTruckFk
+ SET rm.etd = rs.eta;
DROP TEMPORARY TABLE tmp.routesMonitor;
END$$
diff --git a/db/routines/vn/procedures/sale_getProblems.sql b/db/routines/vn/procedures/sale_getProblems.sql
index bf02e2401b..98926b28bf 100644
--- a/db/routines/vn/procedures/sale_getProblems.sql
+++ b/db/routines/vn/procedures/sale_getProblems.sql
@@ -34,7 +34,7 @@ BEGIN
ticketFk INT(11),
saleFk INT(11),
isFreezed INTEGER(1) DEFAULT 0,
- risk DECIMAL(10,2) DEFAULT 0,
+ risk DECIMAL(10,1) DEFAULT 0,
hasHighRisk TINYINT(1) DEFAULT 0,
hasTicketRequest INTEGER(1) DEFAULT 0,
itemShortage VARCHAR(255),
@@ -44,6 +44,7 @@ BEGIN
hasComponentLack INTEGER(1),
hasRounding VARCHAR(255),
isTooLittle BOOL DEFAULT FALSE,
+ isVip BOOL DEFAULT FALSE,
PRIMARY KEY (ticketFk, saleFk)
) ENGINE = MEMORY;
@@ -79,6 +80,14 @@ BEGIN
JOIN volumeConfig vc
WHERE sub.litros < vc.minTicketVolume
AND sub.totalWithoutVat < vc.minTicketValue;
+
+ -- VIP
+ INSERT INTO tmp.sale_problems(ticketFk, isVip)
+ SELECT DISTINCT tl.ticketFk, TRUE
+ FROM tmp.ticket_list tl
+ JOIN client c ON c.id = tl.clientFk
+ WHERE c.businessTypeFk = 'VIP'
+ ON DUPLICATE KEY UPDATE isVip = TRUE;
-- Faltan componentes
INSERT INTO tmp.sale_problems(ticketFk, hasComponentLack, saleFk)
diff --git a/db/routines/vn/procedures/sale_setProblem.sql b/db/routines/vn/procedures/sale_setProblem.sql
new file mode 100644
index 0000000000..20319cc3f2
--- /dev/null
+++ b/db/routines/vn/procedures/sale_setProblem.sql
@@ -0,0 +1,18 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_setProblem`(
+ vProblemCode VARCHAR(25)
+)
+BEGIN
+/**
+ * Update column sale.problem with a problem code
+ * @param vProblemCode Code to set or unset
+ * @table tmp.sale(saleFk, hasProblem)
+ */
+ UPDATE sale s
+ JOIN tmp.sale ts ON ts.saleFk = s.id
+ SET s.problem = CONCAT(
+ IF(ts.hasProblem,
+ CONCAT(s.problem, ',', vProblemCode),
+ REPLACE(s.problem, vProblemCode , '')));
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/sale_setProblemComponentLack.sql b/db/routines/vn/procedures/sale_setProblemComponentLack.sql
new file mode 100644
index 0000000000..363663a007
--- /dev/null
+++ b/db/routines/vn/procedures/sale_setProblemComponentLack.sql
@@ -0,0 +1,21 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_setProblemComponentLack`(
+ vSelf INT
+)
+BEGIN
+/**
+ * Update the problems for sales lines that have or no longer have problems with components,
+ * verify whether all mandatory components are present or not
+ *
+ * @param vSelf Id del sale
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale
+ (INDEX(saleFk))
+ ENGINE = MEMORY
+ SELECT vSelf saleFk, sale_hasComponentLack(vSelf) hasProblem;
+
+ CALL sale_setProblem('hasComponentLack');
+
+ DROP TEMPORARY TABLE tmp.sale;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/sale_setProblemComponentLackByComponent.sql b/db/routines/vn/procedures/sale_setProblemComponentLackByComponent.sql
new file mode 100644
index 0000000000..62db0d9cfb
--- /dev/null
+++ b/db/routines/vn/procedures/sale_setProblemComponentLackByComponent.sql
@@ -0,0 +1,29 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_setProblemComponentLackByComponent`(
+ vComponentFk INT
+)
+BEGIN
+/**
+ * Update the issues for sales lines that have or no longer have problems with components, verify
+ * whether all mandatory components are present or not resulting from changes in the table vn.component
+ *
+ * @param vComponentFk Id component
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale
+ (INDEX(saleFk))
+ ENGINE = MEMORY
+ SELECT saleFk, sale_hasComponentLack(saleFk)hasProblem
+ FROM (
+ SELECT s.id saleFk
+ FROM ticket t
+ JOIN sale s ON s.ticketFk = t.id
+ LEFT JOIN saleComponent sc ON sc.saleFk = s.id
+ WHERE t.shipped >= util.midnight()
+ AND (vComponentFk IS NULL OR sc.componentFk = vComponentFk)
+ GROUP BY s.id) sub;
+
+ CALL sale_setProblem('hasComponentLack');
+
+ DROP TEMPORARY TABLE tmp.sale;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/sale_setProblemRounding.sql b/db/routines/vn/procedures/sale_setProblemRounding.sql
new file mode 100644
index 0000000000..f14cd408f2
--- /dev/null
+++ b/db/routines/vn/procedures/sale_setProblemRounding.sql
@@ -0,0 +1,34 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`sale_setProblemRounding`(
+ vSelf INT
+)
+BEGIN
+/**
+ * Update the rounding problem for a sales line
+ * @param vSelf Id sale
+ */
+ DECLARE vItemFk INT;
+ DECLARE vWarehouseFk INT;
+ DECLARE vShipped DATE;
+ DECLARE vQuantity INT;
+
+ SELECT s.itemFk, t.warehouseFk, t.shipped, s.quantity
+ INTO vItemFk, vWarehouseFk, vShipped, vQuantity
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ WHERE s.id = vSelf;
+
+ CALL buyUltimate(vWarehouseFk, vShipped);
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale
+ SELECT vSelf saleFk, MOD(vQuantity, b.`grouping`) hasProblem
+ FROM tmp.buyUltimate bu
+ JOIN buy b ON b.id = bu.buyFk
+ WHERE bu.itemFk = vItemFk;
+
+ CALL sale_setProblem('hasRounding');
+
+ DROP TEMPORARY TABLE tmp.sale;
+ DROP TEMPORARY TABLE tmp.buyUltimate;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/stockBuyed_add.sql b/db/routines/vn/procedures/stockBuyed_add.sql
index bddb720a5c..1fff1484c7 100644
--- a/db/routines/vn/procedures/stockBuyed_add.sql
+++ b/db/routines/vn/procedures/stockBuyed_add.sql
@@ -43,7 +43,7 @@ BEGIN
INSERT INTO stockBuyed(buyed, dated, description)
SELECT SUM(ic.cm3 * ito.quantity / vc.palletM3 / 1000000),
vDated,
- IF(c.code = 'ES', p.name, c.country) destiny
+ IF(c.code = 'ES', p.name, c.name) destiny
FROM itemTicketOut ito
JOIN ticket t ON t.id = ito.ticketFk
JOIN `address` a ON a.id = t.addressFk
diff --git a/db/routines/vn/procedures/supplierPackaging_ReportSource.sql b/db/routines/vn/procedures/supplierPackaging_ReportSource.sql
index f9d43f9256..a3401843ad 100644
--- a/db/routines/vn/procedures/supplierPackaging_ReportSource.sql
+++ b/db/routines/vn/procedures/supplierPackaging_ReportSource.sql
@@ -35,7 +35,7 @@ BEGIN
itemFk,
longName,
supplier,
- entryFk,
+ CONCAT('E',entryFk) entryFk,
landed,
`in`,
`out`,
@@ -49,16 +49,98 @@ BEGIN
itemFk,
longName,
supplier,
- 'previous',
+ 'E previous',
vFromDated,
SUM(`in`),
SUM(`out`),
NULL,
- buyingValue
+ AVG(buyingValue)
FROM supplierPackaging
WHERE supplierFk = vSupplierFk
AND landed < vFromDated
GROUP BY itemFk
+ UNION ALL
+ SELECT vSupplierFk,
+ s.itemFk,
+ i.longName,
+ c.name,
+ CONCAT('T',s.ticketFk),
+ DATE(t.shipped),
+ -LEAST(s.quantity,0) `in`,
+ GREATEST(s.quantity,0) `out`,
+ t.warehouseFk,
+ s.price * (100 - s.discount) / 100
+ FROM sale s
+ JOIN item i ON i.id = s.itemFk
+ JOIN packaging p ON p.itemFk = i.id
+ JOIN ticket t ON t.id = s.ticketFk
+ JOIN client c ON c.id = t.clientFk
+ JOIN supplier su ON su.nif = c.fi
+ WHERE su.id = vSupplierFk
+ AND t.shipped >= vFromDated
+ AND p.isPackageReturnable
+ UNION ALL
+ SELECT vSupplierFk,
+ s.itemFk,
+ i.longName,
+ c.name,
+ 'T previous',
+ vFromDated,
+ SUM(-LEAST(s.quantity,0)) `in`,
+ SUM(GREATEST(s.quantity,0)) `out`,
+ NULL,
+ AVG(s.price * (100 - s.discount) / 100)
+ FROM sale s
+ JOIN item i ON i.id = s.itemFk
+ JOIN packaging p ON p.itemFk = i.id
+ JOIN ticket t ON t.id = s.ticketFk
+ JOIN client c ON c.id = t.clientFk
+ JOIN supplier su ON su.nif = c.fi
+ WHERE su.id = vSupplierFk
+ AND t.shipped < vFromDated
+ AND p.isPackageReturnable
+ GROUP BY s.itemFk
+ UNION ALL
+ SELECT vSupplierFk,
+ p.itemFk,
+ i.longName,
+ c.name,
+ CONCAT('TP',tp.ticketFk),
+ DATE(t.shipped),
+ -LEAST(tp.quantity,0) `in`,
+ GREATEST(tp.quantity,0) `out`,
+ t.warehouseFk,
+ 0
+ FROM ticketPackaging tp
+ JOIN packaging p ON p.id = tp.packagingFk
+ JOIN item i ON i.id = p.itemFk
+ JOIN ticket t ON t.id = tp.ticketFk
+ JOIN client c ON c.id = t.clientFk
+ JOIN supplier su ON su.nif = c.fi
+ WHERE su.id = vSupplierFk
+ AND t.shipped >= vFromDated
+ AND p.isPackageReturnable
+ UNION ALL
+ SELECT vSupplierFk,
+ p.itemFk,
+ i.longName,
+ c.name,
+ 'TP previous',
+ vFromDated,
+ SUM(-LEAST(tp.quantity,0)) `in`,
+ SUM(GREATEST(tp.quantity,0)) `out`,
+ NULL,
+ 0
+ FROM ticketPackaging tp
+ JOIN packaging p ON p.id = tp.packagingFk
+ JOIN item i ON i.id = p.itemFk
+ JOIN ticket t ON t.id = tp.ticketFk
+ JOIN client c ON c.id = t.clientFk
+ JOIN supplier su ON su.nif = c.fi
+ WHERE su.id = vSupplierFk
+ AND t.shipped >= vFromDated
+ AND p.isPackageReturnable
+ GROUP BY p.itemFk
ORDER BY itemFk, landed, entryFk
) sub
WHERE `out` OR `in`;
@@ -69,8 +151,8 @@ BEGIN
supplier,
entryFk,
landed,
- `in`,
- `out`,
+ CAST(`in` AS DECIMAL(10,0)) `in`,
+ CAST(`out` AS DECIMAL(10,0)) `out`,
warehouse,
buyingValue,
balance
diff --git a/db/routines/vn/procedures/ticketPackaging_add.sql b/db/routines/vn/procedures/ticketPackaging_add.sql
index d669b95f55..f96068b568 100644
--- a/db/routines/vn/procedures/ticketPackaging_add.sql
+++ b/db/routines/vn/procedures/ticketPackaging_add.sql
@@ -27,7 +27,10 @@ BEGIN
SELECT DISTINCT clientFk
FROM (
SELECT clientFk, SUM(quantity) totalQuantity
- FROM tmp.packagingToInvoice
+ FROM tmp.packagingToInvoice tpi
+ JOIN client c ON c.id = tpi.clientFk
+ LEFT JOIN supplier s ON s.nif = c.fi
+ WHERE s.id IS NULL
GROUP BY itemFk, clientFk
HAVING totalQuantity > 0)sub;
diff --git a/db/routines/vn/procedures/ticketRefund_beforeUpsert.sql b/db/routines/vn/procedures/ticketRefund_beforeUpsert.sql
deleted file mode 100644
index 5a0e993186..0000000000
--- a/db/routines/vn/procedures/ticketRefund_beforeUpsert.sql
+++ /dev/null
@@ -1,18 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE 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 refundTicketFk = vOriginalTicketFk;
-
- IF vAlreadyExists > 0 THEN
- CALL util.throw('This ticket is already a refund');
- END IF;
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/procedures/ticket_doCmr.sql b/db/routines/vn/procedures/ticket_doCmr.sql
index 61d8da5f9c..2da8464b4d 100644
--- a/db/routines/vn/procedures/ticket_doCmr.sql
+++ b/db/routines/vn/procedures/ticket_doCmr.sql
@@ -7,7 +7,7 @@ BEGIN
*
* @param vSelf El id del ticket
*/
- DECLARE vCmrFk, vPreviousCmrFk, vCurrentCmrFk INT;
+ DECLARE vCmrFk INT;
SELECT cmrFk INTO vCmrFk
FROM ticket
WHERE id = vSelf;
@@ -44,8 +44,6 @@ BEGIN
AND t.id = vSelf
GROUP BY t.id;
- START TRANSACTION;
-
IF vCmrFk THEN
UPDATE cmr c
JOIN tTicket t
@@ -57,9 +55,7 @@ BEGIN
c.supplierFk = t.supplierFk,
c.ead = t.landed
WHERE id = vCmrFk;
- ELSE
- SELECT MAX(id) INTO vPreviousCmrFk FROM cmr;
-
+ ELSE
INSERT INTO cmr (
senderInstruccions,
truckPlate,
@@ -70,17 +66,14 @@ BEGIN
ead
)
SELECT * FROM tTicket;
-
- SELECT MAX(id) INTO vCurrentCmrFk FROM cmr;
- IF vPreviousCmrFk <> vCurrentCmrFk THEN
+ IF (SELECT EXISTS(SELECT * FROM tTicket)) THEN
UPDATE ticket
- SET cmrFk = vCurrentCmrFk
+ SET cmrFk = LAST_INSERT_ID()
WHERE id = vSelf;
END IF;
END IF;
- COMMIT;
DROP TEMPORARY TABLE tTicket;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/ticket_getProblems.sql b/db/routines/vn/procedures/ticket_getProblems.sql
index 7c57492b47..521e4cf2f5 100644
--- a/db/routines/vn/procedures/ticket_getProblems.sql
+++ b/db/routines/vn/procedures/ticket_getProblems.sql
@@ -25,6 +25,7 @@ BEGIN
MAX(itemDelay) itemDelay,
MAX(hasRounding) hasRounding,
MAX(itemLost) itemLost,
+ MAX(isVip) isVip,
0 totalProblems
FROM tmp.sale_problems
GROUP BY ticketFk;
@@ -40,7 +41,8 @@ BEGIN
(tp.isTooLittle) +
(tp.itemLost) +
(tp.hasRounding) +
- (tp.itemShortage)
+ (tp.itemShortage) +
+ (tp.isVip)
);
DROP TEMPORARY TABLE tmp.sale_problems;
diff --git a/db/routines/vn/procedures/ticket_setProblem.sql b/db/routines/vn/procedures/ticket_setProblem.sql
new file mode 100644
index 0000000000..bab8f1f52f
--- /dev/null
+++ b/db/routines/vn/procedures/ticket_setProblem.sql
@@ -0,0 +1,19 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setProblem`(
+ vProblemCode VARCHAR(25)
+)
+BEGIN
+/**
+ * Update column ticket.problem with a problem code
+ *
+ * @param vProblemCode Code to set or unset
+ * @table tmp.ticket(ticketFk, hasProblem)
+ */
+ UPDATE ticket t
+ JOIN tmp.ticket tt ON tt.ticketFk = t.id
+ SET t.problem = CONCAT(
+ IF(tt.hasProblem,
+ CONCAT(problem, ',', vProblemCode),
+ REPLACE(problem, vProblemCode , '')));
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/ticket_setProblemFreeze.sql b/db/routines/vn/procedures/ticket_setProblemFreeze.sql
new file mode 100644
index 0000000000..2a5d67b0dc
--- /dev/null
+++ b/db/routines/vn/procedures/ticket_setProblemFreeze.sql
@@ -0,0 +1,29 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setProblemFreeze`(
+ vClientFk INT
+)
+BEGIN
+/**
+ * Update the problem of tickets whose client is frozen or unfrozen
+ *
+ * @param vClientFk Id Cliente, if NULL all clients
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
+ (INDEX(ticketFk))
+ ENGINE = MEMORY
+ SELECT t.id ticketFk, FALSE hasProblem
+ FROM ticket t
+ WHERE t.shipped >= util.midnight()
+ AND (vClientFk IS NULL OR t.clientFk = vClientFk);
+
+ UPDATE tmp.ticket t
+ JOIN ticket ti ON ti.id = t.ticketFk
+ JOIN client c ON c.id = ti.clientFk
+ SET t.hasProblem = TRUE
+ WHERE c.isFreezed;
+
+ CALL ticket_setProblem('isFreezed');
+
+ DROP TEMPORARY TABLE tmp.ticket;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/ticket_setProblemRequest.sql b/db/routines/vn/procedures/ticket_setProblemRequest.sql
new file mode 100644
index 0000000000..a5dc31472d
--- /dev/null
+++ b/db/routines/vn/procedures/ticket_setProblemRequest.sql
@@ -0,0 +1,28 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setProblemRequest`(
+ vSelf INT
+)
+BEGIN
+/**
+ * Update the problems of tickets that have a pending ticketRequest or no longer have it
+ *
+ * @param vSelf Id ticket, if NULL ALL tickets
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
+ (INDEX(ticketFk))
+ ENGINE = MEMORY
+ SELECT t.id ticketFk, FALSE hasProblem
+ FROM ticket t
+ WHERE t.shipped >= util.midnight()
+ AND (vSelf IS NULL OR t.id = vSelf);
+
+ UPDATE tmp.ticket t
+ JOIN ticketRequest tr ON tr.ticketFk = t.ticketFk
+ SET t.hasProblem = TRUE
+ WHERE tr.isOK IS NULL;
+
+ CALL ticket_setProblem('hasTicketRequest');
+
+ DROP TEMPORARY TABLE tmp.ticket;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/ticket_setProblemRisk.sql b/db/routines/vn/procedures/ticket_setProblemRisk.sql
new file mode 100644
index 0000000000..5f73ee838e
--- /dev/null
+++ b/db/routines/vn/procedures/ticket_setProblemRisk.sql
@@ -0,0 +1,33 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setProblemRisk`(
+ vSelf INT
+)
+BEGIN
+/**
+ * Update the risk problem for a specific ticket
+ *
+ * @param vSelf Id ticket
+ */
+ DECLARE vHasRisk BOOL;
+ DECLARE vHasHighRisk BOOL;
+
+ SELECT t.risk > (c.credit + 10), ((t.risk - cc.riskTolerance) > (c.credit + 10))
+ INTO vHasRisk, vHasHighRisk
+ FROM client c
+ JOIN ticket t ON t.clientFk = c.id
+ JOIN clientConfig cc
+ WHERE t.id = vSelf;
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
+ SELECT vSelf ticketFk, vHasRisk hasProblem;
+
+ CALL ticket_setProblem('hasRisk');
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
+ SELECT vSelf ticketFk, vHasHighRisk hasProblem;
+
+ CALL ticket_setProblem('hasHighRisk');
+
+ DROP TEMPORARY TABLE tmp.ticket;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/ticket_setProblemRounding.sql b/db/routines/vn/procedures/ticket_setProblemRounding.sql
new file mode 100644
index 0000000000..81294325ca
--- /dev/null
+++ b/db/routines/vn/procedures/ticket_setProblemRounding.sql
@@ -0,0 +1,34 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setProblemRounding`(
+ vSelf INT
+)
+BEGIN
+/**
+ * Update the rounding problem for the sales lines of a ticket
+ *
+ * @param vSelf Id de ticket
+ */
+ DECLARE vWarehouseFk INT;
+ DECLARE vDated DATE;
+
+ SELECT warehouseFk, shipped
+ INTO vWarehouseFk, vDated
+ FROM ticket
+ WHERE id = vSelf;
+
+ CALL buyUltimate(vWarehouseFk, vDated);
+
+ CREATE OR REPLACE TEMPORARY TABLE tmp.sale
+ SELECT s.id saleFk , MOD(s.quantity, b.`grouping`) hasProblem
+ FROM ticket t
+ JOIN sale s ON s.ticketFk = t.id
+ JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk
+ JOIN buy b ON b.id = bu.buyFk
+ WHERE t.id = vSelf;
+
+ CALL sale_setProblem('hasRounding');
+
+ DROP TEMPORARY TABLE tmp.sale;
+ DROP TEMPORARY TABLE tmp.buyUltimate;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/ticket_setProblemTaxDataChecked.sql b/db/routines/vn/procedures/ticket_setProblemTaxDataChecked.sql
new file mode 100644
index 0000000000..b6c2d85330
--- /dev/null
+++ b/db/routines/vn/procedures/ticket_setProblemTaxDataChecked.sql
@@ -0,0 +1,24 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost`
+ PROCEDURE `vn`.`ticket_setProblemTaxDataChecked`(vClientFk INT)
+BEGIN
+/**
+ * Update the problem of tickets, depending on whether
+ * the client taxDataCheched is verified or not
+ *
+ * @param vClientFk Id cliente, if NULL all clients
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
+ (INDEX(ticketFk))
+ ENGINE = MEMORY
+ SELECT t.id ticketFk, IF(c.isTaxDataChecked, FALSE, TRUE) hasProblem
+ FROM ticket t
+ JOIN client c ON c.id = t.clientFk
+ WHERE t.shipped >= util.midnight()
+ AND (c.id = vClientFk OR vClientFk IS NULL);
+
+ CALL ticket_setProblem('isTaxDataChecked');
+
+ DROP TEMPORARY TABLE tmp.ticket;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/ticket_setProblemTooLittle.sql b/db/routines/vn/procedures/ticket_setProblemTooLittle.sql
new file mode 100644
index 0000000000..98a0787afe
--- /dev/null
+++ b/db/routines/vn/procedures/ticket_setProblemTooLittle.sql
@@ -0,0 +1,20 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setProblemTooLittle`(
+ vSelf INT
+)
+BEGIN
+/**
+ * Update the problems when the ticket is too small or is no longer so
+ *
+ * @param vSelf Id del ticket
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
+ (INDEX(ticketFk))
+ ENGINE = MEMORY
+ SELECT vSelf ticketFk, ticket_isTooLittle(vSelf) hasProblem;
+
+ CALL ticket_setProblem('isTooLittle');
+
+ DROP TEMPORARY TABLE tmp.ticket;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/ticket_setProblemTooLittleItemCost.sql b/db/routines/vn/procedures/ticket_setProblemTooLittleItemCost.sql
new file mode 100644
index 0000000000..4403292fcd
--- /dev/null
+++ b/db/routines/vn/procedures/ticket_setProblemTooLittleItemCost.sql
@@ -0,0 +1,29 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setProblemTooLittleItemCost`(
+ vItemFk INT
+)
+BEGIN
+/**
+ * Update the problems when the ticket is too small or is no longer so,
+ * derived from changes in the itemCost table
+ *
+ * @param vItemFk Id del item, NULL ALL items
+ */
+ CREATE OR REPLACE TEMPORARY TABLE tmp.ticket
+ (INDEX(ticketFk))
+ ENGINE = MEMORY
+ WITH tickets AS(
+ SELECT t.id ticketFk
+ FROM vn.ticket t
+ LEFT JOIN vn.sale s ON s.ticketFk = t.id
+ WHERE t.shipped >= util.midnight()
+ AND (s.itemFk = vItemFk OR vItemFk IS NULL)
+ GROUP BY t.id
+ )SELECT ticketFk, ticket_isTooLittle(ticketFk) hasProblem
+ FROM tickets;
+
+ CALL ticket_setProblem('isTooLittle');
+
+ DROP TEMPORARY TABLE tmp.ticket;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/ticket_setRisk.sql b/db/routines/vn/procedures/ticket_setRisk.sql
new file mode 100644
index 0000000000..f5e6cb5a03
--- /dev/null
+++ b/db/routines/vn/procedures/ticket_setRisk.sql
@@ -0,0 +1,87 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_setRisk`(
+ vClientFk INT)
+BEGIN
+/**
+ * Update the risk for a client with pending tickets
+ *
+ * @param vClientFk Id cliente
+ */
+ DECLARE vHasDebt BOOL;
+
+ SELECT COUNT(*) INTO vHasDebt
+ FROM `client`
+ WHERE id = vClientFk
+ AND typeFk = 'normal';
+
+ IF vHasDebt THEN
+
+ CREATE OR REPLACE TEMPORARY TABLE tTicketRisk
+ (KEY (ticketFk))
+ ENGINE = MEMORY
+ WITH ticket AS(
+ SELECT id ticketFk, companyFk, DATE(shipped) dated
+ FROM vn.ticket t
+ WHERE clientFk = vClientFk
+ AND refFk IS NULL
+ AND NOT isDeleted
+ AND totalWithoutVat <> 0
+ ), dated AS(
+ SELECT t.companyFk, MIN(DATE(t.dated) - INTERVAL cc.riskScope MONTH) started,
+ MAX(DATE(t.dated)) ended
+ FROM ticket t
+ JOIN vn.clientConfig cc
+ GROUP BY t.companyFk
+ ), balance AS(
+ SELECT SUM(amount)amount, companyFk
+ FROM (
+ SELECT amount, companyFk
+ FROM vn.clientRisk
+ WHERE clientFk = vClientFk
+ UNION ALL
+ SELECT -(SUM(amount) / 100) amount, tm.companyFk
+ FROM hedera.tpvTransaction t
+ JOIN hedera.tpvMerchant tm ON t.id = t.merchantFk
+ WHERE clientFk = vClientFk
+ AND receiptFk IS NULL
+ AND status = 'ok'
+ ) sub
+ WHERE companyFk
+ GROUP BY companyFk
+ ), uninvoiced AS(
+ SELECT t.companyFk, DATE(t.shipped) dated, SUM(IFNULL(t.totalWithVat, 0)) amount
+ FROM vn.ticket t
+ JOIN dated d
+ WHERE t.clientFk = vClientFk
+ AND t.refFk IS NULL
+ AND t.shipped BETWEEN d.started AND d.ended
+ GROUP BY t.companyFk, DATE(t.shipped)
+ ), receipt AS(
+ SELECT companyFk,DATE(payed) dated, SUM(amountPaid) amount
+ FROM vn.receipt
+ WHERE clientFk = vClientFk
+ AND payed > util.VN_CURDATE()
+ GROUP BY companyFk, DATE(payed)
+ ), risk AS(
+ SELECT b.companyFk,
+ ui.dated,
+ SUM(ui.amount) OVER (PARTITION BY b.companyFk ORDER BY ui.dated ) +
+ b.amount +
+ SUM(IFNULL(r.amount, 0)) amount
+ FROM balance b
+ JOIN uninvoiced ui ON ui.companyFk = b.companyFk
+ LEFT JOIN receipt r ON r.dated > ui.dated AND r.companyFk = ui.companyFk
+ GROUP BY b.companyFk, ui.dated
+ )
+ SELECT ti.ticketFk, r.amount
+ FROM ticket ti
+ JOIN risk r ON r.dated = ti.dated AND r.companyFk = ti.companyFk;
+
+ UPDATE ticket t
+ JOIN tTicketRisk tr ON tr.ticketFk = t.id
+ SET t.risk = tr.amount;
+
+ DROP TEMPORARY TABLE tTicketRisk;
+ END IF;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/travel_throwAwb.sql b/db/routines/vn/procedures/travel_throwAwb.sql
new file mode 100644
index 0000000000..1b54f85327
--- /dev/null
+++ b/db/routines/vn/procedures/travel_throwAwb.sql
@@ -0,0 +1,14 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_throwAwb`(vSelf INT)
+BEGIN
+/**
+ * Throws an error if travel does not have a logical AWB
+ * or there are several AWBs associated with the same DUA
+ *
+ * @param vSelf The travel id
+ */
+ IF NOT travel_hasUniqueAwb(vSelf) THEN
+ CALL util.throw('A different AWB is found in the entries');
+ END IF;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/workerDisable.sql b/db/routines/vn/procedures/workerDisable.sql
index 4b10cb7fa2..04612a6dc5 100644
--- a/db/routines/vn/procedures/workerDisable.sql
+++ b/db/routines/vn/procedures/workerDisable.sql
@@ -28,5 +28,9 @@ mainLabel:BEGIN
UPDATE `client` c
SET c.salesPersonFk = null
WHERE c.salesPersonFk = vUserId;
+
+ UPDATE locker l
+ SET l.workerFk = NULL
+ WHERE l.workerFk = vUserId;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/worker_checkMultipleDevice.sql b/db/routines/vn/procedures/worker_checkMultipleDevice.sql
new file mode 100644
index 0000000000..00df08d49a
--- /dev/null
+++ b/db/routines/vn/procedures/worker_checkMultipleDevice.sql
@@ -0,0 +1,24 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`worker_checkMultipleDevice`(
+ vSelf INT
+)
+BEGIN
+/**
+ * Verify if a worker has multiple assigned devices,
+ * except for freelancers.
+ *
+ * @param vUserFk worker id.
+ */
+ DECLARE vHasPda BOOLEAN;
+ DECLARE vIsFreelance BOOLEAN;
+ DECLARE vMaxDevicesPerUser INT;
+
+ SELECT COUNT(*) INTO vHasPda FROM deviceProductionUser WHERE userFk = vSelf;
+ SELECT IFNULL(isFreelance, FALSE) INTO vIsFreelance FROM worker WHERE id = vSelf;
+ SELECT IFNULL(maxDevicesPerUser, FALSE) INTO vMaxDevicesPerUser FROM deviceProductionConfig LIMIT 1;
+
+ IF NOT vIsFreelance AND vHasPda > vMaxDevicesPerUser THEN
+ CALL util.throw('You can only have one PDA');
+ END IF;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/procedures/worker_updateBalance.sql b/db/routines/vn/procedures/worker_updateBalance.sql
index c1fd0adf7f..17c2fbbe17 100644
--- a/db/routines/vn/procedures/worker_updateBalance.sql
+++ b/db/routines/vn/procedures/worker_updateBalance.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`worker_updateBalance`(vSelfFk INT(11), vCredit DECIMAL(10,2), vDebit DECIMAL(10,2))
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`worker_updateBalance`(vSelf INT(11), vCredit DECIMAL(10,2), vDebit DECIMAL(10,2))
BEGIN
/**
* Actualiza la columna balance de worker.
@@ -8,6 +8,6 @@ BEGIN
*/
UPDATE worker
SET balance = IFNULL(balance, 0) + IFNULL(vCredit, 0) - IFNULL(vDebit, 0)
- WHERE id = vSelfFk;
+ WHERE id = vSelf;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/xdiario_new.sql b/db/routines/vn/procedures/xdiario_new.sql
new file mode 100644
index 0000000000..83e1afa164
--- /dev/null
+++ b/db/routines/vn/procedures/xdiario_new.sql
@@ -0,0 +1,64 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`xdiario_new`(
+ vBookNumber INT,
+ vDated DATE,
+ vSubaccount VARCHAR(12),
+ vAccount VARCHAR(12),
+ vConcept VARCHAR(25),
+ vDebit DOUBLE,
+ vCredit DOUBLE,
+ vEuro DOUBLE,
+ vSerie CHAR(1),
+ vInvoice VARCHAR(8),
+ vVat DOUBLE,
+ vRe DOUBLE,
+ vAux TINYINT,
+ vCompanyFk INT,
+ OUT vNewBookNumber INT
+)
+/**
+ * Este procedimiento se encarga de la inserción de registros en la tabla XDiario.
+ * Si el número de asiento (vBookNumber) no está definido, se genera uno nuevo utilizando
+ * vn.ledger_next.
+ *
+ * @param vBookNumber Número de asiento. Si es NULL, se generará uno nuevo.
+ * @param vDated Fecha utilizada para generar un nuevo número de libro si vBookNumber es NULL.
+ * @param vSubaccount Subcuenta para la transacción.
+ * @param vAccount Cuenta para la transacción.
+ * @param vConcept Concepto de la transacción.
+ * @param vDebit Monto del débito para la transacción.
+ * @param vCredit Monto del crédito para la transacción.
+ * @param vEuro Monto en euros para la transacción.
+ * @param vSerie Serie para la transacción.
+ * @param vInvoice Número de factura para la transacción.
+ * @param vVat Monto del IVA para la transacción.
+ * @param vRe Monto del RE para la transacción.
+ * @param vAux Variable auxiliar para la transacción.
+ * @param vCompanyFk Clave foránea de la compañía para la transacción.
+ * @return No retorna un valor, pero realiza una inserción en la tabla XDiario.
+ */
+BEGIN
+ IF vBookNumber IS NULL THEN
+ CALL ledger_next(YEAR(vDated), FALSE, vBookNumber);
+ END IF;
+
+ INSERT INTO XDiario
+ SET ASIEN = vBookNumber,
+ FECHA = vDated,
+ SUBCTA = vSubaccount,
+ CONTRA = vAccount,
+ CONCEPTO = vConcept,
+ EURODEBE = vDebit,
+ EUROHABER = vCredit,
+ BASEEURO = vEuro,
+ SERIE = vSerie,
+ FACTURA = vInvoice,
+ IVA = vVat,
+ RECEQUIV = vRe,
+ AUXILIAR = IF(vAux = FALSE, NULL, '*'),
+ MONEDAUSO = 2,
+ empresa_id = vCompanyFk;
+
+ SET vNewBookNumber = vBookNumber;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/triggers/client_afterUpdate.sql b/db/routines/vn/triggers/client_afterUpdate.sql
index 8bca36d63b..e316fb08a9 100644
--- a/db/routines/vn/triggers/client_afterUpdate.sql
+++ b/db/routines/vn/triggers/client_afterUpdate.sql
@@ -10,11 +10,5 @@ BEGIN
UPDATE `address` SET isDefaultAddress = TRUE
WHERE id = NEW.defaultAddressFk;
END IF;
-
- IF NOT NEW.isActive THEN
- UPDATE account.`user`
- SET active = FALSE
- WHERE id = NEW.id;
- END IF;
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/country_afterInsert.sql b/db/routines/vn/triggers/country_afterInsert.sql
index 0a7e5dc00d..69294a9d5e 100644
--- a/db/routines/vn/triggers/country_afterInsert.sql
+++ b/db/routines/vn/triggers/country_afterInsert.sql
@@ -5,14 +5,17 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`country_afterInsert`
BEGIN
UPDATE sage.Naciones
SET countryFk = NEW.id
- WHERE Nacion = NEW.country;
+ WHERE Nacion = NEW.name;
IF ROW_COUNT() = 0 THEN
CALL mail_insert(
'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 \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)
+ 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.name,
+ ' en la tabla sage.Naciones y actualizar el campo sage.Naciones.countryFk con el valor ', NEW.id)
);
END IF;
END$$
diff --git a/db/routines/vn/triggers/country_afterUpdate.sql b/db/routines/vn/triggers/country_afterUpdate.sql
index 6afa2fd486..a389947354 100644
--- a/db/routines/vn/triggers/country_afterUpdate.sql
+++ b/db/routines/vn/triggers/country_afterUpdate.sql
@@ -3,8 +3,8 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`country_afterUpdate`
AFTER UPDATE ON `country`
FOR EACH ROW
BEGIN
- IF !(OLD.country <=> NEW.country) THEN
- UPDATE zoneGeo SET `name` = NEW.country
+ IF !(OLD.name <=> NEW.name) THEN
+ UPDATE zoneGeo SET `name` = NEW.name
WHERE id = NEW.geoFk;
END IF;
END$$
diff --git a/db/routines/vn/triggers/country_beforeInsert.sql b/db/routines/vn/triggers/country_beforeInsert.sql
index 26e0235ce6..5ba5b832d0 100644
--- a/db/routines/vn/triggers/country_beforeInsert.sql
+++ b/db/routines/vn/triggers/country_beforeInsert.sql
@@ -3,6 +3,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`country_beforeInsert`
BEFORE INSERT ON `country`
FOR EACH ROW
BEGIN
- SET NEW.geoFk = zoneGeo_new('country', NEW.country, NULL);
+ SET NEW.geoFk = zoneGeo_new('country', NEW.name, NULL);
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/deviceProductionUser_afterInsert.sql b/db/routines/vn/triggers/deviceProductionUser_afterInsert.sql
new file mode 100644
index 0000000000..3c8a9a51db
--- /dev/null
+++ b/db/routines/vn/triggers/deviceProductionUser_afterInsert.sql
@@ -0,0 +1,8 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`deviceProductionUser_afterInsert`
+ AFTER INSERT ON `deviceProductionUser`
+ FOR EACH ROW
+BEGIN
+ CALL worker_checkMultipleDevice(NEW.userFk);
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/triggers/deviceProductionUser_beforeUpdate.sql b/db/routines/vn/triggers/deviceProductionUser_beforeUpdate.sql
index 055f817909..7318bd99bd 100644
--- a/db/routines/vn/triggers/deviceProductionUser_beforeUpdate.sql
+++ b/db/routines/vn/triggers/deviceProductionUser_beforeUpdate.sql
@@ -3,6 +3,8 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`deviceProductionUser_
BEFORE UPDATE ON `deviceProductionUser`
FOR EACH ROW
BEGIN
+
+ CALL worker_checkMultipleDevice(NEW.userFk);
SET NEW.editorFk = account.myUser_getId();
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/entry_beforeInsert.sql b/db/routines/vn/triggers/entry_beforeInsert.sql
index c0c0aa28cc..17831f1b85 100644
--- a/db/routines/vn/triggers/entry_beforeInsert.sql
+++ b/db/routines/vn/triggers/entry_beforeInsert.sql
@@ -7,8 +7,8 @@ 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);
- IF NEW.travelFk IS NOT NULL AND NOT travel_hasUniqueAwb(NEW.travelFk) THEN
- CALL util.throw('The travel is incorrect, there is a different AWB in the associated entries');
+ IF NEW.travelFk IS NOT NULL THEN
+ CALL travel_throwAwb(NEW.travelFk);
END IF;
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/entry_beforeUpdate.sql b/db/routines/vn/triggers/entry_beforeUpdate.sql
index d56db5e01d..e99eb087d7 100644
--- a/db/routines/vn/triggers/entry_beforeUpdate.sql
+++ b/db/routines/vn/triggers/entry_beforeUpdate.sql
@@ -25,8 +25,8 @@ BEGIN
IF NOT (NEW.travelFk <=> OLD.travelFk) THEN
- IF NEW.travelFk IS NOT NULL AND NOT travel_hasUniqueAwb(NEW.travelFk) THEN
- CALL util.throw('The travel is incorrect, there is a different AWB in the associated entries');
+ IF NEW.travelFk IS NOT NULL THEN
+ CALL travel_throwAwb(NEW.travelFk);
END IF;
SELECT COUNT(*) > 0 INTO vIsVirtual
diff --git a/db/routines/vn/triggers/invoiceInCorrection_beforeDelete.sql b/db/routines/vn/triggers/invoiceInCorrection_beforeDelete.sql
deleted file mode 100644
index f4df48dcd7..0000000000
--- a/db/routines/vn/triggers/invoiceInCorrection_beforeDelete.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInCorrection_beforeDelete`
- BEFORE DELETE ON `invoiceInCorrection`
- FOR EACH ROW
-BEGIN
- CALL invoiceIn_checkBooked(OLD.correctingFk);
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/triggers/invoiceInCorrection_beforeInsert.sql b/db/routines/vn/triggers/invoiceInCorrection_beforeInsert.sql
deleted file mode 100644
index aec58a2653..0000000000
--- a/db/routines/vn/triggers/invoiceInCorrection_beforeInsert.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInCorrection_beforeInsert`
- BEFORE INSERT ON `invoiceInCorrection`
- FOR EACH ROW
-BEGIN
- CALL invoiceIn_checkBooked(NEW.correctingFk);
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/triggers/invoiceInCorrection_beforeUpdate.sql b/db/routines/vn/triggers/invoiceInCorrection_beforeUpdate.sql
deleted file mode 100644
index bd324863b1..0000000000
--- a/db/routines/vn/triggers/invoiceInCorrection_beforeUpdate.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInCorrection_beforeUpdate`
- BEFORE UPDATE ON `invoiceInCorrection`
- FOR EACH ROW
-BEGIN
- CALL invoiceIn_checkBooked(OLD.correctingFk);
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/triggers/invoiceInDueDay_beforeDelete.sql b/db/routines/vn/triggers/invoiceInDueDay_beforeDelete.sql
deleted file mode 100644
index 10c9d0b523..0000000000
--- a/db/routines/vn/triggers/invoiceInDueDay_beforeDelete.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInDueDay_beforeDelete`
- BEFORE DELETE ON `invoiceInDueDay`
- FOR EACH ROW
-BEGIN
- CALL invoiceIn_checkBooked(OLD.invoiceInFk);
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/triggers/invoiceInDueDay_beforeInsert.sql b/db/routines/vn/triggers/invoiceInDueDay_beforeInsert.sql
index 95b2276161..f7e4265a7b 100644
--- a/db/routines/vn/triggers/invoiceInDueDay_beforeInsert.sql
+++ b/db/routines/vn/triggers/invoiceInDueDay_beforeInsert.sql
@@ -5,8 +5,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInDueDay_befor
BEGIN
DECLARE vIsNotified BOOLEAN;
- CALL invoiceIn_checkBooked(NEW.invoiceInFk);
-
SET NEW.editorFk = account.myUser_getId();
SELECT isNotified INTO vIsNotified
diff --git a/db/routines/vn/triggers/invoiceInDueDay_beforeUpdate.sql b/db/routines/vn/triggers/invoiceInDueDay_beforeUpdate.sql
index 5d58ef28b9..2452ff0d1a 100644
--- a/db/routines/vn/triggers/invoiceInDueDay_beforeUpdate.sql
+++ b/db/routines/vn/triggers/invoiceInDueDay_beforeUpdate.sql
@@ -5,7 +5,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInDueDay_befor
BEGIN
DECLARE vIsNotified BOOLEAN;
- CALL invoiceIn_checkBooked(OLD.invoiceInFk);
SET NEW.editorFk = account.myUser_getId();
SELECT isNotified INTO vIsNotified
diff --git a/db/routines/vn/triggers/invoiceInIntrastat_beforeDelete.sql b/db/routines/vn/triggers/invoiceInIntrastat_beforeDelete.sql
deleted file mode 100644
index 412b091f4b..0000000000
--- a/db/routines/vn/triggers/invoiceInIntrastat_beforeDelete.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInIntrastat_beforeDelete`
- BEFORE DELETE ON `invoiceInIntrastat`
- FOR EACH ROW
-BEGIN
- CALL invoiceIn_checkBooked(OLD.invoiceInFk);
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/triggers/invoiceInIntrastat_beforeInsert.sql b/db/routines/vn/triggers/invoiceInIntrastat_beforeInsert.sql
deleted file mode 100644
index d6c25c5058..0000000000
--- a/db/routines/vn/triggers/invoiceInIntrastat_beforeInsert.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInIntrastat_beforeInsert`
- BEFORE INSERT ON `invoiceInIntrastat`
- FOR EACH ROW
-BEGIN
- CALL invoiceIn_checkBooked(NEW.invoiceInFk);
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/triggers/invoiceInIntrastat_beforeUpdate.sql b/db/routines/vn/triggers/invoiceInIntrastat_beforeUpdate.sql
deleted file mode 100644
index 649c9ef30a..0000000000
--- a/db/routines/vn/triggers/invoiceInIntrastat_beforeUpdate.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInIntrastat_beforeUpdate`
- BEFORE UPDATE ON `invoiceInIntrastat`
- FOR EACH ROW
-BEGIN
- CALL invoiceIn_checkBooked(OLD.invoiceInFk);
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/triggers/invoiceInTax_beforeDelete.sql b/db/routines/vn/triggers/invoiceInTax_beforeDelete.sql
deleted file mode 100644
index a43f602b47..0000000000
--- a/db/routines/vn/triggers/invoiceInTax_beforeDelete.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInTax_beforeDelete`
- BEFORE DELETE ON `invoiceInTax`
- FOR EACH ROW
-BEGIN
- CALL invoiceIn_checkBooked(OLD.invoiceInFk);
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/triggers/invoiceInTax_beforeUpdate.sql b/db/routines/vn/triggers/invoiceInTax_beforeUpdate.sql
index 3e5ecf0306..30918b7c59 100644
--- a/db/routines/vn/triggers/invoiceInTax_beforeUpdate.sql
+++ b/db/routines/vn/triggers/invoiceInTax_beforeUpdate.sql
@@ -3,8 +3,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceInTax_beforeUp
BEFORE UPDATE ON `invoiceInTax`
FOR EACH ROW
BEGIN
- CALL invoiceIn_checkBooked(OLD.invoiceInFk);
-
IF NOT (NEW.invoiceInFk <=> OLD.invoiceInFk) THEN
CALL invoiceInTax_afterUpsert(NEW.invoiceInFk);
END IF;
diff --git a/db/routines/vn/triggers/invoiceIn_beforeUpdate.sql b/db/routines/vn/triggers/invoiceIn_beforeUpdate.sql
index d0762de968..4503c7dbdd 100644
--- a/db/routines/vn/triggers/invoiceIn_beforeUpdate.sql
+++ b/db/routines/vn/triggers/invoiceIn_beforeUpdate.sql
@@ -5,10 +5,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceIn_beforeUpdat
BEGIN
DECLARE vWithholdingSageFk INT;
- IF NEW.isBooked = OLD.isBooked THEN
- CALL invoiceIn_checkBooked(OLD.id);
- END IF;
-
IF NOT (NEW.supplierRef <=> OLD.supplierRef) AND NOT util.checkPrintableChars(NEW.supplierRef) THEN
CALL util.throw('The invoiceIn reference contains invalid characters');
END IF;
diff --git a/db/routines/vn/triggers/payment_beforeInsert.sql b/db/routines/vn/triggers/payment_beforeInsert.sql
index 1b343712fe..337a54172f 100644
--- a/db/routines/vn/triggers/payment_beforeInsert.sql
+++ b/db/routines/vn/triggers/payment_beforeInsert.sql
@@ -3,92 +3,92 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`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;
+ DECLARE vBankAccount DOUBLE;
+ DECLARE vSupplierAccount DOUBLE;
+ DECLARE vNewBookEntry INT;
+ DECLARE vIsCash BOOLEAN;
+ DECLARE vIsSupplierActive 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 accounting a
- JOIN accountingType at2 ON at2.id = a.accountingTypeFk
- WHERE a.id = NEW.bankFk;
+ SELECT (at2.code = 'cash') INTO vIsCash
+ FROM accounting a
+ JOIN accountingType at2 ON at2.id = a.accountingTypeFk
+ WHERE a.id = NEW.bankFk;
- IF bolCASH THEN
-
- SELECT account INTO cuenta_banco
- FROM accounting
- WHERE id = NEW.bankFk;
-
- SELECT account INTO cuenta_proveedor
- FROM supplier
- WHERE id = NEW.supplierFk;
+ IF vIsCash THEN
+ SELECT account INTO vBankAccount
+ FROM accounting
+ WHERE id = NEW.bankFk;
- CALL 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;
-
- 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
- WHERE s.id = NEW.supplierFk;
- END IF;
- END IF;
-
- SET NEW.dueDated = IFNULL(NEW.dueDated, NEW.received);
-
- SELECT isActive INTO isSupplierActive
+ SELECT account INTO vSupplierAccount
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$$
+
+ CALL ledger_next(YEAR(NEW.received), TRUE, 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 vBankAccount SUBCTA,
+ vSupplierAccount CONTRA,
+ 0 EURODEBE,
+ NEW.amount + NEW.bankingFees EUROHABER
+ UNION ALL
+ SELECT vSupplierAccount SUBCTA,
+ vBankAccount 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)),
+ vBankAccount,
+ 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;
+
+ SET NEW.dueDated = IFNULL(NEW.dueDated, NEW.received);
+
+ SELECT isActive INTO vIsSupplierActive
+ FROM supplier
+ WHERE id = NEW.supplierFk;
+
+ IF vIsSupplierActive = FALSE THEN
+ CALL util.throw('SUPPLIER_INACTIVE');
+ END IF;
+
+ IF ISNULL(NEW.workerFk) THEN
+ SET NEW.workerFk = account.myUser_getId();
+ END IF;
+END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/ticketRefund_beforeInsert.sql b/db/routines/vn/triggers/ticketRefund_beforeInsert.sql
index 7893f6c510..ff8ce634a7 100644
--- a/db/routines/vn/triggers/ticketRefund_beforeInsert.sql
+++ b/db/routines/vn/triggers/ticketRefund_beforeInsert.sql
@@ -4,6 +4,5 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketRefund_beforeIn
FOR EACH ROW
BEGIN
SET NEW.editorFk = account.myUser_getId();
- CALL ticketRefund_beforeUpsert(NEW.refundTicketFk, NEW.originalTicketFk);
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/ticketRefund_beforeUpdate.sql b/db/routines/vn/triggers/ticketRefund_beforeUpdate.sql
index 51c7db8f21..d809b5d99f 100644
--- a/db/routines/vn/triggers/ticketRefund_beforeUpdate.sql
+++ b/db/routines/vn/triggers/ticketRefund_beforeUpdate.sql
@@ -4,6 +4,5 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketRefund_beforeUp
FOR EACH ROW
BEGIN
SET NEW.editorFk = account.myUser_getId();
- CALL ticketRefund_beforeUpsert(NEW.refundTicketFk, NEW.originalTicketFk);
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/ticketTracking_afterDelete.sql b/db/routines/vn/triggers/ticketTracking_afterDelete.sql
index 2f1bbbcee3..2683e8d3ca 100644
--- a/db/routines/vn/triggers/ticketTracking_afterDelete.sql
+++ b/db/routines/vn/triggers/ticketTracking_afterDelete.sql
@@ -18,11 +18,6 @@ BEGIN
`changedModel` = 'TicketTracking',
`changedModelId` = OLD.id,
`userFk` = account.myUser_getId();
-
- CALL util.debugAdd('deletedState',
- CONCAT('interFk: ', OLD.id,
- ' ticketFk: ', OLD.ticketFk,
- ' stateFk: ', OLD.stateFk));
SELECT i.ticketFk, i.id, s.`name`
INTO vTicketFk, vTicketTrackingFk, vStateName
diff --git a/db/routines/vn/triggers/ticket_afterUpdate.sql b/db/routines/vn/triggers/ticket_afterUpdate.sql
index f1ad394ef2..0ce13e0a5a 100644
--- a/db/routines/vn/triggers/ticket_afterUpdate.sql
+++ b/db/routines/vn/triggers/ticket_afterUpdate.sql
@@ -7,6 +7,8 @@ BEGIN
UPDATE expedition
SET hasNewRoute = TRUE
WHERE ticketFk = NEW.id;
+
+ CALL ticket_doCmr(NEW.id);
END IF;
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/travel_beforeInsert.sql b/db/routines/vn/triggers/travel_beforeInsert.sql
index 817bd69bb1..e54a5d08b8 100644
--- a/db/routines/vn/triggers/travel_beforeInsert.sql
+++ b/db/routines/vn/triggers/travel_beforeInsert.sql
@@ -9,8 +9,8 @@ BEGIN
CALL travel_checkWarehouseIsFeedStock(NEW.warehouseInFk);
- IF NEW.awbFk IS NOT NULL AND NOT travel_hasUniqueAwb(NEW.id) THEN
- CALL util.throw('The AWB is incorrect, there is a different AWB in the associated entries');
+ IF NEW.awbFk IS NOT NULL THEN
+ CALL travel_throwAwb(NEW.id);
END IF;
END$$
DELIMITER ;
diff --git a/db/routines/vn/triggers/travel_beforeUpdate.sql b/db/routines/vn/triggers/travel_beforeUpdate.sql
index 5e43c87619..5e64ad5b35 100644
--- a/db/routines/vn/triggers/travel_beforeUpdate.sql
+++ b/db/routines/vn/triggers/travel_beforeUpdate.sql
@@ -33,8 +33,8 @@ BEGIN
END IF;
END IF;
- IF (NOT(NEW.awbFk <=> OLD.awbFk)) AND NEW.awbFk IS NOT NULL AND NOT travel_hasUniqueAwb(NEW.id) THEN
- CALL util.throw('The AWB is incorrect, there is a different AWB in the associated entries');
+ IF (NOT(NEW.awbFk <=> OLD.awbFk)) AND NEW.awbFk IS NOT NULL THEN
+ CALL travel_throwAwb(NEW.id);
END IF;
END$$
DELIMITER ;
diff --git a/db/routines/vn/views/exchangeReportSource.sql b/db/routines/vn/views/exchangeReportSource.sql
deleted file mode 100644
index 6a2b9bb7e7..0000000000
--- a/db/routines/vn/views/exchangeReportSource.sql
+++ /dev/null
@@ -1,22 +0,0 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
- SQL SECURITY DEFINER
- VIEW `vn`.`exchangeReportSource`
-AS SELECT `e`.`dated` AS `dated`,
- cast(sum(`e`.`amountIn`) AS decimal(10, 2)) AS `amountIn`,
- cast(sum(`e`.`rateIn`) AS decimal(10, 4)) AS `rateIn`,
- cast(sum(`e`.`amountOut`) AS decimal(10, 2)) AS `amountOut`,
- cast(sum(`e`.`rateOut`) AS decimal(10, 4)) AS `rateOut`,
- cast(sum(`e`.`amountEntry`) AS decimal(10, 2)) AS `amountEntry`,
- cast(sum(`e`.`rateEntry`) AS decimal(10, 4)) AS `rateEntry`,
- cast(
- IFNULL(`rr`.`value`, `rrc`.`simulatedValue`) AS decimal(10, 4)
- ) AS `rateECB`
-FROM (
- (
- `vn`.`exchangeReportSourcePrevious` `e`
- LEFT JOIN `vn`.`referenceRate` `rr` ON(`rr`.`dated` = `e`.`dated`)
- )
- JOIN `vn`.`referenceRateConfig` `rrc` ON(1)
- )
-GROUP BY `e`.`dated`
-ORDER BY `e`.`dated`
diff --git a/db/routines/vn/views/exchangeReportSourcePrevious.sql b/db/routines/vn/views/exchangeReportSourcePrevious.sql
deleted file mode 100644
index b9e8ba8c1a..0000000000
--- a/db/routines/vn/views/exchangeReportSourcePrevious.sql
+++ /dev/null
@@ -1,29 +0,0 @@
-CREATE OR REPLACE DEFINER=`root`@`localhost`
- SQL SECURITY DEFINER
- VIEW `vn`.`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`
diff --git a/db/routines/vn/views/expeditionCommon.sql b/db/routines/vn/views/expeditionCommon.sql
index f03966c050..d1ce808805 100644
--- a/db/routines/vn/views/expeditionCommon.sql
+++ b/db/routines/vn/views/expeditionCommon.sql
@@ -1,9 +1,9 @@
CREATE OR REPLACE DEFINER=`root`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`expeditionCommon`
-AS SELECT `et`.`id` AS `truckFk`,
- `et`.`eta` AS `eta`,
- IFNULL(ucase(`et`.`description`), 'SIN ESCANEAR') AS `description`,
+AS SELECT `rs`.`id` AS `truckFk`,
+ `rs`.`eta` AS `eta`,
+ IFNULL(ucase(`rs`.`description`), 'SIN ESCANEAR') AS `description`,
`es`.`palletFk` AS `palletFk`,
`t`.`routeFk` AS `routeFk`,
`es`.`id` AS `scanFk`,
@@ -17,8 +17,8 @@ FROM (
(
(
(
- `vn`.`expeditionTruck` `et`
- LEFT JOIN `vn`.`routesMonitor` `r` ON(`et`.`id` = `r`.`expeditionTruckFk`)
+ `vn`.`roadmapStop` `rs`
+ LEFT JOIN `vn`.`routesMonitor` `r` ON(`rs`.`id` = `r`.`expeditionTruckFk`)
)
LEFT JOIN `vn`.`ticket` `t` ON(`r`.`routeFk` = `t`.`routeFk`)
)
@@ -28,4 +28,4 @@ FROM (
)
LEFT JOIN `vn`.`expeditionPallet` `ep` ON(`es`.`palletFk` = `ep`.`id`)
)
-WHERE `et`.`eta` >= `util`.`VN_CURDATE`()
+WHERE `rs`.`eta` >= `util`.`VN_CURDATE`()
diff --git a/db/routines/vn/views/expeditionPallet_Print.sql b/db/routines/vn/views/expeditionPallet_Print.sql
index 07627e8177..c0b8208c36 100644
--- a/db/routines/vn/views/expeditionPallet_Print.sql
+++ b/db/routines/vn/views/expeditionPallet_Print.sql
@@ -1,12 +1,12 @@
CREATE OR REPLACE DEFINER=`root`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`expeditionPallet_Print`
-AS SELECT `et2`.`description` AS `truck`,
+AS SELECT `rs2`.`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`,
+ `rs`.`id` <=> `rm`.`expeditionTruckFk` AS `isMatch`,
`t`.`warehouseFk` AS `warehouseFk`,
IF(
`r`.`created` > `util`.`VN_CURDATE`() + INTERVAL 1 DAY,
@@ -20,8 +20,8 @@ FROM (
(
(
(
- `vn`.`expeditionTruck` `et`
- JOIN `vn`.`expeditionPallet` `ep` ON(`ep`.`truckFk` = `et`.`id`)
+ `vn`.`roadmapStop` `rs`
+ JOIN `vn`.`expeditionPallet` `ep` ON(`ep`.`truckFk` = `rs`.`id`)
)
JOIN `vn`.`expeditionScan` `es` ON(`es`.`palletFk` = `ep`.`id`)
)
@@ -33,7 +33,7 @@ FROM (
)
LEFT JOIN `vn`.`routesMonitor` `rm` ON(`rm`.`routeFk` = `r`.`id`)
)
- LEFT JOIN `vn`.`expeditionTruck` `et2` ON(`et2`.`id` = `rm`.`expeditionTruckFk`)
+ LEFT JOIN `vn`.`roadmapStop` `rs2` ON(`rs2`.`id` = `rm`.`expeditionTruckFk`)
)
GROUP BY `ep`.`id`,
`t`.`routeFk`
diff --git a/db/routines/vn/views/expeditionRoute_Monitor.sql b/db/routines/vn/views/expeditionRoute_Monitor.sql
index 774f21433a..cc1f168943 100644
--- a/db/routines/vn/views/expeditionRoute_Monitor.sql
+++ b/db/routines/vn/views/expeditionRoute_Monitor.sql
@@ -15,7 +15,7 @@ FROM (
`vn`.`route` `r`
LEFT JOIN `vn`.`routesMonitor` `rm` ON(`r`.`id` = `rm`.`routeFk`)
)
- LEFT JOIN `vn`.`expeditionTruck` `et` ON(`et`.`id` = `rm`.`expeditionTruckFk`)
+ LEFT JOIN `vn`.`roadmapStop` `rs` ON(`rs`.`id` = `rm`.`expeditionTruckFk`)
)
JOIN `vn`.`ticket` `t` ON(`t`.`routeFk` = `r`.`id`)
)
diff --git a/db/routines/vn/views/expeditionScan_Monitor.sql b/db/routines/vn/views/expeditionScan_Monitor.sql
index 7566a0bfdf..94bda18631 100644
--- a/db/routines/vn/views/expeditionScan_Monitor.sql
+++ b/db/routines/vn/views/expeditionScan_Monitor.sql
@@ -1,9 +1,9 @@
CREATE OR REPLACE DEFINER=`root`@`localhost`
SQL SECURITY DEFINER
VIEW `vn`.`expeditionScan_Monitor`
-AS SELECT `et`.`id` AS `truckFk`,
- `et`.`eta` AS `ETD`,
- `et`.`description` AS `description`,
+AS SELECT `rs`.`id` AS `truckFk`,
+ `rs`.`eta` AS `ETD`,
+ `rs`.`description` AS `description`,
`ep`.`id` AS `palletFk`,
`ep`.`position` AS `position`,
`ep`.`built` AS `built`,
@@ -12,8 +12,8 @@ AS SELECT `et`.`id` AS `truckFk`,
`es`.`scanned` AS `scanned`
FROM (
(
- `vn`.`expeditionTruck` `et`
- LEFT JOIN `vn`.`expeditionPallet` `ep` ON(`ep`.`truckFk` = `et`.`id`)
+ `vn`.`roadmapStop` `rs`
+ LEFT JOIN `vn`.`expeditionPallet` `ep` ON(`ep`.`truckFk` = `rs`.`id`)
)
LEFT JOIN `vn`.`expeditionScan` `es` ON(`es`.`palletFk` = `ep`.`id`)
)
diff --git a/db/routines/vn/views/expeditionSticker.sql b/db/routines/vn/views/expeditionSticker.sql
index 2b6bf18d2d..05fbc42a15 100644
--- a/db/routines/vn/views/expeditionSticker.sql
+++ b/db/routines/vn/views/expeditionSticker.sql
@@ -14,7 +14,7 @@ AS SELECT `e`.`id` AS `expeditionFk`,
IF(
`t`.`routeFk`,
IFNULL(
- `et`.`description`,
+ `rs`.`description`,
REPLACE(`am`.`name`, 'ZONA ', 'Z')
),
`z`.`name`
@@ -45,7 +45,7 @@ FROM (
)
LEFT JOIN `vn`.`routesMonitor` `rm` ON(`rm`.`routeFk` = `t`.`routeFk`)
)
- LEFT JOIN `vn`.`expeditionTruck` `et` ON(`et`.`id` = `rm`.`expeditionTruckFk`)
+ LEFT JOIN `vn`.`roadmapStop` `rs` ON(`rs`.`id` = `rm`.`expeditionTruckFk`)
)
LEFT JOIN `vn`.`beach` `b` ON(`b`.`code` = `rm`.`beachFk`)
)
diff --git a/db/routines/vn/views/expeditionTicket_NoBoxes.sql b/db/routines/vn/views/expeditionTicket_NoBoxes.sql
index 080edd3ac4..8acbe17fef 100644
--- a/db/routines/vn/views/expeditionTicket_NoBoxes.sql
+++ b/db/routines/vn/views/expeditionTicket_NoBoxes.sql
@@ -4,7 +4,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost`
AS SELECT `t`.`id` AS `ticketFk`,
`t`.`warehouseFk` AS `warehouseFk`,
`t`.`routeFk` AS `routeFk`,
- `et`.`description` AS `description`
+ `rs`.`description` AS `description`
FROM (
(
(
@@ -13,7 +13,7 @@ FROM (
)
JOIN `vn`.`routesMonitor` `rm` ON(`rm`.`routeFk` = `t`.`routeFk`)
)
- JOIN `vn`.`expeditionTruck` `et` ON(`et`.`id` = `rm`.`expeditionTruckFk`)
+ JOIN `vn`.`roadmapStop` `rs` ON(`rs`.`id` = `rm`.`expeditionTruckFk`)
)
WHERE `e`.`id` IS NULL
- AND `et`.`eta` > `util`.`VN_CURDATE`()
+ AND `rs`.`eta` > `util`.`VN_CURDATE`()
diff --git a/db/routines/vn/views/expeditionTruck_Control_Detail_Pallet.sql b/db/routines/vn/views/expeditionTruck_Control_Detail_Pallet.sql
index 01bdbf795c..3f239432d2 100644
--- a/db/routines/vn/views/expeditionTruck_Control_Detail_Pallet.sql
+++ b/db/routines/vn/views/expeditionTruck_Control_Detail_Pallet.sql
@@ -7,13 +7,13 @@ AS SELECT `e`.`truckFk` AS `id`,
`e`.`palletFk` AS `pallet`,
`e`.`routeFk` AS `route`,
COUNT(DISTINCT `e`.`scanFk`) AS `scans`,
- `et`.`description` AS `destinos`,
+ `rs`.`description` AS `destinos`,
sum(`e`.`truckFk` <> `e`.`expeditionTruckFk`) AS `fallos`,
`e`.`expeditionTruckFk` AS `expeditionTruckFk`,
max(`e`.`lastPacked`) AS `lastPacked`
FROM (
`vn`.`expeditionCommon` `e`
- LEFT JOIN `vn`.`expeditionTruck` `et` ON(`et`.`id` = `e`.`expeditionTruckFk`)
+ LEFT JOIN `vn`.`roadmapStop` `rs` ON(`rs`.`id` = `e`.`expeditionTruckFk`)
)
GROUP BY `e`.`truckFk`,
`e`.`palletFk`,
diff --git a/db/routines/vn/views/routesControl.sql b/db/routines/vn/views/routesControl.sql
index 380d9d9ce1..282dd21e31 100644
--- a/db/routines/vn/views/routesControl.sql
+++ b/db/routines/vn/views/routesControl.sql
@@ -6,8 +6,8 @@ AS SELECT `t`.`routeFk` AS `routeFk`,
COUNT(`es`.`id`) AS `scanned`,
COUNT(DISTINCT `es`.`palletFk`) AS `pallets`,
max(`es`.`scanned`) AS `lastScanned`,
- max(`et`.`description`) AS `description`,
- max(`et`.`eta`) AS `eta`
+ max(`rs`.`description`) AS `description`,
+ max(`rs`.`eta`) AS `eta`
FROM (
(
(
@@ -19,9 +19,9 @@ FROM (
)
LEFT JOIN `vn`.`expeditionPallet` `ep` ON(`ep`.`id` = `es`.`palletFk`)
)
- LEFT JOIN `vn`.`expeditionTruck` `et` ON(`et`.`id` = `ep`.`truckFk`)
+ LEFT JOIN `vn`.`roadmapStop` `rs` ON(`rs`.`id` = `ep`.`truckFk`)
)
WHERE `t`.`shipped` >= `util`.`VN_CURDATE`()
AND `t`.`routeFk` <> 0
GROUP BY `t`.`routeFk`
-ORDER BY max(`et`.`eta`)
+ORDER BY max(`rs`.`eta`)
diff --git a/db/routines/vn/views/saleVolume.sql b/db/routines/vn/views/saleVolume.sql
index aec7396783..ffc6714c6b 100644
--- a/db/routines/vn/views/saleVolume.sql
+++ b/db/routines/vn/views/saleVolume.sql
@@ -37,7 +37,7 @@ FROM (
)
JOIN `vn`.`volumeConfig` `vc`
)
- JOIN `vn`.`itemCost` `ic` ON(
+ JOIN `vn`.`itemCost` `ic` FORCE INDEX (`PRIMARY`) ON(
`ic`.`itemFk` = `s`.`itemFk`
AND `ic`.`warehouseFk` = `t`.`warehouseFk`
)
diff --git a/db/routines/vn/views/saleVolume_Today_VNH.sql b/db/routines/vn/views/saleVolume_Today_VNH.sql
index 29b921bcb6..c36779146f 100644
--- a/db/routines/vn/views/saleVolume_Today_VNH.sql
+++ b/db/routines/vn/views/saleVolume_Today_VNH.sql
@@ -3,7 +3,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost`
VIEW `vn`.`saleVolume_Today_VNH`
AS SELECT `t`.`nickname` AS `Cliente`,
`p`.`name` AS `Provincia`,
- `c`.`country` AS `Pais`,
+ `c`.`name` AS `Pais`,
cast(sum(`sv`.`volume`) AS decimal(5, 1)) AS `volume`
FROM (
(
diff --git a/db/routines/vn2008/views/Compres.sql b/db/routines/vn2008/views/Compres.sql
index 5571361923..b99dd2b73c 100644
--- a/db/routines/vn2008/views/Compres.sql
+++ b/db/routines/vn2008/views/Compres.sql
@@ -28,6 +28,5 @@ AS SELECT `c`.`id` AS `Id_Compra`,
`c`.`workerFk` AS `Id_Trabajador`,
`c`.`weight` AS `weight`,
`c`.`dispatched` AS `dispatched`,
- `c`.`containerFk` AS `container_id`,
`c`.`itemOriginalFk` AS `itemOriginalFk`
FROM `vn`.`buy` `c`
diff --git a/db/routines/vn2008/views/Ordenes.sql b/db/routines/vn2008/views/Ordenes.sql
index 46d9fd89b2..de31f8f99c 100644
--- a/db/routines/vn2008/views/Ordenes.sql
+++ b/db/routines/vn2008/views/Ordenes.sql
@@ -16,7 +16,6 @@ AS SELECT `tr`.`id` AS `Id_ORDEN`,
`tr`.`ordered` AS `datORDEN`,
`tr`.`shipped` AS `datTICKET`,
`tr`.`salesPersonCode` AS `CodVENDEDOR`,
- `tr`.`buyerCode` AS `CodCOMPRADOR`,
`tr`.`clientFk` AS `Id_CLIENTE`,
`tr`.`total` AS `TOTAL`,
`tr`.`buyed` AS `datCOMPRA`
diff --git a/db/routines/vn2008/views/Paises.sql b/db/routines/vn2008/views/Paises.sql
index ea7172dff6..99d2835f06 100644
--- a/db/routines/vn2008/views/Paises.sql
+++ b/db/routines/vn2008/views/Paises.sql
@@ -2,7 +2,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost`
SQL SECURITY DEFINER
VIEW `vn2008`.`Paises`
AS SELECT `c`.`id` AS `Id`,
- `c`.`country` AS `Pais`,
+ `c`.`name` AS `Pais`,
`c`.`CEE` AS `CEE`,
`c`.`isUeeMember` AS `isUeeMember`,
`c`.`code` AS `Codigo`,
diff --git a/db/routines/vn2008/views/Proveedores.sql b/db/routines/vn2008/views/Proveedores.sql
index b5d3d36840..203d4295f3 100644
--- a/db/routines/vn2008/views/Proveedores.sql
+++ b/db/routines/vn2008/views/Proveedores.sql
@@ -6,7 +6,6 @@ AS SELECT `s`.`id` AS `Id_Proveedor`,
`s`.`account` AS `cuenta`,
`s`.`countryFk` AS `pais_id`,
`s`.`nif` AS `NIF`,
- `s`.`isFarmer` AS `Agricola`,
`s`.`phone` AS `Telefono`,
`s`.`retAccount` AS `cuentaret`,
`s`.`commission` AS `ComisionProveedor`,
diff --git a/db/routines/vn2008/views/albaran.sql b/db/routines/vn2008/views/albaran.sql
index 51a7c77e93..b1055ff56a 100644
--- a/db/routines/vn2008/views/albaran.sql
+++ b/db/routines/vn2008/views/albaran.sql
@@ -14,6 +14,5 @@ AS SELECT `dn`.`id` AS `albaran_id`,
`dn`.`workerFk` AS `Id_Trabajador`,
`dn`.`supervisorFk` AS `Id_Responsable`,
`dn`.`departmentFk` AS `department_id`,
- `dn`.`invoiceInFk` AS `recibida_id`,
- `dn`.`farmingFk` AS `farmingFk`
+ `dn`.`invoiceInFk` AS `recibida_id`
FROM `vn`.`deliveryNote` `dn`
diff --git a/db/versions/10859-pinkGerbera/00-firstScript.sql b/db/versions/10859-pinkGerbera/00-firstScript.sql
index 1aed013193..723ddda5ee 100644
--- a/db/versions/10859-pinkGerbera/00-firstScript.sql
+++ b/db/versions/10859-pinkGerbera/00-firstScript.sql
@@ -1,6 +1,4 @@
CREATE OR REPLACE PROCEDURE `vn`.`balance_create`() BEGIN END;
-CREATE OR REPLACE PROCEDURE `vn`.`buy_recalcPricesByEntry`() BEGIN END;
-CREATE OR REPLACE PROCEDURE `vn`.`buy_recalcPricesByBuy`() BEGIN END;
GRANT EXECUTE ON PROCEDURE vn.balance_create TO `financialBoss`, `hrBoss`;
GRANT EXECUTE ON PROCEDURE vn.buy_recalcPricesByEntry TO `buyer`, `claimManager`, `employee`;
diff --git a/db/versions/10955-orangeRuscus/00-firstScript.sql b/db/versions/10955-orangeRuscus/00-firstScript.sql
new file mode 100644
index 0000000000..745c058bfc
--- /dev/null
+++ b/db/versions/10955-orangeRuscus/00-firstScript.sql
@@ -0,0 +1,17 @@
+INSERT IGNORE INTO vn.entryType (code, description)
+ VALUES ('devaluation', 'Devaluación');
+
+ALTER TABLE vn.travelConfig ADD IF NOT EXISTS devalueWarehouseOutFk SMALLINT(6) UNSIGNED NULL
+ COMMENT 'Datos del travel para las entradas generadas al devaluar artículos de A1 a A2';
+
+ALTER TABLE vn.travelConfig ADD IF NOT EXISTS devalueAgencyModeFk INT(11) NULL;
+ALTER TABLE vn.travelConfig ADD IF NOT EXISTS devalueRef varchar(20) NULL;
+
+ALTER TABLE vn.travelConfig DROP FOREIGN KEY IF EXISTS travelConfig_agencyMode_FK;
+
+ALTER TABLE vn.travelConfig ADD CONSTRAINT travelConfig_agencyMode_FK
+ FOREIGN KEY (devalueAgencyModeFk) REFERENCES vn.agencyMode(id) ON DELETE SET NULL ON UPDATE CASCADE;
+
+ALTER TABLE vn.travelConfig DROP FOREIGN KEY IF EXISTS travelConfig_warehouse_FK;
+ALTER TABLE vn.travelConfig ADD CONSTRAINT travelConfig_warehouse_FK
+ FOREIGN KEY (devalueWarehouseOutFk) REFERENCES vn.warehouse(id) ON DELETE SET NULL ON UPDATE CASCADE;
diff --git a/db/versions/10978-wheatMoss/00-firstScript.sql b/db/versions/10978-wheatMoss/00-firstScript.sql
new file mode 100644
index 0000000000..39bf1c3188
--- /dev/null
+++ b/db/versions/10978-wheatMoss/00-firstScript.sql
@@ -0,0 +1,4 @@
+-- Place your SQL code here
+INSERT INTO salix.defaultViewConfig
+(tableCode, `columns`)
+VALUES('routesList', '{"ID":true,"worker":true,"agency":true,"vehicle":true,"date":true,"volume":true,"description":true,"started":true,"finished":true,"actions":true}');
diff --git a/db/versions/10995-navyErica/02-agencyWorkCenterCreate.sql b/db/versions/10995-navyErica/02-agencyWorkCenterCreate.sql
index 179fbc63c9..6aeb52a413 100644
--- a/db/versions/10995-navyErica/02-agencyWorkCenterCreate.sql
+++ b/db/versions/10995-navyErica/02-agencyWorkCenterCreate.sql
@@ -10,9 +10,10 @@ CREATE TABLE IF NOT EXISTS `vn`.`agencyWorkCenter` (
CONSTRAINT `agencyWorkCenter_agency_FK` FOREIGN KEY (`agencyFk`) REFERENCES `agency` (`id`) ON DELETE CASCADE,
CONSTRAINT `agencyWorkCenter_user_FK` FOREIGN KEY (`editorFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `agencyWorkCenter_workCenter_FK` FOREIGN KEY (`workCenterFk`) REFERENCES `workCenter` (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci COMMENT='refs #4988';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
INSERT INTO vn.agencyWorkCenter (agencyFk, workCenterFk)
- SELECT id, workCenterFk
- FROM vn.agency
- WHERE workCenterFk IS NOT NULL;
+ SELECT a.id, wc.id
+ FROM vn.agency a
+ JOIN vn.warehouse w ON w.id = a.warehouseFk
+ JOIN vn.workCenter wc ON wc.warehouseFk = w.id;
\ No newline at end of file
diff --git a/db/versions/11000-grayAsparagus/00-firstScript.sql b/db/versions/11000-grayAsparagus/00-firstScript.sql
new file mode 100644
index 0000000000..38d6817bbe
--- /dev/null
+++ b/db/versions/11000-grayAsparagus/00-firstScript.sql
@@ -0,0 +1,8 @@
+ALTER TABLE vn.ticket DROP COLUMN IF EXISTS problem;
+ALTER TABLE vn.sale DROP COLUMN IF EXISTS problem;
+ALTER TABLE vn.ticket DROP COLUMN IF EXISTS risk;
+
+ALTER TABLE vn.ticket ADD IF NOT EXISTS problem SET('hasTicketRequest', 'isFreezed', 'hasRisk', 'hasHighRisk', 'isTaxDataChecked', 'isTooLittle')NOT NULL DEFAULT '';
+ALTER TABLE vn.sale ADD IF NOT EXISTS problem SET('hasItemShortage', 'hasComponentLack', 'hasItemDelay', 'hasRounding', 'hasItemLost')NOT NULL DEFAULT '';
+ALTER TABLE vn.ticket ADD IF NOT EXISTS risk DECIMAL(10,2) DEFAULT NULL NULL COMMENT 'cache calculada con el riesgo del cliente';
+
diff --git a/db/versions/11006-chocolateCataractarum/00-firstScript.sql b/db/versions/11006-chocolateCataractarum/00-firstScript.sql
new file mode 100644
index 0000000000..8cc86a78ff
--- /dev/null
+++ b/db/versions/11006-chocolateCataractarum/00-firstScript.sql
@@ -0,0 +1,6 @@
+ALTER TABLE vn.country
+ ADD IF NOT EXISTS viesCode varchar(2) DEFAULT NULL NULL AFTER code;
+
+UPDATE IGNORE vn.country
+ SET viesCode = 'FR'
+ WHERE code = 'MC'; -- Mónaco
\ No newline at end of file
diff --git a/db/versions/11010-blackChrysanthemum/00-firstScript.sql b/db/versions/11010-blackChrysanthemum/00-firstScript.sql
new file mode 100644
index 0000000000..c8dce54b29
--- /dev/null
+++ b/db/versions/11010-blackChrysanthemum/00-firstScript.sql
@@ -0,0 +1,21 @@
+ALTER TABLE vn.deviceProductionUser DROP INDEX IF EXISTS deviceProductionUser_UN;
+
+ALTER TABLE vn.deviceProductionUser DROP FOREIGN KEY IF EXISTS deviceProductionUser_FK;
+
+ALTER TABLE vn.deviceProductionUser DROP PRIMARY KEY;
+
+ALTER TABLE vn.deviceProductionUser ADD IF NOT EXISTS id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY FIRST;
+
+ALTER TABLE vn.deviceProductionUser ADD CONSTRAINT deviceProductionUser_deviceProduction_FK FOREIGN KEY IF NOT EXISTS (deviceProductionFk) REFERENCES vn.deviceProduction(id);
+
+ALTER TABLE vn.deviceProductionUser ADD CONSTRAINT deviceProductionUser_unique UNIQUE KEY IF NOT EXISTS (deviceProductionFk);
+
+ALTER TABLE vn.deviceProductionUser ADD IF NOT EXISTS simSerialNumber TEXT NULL;
+
+ALTER TABLE vn.deviceProductionConfig ADD IF NOT EXISTS maxDevicesPerUser INT UNSIGNED NULL;
+
+UPDATE vn.deviceProductionConfig SET maxDevicesPerUser=1 WHERE id=1;
+
+INSERT IGNORE INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
+ VALUES ('Worker','getAvailablePda','READ','ALLOW','ROLE','hr');
+
diff --git a/db/versions/11013-orangeGerbera/00-firstScript.sql b/db/versions/11013-orangeGerbera/00-firstScript.sql
new file mode 100644
index 0000000000..2e8be531fe
--- /dev/null
+++ b/db/versions/11013-orangeGerbera/00-firstScript.sql
@@ -0,0 +1,4 @@
+-- Place your SQL code here
+ALTER TABLE vn.country CHANGE country name varchar(25) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL;
+
+ALTER TABLE vn.country ADD COLUMN country VARCHAR(25) AS (name) VIRTUAL;
diff --git a/db/versions/11015-silverBamboo/00-photoMotivation.sql b/db/versions/11015-silverBamboo/00-photoMotivation.sql
new file mode 100644
index 0000000000..366694e129
--- /dev/null
+++ b/db/versions/11015-silverBamboo/00-photoMotivation.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.item ADD COLUMN photoMotivation VARCHAR(255);
\ No newline at end of file
diff --git a/db/versions/11019-grayDendro/00-locker.sql b/db/versions/11019-grayDendro/00-locker.sql
new file mode 100644
index 0000000000..7e63e06fa3
--- /dev/null
+++ b/db/versions/11019-grayDendro/00-locker.sql
@@ -0,0 +1,60 @@
+-- Eliminar locker
+ALTER TABLE `vn`.`worker` DROP COLUMN `locker`;
+
+CREATE TABLE `vn`.`locker` (
+ `id` int(100) auto_increment,
+ `code` varchar(10) DEFAULT NULL,
+ `gender` ENUM('M','F') DEFAULT NULL,
+ `workerFk` int(10) unsigned DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `code` (`code`),
+ UNIQUE KEY `workerFk` (`workerFk`),
+ CONSTRAINT `locker_ibfk_1` FOREIGN KEY (`workerFk`) REFERENCES `worker` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+
+ALTER TABLE `vn`.`workerLog`
+ MODIFY COLUMN changedModel enum('Worker','Calendar','WorkerTimeControlMail','Business','WorkerDms','WorkerTimeControl', 'Locker') NOT NULL DEFAULT 'Worker';
+
+-- Insertar taquillas disponibles para hombres (1A - 73A / 1B - 73B)
+INSERT INTO `vn`.`locker` (code, gender, workerFk) VALUES
+ ('1A', 'M', NULL), ('2A', 'M', NULL), ('3A', 'M', NULL), ('4A', 'M', NULL), ('5A', 'M', NULL),
+ ('6A', 'M', NULL), ('7A', 'M', NULL), ('8A', 'M', NULL), ('9A', 'M', NULL), ('10A', 'M', NULL),
+ ('11A', 'M', NULL), ('12A', 'M', NULL), ('13A', 'M', NULL), ('14A', 'M', NULL), ('15A', 'M', NULL),
+ ('16A', 'M', NULL), ('17A', 'M', NULL), ('18A', 'M', NULL), ('19A', 'M', NULL), ('20A', 'M', NULL),
+ ('21A', 'M', NULL), ('22A', 'M', NULL), ('23A', 'M', NULL), ('24A', 'M', NULL), ('25A', 'M', NULL),
+ ('26A', 'M', NULL), ('27A', 'M', NULL), ('28A', 'M', NULL), ('29A', 'M', NULL), ('30A', 'M', NULL),
+ ('31A', 'M', NULL), ('32A', 'M', NULL), ('33A', 'M', NULL), ('34A', 'M', NULL), ('35A', 'M', NULL),
+ ('36A', 'M', NULL), ('37A', 'M', NULL), ('38A', 'M', NULL), ('39A', 'M', NULL), ('40A', 'M', NULL),
+ ('41A', 'M', NULL), ('42A', 'M', NULL), ('43A', 'M', NULL), ('44A', 'M', NULL), ('45A', 'M', NULL),
+ ('46A', 'M', NULL), ('47A', 'M', NULL), ('48A', 'M', NULL), ('49A', 'M', NULL), ('50A', 'M', NULL),
+ ('51A', 'M', NULL), ('52A', 'M', NULL), ('53A', 'M', NULL), ('54A', 'M', NULL), ('55A', 'M', NULL),
+ ('56A', 'M', NULL), ('57A', 'M', NULL), ('58A', 'M', NULL), ('59A', 'M', NULL), ('60A', 'M', NULL),
+ ('61A', 'M', NULL), ('62A', 'M', NULL), ('63A', 'M', NULL), ('64A', 'M', NULL), ('65A', 'M', NULL),
+ ('66A', 'M', NULL), ('67A', 'M', NULL), ('68A', 'M', NULL), ('69A', 'M', NULL), ('70A', 'M', NULL),
+ ('71A', 'M', NULL), ('72A', 'M', NULL), ('73A', 'M', NULL),
+ ('1B', 'M', NULL), ('2B', 'M', NULL), ('3B', 'M', NULL), ('4B', 'M', NULL), ('5B', 'M', NULL),
+ ('6B', 'M', NULL), ('7B', 'M', NULL), ('8B', 'M', NULL), ('9B', 'M', NULL), ('10B', 'M', NULL),
+ ('11B', 'M', NULL), ('12B', 'M', NULL), ('13B', 'M', NULL), ('14B', 'M', NULL), ('15B', 'M', NULL),
+ ('16B', 'M', NULL), ('17B', 'M', NULL), ('18B', 'M', NULL), ('19B', 'M', NULL), ('20B', 'M', NULL),
+ ('21B', 'M', NULL), ('22B', 'M', NULL), ('23B', 'M', NULL), ('24B', 'M', NULL), ('25B', 'M', NULL),
+ ('26B', 'M', NULL), ('27B', 'M', NULL), ('28B', 'M', NULL), ('29B', 'M', NULL), ('30B', 'M', NULL),
+ ('31B', 'M', NULL), ('32B', 'M', NULL), ('33B', 'M', NULL), ('34B', 'M', NULL), ('35B', 'M', NULL),
+ ('36B', 'M', NULL), ('37B', 'M', NULL), ('38B', 'M', NULL), ('39B', 'M', NULL), ('40B', 'M', NULL),
+ ('41B', 'M', NULL), ('42B', 'M', NULL), ('43B', 'M', NULL), ('44B', 'M', NULL), ('45B', 'M', NULL),
+ ('46B', 'M', NULL), ('47B', 'M', NULL), ('48B', 'M', NULL), ('49B', 'M', NULL), ('50B', 'M', NULL),
+ ('51B', 'M', NULL), ('52B', 'M', NULL), ('53B', 'M', NULL), ('54B', 'M', NULL), ('55B', 'M', NULL),
+ ('56B', 'M', NULL), ('57B', 'M', NULL), ('58B', 'M', NULL), ('59B', 'M', NULL), ('60B', 'M', NULL),
+ ('61B', 'M', NULL), ('62B', 'M', NULL), ('63B', 'M', NULL), ('64B', 'M', NULL), ('65B', 'M', NULL),
+ ('66B', 'M', NULL), ('67B', 'M', NULL), ('68B', 'M', NULL), ('69B', 'M', NULL), ('70B', 'M', NULL),
+ ('71B', 'M', NULL), ('72B', 'M', NULL), ('73B', 'M', NULL);
+
+-- Insertar taquillas disponibles para mujeres (200A - 217A / 200B - 217B)
+INSERT INTO `vn`.`locker` (code, gender, workerFk) VALUES
+('200A', 'F', NULL), ('201A', 'F', NULL), ('202A', 'F', NULL), ('203A', 'F', NULL), ('204A', 'F', NULL),
+('205A', 'F', NULL), ('206A', 'F', NULL), ('207A', 'F', NULL), ('208A', 'F', NULL), ('209A', 'F', NULL),
+('210A', 'F', NULL), ('211A', 'F', NULL), ('212A', 'F', NULL), ('213A', 'F', NULL), ('214A', 'F', NULL),
+('215A', 'F', NULL), ('216A', 'F', NULL), ('217A', 'F', NULL),
+('200B', 'F', NULL), ('201B', 'F', NULL), ('202B', 'F', NULL), ('203B', 'F', NULL), ('204B', 'F', NULL),
+('205B', 'F', NULL), ('206B', 'F', NULL), ('207B', 'F', NULL), ('208B', 'F', NULL), ('209B', 'F', NULL),
+('210B', 'F', NULL), ('211B', 'F', NULL), ('212B', 'F', NULL), ('213B', 'F', NULL), ('214B', 'F', NULL),
+('215B', 'F', NULL), ('216B', 'F', NULL), ('217B', 'F', NULL);
\ No newline at end of file
diff --git a/db/versions/11019-grayDendro/01-aclLocker.sql b/db/versions/11019-grayDendro/01-aclLocker.sql
new file mode 100644
index 0000000000..7bc8b12a06
--- /dev/null
+++ b/db/versions/11019-grayDendro/01-aclLocker.sql
@@ -0,0 +1,6 @@
+INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`)
+ VALUES ('Locker', '__get__codes', 'READ', 'ALLOW', 'ROLE', 'employee'),
+ ('Locker', '*', '*', 'ALLOW', 'ROLE', 'hr'),
+ ('Locker', '*', '*', 'ALLOW', 'ROLE', 'productionBoss'),
+ ('Worker', '__get__locker', 'READ', 'ALLOW', 'ROLE', 'hr'),
+ ('Worker', '__get__locker', 'READ', 'ALLOW', 'ROLE', 'productionBoss');
diff --git a/db/versions/11022-crimsonArborvitae/00-firstScript.sql b/db/versions/11022-crimsonArborvitae/00-firstScript.sql
new file mode 100644
index 0000000000..608ae67fb2
--- /dev/null
+++ b/db/versions/11022-crimsonArborvitae/00-firstScript.sql
@@ -0,0 +1,15 @@
+-- Place your SQL code here
+ALTER TABLE IF EXISTS vn.expeditionTruck RENAME vn.roadmapStop;
+
+CREATE OR REPLACE DEFINER=`root`@`localhost`
+ SQL SECURITY DEFINER
+ VIEW `vn`.`expeditionTruck`
+AS SELECT `rs`.`id` AS `id`,
+ `rs`.`roadmapFk` AS `roadmapFk`,
+ `rs`.`warehouseFk` AS `warehouseFk`,
+ `rs`.`eta` AS `eta`,
+ `rs`.`description` AS `description`,
+ `rs`.`bufferFk` AS `bufferFk`,
+ `rs`.`created` AS `created`,
+ `rs`.`userFk` AS `userFk`
+FROM `vn`.`roadmapStop` `rs`;
\ No newline at end of file
diff --git a/db/versions/11029-tealAnthurium/00-firstScript.sql b/db/versions/11029-tealAnthurium/00-firstScript.sql
deleted file mode 100644
index b54e7a3b51..0000000000
--- a/db/versions/11029-tealAnthurium/00-firstScript.sql
+++ /dev/null
@@ -1,2 +0,0 @@
--- Place your SQL code here
-ALTER TABLE vn.productionConfig ADD defaultSectorFk INT UNSIGNED DEFAULT 37 NOT NULL COMMENT 'Default sector';
diff --git a/db/versions/11030-salmonCyca/00-firstScript.sql b/db/versions/11030-salmonCyca/00-firstScript.sql
new file mode 100644
index 0000000000..72ccc9ae2d
--- /dev/null
+++ b/db/versions/11030-salmonCyca/00-firstScript.sql
@@ -0,0 +1,10 @@
+-- Place your SQL code here
+ALTER TABLE vn.absenceType ADD isFestiveEligible BOOL DEFAULT 1 NOT NULL COMMENT 'Para marcar un tipo de absence';
+
+UPDATE vn.absenceType
+SET isFestiveEligible = 0
+WHERE code = 'holiday';
+
+UPDATE vn.absenceType
+ SET isFestiveEligible=0
+ WHERE code = 'halfHoliday';
diff --git a/db/versions/11033-aquaPaniculata/00-rollbackAcls.sql b/db/versions/11033-aquaPaniculata/00-rollbackAcls.sql
new file mode 100644
index 0000000000..a01efe3fb8
--- /dev/null
+++ b/db/versions/11033-aquaPaniculata/00-rollbackAcls.sql
@@ -0,0 +1,9 @@
+DELETE FROM salix.ACL
+ WHERE model = 'Worker'
+ AND property = '__get__summary'
+ AND principalId = 'employee';
+
+UPDATE salix.ACL SET principalId = 'employee'
+ WHERE model = 'Worker'
+ AND property IN ('find','findById','findOne')
+ AND principalId = 'hr';
diff --git a/db/versions/11034-purpleHydrangea/00-firstScript.sql b/db/versions/11034-purpleHydrangea/00-firstScript.sql
new file mode 100644
index 0000000000..c8c2cc7f9d
--- /dev/null
+++ b/db/versions/11034-purpleHydrangea/00-firstScript.sql
@@ -0,0 +1,5 @@
+-- Place your SQL code here
+ALTER TABLE vn.packaging
+MODIFY COLUMN height decimal(10,2) DEFAULT NULL NULL,
+MODIFY COLUMN `depth` decimal(10,2) DEFAULT NULL NULL,
+MODIFY COLUMN width decimal(10,2) DEFAULT NULL NULL;
diff --git a/db/versions/11037-redPhormium/00-firstScript.sql b/db/versions/11037-redPhormium/00-firstScript.sql
new file mode 100644
index 0000000000..fd09d31d95
--- /dev/null
+++ b/db/versions/11037-redPhormium/00-firstScript.sql
@@ -0,0 +1 @@
+REVOKE UPDATE (`size`, longName, name) ON vn.item FROM buyer;
diff --git a/db/versions/11038-yellowFern/00-firstScript.sql b/db/versions/11038-yellowFern/00-firstScript.sql
new file mode 100644
index 0000000000..daaae883cc
--- /dev/null
+++ b/db/versions/11038-yellowFern/00-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.deliveryNote CHANGE farmingFk farmingFk__ int(10) unsigned DEFAULT NULL NULL;
diff --git a/db/versions/11040-grayMonstera/00-firstScript.sql b/db/versions/11040-grayMonstera/00-firstScript.sql
new file mode 100644
index 0000000000..1fabe4ff55
--- /dev/null
+++ b/db/versions/11040-grayMonstera/00-firstScript.sql
@@ -0,0 +1,16 @@
+UPDATE vn.route
+ SET vehicleFk = NULL
+ WHERE vehicleFk NOT IN (SELECT id FROM vn.vehicle);
+
+ALTER TABLE vn.route
+ADD CONSTRAINT route_vehicleFk FOREIGN KEY (vehicleFk) REFERENCES vn.vehicle(id);
+
+ALTER TABLE vn.route
+MODIFY COLUMN firstEditorFk int(10) unsigned NULL;
+
+UPDATE vn.route
+ SET firstEditorFk = NULL
+ WHERE firstEditorFk NOT IN (SELECT id FROM account.user);
+
+ALTER TABLE vn.route
+ADD CONSTRAINT route_firstEditorFk FOREIGN KEY (firstEditorFk) REFERENCES account.user(id);
diff --git a/db/versions/11044-blueOrchid/00-firstScript.sql b/db/versions/11044-blueOrchid/00-firstScript.sql
new file mode 100644
index 0000000000..29162820ce
--- /dev/null
+++ b/db/versions/11044-blueOrchid/00-firstScript.sql
@@ -0,0 +1,3 @@
+ALTER TABLE vn.invoiceInConfig CHANGE sageWithholdingFk sageFarmerWithholdingFk smallint(6) NOT NULL;
+ALTER TABLE vn.supplier CHANGE isFarmer isFarmer__ tinyint(1) DEFAULT 0 NOT NULL COMMENT 'refs #7345 @deprecated 2024-05-10 - Utilizar withholdingSageFk';
+ALTER TABLE vn.supplier MODIFY COLUMN isFarmer__ tinyint(1) DEFAULT 0 NOT NULL COMMENT 'refs #7345 @deprecated 2024-05-10 - Utilizar withholdingSageFk';
diff --git a/db/versions/11045-redLaurel/00-firstScript.sql b/db/versions/11045-redLaurel/00-firstScript.sql
new file mode 100644
index 0000000000..cc83f922f5
--- /dev/null
+++ b/db/versions/11045-redLaurel/00-firstScript.sql
@@ -0,0 +1,4 @@
+
+
+ALTER TABLE vn.productionConfig
+ ADD IF NOT EXISTS defaultSectorFk INT UNSIGNED DEFAULT 37 NOT NULL COMMENT 'Default sector';
\ No newline at end of file
diff --git a/db/versions/11046-maroonCamellia/00-firstScript.sql b/db/versions/11046-maroonCamellia/00-firstScript.sql
new file mode 100644
index 0000000000..5e7faad357
--- /dev/null
+++ b/db/versions/11046-maroonCamellia/00-firstScript.sql
@@ -0,0 +1,3 @@
+ALTER TABLE vn.item
+MODIFY nonRecycledPlastic DECIMAL(10,2) DEFAULT NULL NULL,
+MODIFY recycledPlastic DECIMAL(10,2) DEFAULT NULL NULL;
diff --git a/db/versions/11050-wheatAnthurium/00-firstScript.sql b/db/versions/11050-wheatAnthurium/00-firstScript.sql
new file mode 100644
index 0000000000..cb8034ff5c
--- /dev/null
+++ b/db/versions/11050-wheatAnthurium/00-firstScript.sql
@@ -0,0 +1,4 @@
+-- Place your SQL code here
+
+ALTER TABLE floranet.catalogue ADD addressFk int(11) NOT NULL;
+ALTER TABLE floranet.catalogue ADD CONSTRAINT catalogue_address_FK FOREIGN KEY (addressFk) REFERENCES vn.address(id) ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/db/versions/11050-wheatAnthurium/01-elementFilter.sql b/db/versions/11050-wheatAnthurium/01-elementFilter.sql
new file mode 100644
index 0000000000..3f2bb78ac7
--- /dev/null
+++ b/db/versions/11050-wheatAnthurium/01-elementFilter.sql
@@ -0,0 +1,6 @@
+ALTER TABLE floranet.builder DROP FOREIGN KEY builder_FK_1;
+ALTER TABLE floranet.`element` DROP PRIMARY KEY;
+ALTER TABLE floranet.`element` ADD id INT NOT NULL;
+ALTER TABLE floranet.`element` ADD CONSTRAINT element_pk PRIMARY KEY (id);
+ALTER TABLE floranet.builder ADD CONSTRAINT builder_element_FK FOREIGN KEY (elementFk) REFERENCES floranet.`element`(id) ON DELETE CASCADE ON UPDATE CASCADE;
+
diff --git a/db/versions/11051-blueAralia/00-sipConfig_callLimit.sql b/db/versions/11051-blueAralia/00-sipConfig_callLimit.sql
new file mode 100644
index 0000000000..0ef08a3fa4
--- /dev/null
+++ b/db/versions/11051-blueAralia/00-sipConfig_callLimit.sql
@@ -0,0 +1,3 @@
+ALTER TABLE pbx.sipConfig
+ CHANGE incomingLimit `call-limit` varchar(10)
+ CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL;
diff --git a/db/versions/11054-orangeBamboo/00-firstScript.sql b/db/versions/11054-orangeBamboo/00-firstScript.sql
new file mode 100644
index 0000000000..7fc1a2166c
--- /dev/null
+++ b/db/versions/11054-orangeBamboo/00-firstScript.sql
@@ -0,0 +1,16 @@
+ CREATE OR REPLACE TABLE vn.ledgerCompany (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `fiscalYear` int(10) unsigned NOT NULL COMMENT 'Año del ejercicio contable',
+ `bookEntry` int(10) unsigned NOT NULL DEFAULT 1 COMMENT 'Contador asiento contable',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `ledgerCompany_unique` (`fiscalYear`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci
+ COMMENT='Contador para asientos contables';
+
+ INSERT IGNORE INTO vn.ledgerCompany (fiscalYear, bookEntry)
+ SELECT YEAR(util.VN_CURDATE()), lastBookEntry
+ FROM vn.ledgerConfig;
+
+ ALTER TABLE vn.ledgerConfig CHANGE IF EXISTS lastBookEntry lastBookEntry__ int(11) NOT NULL
+ COMMENT '@deprecated 2024-05-28 refs #7400 Modificar contador asientos contables';
+
\ No newline at end of file
diff --git a/db/versions/11055-wheatPaniculata/00-firstScript.sql b/db/versions/11055-wheatPaniculata/00-firstScript.sql
new file mode 100644
index 0000000000..6eec62fd8b
--- /dev/null
+++ b/db/versions/11055-wheatPaniculata/00-firstScript.sql
@@ -0,0 +1,5 @@
+ALTER TABLE vn.clientConfig
+ ADD monthsToDisableUser int(10) unsigned DEFAULT NULL NULL;
+
+UPDATE IGNORE vn.clientConfig
+ SET monthsToDisableUser = 12;
\ No newline at end of file
diff --git a/db/versions/11057-chocolateMoss/00-part.sql b/db/versions/11057-chocolateMoss/00-part.sql
new file mode 100644
index 0000000000..bd6c69955f
--- /dev/null
+++ b/db/versions/11057-chocolateMoss/00-part.sql
@@ -0,0 +1,26 @@
+DROP TABLE IF EXISTS vn2008.scanTree__;
+DROP TABLE IF EXISTS vn2008.payroll_embargos__;
+DROP TABLE IF EXISTS vn2008.unary_source__;
+DROP TABLE IF EXISTS vn2008.unary_scan_line_buy__;
+DROP TABLE IF EXISTS vn2008.unary_scan_line__;
+DROP TABLE IF EXISTS vn2008.unary_scan__;
+DROP TABLE IF EXISTS vn2008.scan_line__;
+DROP TABLE IF EXISTS vn2008.Familias__;
+DROP TABLE IF EXISTS vn2008.language__;
+DROP TABLE IF EXISTS vn2008.Clientes_dits__;
+DROP TABLE IF EXISTS vn2008.unary_scan_line_expedition__;
+DROP TABLE IF EXISTS vn2008.warehouse_group__;
+DROP TABLE IF EXISTS vn2008.Espionajes__;
+DROP TABLE IF EXISTS vn2008.jerarquia__;
+DROP TABLE IF EXISTS vn2008.wks__;
+DROP TABLE IF EXISTS vn2008.Proveedores_comunicados__;
+DROP TABLE IF EXISTS vn2008.integra2_escala__;
+DROP TABLE IF EXISTS vn2008.cp__;
+DROP TABLE IF EXISTS vn2008.unary__;
+DROP TABLE IF EXISTS vn2008.Estados__;
+DROP TABLE IF EXISTS vn2008.agency_hour__;
+DROP TABLE IF EXISTS vn2008.Reservas__;
+DROP TABLE IF EXISTS vn2008.cyc_declaration__;
+DROP TABLE IF EXISTS vn2008.route__;
+DROP TABLE IF EXISTS vn2008.Proveedores_escritos__;
+DROP TABLE IF EXISTS vn2008.config__;
diff --git a/db/versions/11057-chocolateMoss/01-part.sql b/db/versions/11057-chocolateMoss/01-part.sql
new file mode 100644
index 0000000000..59df77f207
--- /dev/null
+++ b/db/versions/11057-chocolateMoss/01-part.sql
@@ -0,0 +1,41 @@
+DROP TABLE IF EXISTS vn2008.form_query__;
+DROP TABLE IF EXISTS vn2008.filtros__;
+DROP TABLE IF EXISTS vn2008.Objetivos__;
+UPDATE IGNORE vn.province
+ SET zoneFk = NULL
+ WHERE zoneFk IN (
+ SELECT zoneFk
+ FROM vn.province
+ WHERE zoneFk IS NOT NULL AND zoneFk NOT IN (SELECT id FROM vn.`zone`)
+ );
+ALTER TABLE vn.province DROP FOREIGN KEY province_zone_fk;
+ALTER TABLE vn.province MODIFY COLUMN zoneFk int(11) DEFAULT NULL NULL;
+ALTER TABLE vn.province ADD CONSTRAINT
+ province_zone_FK FOREIGN KEY (zoneFk) REFERENCES vn.`zone`(id) ON DELETE CASCADE ON UPDATE CASCADE;
+DROP TABLE IF EXISTS vn2008.zones__;
+DROP TABLE IF EXISTS vn2008.rec_translator__;
+DROP TABLE IF EXISTS vn2008.warehouse_joined__;
+DROP TABLE IF EXISTS vn2008.warehouse_filtro__;
+DROP TABLE IF EXISTS vn2008.viaxpress__;
+DROP TABLE IF EXISTS vn2008.cl_que__;
+DROP TABLE IF EXISTS vn2008.Recibos_recorded__;
+RENAME TABLE vn.coolerPathDetail TO vn.coolerPathDetail__;
+ALTER TABLE vn.coolerPathDetail__ DROP FOREIGN KEY coolerPathDetail_FK;
+DROP TABLE IF EXISTS vn2008.cooler_path__;
+DROP TABLE IF EXISTS vn2008.payrroll_apEmpresarial__;
+DROP TABLE IF EXISTS vn2008.Compres_ok__;
+DROP TABLE IF EXISTS vn2008.Movimientos_avisar__;
+DROP TABLE IF EXISTS vn2008.Clases__;
+DROP TABLE IF EXISTS vn2008.payroll_basess__;
+DROP TABLE IF EXISTS vn2008.payroll_tipobasess__;
+DROP TABLE IF EXISTS vn2008.guillen__;
+DROP TABLE IF EXISTS vn2008.guillen_carry__;
+DROP TABLE IF EXISTS vn2008.Series__;
+DROP TABLE IF EXISTS vn2008.Permisos__;
+ALTER TABLE vn.buy DROP FOREIGN KEY buy_FK_1;
+DROP TABLE IF EXISTS vn2008.container__;
+DROP TABLE IF EXISTS vn2008.travel_reserve__;
+DROP TABLE IF EXISTS vn2008.tmpNEWTARIFAS__;
+DROP TABLE IF EXISTS vn2008.Clientes_potenciales__;
+DROP TABLE IF EXISTS vn2008.duaDismissed__;
+DROP TABLE IF EXISTS vn2008.cl_pet__;
diff --git a/db/versions/11057-chocolateMoss/02-part.sql b/db/versions/11057-chocolateMoss/02-part.sql
new file mode 100644
index 0000000000..46cda539a0
--- /dev/null
+++ b/db/versions/11057-chocolateMoss/02-part.sql
@@ -0,0 +1,27 @@
+DROP TABLE IF EXISTS vn2008.expeditions_deleted__;
+DROP TABLE IF EXISTS vn2008.Tipos_f11__;
+DROP TABLE IF EXISTS vn2008.commission__;
+DROP TABLE IF EXISTS vn2008.Movimientos_revisar__;
+DROP TABLE IF EXISTS vn2008.recibida_agricola__;
+DROP TABLE IF EXISTS vn2008.tipsa__;
+DROP TABLE IF EXISTS vn2008.rounding__;
+DROP TABLE IF EXISTS vn2008.Informes__;
+DROP TABLE IF EXISTS vn2008.Monitoring__;
+DROP TABLE IF EXISTS vn2008.Forms__;
+DROP TABLE IF EXISTS vn2008.Clientes_event__;
+DROP TABLE IF EXISTS vn2008.wh_selection__;
+DROP TABLE IF EXISTS vn2008.template_bionic_component__;
+DROP TABLE IF EXISTS vn2008.Agencias_province__;
+DROP TABLE IF EXISTS vn2008.travel_pattern__;
+DROP TABLE IF EXISTS vn2008.sort_merge_results_ernesto__;
+DROP TABLE IF EXISTS vn2008.Conteo__;
+DROP TABLE IF EXISTS vn2008.Consignatarios_devices__;
+DROP TABLE IF EXISTS vn2008.link__;
+DROP TABLE IF EXISTS vn2008.agency_warehouse__;
+DROP TABLE IF EXISTS vn2008.warehouse_lc__;
+DROP TABLE IF EXISTS vn2008.emp_day_pay__;
+DROP TABLE IF EXISTS vn2008.Entradas_kop__;
+DROP TABLE IF EXISTS vn2008.dock__;
+DROP TABLE IF EXISTS vn2008.unaryScanFilter__;
+DROP TABLE IF EXISTS vn2008.Grupos__;
+DROP TABLE IF EXISTS vn2008.nichos__;
diff --git a/db/versions/11057-chocolateMoss/03-part.sql b/db/versions/11057-chocolateMoss/03-part.sql
new file mode 100644
index 0000000000..e1947f064f
--- /dev/null
+++ b/db/versions/11057-chocolateMoss/03-part.sql
@@ -0,0 +1,26 @@
+DROP TABLE IF EXISTS vn2008.preparation_exception__;
+DROP TABLE IF EXISTS vn2008.Clientes_empresa__;
+DROP TABLE IF EXISTS vn2008.call_information__;
+DROP TABLE IF EXISTS vn2008.template_bionic_price__;
+DROP TABLE IF EXISTS vn2008.invoice_observation__;
+DROP TABLE IF EXISTS vn2008.edi_testigos__;
+DROP TABLE IF EXISTS vn2008.cl_dep__;
+DROP TABLE IF EXISTS vn2008.agencia_descuadre__;
+DROP TABLE IF EXISTS vn2008.payroll_datos__;
+DROP TABLE IF EXISTS vn2008.tblIVA__;
+DROP TABLE IF EXISTS vn2008.cyc__;
+DROP TABLE IF EXISTS vn2008.Tickets_stack__;
+DROP TABLE IF EXISTS vn2008.config_host_forms__;
+DROP TABLE IF EXISTS vn2008.template_bionic_lot__;
+DROP TABLE IF EXISTS vn2008.payroll_bonificaciones__;
+DROP TABLE IF EXISTS vn2008.widget__;
+DROP TABLE IF EXISTS vn2008.accion_dits__;
+DROP TABLE IF EXISTS vn2008.credit_card__;
+DROP TABLE IF EXISTS vn2008.Brasa__;
+DROP TABLE IF EXISTS vn2008.Jefes__;
+DROP TABLE IF EXISTS vn2008.call_option__;
+DROP TABLE IF EXISTS vn2008.expeditions_pictures__;
+DROP TABLE IF EXISTS vn2008.scan__;
+DROP TABLE IF EXISTS vn2008.trolley__;
+DROP TABLE IF EXISTS vn2008.transport__;
+DROP TABLE IF EXISTS vn2008.Baldas__;
diff --git a/db/versions/11058-aquaCataractarum/00-firstScript.sql b/db/versions/11058-aquaCataractarum/00-firstScript.sql
new file mode 100644
index 0000000000..98fc910ad6
--- /dev/null
+++ b/db/versions/11058-aquaCataractarum/00-firstScript.sql
@@ -0,0 +1,2 @@
+-- Place your SQL code here
+ALTER TABLE floranet.`order` ADD IF NOT EXISTS observations TEXT NULL;
diff --git a/db/versions/11059-crimsonAnthurium/00-firstScript.sql b/db/versions/11059-crimsonAnthurium/00-firstScript.sql
new file mode 100644
index 0000000000..b0eade302b
--- /dev/null
+++ b/db/versions/11059-crimsonAnthurium/00-firstScript.sql
@@ -0,0 +1,3 @@
+-- Place your SQL code here
+INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
+ VALUES ('RouteConfig','*','READ','ALLOW','ROLE','employee');
diff --git a/db/versions/11060-tealGalax/00-createRoleReviewer.sql b/db/versions/11060-tealGalax/00-createRoleReviewer.sql
new file mode 100644
index 0000000000..bf29847022
--- /dev/null
+++ b/db/versions/11060-tealGalax/00-createRoleReviewer.sql
@@ -0,0 +1,46 @@
+use account;
+
+INSERT INTO role
+ SET name = 'reviewer',
+ description = 'Revisor de producción',
+ hasLogin = TRUE,
+ created = util.VN_CURDATE(),
+ modified = util.VN_CURDATE(),
+ editorFk = NULL;
+
+INSERT INTO roleInherit(
+ role,
+ inheritsFrom
+)
+ SELECT r1.id,
+ r2.id
+ FROM role r1
+ JOIN role r2
+ WHERE r1.name = 'reviewer'
+ AND r2.name = 'production'
+ UNION
+ SELECT ri.role,
+ r2.id
+ FROM roleInherit ri
+ JOIN role r1 ON r1.id = ri.role
+ JOIN role r2 ON r2.name = 'reviewer'
+ WHERE r1.name IN ('claimManager', 'productionBoss')
+ GROUP BY ri.role;
+
+DELETE ri
+ FROM roleInherit ri
+ JOIN role r1 ON ri.role = r1.id
+ JOIN role r2 ON ri.inheritsFrom = r2.id
+ WHERE r1.name = 'replenisher'
+ AND r2.name = 'buyer';
+
+UPDATE salix.ACL
+ SET principalId = 'reviewer'
+ WHERE property = 'isInPreparing';
+
+UPDATE user u
+ JOIN vn.workerDepartment wd ON wd.workerFk = u.id
+ JOIN vn.department d ON wd.departmentFk = d.id
+ JOIN role r ON r.name = 'reviewer'
+ SET u.role = r.id
+ WHERE d.name IN ('REVISION', 'PREVIA');
\ No newline at end of file
diff --git a/db/versions/11061-silverMastic/00-firstScript.sql b/db/versions/11061-silverMastic/00-firstScript.sql
new file mode 100644
index 0000000000..32dbc0c2e1
--- /dev/null
+++ b/db/versions/11061-silverMastic/00-firstScript.sql
@@ -0,0 +1 @@
+ALTER TABLE vn.buy CHANGE containerFk containerFk__ smallint(5) unsigned DEFAULT NULL NULL;
diff --git a/db/versions/11065-yellowChrysanthemum/00-modifyInvoiceInPrivileges.sql b/db/versions/11065-yellowChrysanthemum/00-modifyInvoiceInPrivileges.sql
new file mode 100644
index 0000000000..b65ca1c170
--- /dev/null
+++ b/db/versions/11065-yellowChrysanthemum/00-modifyInvoiceInPrivileges.sql
@@ -0,0 +1,24 @@
+REVOKE UPDATE ON vn. invoiceIn FROM administrative, hrBoss, buyer, logistic;
+GRANT UPDATE (id,
+ serialNumber,
+ serial,
+ supplierFk,
+ issued,
+ supplierRef,
+ currencyFk,
+ created,
+ companyFk,
+ docFk,
+ booked,
+ operated,
+ siiTypeInvoiceInFk,
+ cplusRectificationTypeFk,
+ cplusSubjectOpFk,
+ cplusTaxBreakFk,
+ siiTrascendencyInvoiceInFk,
+ bookEntried,
+ isVatDeductible,
+ withholdingSageFk,
+ expenseFkDeductible,
+ editorFk
+) ON vn.invoiceIn TO administrative, hrBoss, buyer, logistic;
\ No newline at end of file
diff --git a/db/versions/11065-yellowChrysanthemum/01-modifyInvoiceInAcls.sql b/db/versions/11065-yellowChrysanthemum/01-modifyInvoiceInAcls.sql
new file mode 100644
index 0000000000..5475b70acc
--- /dev/null
+++ b/db/versions/11065-yellowChrysanthemum/01-modifyInvoiceInAcls.sql
@@ -0,0 +1,23 @@
+UPDATE salix.ACL
+ SET accessType = 'READ'
+ WHERE principalId IN ('administrative','buyer')
+ AND model = 'invoiceIn'
+ AND property = '*';
+
+INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId)
+VALUES
+ ('InvoiceIn', 'updateInvoiceIn', 'WRITE', 'ALLOW', 'ROLE', 'administrative'),
+ ('InvoiceIn', 'clone', 'WRITE', 'ALLOW', 'ROLE', 'administrative'),
+ ('InvoiceIn', 'corrective', 'WRITE', 'ALLOW', 'ROLE', 'administrative'),
+ ('InvoiceIn', 'exchangeRateUpdate', 'WRITE', 'ALLOW', 'ROLE', 'administrative'),
+ ('InvoiceIn', 'invoiceInEmail', 'WRITE', 'ALLOW', 'ROLE', 'administrative'),
+ ('InvoiceIn', 'toBook', 'WRITE', 'ALLOW', 'ROLE', 'administrative'),
+ ('InvoiceIn', 'toUnbook', 'WRITE', 'ALLOW', 'ROLE', 'administrative'),
+ ('InvoiceIn', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'administrative'),
+ ('InvoiceIn', 'updateInvoiceIn', 'WRITE', 'ALLOW', 'ROLE', 'buyer'),
+ ('InvoiceIn', 'clone', 'WRITE', 'ALLOW', 'ROLE', 'buyer'),
+ ('InvoiceIn', 'corrective', 'WRITE', 'ALLOW', 'ROLE', 'buyer'),
+ ('InvoiceIn', 'exchangeRateUpdate', 'WRITE', 'ALLOW', 'ROLE', 'buyer'),
+ ('InvoiceIn', 'invoiceInEmail', 'WRITE', 'ALLOW', 'ROLE', 'buyer'),
+ ('InvoiceIn', 'toBook', 'WRITE', 'ALLOW', 'ROLE', 'buyer'),
+ ('InvoiceIn', 'deleteById', 'WRITE', 'ALLOW', 'ROLE', 'buyer');
diff --git a/db/versions/11068-blueGerbera/00-firstScript.sql b/db/versions/11068-blueGerbera/00-firstScript.sql
new file mode 100644
index 0000000000..6342981a72
--- /dev/null
+++ b/db/versions/11068-blueGerbera/00-firstScript.sql
@@ -0,0 +1,9 @@
+-- Place your SQL code here
+CREATE OR REPLACE TABLE floranet.config (
+ email varchar(255) DEFAULT 'floranet@verdnatura.es' NOT NULL
+)
+ENGINE=InnoDB
+DEFAULT CHARSET=utf8mb3
+COLLATE=utf8mb3_unicode_ci;
+
+
diff --git a/db/versions/11069-brownChrysanthemum/00-firstScript.sql b/db/versions/11069-brownChrysanthemum/00-firstScript.sql
new file mode 100644
index 0000000000..3220d12574
--- /dev/null
+++ b/db/versions/11069-brownChrysanthemum/00-firstScript.sql
@@ -0,0 +1,35 @@
+-- Place your SQL code here
+DROP TABLE IF EXISTS floranet.builder;
+
+CREATE OR REPLACE TABLE floranet.`element` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `name` varchar(30) NOT NULL,
+ `itemFk` int(11) DEFAULT NULL,
+ `longNameFilter` varchar(30) DEFAULT NULL,
+ `typeFk` smallint(5) unsigned DEFAULT NULL,
+ `minSize` int(10) unsigned DEFAULT NULL,
+ `maxSize` int(10) unsigned DEFAULT NULL,
+ `inkFk` char(3) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
+ `originFk` tinyint(2) unsigned DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `element_FK` (`itemFk`),
+ KEY `element_FK_1` (`typeFk`),
+ KEY `element_FK_2` (`inkFk`),
+ KEY `element_FK_3` (`originFk`),
+ CONSTRAINT `element_FK` FOREIGN KEY (`itemFk`) REFERENCES `vn`.`item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
+ CONSTRAINT `element_FK_1` FOREIGN KEY (`typeFk`) REFERENCES `vn`.`itemType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
+ CONSTRAINT `element_FK_2` FOREIGN KEY (`inkFk`) REFERENCES `vn`.`ink` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `element_FK_3` FOREIGN KEY (`originFk`) REFERENCES `vn`.`origin` (`id`) ON UPDATE CASCADE
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Filtro para localizar posibles items que coincidan con la descripción';
+
+CREATE OR REPLACE TABLE floranet.`recipe` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `itemFk` int(11) NOT NULL,
+ `elementFk` int(11) NOT NULL,
+ `quantity` int(10) unsigned NOT NULL DEFAULT 1,
+ PRIMARY KEY (`id`),
+ KEY `recipe_FK` (`itemFk`),
+ KEY `recipe_FK_1` (`elementFk`),
+ CONSTRAINT `recipe_FK` FOREIGN KEY (`itemFk`) REFERENCES `vn`.`item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
+ CONSTRAINT `recipe_element_FK` FOREIGN KEY (`elementFk`) REFERENCES `element` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Links handmade products with their elements';
diff --git a/db/versions/11071-turquoiseMoss/00-firstScript.sql b/db/versions/11071-turquoiseMoss/00-firstScript.sql
new file mode 100644
index 0000000000..f1de5987f2
--- /dev/null
+++ b/db/versions/11071-turquoiseMoss/00-firstScript.sql
@@ -0,0 +1,5 @@
+-- Auto-generated SQL script. Actual values for binary/complex data types may differ - what you see is the default string representation of values.
+INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
+ VALUES ('RoadmapStop','*','*','ALLOW','ROLE','production');
+INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId)
+ VALUES ('RoadmapStop','*','*','ALLOW','ROLE','productionBoss');
diff --git a/db/versions/11074-brownRuscus/00-firstScript.sql b/db/versions/11074-brownRuscus/00-firstScript.sql
new file mode 100644
index 0000000000..f78ba98aee
--- /dev/null
+++ b/db/versions/11074-brownRuscus/00-firstScript.sql
@@ -0,0 +1,20 @@
+-- Place your SQL code here
+
+
+-- floranet.recipe definition
+
+CREATE OR REPLACE TABLE floranet.`recipe`
+ (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `itemFk` int(11) NOT NULL COMMENT 'Bouquet or plant name',
+ `elementFk` int(11) NOT NULL COMMENT 'Item detail for bouquet''s composition',
+ `quantity` int(10) unsigned NOT NULL DEFAULT 1,
+ `cost` decimal(10,2) NOT NULL DEFAULT 1.00,
+ PRIMARY KEY (`id`),
+ KEY `recipe_FK` (`itemFk`),
+ KEY `recipe_FK_1` (`elementFk`),
+ CONSTRAINT `recipe_FK` FOREIGN KEY (`itemFk`) REFERENCES `vn`.`item` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `recipe_item_FK` FOREIGN KEY (`elementFk`) REFERENCES `vn`.`item` (`id`) ON UPDATE CASCADE
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Links handmade products with their elements';
+
+DROP TABLE IF EXISTS floranet.`element`;
\ No newline at end of file
diff --git a/db/versions/11075-salmonLilium/00-firstScript.sql b/db/versions/11075-salmonLilium/00-firstScript.sql
new file mode 100644
index 0000000000..6e487e5031
--- /dev/null
+++ b/db/versions/11075-salmonLilium/00-firstScript.sql
@@ -0,0 +1,5 @@
+-- Place your SQL code here
+ALTER TABLE vn.mrwConfig ADD IF NOT EXISTS defaultHeight INT UNSIGNED NULL COMMENT 'default height in centimeters';
+ALTER TABLE vn.mrwConfig ADD IF NOT EXISTS defaultLength INT UNSIGNED NULL COMMENT 'default length in centimeters';
+ALTER TABLE vn.mrwConfig ADD IF NOT EXISTS defaultWidth INT UNSIGNED NULL COMMENT 'default width in centimeters';
+ALTER TABLE vn.mrwConfig ADD IF NOT EXISTS defaultWeight INT UNSIGNED NULL COMMENT 'default weight in centimeters';
diff --git a/db/versions/11078-goldenFern/00-firstScript.sql b/db/versions/11078-goldenFern/00-firstScript.sql
new file mode 100644
index 0000000000..63888a1bbe
--- /dev/null
+++ b/db/versions/11078-goldenFern/00-firstScript.sql
@@ -0,0 +1,2 @@
+ALTER TABLE vn.productionConfig ADD scannablePreviusCodeType enum('qr','barcode')
+ CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT 'barcode' NOT NULL;
\ No newline at end of file
diff --git a/db/versions/11079-goldenFern/00-firstScript.sql b/db/versions/11079-goldenFern/00-firstScript.sql
new file mode 100644
index 0000000000..14d9ddb5f1
--- /dev/null
+++ b/db/versions/11079-goldenFern/00-firstScript.sql
@@ -0,0 +1,3 @@
+-- Place your SQL code here
+ALTER TABLE vn.mrwConfig ADD IF NOT EXISTS expeditionDeadLine TIME NULL
+COMMENT 'This field stores the latest time by which expeditions can be generated to be sent today';
\ No newline at end of file
diff --git a/db/versions/11080-maroonAnthurium/00-firstScript.sql b/db/versions/11080-maroonAnthurium/00-firstScript.sql
new file mode 100644
index 0000000000..651cd4c7c8
--- /dev/null
+++ b/db/versions/11080-maroonAnthurium/00-firstScript.sql
@@ -0,0 +1,9 @@
+-- Place your SQL code here
+ALTER TABLE vn.mrwConfig ADD IF NOT EXISTS counterWidth INT UNSIGNED NULL
+ COMMENT 'If it does not reach the required value, it will be padded with zeros on the left to meet the specified length.';
+
+ALTER TABLE vn.mrwConfig ADD IF NOT EXISTS serviceTypeWidth INT UNSIGNED NULL
+ COMMENT 'If it does not reach the required value, it will be padded with zeros on the left to meet the specified length.';
+
+ALTER TABLE vn.mrwConfig ADD IF NOT EXISTS portugalPostCodeTrim INT UNSIGNED NULL
+ COMMENT 'It will trim the last characters of the postal code';
diff --git a/docker-compose.yml b/docker-compose.yml
index 5bb1680930..923bb57809 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -4,61 +4,8 @@ services:
image: registry.verdnatura.es/salix-front:${VERSION:?}
build:
context: front
- environment:
- - TZ
- ports:
- - 80
- deploy:
- replicas: 2
- placement:
- constraints:
- - node.role == worker
- resources:
- limits:
- memory: 1G
back:
image: registry.verdnatura.es/salix-back:${VERSION:?}
build:
context: .
dockerfile: back/Dockerfile
- environment:
- - TZ
- - NODE_ENV
- - DEBUG
- ports:
- - 3000
- configs:
- - source: datasources
- target: /etc/salix/datasources.json
- - source: datasources_local
- target: /etc/salix/datasources.local.json
- - source: print
- target: /etc/salix/print.json
- - source: print_local
- target: /etc/salix/print.local.json
- volumes:
- - /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:
- constraints:
- - node.role == worker
- resources:
- limits:
- memory: 8G
-configs:
- datasources:
- external: true
- name: salix_datasources
- datasources_local:
- external: true
- name: salix-${BRANCH_NAME:?}_datasources
- print:
- external: true
- name: salix_print
- print_local:
- external: true
- name: salix-${BRANCH_NAME:?}_print
diff --git a/e2e/paths/02-client/05_add_address.spec.js b/e2e/paths/02-client/05_add_address.spec.js
index 0581635d0b..4f809a7169 100644
--- a/e2e/paths/02-client/05_add_address.spec.js
+++ b/e2e/paths/02-client/05_add_address.spec.js
@@ -51,7 +51,7 @@ describe('Client Add address path', () => {
await page.waitToClick(selectors.clientAddresses.saveButton);
const message = await page.waitForSnackbar();
- expect(message.text).toContain('Incoterms is required for a non UEE member');
+ expect(message.text).toContain('Incoterms and Customs agent are required for a non UEE member');
});
it(`should receive an error after clicking save button as customsAgent is empty`, async() => {
@@ -59,7 +59,7 @@ describe('Client Add address path', () => {
await page.waitToClick(selectors.clientAddresses.saveButton);
const message = await page.waitForSnackbar();
- expect(message.text).toContain('Customs agent is required for a non UEE member');
+ expect(message.text).toContain('Incoterms and Customs agent are required for a non UEE member');
});
it(`should create a new custom agent and then save the address`, async() => {
diff --git a/e2e/paths/03-worker/01_summary.spec.js b/e2e/paths/03-worker/01_summary.spec.js
index 3c61497266..51992b41df 100644
--- a/e2e/paths/03-worker/01_summary.spec.js
+++ b/e2e/paths/03-worker/01_summary.spec.js
@@ -2,6 +2,7 @@ import selectors from '../../helpers/selectors.js';
import getBrowser from '../../helpers/puppeteer';
describe('Worker summary path', () => {
+ const workerId = 3;
let browser;
let page;
beforeAll(async() => {
@@ -9,7 +10,7 @@ describe('Worker summary path', () => {
page = browser.page;
await page.loginAndModule('employee', 'worker');
const httpDataResponse = page.waitForResponse(response => {
- return response.status() === 200 && response.url().includes(`Workers/summary`);
+ return response.status() === 200 && response.url().includes(`Workers/${workerId}`);
});
await page.accessToSearchResult('agencyNick');
await httpDataResponse;
diff --git a/e2e/paths/03-worker/02_basicData.spec.js b/e2e/paths/03-worker/02_basicData.spec.js
index 381375dc7e..66a597dd13 100644
--- a/e2e/paths/03-worker/02_basicData.spec.js
+++ b/e2e/paths/03-worker/02_basicData.spec.js
@@ -25,7 +25,6 @@ describe('Worker basic data path', () => {
await page.overwrite(selectors.workerBasicData.name, 'David C.');
await page.overwrite(selectors.workerBasicData.surname, 'H.');
await page.overwrite(selectors.workerBasicData.phone, '444332211');
- await page.overwrite(selectors.workerBasicData.locker, '1');
await page.click(selectors.workerBasicData.saveButton);
const message = await page.waitForSnackbar();
@@ -37,6 +36,5 @@ describe('Worker basic data path', () => {
expect(await page.waitToGetProperty(selectors.workerBasicData.name, 'value')).toEqual('David C.');
expect(await page.waitToGetProperty(selectors.workerBasicData.surname, 'value')).toEqual('H.');
expect(await page.waitToGetProperty(selectors.workerBasicData.phone, 'value')).toEqual('444332211');
- expect(await page.waitToGetProperty(selectors.workerBasicData.locker, 'value')).toEqual('1');
});
});
diff --git a/e2e/paths/03-worker/07_pda.spec.js b/e2e/paths/03-worker/07_pda.spec.js
deleted file mode 100644
index 2b743823ec..0000000000
--- a/e2e/paths/03-worker/07_pda.spec.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import selectors from '../../helpers/selectors.js';
-import getBrowser from '../../helpers/puppeteer';
-
-describe('Worker pda path', () => {
- let browser;
- let page;
- beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
- await page.loginAndModule('hr', 'worker');
- await page.accessToSearchResult('employeeNick');
- await page.accessToSection('worker.card.pda');
- });
-
- afterAll(async() => {
- await browser.close();
- });
-
- it('should check if worker has already a PDA allocated', async() => {
- expect(await page.waitToGetProperty(selectors.workerPda.currentPDA, 'value')).toContain('serialNumber1');
- });
-
- it('should deallocate the PDA', async() => {
- await page.waitToClick(selectors.workerPda.delete);
- let message = await page.waitForSnackbar();
-
- expect(message.text).toContain('PDA deallocated');
- });
-
- it('should allocate a new PDA', async() => {
- await page.autocompleteSearch(selectors.workerPda.newPDA, 'serialNumber2');
- await page.waitToClick(selectors.workerPda.submit);
- let message = await page.waitForSnackbar();
-
- expect(message.text).toContain('PDA allocated');
- });
-
- it('should check if a new PDA has been allocated', async() => {
- expect(await page.waitToGetProperty(selectors.workerPda.currentPDA, 'value')).toContain('serialNumber2');
- });
-});
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 4f54ad860d..e0f32fc3a7 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
@@ -225,7 +225,7 @@ describe('Ticket Edit sale path', () => {
});
it('should show error trying to delete a ticket with a refund', async() => {
- await page.loginAndModule('production', 'ticket');
+ await page.loginAndModule('salesPerson', 'ticket');
await page.accessToSearchResult('8');
await page.waitToClick(selectors.ticketDescriptor.moreMenu);
await page.waitToClick(selectors.ticketDescriptor.moreMenuDeleteTicket);
diff --git a/front/Dockerfile b/front/Dockerfile
index c507d863cf..db1cb0673f 100644
--- a/front/Dockerfile
+++ b/front/Dockerfile
@@ -4,7 +4,9 @@ ENV TZ Europe/Madrid
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
- && apt-get install -y --no-install-recommends nginx \
+ && apt-get install -y --no-install-recommends \
+ nginx \
+ gettext-base \
&& rm -rf /var/lib/apt/lists/* \
&& ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log
@@ -14,5 +16,7 @@ COPY nginx.conf sites-available/salix
RUN rm sites-enabled/default && ln -s ../sites-available/salix sites-enabled/salix
COPY dist /salix/dist
+COPY env.template.js /salix/dist
+COPY nginx-entrypoint.sh /
-CMD ["nginx", "-g", "daemon off;"]
+ENTRYPOINT [ "sh", "/nginx-entrypoint.sh" ]
diff --git a/front/core/locale/es.yml b/front/core/locale/es.yml
index 17e955ff52..7fcb8c16b2 100644
--- a/front/core/locale/es.yml
+++ b/front/core/locale/es.yml
@@ -69,3 +69,4 @@ Send cau: Enviar cau
By sending this ticket, all the data related to the error, the section, the user, etc., are already sent.: Al enviar este cau ya se envían todos los datos relacionados con el error, la sección, el usuario, etc
ExplainReason: Explique el motivo por el que no deberia aparecer este fallo
You already have the mailAlias: Ya tienes este alias de correo
+Error loading ACLs: Error al cargar los ACLs
diff --git a/front/core/services/auth.js b/front/core/services/auth.js
index 753bc3fba4..0cae4bae89 100644
--- a/front/core/services/auth.js
+++ b/front/core/services/auth.js
@@ -7,16 +7,17 @@ import UserError from 'core/lib/user-error';
* @property {Boolean} loggedIn Whether the user is currently logged
*/
export default class Auth {
- constructor($http, $q, $state, $transitions, $window, vnToken, vnModules, aclService) {
+ constructor($http, $q, vnApp, $translate, $state, $transitions, $window, vnToken, vnModules) {
Object.assign(this, {
$http,
$q,
+ vnApp,
+ $translate,
$state,
$transitions,
$window,
vnToken,
vnModules,
- aclService,
loggedIn: false
});
}
@@ -39,9 +40,26 @@ export default class Auth {
};
if (this.vnToken.token) {
- return this.loadAcls()
- .then(() => true)
- .catch(redirectToLogin);
+ const loadWithRetry = () => {
+ return this.validateToken()
+ .then(() => true)
+ .catch(err => {
+ switch (err.status) {
+ case 400:
+ case 401:
+ return redirectToLogin();
+ default:
+ return new Promise(resolve => {
+ setTimeout(() => {
+ this.vnApp.showMessage(this.$translate.instant('Loading...'));
+
+ resolve(loadWithRetry());
+ }, 2000);
+ });
+ }
+ });
+ };
+ return loadWithRetry();
} else
return redirectToLogin();
});
@@ -87,13 +105,11 @@ export default class Auth {
headers: {Authorization: json.data.token}
}).then(({data}) => {
this.vnToken.set(json.data.token, data.multimediaToken.id, now, json.data.ttl, remember);
- this.loadAcls().then(() => {
- let continueHash = this.$state.params.continue;
- if (continueHash)
- this.$window.location = continueHash;
- else
- this.$state.go('home');
- });
+ let continueHash = this.$state.params.continue;
+ if (continueHash)
+ this.$window.location = continueHash;
+ else
+ this.$state.go('home');
}).catch(() => {});
}
@@ -107,24 +123,25 @@ export default class Auth {
this.vnToken.unset();
this.loggedIn = false;
this.vnModules.reset();
- this.aclService.reset();
+ this.vnModules.aclService.reset();
this.$state.go('login');
return promise;
}
- loadAcls() {
- return this.aclService.load()
+ validateToken() {
+ return this.$http.get('VnUsers/validateToken')
.then(() => {
this.loggedIn = true;
this.vnModules.reset();
})
.catch(err => {
- this.vnToken.unset();
throw err;
});
}
}
-Auth.$inject = ['$http', '$q', '$state', '$transitions', '$window', 'vnToken', 'vnModules', 'aclService'];
+Auth.$inject = [
+ '$http', '$q', 'vnApp', '$translate', '$state',
+ '$transitions', '$window', 'vnToken', 'vnModules'];
ngModule.service('vnAuth', Auth);
diff --git a/front/env.template.js b/front/env.template.js
new file mode 100644
index 0000000000..dbeb2f67b5
--- /dev/null
+++ b/front/env.template.js
@@ -0,0 +1,3 @@
+window.process = {
+ env: {NODE_ENV: '${NODE_ENV}'}
+};
diff --git a/front/nginx-entrypoint.sh b/front/nginx-entrypoint.sh
new file mode 100644
index 0000000000..a6d2b744ad
--- /dev/null
+++ b/front/nginx-entrypoint.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+WWW_DIR=/salix/dist
+INJECT_FILE_SRC="${WWW_DIR}/env.template.js"
+INJECT_FILE_DST="${WWW_DIR}/env.js"
+envsubst < "${INJECT_FILE_SRC}" > "${INJECT_FILE_DST}"
+[ -z "$@" ] && nginx -g 'daemon off;' || $@
diff --git a/front/salix/components/bank-entity/index.html b/front/salix/components/bank-entity/index.html
index 211b773175..6ce073f1a1 100644
--- a/front/salix/components/bank-entity/index.html
+++ b/front/salix/components/bank-entity/index.html
@@ -28,7 +28,7 @@
ng-model="$ctrl.data.countryFk"
url="Countries"
fields="['id', 'country', 'code']"
- show-field="country"
+ show-field="name"
value-field="id"
label="Country">
diff --git a/front/salix/components/upload-photo/index.js b/front/salix/components/upload-photo/index.js
index c9774d0370..7779c81e14 100644
--- a/front/salix/components/upload-photo/index.js
+++ b/front/salix/components/upload-photo/index.js
@@ -164,6 +164,7 @@ export default class UploadPhoto extends Component {
const options = {
type: 'blob',
+ size: 'original'
};
return this.editor.result(options)
.then(blob => this.newPhoto.blob = blob)
diff --git a/front/salix/index.ejs b/front/salix/index.ejs
index 3aed9d9a69..87a59ef86b 100644
--- a/front/salix/index.ejs
+++ b/front/salix/index.ejs
@@ -5,6 +5,8 @@
+
diff --git a/front/salix/routes.js b/front/salix/routes.js
index 8621f83c76..be210b7497 100644
--- a/front/salix/routes.js
+++ b/front/salix/routes.js
@@ -12,7 +12,8 @@ function config($stateProvider, $urlRouterProvider) {
template: '',
resolve: {
config: ['vnConfig', vnConfig => vnConfig.initialize()],
- token: ['vnToken', vnToken => vnToken.fetchConfig()]
+ token: ['vnToken', vnToken => vnToken.fetchConfig()],
+ acl: ['aclService', aclService => aclService.load()]
}
})
.state('outLayout', {
diff --git a/gulpfile.js b/gulpfile.js
index aa2b65bc10..1127c5cbd9 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -6,6 +6,7 @@ const log = require('fancy-log');
const Myt = require('@verdnatura/myt/myt');
const Run = require('@verdnatura/myt/myt-run');
const Start = require('@verdnatura/myt/myt-start');
+const watchDatabaseChanges = require('./db/dbWatcher');
// Configuration
@@ -138,6 +139,9 @@ function webpack(done) {
webpack.description = `Transpiles application into files`;
function webpackDevServer(done) {
+ const replace = require('gulp-replace');
+ const rename = require('gulp-rename');
+
const webpack = require('webpack');
const merge = require('webpack-merge');
const WebpackDevServer = require('webpack-dev-server');
@@ -147,6 +151,12 @@ function webpackDevServer(done) {
let devServer = wpConfig.devServer;
+ // local env
+ gulp.src(srcDir + '/env.template.js')
+ .pipe(replace('${NODE_ENV}', 'development'))
+ .pipe(rename('env.js'))
+ .pipe(gulp.dest(buildDir));
+
for (let entryName in wpConfig.entry) {
let entry = wpConfig.entry[entryName];
if (!Array.isArray(entry))
@@ -245,6 +255,7 @@ routes.description = 'Merges all module routes file into one file';
function watch(done) {
gulp.watch(routeFiles, gulp.series(routes));
gulp.watch(localeFiles, gulp.series(locales));
+ watchDatabaseChanges();
done();
}
watch.description = `Watches for changes in routes and locale files`;
diff --git a/loopback/common/models/application.js b/loopback/common/models/application.js
index 6bdc2c13a2..80c58ddc1f 100644
--- a/loopback/common/models/application.js
+++ b/loopback/common/models/application.js
@@ -1,4 +1,3 @@
-
module.exports = function(Self) {
require('../methods/application/status')(Self);
require('../methods/application/post')(Self);
diff --git a/loopback/locale/en.json b/loopback/locale/en.json
index 93a54393db..cb9e1d12c9 100644
--- a/loopback/locale/en.json
+++ b/loopback/locale/en.json
@@ -61,7 +61,8 @@
"Changed sale discount": "I have changed the following lines discounts from the ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
"Created claim": "I have created the claim [{{claimId}}]({{{claimUrl}}}) for the following lines from the ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
"Changed sale price": "I have changed the price of [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) from {{oldPrice}}€ ➔ *{{newPrice}}€* of the ticket [{{ticketId}}]({{{ticketUrl}}})",
- "Changed sale quantity": "I have changed the quantity of [{{itemId}} {{concept}}]({{{itemUrl}}}) from {{oldQuantity}} ➔ *{{newQuantity}}* of the ticket [{{ticketId}}]({{{ticketUrl}}})",
+ "Changed sale quantity": "I have changed {{changes}} of the ticket [{{ticketId}}]({{{ticketUrl}}})",
+ "Changes in sales": "the quantity of [{{itemId}} {{concept}}]({{{itemUrl}}}) from {{oldQuantity}} ➔ *{{newQuantity}}*",
"Changed sale reserved state": "I have changed the following lines reserved state from the ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
"Bought units from buy request": "Bought {{quantity}} units of [{{itemId}} {{concept}}]({{{urlItem}}}) for the ticket id [{{ticketId}}]({{{url}}})",
"MESSAGE_INSURANCE_CHANGE": "I have changed the insurence credit of client [{{clientName}} ({{clientId}})]({{{url}}}) to *{{credit}} €*",
@@ -223,7 +224,10 @@
"printerNotExists": "The printer does not exist",
"There are not picking tickets": "There are not picking tickets",
"ticketCommercial": "The ticket {{ ticket }} for the salesperson {{ salesMan }} is in preparation. (automatically generated message)",
- "This password can only be changed by the user themselves": "This password can only be changed by the user themselves",
- "They're not your subordinate": "They're not your subordinate",
- "InvoiceIn is already booked": "InvoiceIn is already booked"
-}
\ No newline at end of file
+ "This password can only be changed by the user themselves": "This password can only be changed by the user themselves",
+ "They're not your subordinate": "They're not your subordinate",
+ "InvoiceIn is already booked": "InvoiceIn is already booked",
+ "This workCenter is already assigned to this agency": "This workCenter is already assigned to this agency",
+ "You can only have one PDA": "You can only have one PDA",
+ "Incoterms and Customs agent are required for a non UEE member": "Incoterms and Customs agent are required for a non UEE member"
+}
diff --git a/loopback/locale/es.json b/loopback/locale/es.json
index f1c57455eb..f94e21d7b3 100644
--- a/loopback/locale/es.json
+++ b/loopback/locale/es.json
@@ -124,7 +124,8 @@
"Changed sale discount": "He cambiado el descuento de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
"Created claim": "He creado la reclamación [{{claimId}}]({{{claimUrl}}}) de las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
"Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}})",
- "Changed sale quantity": "He cambiado la cantidad de [{{itemId}} {{concept}}]({{{itemUrl}}}) de {{oldQuantity}} ➔ *{{newQuantity}}* del ticket [{{ticketId}}]({{{ticketUrl}}})",
+ "Changed sale quantity": "He cambiado {{changes}} del ticket [{{ticketId}}]({{{ticketUrl}}})",
+ "Changes in sales": "la cantidad de [{{itemId}} {{concept}}]({{{itemUrl}}}) de {{oldQuantity}} ➔ *{{newQuantity}}*",
"State": "Estado",
"regular": "normal",
"reserved": "reservado",
@@ -355,6 +356,11 @@
"No results found": "No se han encontrado resultados",
"InvoiceIn is already booked": "La factura recibida está contabilizada",
"This workCenter is already assigned to this agency": "Este centro de trabajo ya está asignado a esta agencia",
- "Select ticket or client": "Elija un ticket o un client",
- "It was not able to create the invoice": "No se pudo crear la factura"
+ "Select ticket or client": "Elija un ticket o un client",
+ "It was not able to create the invoice": "No se pudo crear la factura",
+ "ticketCommercial": "El ticket {{ ticket }} para el vendedor {{ salesMan }} está en preparación. (mensaje generado automáticamente)",
+ "This PDA is already assigned to another user": "Esta PDA ya está asignado a otro usuario",
+ "You can only have one PDA": "Solo puedes tener una PDA",
+ "Incoterms and Customs agent are required for a non UEE member": "Se requieren Incoterms y agente de aduanas para un no miembro de la UEE",
+ "You can not use the same password": "No puedes usar la misma contraseña"
}
diff --git a/loopback/locale/fr.json b/loopback/locale/fr.json
index 44f5e35d38..6f3919e187 100644
--- a/loopback/locale/fr.json
+++ b/loopback/locale/fr.json
@@ -123,8 +123,9 @@
"Added sale to ticket": "J'ai ajouté la ligne suivante au ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}",
"Changed sale discount": "J'ai changé le rabais des lignes suivantes du ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
"Created claim": "J'ai créé la réclamation [{{claimId}}]({{{claimUrl}}}) des lignes suivantes du ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
- "Changed sale price": "J'ai changé le prix de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* du ticket [{{ticketId}}]({{{ticketUrl}}})",
- "Changed sale quantity": "J'ai changé la quantité de {{itemId}} {{concept}} de {{oldQuantity}} ➔ {{newQuantity}} du ticket [{{ticketId}}]({{{ticketUrl}}})",
+ "Changed sale price": " le prix de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* du ticket [{{ticketId}}]({{{ticketUrl}}})",,
+ "Changed sale quantity": "J'ai changé {{changes}} du ticket [{{ticketId}}]({{{ticketUrl}}})",
+ "Changes in sales": "la quantité de {{itemId}} {{concept}} de {{oldQuantity}} ➔ {{newQuantity}}",
"State": "État",
"regular": "normal",
"reserved": "réservé",
@@ -357,4 +358,4 @@
"This workCenter is already assigned to this agency": "Ce centre de travail est déjà assigné à cette agence",
"Select ticket or client": "Choisissez un ticket ou un client",
"It was not able to create the invoice": "Il n'a pas été possible de créer la facture"
-}
\ No newline at end of file
+}
diff --git a/loopback/locale/pt.json b/loopback/locale/pt.json
index b11eeefc6c..3c156506c4 100644
--- a/loopback/locale/pt.json
+++ b/loopback/locale/pt.json
@@ -124,7 +124,8 @@
"Changed sale discount": "Desconto da venda alterado no ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
"Created claim": "Reclamação criada [{{claimId}}]({{{claimUrl}}}) no ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
"Changed sale price": "Preço da venda alterado para [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* no ticket [{{ticketId}}]({{{ticketUrl}}})",
- "Changed sale quantity": "Quantidade da venda alterada para [{{itemId}} {{concept}}]({{{itemUrl}}}) de {{oldQuantity}} ➔ *{{newQuantity}}* no ticket [{{ticketId}}]({{{ticketUrl}}})",
+ "Changed sale quantity": "Quantidade da venda alterada para {{changes}} no ticket [{{ticketId}}]({{{ticketUrl}}})",
+ "Changes in sales": " [{{itemId}} {{concept}}]({{{itemUrl}}}) de {{oldQuantity}} ➔ *{{newQuantity}}* ",
"State": "Estado",
"regular": "normal",
"reserved": "reservado",
@@ -357,4 +358,4 @@
"This workCenter is already assigned to this agency": "Este centro de trabalho já está atribuído a esta agência",
"Select ticket or client": "Selecione um ticket ou cliente",
"It was not able to create the invoice": "Não foi possível criar a fatura"
-}
\ No newline at end of file
+}
diff --git a/loopback/server/boot/isProduction.js b/loopback/server/boot/isProduction.js
new file mode 100644
index 0000000000..151afa9cbe
--- /dev/null
+++ b/loopback/server/boot/isProduction.js
@@ -0,0 +1,3 @@
+module.exports = (localAsProduction = true) => {
+ return (!process.env.NODE_ENV && localAsProduction) || process.env.NODE_ENV == 'production';
+};
diff --git a/loopback/util/log.js b/loopback/util/log.js
index 76e87781d9..d2b78ce706 100644
--- a/loopback/util/log.js
+++ b/loopback/util/log.js
@@ -85,8 +85,12 @@ exports.translateValues = async(instance, changes, options = {}) => {
exports.getChanges = (original, changes) => {
const oldChanges = {};
const newChanges = {};
+ const dateRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
for (let property in changes) {
+ if (dateRegex.test(original[property]))
+ original[property] = new Date(Date.parse(original[property]));
+
const firstChar = property.substring(0, 1);
const isPrivate = firstChar == '$';
if (isPrivate) return;
diff --git a/modules/account/back/models/ldap-config.js b/modules/account/back/models/ldap-config.js
index 89f0add486..583ce084ba 100644
--- a/modules/account/back/models/ldap-config.js
+++ b/modules/account/back/models/ldap-config.js
@@ -3,9 +3,10 @@ const app = require('vn-loopback/server/server');
const ldap = require('../util/ldapjs-extra');
const crypto = require('crypto');
const nthash = require('smbhash').nthash;
+const isProduction = require('vn-loopback/server/boot/isProduction');
module.exports = Self => {
- const shouldSync = process.env.NODE_ENV !== 'test';
+ const shouldSync = isProduction();
Self.getLinker = async function() {
return await Self.findOne({
diff --git a/modules/account/back/models/samba-config.js b/modules/account/back/models/samba-config.js
index 927510a291..359b4b1875 100644
--- a/modules/account/back/models/samba-config.js
+++ b/modules/account/back/models/samba-config.js
@@ -1,6 +1,7 @@
const ldap = require('../util/ldapjs-extra');
const execFile = require('child_process').execFile;
+const isProduction = require('vn-loopback/server/boot/isProduction');
/**
* Summary of userAccountControl flags:
@@ -12,7 +13,7 @@ const UserAccountControlFlags = {
};
module.exports = Self => {
- const shouldSync = process.env.NODE_ENV !== 'test';
+ const shouldSync = isProduction();
Self.getLinker = async function() {
return await Self.findOne({
diff --git a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js
index 393c3b10d1..a0dc2248c4 100644
--- a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js
+++ b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js
@@ -101,7 +101,7 @@ module.exports = Self => {
clientFk: claim.ticket().clientFk,
shipped: today,
landed: today,
- nickname: claim.ticket().address().nickname,
+ nickname: `Abono del: ${claim.ticketFk}`,
warehouseFk: claim.ticket().warehouseFk,
companyFk: claim.ticket().companyFk,
addressFk: claim.ticket().addressFk,
diff --git a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.spec.js b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.spec.js
index b05b2ac155..156caaeec6 100644
--- a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.spec.js
+++ b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.spec.js
@@ -6,6 +6,7 @@ describe('claimBeginning', () => {
const claimManagerId = 72;
const activeCtx = {
accessToken: {userId: claimManagerId},
+ __: value => value
};
const ctx = {req: activeCtx};
diff --git a/modules/claim/back/methods/claim/updateClaim.js b/modules/claim/back/methods/claim/updateClaim.js
index a206d7f3e2..c99e0e2f14 100644
--- a/modules/claim/back/methods/claim/updateClaim.js
+++ b/modules/claim/back/methods/claim/updateClaim.js
@@ -88,15 +88,17 @@ module.exports = Self => {
const updatedClaim = await claim.updateAttributes(args, myOptions);
// When pickup has been changed
- if (salesPerson && changedPickup && updatedClaim.pickup)
- await notifyPickUp(ctx, salesPerson.id, claim);
+ if (salesPerson) {
+ if (changedPickup && updatedClaim.pickup)
+ await notifyPickUp(ctx, salesPerson.id, claim);
- // When claimState has been changed
- if (args.claimStateFk) {
- const newState = await models.ClaimState.findById(args.claimStateFk, null, myOptions);
- await notifyStateChange(ctx, salesPerson.id, claim, newState.description);
- if (newState.code == 'canceled')
- await notifyStateChange(ctx, claim.workerFk, claim, newState.description);
+ // When claimState has been changed
+ if (args.claimStateFk) {
+ const newState = await models.ClaimState.findById(args.claimStateFk, null, myOptions);
+ await notifyStateChange(ctx, salesPerson.id, claim, newState.description);
+ if (newState.code == 'canceled')
+ await notifyStateChange(ctx, claim.workerFk, claim, newState.description);
+ }
}
if (tx) await tx.commit();
diff --git a/modules/client/back/methods/client/clientDebtStatementPdf.js b/modules/client/back/methods/client/clientDebtStatementPdf.js
index 845527ace6..ebe28affc6 100644
--- a/modules/client/back/methods/client/clientDebtStatementPdf.js
+++ b/modules/client/back/methods/client/clientDebtStatementPdf.js
@@ -40,7 +40,8 @@ module.exports = Self => {
http: {
path: '/:id/client-debt-statement-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.clientDebtStatementPdf = (ctx, id) => Self.printReport(ctx, id, 'client-debt-statement');
diff --git a/modules/client/back/methods/client/createAddress.js b/modules/client/back/methods/client/createAddress.js
index 8e6db2a22d..2709632cb9 100644
--- a/modules/client/back/methods/client/createAddress.js
+++ b/modules/client/back/methods/client/createAddress.js
@@ -92,11 +92,8 @@ module.exports = function(Self) {
}, myOptions);
const isUeeMember = province.country().isUeeMember;
- if (!isUeeMember && !args.incotermsFk)
- throw new UserError(`Incoterms is required for a non UEE member`);
-
- if (!isUeeMember && !args.customsAgentFk)
- throw new UserError(`Customs agent is required for a non UEE member`);
+ if (!isUeeMember && (!args.incotermsFk || !args.customsAgentFk))
+ throw new UserError(`Incoterms and Customs agent are required for a non UEE member`);
delete args.ctx; // Remove unwanted properties
const newAddress = await models.Address.create(args, myOptions);
diff --git a/modules/client/back/methods/client/createReceipt.js b/modules/client/back/methods/client/createReceipt.js
index debdaf066b..23570baf23 100644
--- a/modules/client/back/methods/client/createReceipt.js
+++ b/modules/client/back/methods/client/createReceipt.js
@@ -3,6 +3,7 @@ const UserError = require('vn-loopback/util/user-error');
module.exports = function(Self) {
Self.remoteMethodCtx('createReceipt', {
description: 'Creates receipt and its compensation if necessary',
+ accessType: 'READ',
accepts: [{
arg: 'clientFk',
type: 'number',
@@ -45,7 +46,8 @@ module.exports = function(Self) {
http: {
verb: 'post',
path: '/:clientFk/createReceipt'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.createReceipt = async(ctx, options) => {
@@ -93,9 +95,11 @@ module.exports = function(Self) {
myOptions
);
} else if (accountingType.isAutoConciliated == true) {
- const description = `${originalClient.id} : ${originalClient.socialName} - ${accountingType.receiptDescription}`;
- const [xdiarioNew] = await Self.rawSql(
- `SELECT xdiario_new(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ledger;`,
+ const description =
+ `${originalClient.id} : ${originalClient.socialName} - ${accountingType.receiptDescription}`;
+ const [, [xdiarioNew]] = await Self.rawSql(
+ `CALL xdiario_new(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, @xdiarioNew);
+ SELECT @xdiarioNew ledger;`,
[
null,
date,
@@ -116,7 +120,7 @@ module.exports = function(Self) {
);
await Self.rawSql(
- `SELECT xdiario_new(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);`,
+ `CALL xdiario_new(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, @xdiarioNew);`,
[
xdiarioNew.ledger,
date,
diff --git a/modules/client/back/methods/client/creditRequestPdf.js b/modules/client/back/methods/client/creditRequestPdf.js
index a4f4ed1288..44c74dd7c3 100644
--- a/modules/client/back/methods/client/creditRequestPdf.js
+++ b/modules/client/back/methods/client/creditRequestPdf.js
@@ -35,7 +35,8 @@ module.exports = Self => {
http: {
path: '/:id/credit-request-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.creditRequestPdf = (ctx, id) => Self.printReport(ctx, id, 'credit-request');
diff --git a/modules/client/back/methods/client/extendedListFilter.js b/modules/client/back/methods/client/extendedListFilter.js
index 27bbe2a359..174970a2fe 100644
--- a/modules/client/back/methods/client/extendedListFilter.js
+++ b/modules/client/back/methods/client/extendedListFilter.js
@@ -123,7 +123,7 @@ module.exports = Self => {
c.hasLcr,
c.hasCoreVnl,
ct.id AS countryFk,
- ct.country,
+ ct.name country,
p.id AS provinceFk,
p.name AS province,
u.id AS salesPersonFk,
diff --git a/modules/client/back/methods/client/incotermsAuthorizationPdf.js b/modules/client/back/methods/client/incotermsAuthorizationPdf.js
index ffe17c72fc..59e9f5d5c7 100644
--- a/modules/client/back/methods/client/incotermsAuthorizationPdf.js
+++ b/modules/client/back/methods/client/incotermsAuthorizationPdf.js
@@ -47,7 +47,8 @@ module.exports = Self => {
http: {
path: '/:id/incoterms-authorization-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.incotermsAuthorizationPdf = (ctx, id) => Self.printReport(ctx, id, 'incoterms-authorization');
diff --git a/modules/client/back/methods/client/letterDebtorPdf.js b/modules/client/back/methods/client/letterDebtorPdf.js
index 9438691430..0b7880e375 100644
--- a/modules/client/back/methods/client/letterDebtorPdf.js
+++ b/modules/client/back/methods/client/letterDebtorPdf.js
@@ -41,7 +41,8 @@ module.exports = Self => {
http: {
path: '/:id/letter-debtor-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.letterDebtorPdf = (ctx, id) => Self.printReport(ctx, id, 'letter-debtor');
diff --git a/modules/client/back/methods/client/specs/createAddress.spec.js b/modules/client/back/methods/client/specs/createAddress.spec.js
index 0841ad98ce..ae179cf6cc 100644
--- a/modules/client/back/methods/client/specs/createAddress.spec.js
+++ b/modules/client/back/methods/client/specs/createAddress.spec.js
@@ -50,7 +50,7 @@ describe('Address createAddress', () => {
}
expect(error).toBeDefined();
- expect(error.message).toEqual('Incoterms is required for a non UEE member');
+ expect(error.message).toEqual('Incoterms and Customs agent are required for a non UEE member');
});
it('should throw a non uee member error if no customsAgent is defined', async() => {
@@ -81,7 +81,7 @@ describe('Address createAddress', () => {
}
expect(error).toBeDefined();
- expect(error.message).toEqual('Customs agent is required for a non UEE member');
+ expect(error.message).toEqual('Incoterms and Customs agent are required for a non UEE member');
});
it('should create a new address and set as a client default address', async() => {
diff --git a/modules/client/back/methods/defaulter/filter.js b/modules/client/back/methods/defaulter/filter.js
index 220cb957b0..ac9504ec23 100644
--- a/modules/client/back/methods/defaulter/filter.js
+++ b/modules/client/back/methods/defaulter/filter.js
@@ -69,7 +69,7 @@ module.exports = Self => {
uw.name workerName,
c.creditInsurance,
d.defaulterSinced,
- cn.country,
+ cn.name country,
c.countryFk,
pm.name payMethod
FROM vn.defaulter d
diff --git a/modules/client/back/methods/receipt/balanceCompensationPdf.js b/modules/client/back/methods/receipt/balanceCompensationPdf.js
index e790d54a14..74cbb01f6e 100644
--- a/modules/client/back/methods/receipt/balanceCompensationPdf.js
+++ b/modules/client/back/methods/receipt/balanceCompensationPdf.js
@@ -29,7 +29,8 @@ module.exports = Self => {
http: {
path: '/:id/balance-compensation-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.balanceCompensationPdf = (ctx, id) => Self.printReport(ctx, id, 'balance-compensation');
diff --git a/modules/client/back/methods/receipt/receiptPdf.js b/modules/client/back/methods/receipt/receiptPdf.js
index 6e49de22ac..da33f1ed46 100644
--- a/modules/client/back/methods/receipt/receiptPdf.js
+++ b/modules/client/back/methods/receipt/receiptPdf.js
@@ -34,7 +34,8 @@ module.exports = Self => {
http: {
path: '/:id/receipt-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.receiptPdf = (ctx, id) => Self.printReport(ctx, id, 'receipt');
diff --git a/modules/client/back/methods/sms/send.js b/modules/client/back/methods/sms/send.js
index 94b2b6c276..2b5674f86c 100644
--- a/modules/client/back/methods/sms/send.js
+++ b/modules/client/back/methods/sms/send.js
@@ -1,5 +1,6 @@
const got = require('got');
const UserError = require('vn-loopback/util/user-error');
+const isProduction = require('vn-loopback/server/boot/isProduction');
module.exports = Self => {
Self.remoteMethod('send', {
@@ -47,7 +48,7 @@ module.exports = Self => {
let response;
try {
- if (process.env.NODE_ENV !== 'production')
+ if (!isProduction(false))
response = {result: [{status: 'ok'}]};
else {
const jsonTest = {
diff --git a/modules/client/back/models/XDiario.json b/modules/client/back/models/XDiario.json
index be543393de..5c277783a9 100644
--- a/modules/client/back/models/XDiario.json
+++ b/modules/client/back/models/XDiario.json
@@ -76,7 +76,16 @@
},
"enlazadoSage": {
"type": "boolean"
- }
+ },
+ "enlazado": {
+ "type": "boolean"
+ },
+ "key": {
+ "type": "number",
+ "mysql": {
+ "columnName": "CLAVE"
+ }
+ }
},
"relations": {
"company": {
diff --git a/modules/client/back/models/business.json b/modules/client/back/models/business.json
index 7ad2d307ff..58e989ae08 100644
--- a/modules/client/back/models/business.json
+++ b/modules/client/back/models/business.json
@@ -10,6 +10,9 @@
"id": {
"type": "number",
"id": true
+ },
+ "workcenterFk" : {
+ "type": "number"
}
},
"relations": {
@@ -24,4 +27,4 @@
"foreignKey": "departmentFk"
}
}
-}
\ No newline at end of file
+}
diff --git a/modules/client/front/address/create/index.html b/modules/client/front/address/create/index.html
index 20e7b38e1a..cd2be39c98 100644
--- a/modules/client/front/address/create/index.html
+++ b/modules/client/front/address/create/index.html
@@ -61,7 +61,7 @@
rule>
{{code}} - {{town.name}} ({{town.province.name}},
- {{town.province.country.country}})
+ {{town.province.country.name}})
{{name}}, {{province.name}}
- ({{province.country.country}})
+ ({{province.country.name}})
- {{name}} ({{country.country}})
+ {{name}} ({{country.name}})
diff --git a/modules/client/front/address/edit/index.html b/modules/client/front/address/edit/index.html
index e6b1dc71ef..4bab3aeae4 100644
--- a/modules/client/front/address/edit/index.html
+++ b/modules/client/front/address/edit/index.html
@@ -74,7 +74,7 @@
rule>
{{code}} - {{town.name}} ({{town.province.name}},
- {{town.province.country.country}})
+ {{town.province.country.name}})
{{name}}, {{province.name}}
- ({{province.country.country}})
+ ({{province.country.name}})
- {{name}} ({{country.country}})
+ {{name}} ({{country.name}})
diff --git a/modules/client/front/address/index/index.html b/modules/client/front/address/index/index.html
index ef3da40519..8ef4232137 100644
--- a/modules/client/front/address/index/index.html
+++ b/modules/client/front/address/index/index.html
@@ -50,7 +50,7 @@
{{::address.postalCode}} -
{{::address.city}},
{{::address.province.name}},
- {{::address.province.country.country}}
+ {{::address.province.country.name}}
{{::address.phone}}
,
diff --git a/modules/client/front/create/index.html b/modules/client/front/create/index.html
index b5c23ecfff..abd974cbf8 100644
--- a/modules/client/front/create/index.html
+++ b/modules/client/front/create/index.html
@@ -66,7 +66,7 @@
rule>
{{code}} - {{town.name}} ({{town.province.name}},
- {{town.province.country.country}})
+ {{town.province.country.name}})
{{name}}, {{province.name}}
- ({{province.country.country}})
+ ({{province.country.name}})
@@ -101,14 +101,14 @@
url="Provinces/location"
fields="['id', 'name', 'countryFk']"
rule>
- {{name}} ({{country.country}})
+ {{name}} ({{country.name}})
+ show-field="name">
diff --git a/modules/client/front/fiscal-data/index.html b/modules/client/front/fiscal-data/index.html
index c2bf86f70d..c366c8ca3d 100644
--- a/modules/client/front/fiscal-data/index.html
+++ b/modules/client/front/fiscal-data/index.html
@@ -16,7 +16,7 @@
auto-load="true"
url="Countries"
data="countries"
- order="country">
+ order="name">
{{code}} - {{town.name}} ({{town.province.name}},
- {{town.province.country.country}})
+ {{town.province.country.name}})
{{name}}, {{province.name}}
- ({{province.country.country}})
+ ({{province.country.name}})
@@ -126,14 +126,14 @@
show-field="name"
value-field="id"
rule>
- {{name}} ({{country.country}})
+ {{name}} ({{country.name}})
diff --git a/modules/client/front/summary/index.html b/modules/client/front/summary/index.html
index a42e192d06..3a46a49597 100644
--- a/modules/client/front/summary/index.html
+++ b/modules/client/front/summary/index.html
@@ -104,7 +104,7 @@
value="{{$ctrl.summary.province.name}}">
+ value="{{$ctrl.summary.country.name}}">
diff --git a/modules/entry/back/methods/entry/addFromBuy.js b/modules/entry/back/methods/entry/addFromBuy.js
index 307c04b97e..e5cc427a85 100644
--- a/modules/entry/back/methods/entry/addFromBuy.js
+++ b/modules/entry/back/methods/entry/addFromBuy.js
@@ -76,7 +76,6 @@ module.exports = Self => {
packing: buyUltimate.packing,
grouping: buyUltimate.grouping,
groupingMode: buyUltimate.groupingMode,
- containerFk: buyUltimate.containerFk,
comissionValue: buyUltimate.comissionValue,
packageValue: buyUltimate.packageValue,
location: buyUltimate.location,
diff --git a/modules/entry/back/model-config.json b/modules/entry/back/model-config.json
index 7b6e236857..dc7fd86be2 100644
--- a/modules/entry/back/model-config.json
+++ b/modules/entry/back/model-config.json
@@ -22,5 +22,8 @@
},
"EntryObservation": {
"dataSource": "vn"
+ },
+ "EntryType": {
+ "dataSource": "vn"
}
-}
+}
\ No newline at end of file
diff --git a/modules/entry/back/models/buy.json b/modules/entry/back/models/buy.json
index 35861fd81a..14cafde06b 100644
--- a/modules/entry/back/models/buy.json
+++ b/modules/entry/back/models/buy.json
@@ -63,9 +63,6 @@
"isIgnored": {
"type": "boolean"
},
- "containerFk": {
- "type": "number"
- },
"location": {
"type": "number"
},
diff --git a/modules/entry/back/models/entry-type.json b/modules/entry/back/models/entry-type.json
new file mode 100644
index 0000000000..989aa3a8aa
--- /dev/null
+++ b/modules/entry/back/models/entry-type.json
@@ -0,0 +1,25 @@
+{
+ "name": "EntryType",
+ "base": "VnModel",
+ "mixins": {
+ "Loggable": true
+ },
+ "options": {
+ "mysql": {
+ "table": "entryType"
+ }
+ },
+ "properties": {
+ "code": {
+ "type": "string",
+ "id": true,
+ "description": "Identifier"
+ },
+ "description": {
+ "type": "string"
+ },
+ "isInformal": {
+ "type": "boolean"
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/entry/back/models/entry.json b/modules/entry/back/models/entry.json
index ab451219eb..833edf14d8 100644
--- a/modules/entry/back/models/entry.json
+++ b/modules/entry/back/models/entry.json
@@ -35,9 +35,9 @@
},
"isVirtual": {
"type": "boolean",
- "mysql": {
- "columnName": "isRaid"
- }
+ "mysql": {
+ "columnName": "isRaid"
+ }
},
"isRaid": {
"type": "boolean"
@@ -53,9 +53,9 @@
},
"observation": {
"type": "string",
- "mysql": {
- "columnName": "evaNotes"
- }
+ "mysql": {
+ "columnName": "evaNotes"
+ }
},
"loadPriority": {
"type": "number"
@@ -101,6 +101,11 @@
"type": "belongsTo",
"model": "Account",
"foreignKey": "observationEditorFk"
+ },
+ "entryType": {
+ "type": "belongsTo",
+ "model": "EntryType",
+ "foreignKey": "typeFk"
}
}
-}
+}
\ No newline at end of file
diff --git a/modules/invoiceIn/back/methods/invoice-in/exchangeRateUpdate.js b/modules/invoiceIn/back/methods/invoice-in/exchangeRateUpdate.js
index 3ad06b242b..989b1d4a24 100644
--- a/modules/invoiceIn/back/methods/invoice-in/exchangeRateUpdate.js
+++ b/modules/invoiceIn/back/methods/invoice-in/exchangeRateUpdate.js
@@ -54,6 +54,20 @@ module.exports = Self => {
value: rate
});
}
+ const monday = 1;
+ if (xmlDateWithoutTime.getDay() === monday) {
+ const saturday = new Date(xmlDateWithoutTime);
+ saturday.setDate(xmlDateWithoutTime.getDate() - 2);
+ const sunday = new Date(xmlDateWithoutTime);
+ sunday.setDate(xmlDateWithoutTime.getDate() - 1);
+
+ for (const date of [saturday, sunday]) {
+ await models.ReferenceRate.upsertWithWhere(
+ {currencyFk: currency.id, dated: date},
+ {currencyFk: currency.id, dated: date, value: rate}
+ );
+ }
+ }
}
}
}
diff --git a/modules/invoiceIn/back/methods/invoice-in/invoiceInPdf.js b/modules/invoiceIn/back/methods/invoice-in/invoiceInPdf.js
index 681a19fc69..1e9da86a47 100644
--- a/modules/invoiceIn/back/methods/invoice-in/invoiceInPdf.js
+++ b/modules/invoiceIn/back/methods/invoice-in/invoiceInPdf.js
@@ -29,7 +29,8 @@ module.exports = Self => {
http: {
path: '/:id/invoice-in-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.invoiceInPdf = (ctx, id) => Self.printReport(ctx, id, 'invoiceIn');
diff --git a/modules/invoiceIn/back/methods/invoice-in/specs/toUnbook.spec.js b/modules/invoiceIn/back/methods/invoice-in/specs/toUnbook.spec.js
new file mode 100644
index 0000000000..b7d98e3078
--- /dev/null
+++ b/modules/invoiceIn/back/methods/invoice-in/specs/toUnbook.spec.js
@@ -0,0 +1,32 @@
+const models = require('vn-loopback/server/server').models;
+
+describe('invoiceIn toUnbook()', () => {
+ it('should check that invoiceIn is unbooked', async() => {
+ const userId = 1;
+ const ctx = {
+ req: {
+
+ accessToken: {userId: userId},
+ headers: {origin: 'http://localhost:5000'},
+ }
+ };
+ const invoiceInId = 1;
+ const tx = await models.InvoiceIn.beginTransaction({});
+ const options = {transaction: tx};
+
+ try {
+ await models.InvoiceIn.toBook(ctx, invoiceInId, options);
+ const bookEntry = await models.InvoiceIn.toUnbook(ctx, invoiceInId, options);
+ const invoiceIn = await models.InvoiceIn.findById(invoiceInId, null, options);
+
+ expect(bookEntry.accountingEntries).toEqual(4);
+ expect(bookEntry.isLinked).toBeFalsy();
+ expect(invoiceIn.isBooked).toEqual(false);
+
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ throw e;
+ }
+ });
+});
diff --git a/modules/invoiceIn/back/methods/invoice-in/toBook.js b/modules/invoiceIn/back/methods/invoice-in/toBook.js
index 778742911f..c3be5f8fcf 100644
--- a/modules/invoiceIn/back/methods/invoice-in/toBook.js
+++ b/modules/invoiceIn/back/methods/invoice-in/toBook.js
@@ -32,7 +32,7 @@ module.exports = Self => {
}
try {
- await Self.rawSql(`CALL vn.invoiceIn_booking(?)`, [id], myOptions);
+ await Self.rawSql(`CALL vn.invoiceIn_booking(?, NULL)`, [id], myOptions);
if (tx) await tx.commit();
} catch (e) {
if (tx) await tx.rollback();
diff --git a/modules/invoiceIn/back/methods/invoice-in/toUnbook.js b/modules/invoiceIn/back/methods/invoice-in/toUnbook.js
new file mode 100644
index 0000000000..a697e9ddca
--- /dev/null
+++ b/modules/invoiceIn/back/methods/invoice-in/toUnbook.js
@@ -0,0 +1,80 @@
+module.exports = Self => {
+ Self.remoteMethodCtx('toUnbook', {
+ description: 'To unbook the invoiceIn',
+ accessType: 'WRITE',
+ accepts: {
+ arg: 'id',
+ type: 'number',
+ required: true,
+ description: 'The invoiceIn id',
+ http: {source: 'path'}
+ },
+ returns: {
+ type: 'object',
+ root: true
+ },
+ http: {
+ path: '/:id/toUnbook',
+ verb: 'POST'
+ }
+ });
+
+ Self.toUnbook = async(ctx, invoiceInId, options) => {
+ let tx;
+ const models = Self.app.models;
+ const myOptions = {userId: ctx.req.accessToken.userId};
+
+ if (typeof options == 'object')
+ Object.assign(myOptions, options);
+
+ if (!myOptions.transaction) {
+ tx = await Self.beginTransaction({});
+ myOptions.transaction = tx;
+ }
+
+ try {
+ let isLinked;
+ let accountingEntries;
+
+ let bookEntry = await models.Xdiario.findOne({
+ fields: ['ASIEN'],
+ where: {
+ and: [
+ {key: invoiceInId},
+ {enlazado: false},
+ {enlazadoSage: false}
+ ]
+ }
+ }, myOptions);
+
+ let asien = bookEntry?.ASIEN;
+ if (asien) {
+ accountingEntries = await models.Xdiario.count({ASIEN: asien}, myOptions);
+
+ await models.Xdiario.destroyAll({ASIEN: asien}, myOptions);
+ await Self.updateAll({id: invoiceInId}, {isBooked: false}, myOptions);
+ } else {
+ const linkedBookEntry = await models.Xdiario.findOne({
+ fields: ['ASIEN'],
+ where: {
+ key: invoiceInId,
+ and: [{or: [{enlazado: true, enlazadoSage: true}]}]
+ }
+ }, myOptions);
+
+ asien = linkedBookEntry?.ASIEN;
+ isLinked = true;
+ }
+ if (tx) await tx.commit();
+
+ return {
+ isLinked,
+ bookEntry: asien,
+ accountingEntries
+ };
+ } catch (e) {
+ if (tx) await tx.rollback();
+ throw e;
+ }
+ };
+};
diff --git a/modules/invoiceIn/back/methods/invoice-in/updateInvoiceIn.js b/modules/invoiceIn/back/methods/invoice-in/updateInvoiceIn.js
new file mode 100644
index 0000000000..92a1ba8ee6
--- /dev/null
+++ b/modules/invoiceIn/back/methods/invoice-in/updateInvoiceIn.js
@@ -0,0 +1,104 @@
+module.exports = Self => {
+ Self.remoteMethodCtx('updateInvoiceIn', {
+ description: 'To update the invoiceIn attributes',
+ accessType: 'WRITE',
+ accepts: [{
+ arg: 'id',
+ type: 'number',
+ required: true,
+ description: 'The invoiceIn id',
+ http: {source: 'path'}
+ }, {
+ arg: 'supplierFk',
+ type: 'number',
+ required: true
+ }, {
+ arg: 'supplierRef',
+ type: 'any',
+ }, {
+ arg: 'issued',
+ type: 'any',
+ }, {
+ arg: 'operated',
+ type: 'any',
+ }, {
+ arg: 'deductibleExpenseFk',
+ type: 'any',
+ }, {
+ arg: 'dmsFk',
+ type: 'any',
+ }, {
+ arg: 'bookEntried',
+ type: 'any',
+ }, {
+ arg: 'booked',
+ type: 'any',
+ }, {
+ arg: 'currencyFk',
+ type: 'number',
+ required: true
+ }, {
+ arg: 'companyFk',
+ type: 'any',
+ }, {
+ arg: 'withholdingSageFk',
+ type: 'any',
+ },
+ ],
+ returns: {
+ type: 'object',
+ root: true
+ },
+ http: {
+ path: '/:id/updateInvoiceIn',
+ verb: 'PATCH'
+ }
+ });
+
+ Self.updateInvoiceIn = async(ctx,
+ id,
+ supplierFk,
+ supplierRef,
+ issued,
+ operated,
+ deductibleExpenseFk,
+ dmsFk,
+ bookEntried,
+ booked,
+ currencyFk,
+ companyFk,
+ withholdingSageFk,
+ options
+ ) => {
+ let tx;
+ const myOptions = {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 invoiceIn = await Self.findById(id, null, myOptions);
+ invoiceIn.updateAttributes({supplierFk,
+ supplierRef,
+ issued,
+ operated,
+ deductibleExpenseFk,
+ dmsFk,
+ bookEntried,
+ booked,
+ currencyFk,
+ companyFk,
+ withholdingSageFk
+ }, myOptions);
+ if (tx) await tx.commit();
+ return invoiceIn;
+ } catch (e) {
+ if (tx) await tx.rollback();
+ throw e;
+ }
+ };
+};
diff --git a/modules/invoiceIn/back/models/invoice-in-config.json b/modules/invoiceIn/back/models/invoice-in-config.json
index c0236e6544..638a97fa3d 100644
--- a/modules/invoiceIn/back/models/invoice-in-config.json
+++ b/modules/invoiceIn/back/models/invoice-in-config.json
@@ -26,7 +26,7 @@
"sageWithholding": {
"type": "belongsTo",
"model": "SageWithholding",
- "foreignKey": "sageWithholdingFk"
+ "foreignKey": "sageFarmerWithholdingFk"
}
},
"acls": [{
diff --git a/modules/invoiceIn/back/models/invoice-in.js b/modules/invoiceIn/back/models/invoice-in.js
index 31cdc1abe4..1e69c0ef8d 100644
--- a/modules/invoiceIn/back/models/invoice-in.js
+++ b/modules/invoiceIn/back/models/invoice-in.js
@@ -11,6 +11,8 @@ module.exports = Self => {
require('../methods/invoice-in/getSerial')(Self);
require('../methods/invoice-in/corrective')(Self);
require('../methods/invoice-in/exchangeRateUpdate')(Self);
+ require('../methods/invoice-in/toUnbook')(Self);
+ require('../methods/invoice-in/updateInvoiceIn')(Self);
Self.rewriteDbError(function(err) {
if (err.code === 'ER_ROW_IS_REFERENCED_2' && err.sqlMessage.includes('vehicleInvoiceIn'))
diff --git a/modules/invoiceIn/front/basic-data/index.html b/modules/invoiceIn/front/basic-data/index.html
index a22abbb330..fbb9b05a20 100644
--- a/modules/invoiceIn/front/basic-data/index.html
+++ b/modules/invoiceIn/front/basic-data/index.html
@@ -1,4 +1,4 @@
-
+
diff --git a/modules/invoiceIn/front/descriptor/index.js b/modules/invoiceIn/front/descriptor/index.js
index e005211a38..8fe270fa08 100644
--- a/modules/invoiceIn/front/descriptor/index.js
+++ b/modules/invoiceIn/front/descriptor/index.js
@@ -112,7 +112,7 @@ class Controller extends Descriptor {
}
isAgricultural() {
- return this.invoiceIn.supplier.sageWithholdingFk == this.config[0].sageWithholdingFk;
+ return this.invoiceIn.supplier.sageWithholdingFk == this.config[0].sageFarmerWithholdingFk;
}
}
diff --git a/modules/invoiceOut/back/methods/invoiceOut/download.js b/modules/invoiceOut/back/methods/invoiceOut/download.js
index 748e2df17b..f8d42072cf 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/download.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/download.js
@@ -1,5 +1,6 @@
const fs = require('fs-extra');
const path = require('path');
+const isProduction = require('vn-loopback/server/boot/isProduction');
module.exports = Self => {
Self.remoteMethodCtx('download', {
@@ -66,7 +67,7 @@ module.exports = Self => {
console.error(err);
});
- if (process.env.NODE_ENV == 'test') {
+ if (!isProduction()) {
try {
await fs.access(file.path);
} catch (error) {
diff --git a/modules/invoiceOut/back/methods/invoiceOut/invoiceOutPdf.js b/modules/invoiceOut/back/methods/invoiceOut/invoiceOutPdf.js
index 941d31596b..f4bb6baa9b 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/invoiceOutPdf.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/invoiceOutPdf.js
@@ -31,7 +31,8 @@ module.exports = Self => {
http: {
path: '/:reference/invoice-out-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.invoiceOutPdf = async(ctx, reference) => {
diff --git a/modules/invoiceOut/back/methods/invoiceOut/makePdfAndNotify.js b/modules/invoiceOut/back/methods/invoiceOut/makePdfAndNotify.js
index 4bba2498f3..e2dc15993f 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/makePdfAndNotify.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/makePdfAndNotify.js
@@ -33,7 +33,6 @@ module.exports = Self => {
try {
await Self.makePdf(id, options);
} catch (err) {
- console.error(err);
throw new UserError('Error while generating PDF', 'pdfError');
}
diff --git a/modules/invoiceOut/back/methods/invoiceOut/negativeBases.js b/modules/invoiceOut/back/methods/invoiceOut/negativeBases.js
index fc88308856..76ef29604a 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/negativeBases.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/negativeBases.js
@@ -59,7 +59,7 @@ module.exports = Self => {
`CREATE OR REPLACE TEMPORARY TABLE tmp.filter
ENGINE = MEMORY
SELECT co.code company,
- cou.country,
+ cou.name country,
c.id clientId,
c.socialName clientSocialName,
u.nickname workerSocialName,
diff --git a/modules/invoiceOut/back/methods/invoiceOut/transferInvoice.js b/modules/invoiceOut/back/methods/invoiceOut/transferInvoice.js
index 8e234d7ccc..b5eb9bed58 100644
--- a/modules/invoiceOut/back/methods/invoiceOut/transferInvoice.js
+++ b/modules/invoiceOut/back/methods/invoiceOut/transferInvoice.js
@@ -36,6 +36,11 @@ module.exports = Self => {
type: 'number',
required: true
},
+ {
+ arg: 'checked',
+ type: 'boolean',
+ required: true
+ },
],
returns: {
type: 'boolean',
@@ -51,6 +56,7 @@ module.exports = Self => {
const models = Self.app.models;
const myOptions = {userId: ctx.req.accessToken.userId};
const {id, refFk, newClientFk, cplusRectificationTypeFk, siiTypeInvoiceOutFk, invoiceCorrectionTypeFk} = ctx.args;
+ const checked = ctx.args.checked;
let tx;
if (typeof options == 'object')
Object.assign(myOptions, options);
@@ -96,9 +102,10 @@ module.exports = Self => {
await models.Ticket.invoiceTickets(ctx, refundTicketIds, invoiceCorrection, myOptions);
- const [invoiceId] = await models.Ticket.invoiceTicketsAndPdf(ctx, clonedTicketIds, null, myOptions);
-
- return invoiceId;
+ if (!checked) {
+ const [invoiceId] = await models.Ticket.invoiceTicketsAndPdf(ctx, clonedTicketIds, null, myOptions);
+ return invoiceId;
+ }
} catch (e) {
if (tx) await tx.rollback();
throw e;
diff --git a/modules/invoiceOut/back/models/invoice-out.js b/modules/invoiceOut/back/models/invoice-out.js
index e4fcc1a69a..b0e05b6262 100644
--- a/modules/invoiceOut/back/models/invoice-out.js
+++ b/modules/invoiceOut/back/models/invoice-out.js
@@ -1,6 +1,7 @@
const print = require('vn-print');
const path = require('path');
const UserError = require('vn-loopback/util/user-error');
+const isProduction = require('vn-loopback/server/boot/isProduction');
module.exports = Self => {
require('../methods/invoiceOut/filter')(Self);
@@ -59,7 +60,7 @@ module.exports = Self => {
hasPdf: true
}, options);
- if (process.env.NODE_ENV !== 'test') {
+ if (isProduction()) {
await print.storage.write(buffer, {
type: 'invoice',
path: pdfFile.path,
diff --git a/modules/invoiceOut/front/descriptor-menu/index.html b/modules/invoiceOut/front/descriptor-menu/index.html
index 1bf34831e4..da04c8e728 100644
--- a/modules/invoiceOut/front/descriptor-menu/index.html
+++ b/modules/invoiceOut/front/descriptor-menu/index.html
@@ -1,15 +1,3 @@
-
-
-
-
- {{::description}}
+ {{ ::description}}
@@ -226,7 +214,7 @@
+
+
+
+
diff --git a/modules/invoiceOut/front/descriptor-menu/index.js b/modules/invoiceOut/front/descriptor-menu/index.js
index 5184c137ed..0d7fb32dd5 100644
--- a/modules/invoiceOut/front/descriptor-menu/index.js
+++ b/modules/invoiceOut/front/descriptor-menu/index.js
@@ -7,6 +7,7 @@ class Controller extends Section {
super($element, $);
this.vnReport = vnReport;
this.vnEmail = vnEmail;
+ this.checked = true;
}
get invoiceOut() {
@@ -23,6 +24,26 @@ class Controller extends Section {
return this.aclService.hasAny(['invoicing']);
}
+ get isChecked() {
+ return this.checked;
+ }
+
+ set isChecked(value) {
+ this.checked = value;
+ }
+
+ $onInit() {
+ this.$http.get(`CplusRectificationTypes`, {filter: {order: 'description'}})
+ .then(res => {
+ this.cplusRectificationTypes = res.data;
+ this.cplusRectificationType = res.data.filter(type => type.description == 'I – Por diferencias')[0].id;
+ });
+ this.$http.get(`SiiTypeInvoiceOuts`, {filter: {where: {code: {like: 'R%'}}}})
+ .then(res => {
+ this.siiTypeInvoiceOuts = res.data;
+ this.siiTypeInvoiceOut = res.data.filter(type => type.code == 'R4')[0].id;
+ });
+ }
loadData() {
const filter = {
include: [
@@ -34,7 +55,7 @@ class Controller extends Section {
}, {
relation: 'client',
scope: {
- fields: ['id', 'name', 'email']
+ fields: ['id', 'name', 'email', 'hasToInvoiceByAddress']
}
}
]
@@ -136,12 +157,24 @@ class Controller extends Section {
newClientFk: this.clientId,
cplusRectificationTypeFk: this.cplusRectificationType,
siiTypeInvoiceOutFk: this.siiTypeInvoiceOut,
- invoiceCorrectionTypeFk: this.invoiceCorrectionType
+ invoiceCorrectionTypeFk: this.invoiceCorrectionType,
+ checked: this.checked
};
- this.$http.post(`InvoiceOuts/transferInvoice`, params).then(res => {
- const invoiceId = res.data;
- this.vnApp.showSuccess(this.$t('Transferred invoice'));
- this.$state.go('invoiceOut.card.summary', {id: invoiceId});
+
+ this.$http.get(`Clients/${this.clientId}`).then(response => {
+ const clientData = response.data;
+ const hasToInvoiceByAddress = clientData.hasToInvoiceByAddress;
+
+ if (this.checked && hasToInvoiceByAddress) {
+ if (!window.confirm(this.$t('confirmTransferInvoice')))
+ return;
+ }
+
+ this.$http.post(`InvoiceOuts/transferInvoice`, params).then(res => {
+ const invoiceId = res.data;
+ this.vnApp.showSuccess(this.$t('Transferred invoice'));
+ this.$state.go('invoiceOut.card.summary', {id: invoiceId});
+ });
});
}
}
diff --git a/modules/invoiceOut/front/descriptor-menu/locale/en.yml b/modules/invoiceOut/front/descriptor-menu/locale/en.yml
index 8fad5f25e7..32ea03442b 100644
--- a/modules/invoiceOut/front/descriptor-menu/locale/en.yml
+++ b/modules/invoiceOut/front/descriptor-menu/locale/en.yml
@@ -1,3 +1,7 @@
The following refund tickets have been created: "The following refund tickets have been created: {{ticketIds}}"
Transfer invoice to...: Transfer invoice to...
-Cplus Type: Cplus Type
\ No newline at end of file
+Cplus Type: Cplus Type
+transferInvoice: Transfer Invoice
+destinationClient: Bill destination client
+transferInvoiceInfo: New tickets from the destination customer will be generated in the default consignee.
+confirmTransferInvoice: Destination customer has marked to bill by consignee, do you want to continue?
\ No newline at end of file
diff --git a/modules/invoiceOut/front/descriptor-menu/locale/es.yml b/modules/invoiceOut/front/descriptor-menu/locale/es.yml
index 9285fafa7f..92c1098782 100644
--- a/modules/invoiceOut/front/descriptor-menu/locale/es.yml
+++ b/modules/invoiceOut/front/descriptor-menu/locale/es.yml
@@ -24,3 +24,7 @@ Refund...: Abono...
Transfer invoice to...: Transferir factura a...
Rectificative type: Tipo rectificativa
Transferred invoice: Factura transferida
+transferInvoice: Transferir factura
+destinationClient: Facturar cliente destino
+transferInvoiceInfo: Los nuevos tickets del cliente destino serán generados en el consignatario por defecto.
+confirmTransferInvoice: El cliente destino tiene marcado facturar por consignatario, ¿desea continuar?
\ No newline at end of file
diff --git a/modules/invoiceOut/front/index/manual/index.html b/modules/invoiceOut/front/index/manual/index.html
index 5872911e46..3b991618d1 100644
--- a/modules/invoiceOut/front/index/manual/index.html
+++ b/modules/invoiceOut/front/index/manual/index.html
@@ -27,7 +27,7 @@
{
accessType: 'READ',
accepts: [{
arg: 'barcode',
- type: 'number',
+ type: 'string',
required: true,
description: 'barcode'
}],
@@ -18,7 +18,7 @@ module.exports = Self => {
}
});
- Self.toItem = async(barcode, options) => {
+ Self.toItem = async (barcode, options) => {
const myOptions = {};
if (typeof options == 'object')
diff --git a/modules/item/back/methods/item/labelPdf.js b/modules/item/back/methods/item/labelPdf.js
index c2462353d7..d7a50397e7 100644
--- a/modules/item/back/methods/item/labelPdf.js
+++ b/modules/item/back/methods/item/labelPdf.js
@@ -51,7 +51,8 @@ module.exports = Self => {
http: {
path: '/:id/label-pdf',
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.labelPdf = (ctx, id) => Self.printReport(ctx, id, 'item-label');
diff --git a/modules/item/back/methods/item/specs/getBalance.spec.js b/modules/item/back/methods/item/specs/getBalance.spec.js
index 5e5148595c..728b5f33e4 100644
--- a/modules/item/back/methods/item/specs/getBalance.spec.js
+++ b/modules/item/back/methods/item/specs/getBalance.spec.js
@@ -64,7 +64,7 @@ describe('item getBalance()', () => {
const secondItemBalance = await models.Item.getBalance(ctx, secondFilter, options);
expect(firstItemBalance[9].claimFk).toEqual(null);
- expect(secondItemBalance[4].claimFk).toEqual(2);
+ expect(secondItemBalance[7].claimFk).toEqual(2);
await tx.rollback();
} catch (e) {
diff --git a/modules/item/back/models/expense.json b/modules/item/back/models/expense.json
index 468063602f..e661cbc666 100644
--- a/modules/item/back/models/expense.json
+++ b/modules/item/back/models/expense.json
@@ -9,7 +9,7 @@
"properties": {
"id": {
"id": true,
- "type": "number",
+ "type": "string",
"description": "Identifier"
},
"name": {
diff --git a/modules/item/back/models/item.json b/modules/item/back/models/item.json
index 9d48dcbfb1..10cff3e040 100644
--- a/modules/item/back/models/item.json
+++ b/modules/item/back/models/item.json
@@ -155,6 +155,9 @@
"minQuantity": {
"type": "number",
"description": "Min quantity"
+ },
+ "photoMotivation": {
+ "type": "string"
}
},
"relations": {
diff --git a/modules/item/front/summary/index.html b/modules/item/front/summary/index.html
index 5fe84591f2..13c671d29b 100644
--- a/modules/item/front/summary/index.html
+++ b/modules/item/front/summary/index.html
@@ -181,7 +181,7 @@
ng-show="!$ctrl.isBuyer && !$ctrl.isAdministrative">
Tax
-
diff --git a/modules/item/front/tax/index.html b/modules/item/front/tax/index.html
index e993f974fb..78858704fb 100644
--- a/modules/item/front/tax/index.html
+++ b/modules/item/front/tax/index.html
@@ -15,7 +15,7 @@
{
Self.remoteMethodCtx('upload', {
@@ -111,7 +112,7 @@ module.exports = Self => {
const destinationFile = path.join(
accessContainer.client.root, accessContainer.name, appName, `${toVersion}.7z`);
- if (process.env.NODE_ENV == 'test')
+ if (!isProduction())
await fs.unlink(srcFile);
else {
await fs.move(srcFile, destinationFile, {
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 bdafd14e23..c3da7f08bc 100644
--- a/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js
+++ b/modules/monitor/back/methods/sales-monitor/specs/salesFilter.spec.js
@@ -151,7 +151,7 @@ describe('SalesMonitor salesFilter()', () => {
const result = await models.SalesMonitor.salesFilter(ctx, filter, options);
const firstRow = result[0];
- expect(result.length).toEqual(12);
+ expect(result.length).toEqual(15);
expect(firstRow.alertLevel).not.toEqual(0);
await tx.rollback();
diff --git a/modules/route/back/methods/roadmap/clone.js b/modules/route/back/methods/roadmap/clone.js
index 456ed823d4..b74cf803c7 100644
--- a/modules/route/back/methods/roadmap/clone.js
+++ b/modules/route/back/methods/roadmap/clone.js
@@ -62,12 +62,12 @@ module.exports = Self => {
const clone = await models.Roadmap.create(roadmap, options);
- const expeditionTrucks = roadmap.expeditionTruck();
- expeditionTrucks.map(expeditionTruck => {
- expeditionTruck.roadmapFk = clone.id;
- return expeditionTruck;
+ const roadmapStops = roadmap.roadmapStop();
+ roadmapStops.map(roadmapStop => {
+ roadmapStop.roadmapFk = clone.id;
+ return roadmapStop;
});
- await models.ExpeditionTruck.create(expeditionTrucks, options);
+ await models.RoadmapStop.create(roadmapStops, options);
}
await tx.commit();
diff --git a/modules/route/back/methods/route/cmrs.js b/modules/route/back/methods/route/cmrs.js
index 814ff77c64..48d074624d 100644
--- a/modules/route/back/methods/route/cmrs.js
+++ b/modules/route/back/methods/route/cmrs.js
@@ -86,7 +86,7 @@ module.exports = Self => {
SELECT t.cmrFk,
t.id ticketFk,
t.routeFk,
- co.country,
+ co.name country,
t.clientFk,
IF(sub.id, TRUE, FALSE) hasCmrDms,
DATE(t.shipped) shipped
diff --git a/modules/route/back/methods/route/getTickets.js b/modules/route/back/methods/route/getTickets.js
index 0e7c9fe207..c0b952b701 100644
--- a/modules/route/back/methods/route/getTickets.js
+++ b/modules/route/back/methods/route/getTickets.js
@@ -87,10 +87,6 @@ module.exports = Self => {
const where = filter.where;
where['r.id'] = filter.id;
- where.and = [{or: [
- {'t.packages': {gt: 0}},
- {and: [{'ot.code': 'delivery'}, {'tob.observationTypeFk': {neq: null}}]}
- ]}];
stmt.merge(conn.makeWhere(filter.where));
stmt.merge(conn.makeGroupBy('t.id'));
diff --git a/modules/route/back/model-config.json b/modules/route/back/model-config.json
index 6cf8da9868..0cb48852f4 100644
--- a/modules/route/back/model-config.json
+++ b/modules/route/back/model-config.json
@@ -8,7 +8,7 @@
"DeliveryPoint": {
"dataSource": "vn"
},
- "ExpeditionTruck": {
+ "RoadmapStop": {
"dataSource": "vn"
},
"Roadmap": {
@@ -25,5 +25,8 @@
},
"RoutesMonitor": {
"dataSource": "vn"
+ },
+ "ExpeditionTruck": {
+ "dataSource": "vn"
}
}
diff --git a/modules/route/back/models/expedition-truck.json b/modules/route/back/models/expedition-truck.json
index 8edc7347f0..fc9cd90f0c 100644
--- a/modules/route/back/models/expedition-truck.json
+++ b/modules/route/back/models/expedition-truck.json
@@ -1,43 +1,9 @@
{
"name": "ExpeditionTruck",
- "base": "VnModel",
+ "base": "RoadmapStop",
"options": {
"mysql": {
"table": "expeditionTruck"
}
- },
- "properties": {
- "id": {
- "type": "number",
- "id": true,
- "description": "Identifier"
- },
- "roadmapFk": {
- "type": "number"
- },
- "warehouseFk": {
- "type": "number"
- },
- "eta": {
- "type": "date"
- },
- "description": {
- "type": "string"
- },
- "userFk": {
- "type": "number"
- }
- },
- "relations": {
- "roadmap": {
- "type": "belongsTo",
- "model": "Roadmap",
- "foreignKey": "roadmapFk"
- },
- "warehouse": {
- "type": "belongsTo",
- "model": "Warehouse",
- "foreignKey": "warehouseFk"
- }
- }
+ }
}
diff --git a/modules/route/back/models/roadmap.json b/modules/route/back/models/roadmap.json
index 2f6bb8c02c..01572d718b 100644
--- a/modules/route/back/models/roadmap.json
+++ b/modules/route/back/models/roadmap.json
@@ -54,9 +54,9 @@
"model": "Supplier",
"foreignKey": "supplierFk"
},
- "expeditionTruck": {
+ "roadmapStop": {
"type": "hasMany",
- "model": "ExpeditionTruck",
+ "model": "RoadmapStop",
"foreignKey": "roadmapFk"
}
}
diff --git a/modules/route/back/models/roadmapStop.json b/modules/route/back/models/roadmapStop.json
new file mode 100644
index 0000000000..51aa3a6db1
--- /dev/null
+++ b/modules/route/back/models/roadmapStop.json
@@ -0,0 +1,43 @@
+{
+ "name": "RoadmapStop",
+ "base": "VnModel",
+ "options": {
+ "mysql": {
+ "table": "roadmapStop"
+ }
+ },
+ "properties": {
+ "id": {
+ "type": "number",
+ "id": true,
+ "description": "Identifier"
+ },
+ "roadmapFk": {
+ "type": "number"
+ },
+ "warehouseFk": {
+ "type": "number"
+ },
+ "eta": {
+ "type": "date"
+ },
+ "description": {
+ "type": "string"
+ },
+ "userFk": {
+ "type": "number"
+ }
+ },
+ "relations": {
+ "roadmap": {
+ "type": "belongsTo",
+ "model": "Roadmap",
+ "foreignKey": "roadmapFk"
+ },
+ "warehouse": {
+ "type": "belongsTo",
+ "model": "Warehouse",
+ "foreignKey": "warehouseFk"
+ }
+ }
+}
diff --git a/modules/route/front/roadmap/stops/index.html b/modules/route/front/roadmap/stops/index.html
index b69492a21a..82f30c3263 100644
--- a/modules/route/front/roadmap/stops/index.html
+++ b/modules/route/front/roadmap/stops/index.html
@@ -1,22 +1,22 @@
@@ -61,9 +61,9 @@
-
- {{expeditionTruck.warehouse.name}}
- {{expeditionTruck.eta | date:'dd/MM/yyyy HH:mm'}}
+
+ {{roadmapStop.warehouse.name}}
+ {{roadmapStop.eta | date:'dd/MM/yyyy HH:mm'}}
@@ -75,14 +75,14 @@
+ ng-model="$ctrl.roadmapStop.eta">
diff --git a/modules/route/front/roadmap/summary/index.js b/modules/route/front/roadmap/summary/index.js
index 041b43ce34..46abe5ca2f 100644
--- a/modules/route/front/roadmap/summary/index.js
+++ b/modules/route/front/roadmap/summary/index.js
@@ -20,7 +20,7 @@ class Controller extends Component {
include: [
{relation: 'supplier'},
{relation: 'worker'},
- {relation: 'expeditionTruck',
+ {relation: 'roadmapStop',
scope: {
include: [
{relation: 'warehouse'}
@@ -36,19 +36,19 @@ class Controller extends Component {
const eta = new Date(this.roadmap.etd);
eta.setDate(eta.getDate() + 1);
- this.expeditionTruck = {eta: eta};
+ this.roadmapStop = {eta: eta};
}
onAddAccept() {
try {
const data = {
roadmapFk: this.roadmap.id,
- warehouseFk: this.expeditionTruck.warehouseFk,
- eta: this.expeditionTruck.eta,
- description: this.expeditionTruck.description
+ warehouseFk: this.roadmapStop.warehouseFk,
+ eta: this.roadmapStop.eta,
+ description: this.roadmapStop.description
};
- this.$http.post(`ExpeditionTrucks`, data)
+ this.$http.post(`RoadmapStops`, data)
.then(() => {
this.loadData();
this.vnApp.showSuccess(this.$t('Data saved!'));
diff --git a/modules/shelving/back/model-config.json b/modules/shelving/back/model-config.json
index 89a0832b06..6f3ffb5ea8 100644
--- a/modules/shelving/back/model-config.json
+++ b/modules/shelving/back/model-config.json
@@ -11,6 +11,12 @@
"Sector": {
"dataSource": "vn"
},
+ "SectorCollection": {
+ "dataSource": "vn"
+ },
+ "SectorCollectionSaleGroup": {
+ "dataSource": "vn"
+ },
"Train": {
"dataSource": "vn"
}
diff --git a/modules/shelving/back/models/sectorCollection.json b/modules/shelving/back/models/sectorCollection.json
new file mode 100644
index 0000000000..bf2cc79858
--- /dev/null
+++ b/modules/shelving/back/models/sectorCollection.json
@@ -0,0 +1,24 @@
+{
+ "name": "SectorCollection",
+ "base": "VnModel",
+ "options": {
+ "mysql": {
+ "table": "sectorCollection"
+ }
+ },
+ "properties": {
+ "id": {
+ "type": "number",
+ "id": true
+ },
+ "created": {
+ "type": "date"
+ },
+ "userFk": {
+ "type": "number"
+ },
+ "sectorFk": {
+ "type": "number"
+ }
+ }
+}
diff --git a/modules/shelving/back/models/sectorCollectionSaleGroup.json b/modules/shelving/back/models/sectorCollectionSaleGroup.json
new file mode 100644
index 0000000000..421bdc8855
--- /dev/null
+++ b/modules/shelving/back/models/sectorCollectionSaleGroup.json
@@ -0,0 +1,30 @@
+{
+ "name": "SectorCollectionSaleGroup",
+ "base": "VnModel",
+ "options": {
+ "mysql": {
+ "table": "sectorCollectionSaleGroup"
+ }
+ },
+ "properties": {
+ "id": {
+ "type": "number",
+ "id": true
+ },
+ "created": {
+ "type": "date"
+ }
+ },
+ "relations": {
+ "sectorCollection": {
+ "type": "belongsTo",
+ "model": "SectorCollection",
+ "foreignKey": "sectorCollectionFk"
+ },
+ "saleGroup": {
+ "type": "belongsTo",
+ "model": "SaleGroup",
+ "foreignKey": "saleGroupFk"
+ }
+ }
+}
diff --git a/modules/supplier/back/methods/supplier/getItemsPackaging.js b/modules/supplier/back/methods/supplier/getItemsPackaging.js
index c06195a554..8a27c89c4b 100644
--- a/modules/supplier/back/methods/supplier/getItemsPackaging.js
+++ b/modules/supplier/back/methods/supplier/getItemsPackaging.js
@@ -33,7 +33,7 @@ module.exports = Self => {
JOIN vn.item i ON i.id = b.itemFk
WHERE e.id = ? AND e.supplierFk = ?
GROUP BY i.id
- ) SELECT i.id, i.name, et.quantity, SUM(b.quantity) quantityTotal, et.printedStickers
+ ) SELECT i.id, i.name, et.quantity, SUM(b.quantity) quantityTotal, et.printedStickers, ic.url
FROM vn.buy b
JOIN vn.item i ON i.id = b.itemFk
JOIN vn.entry e ON e.id = b.entryFk
@@ -41,6 +41,7 @@ module.exports = Self => {
JOIN vn.buyConfig bc ON bc.monthsAgo
JOIN vn.travel t ON t.id = e.travelFk
LEFT JOIN entryTmp et ON et.id = i.id
+ JOIN hedera.imageConfig ic
WHERE e.supplierFk = ?
AND i.family IN ('EMB', 'CONT')
AND b.created > (util.VN_CURDATE() - INTERVAL bc.monthsAgo MONTH)
diff --git a/modules/supplier/front/address/create/index.html b/modules/supplier/front/address/create/index.html
index e45539445c..e3f8836415 100644
--- a/modules/supplier/front/address/create/index.html
+++ b/modules/supplier/front/address/create/index.html
@@ -43,7 +43,7 @@
rule>
{{code}} - {{town.name}} ({{town.province.name}},
- {{town.province.country.country}})
+ {{town.province.country.name}})
{{name}}, {{province.name}}
- ({{province.country.country}})
+ ({{province.country.name}})
- {{name}} ({{country.country}})
+ {{name}} ({{country.name}})
diff --git a/modules/supplier/front/address/edit/index.html b/modules/supplier/front/address/edit/index.html
index b6f90134bc..b966023dae 100644
--- a/modules/supplier/front/address/edit/index.html
+++ b/modules/supplier/front/address/edit/index.html
@@ -41,7 +41,7 @@
rule>
{{code}} - {{town.name}} ({{town.province.name}},
- {{town.province.country.country}})
+ {{town.province.country.name}})
{{name}}, {{province.name}}
- ({{province.country.country}})
+ ({{province.country.name}})
- {{name}} ({{country.country}})
+ {{name}} ({{country.name}})
diff --git a/modules/supplier/front/fiscal-data/index.html b/modules/supplier/front/fiscal-data/index.html
index 3fe67762fb..6455bf3fdb 100644
--- a/modules/supplier/front/fiscal-data/index.html
+++ b/modules/supplier/front/fiscal-data/index.html
@@ -16,7 +16,7 @@
auto-load="true"
url="Countries"
data="countries"
- order="country">
+ order="name">
{{code}} - {{town.name}} ({{town.province.name}},
- {{town.province.country.country}})
+ {{town.province.country.name}})
{{name}}, {{province.name}}
- ({{province.country.country}})
+ ({{province.country.name}})
- {{name}} ({{country.country}})
+ {{name}} ({{country.name}})
@@ -198,7 +198,7 @@
vn-name="country"
ng-model="$ctrl.supplier.countryFk"
data="countries"
- show-field="country"
+ show-field="name"
value-field="id"
rule>
diff --git a/modules/supplier/front/summary/index.html b/modules/supplier/front/summary/index.html
index d1b3ee20a9..5ba713fcf3 100644
--- a/modules/supplier/front/summary/index.html
+++ b/modules/supplier/front/summary/index.html
@@ -162,7 +162,7 @@
+ value="{{::$ctrl.summary.country.name}}">
diff --git a/modules/ticket/back/methods/ticket-request/confirm.js b/modules/ticket/back/methods/ticket-request/confirm.js
index 00310f33c3..7c17d00106 100644
--- a/modules/ticket/back/methods/ticket-request/confirm.js
+++ b/modules/ticket/back/methods/ticket-request/confirm.js
@@ -19,6 +19,9 @@ module.exports = Self => {
type: 'number',
required: true,
description: 'The requested item quantity',
+ }, {
+ arg: 'attenderFk',
+ type: 'number'
}],
returns: {
type: 'object',
@@ -73,12 +76,14 @@ module.exports = Self => {
ticketFk: request.ticketFk,
itemFk: ctx.args.itemFk,
quantity: ctx.args.quantity,
+ attenderFk: ctx.args.attenderFk,
concept: item.name
}, myOptions);
await request.updateAttributes({
saleFk: sale.id,
itemFk: sale.itemFk,
- isOk: true
+ isOk: true,
+ attenderFk: sale.attenderFk,
}, myOptions);
const query = `CALL vn.sale_calculateComponent(?, NULL)`;
diff --git a/modules/ticket/back/methods/ticket-tracking/specs/setDelivered.spec.js b/modules/ticket/back/methods/ticket-tracking/specs/setDelivered.spec.js
index 3d37221c4e..3d39ea278d 100644
--- a/modules/ticket/back/methods/ticket-tracking/specs/setDelivered.spec.js
+++ b/modules/ticket/back/methods/ticket-tracking/specs/setDelivered.spec.js
@@ -2,10 +2,12 @@ const models = require('vn-loopback/server/server').models;
const LoopBackContext = require('loopback-context');
describe('ticket setDelivered()', () => {
- const userId = 50;
+ const userId = 49;
const activeCtx = {
accessToken: {userId: userId},
+ __: value => value
};
+ const ctx = {req: activeCtx};
beforeAll(async() => {
spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
@@ -19,8 +21,6 @@ describe('ticket setDelivered()', () => {
try {
const options = {transaction: tx};
- const ctx = {req: {accessToken: {userId: 49}}};
-
const originalTicketOne = await models.Ticket.findById(8, null, options);
const originalTicketTwo = await models.Ticket.findById(10, null, options);
diff --git a/modules/ticket/back/methods/ticket/addSale.js b/modules/ticket/back/methods/ticket/addSale.js
index 826de6e129..8dc7a633cd 100644
--- a/modules/ticket/back/methods/ticket/addSale.js
+++ b/modules/ticket/back/methods/ticket/addSale.js
@@ -10,8 +10,8 @@ module.exports = Self => {
http: {source: 'path'}
},
{
- arg: 'itemId',
- type: 'number',
+ arg: 'barcode',
+ type: 'any',
required: true
},
{
@@ -29,7 +29,7 @@ module.exports = Self => {
}
});
- Self.addSale = async(ctx, id, itemId, quantity, options) => {
+ Self.addSale = async(ctx, id, barcode, quantity, options) => {
const $t = ctx.req.__; // $translate
const models = Self.app.models;
const myOptions = {userId: ctx.req.accessToken.userId};
@@ -46,7 +46,9 @@ module.exports = Self => {
try {
await models.Ticket.isEditableOrThrow(ctx, id, myOptions);
+ const itemId = await models.ItemBarcode.toItem(barcode, myOptions);
const item = await models.Item.findById(itemId, null, myOptions);
+
const ticket = await models.Ticket.findById(id, {
include: {
relation: 'client',
diff --git a/modules/ticket/back/methods/ticket/addSaleByCode.js b/modules/ticket/back/methods/ticket/addSaleByCode.js
deleted file mode 100644
index ca3d2cb071..0000000000
--- a/modules/ticket/back/methods/ticket/addSaleByCode.js
+++ /dev/null
@@ -1,56 +0,0 @@
-const UserError = require('vn-loopback/util/user-error');
-module.exports = Self => {
- Self.remoteMethodCtx('addSaleByCode', {
- description: 'Add a collection',
- accessType: 'WRITE',
- accepts: [
- {
- arg: 'barcode',
- type: 'string',
- required: true
- }, {
- arg: 'quantity',
- type: 'number',
- required: true
- }, {
- arg: 'ticketFk',
- type: 'number',
- required: true
- }, {
- arg: 'warehouseFk',
- type: 'number',
- required: true
- },
-
- ],
- http: {
- path: `/addSaleByCode`,
- verb: 'POST'
- },
- });
-
- Self.addSaleByCode = async(ctx, barcode, quantity, ticketFk, warehouseFk, options) => {
- const myOptions = {userId: ctx.req.accessToken.userId};
- let tx;
-
- if (typeof options == 'object')
- Object.assign(myOptions, options);
-
- if (!myOptions.transaction) {
- tx = await Self.beginTransaction({});
- myOptions.transaction = tx;
- }
-
- try {
- const [[item]] = await Self.rawSql('CALL vn.item_getInfo(?,?)', [barcode, warehouseFk], myOptions);
- if (!item?.available) throw new UserError('We do not have availability for the selected item');
-
- await Self.rawSql('CALL vn.collection_addItem(?, ?, ?)', [item.id, quantity, ticketFk], myOptions);
-
- if (tx) await tx.commit();
- } catch (e) {
- if (tx) await tx.rollback();
- throw e;
- }
- };
-};
diff --git a/modules/ticket/back/methods/ticket/closeAll.js b/modules/ticket/back/methods/ticket/closeAll.js
index d35bd1e3ea..35b9b1e379 100644
--- a/modules/ticket/back/methods/ticket/closeAll.js
+++ b/modules/ticket/back/methods/ticket/closeAll.js
@@ -138,12 +138,13 @@ module.exports = Self => {
JOIN alertLevel al ON al.id = ts.alertLevel
JOIN agencyMode am ON am.id = t.agencyModeFk
JOIN deliveryMethod dm ON dm.id = am.deliveryMethodFk
- JOIN zone z ON z.id = t.zoneFk
+ LEFT JOIN ticketObservation tob ON tob.ticketFk = t.id
SET t.routeFk = NULL
WHERE DATE(t.shipped) BETWEEN ? - INTERVAL 2 DAY AND util.dayEnd(?)
- AND al.code NOT IN('DELIVERED','PACKED')
- AND t.routeFk
- AND z.name LIKE '%MADRID%'`, [toDate, toDate], {userId: ctx.req.accessToken.userId});
+ AND al.code NOT IN ('DELIVERED', 'PACKED')
+ AND NOT t.packages
+ AND tob.id IS NULL
+ AND t.routeFk`, [toDate, toDate], {userId: ctx.req.accessToken.userId});
return {
message: 'Success'
diff --git a/modules/ticket/back/methods/ticket/closure.js b/modules/ticket/back/methods/ticket/closure.js
index 8c59dc3b0c..fba39f18fe 100644
--- a/modules/ticket/back/methods/ticket/closure.js
+++ b/modules/ticket/back/methods/ticket/closure.js
@@ -13,8 +13,6 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
const failedtickets = [];
for (const ticket of tickets) {
try {
- await Self.rawSql(`CALL util.debugAdd('invoicingTicket', ?)`, [ticket.id], {userId});
-
await Self.app.models.InvoiceOut.getSerial(ticket.clientFk, ticket.companyFk, ticket.addressFk, 'M');
await Self.rawSql(
`CALL vn.ticket_closeByTicket(?)`,
diff --git a/modules/ticket/back/methods/ticket/docuwareDownload.js b/modules/ticket/back/methods/ticket/docuwareDownload.js
index 7084bbdd4b..f895095705 100644
--- a/modules/ticket/back/methods/ticket/docuwareDownload.js
+++ b/modules/ticket/back/methods/ticket/docuwareDownload.js
@@ -28,7 +28,8 @@ module.exports = Self => {
http: {
path: `/:id/docuwareDownload`,
verb: 'GET'
- }
+ },
+ accessScopes: ['DEFAULT', 'read:multimedia']
});
Self.docuwareDownload = async id => {
diff --git a/modules/ticket/back/methods/ticket/isEditableOrThrow.js b/modules/ticket/back/methods/ticket/isEditableOrThrow.js
index 16cff84f17..555063093a 100644
--- a/modules/ticket/back/methods/ticket/isEditableOrThrow.js
+++ b/modules/ticket/back/methods/ticket/isEditableOrThrow.js
@@ -8,18 +8,13 @@ module.exports = Self => {
if (typeof options == 'object')
Object.assign(myOptions, options);
- const state = await models.TicketState.findOne({
- where: {ticketFk: id}
- }, myOptions);
-
+ const state = await models.TicketState.findOne({where: {ticketFk: id}}, myOptions);
const isRoleAdvanced = await models.ACL.checkAccessAcl(ctx, 'Ticket', 'isRoleAdvanced', '*');
+ const isProductionReviewer = await models.ACL.checkAccessAcl(ctx, 'Sale', 'isInPreparing', '*');
const canEditWeeklyTicket = await models.ACL.checkAccessAcl(ctx, 'Ticket', 'canEditWeekly', 'WRITE');
const alertLevel = state ? state.alertLevel : null;
const ticket = await models.Ticket.findById(id, {
- fields: ['clientFk'],
- include: {
- relation: 'client'
- }
+ fields: ['clientFk'], include: {relation: 'client'}
}, myOptions);
const isLocked = await models.Ticket.isLocked(id, myOptions);
@@ -29,10 +24,24 @@ module.exports = Self => {
const isNormalClient = ticket && ticket.client().typeFk == 'normal';
const isEditable = !(alertLevelGreaterThanZero && isNormalClient);
+ const ticketCollection = await models.TicketCollection.findOne({
+ include: {relation: 'collection'}, where: {ticketFk: id}
+ }, myOptions);
+ let isOwner = ticketCollection?.collection()?.workerFk === ctx.req.accessToken.userId;
+
+ if (!isOwner) {
+ const saleGroup = await models.SaleGroup.findOne({fields: ['id'], where: {ticketFk: id}}, myOptions);
+ const sectorCollectionSaleGroup = saleGroup && await models.SectorCollectionSaleGroup.findOne({
+ include: {relation: 'sectorCollection'}, where: {saleGroupFk: saleGroup.id}
+ }, myOptions);
+
+ isOwner = sectorCollectionSaleGroup?.sectorCollection()?.userFk === ctx.req.accessToken.userId;
+ }
+
if (!ticket)
throw new ForbiddenError(`The ticket doesn't exist.`);
- if (!isEditable && !isRoleAdvanced)
+ if (!isEditable && !isRoleAdvanced && !isProductionReviewer && !isOwner)
throw new ForbiddenError(`This ticket is not editable.`);
if (isLocked && !isWeekly)
diff --git a/modules/ticket/back/methods/ticket/specs/addSaleByCode.spec.js b/modules/ticket/back/methods/ticket/specs/addSaleByCode.spec.js
deleted file mode 100644
index b97139178a..0000000000
--- a/modules/ticket/back/methods/ticket/specs/addSaleByCode.spec.js
+++ /dev/null
@@ -1,39 +0,0 @@
-const {models} = require('vn-loopback/server/server');
-const LoopBackContext = require('loopback-context');
-
-describe('Ticket addSaleByCode()', () => {
- const quantity = 3;
- const ticketFk = 13;
- const warehouseFk = 1;
- beforeAll(async() => {
- activeCtx = {
- req: {
- accessToken: {userId: 9},
- headers: {origin: 'http://localhost'},
- __: value => value
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
- active: activeCtx
- });
- });
-
- it('should add a new sale', async() => {
- const tx = await models.Ticket.beginTransaction({});
-
- try {
- const options = {transaction: tx};
- const code = '1111111111';
-
- const salesBefore = await models.Sale.find(null, options);
- await models.Ticket.addSaleByCode(activeCtx, code, quantity, ticketFk, warehouseFk, options);
- const salesAfter = await models.Sale.find(null, options);
-
- expect(salesAfter.length).toEqual(salesBefore.length + 1);
- 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 e495a41f5c..8008acfaf9 100644
--- a/modules/ticket/back/methods/ticket/specs/filter.spec.js
+++ b/modules/ticket/back/methods/ticket/specs/filter.spec.js
@@ -68,7 +68,7 @@ describe('ticket filter()', () => {
const filter = {};
const result = await models.Ticket.filter(ctx, filter, options);
- expect(result.length).toEqual(7);
+ expect(result.length).toEqual(10);
await tx.rollback();
} catch (e) {
diff --git a/modules/ticket/back/methods/ticket/specs/priceDifference.spec.js b/modules/ticket/back/methods/ticket/specs/priceDifference.spec.js
index e5c06b6dd8..7dc1c8ed29 100644
--- a/modules/ticket/back/methods/ticket/specs/priceDifference.spec.js
+++ b/modules/ticket/back/methods/ticket/specs/priceDifference.spec.js
@@ -42,7 +42,7 @@ describe('sale priceDifference()', () => {
try {
const options = {transaction: tx};
- const ctx = {req: {accessToken: {userId: 1106}}};
+ const ctx = {req: {accessToken: {userId: 1105}}};
ctx.args = {
id: 1,
landed: Date.vnNew(),
@@ -84,7 +84,7 @@ describe('sale priceDifference()', () => {
const {items} = await models.Ticket.priceDifference(ctx, options);
- expect(items[0].movable).toEqual(410);
+ expect(items[0].movable).toEqual(386);
expect(items[1].movable).toEqual(1810);
await tx.rollback();
diff --git a/modules/ticket/back/methods/ticket/specs/state.spec.js b/modules/ticket/back/methods/ticket/specs/state.spec.js
index 947e72b792..d908aa2efc 100644
--- a/modules/ticket/back/methods/ticket/specs/state.spec.js
+++ b/modules/ticket/back/methods/ticket/specs/state.spec.js
@@ -7,6 +7,7 @@ describe('ticket state()', () => {
const productionId = 49;
const activeCtx = {
accessToken: {userId: 9},
+ __: value => value
};
const ctx = {req: activeCtx};
const now = Date.vnNew();
@@ -88,7 +89,8 @@ describe('ticket state()', () => {
const ticket = await models.Ticket.create(sampleTicket, options);
activeCtx.accessToken.userId = productionId;
- const params = {ticketFk: ticket.id, stateFk: 3};
+ const stateOk = await models.State.findOne({where: {code: 'OK'}}, options);
+ const params = {ticketFk: ticket.id, stateFk: stateOk.id};
const ticketTracking = await models.Ticket.state(ctx, params, options);
@@ -112,16 +114,68 @@ describe('ticket state()', () => {
const options = {transaction: tx};
const ticket = await models.Ticket.create(sampleTicket, options);
- const ctx = {req: {accessToken: {userId: 18}}};
+ activeCtx.accessToken.userId = salesPersonId;
const assignedState = await models.State.findOne({where: {code: 'PICKER_DESIGNED'}}, options);
- const params = {ticketFk: ticket.id, stateFk: assignedState.id, userFk: 1};
- const res = await models.Ticket.state(ctx, params, options);
+ const paramsAssigned = {ticketFk: ticket.id, stateFk: assignedState.id, userFk: 1};
+ const resAssigned = await models.Ticket.state(ctx, paramsAssigned, options);
- expect(res.ticketFk).toBe(params.ticketFk);
- expect(res.stateFk).toBe(params.stateFk);
- expect(res.userFk).toBe(params.userFk);
- expect(res.userFk).toBe(1);
- expect(res.id).toBeDefined();
+ expect(resAssigned.ticketFk).toBe(paramsAssigned.ticketFk);
+ expect(resAssigned.stateFk).toBe(paramsAssigned.stateFk);
+ expect(resAssigned.userFk).toBe(paramsAssigned.userFk);
+ expect(resAssigned.userFk).toBe(1);
+ expect(resAssigned.id).toBeDefined();
+
+ activeCtx.accessToken.userId = productionId;
+ const packedState = await models.State.findOne({where: {code: 'PACKED'}}, options);
+ const paramsPacked = {ticketFk: ticket.id, stateFk: packedState.id, userFk: salesPersonId};
+ const resPacked = await models.Ticket.state(ctx, paramsPacked, options);
+
+ expect(resPacked.stateFk).toBe(paramsPacked.stateFk);
+
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ throw e;
+ }
+ });
+
+ it('Should equalize the quantities of quantity and originalQuantity' +
+ ' if they are different', async() => {
+ const tx = await models.TicketTracking.beginTransaction({});
+
+ try {
+ const options = {transaction: tx};
+
+ const ticket = await models.Ticket.create(sampleTicket, options);
+ activeCtx.accessToken.userId = salesPersonId;
+
+ const sampleSale = {
+ ticketFk: ticket.id,
+ itemFk: 1,
+ concept: 'Test',
+ quantity: 10,
+ originalQuantity: 6
+ };
+ await models.Sale.create(sampleSale, options);
+ const assignedState = await models.State.findOne({where: {code: 'PICKER_DESIGNED'}}, options);
+ const paramsAssigned = {ticketFk: ticket.id, stateFk: assignedState.id, userFk: 1};
+ const resAssigned = await models.Ticket.state(ctx, paramsAssigned, options);
+
+ expect(resAssigned.ticketFk).toBe(paramsAssigned.ticketFk);
+ expect(resAssigned.stateFk).toBe(paramsAssigned.stateFk);
+ expect(resAssigned.userFk).toBe(paramsAssigned.userFk);
+ expect(resAssigned.userFk).toBe(1);
+ expect(resAssigned.id).toBeDefined();
+
+ activeCtx.accessToken.userId = productionId;
+ const packedState = await models.State.findOne({where: {code: 'PACKED'}}, options);
+ const paramsPacked = {ticketFk: ticket.id, stateFk: packedState.id, userFk: salesPersonId};
+ const resPacked = await models.Ticket.state(ctx, paramsPacked, options);
+
+ const sale = await models.Sale.findOne({where: {ticketFk: ticket.id}}, options);
+
+ expect(resPacked.stateFk).toBe(paramsPacked.stateFk);
+ expect(sale.quantity).toBe(sale.originalQuantity);
await tx.rollback();
} catch (e) {
diff --git a/modules/ticket/back/methods/ticket/state.js b/modules/ticket/back/methods/ticket/state.js
index fea9475f8c..9b0b862f24 100644
--- a/modules/ticket/back/methods/ticket/state.js
+++ b/modules/ticket/back/methods/ticket/state.js
@@ -64,7 +64,63 @@ module.exports = Self => {
if ((ticketState && !oldStateAllowed) || !newStateAllowed)
throw new UserError(`You don't have enough privileges`, 'ACCESS_DENIED');
- await Self.rawSql(`CALL vn.ticket_setState(?, ?)`, [params.ticketFk, params.code], myOptions);
+ const ticket = await models.Ticket.findById(params.ticketFk, {
+ include: [{
+ relation: 'client',
+ scope: {
+ fields: ['salesPersonFk']
+ }
+ }],
+ fields: ['id', 'clientFk']
+ }, myOptions);
+
+ const salesPersonFk = ticket.client().salesPersonFk;
+ if (salesPersonFk) {
+ const sales = await Self.rawSql(`
+ SELECT DISTINCT s.id,
+ s.itemFk,
+ s.concept,
+ s.originalQuantity AS oldQuantity,
+ s.quantity AS newQuantity
+ FROM vn.sale s
+ 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
+ JOIN vn.ticketState ts ON ts.ticketFk = t.id
+ JOIN vn.state s2 ON s2.id = ts.stateFk
+ WHERE s.ticketFk = ?
+ AND st.isChecked
+ AND s.originalQuantity IS NOT NULL
+ AND s.originalQuantity <> s.quantity
+ AND s2.\`order\` < (SELECT \`order\` FROM vn.state WHERE code = 'CHECKED')
+ ORDER BY st.created DESC
+ `, [params.ticketFk], myOptions);
+
+ let changes = '';
+ const url = await models.Url.getUrl();
+ const $t = ctx.req.__;
+ for (let sale of sales) {
+ changes += `\r\n-` + $t('Changes in sales', {
+ itemId: sale.itemFk,
+ concept: sale.concept,
+ oldQuantity: sale.oldQuantity,
+ newQuantity: sale.newQuantity,
+ itemUrl: `${url}item/${sale.itemFk}/summary`
+ });
+ const currentSale = await models.Sale.findById(sale.id, null, myOptions);
+ await currentSale.updateAttributes({
+ originalQuantity: currentSale.quantity
+ }, myOptions);
+ }
+
+ const message = $t('Changed sale quantity', {
+ ticketId: ticket.id,
+ changes: changes,
+ ticketUrl: `${url}ticket/${ticket.id}/sale`
+ });
+ await models.Chat.sendCheckingPresence(ctx, salesPersonFk, message, myOptions);
+ }
+ await Self.rawSql(`CALL vn.ticket_setState(?, ?)`, [ticket.id, params.code], myOptions);
const ticketTracking = await models.TicketTracking.findOne({
where: {ticketFk: params.ticketFk},
diff --git a/modules/ticket/back/models/expeditionPallet.json b/modules/ticket/back/models/expeditionPallet.json
index cab3af6ecf..64b3092ae7 100644
--- a/modules/ticket/back/models/expeditionPallet.json
+++ b/modules/ticket/back/models/expeditionPallet.json
@@ -23,9 +23,9 @@
}
},
"relations": {
- "expeditionTruck": {
+ "roadmapStop": {
"type": "belongsTo",
- "model": "ExpeditionTruck",
+ "model": "RoadmapStop",
"foreignKey": "truckFk"
}
}
diff --git a/modules/ticket/back/models/saleGroup.json b/modules/ticket/back/models/saleGroup.json
index d5cf82cb5d..aa78b4167b 100644
--- a/modules/ticket/back/models/saleGroup.json
+++ b/modules/ticket/back/models/saleGroup.json
@@ -14,6 +14,9 @@
},
"parkingFk": {
"type": "number"
+ },
+ "ticketFk": {
+ "type": "number"
}
},
"relations": {
diff --git a/modules/ticket/back/models/specs/sale.spec.js b/modules/ticket/back/models/specs/sale.spec.js
index d078dc8e2e..1aa40802b2 100644
--- a/modules/ticket/back/models/specs/sale.spec.js
+++ b/modules/ticket/back/models/specs/sale.spec.js
@@ -1,361 +1,318 @@
/* eslint max-len: ["error", { "code": 150 }]*/
-
-const models = require('vn-loopback/server/server').models;
+const {models} = require('vn-loopback/server/server');
const LoopBackContext = require('loopback-context');
describe('sale model ', () => {
- const ctx = {
- req: {
- accessToken: {userId: 9},
- headers: {origin: 'localhost:5000'},
- __: () => {}
- }
- };
- function getActiveCtx(userId) {
- return {
- active: {
- accessToken: {userId},
- http: {
- req: {
- headers: {origin: 'http://localhost'}
- }
- }
- }
- };
+ const developerId = 9;
+ const buyerId = 35;
+ const employeeId = 1;
+ const productionId = 49;
+ const salesPersonId = 18;
+ const reviewerId = 130;
+
+ const barcode = '4444444444';
+ const ticketCollectionProd = 34;
+ const ticketCollectionSalesPerson = 35;
+ const previaTicketSalesPerson = 36;
+ const previaTicketProd = 37;
+ const notEditableError = 'This ticket is not editable.';
+
+ const ctx = getCtx(developerId);
+ let tx;
+ let opts;
+
+ function getCtx(userId, active = false) {
+ const accessToken = {userId};
+ const headers = {origin: 'localhost:5000'};
+ if (!active) return {req: {accessToken, headers, __: () => {}}};
+ return {active: {accessToken, http: {req: {headers}}}};
}
+ beforeEach(async() => {
+ tx = await models.Sale.beginTransaction({});
+ opts = {transaction: tx};
+ });
+
+ afterEach(async() => await tx.rollback());
+
describe('quantity field ', () => {
it('should add quantity if the quantity is greater than it should be and is role advanced', async() => {
const saleId = 17;
- const buyerId = 35;
- const ctx = {
- req: {
- accessToken: {userId: buyerId},
- headers: {origin: 'localhost:5000'},
- __: () => {}
- }
- };
- const tx = await models.Sale.beginTransaction({});
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getActiveCtx(buyerId));
- spyOn(models.Sale, 'rawSql').and.callFake((sqlStatement, params, options) => {
+ const ctx = getCtx(buyerId);
+
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getCtx(buyerId, true));
+ spyOn(models.Sale, 'rawSql').and.callFake((sqlStatement, params, opts) => {
if (sqlStatement.includes('catalog_calcFromItem')) {
sqlStatement = `CREATE OR REPLACE TEMPORARY TABLE tmp.ticketCalculateItem ENGINE = MEMORY
SELECT 100 as available;`;
params = null;
}
- return models.Ticket.rawSql(sqlStatement, params, options);
+ return models.Ticket.rawSql(sqlStatement, params, opts);
});
- try {
- const options = {transaction: tx};
+ const isRoleAdvanced = await models.ACL.checkAccessAcl(ctx, 'Ticket', 'isRoleAdvanced', '*');
- const isRoleAdvanced = await models.ACL.checkAccessAcl(ctx, 'Ticket', 'isRoleAdvanced', '*');
+ expect(isRoleAdvanced).toEqual(true);
- expect(isRoleAdvanced).toEqual(true);
+ const originalLine = await models.Sale.findOne({where: {id: saleId}, fields: ['quantity']}, opts);
- const originalLine = await models.Sale.findOne({where: {id: saleId}, fields: ['quantity']}, options);
+ expect(originalLine.quantity).toEqual(30);
- expect(originalLine.quantity).toEqual(30);
+ const newQuantity = originalLine.quantity + 1;
+ await models.Sale.updateQuantity(ctx, saleId, newQuantity, opts);
- const newQuantity = originalLine.quantity + 1;
- await models.Sale.updateQuantity(ctx, saleId, newQuantity, options);
+ const modifiedLine = await models.Sale.findOne({where: {id: saleId}, fields: ['quantity']}, opts);
- const modifiedLine = await models.Sale.findOne({where: {id: saleId}, fields: ['quantity']}, options);
-
- expect(modifiedLine.quantity).toEqual(newQuantity);
-
- await tx.rollback();
- } catch (e) {
- await tx.rollback();
- throw e;
- }
+ expect(modifiedLine.quantity).toEqual(newQuantity);
});
it('should update the quantity of a given sale current line', async() => {
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getActiveCtx(9));
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getCtx(developerId, true));
- const tx = await models.Sale.beginTransaction({});
const saleId = 25;
const newQuantity = 4;
- try {
- const options = {transaction: tx};
+ const originalLine = await models.Sale.findOne({where: {id: saleId}, fields: ['quantity']}, opts);
- const originalLine = await models.Sale.findOne({where: {id: saleId}, fields: ['quantity']}, options);
+ expect(originalLine.quantity).toEqual(20);
- expect(originalLine.quantity).toEqual(20);
+ await models.Sale.updateQuantity(ctx, saleId, newQuantity, opts);
- await models.Sale.updateQuantity(ctx, saleId, newQuantity, options);
+ const modifiedLine = await models.Sale.findOne({where: {id: saleId}, fields: ['quantity']}, opts);
- const modifiedLine = await models.Sale.findOne({where: {id: saleId}, fields: ['quantity']}, options);
-
- expect(modifiedLine.quantity).toEqual(newQuantity);
-
- await tx.rollback();
- } catch (e) {
- await tx.rollback();
- throw e;
- }
+ expect(modifiedLine.quantity).toEqual(newQuantity);
});
it('should throw an error if the quantity is negative and it is not a refund ticket', async() => {
- const ctx = {
- req: {
- accessToken: {userId: 1},
- headers: {origin: 'localhost:5000'},
- __: () => {}
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getActiveCtx(1));
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getCtx(employeeId, true));
const saleId = 17;
const newQuantity = -10;
- const tx = await models.Sale.beginTransaction({});
-
- let error;
try {
- const options = {transaction: tx};
-
- await models.Sale.updateQuantity(ctx, saleId, newQuantity, options);
-
- await tx.rollback();
+ await models.Sale.updateQuantity(ctx, saleId, newQuantity, opts);
} catch (e) {
- await tx.rollback();
- error = e;
+ expect(e).toEqual(new Error('You can only add negative amounts in refund tickets'));
}
-
- expect(error).toEqual(new Error('You can only add negative amounts in refund tickets'));
});
it('should update a negative quantity when is a ticket refund', async() => {
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getActiveCtx(9));
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getCtx(developerId, true));
- const tx = await models.Sale.beginTransaction({});
const saleId = 32;
const newQuantity = -10;
- try {
- const options = {transaction: tx};
+ await models.Sale.updateQuantity(ctx, saleId, newQuantity, opts);
- await models.Sale.updateQuantity(ctx, saleId, newQuantity, options);
+ const modifiedLine = await models.Sale.findOne({where: {id: saleId}, fields: ['quantity']}, opts);
- const modifiedLine = await models.Sale.findOne({where: {id: saleId}, fields: ['quantity']}, options);
-
- expect(modifiedLine.quantity).toEqual(newQuantity);
-
- await tx.rollback();
- } catch (e) {
- await tx.rollback();
- throw e;
- }
+ expect(modifiedLine.quantity).toEqual(newQuantity);
});
it('should throw an error if the quantity is less than the minimum quantity of the item', async() => {
- const ctx = {
- req: {
- accessToken: {userId: 1},
- headers: {origin: 'localhost:5000'},
- __: () => {}
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getActiveCtx(1));
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getCtx(employeeId, true));
- const tx = await models.Sale.beginTransaction({});
const itemId = 2;
const saleId = 17;
const minQuantity = 30;
const newQuantity = minQuantity - 1;
- let error;
try {
- const options = {transaction: tx};
-
- const item = await models.Item.findById(itemId, null, options);
- await item.updateAttribute('minQuantity', minQuantity, options);
- spyOn(models.Sale, 'rawSql').and.callFake((sqlStatement, params, options) => {
+ const item = await models.Item.findById(itemId, null, opts);
+ await item.updateAttribute('minQuantity', minQuantity, opts);
+ spyOn(models.Sale, 'rawSql').and.callFake((sqlStatement, params, opts) => {
if (sqlStatement.includes('catalog_calcFromItem')) {
sqlStatement = `CREATE OR REPLACE TEMPORARY TABLE tmp.ticketCalculateItem ENGINE = MEMORY
SELECT 100 as available;`;
params = null;
}
- return models.Ticket.rawSql(sqlStatement, params, options);
+ return models.Ticket.rawSql(sqlStatement, params, opts);
});
- await models.Sale.updateQuantity(ctx, saleId, newQuantity, options);
-
- await tx.rollback();
+ await models.Sale.updateQuantity(ctx, saleId, newQuantity, opts);
} catch (e) {
- await tx.rollback();
- error = e;
+ expect(e).toEqual(new Error('The amount cannot be less than the minimum'));
}
-
- expect(error).toEqual(new Error('The amount cannot be less than the minimum'));
});
it('should change quantity if has minimum quantity and new quantity is equal than item available', async() => {
- const ctx = {
- req: {
- accessToken: {userId: 1},
- headers: {origin: 'localhost:5000'},
- __: () => {}
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getActiveCtx(1));
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getCtx(employeeId, true));
- const tx = await models.Sale.beginTransaction({});
const itemId = 2;
const saleId = 17;
const minQuantity = 30;
const newQuantity = minQuantity - 1;
- try {
- const options = {transaction: tx};
+ const item = await models.Item.findById(itemId, null, opts);
+ await item.updateAttribute('minQuantity', minQuantity, opts);
- const item = await models.Item.findById(itemId, null, options);
- await item.updateAttribute('minQuantity', minQuantity, options);
-
- spyOn(models.Sale, 'rawSql').and.callFake((sqlStatement, params, options) => {
- if (sqlStatement.includes('catalog_calcFromItem')) {
- sqlStatement = `CREATE OR REPLACE TEMPORARY TABLE tmp.ticketCalculateItem ENGINE = MEMORY
+ spyOn(models.Sale, 'rawSql').and.callFake((sqlStatement, params, opts) => {
+ if (sqlStatement.includes('catalog_calcFromItem')) {
+ sqlStatement = `CREATE OR REPLACE TEMPORARY TABLE tmp.ticketCalculateItem ENGINE = MEMORY
SELECT ${newQuantity} as available;`;
- params = null;
- }
- return models.Ticket.rawSql(sqlStatement, params, options);
- });
+ params = null;
+ }
+ return models.Ticket.rawSql(sqlStatement, params, opts);
+ });
- await models.Sale.updateQuantity(ctx, saleId, newQuantity, options);
-
- await tx.rollback();
- } catch (e) {
- await tx.rollback();
- throw e;
- }
+ await models.Sale.updateQuantity(ctx, saleId, newQuantity, opts);
});
describe('newPrice', () => {
it('should increase quantity if you have enough available and the new price is the same as the previous one', async() => {
- const ctx = {
- req: {
- accessToken: {userId: 1},
- headers: {origin: 'localhost:5000'},
- __: () => {}
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getActiveCtx(1));
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getCtx(employeeId, true));
- const tx = await models.Sale.beginTransaction({});
const itemId = 2;
const saleId = 17;
const minQuantity = 30;
const newQuantity = 31;
- try {
- const options = {transaction: tx};
-
- const item = await models.Item.findById(itemId, null, options);
- await item.updateAttribute('minQuantity', minQuantity, options);
- spyOn(models.Sale, 'rawSql').and.callFake((sqlStatement, params, options) => {
- if (sqlStatement.includes('catalog_calcFromItem')) {
- sqlStatement = `
+ const item = await models.Item.findById(itemId, null, opts);
+ await item.updateAttribute('minQuantity', minQuantity, opts);
+ spyOn(models.Sale, 'rawSql').and.callFake((sqlStatement, params, opts) => {
+ if (sqlStatement.includes('catalog_calcFromItem')) {
+ sqlStatement = `
CREATE OR REPLACE TEMPORARY TABLE tmp.ticketCalculateItem ENGINE = MEMORY SELECT ${newQuantity} as available;
CREATE OR REPLACE TEMPORARY TABLE tmp.ticketComponentPrice ENGINE = MEMORY SELECT 1 as grouping, 7.07 as price;`;
- params = null;
- }
- return models.Ticket.rawSql(sqlStatement, params, options);
- });
+ params = null;
+ }
+ return models.Ticket.rawSql(sqlStatement, params, opts);
+ });
- await models.Sale.updateQuantity(ctx, saleId, newQuantity, options);
-
- await tx.rollback();
- } catch (e) {
- await tx.rollback();
- throw e;
- }
+ await models.Sale.updateQuantity(ctx, saleId, newQuantity, opts);
});
it('should increase quantity when the new price is lower than the previous one', async() => {
- const ctx = {
- req: {
- accessToken: {userId: 1},
- headers: {origin: 'localhost:5000'},
- __: () => {}
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getActiveCtx(1));
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getCtx(employeeId, true));
- const tx = await models.Sale.beginTransaction({});
const itemId = 2;
const saleId = 17;
const minQuantity = 30;
const newQuantity = 31;
- try {
- const options = {transaction: tx};
-
- const item = await models.Item.findById(itemId, null, options);
- await item.updateAttribute('minQuantity', minQuantity, options);
- spyOn(models.Sale, 'rawSql').and.callFake((sqlStatement, params, options) => {
- if (sqlStatement.includes('catalog_calcFromItem')) {
- sqlStatement = `
+ const item = await models.Item.findById(itemId, null, opts);
+ await item.updateAttribute('minQuantity', minQuantity, opts);
+ spyOn(models.Sale, 'rawSql').and.callFake((sqlStatement, params, opts) => {
+ if (sqlStatement.includes('catalog_calcFromItem')) {
+ sqlStatement = `
CREATE OR REPLACE TEMPORARY TABLE tmp.ticketCalculateItem ENGINE = MEMORY SELECT ${newQuantity} as available;
CREATE OR REPLACE TEMPORARY TABLE tmp.ticketComponentPrice ENGINE = MEMORY SELECT 1 as grouping, 1 as price;`;
- params = null;
- }
- return models.Ticket.rawSql(sqlStatement, params, options);
- });
+ params = null;
+ }
+ return models.Ticket.rawSql(sqlStatement, params, opts);
+ });
- await models.Sale.updateQuantity(ctx, saleId, newQuantity, options);
-
- await tx.rollback();
- } catch (e) {
- await tx.rollback();
- throw e;
- }
+ await models.Sale.updateQuantity(ctx, saleId, newQuantity, opts);
});
it('should throw error when increase quantity and the new price is higher than the previous one', async() => {
- const ctx = {
- req: {
- accessToken: {userId: 1},
- headers: {origin: 'localhost:5000'},
- __: () => {}
- }
- };
- spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getActiveCtx(1));
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getCtx(employeeId, true));
- const tx = await models.Sale.beginTransaction({});
const itemId = 2;
const saleId = 17;
const minQuantity = 30;
const newQuantity = 31;
- let error;
try {
- const options = {transaction: tx};
-
- const item = await models.Item.findById(itemId, null, options);
- await item.updateAttribute('minQuantity', minQuantity, options);
- spyOn(models.Sale, 'rawSql').and.callFake((sqlStatement, params, options) => {
+ const item = await models.Item.findById(itemId, null, opts);
+ await item.updateAttribute('minQuantity', minQuantity, opts);
+ spyOn(models.Sale, 'rawSql').and.callFake((sqlStatement, params, opts) => {
if (sqlStatement.includes('catalog_calcFromItem')) {
sqlStatement = `
CREATE OR REPLACE TEMPORARY TABLE tmp.ticketCalculateItem ENGINE = MEMORY SELECT ${newQuantity} as available;
CREATE OR REPLACE TEMPORARY TABLE tmp.ticketComponentPrice ENGINE = MEMORY SELECT 1 as grouping, 100000 as price;`;
params = null;
}
- return models.Ticket.rawSql(sqlStatement, params, options);
+ return models.Ticket.rawSql(sqlStatement, params, opts);
});
- await models.Sale.updateQuantity(ctx, saleId, newQuantity, options);
-
- await tx.rollback();
+ await models.Sale.updateQuantity(ctx, saleId, newQuantity, opts);
} catch (e) {
- await tx.rollback();
- error = e;
+ expect(e).toEqual(new Error('The price of the item changed'));
}
-
- expect(error).toEqual(new Error('The price of the item changed'));
});
});
});
+
+ describe('add a sale from a collection or previa ticket', () => {
+ it('if is allocated to them and alert level higher than 0 as Production role', async() => {
+ const ctx = getCtx(productionId);
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getCtx(productionId, true));
+
+ const beforeSalesCollection = await models.Sale.count({ticketFk: ticketCollectionProd}, opts);
+ await models.Ticket.addSale(ctx, ticketCollectionProd, barcode, 20, opts);
+ const afterSalesCollection = await models.Sale.count({ticketFk: ticketCollectionProd}, opts);
+
+ expect(afterSalesCollection).toEqual(beforeSalesCollection + 1);
+
+ const beforeSalesPrevia = await models.Sale.count({ticketFk: previaTicketProd}, opts);
+ await models.Ticket.addSale(ctx, previaTicketProd, barcode, 20, opts);
+ const afterSalesPrevia = await models.Sale.count({ticketFk: previaTicketProd}, opts);
+
+ expect(afterSalesPrevia).toEqual(beforeSalesPrevia + 1);
+ });
+
+ it('should throw an error if is not allocated to them and alert level higher than 0 as Production role', async() => {
+ const ctx = getCtx(productionId);
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getCtx(productionId, true));
+
+ try {
+ await models.Ticket.addSale(ctx, ticketCollectionSalesPerson, barcode, 20, opts);
+ } catch ({message}) {
+ expect(message).toEqual(notEditableError);
+ }
+
+ try {
+ await models.Ticket.addSale(ctx, previaTicketSalesPerson, barcode, 20, opts);
+ } catch ({message}) {
+ expect(message).toEqual(notEditableError);
+ }
+ });
+
+ it('if is allocated to them and alert level higher than 0 as salesPerson role', async() => {
+ const ctx = getCtx(salesPersonId);
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getCtx(salesPersonId, true));
+
+ const beforeSalesCollection = await models.Sale.count({ticketFk: ticketCollectionSalesPerson}, opts);
+ await models.Ticket.addSale(ctx, ticketCollectionSalesPerson, barcode, 20, opts);
+ const afterSalesCollection = await models.Sale.count({ticketFk: ticketCollectionSalesPerson}, opts);
+
+ expect(afterSalesCollection).toEqual(beforeSalesCollection + 1);
+
+ const beforeSalesPrevia = await models.Sale.count({ticketFk: previaTicketSalesPerson}, opts);
+ await models.Ticket.addSale(ctx, previaTicketSalesPerson, barcode, 20, opts);
+ const afterSalesPrevia = await models.Sale.count({ticketFk: previaTicketSalesPerson}, opts);
+
+ expect(afterSalesPrevia).toEqual(beforeSalesPrevia + 1);
+ });
+
+ it('should throw an error if is not allocated to them and alert level higher than 0 as salesPerson role', async() => {
+ const ctx = getCtx(salesPersonId);
+
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getCtx(salesPersonId, true));
+
+ try {
+ await models.Ticket.addSale(ctx, ticketCollectionProd, barcode, 20, opts);
+ } catch ({message}) {
+ expect(message).toEqual(notEditableError);
+ }
+ });
+
+ it('if is a reviewer', async() => {
+ const ctx = getCtx(reviewerId);
+ spyOn(LoopBackContext, 'getCurrentContext').and.returnValue(getCtx(reviewerId, true));
+
+ const beforeSalesCollection = await models.Sale.count({ticketFk: ticketCollectionSalesPerson}, opts);
+ await models.Ticket.addSale(ctx, ticketCollectionSalesPerson, barcode, 20, opts);
+ const afterSalesCollection = await models.Sale.count({ticketFk: ticketCollectionSalesPerson}, opts);
+
+ expect(afterSalesCollection).toEqual(beforeSalesCollection + 1);
+
+ const beforeSalesPrevia = await models.Sale.count({ticketFk: previaTicketSalesPerson}, opts);
+ await models.Ticket.addSale(ctx, previaTicketSalesPerson, barcode, 20, opts);
+ const afterSalesPrevia = await models.Sale.count({ticketFk: previaTicketSalesPerson}, opts);
+
+ expect(afterSalesPrevia).toEqual(beforeSalesPrevia + 1);
+ });
+ });
});
diff --git a/modules/ticket/back/models/ticket-log.json b/modules/ticket/back/models/ticket-log.json
index 32b4afd13b..d75589f115 100644
--- a/modules/ticket/back/models/ticket-log.json
+++ b/modules/ticket/back/models/ticket-log.json
@@ -8,7 +8,8 @@
},
"properties": {
"id": {
- "type": "string"
+ "type": "number",
+ "id": true
},
"originFk": {
"type": "number"
diff --git a/modules/ticket/back/models/ticket-methods.js b/modules/ticket/back/models/ticket-methods.js
index 0ae2ce3b48..5582dde5ce 100644
--- a/modules/ticket/back/models/ticket-methods.js
+++ b/modules/ticket/back/models/ticket-methods.js
@@ -46,6 +46,5 @@ module.exports = function(Self) {
require('../methods/ticket/invoiceTicketsAndPdf')(Self);
require('../methods/ticket/docuwareDownload')(Self);
require('../methods/ticket/myLastModified')(Self);
- require('../methods/ticket/addSaleByCode')(Self);
require('../methods/ticket/clone')(Self);
};
diff --git a/modules/ticket/front/descriptor-menu/index.js b/modules/ticket/front/descriptor-menu/index.js
index 52cac141c2..32f2454543 100644
--- a/modules/ticket/front/descriptor-menu/index.js
+++ b/modules/ticket/front/descriptor-menu/index.js
@@ -37,18 +37,19 @@ class Controller extends Section {
});
const filter = {
- fields: ['originFk', 'creationDate', 'newInstance'],
+ fields: ['id', 'originFk', 'creationDate', 'newInstance'],
where: {
originFk: value,
newInstance: {like: '%"isDeleted":true%'}
},
- order: 'creationDate DESC'
+ order: 'creationDate DESC',
+ limit: 1
};
- this.$http.get(`TicketLogs/findOne`, {filter})
+ this.$http.get(`TicketLogs`, {filter})
.then(res => {
- if (res && res.data) {
+ if (res && res.data && res.data.length) {
const now = Date.vnNew();
- const maxDate = new Date(res.data.creationDate);
+ const maxDate = new Date(res.data[0].creationDate);
maxDate.setHours(maxDate.getHours() + 1);
if (now <= maxDate)
return this.canRestoreTicket = true;
diff --git a/modules/ticket/front/sale/index.js b/modules/ticket/front/sale/index.js
index 1cd5560a47..7ff8d89e3f 100644
--- a/modules/ticket/front/sale/index.js
+++ b/modules/ticket/front/sale/index.js
@@ -476,7 +476,7 @@ class Controller extends Section {
*/
addSale(sale) {
const data = {
- itemId: sale.itemFk,
+ barcode: sale.itemFk,
quantity: sale.quantity
};
const query = `tickets/${this.ticket.id}/addSale`;
diff --git a/modules/ticket/front/sale/index.spec.js b/modules/ticket/front/sale/index.spec.js
index fb1c925d41..8200d6b898 100644
--- a/modules/ticket/front/sale/index.spec.js
+++ b/modules/ticket/front/sale/index.spec.js
@@ -659,7 +659,7 @@ describe('Ticket', () => {
jest.spyOn(controller, 'resetChanges').mockReturnThis();
const newSale = {itemFk: 4, quantity: 10};
- const expectedParams = {itemId: 4, quantity: 10};
+ const expectedParams = {barcode: 4, quantity: 10};
const expectedResult = {
id: 30,
quantity: 10,
diff --git a/modules/worker/back/methods/worker-time-control/resendWeeklyHourEmail.js b/modules/worker/back/methods/worker-time-control/resendWeeklyHourEmail.js
index 8964584551..8856371189 100644
--- a/modules/worker/back/methods/worker-time-control/resendWeeklyHourEmail.js
+++ b/modules/worker/back/methods/worker-time-control/resendWeeklyHourEmail.js
@@ -1,3 +1,5 @@
+const moment = require('moment');
+
module.exports = Self => {
Self.remoteMethodCtx('resendWeeklyHourEmail', {
description: 'Send the records for the week of the date provided',
@@ -31,7 +33,8 @@ module.exports = Self => {
Object.assign(myOptions, options);
const yearNumber = dated.getFullYear();
- const weekNumber = getWeekNumber(dated);
+ const weekNumber = moment(dated).isoWeek();
+
const workerTimeControlMail = await models.WorkerTimeControlMail.findOne({
where: {
workerFk: workerId,
@@ -54,15 +57,4 @@ module.exports = Self => {
return false;
};
-
- function getWeekNumber(date) {
- const tempDate = new Date(date);
- let dayOfWeek = tempDate.getDay();
- dayOfWeek = (dayOfWeek === 0) ? 7 : dayOfWeek;
- const firstDayOfWeek = new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate() - (dayOfWeek - 1));
- const firstDayOfYear = new Date(tempDate.getFullYear(), 0, 1);
- const differenceInMilliseconds = firstDayOfWeek.getTime() - firstDayOfYear.getTime();
- const weekNumber = Math.floor(differenceInMilliseconds / (1000 * 60 * 60 * 24 * 7)) + 1;
- return weekNumber;
- }
};
diff --git a/modules/worker/back/methods/worker/createAbsence.js b/modules/worker/back/methods/worker/createAbsence.js
index d628d0a2b4..2de1d6e4dc 100644
--- a/modules/worker/back/methods/worker/createAbsence.js
+++ b/modules/worker/back/methods/worker/createAbsence.js
@@ -98,6 +98,22 @@ module.exports = Self => {
if (isHalfHoliday && hasHalfHoliday)
throw new UserError(`Cannot add more than one '1/2 day vacation'`);
+ const isFestive = absenceType.isFestiveEligible;
+
+ const workCenter = await models.Business.findOne({
+ where: {id: args.businessFk}
+ },);
+
+ const [holiday] = await models.CalendarHoliday.find({
+ where: {
+ dated: args.dated,
+ workCenterFk: workCenter.workCenterFk
+ }
+ });
+
+ if (holiday && isFestive)
+ throw new UserError(`Cannot add holidays on this day`);
+
const absence = await models.Calendar.create({
businessFk: labour.businessFk,
dayOffTypeFk: args.absenceTypeId,
diff --git a/modules/worker/back/methods/worker/getAvailablePda.js b/modules/worker/back/methods/worker/getAvailablePda.js
new file mode 100644
index 0000000000..65641a9e61
--- /dev/null
+++ b/modules/worker/back/methods/worker/getAvailablePda.js
@@ -0,0 +1,23 @@
+module.exports = Self => {
+ Self.remoteMethod('getAvailablePda', {
+ description: 'returns devices without user',
+ accessType: 'READ',
+ accepts: [],
+ returns: {
+ type: 'array',
+ root: true
+ },
+ http: {
+ path: `/getAvailablePda`,
+ verb: 'GET'
+ }
+ });
+ Self.getAvailablePda = async() => {
+ return Self.app.models.DeviceProduction.rawSql(
+ `SELECT d.*
+ FROM deviceProduction d
+ LEFT JOIN deviceProductionUser du ON du.deviceProductionFk = d.id
+ WHERE du.deviceProductionFk IS NULL`
+ );
+ };
+};
diff --git a/modules/worker/back/methods/worker/specs/createAbsence.spec.js b/modules/worker/back/methods/worker/specs/createAbsence.spec.js
index 346e43c511..aadaca99b4 100644
--- a/modules/worker/back/methods/worker/specs/createAbsence.spec.js
+++ b/modules/worker/back/methods/worker/specs/createAbsence.spec.js
@@ -104,6 +104,35 @@ describe('Worker createAbsence()', () => {
expect(error.message).toEqual(`Cannot add more than one '1/2 day vacation'`);
});
+ it(`should throw an error when adding a "Holiday" absence if there's a festivity`, async() => {
+ const ctx = {
+ req: {accessToken: {userId: 9}},
+ args: {
+ id: 3,
+ businessFk: 3,
+ absenceTypeId: 1,
+ dated: '2001-12-08T23:00:00.000Z'
+ }
+ };
+ const workerId = 1;
+
+ const tx = await app.models.Calendar.beginTransaction({});
+
+ let error;
+ try {
+ const options = {transaction: tx};
+
+ await app.models.Worker.createAbsence(ctx, workerId, options);
+
+ await tx.rollback();
+ } catch (e) {
+ await tx.rollback();
+ error = e;
+ }
+
+ expect(error.message).toEqual(`Cannot add holidays on this day`);
+ });
+
it(`should throw an error when adding a absence if the worker has hours recorded that day and not is a half absence`, async() => {
const ctx = {
req: {accessToken: {userId: 19}},
diff --git a/modules/worker/back/methods/worker/specs/getAvailablePda.spec.js b/modules/worker/back/methods/worker/specs/getAvailablePda.spec.js
new file mode 100644
index 0000000000..c7051f0b4b
--- /dev/null
+++ b/modules/worker/back/methods/worker/specs/getAvailablePda.spec.js
@@ -0,0 +1,13 @@
+const models = require('vn-loopback/server/server').models;
+
+describe('worker getAvailablePda()', () => {
+ it('should return a Pda that has no user assigned', async() => {
+ const [{id}] = await models.Worker.getAvailablePda();
+
+ const deviceProductionUser = await models.DeviceProductionUser.findOne({
+ where: {deviceProductionFk: id}
+ });
+
+ expect(!deviceProductionUser).toBeTruthy();
+ });
+});
diff --git a/modules/worker/back/model-config.json b/modules/worker/back/model-config.json
index e1a47b7e96..b7c3555113 100644
--- a/modules/worker/back/model-config.json
+++ b/modules/worker/back/model-config.json
@@ -121,6 +121,9 @@
},
"Operator": {
"dataSource": "vn"
+ },
+ "Locker": {
+ "dataSource": "vn"
}
}
diff --git a/modules/worker/back/models/absence-type.json b/modules/worker/back/models/absence-type.json
index 7fc62f780f..2f61033677 100644
--- a/modules/worker/back/models/absence-type.json
+++ b/modules/worker/back/models/absence-type.json
@@ -22,7 +22,10 @@
},
"holidayEntitlementRate": {
"type": "number"
- }
+ },
+ "isFestiveEligible": {
+ "type": "boolean"
+ }
},
"acls": [
{
@@ -32,4 +35,4 @@
"permission": "ALLOW"
}
]
-}
\ No newline at end of file
+}
diff --git a/modules/worker/back/models/device-production-user.js b/modules/worker/back/models/device-production-user.js
new file mode 100644
index 0000000000..8eead58e07
--- /dev/null
+++ b/modules/worker/back/models/device-production-user.js
@@ -0,0 +1,11 @@
+const UserError = require('vn-loopback/util/user-error');
+module.exports = Self => {
+ Self.rewriteDbError(function(err) {
+ if (err.code === 'ER_DUP_ENTRY')
+ return new UserError(`This PDA is already assigned to another user`);
+
+ if (err.code === 'ER_SIGNAL_EXCEPTION' && err.sqlMessage === 'You can only have one active PDA')
+ return new UserError(err.sqlMessage);
+ return err;
+ });
+};
diff --git a/modules/worker/back/models/device-production-user.json b/modules/worker/back/models/device-production-user.json
index 35a90fb50d..a024cc94c8 100644
--- a/modules/worker/back/models/device-production-user.json
+++ b/modules/worker/back/models/device-production-user.json
@@ -14,6 +14,10 @@
}
},
"properties": {
+ "id": {
+ "type": "number",
+ "id": true
+ },
"deviceProductionFk": {
"type": "number",
"id": true
@@ -21,6 +25,9 @@
"userFk": {
"type": "number"
},
+ "simSerialNumber": {
+ "type": "string"
+ },
"created": {
"type": "date"
}
@@ -28,7 +35,7 @@
"relations": {
"deviceProduction": {
"type": "belongsTo",
- "model": "DeviceProduction",
+ "model": "DeviceProduction",
"foreignKey": "deviceProductionFk"
},
"user": {
@@ -36,5 +43,10 @@
"model": "User",
"foreignKey": "userFk"
}
+ },
+ "scope": {
+ "include":{
+ "relation": "deviceProduction"
+ }
}
}
diff --git a/modules/worker/back/models/locker.js b/modules/worker/back/models/locker.js
new file mode 100644
index 0000000000..4475c2cd1c
--- /dev/null
+++ b/modules/worker/back/models/locker.js
@@ -0,0 +1,21 @@
+module.exports = Self => {
+ Self.observe('before save', async ctx => {
+ const models = Self.app.models;
+ const changes = ctx.data || ctx.instance;
+ const instance = ctx.currentInstance;
+
+ const workerFk = changes?.workerFk || instance?.workerFk;
+ if (workerFk) {
+ const locker = await models.Locker.findOne({
+ where: {workerFk}
+ }, ctx.options);
+
+ if (locker) {
+ await Self.rawSql(
+ 'UPDATE locker SET workerFk = NULL where workerFk = ?',
+ [workerFk],
+ ctx.options);
+ }
+ }
+ });
+};
diff --git a/modules/worker/back/models/locker.json b/modules/worker/back/models/locker.json
new file mode 100644
index 0000000000..335fca5a96
--- /dev/null
+++ b/modules/worker/back/models/locker.json
@@ -0,0 +1,23 @@
+{
+ "name": "Locker",
+ "base": "VnModel",
+ "description": "Worker's locker",
+ "options": {
+ "mysql": {
+ "table": "locker"
+ }
+ },
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "gender": {
+ "type": "string"
+ }
+ },
+ "scopes": {
+ "codes": {
+ "fields": ["id","code"]
+ }
+ }
+}
diff --git a/modules/worker/back/models/specs/locker.spec.js b/modules/worker/back/models/specs/locker.spec.js
new file mode 100644
index 0000000000..96fca24059
--- /dev/null
+++ b/modules/worker/back/models/specs/locker.spec.js
@@ -0,0 +1,59 @@
+const {models} = require('vn-loopback/server/server');
+
+describe('locker model ', () => {
+ const productionBossId = 50;
+ const hrBuyerId = 124;
+ const hrId = 37;
+ const jessicaJonesId = 1110;
+ const bruceBannerId = 1109;
+ const lockerMaleId = 3;
+ const lockerFemaleId = 5;
+ const lockerNewFemaleId = 6;
+ let ctx;
+ let options;
+ let tx;
+
+ beforeEach(async() => {
+ ctx = {
+ req: {
+ accessToken: {userId: hrId},
+ headers: {origin: 'http://localhost'}
+ },
+ };
+ options = {transaction: tx};
+ tx = await models.Locker.beginTransaction({});
+ options.transaction = tx;
+ });
+
+ afterEach(async() => {
+ await tx.rollback();
+ });
+
+ it('should allocate a locker', async() => {
+ ctx.req.accessToken.userId = productionBossId;
+
+ const locker = await models.Locker.findById(lockerMaleId, null, options);
+ await locker.updateAttributes({workerFk: bruceBannerId}, options);
+
+ expect(locker.workerFk).toEqual(bruceBannerId);
+ });
+
+ it('should take away a locker', async() => {
+ ctx.req.accessToken.userId = hrBuyerId;
+ const locker = await models.Locker.findById(lockerFemaleId, null, options);
+ await locker.updateAttributes({workerFk: null}, options);
+
+ expect(locker.workerFk).toEqual(null);
+ });
+
+ it('should change a locker', async() => {
+ const oldLocker = await models.Locker.findById(lockerFemaleId, null, options);
+ const locker = await models.Locker.findById(lockerNewFemaleId, null, options);
+ await locker.updateAttributes({workerFk: jessicaJonesId}, options);
+ const oldNowLocker = await models.Locker.findById(lockerFemaleId, null, options);
+
+ expect(oldLocker.workerFk).toEqual(jessicaJonesId);
+ expect(locker.workerFk).toEqual(jessicaJonesId);
+ expect(oldNowLocker.workerFk).toEqual(null);
+ });
+});
diff --git a/modules/worker/back/models/worker.js b/modules/worker/back/models/worker.js
index b475bf26e2..0b0e043f2e 100644
--- a/modules/worker/back/models/worker.js
+++ b/modules/worker/back/models/worker.js
@@ -20,10 +20,7 @@ module.exports = Self => {
require('../methods/worker/search')(Self);
require('../methods/worker/isAuthorized')(Self);
require('../methods/worker/setPassword')(Self);
-
- Self.validatesUniquenessOf('locker', {
- message: 'This locker has already been assigned'
- });
+ require('../methods/worker/getAvailablePda')(Self);
Self.validateAsync('fi', tinIsValid, {
message: 'Invalid TIN'
diff --git a/modules/worker/back/models/worker.json b/modules/worker/back/models/worker.json
index 4c28cf2171..4e7617aabe 100644
--- a/modules/worker/back/models/worker.json
+++ b/modules/worker/back/models/worker.json
@@ -48,9 +48,6 @@
"code": {
"type" : "string"
},
- "locker": {
- "type" : "number"
- },
"fi": {
"type" : "string"
},
@@ -59,7 +56,29 @@
},
"isF11Allowed": {
"type" : "boolean"
+ },
+ "sex": {
+ "type" : "string"
+ },
+ "isFreelance": {
+ "type" : "boolean"
+ },
+ "fiDueDate": {
+ "type": "date"
+ },
+ "hasMachineryAuthorized": {
+ "type": "boolean"
+ },
+ "seniority": {
+ "type": "date"
+ },
+ "isDisable": {
+ "type": "boolean"
+ },
+ "isSsDiscounted": {
+ "type": "boolean"
}
+
},
"relations": {
"user": {
@@ -91,87 +110,20 @@
"type": "hasMany",
"model": "WorkerTeamCollegues",
"foreignKey": "workerFk"
+ },
+ "locker": {
+ "type": "hasMany",
+ "model": "Locker",
+ "foreignKey": "workerFk"
}
},
- "scopes":{
- "summary": {
- "include": [
- {
- "relation": "user",
- "scope": {
- "fields": ["email", "name", "nickname", "roleFk", "emailVerified"],
- "include": [
- {
- "relation": "role",
- "scope": {
- "fields": ["name"]
- }
- },
- {
- "relation": "emailUser",
- "scope": {
- "fields": ["email"]
- }
- }
- ]
- }
- }, {
- "relation": "department",
- "scope": {
- "include": {
- "relation": "department"
- }
- }
- }, {
- "relation": "boss"
- }, {
- "relation": "client",
- "scope": {
- "fields": [
- "id",
- "name",
- "fi",
- "socialName",
- "contact",
- "street",
- "city",
- "postcode",
- "email",
- "mobile",
- "isActive",
- "credit",
- "creditInsurance",
- "iban",
- "dueDay",
- "isEqualizated",
- "isFreezed",
- "hasToInvoiceByAddress",
- "hasToInvoice",
- "isToBeMailed",
- "hasSepaVnl",
- "hasLcr",
- "hasCoreVnl",
- "hasCoreVnh",
- "hasIncoterms",
- "isTaxDataChecked",
- "quality",
- "isVies",
- "isRelevant",
- "accountingAccount",
- "created",
- "sageTaxTypeFk",
- "sageTransactionTypeFk",
- "businessTypeFk",
- "salesPersonFk",
- "hasElectronicInvoice",
- "rating",
- "recommendedCredit"
- ]
- }
- }, {
- "relation": "sip"
- }
- ]
+ "acls":[
+ {
+ "property": "__get__locker",
+ "accessType": "READ",
+ "permission": "ALLOW",
+ "principalType": "ROLE",
+ "principalId": "$owner"
}
- }
+ ]
}
diff --git a/modules/worker/front/basic-data/index.html b/modules/worker/front/basic-data/index.html
index 2d85d018de..bece1b6fde 100644
--- a/modules/worker/front/basic-data/index.html
+++ b/modules/worker/front/basic-data/index.html
@@ -54,8 +54,8 @@
@@ -75,11 +75,6 @@
ng-model="$ctrl.worker.SSN"
rule>
-
-
diff --git a/modules/worker/front/card/index.js b/modules/worker/front/card/index.js
index 1aa548db9c..9a40e31c2e 100644
--- a/modules/worker/front/card/index.js
+++ b/modules/worker/front/card/index.js
@@ -4,13 +4,37 @@ import ModuleCard from 'salix/components/module-card';
class Controller extends ModuleCard {
reload() {
const filter = {
- where: {
- id: this.$params.id}
+ include: [
+ {
+ relation: 'user',
+ scope: {
+ fields: ['name', 'emailVerified'],
+ include: {
+ relation: 'emailUser',
+ scope: {
+ fields: ['email']
+ }
+ }
+ }
+ }, {
+ relation: 'sip',
+ scope: {
+ fields: ['extension', 'secret']
+ }
+ }, {
+ relation: 'department',
+ scope: {
+ include: {
+ relation: 'department'
+ }
+ }
+ }
+ ]
};
return Promise.all([
- this.$http.get(`Workers/summary`, {filter})
- .then(res => this.worker = res.data[0]),
+ this.$http.get(`Workers/${this.$params.id}`, {filter})
+ .then(res => this.worker = res.data),
this.$http.get(`Workers/${this.$params.id}/activeContract`)
.then(res => this.hasWorkCenter = res.data?.workCenterFk)
]);
diff --git a/modules/worker/front/create/index.html b/modules/worker/front/create/index.html
index 39b2dbf475..3030ffecd0 100644
--- a/modules/worker/front/create/index.html
+++ b/modules/worker/front/create/index.html
@@ -65,7 +65,7 @@
rule>
{{code}} - {{town.name}} ({{town.province.name}},
- {{town.province.country.country}})
+ {{town.province.country.name}})
- {{name}} ({{country.country}})
+ {{name}} ({{country.name}})
@@ -99,7 +99,7 @@
value-field="name">
{{name}}, {{province.name}}
- ({{province.country.country}})
+ ({{province.country.name}})
this.entity = res.data[0]);
+ return this.getData(`Workers/${this.id}`, {filter})
+ .then(res => this.entity = res.data);
}
getPassRequirements() {
diff --git a/modules/worker/front/descriptor/index.spec.js b/modules/worker/front/descriptor/index.spec.js
index cee8b0def7..4f7fa6a05a 100644
--- a/modules/worker/front/descriptor/index.spec.js
+++ b/modules/worker/front/descriptor/index.spec.js
@@ -14,14 +14,14 @@ describe('vnWorkerDescriptor', () => {
describe('loadData()', () => {
it(`should perform a get query to store the worker data into the controller`, () => {
const id = 1;
- const response = ['foo'];
+ const response = 'foo';
$httpBackend.whenGET('UserConfigs/getUserConfig').respond({});
- $httpBackend.expectRoute('GET', `Workers/summary`).respond(response);
+ $httpBackend.expectRoute('GET', `Workers/${id}`).respond(response);
controller.id = id;
$httpBackend.flush();
- expect([controller.worker]).toEqual(response);
+ expect(controller.worker).toEqual(response);
});
});
diff --git a/modules/worker/front/pda/index.html b/modules/worker/front/pda/index.html
deleted file mode 100644
index c6d31dc858..0000000000
--- a/modules/worker/front/pda/index.html
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
diff --git a/modules/worker/front/pda/index.js b/modules/worker/front/pda/index.js
index 885261e5c4..c3616b41e4 100644
--- a/modules/worker/front/pda/index.js
+++ b/modules/worker/front/pda/index.js
@@ -1,53 +1,18 @@
import ngModule from '../module';
import Section from 'salix/components/section';
-import './style.scss';
class Controller extends Section {
constructor($element, $) {
super($element, $);
- const filter = {
- where: {userFk: this.$params.id},
- include: {relation: 'deviceProduction'}
- };
- this.$http.get('DeviceProductionUsers', {filter}).
- then(res => {
- if (res.data && res.data.length > 0)
- this.setCurrentPDA(res.data[0]);
- });
}
- deallocatePDA() {
- this.$http.post(`Workers/${this.$params.id}/deallocatePDA`, {pda: this.currentPDA.deviceProductionFk})
- .then(() => {
- this.vnApp.showSuccess(this.$t('PDA deallocated'));
- delete this.currentPDA;
- });
- }
-
- allocatePDA() {
- this.$http.post(`Workers/${this.$params.id}/allocatePDA`, {pda: this.newPDA})
- .then(res => {
- if (res.data)
- this.setCurrentPDA(res.data);
-
- this.vnApp.showSuccess(this.$t('PDA allocated'));
- delete this.newPDA;
- });
- }
-
- setCurrentPDA(data) {
- this.currentPDA = data;
- this.currentPDA.description = [];
- this.currentPDA.description.push(`ID: ${this.currentPDA.deviceProductionFk}`);
- this.currentPDA.description.push(`${this.$t('Model')}: ${this.currentPDA.deviceProduction.modelFk}`);
- this.currentPDA.description.push(`${this.$t('Serial Number')}: ${this.currentPDA.deviceProduction.serialNumber}`);
- this.currentPDA.description = this.currentPDA.description.join(' ');
+ async $onInit() {
+ const url = await this.vnApp.getUrl(`worker/${this.$params.id}/pda`);
+ this.$state.go('worker.card.summary', {id: this.$params.id});
+ window.location.href = url;
}
}
-Controller.$inject = ['$element', '$scope'];
-
ngModule.vnComponent('vnWorkerPda', {
- template: require('./index.html'),
- controller: Controller,
+ controller: Controller
});
diff --git a/modules/worker/front/pda/index.spec.js b/modules/worker/front/pda/index.spec.js
deleted file mode 100644
index a0540af45c..0000000000
--- a/modules/worker/front/pda/index.spec.js
+++ /dev/null
@@ -1,72 +0,0 @@
-import './index';
-
-describe('Worker', () => {
- describe('Component vnWorkerPda', () => {
- let $httpBackend;
- let $scope;
- let $element;
- let controller;
-
- beforeEach(ngModule('worker'));
-
- beforeEach(inject(($componentController, $rootScope, _$httpBackend_) => {
- $httpBackend = _$httpBackend_;
- $scope = $rootScope.$new();
- $element = angular.element('');
- controller = $componentController('vnWorkerPda', {$element, $scope});
- $httpBackend.expectGET(`DeviceProductionUsers`).respond();
- }));
-
- describe('deallocatePDA()', () => {
- it('should make an HTTP Post query to deallocatePDA', () => {
- jest.spyOn(controller.vnApp, 'showSuccess');
- controller.currentPDA = {deviceProductionFk: 1};
- controller.$params.id = 1;
-
- $httpBackend
- .expectPOST(`Workers/${controller.$params.id}/deallocatePDA`,
- {pda: controller.currentPDA.deviceProductionFk})
- .respond();
- controller.deallocatePDA();
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- expect(controller.currentPDA).toBeUndefined();
- });
- });
-
- describe('allocatePDA()', () => {
- it('should make an HTTP Post query to allocatePDA', () => {
- jest.spyOn(controller.vnApp, 'showSuccess');
- controller.newPDA = 4;
- controller.$params.id = 1;
-
- $httpBackend
- .expectPOST(`Workers/${controller.$params.id}/allocatePDA`,
- {pda: controller.newPDA})
- .respond();
- controller.allocatePDA();
- $httpBackend.flush();
-
- expect(controller.vnApp.showSuccess).toHaveBeenCalled();
- expect(controller.newPDA).toBeUndefined();
- });
- });
-
- describe('setCurrentPDA()', () => {
- it('should set CurrentPDA', () => {
- const data = {
- deviceProductionFk: 1,
- deviceProduction: {
- modelFk: 1,
- serialNumber: 1
- }
- };
- controller.setCurrentPDA(data);
-
- expect(controller.currentPDA).toBeDefined();
- expect(controller.currentPDA.description).toBeDefined();
- });
- });
- });
-});
diff --git a/modules/worker/front/pda/style.scss b/modules/worker/front/pda/style.scss
deleted file mode 100644
index c55c9d2187..0000000000
--- a/modules/worker/front/pda/style.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-@import "./variables";
-
-.text-grey {
- color: $color-font-light;
-}
-
diff --git a/modules/worker/front/summary/index.js b/modules/worker/front/summary/index.js
index d1a27a6d42..212609f582 100644
--- a/modules/worker/front/summary/index.js
+++ b/modules/worker/front/summary/index.js
@@ -10,14 +10,53 @@ class Controller extends Summary {
this.$.worker = null;
if (!value) return;
+ const query = `Workers/${value.id}`;
const filter = {
- where: {
- id: value.id
- }
+ include: [
+ {
+ relation: 'user',
+ scope: {
+ fields: ['name', 'roleFk'],
+ include: [{
+ relation: 'role',
+ scope: {
+ fields: ['name']
+ }
+ },
+ {
+ relation: 'emailUser',
+ scope: {
+ fields: ['email']
+ }
+ }]
+ }
+ },
+ {
+ relation: 'client',
+ scope: {fields: ['fi', 'phone']}
+ },
+ {
+ relation: 'boss',
+ scope: {fields: ['id', 'name']}
+ },
+ {
+ relation: 'sip',
+ scope: {fields: ['extension']}
+ },
+ {
+ relation: 'department',
+ scope: {
+ include: {
+ relation: 'department',
+ scope: {fields: ['id', 'code', 'name']}
+ }
+ }
+ }
+ ]
};
- this.$http.get(`Workers/summary`, {filter}).then(res => {
- this.$.worker = res.data[0];
+ this.$http.get(query, {params: {filter}}).then(res => {
+ this.$.worker = res.data;
});
}
diff --git a/modules/zone/back/methods/zone/specs/deleteZone.spec.js b/modules/zone/back/methods/zone/specs/deleteZone.spec.js
index 968685fecc..08dafd181c 100644
--- a/modules/zone/back/methods/zone/specs/deleteZone.spec.js
+++ b/modules/zone/back/methods/zone/specs/deleteZone.spec.js
@@ -5,6 +5,7 @@ describe('zone deletezone()', () => {
const userId = 9;
const activeCtx = {
accessToken: {userId: userId},
+ __: value => value
};
const ctx = {req: activeCtx};
const zoneId = 9;
@@ -15,19 +16,15 @@ describe('zone deletezone()', () => {
spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
active: activeCtx
});
- try {
- const originalTickets = await models.Ticket.find({
- where: {
- zoneFk: zoneId
- }
- });
- ticketIDs = originalTickets.map(ticket => ticket.id);
- originalTicketStates = await models.TicketState.find({where: {
- ticketFk: {inq: ticketIDs},
- code: 'FIXING'}});
- } catch (error) {
- console.error(error);
- }
+ const originalTickets = await models.Ticket.find({
+ where: {
+ zoneFk: zoneId
+ }
+ });
+ ticketIDs = originalTickets.map(ticket => ticket.id);
+ originalTicketStates = await models.TicketState.find({where: {
+ ticketFk: {inq: ticketIDs},
+ code: 'FIXING'}});
});
it('should delete a zone and update their tickets', async() => {
diff --git a/modules/zone/front/delivery-days/index.html b/modules/zone/front/delivery-days/index.html
index a3bed71d02..c47d899828 100644
--- a/modules/zone/front/delivery-days/index.html
+++ b/modules/zone/front/delivery-days/index.html
@@ -37,7 +37,7 @@
{{code}} {{town.name}}
- {{town.province.name}}, {{town.province.country.country}}
+ {{town.province.name}}, {{town.province.country.name}}
diff --git a/myt.config.yml b/myt.config.yml
index 17300aa372..56239ca3c5 100755
--- a/myt.config.yml
+++ b/myt.config.yml
@@ -227,7 +227,7 @@ localFixtures:
- expeditionScan
- expeditionState
- expeditionStateType
- - expeditionTruck
+ - roadmapStop
- expense
- genus
- greuge
diff --git a/package.json b/package.json
index b4c70cf5bb..be361ce7b3 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "salix-back",
- "version": "24.22.0",
+ "version": "24.24.3",
"author": "Verdnatura Levante SL",
"description": "Salix backend",
"license": "GPL-3.0",
@@ -39,6 +39,7 @@
"loopback-context": "^3.5.2",
"loopback-datasource-juggler": "3.36.1",
"md5": "^2.2.1",
+ "moment": "^2.30.1",
"mysql": "2.18.1",
"node-ssh": "^11.0.0",
"object.pick": "^1.3.0",
@@ -81,6 +82,8 @@
"gulp-print": "^2.0.1",
"gulp-wrap": "^0.15.0",
"gulp-yaml": "^1.0.1",
+ "gulp-rename": "^2.0.0",
+ "gulp-replace": "^1.1.4",
"html-loader": "^0.4.5",
"html-loader-jest": "^0.2.1",
"html-webpack-plugin": "^5.5.1",
@@ -113,7 +116,8 @@
"test:e2e": "node e2e/tests.js",
"test:front": "jest --watch",
"back": "nodemon --inspect -w modules ./node_modules/gulp/bin/gulp.js back",
- "lint": "eslint ./ --cache --ignore-pattern .gitignore"
+ "lint": "eslint ./ --cache --ignore-pattern .gitignore",
+ "watch:db": "node ./db/dbWatcher.js"
},
"jest": {
"projects": [
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d3959ac03f..22d5b46f1e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -83,6 +83,9 @@ dependencies:
md5:
specifier: ^2.2.1
version: 2.3.0
+ moment:
+ specifier: ^2.30.1
+ version: 2.30.1
mysql:
specifier: 2.18.1
version: 2.18.1
@@ -199,6 +202,12 @@ devDependencies:
gulp-print:
specifier: ^2.0.1
version: 2.0.1
+ gulp-rename:
+ specifier: ^2.0.0
+ version: 2.0.0
+ gulp-replace:
+ specifier: ^1.1.4
+ version: 1.1.4
gulp-wrap:
specifier: ^0.15.0
version: 0.15.0(ejs@2.3.1)
@@ -2629,6 +2638,10 @@ packages:
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
dev: true
+ /@types/expect@1.20.4:
+ resolution: {integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==}
+ dev: true
+
/@types/express-serve-static-core@4.17.42:
resolution: {integrity: sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ==}
dependencies:
@@ -2787,6 +2800,13 @@ packages:
resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==}
dev: false
+ /@types/vinyl@2.0.12:
+ resolution: {integrity: sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==}
+ dependencies:
+ '@types/expect': 1.20.4
+ '@types/node': 20.11.16
+ dev: true
+
/@types/yargs-parser@21.0.3:
resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
dev: true
@@ -3767,6 +3787,11 @@ packages:
engines: {node: '>=8'}
dev: true
+ /binaryextensions@2.3.0:
+ resolution: {integrity: sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==}
+ engines: {node: '>=0.8'}
+ dev: true
+
/bindings@1.5.0:
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
requiresBuild: true
@@ -7087,6 +7112,22 @@ packages:
map-stream: 0.0.7
dev: true
+ /gulp-rename@2.0.0:
+ resolution: {integrity: sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /gulp-replace@1.1.4:
+ resolution: {integrity: sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@types/node': 20.11.16
+ '@types/vinyl': 2.0.12
+ istextorbinary: 3.3.0
+ replacestream: 4.0.3
+ yargs-parser: 21.1.1
+ dev: true
+
/gulp-util@3.0.8:
resolution: {integrity: sha512-q5oWPc12lwSFS9h/4VIjG+1NuNDlJ48ywV2JKItY4Ycc/n1fXJeYPVQsfu5ZrhQi7FGSDBalwUCLar/GyHXKGw==}
engines: {node: '>=0.10'}
@@ -8321,6 +8362,14 @@ packages:
istanbul-lib-report: 3.0.1
dev: true
+ /istextorbinary@3.3.0:
+ resolution: {integrity: sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ binaryextensions: 2.3.0
+ textextensions: 3.3.0
+ dev: true
+
/jackspeak@2.3.6:
resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
engines: {node: '>=14'}
@@ -10202,6 +10251,10 @@ packages:
to-iso-string: 0.0.2
dev: false
+ /moment@2.30.1:
+ resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==}
+ dev: false
+
/ms@0.7.1:
resolution: {integrity: sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==}
dev: false
@@ -12058,6 +12111,14 @@ packages:
remove-trailing-separator: 1.1.0
dev: true
+ /replacestream@4.0.3:
+ resolution: {integrity: sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==}
+ dependencies:
+ escape-string-regexp: 1.0.5
+ object-assign: 4.1.1
+ readable-stream: 2.3.8
+ dev: true
+
/request@2.88.2:
resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==}
engines: {node: '>= 6'}
@@ -13556,6 +13617,11 @@ packages:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
+ /textextensions@3.3.0:
+ resolution: {integrity: sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==}
+ engines: {node: '>=8'}
+ dev: true
+
/throat@5.0.0:
resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==}
dev: true
diff --git a/print/templates/reports/campaign-metrics/sql/client.sql b/print/templates/reports/campaign-metrics/sql/client.sql
index 9f392c97eb..38f9fffc64 100644
--- a/print/templates/reports/campaign-metrics/sql/client.sql
+++ b/print/templates/reports/campaign-metrics/sql/client.sql
@@ -6,7 +6,7 @@ SELECT
c.id,
c.name AS clientName,
p.name AS province,
- co.country
+ co.name country
FROM client c
JOIN province p ON c.provinceFk = p.id
JOIN country co ON c.countryFk = co.id
diff --git a/print/templates/reports/claim-pickup-order/sql/client.sql b/print/templates/reports/claim-pickup-order/sql/client.sql
index 640b0c8a73..47e89cf1b5 100644
--- a/print/templates/reports/claim-pickup-order/sql/client.sql
+++ b/print/templates/reports/claim-pickup-order/sql/client.sql
@@ -8,7 +8,7 @@ SELECT
a.street,
a.nickname,
p.name AS province,
- ct.country,
+ ct.name country,
IFNULL(c.phone, cc.phone) AS phone
FROM claim cl
JOIN client c ON c.id = cl.clientFk
diff --git a/print/templates/reports/client-debt-statement/sql/client.sql b/print/templates/reports/client-debt-statement/sql/client.sql
index d675cf168d..acc6161319 100644
--- a/print/templates/reports/client-debt-statement/sql/client.sql
+++ b/print/templates/reports/client-debt-statement/sql/client.sql
@@ -6,7 +6,7 @@ SELECT
c.city,
c.fi,
p.name AS province,
- ct.country
+ ct.name country
FROM client c
JOIN country ct ON ct.id = c.countryFk
LEFT JOIN province p ON p.id = c.provinceFk
diff --git a/print/templates/reports/cmr/sql/data.sql b/print/templates/reports/cmr/sql/data.sql
index 09a42a7188..31620a80d8 100644
--- a/print/templates/reports/cmr/sql/data.sql
+++ b/print/templates/reports/cmr/sql/data.sql
@@ -14,12 +14,12 @@ SELECT c.id cmrFk,
s.street carrierStreet,
s.postCode carrierPostCode,
s.city carrierCity,
- cou.country carrierCountry,
+ cou.name carrierCountry,
s2.name senderName,
s2.street senderStreet,
s2.postCode senderPostCode,
s2.city senderCity,
- cou2.country senderCountry,
+ cou2.name senderCountry,
a.street deliveryStreet,
a.id deliveryAddressFk,
a.postalCode deliveryPostalCode,
@@ -27,12 +27,12 @@ SELECT c.id cmrFk,
a.nickname deliveryName,
a.phone deliveryPhone,
a.mobile deliveryMobile,
- cou3.country deliveryCountry,
+ cou3.name deliveryCountry,
cl.phone clientPhone,
a2.street loadStreet,
a2.postalCode loadPostalCode,
a2.city loadCity,
- cou4.country loadCountry,
+ cou4.name loadCountry,
co.stamp senderStamp,
s.stamp deliveryStamp
FROM cmr c
diff --git a/print/templates/reports/collection-label/sql/labelsData.sql b/print/templates/reports/collection-label/sql/labelsData.sql
index f0a9baf1f0..2ffa6d8db7 100644
--- a/print/templates/reports/collection-label/sql/labelsData.sql
+++ b/print/templates/reports/collection-label/sql/labelsData.sql
@@ -3,7 +3,7 @@ SELECT c.itemPackingTypeFk code,
SUBSTRING('ABCDEFGH', tc.wagon, 1) wagon,
tc.`level`,
t.id ticketFk,
- COALESCE(et.description, zo.name, am.name) agencyDescription,
+ COALESCE(rs.description, zo.name, am.name) agencyDescription,
cc.code color,
t.clientFk,
CAST(SUM(sv.volume) AS DECIMAL(5, 2)) volume,
@@ -35,7 +35,7 @@ SELECT c.itemPackingTypeFk code,
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
+ LEFT JOIN vn.roadmapStop rs ON rs.id = rm.expeditionTruckFk
LEFT JOIN vn.saleGroupDetail sgd ON sgd.saleFk = s.id
JOIN vn.productionConfig pc
WHERE t.id IN (?)
diff --git a/print/templates/reports/expedition-pallet-label/sql/labelData.sql b/print/templates/reports/expedition-pallet-label/sql/labelData.sql
index b2a805251e..385614305a 100644
--- a/print/templates/reports/expedition-pallet-label/sql/labelData.sql
+++ b/print/templates/reports/expedition-pallet-label/sql/labelData.sql
@@ -1,19 +1,19 @@
SELECT ep.id palletFk,
t.routeFk,
- et2.description truck,
+ rs2.description truck,
r.description `zone`,
COUNT(es.id) labels,
t.warehouseFk warehouseFk,
dayname(r.created) `dayName`,
- et.id <=> rm.expeditionTruckFk isMatch
- FROM vn.expeditionTruck et
- JOIN vn.expeditionPallet ep ON ep.truckFk = et.id
+ rs.id <=> rm.expeditionTruckFk isMatch
+ FROM vn.roadmapStop rs
+ JOIN vn.expeditionPallet ep ON ep.truckFk = rs.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 vn.routesMonitor rm ON rm.routeFk = r.id
- LEFT JOIN vn.expeditionTruck et2 ON et2.id = rm.expeditionTruckFk
+ LEFT JOIN vn.roadmapStop rs2 ON rs2.id = rm.expeditionTruckFk
WHERE ep.id = ?
GROUP BY ep.id, t.routeFk
ORDER BY t.routeFk
diff --git a/print/templates/reports/incoterms-authorization/sql/client.sql b/print/templates/reports/incoterms-authorization/sql/client.sql
index bb17afd1d4..9eff1379c8 100644
--- a/print/templates/reports/incoterms-authorization/sql/client.sql
+++ b/print/templates/reports/incoterms-authorization/sql/client.sql
@@ -4,7 +4,7 @@ SELECT
c.name,
c.fi,
c.street,
- cty.country
+ cty.name country
FROM client c
JOIN country cty ON cty.id = c.countryFk
WHERE c.id = ?
\ No newline at end of file
diff --git a/print/templates/reports/letter-debtor/sql/client.sql b/print/templates/reports/letter-debtor/sql/client.sql
index d675cf168d..87fffb8b7c 100644
--- a/print/templates/reports/letter-debtor/sql/client.sql
+++ b/print/templates/reports/letter-debtor/sql/client.sql
@@ -6,7 +6,7 @@ SELECT
c.city,
c.fi,
p.name AS province,
- ct.country
+ ct.name country
FROM client c
JOIN country ct ON ct.id = c.countryFk
LEFT JOIN province p ON p.id = c.provinceFk
diff --git a/print/templates/reports/sepa-core/sql/client.sql b/print/templates/reports/sepa-core/sql/client.sql
index c22e7f114b..b3ba180b31 100644
--- a/print/templates/reports/sepa-core/sql/client.sql
+++ b/print/templates/reports/sepa-core/sql/client.sql
@@ -7,7 +7,7 @@ SELECT
c.city,
c.fi,
p.name AS province,
- ct.country,
+ ct.name country,
ct.code AS countryCode,
ct.ibanLength AS ibanLength
FROM client c
diff --git a/print/templates/reports/sepa-core/sql/supplier.sql b/print/templates/reports/sepa-core/sql/supplier.sql
index 80635ecf59..156fc71c07 100644
--- a/print/templates/reports/sepa-core/sql/supplier.sql
+++ b/print/templates/reports/sepa-core/sql/supplier.sql
@@ -2,7 +2,7 @@ SELECT
m.code mandateCode,
s.name,
s.street,
- sc.country,
+ sc.name country,
s.postCode,
s.city,
sp.name province,
diff --git a/print/templates/reports/supplier-campaign-metrics/sql/supplier.sql b/print/templates/reports/supplier-campaign-metrics/sql/supplier.sql
index 0c2fa12edb..d446ba6e64 100644
--- a/print/templates/reports/supplier-campaign-metrics/sql/supplier.sql
+++ b/print/templates/reports/supplier-campaign-metrics/sql/supplier.sql
@@ -5,7 +5,7 @@ SELECT
s.id,
s.name AS supplierName,
p.name AS province,
- co.country
+ co.name country
FROM supplier s
JOIN province p ON s.provinceFk = p.id
JOIN country co ON s.countryFk = co.id
diff --git a/webpack.config.js b/webpack.config.js
index 7296a62d19..2c01a10eb3 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -70,6 +70,7 @@ let baseConfig = {
]
},
optimization: {
+ nodeEnv: false,
runtimeChunk: true,
splitChunks: {
chunks: 'all',
@@ -99,9 +100,6 @@ let baseConfig = {
filename: 'index.html',
chunks: ['salix']
}),
- new webpack.DefinePlugin({
- 'process.env.NODE_ENV': JSON.stringify(env)
- })
],
devtool: 'source-map',
stats: {